From 1d939231a49dde46e9e1d18084f23fb189e8e055 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 21 Nov 2016 12:21:01 -0500 Subject: [PATCH 001/337] USER-DPD: initial Kokkos port, first steps from Aug 24th ARL Kokkos hackathon atom_vec_dpd_kokkos pair_dpd_fdt_energy_kokkos without the Oct 7th VV support from e27ed6c --- src/KOKKOS/atom_kokkos.h | 6 + src/USER-DPD/atom_vec_dpd_kokkos.cpp | 1872 +++++++++++++++++++ src/USER-DPD/atom_vec_dpd_kokkos.h | 135 ++ src/USER-DPD/pair_dpd_fdt_energy_kokkos.cpp | 373 ++++ src/USER-DPD/pair_dpd_fdt_energy_kokkos.h | 119 ++ 5 files changed, 2505 insertions(+) create mode 100644 src/USER-DPD/atom_vec_dpd_kokkos.cpp create mode 100644 src/USER-DPD/atom_vec_dpd_kokkos.h create mode 100644 src/USER-DPD/pair_dpd_fdt_energy_kokkos.cpp create mode 100644 src/USER-DPD/pair_dpd_fdt_energy_kokkos.h diff --git a/src/KOKKOS/atom_kokkos.h b/src/KOKKOS/atom_kokkos.h index 05aae712d9..f31c26e01f 100644 --- a/src/KOKKOS/atom_kokkos.h +++ b/src/KOKKOS/atom_kokkos.h @@ -51,6 +51,12 @@ class AtomKokkos : public Atom { DAT::tdual_int_2d k_improper_type; DAT::tdual_tagint_2d k_improper_atom1, k_improper_atom2, k_improper_atom3, k_improper_atom4; + +// USER-DPD package + DAT::tdual_efloat_1d k_uCond, k_uMech, k_uChem, k_uCG, k_uCGnew, + k_rho,k_dpdTheta,k_duChem; + + AtomKokkos(class LAMMPS *); ~AtomKokkos(); diff --git a/src/USER-DPD/atom_vec_dpd_kokkos.cpp b/src/USER-DPD/atom_vec_dpd_kokkos.cpp new file mode 100644 index 0000000000..c58b592e53 --- /dev/null +++ b/src/USER-DPD/atom_vec_dpd_kokkos.cpp @@ -0,0 +1,1872 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale AtomicKokkos/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 "atom_vec_dpd_kokkos.h" +#include "atom_kokkos.h" +#include "comm_kokkos.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "atom_masks.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define DELTA 10000 + +/* ---------------------------------------------------------------------- */ + +AtomVecDPDKokkos::AtomVecDPDKokkos(LAMMPS *lmp) : AtomVecKokkos(lmp) +{ + molecular = 0; + mass_type = 1; + + comm_x_only = comm_f_only = 0; + size_forward = 7; + size_reverse = 3; + size_border = 12; + size_velocity = 3; + size_data_atom = 6; + size_data_vel = 4; + xcol_data = 4; + + atom->rho_flag = 1; + atom->dpd_flag = 1; + + k_count = DAT::tdual_int_1d("atom::k_count",1); + atomKK = (AtomKokkos *) atom; + commKK = (CommKokkos *) comm; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by DELTA + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::grow(int n) +{ + if (n == 0) nmax += DELTA; + else nmax = n; + atomKK->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + sync(Device,ALL_MASK); + modified(Device,ALL_MASK); + + memory->grow_kokkos(atomKK->k_tag,atomKK->tag,nmax,"atom:tag"); + memory->grow_kokkos(atomKK->k_type,atomKK->type,nmax,"atom:type"); + memory->grow_kokkos(atomKK->k_mask,atomKK->mask,nmax,"atom:mask"); + memory->grow_kokkos(atomKK->k_image,atomKK->image,nmax,"atom:image"); + + memory->grow_kokkos(atomKK->k_x,atomKK->x,nmax,3,"atom:x"); + memory->grow_kokkos(atomKK->k_v,atomKK->v,nmax,3,"atom:v"); + memory->grow_kokkos(atomKK->k_f,atomKK->f,nmax,3,"atom:f"); + + + memory->grow_kokkos(atomKK->k_rho,atomKK->rho,nmax,"atom:rho"); + memory->grow_kokkos(atomKK->k_dpdTheta,atomKK->dpdTheta,nmax,"atom:dpdTheta"); + memory->grow_kokkos(atomKK->k_uCond,atomKK->uCond,nmax,"atom:uCond"); + memory->grow_kokkos(atomKK->k_uMech,atomKK->uMech,nmax,"atom:uMech"); + memory->grow_kokkos(atomKK->k_uChem,atomKK->uChem,nmax,"atom:uChem"); + memory->grow_kokkos(atomKK->k_uCG,atomKK->uCG,nmax,"atom:uCG"); + memory->grow_kokkos(atomKK->k_uCGnew,atomKK->uCGnew,nmax,"atom:uCGnew"); + memory->grow_kokkos(atomKK->k_duChem,atomKK->duChem,nmax,"atom:duChem"); + + grow_reset(); + sync(Host,ALL_MASK); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::grow_reset() +{ + tag = atomKK->tag; + d_tag = atomKK->k_tag.d_view; + h_tag = atomKK->k_tag.h_view; + + type = atomKK->type; + d_type = atomKK->k_type.d_view; + h_type = atomKK->k_type.h_view; + mask = atomKK->mask; + d_mask = atomKK->k_mask.d_view; + h_mask = atomKK->k_mask.h_view; + image = atomKK->image; + d_image = atomKK->k_image.d_view; + h_image = atomKK->k_image.h_view; + + x = atomKK->x; + d_x = atomKK->k_x.d_view; + h_x = atomKK->k_x.h_view; + v = atomKK->v; + d_v = atomKK->k_v.d_view; + h_v = atomKK->k_v.h_view; + f = atomKK->f; + d_f = atomKK->k_f.d_view; + h_f = atomKK->k_f.h_view; + + rho = atomKK->rho; + d_rho = atomKK->k_rho.d_view; + h_rho = atomKK->k_rho.h_view; + dpdTheta = atomKK->dpdTheta; + d_dpdTheta = atomKK->k_dpdTheta.d_view; + h_dpdTheta = atomKK->k_dpdTheta.h_view; + uCond = atomKK->uCond; + d_uCond = atomKK->k_uCond.d_view;; + h_uCond = atomKK->k_uCond.h_view; + uMech = atomKK->uMech; + d_uMech = atomKK->k_uMech.d_view;; + h_uMech = atomKK->k_uMech.h_view; + uChem = atomKK->uChem; + d_uChem = atomKK->k_uChem.d_view;; + h_uChem = atomKK->k_uChem.h_view; + uCG = atomKK->uCG; + d_uCG = atomKK->k_uCG.d_view;; + h_uCG = atomKK->k_uCG.h_view; + uCGnew = atomKK->uCGnew; + d_uCGnew = atomKK->k_uCGnew.d_view;; + h_uCGnew = atomKK->k_uCGnew.h_view; + duChem = atomKK->duChem; + d_duChem = atomKK->k_duChem.d_view;; + h_duChem = atomKK->k_duChem.h_view; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::copy(int i, int j, int delflag) +{ + h_tag[j] = h_tag[i]; + h_type[j] = h_type[i]; + mask[j] = mask[i]; + h_image[j] = h_image[i]; + h_x(j,0) = h_x(i,0); + h_x(j,1) = h_x(i,1); + h_x(j,2) = h_x(i,2); + h_v(j,0) = h_v(i,0); + h_v(j,1) = h_v(i,1); + h_v(j,2) = h_v(i,2); + h_dpdTheta[j] = h_dpdTheta[i]; + h_uCond[j] = h_uCond[i]; + h_uMech[j] = h_uMech[i]; + h_uChem[j] = h_uChem[i]; + h_uCG[j] = h_uCG[i]; + h_uCGnew[j] = h_uCGnew[i]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackComm { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array_randomread _x; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; + typename ArrayTypes::t_xfloat_2d_um _buf; + typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; + X_FLOAT _pbc[6]; + + AtomVecDPDKokkos_PackComm( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_efloat_1d &dpdTheta, + const typename DAT::tdual_efloat_1d &uCond, + const typename DAT::tdual_efloat_1d &uMech, + const typename DAT::tdual_efloat_1d &uChem, + const typename DAT::tdual_xfloat_2d &buf, + const typename DAT::tdual_int_2d &list, + const int & iswap, + const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, + const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): + _x(x.view()), + _dpdTheta(dpdTheta.view()), + _uCond(uCond.view()), + _uMech(uMech.view()), + _uChem(uChem.view()), + _list(list.view()),_iswap(iswap), + _xprd(xprd),_yprd(yprd),_zprd(zprd), + _xy(xy),_xz(xz),_yz(yz) { + const size_t maxsend = (buf.view().dimension_0()*buf.view().dimension_1())/3; + const size_t elements = 3; + buffer_view(_buf,buf,maxsend,elements); + _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; + _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; + }; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _buf(i,0) = _x(j,0); + _buf(i,1) = _x(j,1); + _buf(i,2) = _x(j,2); + } else { + if (TRICLINIC == 0) { + _buf(i,0) = _x(j,0) + _pbc[0]*_xprd; + _buf(i,1) = _x(j,1) + _pbc[1]*_yprd; + _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; + } else { + _buf(i,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; + _buf(i,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; + _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; + } + } + _buf(i,3) = _dpdTheta(j); + _buf(i,4) = _uCond(j); + _buf(i,5) = _uMech(j); + _buf(i,6) = _uChem(j); + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, + const DAT::tdual_int_2d &list, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, + const int* const pbc) +{ + // Check whether to always run forward communication on the host + // Choose correct forward PackComm kernel + + if(commKK->forward_comm_on_host) { + sync(Host,X_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + LMPHostType::fence(); + } else { + sync(Device,X_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + LMPDeviceType::fence(); + } + + return n*size_forward; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackCommSelf { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array_randomread _x; + typename ArrayTypes::t_x_array _xw; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; + int _nfirst; + typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; + X_FLOAT _pbc[6]; + + AtomVecDPDKokkos_PackCommSelf( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_efloat_1d &dpdTheta, + const typename DAT::tdual_efloat_1d &uCond, + const typename DAT::tdual_efloat_1d &uMech, + const typename DAT::tdual_efloat_1d &uChem, + const int &nfirst, + const typename DAT::tdual_int_2d &list, + const int & iswap, + const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, + const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): + _x(x.view()),_xw(x.view()), + _dpdTheta(dpdTheta.view()), + _uCond(uCond.view()), + _uMech(uMech.view()), + _uChem(uChem.view()), + _nfirst(nfirst),_list(list.view()),_iswap(iswap), + _xprd(xprd),_yprd(yprd),_zprd(zprd), + _xy(xy),_xz(xz),_yz(yz) { + _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; + _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; + }; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _xw(i+_nfirst,0) = _x(j,0); + _xw(i+_nfirst,1) = _x(j,1); + _xw(i+_nfirst,2) = _x(j,2); + } else { + if (TRICLINIC == 0) { + _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd; + _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd; + _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; + } else { + _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; + _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; + _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; + } + } + _dpdTheta(i+_nfirst) = _dpdTheta(j); + _uCond(i+_nfirst) = _uCond(j); + _uMech(i+_nfirst) = _uMech(j); + _uChem(i+_nfirst) = _uChem(j); + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, const int & iswap, + const int nfirst, const int &pbc_flag, const int* const pbc) { + if(commKK->forward_comm_on_host) { + sync(Host,X_MASK); + modified(Host,X_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + LMPHostType::fence(); + } else { + sync(Device,X_MASK); + modified(Device,X_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + LMPDeviceType::fence(); + } + return n*3; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_UnpackComm { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array _x; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; + typename ArrayTypes::t_xfloat_2d_const _buf; + int _first; + + AtomVecDPDKokkos_UnpackComm( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_efloat_1d &dpdTheta, + const typename DAT::tdual_efloat_1d &uCond, + const typename DAT::tdual_efloat_1d &uMech, + const typename DAT::tdual_efloat_1d &uChem, + const typename DAT::tdual_xfloat_2d &buf, + const int& first):_x(x.view()), + _dpdTheta(dpdTheta.view()), + _uCond(uCond.view()), + _uMech(uMech.view()), + _uChem(uChem.view()), + _buf(buf.view()), + _first(first) {}; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + _x(i+_first,0) = _buf(i,0); + _x(i+_first,1) = _buf(i,1); + _x(i+_first,2) = _buf(i,2); + _dpdTheta(i+_first) = _buf(i,3); + _uCond(i+_first) = _buf(i,4); + _uMech(i+_first) = _buf(i,5); + _uChem(i+_first) = _buf(i,6); + } +}; + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_comm_kokkos(const int &n, const int &first, + const DAT::tdual_xfloat_2d &buf ) { + if(commKK->forward_comm_on_host) { + sync(Host,X_MASK); + modified(Host,X_MASK); + struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,first); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } else { + sync(Device,X_MASK); + modified(Device,X_MASK); + struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,first); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = dpdTheta[j]; + buf[m++] = uCond[j]; + buf[m++] = uMech[j]; + buf[m++] = uChem[j]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + if (mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_dpdTheta[i] = buf[m++]; + h_uCond[i] = buf[m++]; + h_uMech[i] = buf[m++]; + h_uChem[i] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_comm_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + h_dpdTheta[i] = buf[m++]; + h_uCond[i] = buf[m++]; + h_uMech[i] = buf[m++]; + h_uChem[i] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_reverse(int n, int first, double *buf) +{ + if(n > 0) + sync(Host,F_MASK); + + int m = 0; + const int last = first + n; + for (int i = first; i < last; i++) { + buf[m++] = h_f(i,0); + buf[m++] = h_f(i,1); + buf[m++] = h_f(i,2); + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_reverse(int n, int *list, double *buf) +{ + if(n > 0) { + sync(Host,F_MASK); + modified(Host,F_MASK); + } + + int m = 0; + for (int i = 0; i < n; i++) { + const int j = list[i]; + h_f(j,0) += buf[m++]; + h_f(j,1) += buf[m++]; + h_f(j,2) += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackBorder { + typedef DeviceType device_type; + + typename ArrayTypes::t_xfloat_2d _buf; + const typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + const typename ArrayTypes::t_x_array_randomread _x; + const typename ArrayTypes::t_tagint_1d _tag; + const typename ArrayTypes::t_int_1d _type; + const typename ArrayTypes::t_int_1d _mask; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; + X_FLOAT _dx,_dy,_dz; + + AtomVecDPDKokkos_PackBorder( + const typename ArrayTypes::t_xfloat_2d &buf, + const typename ArrayTypes::t_int_2d_const &list, + const int & iswap, + const typename ArrayTypes::t_x_array &x, + const typename ArrayTypes::t_tagint_1d &tag, + const typename ArrayTypes::t_int_1d &type, + const typename ArrayTypes::t_int_1d &mask, + const typename ArrayTypes::t_efloat_1d &dpdTheta, + const typename ArrayTypes::t_efloat_1d &uCond, + const typename ArrayTypes::t_efloat_1d &uMech, + const typename ArrayTypes::t_efloat_1d &uChem, + const typename ArrayTypes::t_efloat_1d &uCG, + const typename ArrayTypes::t_efloat_1d &uCGnew, + const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): + _buf(buf),_list(list),_iswap(iswap), + _x(x),_tag(tag),_type(type),_mask(mask), + _dpdTheta(dpdTheta), + _uCond(uCond), + _uMech(uMech), + _uChem(uChem), + _uCG(uCGnew), + _uCGnew(uCGnew), + _dx(dx),_dy(dy),_dz(dz) {} + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _buf(i,0) = _x(j,0); + _buf(i,1) = _x(j,1); + _buf(i,2) = _x(j,2); + } else { + _buf(i,0) = _x(j,0) + _dx; + _buf(i,1) = _x(j,1) + _dy; + _buf(i,2) = _x(j,2) + _dz; + } + _buf(i,3) = _tag(j); + _buf(i,4) = _type(j); + _buf(i,5) = _mask(j); + _buf(i,6) = _dpdTheta(j); + _buf(i,7) = _uCond(j); + _buf(i,8) = _uMech(j); + _buf(i,9) = _uChem(j); + _buf(i,10) = _uCG(j); + _buf(i,11) = _uCGnew(j); + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space) +{ + X_FLOAT dx,dy,dz; + + if (pbc_flag != 0) { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if(space==Host) { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,h_x,h_tag,h_type,h_mask, + h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + LMPHostType::fence(); + } else { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,d_x,d_tag,d_type,d_mask, + d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } + + } else { + dx = dy = dz = 0; + if(space==Host) { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,h_x,h_tag,h_type,h_mask, + h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + LMPHostType::fence(); + } else { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,d_x,d_tag,d_type,d_mask, + d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } + } + return n*6; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + if (mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + buf[m++] = h_uCG[j]; + buf[m++] = h_uCGnew[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + buf[m++] = h_uCG[j]; + buf[m++] = h_uCGnew[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_UnpackBorder { + typedef DeviceType device_type; + + const typename ArrayTypes::t_xfloat_2d_const _buf; + typename ArrayTypes::t_x_array _x; + typename ArrayTypes::t_tagint_1d _tag; + typename ArrayTypes::t_int_1d _type; + typename ArrayTypes::t_int_1d _mask; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; + int _first; + + + AtomVecDPDKokkos_UnpackBorder( + const typename ArrayTypes::t_xfloat_2d_const &buf, + typename ArrayTypes::t_x_array &x, + typename ArrayTypes::t_tagint_1d &tag, + typename ArrayTypes::t_int_1d &type, + typename ArrayTypes::t_int_1d &mask, + const typename ArrayTypes::t_efloat_1d &dpdTheta, + const typename ArrayTypes::t_efloat_1d &uCond, + const typename ArrayTypes::t_efloat_1d &uMech, + const typename ArrayTypes::t_efloat_1d &uChem, + const typename ArrayTypes::t_efloat_1d &uCG, + const typename ArrayTypes::t_efloat_1d &uCGnew, + const int& first): + _buf(buf),_x(x),_tag(tag),_type(type),_mask(mask), + _dpdTheta(dpdTheta), + _uCond(uCond), + _uMech(uMech), + _uChem(uChem), + _uCG(uCGnew), + _uCGnew(uCGnew), + _first(first) {}; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + _x(i+_first,0) = _buf(i,0); + _x(i+_first,1) = _buf(i,1); + _x(i+_first,2) = _buf(i,2); + _tag(i+_first) = static_cast (_buf(i,3)); + _type(i+_first) = static_cast (_buf(i,4)); + _mask(i+_first) = static_cast (_buf(i,5)); + _dpdTheta(i+_first) = _buf(i,6); + _uCond(i+_first) = _buf(i,7); + _uMech(i+_first) = _buf(i,8); + _uChem(i+_first) = _buf(i,9); + _uCG(i+_first) = _buf(i,10); + _uCGnew(i+_first) = _buf(i,11); +// printf("%i %i %lf %lf %lf %i BORDER\n",_tag(i+_first),i+_first,_x(i+_first,0),_x(i+_first,1),_x(i+_first,2),_type(i+_first)); + } +}; + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_border_kokkos(const int &n, const int &first, + const DAT::tdual_xfloat_2d &buf,ExecutionSpace space) { + modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + while (first+n >= nmax) grow(0); + modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + if(space==Host) { + struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), + h_x,h_tag,h_type,h_mask, + h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, + first); + Kokkos::parallel_for(n,f); + LMPHostType::fence(); + } else { + struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), + d_x,d_tag,d_type,d_mask, + d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, + first); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_border(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag(i) = (tagint) ubuf(buf[m++]).i; + h_type(i) = (int) ubuf(buf[m++]).i; + h_mask(i) = (int) ubuf(buf[m++]).i; + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + modified(Host,X_MASK|V_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag(i) = (tagint) ubuf(buf[m++]).i; + h_type(i) = (int) ubuf(buf[m++]).i; + h_mask(i) = (int) ubuf(buf[m++]).i; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_comm_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_border_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackExchangeFunctor { + typedef DeviceType device_type; + typedef ArrayTypes AT; + typename AT::t_x_array_randomread _x; + typename AT::t_v_array_randomread _v; + typename AT::t_tagint_1d_randomread _tag; + typename AT::t_int_1d_randomread _type; + typename AT::t_int_1d_randomread _mask; + typename AT::t_imageint_1d_randomread _image; + typename AT::t_efloat_1d_randomread _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; + typename AT::t_x_array _xw; + typename AT::t_v_array _vw; + typename AT::t_tagint_1d _tagw; + typename AT::t_int_1d _typew; + typename AT::t_int_1d _maskw; + typename AT::t_imageint_1d _imagew; + typename AT::t_efloat_1d _dpdThetaw,_uCondw,_uMechw,_uChemw,_uCGw,_uCGneww; + + typename AT::t_xfloat_2d_um _buf; + typename AT::t_int_1d_const _sendlist; + typename AT::t_int_1d_const _copylist; + int _nlocal,_dim; + X_FLOAT _lo,_hi; + + AtomVecDPDKokkos_PackExchangeFunctor( + const AtomKokkos* atom, + const typename AT::tdual_xfloat_2d buf, + typename AT::tdual_int_1d sendlist, + typename AT::tdual_int_1d copylist,int nlocal, int dim, + X_FLOAT lo, X_FLOAT hi): + _x(atom->k_x.view()), + _v(atom->k_v.view()), + _tag(atom->k_tag.view()), + _type(atom->k_type.view()), + _mask(atom->k_mask.view()), + _image(atom->k_image.view()), + _dpdTheta(atom->k_dpdTheta.view()), + _uCond(atom->k_uCond.view()), + _uMech(atom->k_uMech.view()), + _uChem(atom->k_uChem.view()), + _uCG(atom->k_uCG.view()), + _uCGnew(atom->k_uCGnew.view()), + _xw(atom->k_x.view()), + _vw(atom->k_v.view()), + _tagw(atom->k_tag.view()), + _typew(atom->k_type.view()), + _maskw(atom->k_mask.view()), + _imagew(atom->k_image.view()), + _dpdThetaw(atom->k_dpdTheta.view()), + _uCondw(atom->k_uCond.view()), + _uMechw(atom->k_uMech.view()), + _uChemw(atom->k_uChem.view()), + _uCGw(atom->k_uCG.view()), + _uCGneww(atom->k_uCGnew.view()), + _sendlist(sendlist.template view()), + _copylist(copylist.template view()), + _nlocal(nlocal),_dim(dim), + _lo(lo),_hi(hi){ + const size_t elements = 17; + const int maxsendlist = (buf.template view().dimension_0()*buf.template view().dimension_1())/elements; + + buffer_view(_buf,buf,maxsendlist,elements); + } + + KOKKOS_INLINE_FUNCTION + void operator() (const int &mysend) const { + const int i = _sendlist(mysend); + _buf(mysend,0) = 17; + _buf(mysend,1) = _x(i,0); + _buf(mysend,2) = _x(i,1); + _buf(mysend,3) = _x(i,2); + _buf(mysend,4) = _v(i,0); + _buf(mysend,5) = _v(i,1); + _buf(mysend,6) = _v(i,2); + _buf(mysend,7) = _tag[i]; + _buf(mysend,8) = _type[i]; + _buf(mysend,9) = _mask[i]; + _buf(mysend,10) = _image[i]; + _buf(mysend,11) = _dpdTheta[i]; + _buf(mysend,12) = _uCond[i]; + _buf(mysend,13) = _uMech[i]; + _buf(mysend,14) = _uChem[i]; + _buf(mysend,15) = _uCG[i]; + _buf(mysend,16) = _uCGnew[i]; + const int j = _copylist(mysend); + + if(j>-1) { + _xw(i,0) = _x(j,0); + _xw(i,1) = _x(j,1); + _xw(i,2) = _x(j,2); + _vw(i,0) = _v(j,0); + _vw(i,1) = _v(j,1); + _vw(i,2) = _v(j,2); + _tagw[i] = _tag(j); + _typew[i] = _type(j); + _maskw[i] = _mask(j); + _imagew[i] = _image(j); + _dpdThetaw[i] = _dpdTheta(j); + _uCondw[i] = _uCond(j); + _uMechw[i] = _uMech(j); + _uChemw[i] = _uChem(j); + _uCGw[i] = _uCG(j); + _uCGneww[i] = _uCGnew(j); + } + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d k_sendlist,DAT::tdual_int_1d k_copylist,ExecutionSpace space,int dim,X_FLOAT lo,X_FLOAT hi ) +{ + if(nsend > (int) (k_buf.view().dimension_0()*k_buf.view().dimension_1())/17) { + int newsize = nsend*17/k_buf.view().dimension_1()+1; + k_buf.resize(newsize,k_buf.view().dimension_1()); + } + if(space == Host) { + AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); + Kokkos::parallel_for(nsend,f); + LMPHostType::fence(); + return nsend*17; + } else { + AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); + Kokkos::parallel_for(nsend,f); + LMPDeviceType::fence(); + return nsend*17; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_exchange(int i, double *buf) +{ + int m = 1; + buf[m++] = h_x(i,0); + buf[m++] = h_x(i,1); + buf[m++] = h_x(i,2); + buf[m++] = h_v(i,0); + buf[m++] = h_v(i,1); + buf[m++] = h_v(i,2); + buf[m++] = ubuf(h_tag(i)).d; + buf[m++] = ubuf(h_type(i)).d; + buf[m++] = ubuf(h_mask(i)).d; + buf[m++] = ubuf(h_image(i)).d; + buf[m++] = h_dpdTheta[i]; + buf[m++] = h_uCond[i]; + buf[m++] = h_uMech[i]; + buf[m++] = h_uChem[i]; + buf[m++] = h_uCG[i]; + buf[m++] = h_uCGnew[i]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_UnpackExchangeFunctor { + typedef DeviceType device_type; + typedef ArrayTypes AT; + typename AT::t_x_array _x; + typename AT::t_v_array _v; + typename AT::t_tagint_1d _tag; + typename AT::t_int_1d _type; + typename AT::t_int_1d _mask; + typename AT::t_imageint_1d _image; + typename AT::t_efloat_1d _dpdTheta; + typename AT::t_efloat_1d _uCond; + typename AT::t_efloat_1d _uMech; + typename AT::t_efloat_1d _uChem; + typename AT::t_efloat_1d _uCG; + typename AT::t_efloat_1d _uCGnew; + + typename AT::t_xfloat_2d_um _buf; + typename AT::t_int_1d _nlocal; + int _dim; + X_FLOAT _lo,_hi; + + AtomVecDPDKokkos_UnpackExchangeFunctor( + const AtomKokkos* atom, + const typename AT::tdual_xfloat_2d buf, + typename AT::tdual_int_1d nlocal, + int dim, X_FLOAT lo, X_FLOAT hi): + _x(atom->k_x.view()), + _v(atom->k_v.view()), + _tag(atom->k_tag.view()), + _type(atom->k_type.view()), + _mask(atom->k_mask.view()), + _image(atom->k_image.view()), + _nlocal(nlocal.template view()),_dim(dim), + _lo(lo),_hi(hi){ + const size_t elements = 17; + const int maxsendlist = (buf.template view().dimension_0()*buf.template view().dimension_1())/elements; + + buffer_view(_buf,buf,maxsendlist,elements); + } + + KOKKOS_INLINE_FUNCTION + void operator() (const int &myrecv) const { + X_FLOAT x = _buf(myrecv,_dim+1); + if (x >= _lo && x < _hi) { + int i = Kokkos::atomic_fetch_add(&_nlocal(0),1); + _x(i,0) = _buf(myrecv,1); + _x(i,1) = _buf(myrecv,2); + _x(i,2) = _buf(myrecv,3); + _v(i,0) = _buf(myrecv,4); + _v(i,1) = _buf(myrecv,5); + _v(i,2) = _buf(myrecv,6); + _tag[i] = _buf(myrecv,7); + _type[i] = _buf(myrecv,8); + _mask[i] = _buf(myrecv,9); + _image[i] = _buf(myrecv,10); + _dpdTheta[i] = _buf(myrecv,11); + _uCond[i] = _buf(myrecv,12); + _uMech[i] = _buf(myrecv,13); + _uChem[i] = _buf(myrecv,14); + _uCG[i] = _buf(myrecv,15); + _uCGnew[i] = _buf(myrecv,16); + } + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nrecv,int nlocal,int dim,X_FLOAT lo,X_FLOAT hi,ExecutionSpace space) { + if(space == Host) { + k_count.h_view(0) = nlocal; + AtomVecDPDKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); + Kokkos::parallel_for(nrecv/17,f); + LMPHostType::fence(); + return k_count.h_view(0); + } else { + k_count.h_view(0) = nlocal; + k_count.modify(); + k_count.sync(); + AtomVecDPDKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); + Kokkos::parallel_for(nrecv/17,f); + LMPDeviceType::fence(); + k_count.modify(); + k_count.sync(); + + return k_count.h_view(0); + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_exchange(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK); + + int m = 1; + h_x(nlocal,0) = buf[m++]; + h_x(nlocal,1) = buf[m++]; + h_x(nlocal,2) = buf[m++]; + h_v(nlocal,0) = buf[m++]; + h_v(nlocal,1) = buf[m++]; + h_v(nlocal,2) = buf[m++]; + h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; + h_type(nlocal) = (int) ubuf(buf[m++]).i; + h_mask(nlocal) = (int) ubuf(buf[m++]).i; + h_image(nlocal) = (imageint) ubuf(buf[m++]).i; + h_dpdTheta[nlocal] = buf[m++]; + h_uCond[nlocal] = buf[m++]; + h_uMech[nlocal] = buf[m++]; + h_uChem[nlocal] = buf[m++]; + h_uCG[nlocal] = buf[m++]; + h_uCGnew[nlocal] = buf[m++]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> + unpack_exchange(nlocal,&buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::size_restart() +{ + int i; + + int nlocal = atom->nlocal; + int n = 15 * nlocal; // 11 + dpdTheta + uCond + uMech + uChem + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + + return n; +} + +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + molecular types may be negative, but write as positive +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_restart(int i, double *buf) +{ + sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK ); + + int m = 1; + buf[m++] = h_x(i,0); + buf[m++] = h_x(i,1); + buf[m++] = h_x(i,2); + buf[m++] = ubuf(h_tag(i)).d; + buf[m++] = ubuf(h_type(i)).d; + buf[m++] = ubuf(h_mask(i)).d; + buf[m++] = ubuf(h_image(i)).d; + buf[m++] = h_v(i,0); + buf[m++] = h_v(i,1); + buf[m++] = h_v(i,2); + buf[m++] = h_dpdTheta[i]; + buf[m++] = h_uCond[i]; + buf[m++] = h_uMech[i]; + buf[m++] = h_uChem[i]; + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_restart(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); + } + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK ); + + int m = 1; + h_x(nlocal,0) = buf[m++]; + h_x(nlocal,1) = buf[m++]; + h_x(nlocal,2) = buf[m++]; + h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; + h_type(nlocal) = (int) ubuf(buf[m++]).i; + h_mask(nlocal) = (int) ubuf(buf[m++]).i; + h_image(nlocal) = (imageint) ubuf(buf[m++]).i; + h_v(nlocal,0) = buf[m++]; + h_v(nlocal,1) = buf[m++]; + h_v(nlocal,2) = buf[m++]; + h_dpdTheta[nlocal] = buf[m++]; + h_uCond[nlocal] = buf[m++]; + h_uMech[nlocal] = buf[m++]; + h_uChem[nlocal] = buf[m++]; + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (ubuf(buf[m++]).i) - m; + for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + //if(nlocal>2) printf("typeA: %i %i\n",type[0],type[1]); + atomKK->modified(Host,ALL_MASK); + grow(0); + //if(nlocal>2) printf("typeB: %i %i\n",type[0],type[1]); + } + atomKK->modified(Host,ALL_MASK); + + tag[nlocal] = 0; + type[nlocal] = itype; + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + h_mask[nlocal] = 1; + h_image[nlocal] = ((tagint) IMGMAX << IMG2BITS) | + ((tagint) IMGMAX << IMGBITS) | IMGMAX; + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + h_rho[nlocal] = 0.0; + h_dpdTheta[nlocal] = 0.0; + h_uCond[nlocal] = 0.0; + h_uMech[nlocal] = 0.0; + h_uChem[nlocal] = 0.0; + h_uCG[nlocal] = 0.0; + h_uCGnew[nlocal] = 0.0; + h_duChem[nlocal] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::data_atom(double *coord, tagint imagetmp, + char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + h_tag[nlocal] = ATOTAGINT(values[0]); + h_type[nlocal] = atoi(values[1]); + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + h_dpdTheta[nlocal] = atof(values[2]); + if (h_dpdTheta[nlocal] <= 0) + error->one(FLERR,"Internal temperature in Atoms section of date file must be > zero"); + + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + + h_image[nlocal] = imagetmp; + + h_mask[nlocal] = 1; + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + + h_rho[nlocal] = 0.0; + h_uCond[nlocal] = 0.0; + h_uMech[nlocal] = 0.0; + h_uChem[nlocal] = 0.0; + h_uCG[nlocal] = 0.0; + h_uCGnew[nlocal] = 0.0; + + atomKK->modified(Host,ALL_MASK); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one line in Atoms section of data file + initialize other atom quantities for this sub-style +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::data_atom_hybrid(int nlocal, char **values) +{ + h_dpdTheta(nlocal) = atof(values[0]); + + return 1; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(h_tag(i)).d; + buf[i][1] = ubuf(h_type(i)).d; + buf[i][2] = h_dpdTheta(i); + buf[i][3] = h_x(i,0); + buf[i][4] = h_x(i,1); + buf[i][5] = h_x(i,2); + buf[i][6] = (h_image[i] & IMGMASK) - IMGMAX; + buf[i][7] = (h_image[i] >> IMGBITS & IMGMASK) - IMGMAX; + buf[i][8] = (h_image[i] >> IMG2BITS) - IMGMAX; + } +} + +/* ---------------------------------------------------------------------- + pack hybrid atom info for data file +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_data_hybrid(int i, double *buf) +{ + buf[0] = h_dpdTheta(i); + return 1; +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4],buf[i][5], + (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, + (int) ubuf(buf[i][8]).i); +} + +/* ---------------------------------------------------------------------- + write hybrid atom info to data file +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::write_data_hybrid(FILE *fp, double *buf) +{ + fprintf(fp," %-1.16e",buf[0]); + return 1; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecDPDKokkos::memory_usage() +{ + bigint bytes = 0; + + if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); + if (atom->memcheck("type")) bytes += memory->usage(type,nmax); + if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); + if (atom->memcheck("image")) bytes += memory->usage(image,nmax); + if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); + if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*commKK->nthreads,3); + if (atom->memcheck("rho")) bytes += memory->usage(rho,nmax); + if (atom->memcheck("dpdTheta")) bytes += memory->usage(dpdTheta,nmax); + if (atom->memcheck("uCond")) bytes += memory->usage(uCond,nmax); + if (atom->memcheck("uMech")) bytes += memory->usage(uMech,nmax); + if (atom->memcheck("uChem")) bytes += memory->usage(uChem,nmax); + if (atom->memcheck("uCG")) bytes += memory->usage(uCG,nmax); + if (atom->memcheck("uCGnew")) bytes += memory->usage(uCGnew,nmax); + if (atom->memcheck("duChem")) bytes += memory->usage(duChem,nmax); + + return bytes; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::sync(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if (mask & X_MASK) atomKK->k_x.sync(); + if (mask & V_MASK) atomKK->k_v.sync(); + if (mask & F_MASK) atomKK->k_f.sync(); + if (mask & TAG_MASK) atomKK->k_tag.sync(); + if (mask & TYPE_MASK) atomKK->k_type.sync(); + if (mask & MASK_MASK) atomKK->k_mask.sync(); + if (mask & IMAGE_MASK) atomKK->k_image.sync(); + } else { + if (mask & X_MASK) atomKK->k_x.sync(); + if (mask & V_MASK) atomKK->k_v.sync(); + if (mask & F_MASK) atomKK->k_f.sync(); + if (mask & TAG_MASK) atomKK->k_tag.sync(); + if (mask & TYPE_MASK) atomKK->k_type.sync(); + if (mask & MASK_MASK) atomKK->k_mask.sync(); + if (mask & IMAGE_MASK) atomKK->k_image.sync(); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::sync_overlapping_device(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if ((mask & X_MASK) && atomKK->k_x.need_sync()) + perform_async_copy(atomKK->k_x,space); + if ((mask & V_MASK) && atomKK->k_v.need_sync()) + perform_async_copy(atomKK->k_v,space); + if ((mask & F_MASK) && atomKK->k_f.need_sync()) + perform_async_copy(atomKK->k_f,space); + if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) + perform_async_copy(atomKK->k_tag,space); + if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) + perform_async_copy(atomKK->k_type,space); + if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) + perform_async_copy(atomKK->k_mask,space); + if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) + perform_async_copy(atomKK->k_image,space); + } else { + if ((mask & X_MASK) && atomKK->k_x.need_sync()) + perform_async_copy(atomKK->k_x,space); + if ((mask & V_MASK) && atomKK->k_v.need_sync()) + perform_async_copy(atomKK->k_v,space); + if ((mask & F_MASK) && atomKK->k_f.need_sync()) + perform_async_copy(atomKK->k_f,space); + if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) + perform_async_copy(atomKK->k_tag,space); + if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) + perform_async_copy(atomKK->k_type,space); + if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) + perform_async_copy(atomKK->k_mask,space); + if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) + perform_async_copy(atomKK->k_image,space); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::modified(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if (mask & X_MASK) atomKK->k_x.modify(); + if (mask & V_MASK) atomKK->k_v.modify(); + if (mask & F_MASK) atomKK->k_f.modify(); + if (mask & TAG_MASK) atomKK->k_tag.modify(); + if (mask & TYPE_MASK) atomKK->k_type.modify(); + if (mask & MASK_MASK) atomKK->k_mask.modify(); + if (mask & IMAGE_MASK) atomKK->k_image.modify(); + } else { + if (mask & X_MASK) atomKK->k_x.modify(); + if (mask & V_MASK) atomKK->k_v.modify(); + if (mask & F_MASK) atomKK->k_f.modify(); + if (mask & TAG_MASK) atomKK->k_tag.modify(); + if (mask & TYPE_MASK) atomKK->k_type.modify(); + if (mask & MASK_MASK) atomKK->k_mask.modify(); + if (mask & IMAGE_MASK) atomKK->k_image.modify(); + } +} + diff --git a/src/USER-DPD/atom_vec_dpd_kokkos.h b/src/USER-DPD/atom_vec_dpd_kokkos.h new file mode 100644 index 0000000000..d108e58ae7 --- /dev/null +++ b/src/USER-DPD/atom_vec_dpd_kokkos.h @@ -0,0 +1,135 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale AtomicKokkos/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 ATOM_CLASS + +AtomStyle(dpd/kk,AtomVecDPDKokkos) + +#else + +#ifndef LMP_ATOM_VEC_DPD_KOKKOS_H +#define LMP_ATOM_VEC_DPD_KOKKOS_H + +#include "atom_vec_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +class AtomVecDPDKokkos : public AtomVecKokkos { + public: + AtomVecDPDKokkos(class LAMMPS *); + virtual ~AtomVecDPDKokkos() {} + void grow(int); + void copy(int, int, int); + int pack_comm(int, int *, double *, int, int *); + int pack_comm_vel(int, int *, double *, int, int *); + int pack_comm_hybrid(int, int *, double *); + void unpack_comm(int, int, double *); + void unpack_comm_vel(int, int, double *); + int unpack_comm_hybrid(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + int pack_border(int, int *, double *, int, int *); + int pack_border_vel(int, int *, double *, int, int *); + int pack_border_hybrid(int, int *, double *); + void unpack_border(int, int, double *); + void unpack_border_vel(int, int, double *); + int unpack_border_hybrid(int, int, double *); + int pack_exchange(int, double *); + int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, tagint, char **); + int data_atom_hybrid(int, char **); + void pack_data(double **); + int pack_data_hybrid(int, double *); + void write_data(FILE *, int, double **); + int write_data_hybrid(FILE *, double *); + bigint memory_usage(); + + void grow_reset(); + int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, const int pbc[]); + void unpack_comm_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf); + int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, + const int & iswap, const int nfirst, + const int &pbc_flag, const int pbc[]); + int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, + DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space); + void unpack_border_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf, + ExecutionSpace space); + int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space, int dim, + X_FLOAT lo, X_FLOAT hi); + int unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, + int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, + ExecutionSpace space); + + void sync(ExecutionSpace space, unsigned int mask); + void modified(ExecutionSpace space, unsigned int mask); + void sync_overlapping_device(ExecutionSpace space, unsigned int mask); + double *uCond,*uMech,*uChem,*uCG,*uCGnew,*rho,*dpdTheta; + double *duChem; + + protected: + DAT::t_efloat_1d d_uCond, d_uMech, d_uChem, d_uCG, d_uCGnew,d_rho,d_dpdTheta,d_duChem; + HAT::t_efloat_1d h_uCond, h_uMech, h_uChem, h_uCG, h_uCGnew,h_rho,h_dpdTheta,h_duChem; + + tagint *tag; + imageint *image; + int *type,*mask; + double **x,**v,**f; + + DAT::t_tagint_1d d_tag; + HAT::t_tagint_1d h_tag; + DAT::t_imageint_1d d_image; + HAT::t_imageint_1d h_image; + DAT::t_int_1d d_type, d_mask; + HAT::t_int_1d h_type, h_mask; + + DAT::t_x_array d_x; + DAT::t_v_array d_v; + DAT::t_f_array d_f; + HAT::t_x_array h_x; + HAT::t_v_array h_v; + HAT::t_f_array h_f; + + DAT::tdual_int_1d k_count; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + +*/ diff --git a/src/USER-DPD/pair_dpd_fdt_energy_kokkos.cpp b/src/USER-DPD/pair_dpd_fdt_energy_kokkos.cpp new file mode 100644 index 0000000000..f7e1fecc09 --- /dev/null +++ b/src/USER-DPD/pair_dpd_fdt_energy_kokkos.cpp @@ -0,0 +1,373 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: James Larentzos (U.S. Army Research Laboratory) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_dpd_fdt_energy_kokkos.h" +#include "kokkos.h" +#include "atom_kokkos.h" +#include "atom_vec.h" +#include "comm.h" +#include "update.h" +#include "fix.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "random_mars.h" +#include "math_const.h" +#include "memory.h" +#include "modify.h" +#include "error.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define KOKKOS_CUDA_MAX_THREADS 256 +#define KOKKOS_CUDA_MIN_BLOCKS 8 + +#define EPSILON 1.0e-10 + +/* ---------------------------------------------------------------------- */ + +template +PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : PairDPDfdtEnergy(lmp) +{ + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + cutsq = NULL; +} + +/* ---------------------------------------------------------------------- */ + +template +PairDPDfdtEnergyKokkos::~PairDPDfdtEnergyKokkos() +{ + if (allocated) { + memory->destroy_kokkos(k_eatom,eatom); + memory->destroy_kokkos(k_vatom,vatom); + k_cutsq = DAT::tdual_ffloat_2d(); + memory->sfree(cutsq); + eatom = NULL; + vatom = NULL; + cutsq = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +template +void PairDPDfdtEnergyKokkos::cleanup_copy() { + // WHY needed: this prevents parent copy from deallocating any arrays + allocated = 0; + cutsq = NULL; + eatom = NULL; + vatom = NULL; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) +{ + eflag = eflag_in; + vflag = vflag_in; + + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + // reallocate per-atom arrays if necessary + + if (eflag_atom) { + memory->destroy_kokkos(k_eatom,eatom); + memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.view(); + } + if (vflag_atom) { + memory->destroy_kokkos(k_vatom,vatom); + memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); + d_vatom = k_vatom.view(); + } + + atomKK->sync(execution_space,datamask_read); + k_cutsq.template sync(); + if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); + else atomKK->modified(execution_space,F_MASK); + + x = atomKK->k_x.view(); + c_x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + type = atomKK->k_type.view(); + tag = atomKK->k_tag.view(); + nlocal = atom->nlocal; + nall = atom->nlocal + atom->nghost; + newton_pair = force->newton_pair; + special_lj[0] = force->special_lj[0]; + special_lj[1] = force->special_lj[1]; + special_lj[2] = force->special_lj[2]; + special_lj[3] = force->special_lj[3]; + + // loop over neighbors of my atoms + + EV_FLOAT ev = pair_compute,void >(this,(NeighListKokkos*)list); + + if (eflag_global) eng_vdwl += ev.evdwl; + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } +} + +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairDPDfdtEnergyKokkos:: +compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { + (void) i; + (void) j; + const F_FLOAT r = sqrt(rsq); + if (r < EPSILON) return 0; // r can be 0.0 in DPD systems + const F_FLOAT rinv = 1.0/r; + const F_FLOAT wr = 1.0 - r/cut[itype][jtype]; + const F_FLOAT wd = wr*wr; + + // conservative force = a0 * wr + return a0[itype][jtype]*wr*rinv; +} + +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairDPDfdtEnergyKokkos:: +compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { + (void) i; + (void) j; + const F_FLOAT r = sqrt(rsq); + if (r < EPSILON) return 0; // r can be 0.0 in DPD systems + const F_FLOAT rinv = 1.0/r; + const F_FLOAT wr = 1.0 - r/cut[itype][jtype]; + const F_FLOAT wd = wr*wr; + // unshifted eng of conservative term: + // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]); + // eng shifted to 0.0 at cutoff + return 0.5*a0[itype][jtype]*cut[itype][jtype] * wd; +} + + +/* + int i,j,ii,jj,inum,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r,rinv,wd,wr,factor_dpd; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_dpd = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in DPD systems + rinv = 1.0/r; + wr = 1.0 - r/cut[itype][jtype]; + wd = wr*wr; + + // conservative force = a0 * wr + fpair = a0[itype][jtype]*wr; + fpair *= factor_dpd*rinv; + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (eflag) { + // unshifted eng of conservative term: + // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]); + // eng shifted to 0.0 at cutoff + evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd; + evdwl *= factor_dpd; + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair, + evdwl,0.0,fpair,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} +*/ + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairDPDfdtEnergyKokkos::allocate() +{ + PairDPDfdtEnergy::allocate(); + + int n = atom->ntypes; + memory->destroy(cutsq); + memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); + d_cutsq = k_cutsq.template view(); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +template +void PairDPDfdtEnergyKokkos::settings(int narg, char **arg) +{ + if (narg != 2) error->all(FLERR,"Illegal pair_style command"); + + PairDPDfdtEnergy::settings(2,arg); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +template +void PairDPDfdtEnergyKokkos::init_style() +{ + PairDPDfdtEnergy::init_style(); + + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + neighbor->requests[irequest]->full_cluster = 0; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with dpd/fdt/energy/kk"); + } + +/* + if (comm->ghost_velocity == 0) + error->all(FLERR,"Pair dpd/fdt/energy requires ghost atoms store velocity"); + + // if newton off, forces between atoms ij will be double computed + // using different random numbers + + if (force->newton_pair == 0 && comm->me == 0) error->warning(FLERR, + "Pair dpd/fdt/energy requires newton pair on"); + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->ssa = 0; + for (int i = 0; i < modify->nfix; i++) + if (strcmp(modify->fix[i]->style,"shardlow") == 0) + neighbor->requests[irequest]->ssa = 1; + + bool eos_flag = false; + for (int i = 0; i < modify->nfix; i++) + if (strncmp(modify->fix[i]->style,"eos",3) == 0) eos_flag = true; + if(!eos_flag) error->all(FLERR,"pair_style dpd/fdt/energy requires an EOS to be specified"); +*/ +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +template +double PairDPDfdtEnergyKokkos::init_one(int i, int j) +{ + double cutone = PairDPDfdtEnergy::init_one(i,j); + + if(i(); + + return cutone; +} + + +namespace LAMMPS_NS { +template class PairDPDfdtEnergyKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class PairDPDfdtEnergyKokkos; +#endif +} + diff --git a/src/USER-DPD/pair_dpd_fdt_energy_kokkos.h b/src/USER-DPD/pair_dpd_fdt_energy_kokkos.h new file mode 100644 index 0000000000..a8a5f25801 --- /dev/null +++ b/src/USER-DPD/pair_dpd_fdt_energy_kokkos.h @@ -0,0 +1,119 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(dpd/fdt/energy/kk,PairDPDfdtEnergyKokkos) +PairStyle(dpd/fdt/energy/kk/device,PairDPDfdtEnergyKokkos) +PairStyle(dpd/fdt/energy/kk/host,PairDPDfdtEnergyKokkos) + +#else + +#ifndef LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H +#define LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H + +#include "pair_kokkos.h" +#include "pair_dpd_fdt_energy.h" +#include "neigh_list_kokkos.h" + +namespace LAMMPS_NS { + +template +class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { + public: + enum {EnabledNeighFlags=HALFTHREAD|HALF}; + enum {COUL_FLAG=0}; + typedef DeviceType device_type; + PairDPDfdtEnergyKokkos(class LAMMPS *); + virtual ~PairDPDfdtEnergyKokkos(); + virtual void compute(int, int); + virtual void settings(int, char **); + void init_style(); + double init_one(int, int); + + protected: + void cleanup_copy(); + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; + + 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; + typename ArrayTypes::t_f_array f; + typename ArrayTypes::t_int_1d_randomread type; + + DAT::tdual_efloat_1d k_eatom; + DAT::tdual_virial_array k_vatom; + typename ArrayTypes::t_efloat_1d d_eatom; + typename ArrayTypes::t_virial_array d_vatom; + typename ArrayTypes::t_tagint_1d tag; + + int newton_pair; + double special_lj[4]; + + typename ArrayTypes::tdual_ffloat_2d k_cutsq; + typename ArrayTypes::t_ffloat_2d d_cutsq; + + + int neighflag; + int nlocal,nall,eflag,vflag; + + void allocate(); + + friend class PairComputeFunctor; + friend class PairComputeFunctor; + friend class PairComputeFunctor; + friend class PairComputeFunctor; + friend EV_FLOAT pair_compute_neighlist(PairDPDfdtEnergyKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute_neighlist(PairDPDfdtEnergyKokkos*,NeighListKokkos*); + friend EV_FLOAT pair_compute(PairDPDfdtEnergyKokkos*,NeighListKokkos*); + friend void pair_virial_fdotr_compute(PairDPDfdtEnergyKokkos*); +}; + +} + +#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: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair dpd/fdt/energy requires ghost atoms store velocity + +Use the communicate vel yes command to enable this. + +E: Pair dpd/fdt/energy requires newton pair on + +Self-explanatory. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +*/ -- GitLab From 8f78157202299a5bf9d860c90f30c8340d2d0cfc Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 21 Nov 2016 12:32:48 -0500 Subject: [PATCH 002/337] USER-DPD: aplly unpack_comm_hybrid bugfix d31121b to atom_vec_dpd_kokkos.cpp --- src/USER-DPD/atom_vec_dpd_kokkos.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/USER-DPD/atom_vec_dpd_kokkos.cpp b/src/USER-DPD/atom_vec_dpd_kokkos.cpp index c58b592e53..c79559172f 100644 --- a/src/USER-DPD/atom_vec_dpd_kokkos.cpp +++ b/src/USER-DPD/atom_vec_dpd_kokkos.cpp @@ -1205,6 +1205,8 @@ int AtomVecDPDKokkos::unpack_comm_hybrid(int n, int first, double *buf) h_uCond(i) = buf[m++]; h_uMech(i) = buf[m++]; h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; } return m; } -- GitLab From 75907916045ff25745389db4b11773c820bc13de Mon Sep 17 00:00:00 2001 From: stamoor Date: Mon, 21 Nov 2016 13:54:14 -0700 Subject: [PATCH 003/337] Integrating atom_vec_dpd into the Kokkos package --- src/KOKKOS/atom_vec_dpd_kokkos.cpp | 1874 ++++++++++++++++++++++++++++ src/KOKKOS/atom_vec_dpd_kokkos.h | 135 ++ 2 files changed, 2009 insertions(+) create mode 100644 src/KOKKOS/atom_vec_dpd_kokkos.cpp create mode 100644 src/KOKKOS/atom_vec_dpd_kokkos.h diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp new file mode 100644 index 0000000000..c79559172f --- /dev/null +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -0,0 +1,1874 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale AtomicKokkos/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 "atom_vec_dpd_kokkos.h" +#include "atom_kokkos.h" +#include "comm_kokkos.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "atom_masks.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define DELTA 10000 + +/* ---------------------------------------------------------------------- */ + +AtomVecDPDKokkos::AtomVecDPDKokkos(LAMMPS *lmp) : AtomVecKokkos(lmp) +{ + molecular = 0; + mass_type = 1; + + comm_x_only = comm_f_only = 0; + size_forward = 7; + size_reverse = 3; + size_border = 12; + size_velocity = 3; + size_data_atom = 6; + size_data_vel = 4; + xcol_data = 4; + + atom->rho_flag = 1; + atom->dpd_flag = 1; + + k_count = DAT::tdual_int_1d("atom::k_count",1); + atomKK = (AtomKokkos *) atom; + commKK = (CommKokkos *) comm; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by DELTA + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::grow(int n) +{ + if (n == 0) nmax += DELTA; + else nmax = n; + atomKK->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + sync(Device,ALL_MASK); + modified(Device,ALL_MASK); + + memory->grow_kokkos(atomKK->k_tag,atomKK->tag,nmax,"atom:tag"); + memory->grow_kokkos(atomKK->k_type,atomKK->type,nmax,"atom:type"); + memory->grow_kokkos(atomKK->k_mask,atomKK->mask,nmax,"atom:mask"); + memory->grow_kokkos(atomKK->k_image,atomKK->image,nmax,"atom:image"); + + memory->grow_kokkos(atomKK->k_x,atomKK->x,nmax,3,"atom:x"); + memory->grow_kokkos(atomKK->k_v,atomKK->v,nmax,3,"atom:v"); + memory->grow_kokkos(atomKK->k_f,atomKK->f,nmax,3,"atom:f"); + + + memory->grow_kokkos(atomKK->k_rho,atomKK->rho,nmax,"atom:rho"); + memory->grow_kokkos(atomKK->k_dpdTheta,atomKK->dpdTheta,nmax,"atom:dpdTheta"); + memory->grow_kokkos(atomKK->k_uCond,atomKK->uCond,nmax,"atom:uCond"); + memory->grow_kokkos(atomKK->k_uMech,atomKK->uMech,nmax,"atom:uMech"); + memory->grow_kokkos(atomKK->k_uChem,atomKK->uChem,nmax,"atom:uChem"); + memory->grow_kokkos(atomKK->k_uCG,atomKK->uCG,nmax,"atom:uCG"); + memory->grow_kokkos(atomKK->k_uCGnew,atomKK->uCGnew,nmax,"atom:uCGnew"); + memory->grow_kokkos(atomKK->k_duChem,atomKK->duChem,nmax,"atom:duChem"); + + grow_reset(); + sync(Host,ALL_MASK); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::grow_reset() +{ + tag = atomKK->tag; + d_tag = atomKK->k_tag.d_view; + h_tag = atomKK->k_tag.h_view; + + type = atomKK->type; + d_type = atomKK->k_type.d_view; + h_type = atomKK->k_type.h_view; + mask = atomKK->mask; + d_mask = atomKK->k_mask.d_view; + h_mask = atomKK->k_mask.h_view; + image = atomKK->image; + d_image = atomKK->k_image.d_view; + h_image = atomKK->k_image.h_view; + + x = atomKK->x; + d_x = atomKK->k_x.d_view; + h_x = atomKK->k_x.h_view; + v = atomKK->v; + d_v = atomKK->k_v.d_view; + h_v = atomKK->k_v.h_view; + f = atomKK->f; + d_f = atomKK->k_f.d_view; + h_f = atomKK->k_f.h_view; + + rho = atomKK->rho; + d_rho = atomKK->k_rho.d_view; + h_rho = atomKK->k_rho.h_view; + dpdTheta = atomKK->dpdTheta; + d_dpdTheta = atomKK->k_dpdTheta.d_view; + h_dpdTheta = atomKK->k_dpdTheta.h_view; + uCond = atomKK->uCond; + d_uCond = atomKK->k_uCond.d_view;; + h_uCond = atomKK->k_uCond.h_view; + uMech = atomKK->uMech; + d_uMech = atomKK->k_uMech.d_view;; + h_uMech = atomKK->k_uMech.h_view; + uChem = atomKK->uChem; + d_uChem = atomKK->k_uChem.d_view;; + h_uChem = atomKK->k_uChem.h_view; + uCG = atomKK->uCG; + d_uCG = atomKK->k_uCG.d_view;; + h_uCG = atomKK->k_uCG.h_view; + uCGnew = atomKK->uCGnew; + d_uCGnew = atomKK->k_uCGnew.d_view;; + h_uCGnew = atomKK->k_uCGnew.h_view; + duChem = atomKK->duChem; + d_duChem = atomKK->k_duChem.d_view;; + h_duChem = atomKK->k_duChem.h_view; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::copy(int i, int j, int delflag) +{ + h_tag[j] = h_tag[i]; + h_type[j] = h_type[i]; + mask[j] = mask[i]; + h_image[j] = h_image[i]; + h_x(j,0) = h_x(i,0); + h_x(j,1) = h_x(i,1); + h_x(j,2) = h_x(i,2); + h_v(j,0) = h_v(i,0); + h_v(j,1) = h_v(i,1); + h_v(j,2) = h_v(i,2); + h_dpdTheta[j] = h_dpdTheta[i]; + h_uCond[j] = h_uCond[i]; + h_uMech[j] = h_uMech[i]; + h_uChem[j] = h_uChem[i]; + h_uCG[j] = h_uCG[i]; + h_uCGnew[j] = h_uCGnew[i]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackComm { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array_randomread _x; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; + typename ArrayTypes::t_xfloat_2d_um _buf; + typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; + X_FLOAT _pbc[6]; + + AtomVecDPDKokkos_PackComm( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_efloat_1d &dpdTheta, + const typename DAT::tdual_efloat_1d &uCond, + const typename DAT::tdual_efloat_1d &uMech, + const typename DAT::tdual_efloat_1d &uChem, + const typename DAT::tdual_xfloat_2d &buf, + const typename DAT::tdual_int_2d &list, + const int & iswap, + const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, + const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): + _x(x.view()), + _dpdTheta(dpdTheta.view()), + _uCond(uCond.view()), + _uMech(uMech.view()), + _uChem(uChem.view()), + _list(list.view()),_iswap(iswap), + _xprd(xprd),_yprd(yprd),_zprd(zprd), + _xy(xy),_xz(xz),_yz(yz) { + const size_t maxsend = (buf.view().dimension_0()*buf.view().dimension_1())/3; + const size_t elements = 3; + buffer_view(_buf,buf,maxsend,elements); + _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; + _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; + }; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _buf(i,0) = _x(j,0); + _buf(i,1) = _x(j,1); + _buf(i,2) = _x(j,2); + } else { + if (TRICLINIC == 0) { + _buf(i,0) = _x(j,0) + _pbc[0]*_xprd; + _buf(i,1) = _x(j,1) + _pbc[1]*_yprd; + _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; + } else { + _buf(i,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; + _buf(i,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; + _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; + } + } + _buf(i,3) = _dpdTheta(j); + _buf(i,4) = _uCond(j); + _buf(i,5) = _uMech(j); + _buf(i,6) = _uChem(j); + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, + const DAT::tdual_int_2d &list, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, + const int* const pbc) +{ + // Check whether to always run forward communication on the host + // Choose correct forward PackComm kernel + + if(commKK->forward_comm_on_host) { + sync(Host,X_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + LMPHostType::fence(); + } else { + sync(Device,X_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + LMPDeviceType::fence(); + } + + return n*size_forward; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackCommSelf { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array_randomread _x; + typename ArrayTypes::t_x_array _xw; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; + int _nfirst; + typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; + X_FLOAT _pbc[6]; + + AtomVecDPDKokkos_PackCommSelf( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_efloat_1d &dpdTheta, + const typename DAT::tdual_efloat_1d &uCond, + const typename DAT::tdual_efloat_1d &uMech, + const typename DAT::tdual_efloat_1d &uChem, + const int &nfirst, + const typename DAT::tdual_int_2d &list, + const int & iswap, + const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, + const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): + _x(x.view()),_xw(x.view()), + _dpdTheta(dpdTheta.view()), + _uCond(uCond.view()), + _uMech(uMech.view()), + _uChem(uChem.view()), + _nfirst(nfirst),_list(list.view()),_iswap(iswap), + _xprd(xprd),_yprd(yprd),_zprd(zprd), + _xy(xy),_xz(xz),_yz(yz) { + _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; + _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; + }; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _xw(i+_nfirst,0) = _x(j,0); + _xw(i+_nfirst,1) = _x(j,1); + _xw(i+_nfirst,2) = _x(j,2); + } else { + if (TRICLINIC == 0) { + _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd; + _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd; + _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; + } else { + _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; + _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; + _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; + } + } + _dpdTheta(i+_nfirst) = _dpdTheta(j); + _uCond(i+_nfirst) = _uCond(j); + _uMech(i+_nfirst) = _uMech(j); + _uChem(i+_nfirst) = _uChem(j); + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, const int & iswap, + const int nfirst, const int &pbc_flag, const int* const pbc) { + if(commKK->forward_comm_on_host) { + sync(Host,X_MASK); + modified(Host,X_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + LMPHostType::fence(); + } else { + sync(Device,X_MASK); + modified(Device,X_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + LMPDeviceType::fence(); + } + return n*3; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_UnpackComm { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array _x; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; + typename ArrayTypes::t_xfloat_2d_const _buf; + int _first; + + AtomVecDPDKokkos_UnpackComm( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_efloat_1d &dpdTheta, + const typename DAT::tdual_efloat_1d &uCond, + const typename DAT::tdual_efloat_1d &uMech, + const typename DAT::tdual_efloat_1d &uChem, + const typename DAT::tdual_xfloat_2d &buf, + const int& first):_x(x.view()), + _dpdTheta(dpdTheta.view()), + _uCond(uCond.view()), + _uMech(uMech.view()), + _uChem(uChem.view()), + _buf(buf.view()), + _first(first) {}; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + _x(i+_first,0) = _buf(i,0); + _x(i+_first,1) = _buf(i,1); + _x(i+_first,2) = _buf(i,2); + _dpdTheta(i+_first) = _buf(i,3); + _uCond(i+_first) = _buf(i,4); + _uMech(i+_first) = _buf(i,5); + _uChem(i+_first) = _buf(i,6); + } +}; + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_comm_kokkos(const int &n, const int &first, + const DAT::tdual_xfloat_2d &buf ) { + if(commKK->forward_comm_on_host) { + sync(Host,X_MASK); + modified(Host,X_MASK); + struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,first); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } else { + sync(Device,X_MASK); + modified(Device,X_MASK); + struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,first); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = dpdTheta[j]; + buf[m++] = uCond[j]; + buf[m++] = uMech[j]; + buf[m++] = uChem[j]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + if (mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_dpdTheta[i] = buf[m++]; + h_uCond[i] = buf[m++]; + h_uMech[i] = buf[m++]; + h_uChem[i] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_comm_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + h_dpdTheta[i] = buf[m++]; + h_uCond[i] = buf[m++]; + h_uMech[i] = buf[m++]; + h_uChem[i] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_reverse(int n, int first, double *buf) +{ + if(n > 0) + sync(Host,F_MASK); + + int m = 0; + const int last = first + n; + for (int i = first; i < last; i++) { + buf[m++] = h_f(i,0); + buf[m++] = h_f(i,1); + buf[m++] = h_f(i,2); + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_reverse(int n, int *list, double *buf) +{ + if(n > 0) { + sync(Host,F_MASK); + modified(Host,F_MASK); + } + + int m = 0; + for (int i = 0; i < n; i++) { + const int j = list[i]; + h_f(j,0) += buf[m++]; + h_f(j,1) += buf[m++]; + h_f(j,2) += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackBorder { + typedef DeviceType device_type; + + typename ArrayTypes::t_xfloat_2d _buf; + const typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + const typename ArrayTypes::t_x_array_randomread _x; + const typename ArrayTypes::t_tagint_1d _tag; + const typename ArrayTypes::t_int_1d _type; + const typename ArrayTypes::t_int_1d _mask; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; + X_FLOAT _dx,_dy,_dz; + + AtomVecDPDKokkos_PackBorder( + const typename ArrayTypes::t_xfloat_2d &buf, + const typename ArrayTypes::t_int_2d_const &list, + const int & iswap, + const typename ArrayTypes::t_x_array &x, + const typename ArrayTypes::t_tagint_1d &tag, + const typename ArrayTypes::t_int_1d &type, + const typename ArrayTypes::t_int_1d &mask, + const typename ArrayTypes::t_efloat_1d &dpdTheta, + const typename ArrayTypes::t_efloat_1d &uCond, + const typename ArrayTypes::t_efloat_1d &uMech, + const typename ArrayTypes::t_efloat_1d &uChem, + const typename ArrayTypes::t_efloat_1d &uCG, + const typename ArrayTypes::t_efloat_1d &uCGnew, + const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): + _buf(buf),_list(list),_iswap(iswap), + _x(x),_tag(tag),_type(type),_mask(mask), + _dpdTheta(dpdTheta), + _uCond(uCond), + _uMech(uMech), + _uChem(uChem), + _uCG(uCGnew), + _uCGnew(uCGnew), + _dx(dx),_dy(dy),_dz(dz) {} + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _buf(i,0) = _x(j,0); + _buf(i,1) = _x(j,1); + _buf(i,2) = _x(j,2); + } else { + _buf(i,0) = _x(j,0) + _dx; + _buf(i,1) = _x(j,1) + _dy; + _buf(i,2) = _x(j,2) + _dz; + } + _buf(i,3) = _tag(j); + _buf(i,4) = _type(j); + _buf(i,5) = _mask(j); + _buf(i,6) = _dpdTheta(j); + _buf(i,7) = _uCond(j); + _buf(i,8) = _uMech(j); + _buf(i,9) = _uChem(j); + _buf(i,10) = _uCG(j); + _buf(i,11) = _uCGnew(j); + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space) +{ + X_FLOAT dx,dy,dz; + + if (pbc_flag != 0) { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if(space==Host) { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,h_x,h_tag,h_type,h_mask, + h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + LMPHostType::fence(); + } else { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,d_x,d_tag,d_type,d_mask, + d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } + + } else { + dx = dy = dz = 0; + if(space==Host) { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,h_x,h_tag,h_type,h_mask, + h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + LMPHostType::fence(); + } else { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,d_x,d_tag,d_type,d_mask, + d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } + } + return n*6; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + if (mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + buf[m++] = h_uCG[j]; + buf[m++] = h_uCGnew[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + buf[m++] = h_uCG[j]; + buf[m++] = h_uCGnew[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_UnpackBorder { + typedef DeviceType device_type; + + const typename ArrayTypes::t_xfloat_2d_const _buf; + typename ArrayTypes::t_x_array _x; + typename ArrayTypes::t_tagint_1d _tag; + typename ArrayTypes::t_int_1d _type; + typename ArrayTypes::t_int_1d _mask; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; + int _first; + + + AtomVecDPDKokkos_UnpackBorder( + const typename ArrayTypes::t_xfloat_2d_const &buf, + typename ArrayTypes::t_x_array &x, + typename ArrayTypes::t_tagint_1d &tag, + typename ArrayTypes::t_int_1d &type, + typename ArrayTypes::t_int_1d &mask, + const typename ArrayTypes::t_efloat_1d &dpdTheta, + const typename ArrayTypes::t_efloat_1d &uCond, + const typename ArrayTypes::t_efloat_1d &uMech, + const typename ArrayTypes::t_efloat_1d &uChem, + const typename ArrayTypes::t_efloat_1d &uCG, + const typename ArrayTypes::t_efloat_1d &uCGnew, + const int& first): + _buf(buf),_x(x),_tag(tag),_type(type),_mask(mask), + _dpdTheta(dpdTheta), + _uCond(uCond), + _uMech(uMech), + _uChem(uChem), + _uCG(uCGnew), + _uCGnew(uCGnew), + _first(first) {}; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + _x(i+_first,0) = _buf(i,0); + _x(i+_first,1) = _buf(i,1); + _x(i+_first,2) = _buf(i,2); + _tag(i+_first) = static_cast (_buf(i,3)); + _type(i+_first) = static_cast (_buf(i,4)); + _mask(i+_first) = static_cast (_buf(i,5)); + _dpdTheta(i+_first) = _buf(i,6); + _uCond(i+_first) = _buf(i,7); + _uMech(i+_first) = _buf(i,8); + _uChem(i+_first) = _buf(i,9); + _uCG(i+_first) = _buf(i,10); + _uCGnew(i+_first) = _buf(i,11); +// printf("%i %i %lf %lf %lf %i BORDER\n",_tag(i+_first),i+_first,_x(i+_first,0),_x(i+_first,1),_x(i+_first,2),_type(i+_first)); + } +}; + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_border_kokkos(const int &n, const int &first, + const DAT::tdual_xfloat_2d &buf,ExecutionSpace space) { + modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + while (first+n >= nmax) grow(0); + modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + if(space==Host) { + struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), + h_x,h_tag,h_type,h_mask, + h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, + first); + Kokkos::parallel_for(n,f); + LMPHostType::fence(); + } else { + struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), + d_x,d_tag,d_type,d_mask, + d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, + first); + Kokkos::parallel_for(n,f); + LMPDeviceType::fence(); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_border(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag(i) = (tagint) ubuf(buf[m++]).i; + h_type(i) = (int) ubuf(buf[m++]).i; + h_mask(i) = (int) ubuf(buf[m++]).i; + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + modified(Host,X_MASK|V_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag(i) = (tagint) ubuf(buf[m++]).i; + h_type(i) = (int) ubuf(buf[m++]).i; + h_mask(i) = (int) ubuf(buf[m++]).i; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_comm_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_border_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackExchangeFunctor { + typedef DeviceType device_type; + typedef ArrayTypes AT; + typename AT::t_x_array_randomread _x; + typename AT::t_v_array_randomread _v; + typename AT::t_tagint_1d_randomread _tag; + typename AT::t_int_1d_randomread _type; + typename AT::t_int_1d_randomread _mask; + typename AT::t_imageint_1d_randomread _image; + typename AT::t_efloat_1d_randomread _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; + typename AT::t_x_array _xw; + typename AT::t_v_array _vw; + typename AT::t_tagint_1d _tagw; + typename AT::t_int_1d _typew; + typename AT::t_int_1d _maskw; + typename AT::t_imageint_1d _imagew; + typename AT::t_efloat_1d _dpdThetaw,_uCondw,_uMechw,_uChemw,_uCGw,_uCGneww; + + typename AT::t_xfloat_2d_um _buf; + typename AT::t_int_1d_const _sendlist; + typename AT::t_int_1d_const _copylist; + int _nlocal,_dim; + X_FLOAT _lo,_hi; + + AtomVecDPDKokkos_PackExchangeFunctor( + const AtomKokkos* atom, + const typename AT::tdual_xfloat_2d buf, + typename AT::tdual_int_1d sendlist, + typename AT::tdual_int_1d copylist,int nlocal, int dim, + X_FLOAT lo, X_FLOAT hi): + _x(atom->k_x.view()), + _v(atom->k_v.view()), + _tag(atom->k_tag.view()), + _type(atom->k_type.view()), + _mask(atom->k_mask.view()), + _image(atom->k_image.view()), + _dpdTheta(atom->k_dpdTheta.view()), + _uCond(atom->k_uCond.view()), + _uMech(atom->k_uMech.view()), + _uChem(atom->k_uChem.view()), + _uCG(atom->k_uCG.view()), + _uCGnew(atom->k_uCGnew.view()), + _xw(atom->k_x.view()), + _vw(atom->k_v.view()), + _tagw(atom->k_tag.view()), + _typew(atom->k_type.view()), + _maskw(atom->k_mask.view()), + _imagew(atom->k_image.view()), + _dpdThetaw(atom->k_dpdTheta.view()), + _uCondw(atom->k_uCond.view()), + _uMechw(atom->k_uMech.view()), + _uChemw(atom->k_uChem.view()), + _uCGw(atom->k_uCG.view()), + _uCGneww(atom->k_uCGnew.view()), + _sendlist(sendlist.template view()), + _copylist(copylist.template view()), + _nlocal(nlocal),_dim(dim), + _lo(lo),_hi(hi){ + const size_t elements = 17; + const int maxsendlist = (buf.template view().dimension_0()*buf.template view().dimension_1())/elements; + + buffer_view(_buf,buf,maxsendlist,elements); + } + + KOKKOS_INLINE_FUNCTION + void operator() (const int &mysend) const { + const int i = _sendlist(mysend); + _buf(mysend,0) = 17; + _buf(mysend,1) = _x(i,0); + _buf(mysend,2) = _x(i,1); + _buf(mysend,3) = _x(i,2); + _buf(mysend,4) = _v(i,0); + _buf(mysend,5) = _v(i,1); + _buf(mysend,6) = _v(i,2); + _buf(mysend,7) = _tag[i]; + _buf(mysend,8) = _type[i]; + _buf(mysend,9) = _mask[i]; + _buf(mysend,10) = _image[i]; + _buf(mysend,11) = _dpdTheta[i]; + _buf(mysend,12) = _uCond[i]; + _buf(mysend,13) = _uMech[i]; + _buf(mysend,14) = _uChem[i]; + _buf(mysend,15) = _uCG[i]; + _buf(mysend,16) = _uCGnew[i]; + const int j = _copylist(mysend); + + if(j>-1) { + _xw(i,0) = _x(j,0); + _xw(i,1) = _x(j,1); + _xw(i,2) = _x(j,2); + _vw(i,0) = _v(j,0); + _vw(i,1) = _v(j,1); + _vw(i,2) = _v(j,2); + _tagw[i] = _tag(j); + _typew[i] = _type(j); + _maskw[i] = _mask(j); + _imagew[i] = _image(j); + _dpdThetaw[i] = _dpdTheta(j); + _uCondw[i] = _uCond(j); + _uMechw[i] = _uMech(j); + _uChemw[i] = _uChem(j); + _uCGw[i] = _uCG(j); + _uCGneww[i] = _uCGnew(j); + } + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d k_sendlist,DAT::tdual_int_1d k_copylist,ExecutionSpace space,int dim,X_FLOAT lo,X_FLOAT hi ) +{ + if(nsend > (int) (k_buf.view().dimension_0()*k_buf.view().dimension_1())/17) { + int newsize = nsend*17/k_buf.view().dimension_1()+1; + k_buf.resize(newsize,k_buf.view().dimension_1()); + } + if(space == Host) { + AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); + Kokkos::parallel_for(nsend,f); + LMPHostType::fence(); + return nsend*17; + } else { + AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); + Kokkos::parallel_for(nsend,f); + LMPDeviceType::fence(); + return nsend*17; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_exchange(int i, double *buf) +{ + int m = 1; + buf[m++] = h_x(i,0); + buf[m++] = h_x(i,1); + buf[m++] = h_x(i,2); + buf[m++] = h_v(i,0); + buf[m++] = h_v(i,1); + buf[m++] = h_v(i,2); + buf[m++] = ubuf(h_tag(i)).d; + buf[m++] = ubuf(h_type(i)).d; + buf[m++] = ubuf(h_mask(i)).d; + buf[m++] = ubuf(h_image(i)).d; + buf[m++] = h_dpdTheta[i]; + buf[m++] = h_uCond[i]; + buf[m++] = h_uMech[i]; + buf[m++] = h_uChem[i]; + buf[m++] = h_uCG[i]; + buf[m++] = h_uCGnew[i]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_UnpackExchangeFunctor { + typedef DeviceType device_type; + typedef ArrayTypes AT; + typename AT::t_x_array _x; + typename AT::t_v_array _v; + typename AT::t_tagint_1d _tag; + typename AT::t_int_1d _type; + typename AT::t_int_1d _mask; + typename AT::t_imageint_1d _image; + typename AT::t_efloat_1d _dpdTheta; + typename AT::t_efloat_1d _uCond; + typename AT::t_efloat_1d _uMech; + typename AT::t_efloat_1d _uChem; + typename AT::t_efloat_1d _uCG; + typename AT::t_efloat_1d _uCGnew; + + typename AT::t_xfloat_2d_um _buf; + typename AT::t_int_1d _nlocal; + int _dim; + X_FLOAT _lo,_hi; + + AtomVecDPDKokkos_UnpackExchangeFunctor( + const AtomKokkos* atom, + const typename AT::tdual_xfloat_2d buf, + typename AT::tdual_int_1d nlocal, + int dim, X_FLOAT lo, X_FLOAT hi): + _x(atom->k_x.view()), + _v(atom->k_v.view()), + _tag(atom->k_tag.view()), + _type(atom->k_type.view()), + _mask(atom->k_mask.view()), + _image(atom->k_image.view()), + _nlocal(nlocal.template view()),_dim(dim), + _lo(lo),_hi(hi){ + const size_t elements = 17; + const int maxsendlist = (buf.template view().dimension_0()*buf.template view().dimension_1())/elements; + + buffer_view(_buf,buf,maxsendlist,elements); + } + + KOKKOS_INLINE_FUNCTION + void operator() (const int &myrecv) const { + X_FLOAT x = _buf(myrecv,_dim+1); + if (x >= _lo && x < _hi) { + int i = Kokkos::atomic_fetch_add(&_nlocal(0),1); + _x(i,0) = _buf(myrecv,1); + _x(i,1) = _buf(myrecv,2); + _x(i,2) = _buf(myrecv,3); + _v(i,0) = _buf(myrecv,4); + _v(i,1) = _buf(myrecv,5); + _v(i,2) = _buf(myrecv,6); + _tag[i] = _buf(myrecv,7); + _type[i] = _buf(myrecv,8); + _mask[i] = _buf(myrecv,9); + _image[i] = _buf(myrecv,10); + _dpdTheta[i] = _buf(myrecv,11); + _uCond[i] = _buf(myrecv,12); + _uMech[i] = _buf(myrecv,13); + _uChem[i] = _buf(myrecv,14); + _uCG[i] = _buf(myrecv,15); + _uCGnew[i] = _buf(myrecv,16); + } + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nrecv,int nlocal,int dim,X_FLOAT lo,X_FLOAT hi,ExecutionSpace space) { + if(space == Host) { + k_count.h_view(0) = nlocal; + AtomVecDPDKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); + Kokkos::parallel_for(nrecv/17,f); + LMPHostType::fence(); + return k_count.h_view(0); + } else { + k_count.h_view(0) = nlocal; + k_count.modify(); + k_count.sync(); + AtomVecDPDKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); + Kokkos::parallel_for(nrecv/17,f); + LMPDeviceType::fence(); + k_count.modify(); + k_count.sync(); + + return k_count.h_view(0); + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_exchange(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK); + + int m = 1; + h_x(nlocal,0) = buf[m++]; + h_x(nlocal,1) = buf[m++]; + h_x(nlocal,2) = buf[m++]; + h_v(nlocal,0) = buf[m++]; + h_v(nlocal,1) = buf[m++]; + h_v(nlocal,2) = buf[m++]; + h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; + h_type(nlocal) = (int) ubuf(buf[m++]).i; + h_mask(nlocal) = (int) ubuf(buf[m++]).i; + h_image(nlocal) = (imageint) ubuf(buf[m++]).i; + h_dpdTheta[nlocal] = buf[m++]; + h_uCond[nlocal] = buf[m++]; + h_uMech[nlocal] = buf[m++]; + h_uChem[nlocal] = buf[m++]; + h_uCG[nlocal] = buf[m++]; + h_uCGnew[nlocal] = buf[m++]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> + unpack_exchange(nlocal,&buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::size_restart() +{ + int i; + + int nlocal = atom->nlocal; + int n = 15 * nlocal; // 11 + dpdTheta + uCond + uMech + uChem + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + + return n; +} + +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + molecular types may be negative, but write as positive +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_restart(int i, double *buf) +{ + sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK ); + + int m = 1; + buf[m++] = h_x(i,0); + buf[m++] = h_x(i,1); + buf[m++] = h_x(i,2); + buf[m++] = ubuf(h_tag(i)).d; + buf[m++] = ubuf(h_type(i)).d; + buf[m++] = ubuf(h_mask(i)).d; + buf[m++] = ubuf(h_image(i)).d; + buf[m++] = h_v(i,0); + buf[m++] = h_v(i,1); + buf[m++] = h_v(i,2); + buf[m++] = h_dpdTheta[i]; + buf[m++] = h_uCond[i]; + buf[m++] = h_uMech[i]; + buf[m++] = h_uChem[i]; + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_restart(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); + } + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK ); + + int m = 1; + h_x(nlocal,0) = buf[m++]; + h_x(nlocal,1) = buf[m++]; + h_x(nlocal,2) = buf[m++]; + h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; + h_type(nlocal) = (int) ubuf(buf[m++]).i; + h_mask(nlocal) = (int) ubuf(buf[m++]).i; + h_image(nlocal) = (imageint) ubuf(buf[m++]).i; + h_v(nlocal,0) = buf[m++]; + h_v(nlocal,1) = buf[m++]; + h_v(nlocal,2) = buf[m++]; + h_dpdTheta[nlocal] = buf[m++]; + h_uCond[nlocal] = buf[m++]; + h_uMech[nlocal] = buf[m++]; + h_uChem[nlocal] = buf[m++]; + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (ubuf(buf[m++]).i) - m; + for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + //if(nlocal>2) printf("typeA: %i %i\n",type[0],type[1]); + atomKK->modified(Host,ALL_MASK); + grow(0); + //if(nlocal>2) printf("typeB: %i %i\n",type[0],type[1]); + } + atomKK->modified(Host,ALL_MASK); + + tag[nlocal] = 0; + type[nlocal] = itype; + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + h_mask[nlocal] = 1; + h_image[nlocal] = ((tagint) IMGMAX << IMG2BITS) | + ((tagint) IMGMAX << IMGBITS) | IMGMAX; + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + h_rho[nlocal] = 0.0; + h_dpdTheta[nlocal] = 0.0; + h_uCond[nlocal] = 0.0; + h_uMech[nlocal] = 0.0; + h_uChem[nlocal] = 0.0; + h_uCG[nlocal] = 0.0; + h_uCGnew[nlocal] = 0.0; + h_duChem[nlocal] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::data_atom(double *coord, tagint imagetmp, + char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + h_tag[nlocal] = ATOTAGINT(values[0]); + h_type[nlocal] = atoi(values[1]); + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + h_dpdTheta[nlocal] = atof(values[2]); + if (h_dpdTheta[nlocal] <= 0) + error->one(FLERR,"Internal temperature in Atoms section of date file must be > zero"); + + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + + h_image[nlocal] = imagetmp; + + h_mask[nlocal] = 1; + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + + h_rho[nlocal] = 0.0; + h_uCond[nlocal] = 0.0; + h_uMech[nlocal] = 0.0; + h_uChem[nlocal] = 0.0; + h_uCG[nlocal] = 0.0; + h_uCGnew[nlocal] = 0.0; + + atomKK->modified(Host,ALL_MASK); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one line in Atoms section of data file + initialize other atom quantities for this sub-style +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::data_atom_hybrid(int nlocal, char **values) +{ + h_dpdTheta(nlocal) = atof(values[0]); + + return 1; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(h_tag(i)).d; + buf[i][1] = ubuf(h_type(i)).d; + buf[i][2] = h_dpdTheta(i); + buf[i][3] = h_x(i,0); + buf[i][4] = h_x(i,1); + buf[i][5] = h_x(i,2); + buf[i][6] = (h_image[i] & IMGMASK) - IMGMAX; + buf[i][7] = (h_image[i] >> IMGBITS & IMGMASK) - IMGMAX; + buf[i][8] = (h_image[i] >> IMG2BITS) - IMGMAX; + } +} + +/* ---------------------------------------------------------------------- + pack hybrid atom info for data file +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_data_hybrid(int i, double *buf) +{ + buf[0] = h_dpdTheta(i); + return 1; +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4],buf[i][5], + (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, + (int) ubuf(buf[i][8]).i); +} + +/* ---------------------------------------------------------------------- + write hybrid atom info to data file +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::write_data_hybrid(FILE *fp, double *buf) +{ + fprintf(fp," %-1.16e",buf[0]); + return 1; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecDPDKokkos::memory_usage() +{ + bigint bytes = 0; + + if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); + if (atom->memcheck("type")) bytes += memory->usage(type,nmax); + if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); + if (atom->memcheck("image")) bytes += memory->usage(image,nmax); + if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); + if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*commKK->nthreads,3); + if (atom->memcheck("rho")) bytes += memory->usage(rho,nmax); + if (atom->memcheck("dpdTheta")) bytes += memory->usage(dpdTheta,nmax); + if (atom->memcheck("uCond")) bytes += memory->usage(uCond,nmax); + if (atom->memcheck("uMech")) bytes += memory->usage(uMech,nmax); + if (atom->memcheck("uChem")) bytes += memory->usage(uChem,nmax); + if (atom->memcheck("uCG")) bytes += memory->usage(uCG,nmax); + if (atom->memcheck("uCGnew")) bytes += memory->usage(uCGnew,nmax); + if (atom->memcheck("duChem")) bytes += memory->usage(duChem,nmax); + + return bytes; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::sync(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if (mask & X_MASK) atomKK->k_x.sync(); + if (mask & V_MASK) atomKK->k_v.sync(); + if (mask & F_MASK) atomKK->k_f.sync(); + if (mask & TAG_MASK) atomKK->k_tag.sync(); + if (mask & TYPE_MASK) atomKK->k_type.sync(); + if (mask & MASK_MASK) atomKK->k_mask.sync(); + if (mask & IMAGE_MASK) atomKK->k_image.sync(); + } else { + if (mask & X_MASK) atomKK->k_x.sync(); + if (mask & V_MASK) atomKK->k_v.sync(); + if (mask & F_MASK) atomKK->k_f.sync(); + if (mask & TAG_MASK) atomKK->k_tag.sync(); + if (mask & TYPE_MASK) atomKK->k_type.sync(); + if (mask & MASK_MASK) atomKK->k_mask.sync(); + if (mask & IMAGE_MASK) atomKK->k_image.sync(); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::sync_overlapping_device(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if ((mask & X_MASK) && atomKK->k_x.need_sync()) + perform_async_copy(atomKK->k_x,space); + if ((mask & V_MASK) && atomKK->k_v.need_sync()) + perform_async_copy(atomKK->k_v,space); + if ((mask & F_MASK) && atomKK->k_f.need_sync()) + perform_async_copy(atomKK->k_f,space); + if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) + perform_async_copy(atomKK->k_tag,space); + if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) + perform_async_copy(atomKK->k_type,space); + if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) + perform_async_copy(atomKK->k_mask,space); + if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) + perform_async_copy(atomKK->k_image,space); + } else { + if ((mask & X_MASK) && atomKK->k_x.need_sync()) + perform_async_copy(atomKK->k_x,space); + if ((mask & V_MASK) && atomKK->k_v.need_sync()) + perform_async_copy(atomKK->k_v,space); + if ((mask & F_MASK) && atomKK->k_f.need_sync()) + perform_async_copy(atomKK->k_f,space); + if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) + perform_async_copy(atomKK->k_tag,space); + if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) + perform_async_copy(atomKK->k_type,space); + if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) + perform_async_copy(atomKK->k_mask,space); + if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) + perform_async_copy(atomKK->k_image,space); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::modified(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if (mask & X_MASK) atomKK->k_x.modify(); + if (mask & V_MASK) atomKK->k_v.modify(); + if (mask & F_MASK) atomKK->k_f.modify(); + if (mask & TAG_MASK) atomKK->k_tag.modify(); + if (mask & TYPE_MASK) atomKK->k_type.modify(); + if (mask & MASK_MASK) atomKK->k_mask.modify(); + if (mask & IMAGE_MASK) atomKK->k_image.modify(); + } else { + if (mask & X_MASK) atomKK->k_x.modify(); + if (mask & V_MASK) atomKK->k_v.modify(); + if (mask & F_MASK) atomKK->k_f.modify(); + if (mask & TAG_MASK) atomKK->k_tag.modify(); + if (mask & TYPE_MASK) atomKK->k_type.modify(); + if (mask & MASK_MASK) atomKK->k_mask.modify(); + if (mask & IMAGE_MASK) atomKK->k_image.modify(); + } +} + diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.h b/src/KOKKOS/atom_vec_dpd_kokkos.h new file mode 100644 index 0000000000..d108e58ae7 --- /dev/null +++ b/src/KOKKOS/atom_vec_dpd_kokkos.h @@ -0,0 +1,135 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale AtomicKokkos/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 ATOM_CLASS + +AtomStyle(dpd/kk,AtomVecDPDKokkos) + +#else + +#ifndef LMP_ATOM_VEC_DPD_KOKKOS_H +#define LMP_ATOM_VEC_DPD_KOKKOS_H + +#include "atom_vec_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +class AtomVecDPDKokkos : public AtomVecKokkos { + public: + AtomVecDPDKokkos(class LAMMPS *); + virtual ~AtomVecDPDKokkos() {} + void grow(int); + void copy(int, int, int); + int pack_comm(int, int *, double *, int, int *); + int pack_comm_vel(int, int *, double *, int, int *); + int pack_comm_hybrid(int, int *, double *); + void unpack_comm(int, int, double *); + void unpack_comm_vel(int, int, double *); + int unpack_comm_hybrid(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + int pack_border(int, int *, double *, int, int *); + int pack_border_vel(int, int *, double *, int, int *); + int pack_border_hybrid(int, int *, double *); + void unpack_border(int, int, double *); + void unpack_border_vel(int, int, double *); + int unpack_border_hybrid(int, int, double *); + int pack_exchange(int, double *); + int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, tagint, char **); + int data_atom_hybrid(int, char **); + void pack_data(double **); + int pack_data_hybrid(int, double *); + void write_data(FILE *, int, double **); + int write_data_hybrid(FILE *, double *); + bigint memory_usage(); + + void grow_reset(); + int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, const int pbc[]); + void unpack_comm_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf); + int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, + const int & iswap, const int nfirst, + const int &pbc_flag, const int pbc[]); + int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, + DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space); + void unpack_border_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf, + ExecutionSpace space); + int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space, int dim, + X_FLOAT lo, X_FLOAT hi); + int unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, + int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, + ExecutionSpace space); + + void sync(ExecutionSpace space, unsigned int mask); + void modified(ExecutionSpace space, unsigned int mask); + void sync_overlapping_device(ExecutionSpace space, unsigned int mask); + double *uCond,*uMech,*uChem,*uCG,*uCGnew,*rho,*dpdTheta; + double *duChem; + + protected: + DAT::t_efloat_1d d_uCond, d_uMech, d_uChem, d_uCG, d_uCGnew,d_rho,d_dpdTheta,d_duChem; + HAT::t_efloat_1d h_uCond, h_uMech, h_uChem, h_uCG, h_uCGnew,h_rho,h_dpdTheta,h_duChem; + + tagint *tag; + imageint *image; + int *type,*mask; + double **x,**v,**f; + + DAT::t_tagint_1d d_tag; + HAT::t_tagint_1d h_tag; + DAT::t_imageint_1d d_image; + HAT::t_imageint_1d h_image; + DAT::t_int_1d d_type, d_mask; + HAT::t_int_1d h_type, h_mask; + + DAT::t_x_array d_x; + DAT::t_v_array d_v; + DAT::t_f_array d_f; + HAT::t_x_array h_x; + HAT::t_v_array h_v; + HAT::t_f_array h_f; + + DAT::tdual_int_1d k_count; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + +*/ -- GitLab From 91e38720d5d69052cc92cd2344126b81d97c4aca Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 28 Nov 2016 14:25:02 -0700 Subject: [PATCH 004/337] Adding pair_exp6_rx_kokkos files --- src/KOKKOS/Install.sh | 2 + src/KOKKOS/atom_kokkos.cpp | 57 ++ src/KOKKOS/atom_kokkos.h | 4 + src/KOKKOS/pair_exp6_rx_kokkos.cpp | 1060 ++++++++++++++++++++++++++++ src/KOKKOS/pair_exp6_rx_kokkos.h | 204 ++++++ src/USER-DPD/pair_exp6_rx.cpp | 2 + src/atom.h | 4 +- 7 files changed, 1331 insertions(+), 2 deletions(-) create mode 100644 src/KOKKOS/pair_exp6_rx_kokkos.cpp create mode 100644 src/KOKKOS/pair_exp6_rx_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 93adf58ef5..14a8a951ee 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -134,6 +134,8 @@ action pair_eam_alloy_kokkos.cpp pair_eam_alloy.cpp action pair_eam_alloy_kokkos.h pair_eam_alloy.h action pair_eam_fs_kokkos.cpp pair_eam_fs.cpp action pair_eam_fs_kokkos.h pair_eam_fs.h +action pair_exp6_rx_kokkos.cpp pair_exp6_rx.cpp +action pair_exp6_rx_kokkos.h pair_exp6_rx.h action pair_kokkos.h action pair_lj_charmm_coul_charmm_implicit_kokkos.cpp pair_lj_charmm_coul_charmm_implicit.cpp action pair_lj_charmm_coul_charmm_implicit_kokkos.h pair_lj_charmm_coul_charmm_implicit.h diff --git a/src/KOKKOS/atom_kokkos.cpp b/src/KOKKOS/atom_kokkos.cpp index 577eff2364..4a7250e6ab 100644 --- a/src/KOKKOS/atom_kokkos.cpp +++ b/src/KOKKOS/atom_kokkos.cpp @@ -227,6 +227,63 @@ void AtomKokkos::grow(unsigned int mask){ } } +/* ---------------------------------------------------------------------- + add a custom variable with name of type flag = 0/1 for int/double + assumes name does not already exist + return index in ivector or dvector of its location +------------------------------------------------------------------------- */ + +int AtomKokkos::add_custom(const char *name, int flag) +{ + int index; + + if (flag == 0) { + index = nivector; + nivector++; + iname = (char **) memory->srealloc(iname,nivector*sizeof(char *), + "atom:iname"); + int n = strlen(name) + 1; + iname[index] = new char[n]; + strcpy(iname[index],name); + ivector = (int **) memory->srealloc(ivector,nivector*sizeof(int *), + "atom:ivector"); + memory->create(ivector[index],nmax,"atom:ivector"); + } else { + index = ndvector; + ndvector++; + dname = (char **) memory->srealloc(dname,ndvector*sizeof(char *), + "atom:dname"); + int n = strlen(name) + 1; + dname[index] = new char[n]; + strcpy(dname[index],name); + memory->grow_kokkos(k_dvector,dvector,ndvector,nmax, + "atom:dvector"); + } + + return index; +} + +/* ---------------------------------------------------------------------- + remove a custom variable of type flag = 0/1 for int/double at index + free memory for vector and name and set ptrs to NULL + ivector/dvector and iname/dname lists never shrink +------------------------------------------------------------------------- */ + +void AtomKokkos::remove_custom(int flag, int index) +{ + if (flag == 0) { + memory->destroy(ivector[index]); + ivector[index] = NULL; + delete [] iname[index]; + iname[index] = NULL; + } else { + //memory->destroy_kokkos(dvector); + dvector[index] = NULL; + delete [] dname[index]; + dname[index] = NULL; + } +} + /* ---------------------------------------------------------------------- */ void AtomKokkos::deallocate_topology() diff --git a/src/KOKKOS/atom_kokkos.h b/src/KOKKOS/atom_kokkos.h index f31c26e01f..cf454bcd0c 100644 --- a/src/KOKKOS/atom_kokkos.h +++ b/src/KOKKOS/atom_kokkos.h @@ -51,6 +51,8 @@ class AtomKokkos : public Atom { DAT::tdual_int_2d k_improper_type; DAT::tdual_tagint_2d k_improper_atom1, k_improper_atom2, k_improper_atom3, k_improper_atom4; + DAT::tdual_float_2d k_dvector; + // USER-DPD package DAT::tdual_efloat_1d k_uCond, k_uMech, k_uChem, k_uCG, k_uCGnew, @@ -66,6 +68,8 @@ class AtomKokkos : public Atom { void sync_overlapping_device(const ExecutionSpace space, unsigned int mask); virtual void sort(); virtual void grow(unsigned int mask); + int add_custom(const char *, int); + void remove_custom(int, int); virtual void deallocate_topology(); void sync_modify(ExecutionSpace, unsigned int, unsigned int); private: diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp new file mode 100644 index 0000000000..aa37c8375d --- /dev/null +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -0,0 +1,1060 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_exp6_rx_kokkos.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neigh_list.h" +#include "math_const.h" +#include "math_special.h" +#include "memory.h" +#include "error.h" +#include "modify.h" +#include "fix.h" +#include + +using namespace LAMMPS_NS; +using namespace MathConst; +using namespace MathSpecial; + +#define MAXLINE 1024 +#define DELTA 4 + +#define oneFluidApproxParameter (-1) +#define isOneFluidApprox(_site) ( (_site) == oneFluidApproxParameter ) + +#define exp6PotentialType (1) +#define isExp6PotentialType(_type) ( (_type) == exp6PotentialType ) + +/* ---------------------------------------------------------------------- */ + +template +PairExp6rxKokkos::PairExp6rxKokkos(LAMMPS *lmp) : PairExp6rx(lmp) +{ + +} + +/* ---------------------------------------------------------------------- */ + +template +PairExp6rxKokkos::~PairExp6rxKokkos() +{ + +} + +/* ---------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) +{ + eflag = eflag_in; + vflag = vflag_in; + + if (neighflag == FULL) no_virial_fdotr_compute = 1; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + // reallocate per-atom arrays if necessary + + if (eflag_atom) { + memory->destroy_kokkos(k_eatom,eatom); + memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.d_view; + } + if (vflag_atom) { + memory->destroy_kokkos(k_vatom,vatom); + memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); + d_vatom = k_vatom.d_view; + } + + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + type = atomKK->k_type.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + dvector = atomKK->k_dvector.view(); + nlocal = atom->nlocal; + special_lj[0] = force->special_lj[0]; + special_lj[1] = force->special_lj[1]; + special_lj[2] = force->special_lj[2]; + special_lj[3] = force->special_lj[3]; + special_coul[0] = force->special_coul[0]; + special_coul[1] = force->special_coul[1]; + special_coul[2] = force->special_coul[2]; + special_coul[3] = force->special_coul[3]; + newton_pair = force->newton_pair; + + copymode = 1; + + // Initialize the Exp6 parameter data for both the local + // and ghost atoms. Make the parameter data persistent + // and exchange like any other atom property later. + + { + const int np_total = nlocal + atom->nghost; + + PairExp6ParamData.epsilon1 = typename AT::t_float_1d("PairExp6ParamData.epsilon1" ,np_total); + PairExp6ParamData.alpha1 = typename AT::t_float_1d("PairExp6ParamData.alpha1" ,np_total); + PairExp6ParamData.rm1 = typename AT::t_float_1d("PairExp6ParamData.rm1" ,np_total); + PairExp6ParamData.fraction1 = typename AT::t_float_1d("PairExp6ParamData.fraction1" ,np_total); + PairExp6ParamData.epsilon2 = typename AT::t_float_1d("PairExp6ParamData.epsilon2" ,np_total); + PairExp6ParamData.alpha2 = typename AT::t_float_1d("PairExp6ParamData.alpha2" ,np_total); + PairExp6ParamData.rm2 = typename AT::t_float_1d("PairExp6ParamData.rm2" ,np_total); + PairExp6ParamData.fraction2 = typename AT::t_float_1d("PairExp6ParamData.fraction2" ,np_total); + PairExp6ParamData.epsilonOld1 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld1" ,np_total); + PairExp6ParamData.alphaOld1 = typename AT::t_float_1d("PairExp6ParamData.alphaOld1" ,np_total); + PairExp6ParamData.rmOld1 = typename AT::t_float_1d("PairExp6ParamData.rmOld1" ,np_total); + PairExp6ParamData.fractionOld1 = typename AT::t_float_1d("PairExp6ParamData.fractionOld1",np_total); + PairExp6ParamData.epsilonOld2 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld2" ,np_total); + PairExp6ParamData.alphaOld2 = typename AT::t_float_1d("PairExp6ParamData.alphaOld2" ,np_total); + PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); + PairExp6ParamData.fractionOld2 = typename AT::t_float_1d("PairExp6ParamData.fractionOld2",np_total); + + Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); + } + + int inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + // loop over neighbors of my atoms + + EV_FLOAT ev; + + if (evflag) { + Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + } else { + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + + if (eflag_global) eng_vdwl += ev.evdwl; + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } + + copymode = 0; +} + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxgetParamsEXP6, const int &i) const { + getParamsEXP6 (i, PairExp6ParamData.epsilon1[i], + PairExp6ParamData.alpha1[i], + PairExp6ParamData.rm1[i], + PairExp6ParamData.fraction1[i], + PairExp6ParamData.epsilon2[i], + PairExp6ParamData.alpha2[i], + PairExp6ParamData.rm2[i], + PairExp6ParamData.fraction2[i], + PairExp6ParamData.epsilonOld1[i], + PairExp6ParamData.alphaOld1[i], + PairExp6ParamData.rmOld1[i], + PairExp6ParamData.fractionOld1[i], + PairExp6ParamData.epsilonOld2[i], + PairExp6ParamData.alphaOld2[i], + PairExp6ParamData.rmOld2[i], + PairExp6ParamData.fractionOld2[i]); +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxCompute, const int &ii, EV_FLOAT& ev) const { + int i,j,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; + double rsq,r2inv,r6inv,forceExp6,factor_lj; + double rCut,rCutInv,rCut2inv,rCut6inv,rCutExp,urc,durc; + double rm2ij,rm6ij; + double r,rexp; + + double alphaOld12_ij, rmOld12_ij, epsilonOld12_ij; + double alphaOld21_ij, rmOld21_ij, epsilonOld21_ij; + double alpha12_ij, rm12_ij, epsilon12_ij; + double alpha21_ij, rm21_ij, epsilon21_ij; + double rminv, buck1, buck2; + double epsilonOld1_i,alphaOld1_i,rmOld1_i; + double epsilonOld1_j,alphaOld1_j,rmOld1_j; + double epsilonOld2_i,alphaOld2_i,rmOld2_i; + double epsilonOld2_j,alphaOld2_j,rmOld2_j; + double epsilon1_i,alpha1_i,rm1_i; + double epsilon1_j,alpha1_j,rm1_j; + double epsilon2_i,alpha2_i,rm2_i; + double epsilon2_j,alpha2_j,rm2_j; + double evdwlOldEXP6_12, evdwlOldEXP6_21, fpairOldEXP6_12, fpairOldEXP6_21; + double evdwlEXP6_12, evdwlEXP6_21; + double fractionOld1_i, fractionOld1_j; + double fractionOld2_i, fractionOld2_j; + double fraction1_i, fraction1_j; + double fraction2_i, fraction2_j; + + const int nRep = 12; + const double shift = 1.05; + double rin1, aRep, uin1, win1, uin1rep, rin1exp, rin6, rin6inv; + + evdwlOld = 0.0; + evdwl = 0.0; + + i = d_ilist[ii]; + xtmp = x(i,0); + ytmp = x(i,1); + ztmp = x(i,2); + itype = type[i]; + jnum = d_numneigh[i]; + + { + epsilon1_i = PairExp6ParamData.epsilon1[i]; + alpha1_i = PairExp6ParamData.alpha1[i]; + rm1_i = PairExp6ParamData.rm1[i]; + fraction1_i = PairExp6ParamData.fraction1[i]; + epsilon2_i = PairExp6ParamData.epsilon2[i]; + alpha2_i = PairExp6ParamData.alpha2[i]; + rm2_i = PairExp6ParamData.rm2[i]; + fraction2_i = PairExp6ParamData.fraction2[i]; + epsilonOld1_i = PairExp6ParamData.epsilonOld1[i]; + alphaOld1_i = PairExp6ParamData.alphaOld1[i]; + rmOld1_i = PairExp6ParamData.rmOld1[i]; + fractionOld1_i = PairExp6ParamData.fractionOld1[i]; + epsilonOld2_i = PairExp6ParamData.epsilonOld2[i]; + alphaOld2_i = PairExp6ParamData.alphaOld2[i]; + rmOld2_i = PairExp6ParamData.rmOld2[i]; + fractionOld2_i = PairExp6ParamData.fractionOld2[i]; + } + + for (jj = 0; jj < jnum; jj++) { + int j = d_neighbors(i,jj); + factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x(j,0); + dely = ytmp - x(j,1); + delz = ztmp - x(j,2); + + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + + r = sqrt(rsq); + rCut2inv = 1.0/cutsq[itype][jtype]; + rCut6inv = rCut2inv*rCut2inv*rCut2inv; + rCut = sqrt(cutsq[itype][jtype]); + rCutInv = 1.0/rCut; + + // + // A. Compute the exp-6 potential + // + + // A1. Get alpha, epsilon and rm for particle j + + { + epsilon1_j = PairExp6ParamData.epsilon1[j]; + alpha1_j = PairExp6ParamData.alpha1[j]; + rm1_j = PairExp6ParamData.rm1[j]; + fraction1_j = PairExp6ParamData.fraction1[j]; + epsilon2_j = PairExp6ParamData.epsilon2[j]; + alpha2_j = PairExp6ParamData.alpha2[j]; + rm2_j = PairExp6ParamData.rm2[j]; + fraction2_j = PairExp6ParamData.fraction2[j]; + epsilonOld1_j = PairExp6ParamData.epsilonOld1[j]; + alphaOld1_j = PairExp6ParamData.alphaOld1[j]; + rmOld1_j = PairExp6ParamData.rmOld1[j]; + fractionOld1_j = PairExp6ParamData.fractionOld1[j]; + epsilonOld2_j = PairExp6ParamData.epsilonOld2[j]; + alphaOld2_j = PairExp6ParamData.alphaOld2[j]; + rmOld2_j = PairExp6ParamData.rmOld2[j]; + fractionOld2_j = PairExp6ParamData.fractionOld2[j]; + } + + // A2. Apply Lorentz-Berthelot mixing rules for the i-j pair + alphaOld12_ij = sqrt(alphaOld1_i*alphaOld2_j); + rmOld12_ij = 0.5*(rmOld1_i + rmOld2_j); + epsilonOld12_ij = sqrt(epsilonOld1_i*epsilonOld2_j); + alphaOld21_ij = sqrt(alphaOld2_i*alphaOld1_j); + rmOld21_ij = 0.5*(rmOld2_i + rmOld1_j); + epsilonOld21_ij = sqrt(epsilonOld2_i*epsilonOld1_j); + + alpha12_ij = sqrt(alpha1_i*alpha2_j); + rm12_ij = 0.5*(rm1_i + rm2_j); + epsilon12_ij = sqrt(epsilon1_i*epsilon2_j); + alpha21_ij = sqrt(alpha2_i*alpha1_j); + rm21_ij = 0.5*(rm2_i + rm1_j); + epsilon21_ij = sqrt(epsilon2_i*epsilon1_j); + + if(rmOld12_ij!=0.0 && rmOld21_ij!=0.0){ + if(alphaOld21_ij == 6.0 || alphaOld12_ij == 6.0) + error->all(FLERR,"alpha_ij is 6.0 in pair exp6"); + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld12_ij; + buck1 = epsilonOld12_ij / (alphaOld12_ij - 6.0); + rexp = expValue(alphaOld12_ij*(1.0-r*rminv)); + rm2ij = rmOld12_ij*rmOld12_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld12_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld12_ij; + urc = buck1*(6.0*rCutExp - alphaOld12_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld12_ij*func_rin(alphaOld12_ij); + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alphaOld12_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alphaOld12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = -buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) - rin1*durc; + + aRep = -1.0*win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + forceExp6 = -double(nRep)*aRep/powint(r,nRep); + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = buck1*(6.0*rexp - alphaOld12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld21_ij; + buck1 = epsilonOld21_ij / (alphaOld21_ij - 6.0); + buck2 = 6.0*alphaOld21_ij; + rexp = expValue(alphaOld21_ij*(1.0-r*rminv)); + rm2ij = rmOld21_ij*rmOld21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld21_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld21_ij; + urc = buck1*(6.0*rCutExp - alphaOld21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld21_ij*func_rin(alphaOld21_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alphaOld21_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alphaOld21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = -buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) - rin1*durc; + + aRep = -1.0*win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + forceExp6 = -double(nRep)*aRep/powint(r,nRep); + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = buck1*(6.0*rexp - alphaOld21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + if (isite1 == isite2) + evdwlOld = sqrt(fractionOld1_i*fractionOld2_j)*evdwlOldEXP6_12; + else + evdwlOld = sqrt(fractionOld1_i*fractionOld2_j)*evdwlOldEXP6_12 + sqrt(fractionOld2_i*fractionOld1_j)*evdwlOldEXP6_21; + + evdwlOld *= factor_lj; + + uCG[i] += 0.5*evdwlOld; + if (newton_pair || j < nlocal) + uCG[j] += 0.5*evdwlOld; + } + + if(rm12_ij!=0.0 && rm21_ij!=0.0){ + if(alpha21_ij == 6.0 || alpha12_ij == 6.0) + error->all(FLERR,"alpha_ij is 6.0 in pair exp6"); + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rm12_ij; + buck1 = epsilon12_ij / (alpha12_ij - 6.0); + buck2 = 6.0*alpha12_ij; + rexp = expValue(alpha12_ij*(1.0-r*rminv)); + rm2ij = rm12_ij*rm12_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha12_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha12_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm12_ij*func_rin(alpha12_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alpha12_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alpha12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = -buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) - rin1*durc; + + aRep = -1.0*win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + evdwlEXP6_12 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + evdwlEXP6_12 = buck1*(6.0*rexp - alpha12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + rminv = 1.0/rm21_ij; + buck1 = epsilon21_ij / (alpha21_ij - 6.0); + buck2 = 6.0*alpha21_ij; + rexp = expValue(alpha21_ij*(1.0-r*rminv)); + rm2ij = rm21_ij*rm21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha21_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm21_ij*func_rin(alpha21_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alpha21_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alpha21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = -buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) - rin1*durc; + + aRep = -1.0*win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + evdwlEXP6_21 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + evdwlEXP6_21 = buck1*(6.0*rexp - alpha21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + // + // Apply Mixing Rule to get the overall force for the CG pair + // + if (isite1 == isite2) fpair = sqrt(fractionOld1_i*fractionOld2_j)*fpairOldEXP6_12; + else fpair = sqrt(fractionOld1_i*fractionOld2_j)*fpairOldEXP6_12 + sqrt(fractionOld2_i*fractionOld1_j)*fpairOldEXP6_21; + + f(i,0) += delx*fpair; + f(i,1) += dely*fpair; + f(i,2) += delz*fpair; + if (newton_pair || j < nlocal) { + f(j,0) -= delx*fpair; + f(j,1) -= dely*fpair; + f(j,2) -= delz*fpair; + } + + if (isite1 == isite2) evdwl = sqrt(fraction1_i*fraction2_j)*evdwlEXP6_12; + else evdwl = sqrt(fraction1_i*fraction2_j)*evdwlEXP6_12 + sqrt(fraction2_i*fraction1_j)*evdwlEXP6_21; + evdwl *= factor_lj; + + uCGnew[i] += 0.5*evdwl; + if (newton_pair || j < nlocal) + uCGnew[j] += 0.5*evdwl; + evdwl = evdwlOld; + //if (vflag_either || eflag_atom) + if (EVFLAG) this->template ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + } + } + } +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxCompute, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairExp6rxCompute(), ii, ev); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::allocate() +{ + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); + d_cutsq = k_cutsq.template view(); + + memory->create(cut,n+1,n+1,"pair:cut_lj"); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::read_file(char *file) +{ + int params_per_line = 5; + char **words = new char*[params_per_line+1]; + + memory->sfree(params); + params = NULL; + nparams = maxparam = 0; + + // open file on proc 0 + + FILE *fp; + fp = NULL; + if (comm->me == 0) { + fp = force->open_potential(file); + if (fp == NULL) { + char str[128]; + sprintf(str,"Cannot open exp6/rx potential file %s",file); + error->one(FLERR,str); + } + } + + // read each set of params from potential file + // one set of params can span multiple lines + + int n,nwords,ispecies; + char line[MAXLINE],*ptr; + int eof = 0; + + while (1) { + if (comm->me == 0) { + ptr = fgets(line,MAXLINE,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + + // strip comment, skip line if blank + + if ((ptr = strchr(line,'#'))) *ptr = '\0'; + nwords = atom->count_words(line); + if (nwords == 0) continue; + + // concatenate additional lines until have params_per_line words + + while (nwords < params_per_line) { + n = strlen(line); + if (comm->me == 0) { + ptr = fgets(&line[n],MAXLINE-n,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + if ((ptr = strchr(line,'#'))) *ptr = '\0'; + nwords = atom->count_words(line); + } + + if (nwords != params_per_line) + error->all(FLERR,"Incorrect format in exp6/rx potential file"); + + // words = ptrs to all words in line + + nwords = 0; + words[nwords++] = strtok(line," \t\n\r\f"); + while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; + + for (ispecies = 0; ispecies < nspecies; ispecies++) + if (strcmp(words[0],&atom->dname[ispecies][0]) == 0) break; + if (ispecies == nspecies) continue; + + // load up parameter settings and error check their values + + if (nparams == maxparam) { + maxparam += DELTA; + memory->grow_kokkos(k_params,params,maxparam, + "pair:params"); + } + + params[nparams].ispecies = ispecies; + + n = strlen(&atom->dname[ispecies][0]) + 1; + params[nparams].name = new char[n]; + strcpy(params[nparams].name,&atom->dname[ispecies][0]); + + n = strlen(words[1]) + 1; + params[nparams].potential = new char[n]; + strcpy(params[nparams].potential,words[1]); + if (strcmp(params[nparams].potential,"exp6") == 0){ + params[nparams].alpha = atof(words[2]); + params[nparams].epsilon = atof(words[3]); + params[nparams].rm = atof(words[4]); + if (params[nparams].epsilon <= 0.0 || params[nparams].rm <= 0.0 || + params[nparams].alpha < 0.0) + error->all(FLERR,"Illegal exp6/rx parameters. Rm and Epsilon must be greater than zero. Alpha cannot be negative."); + } else { + error->all(FLERR,"Illegal exp6/rx parameters. Interaction potential does not exist."); + } + nparams++; + } + + delete [] words; + + k_params.template modify(); + k_params.template sync(); + d_params = k_params.template view(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::setup() +{ + int i,j,n; + + // set mol2param for all combinations + // must be a single exact match to lines read from file + + memory->destroy_kokkos(k_mol2param,mol2param); + memory->create_kokkos(k_mol2param,mol2param,nspecies,"pair:mol2param"); + + for (i = 0; i < nspecies; i++) { + n = -1; + for (j = 0; j < nparams; j++) { + if (i == params[j].ispecies) { + if (n >= 0) error->all(FLERR,"Potential file has duplicate entry"); + n = j; + } + } + mol2param[i] = n; + } + + k_mol2param.template modify(); + k_mol2param.template sync(); + d_mol2param = k_mol2param.template view(); + + neighflag = lmp->kokkos->neighflag; +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm1, double &fraction1,double &epsilon2,double &alpha2,double &rm2,double &fraction2,double &epsilon1_old,double &alpha1_old,double &rm1_old, double &fraction1_old,double &epsilon2_old,double &alpha2_old,double &rm2_old,double &fraction2_old) const +{ + int iparam, jparam; + double rmi, rmj, rmij, rm3ij; + double epsiloni, epsilonj, epsilonij; + double alphai, alphaj, alphaij; + double epsilon_old, rm3_old, alpha_old; + double epsilon, rm3, alpha; + double fractionOFA, fractionOFA_old; + double nTotalOFA, nTotalOFA_old; + double nTotal, nTotal_old; + double xMolei, xMolej, xMolei_old, xMolej_old; + + rm3 = 0.0; + epsilon = 0.0; + alpha = 0.0; + epsilon_old = 0.0; + rm3_old = 0.0; + alpha_old = 0.0; + fractionOFA = 0.0; + fractionOFA_old = 0.0; + nTotalOFA = 0.0; + nTotalOFA_old = 0.0; + nTotal = 0.0; + nTotal_old = 0.0; + + // Compute the total number of molecules in the old and new CG particle as well as the total number of molecules in the fluid portion of the old and new CG particle + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + nTotal += dvector(ispecies,id); + nTotal_old += dvector(ispecies+nspecies,id); + + iparam = mol2param[ispecies]; + + if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; + if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { + if (isite1 == d_params[iparam].ispecies || isite2 == d_params[iparam].ispecies) continue; + nTotalOFA_old += dvector(ispecies+nspecies,id); + nTotalOFA += dvector(ispecies,id); + } + } + if(nTotal < 1e-8 || nTotal_old < 1e-8) + error->all(FLERR,"The number of molecules in CG particle is less than 1e-8."); + + // Compute the mole fraction of molecules within the fluid portion of the particle (One Fluid Approximation) + fractionOFA_old = nTotalOFA_old / nTotal_old; + fractionOFA = nTotalOFA / nTotal; + + for (int ispecies = 0; ispecies < nspecies; ispecies++) { + iparam = mol2param[ispecies]; + if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; + + // If Site1 matches a pure species, then grab the parameters + if (isite1 == d_params[iparam].ispecies){ + rm1_old = d_params[iparam].rm; + rm1 = d_params[iparam].rm; + epsilon1_old = d_params[iparam].epsilon; + epsilon1 = d_params[iparam].epsilon; + alpha1_old = d_params[iparam].alpha; + alpha1 = d_params[iparam].alpha; + + // Compute the mole fraction of Site1 + fraction1_old = dvector(ispecies+nspecies,id)/nTotal_old; + fraction1 = dvector(ispecies,id)/nTotal; + } + + // If Site2 matches a pure species, then grab the parameters + if (isite2 == d_params[iparam].ispecies){ + rm2_old = d_params[iparam].rm; + rm2 = d_params[iparam].rm; + epsilon2_old = d_params[iparam].epsilon; + epsilon2 = d_params[iparam].epsilon; + alpha2_old = d_params[iparam].alpha; + alpha2 = d_params[iparam].alpha; + + // Compute the mole fraction of Site2 + fraction2_old = dvector(ispecies+nspecies,id)/nTotal_old; + fraction2 = dvector(ispecies,id)/nTotal; + } + + // If Site1 or Site2 matches is a fluid, then compute the paramters + if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { + if (isite1 == d_params[iparam].ispecies || isite2 == d_params[iparam].ispecies) continue; + rmi = d_params[iparam].rm; + epsiloni = d_params[iparam].epsilon; + alphai = d_params[iparam].alpha; + xMolei = dvector(ispecies,id)/nTotalOFA; + xMolei_old = dvector(ispecies+nspecies,id)/nTotalOFA_old; + + for (int jspecies = 0; jspecies < nspecies; jspecies++) { + jparam = mol2param[jspecies]; + if (jparam < 0 || d_params[jparam].potentialType != exp6PotentialType ) continue; + if (isite1 == d_params[jparam].ispecies || isite2 == d_params[jparam].ispecies) continue; + rmj = d_params[jparam].rm; + epsilonj = d_params[jparam].epsilon; + alphaj = d_params[jparam].alpha; + xMolej = dvector(jspecies,id)/nTotalOFA; + xMolej_old = dvector(jspecies+nspecies,id)/nTotalOFA_old; + + rmij = (rmi+rmj)/2.0; + rm3ij = rmij*rmij*rmij; + epsilonij = sqrt(epsiloni*epsilonj); + alphaij = sqrt(alphai*alphaj); + + if(fractionOFA_old > 0.0){ + rm3_old += xMolei_old*xMolej_old*rm3ij; + epsilon_old += xMolei_old*xMolej_old*rm3ij*epsilonij; + alpha_old += xMolei_old*xMolej_old*rm3ij*epsilonij*alphaij; + } + if(fractionOFA > 0.0){ + rm3 += xMolei*xMolej*rm3ij; + epsilon += xMolei*xMolej*rm3ij*epsilonij; + alpha += xMolei*xMolej*rm3ij*epsilonij*alphaij; + } + } + } + } + + if (isOneFluidApprox(isite1)){ + rm1 = cbrt(rm3); + if(rm1 < 1e-16) { + rm1 = 0.0; + epsilon1 = 0.0; + alpha1 = 0.0; + } else { + epsilon1 = epsilon / rm3; + alpha1 = alpha / epsilon1 / rm3; + } + + fraction1 = fractionOFA; + + rm1_old = cbrt(rm3_old); + if(rm1_old < 1e-16) { + rm1_old = 0.0; + epsilon1_old = 0.0; + alpha1_old = 0.0; + } else { + epsilon1_old = epsilon_old / rm3_old; + alpha1_old = alpha_old / epsilon1_old / rm3_old; + } + fraction1_old = fractionOFA_old; + + // Fuchslin-Like Exp-6 Scaling + double powfuch = 0.0; + if(fuchslinEpsilon < 0.0){ + powfuch = pow(nTotalOFA,-fuchslinEpsilon); + if(powfuch<1e-15) epsilon1 = 0.0; + else epsilon1 *= 1.0/powfuch; + + powfuch = pow(nTotalOFA_old,-fuchslinEpsilon); + if(powfuch<1e-15) epsilon1_old = 0.0; + else epsilon1_old *= 1.0/powfuch; + + } else { + epsilon1 *= pow(nTotalOFA,fuchslinEpsilon); + epsilon1_old *= pow(nTotalOFA_old,fuchslinEpsilon); + } + + if(fuchslinR < 0.0){ + powfuch = pow(nTotalOFA,-fuchslinR); + if(powfuch<1e-15) rm1 = 0.0; + else rm1 *= 1.0/powfuch; + + powfuch = pow(nTotalOFA_old,-fuchslinR); + if(powfuch<1e-15) rm1_old = 0.0; + else rm1_old *= 1.0/powfuch; + + } else { + rm1 *= pow(nTotalOFA,fuchslinR); + rm1_old *= pow(nTotalOFA_old,fuchslinR); + } + } + + if (isOneFluidApprox(isite2)){ + rm2 = cbrt(rm3); + if(rm2 < 1e-16) { + rm2 = 0.0; + epsilon2 = 0.0; + alpha2 = 0.0; + } else { + epsilon2 = epsilon / rm3; + alpha2 = alpha / epsilon2 / rm3; + } + fraction2 = fractionOFA; + + rm2_old = cbrt(rm3_old); + if(rm2_old < 1e-16) { + rm2_old = 0.0; + epsilon2_old = 0.0; + alpha2_old = 0.0; + } else { + epsilon2_old = epsilon_old / rm3_old; + alpha2_old = alpha_old / epsilon2_old / rm3_old; + } + fraction2_old = fractionOFA_old; + + // Fuchslin-Like Exp-6 Scaling + double powfuch = 0.0; + if(fuchslinEpsilon < 0.0){ + powfuch = pow(nTotalOFA,-fuchslinEpsilon); + if(powfuch<1e-15) epsilon2 = 0.0; + else epsilon2 *= 1.0/powfuch; + + powfuch = pow(nTotalOFA_old,-fuchslinEpsilon); + if(powfuch<1e-15) epsilon2_old = 0.0; + else epsilon2_old *= 1.0/powfuch; + + } else { + epsilon2 *= pow(nTotalOFA,fuchslinEpsilon); + epsilon2_old *= pow(nTotalOFA_old,fuchslinEpsilon); + } + + if(fuchslinR < 0.0){ + powfuch = pow(nTotalOFA,-fuchslinR); + if(powfuch<1e-15) rm2 = 0.0; + else rm2 *= 1.0/powfuch; + + powfuch = pow(nTotalOFA_old,-fuchslinR); + if(powfuch<1e-15) rm2_old = 0.0; + else rm2_old *= 1.0/powfuch; + + } else { + rm2 *= pow(nTotalOFA,fuchslinR); + rm2_old *= pow(nTotalOFA_old,fuchslinR); + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double PairExp6rxKokkos::func_rin(const double &alpha) const +{ + double function; + + const double a = 3.7682065; + const double b = -1.4308614; + + function = a+b*sqrt(alpha); + function = expValue(function); + + return function; +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double PairExp6rxKokkos::expValue(double value) const +{ + double returnValue; + if(value < DBL_MIN_EXP) returnValue = 0.0; + else returnValue = exp(value); + + return returnValue; +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const +{ + const int EFLAG = eflag; + const int VFLAG = vflag_either; + + // The eatom and vatom arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > v_eatom = k_eatom.view(); + Kokkos::View::value> > v_vatom = k_vatom.view(); + + if (EFLAG) { + if (eflag_atom) { + const E_FLOAT epairhalf = 0.5 * epair; + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) v_eatom[i] += epairhalf; + if (NEWTON_PAIR || j < nlocal) v_eatom[j] += epairhalf; + } else { + v_eatom[i] += epairhalf; + } + } + } + + if (VFLAG) { + const E_FLOAT v0 = delx*delx*fpair; + const E_FLOAT v1 = dely*dely*fpair; + const E_FLOAT v2 = delz*delz*fpair; + const E_FLOAT v3 = delx*dely*fpair; + const E_FLOAT v4 = delx*delz*fpair; + const E_FLOAT v5 = dely*delz*fpair; + + if (vflag_global) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + + if (vflag_atom) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + v_vatom(j,0) += 0.5*v0; + v_vatom(j,1) += 0.5*v1; + v_vatom(j,2) += 0.5*v2; + v_vatom(j,3) += 0.5*v3; + v_vatom(j,4) += 0.5*v4; + v_vatom(j,5) += 0.5*v5; + } + } else { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +int PairExp6rxKokkos::sbmask(const int& j) const { + return j >> SBBITS & 3; +} + +namespace LAMMPS_NS { +template class PairExp6rxKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class PairExp6rxKokkos; +#endif +} \ No newline at end of file diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h new file mode 100644 index 0000000000..4ff055123c --- /dev/null +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -0,0 +1,204 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(exp6/rx/kk,PairExp6rxKokkos) +PairStyle(exp6/rx/kk/device,PairExp6rxKokkos) +PairStyle(exp6/rx/kk/host,PairExp6rxKokkos) + +#else + +#ifndef LMP_PAIR_EXP6_RX_KOKKOS_H +#define LMP_PAIR_EXP6_RX_KOKKOS_H + +#include "pair_exp6_rx.h" +#include "kokkos_type.h" +#include "pair_kokkos.h" + +namespace LAMMPS_NS { + +// Create a structure to hold the parameter data for all +// local and neighbor particles. Pack inside this struct +// to avoid any name clashes. + +template +struct PairExp6ParamDataTypeKokkos +{ + typedef ArrayTypes AT; + + int n; + typename AT::t_float_1d epsilon1, alpha1, rm1, fraction1, + epsilon2, alpha2, rm2, fraction2, + epsilonOld1, alphaOld1, rmOld1, fractionOld1, + epsilonOld2, alphaOld2, rmOld2, fractionOld2; + + // Default constructor -- nullify everything. + PairExp6ParamDataTypeKokkos(void) + : n(0) + {} +}; + +struct TagPairExp6rxgetParamsEXP6{}; + +template +struct TagPairExp6rxCompute{}; + +template +class PairExp6rxKokkos : public PairExp6rx { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef EV_FLOAT value_type; + + PairExp6rxKokkos(class LAMMPS *); + virtual ~PairExp6rxKokkos(); + virtual void compute(int, int); + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxCompute, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxCompute, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxgetParamsEXP6, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const; + + KOKKOS_INLINE_FUNCTION + int sbmask(const int& j) const; + + protected: + int eflag,vflag; + int nlocal,newton_pair,neighflag; + double special_coul[4]; + double special_lj[4]; + + typename AT::t_x_array_randomread x; + typename AT::t_f_array f; + typename AT::t_int_1d_randomread type; + typename AT::t_efloat_1d uCG, uCGnew; + typename AT::t_float_2d dvector; + + DAT::tdual_efloat_1d k_eatom; + DAT::tdual_virial_array k_vatom; + DAT::t_efloat_1d d_eatom; + DAT::t_virial_array d_vatom; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist; + typename AT::t_int_1d_randomread d_numneigh; + + PairExp6ParamDataTypeKokkos PairExp6ParamData; + + void allocate(); + DAT::tdual_int_1d k_mol2param; // mapping from molecule to parameters + typename AT::t_int_1d_randomread d_mol2param; + + typedef Kokkos::DualView tdual_param_1d; + typedef typename tdual_param_1d::t_dev_const_randomread t_param_1d_randomread; + + tdual_param_1d k_params; // parameter set for an I-J-K interaction + t_param_1d_randomread d_params; // parameter set for an I-J-K interaction + + typename ArrayTypes::tdual_ffloat_2d k_cutsq; + typename ArrayTypes::t_ffloat_2d d_cutsq; + + void read_file(char *); + void setup(); + + KOKKOS_INLINE_FUNCTION + void getParamsEXP6(int, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &) const; + + KOKKOS_INLINE_FUNCTION + double func_rin(const double &) const; + + KOKKOS_INLINE_FUNCTION + double expValue(const double) const; + + friend void pair_virial_fdotr_compute(PairExp6rxKokkos*); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: alpha_ij is 6.0 in pair exp6 + +Self-explanatory + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: PairExp6rxKokkos requires a fix rx command + +The fix rx command must come before the pair style command in the input file + +E: There are no rx species specified + +There must be at least one species specified through the fix rx command + +E: Site1 name not recognized in pair coefficients + +The site1 keyword does not match the species keywords specified throug the fix rx command + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +E: Cannot open exp6/rx potential file %s + +Self-explanatory + +E: Incorrect format in exp6/rx potential file + +Self-explanatory + +E: Illegal exp6/rx parameters. Rm and Epsilon must be greater than zero. Alpha cannot be negative. + +Self-explanatory + +E: Illegal exp6/rx parameters. Interaction potential does not exist. + +Self-explanatory + +E: Potential file has duplicate entry. + +Self-explanatory + +E: The number of molecules in CG particle is less than 1e-8. + +Self-explanatory. Check the species concentrations have been properly set +and check the reaction kinetic solver parameters in fix rx to more for +sufficient accuracy. + + +*/ diff --git a/src/USER-DPD/pair_exp6_rx.cpp b/src/USER-DPD/pair_exp6_rx.cpp index 9af28026ae..2643c9ec04 100644 --- a/src/USER-DPD/pair_exp6_rx.cpp +++ b/src/USER-DPD/pair_exp6_rx.cpp @@ -77,6 +77,8 @@ PairExp6rx::PairExp6rx(LAMMPS *lmp) : Pair(lmp) PairExp6rx::~PairExp6rx() { + if (copymode) return; + for (int i=0; i < nparams; ++i) { delete[] params[i].name; delete[] params[i].potential; diff --git a/src/atom.h b/src/atom.h index 9abbb49569..de7cda06ac 100644 --- a/src/atom.h +++ b/src/atom.h @@ -255,8 +255,8 @@ class Atom : protected Pointers { void update_callback(int); int find_custom(const char *, int &); - int add_custom(const char *, int); - void remove_custom(int, int); + virtual int add_custom(const char *, int); + virtual void remove_custom(int, int); virtual void sync_modify(ExecutionSpace, unsigned int, unsigned int) {} -- GitLab From 6d94439cfe6f9f4cfd00a04b7e45d89693ffac46 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 28 Nov 2016 14:42:47 -0700 Subject: [PATCH 005/337] Integrating pair_dpd_fdt_energy_kokkos files --- src/KOKKOS/Install.sh | 2 ++ src/{USER-DPD => KOKKOS}/pair_dpd_fdt_energy_kokkos.cpp | 0 src/{USER-DPD => KOKKOS}/pair_dpd_fdt_energy_kokkos.h | 0 src/KOKKOS/pair_exp6_rx_kokkos.cpp | 4 ++++ 4 files changed, 6 insertions(+) rename src/{USER-DPD => KOKKOS}/pair_dpd_fdt_energy_kokkos.cpp (100%) rename src/{USER-DPD => KOKKOS}/pair_dpd_fdt_energy_kokkos.h (100%) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 14a8a951ee..7e46b52c2b 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -128,6 +128,8 @@ action pair_coul_long_kokkos.cpp pair_coul_long.cpp action pair_coul_long_kokkos.h pair_coul_long.h action pair_coul_wolf_kokkos.cpp action pair_coul_wolf_kokkos.h +action pair_dpd_fdt_energy_kokkos.cpp pair_dpd_fdt_energy.cpp +action pair_dpd_fdt_energy_kokkos.h pair_dpd_fdt_energy.h action pair_eam_kokkos.cpp pair_eam.cpp action pair_eam_kokkos.h pair_eam.h action pair_eam_alloy_kokkos.cpp pair_eam_alloy.cpp diff --git a/src/USER-DPD/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp similarity index 100% rename from src/USER-DPD/pair_dpd_fdt_energy_kokkos.cpp rename to src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp diff --git a/src/USER-DPD/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h similarity index 100% rename from src/USER-DPD/pair_dpd_fdt_energy_kokkos.h rename to src/KOKKOS/pair_dpd_fdt_energy_kokkos.h diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index aa37c8375d..754fa4667d 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Stan Moore (Sandia) +------------------------------------------------------------------------- */ + #include #include #include -- GitLab From 6e6776f39635b1b69dab532bced2b0d95f150d62 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Wed, 30 Nov 2016 16:25:07 -0500 Subject: [PATCH 006/337] Finish moving/integrating atom_vec_dpd_kokkos into the Kokkos package --- src/KOKKOS/Install.sh | 2 + src/USER-DPD/atom_vec_dpd_kokkos.cpp | 1874 -------------------------- src/USER-DPD/atom_vec_dpd_kokkos.h | 135 -- 3 files changed, 2 insertions(+), 2009 deletions(-) delete mode 100644 src/USER-DPD/atom_vec_dpd_kokkos.cpp delete mode 100644 src/USER-DPD/atom_vec_dpd_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 7e46b52c2b..1381a1978c 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -47,6 +47,8 @@ action atom_vec_bond_kokkos.cpp atom_vec_bond.cpp action atom_vec_bond_kokkos.h atom_vec_bond.h action atom_vec_charge_kokkos.cpp action atom_vec_charge_kokkos.h +action atom_vec_dpd_kokkos.cpp atom_vec_dpd.cpp +action atom_vec_dpd_kokkos.h atom_vec_dpd.h action atom_vec_full_kokkos.cpp atom_vec_full.cpp action atom_vec_full_kokkos.h atom_vec_full.h action atom_vec_kokkos.cpp diff --git a/src/USER-DPD/atom_vec_dpd_kokkos.cpp b/src/USER-DPD/atom_vec_dpd_kokkos.cpp deleted file mode 100644 index c79559172f..0000000000 --- a/src/USER-DPD/atom_vec_dpd_kokkos.cpp +++ /dev/null @@ -1,1874 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale AtomicKokkos/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 "atom_vec_dpd_kokkos.h" -#include "atom_kokkos.h" -#include "comm_kokkos.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "atom_masks.h" -#include "memory.h" -#include "error.h" - -using namespace LAMMPS_NS; - -#define DELTA 10000 - -/* ---------------------------------------------------------------------- */ - -AtomVecDPDKokkos::AtomVecDPDKokkos(LAMMPS *lmp) : AtomVecKokkos(lmp) -{ - molecular = 0; - mass_type = 1; - - comm_x_only = comm_f_only = 0; - size_forward = 7; - size_reverse = 3; - size_border = 12; - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - - atom->rho_flag = 1; - atom->dpd_flag = 1; - - k_count = DAT::tdual_int_1d("atom::k_count",1); - atomKK = (AtomKokkos *) atom; - commKK = (CommKokkos *) comm; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by DELTA - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::grow(int n) -{ - if (n == 0) nmax += DELTA; - else nmax = n; - atomKK->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - sync(Device,ALL_MASK); - modified(Device,ALL_MASK); - - memory->grow_kokkos(atomKK->k_tag,atomKK->tag,nmax,"atom:tag"); - memory->grow_kokkos(atomKK->k_type,atomKK->type,nmax,"atom:type"); - memory->grow_kokkos(atomKK->k_mask,atomKK->mask,nmax,"atom:mask"); - memory->grow_kokkos(atomKK->k_image,atomKK->image,nmax,"atom:image"); - - memory->grow_kokkos(atomKK->k_x,atomKK->x,nmax,3,"atom:x"); - memory->grow_kokkos(atomKK->k_v,atomKK->v,nmax,3,"atom:v"); - memory->grow_kokkos(atomKK->k_f,atomKK->f,nmax,3,"atom:f"); - - - memory->grow_kokkos(atomKK->k_rho,atomKK->rho,nmax,"atom:rho"); - memory->grow_kokkos(atomKK->k_dpdTheta,atomKK->dpdTheta,nmax,"atom:dpdTheta"); - memory->grow_kokkos(atomKK->k_uCond,atomKK->uCond,nmax,"atom:uCond"); - memory->grow_kokkos(atomKK->k_uMech,atomKK->uMech,nmax,"atom:uMech"); - memory->grow_kokkos(atomKK->k_uChem,atomKK->uChem,nmax,"atom:uChem"); - memory->grow_kokkos(atomKK->k_uCG,atomKK->uCG,nmax,"atom:uCG"); - memory->grow_kokkos(atomKK->k_uCGnew,atomKK->uCGnew,nmax,"atom:uCGnew"); - memory->grow_kokkos(atomKK->k_duChem,atomKK->duChem,nmax,"atom:duChem"); - - grow_reset(); - sync(Host,ALL_MASK); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::grow_reset() -{ - tag = atomKK->tag; - d_tag = atomKK->k_tag.d_view; - h_tag = atomKK->k_tag.h_view; - - type = atomKK->type; - d_type = atomKK->k_type.d_view; - h_type = atomKK->k_type.h_view; - mask = atomKK->mask; - d_mask = atomKK->k_mask.d_view; - h_mask = atomKK->k_mask.h_view; - image = atomKK->image; - d_image = atomKK->k_image.d_view; - h_image = atomKK->k_image.h_view; - - x = atomKK->x; - d_x = atomKK->k_x.d_view; - h_x = atomKK->k_x.h_view; - v = atomKK->v; - d_v = atomKK->k_v.d_view; - h_v = atomKK->k_v.h_view; - f = atomKK->f; - d_f = atomKK->k_f.d_view; - h_f = atomKK->k_f.h_view; - - rho = atomKK->rho; - d_rho = atomKK->k_rho.d_view; - h_rho = atomKK->k_rho.h_view; - dpdTheta = atomKK->dpdTheta; - d_dpdTheta = atomKK->k_dpdTheta.d_view; - h_dpdTheta = atomKK->k_dpdTheta.h_view; - uCond = atomKK->uCond; - d_uCond = atomKK->k_uCond.d_view;; - h_uCond = atomKK->k_uCond.h_view; - uMech = atomKK->uMech; - d_uMech = atomKK->k_uMech.d_view;; - h_uMech = atomKK->k_uMech.h_view; - uChem = atomKK->uChem; - d_uChem = atomKK->k_uChem.d_view;; - h_uChem = atomKK->k_uChem.h_view; - uCG = atomKK->uCG; - d_uCG = atomKK->k_uCG.d_view;; - h_uCG = atomKK->k_uCG.h_view; - uCGnew = atomKK->uCGnew; - d_uCGnew = atomKK->k_uCGnew.d_view;; - h_uCGnew = atomKK->k_uCGnew.h_view; - duChem = atomKK->duChem; - d_duChem = atomKK->k_duChem.d_view;; - h_duChem = atomKK->k_duChem.h_view; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::copy(int i, int j, int delflag) -{ - h_tag[j] = h_tag[i]; - h_type[j] = h_type[i]; - mask[j] = mask[i]; - h_image[j] = h_image[i]; - h_x(j,0) = h_x(i,0); - h_x(j,1) = h_x(i,1); - h_x(j,2) = h_x(i,2); - h_v(j,0) = h_v(i,0); - h_v(j,1) = h_v(i,1); - h_v(j,2) = h_v(i,2); - h_dpdTheta[j] = h_dpdTheta[i]; - h_uCond[j] = h_uCond[i]; - h_uMech[j] = h_uMech[i]; - h_uChem[j] = h_uChem[i]; - h_uCG[j] = h_uCG[i]; - h_uCGnew[j] = h_uCGnew[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecDPDKokkos_PackComm { - typedef DeviceType device_type; - - typename ArrayTypes::t_x_array_randomread _x; - typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; - typename ArrayTypes::t_xfloat_2d_um _buf; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; - X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; - X_FLOAT _pbc[6]; - - AtomVecDPDKokkos_PackComm( - const typename DAT::tdual_x_array &x, - const typename DAT::tdual_efloat_1d &dpdTheta, - const typename DAT::tdual_efloat_1d &uCond, - const typename DAT::tdual_efloat_1d &uMech, - const typename DAT::tdual_efloat_1d &uChem, - const typename DAT::tdual_xfloat_2d &buf, - const typename DAT::tdual_int_2d &list, - const int & iswap, - const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, - const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): - _x(x.view()), - _dpdTheta(dpdTheta.view()), - _uCond(uCond.view()), - _uMech(uMech.view()), - _uChem(uChem.view()), - _list(list.view()),_iswap(iswap), - _xprd(xprd),_yprd(yprd),_zprd(zprd), - _xy(xy),_xz(xz),_yz(yz) { - const size_t maxsend = (buf.view().dimension_0()*buf.view().dimension_1())/3; - const size_t elements = 3; - buffer_view(_buf,buf,maxsend,elements); - _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; - _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; - }; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - const int j = _list(_iswap,i); - if (PBC_FLAG == 0) { - _buf(i,0) = _x(j,0); - _buf(i,1) = _x(j,1); - _buf(i,2) = _x(j,2); - } else { - if (TRICLINIC == 0) { - _buf(i,0) = _x(j,0) + _pbc[0]*_xprd; - _buf(i,1) = _x(j,1) + _pbc[1]*_yprd; - _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; - } else { - _buf(i,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; - _buf(i,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; - _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; - } - } - _buf(i,3) = _dpdTheta(j); - _buf(i,4) = _uCond(j); - _buf(i,5) = _uMech(j); - _buf(i,6) = _uChem(j); - } -}; - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, - const DAT::tdual_int_2d &list, - const int & iswap, - const DAT::tdual_xfloat_2d &buf, - const int &pbc_flag, - const int* const pbc) -{ - // Check whether to always run forward communication on the host - // Choose correct forward PackComm kernel - - if(commKK->forward_comm_on_host) { - sync(Host,X_MASK); - if(pbc_flag) { - if(domain->triclinic) { - struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if(domain->triclinic) { - struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - LMPHostType::fence(); - } else { - sync(Device,X_MASK); - if(pbc_flag) { - if(domain->triclinic) { - struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if(domain->triclinic) { - struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - LMPDeviceType::fence(); - } - - return n*size_forward; -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecDPDKokkos_PackCommSelf { - typedef DeviceType device_type; - - typename ArrayTypes::t_x_array_randomread _x; - typename ArrayTypes::t_x_array _xw; - typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; - int _nfirst; - typename ArrayTypes::t_int_2d_const _list; - const int _iswap; - X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; - X_FLOAT _pbc[6]; - - AtomVecDPDKokkos_PackCommSelf( - const typename DAT::tdual_x_array &x, - const typename DAT::tdual_efloat_1d &dpdTheta, - const typename DAT::tdual_efloat_1d &uCond, - const typename DAT::tdual_efloat_1d &uMech, - const typename DAT::tdual_efloat_1d &uChem, - const int &nfirst, - const typename DAT::tdual_int_2d &list, - const int & iswap, - const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, - const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): - _x(x.view()),_xw(x.view()), - _dpdTheta(dpdTheta.view()), - _uCond(uCond.view()), - _uMech(uMech.view()), - _uChem(uChem.view()), - _nfirst(nfirst),_list(list.view()),_iswap(iswap), - _xprd(xprd),_yprd(yprd),_zprd(zprd), - _xy(xy),_xz(xz),_yz(yz) { - _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; - _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; - }; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - const int j = _list(_iswap,i); - if (PBC_FLAG == 0) { - _xw(i+_nfirst,0) = _x(j,0); - _xw(i+_nfirst,1) = _x(j,1); - _xw(i+_nfirst,2) = _x(j,2); - } else { - if (TRICLINIC == 0) { - _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd; - _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd; - _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; - } else { - _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; - _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; - _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; - } - } - _dpdTheta(i+_nfirst) = _dpdTheta(j); - _uCond(i+_nfirst) = _uCond(j); - _uMech(i+_nfirst) = _uMech(j); - _uChem(i+_nfirst) = _uChem(j); - } -}; - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, const int & iswap, - const int nfirst, const int &pbc_flag, const int* const pbc) { - if(commKK->forward_comm_on_host) { - sync(Host,X_MASK); - modified(Host,X_MASK); - if(pbc_flag) { - if(domain->triclinic) { - struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if(domain->triclinic) { - struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - LMPHostType::fence(); - } else { - sync(Device,X_MASK); - modified(Device,X_MASK); - if(pbc_flag) { - if(domain->triclinic) { - struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } else { - if(domain->triclinic) { - struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } else { - struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - nfirst,list,iswap, - domain->xprd,domain->yprd,domain->zprd, - domain->xy,domain->xz,domain->yz,pbc); - Kokkos::parallel_for(n,f); - } - } - LMPDeviceType::fence(); - } - return n*3; -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecDPDKokkos_UnpackComm { - typedef DeviceType device_type; - - typename ArrayTypes::t_x_array _x; - typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; - typename ArrayTypes::t_xfloat_2d_const _buf; - int _first; - - AtomVecDPDKokkos_UnpackComm( - const typename DAT::tdual_x_array &x, - const typename DAT::tdual_efloat_1d &dpdTheta, - const typename DAT::tdual_efloat_1d &uCond, - const typename DAT::tdual_efloat_1d &uMech, - const typename DAT::tdual_efloat_1d &uChem, - const typename DAT::tdual_xfloat_2d &buf, - const int& first):_x(x.view()), - _dpdTheta(dpdTheta.view()), - _uCond(uCond.view()), - _uMech(uMech.view()), - _uChem(uChem.view()), - _buf(buf.view()), - _first(first) {}; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - _x(i+_first,0) = _buf(i,0); - _x(i+_first,1) = _buf(i,1); - _x(i+_first,2) = _buf(i,2); - _dpdTheta(i+_first) = _buf(i,3); - _uCond(i+_first) = _buf(i,4); - _uMech(i+_first) = _buf(i,5); - _uChem(i+_first) = _buf(i,6); - } -}; - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::unpack_comm_kokkos(const int &n, const int &first, - const DAT::tdual_xfloat_2d &buf ) { - if(commKK->forward_comm_on_host) { - sync(Host,X_MASK); - modified(Host,X_MASK); - struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,first); - Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); - } else { - sync(Device,X_MASK); - modified(Device,X_MASK); - struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, - atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, - buf,first); - Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0); - buf[m++] = h_x(j,1); - buf[m++] = h_x(j,2); - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0) + dx; - buf[m++] = h_x(j,1) + dy; - buf[m++] = h_x(j,2) + dz; - buf[m++] = h_dpdTheta[j]; - buf[m++] = h_uCond[j]; - buf[m++] = h_uMech[j]; - buf[m++] = h_uChem[j]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0); - buf[m++] = h_x(j,1); - buf[m++] = h_x(j,2); - buf[m++] = h_v(j,0); - buf[m++] = h_v(j,1); - buf[m++] = h_v(j,2); - buf[m++] = h_dpdTheta[j]; - buf[m++] = h_uCond[j]; - buf[m++] = h_uMech[j]; - buf[m++] = h_uChem[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0) + dx; - buf[m++] = h_x(j,1) + dy; - buf[m++] = h_x(j,2) + dz; - buf[m++] = h_v(j,0); - buf[m++] = h_v(j,1); - buf[m++] = h_v(j,2); - buf[m++] = h_dpdTheta[j]; - buf[m++] = h_uCond[j]; - buf[m++] = h_uMech[j]; - buf[m++] = h_uChem[j]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0) + dx; - buf[m++] = h_x(j,1) + dy; - buf[m++] = h_x(j,2) + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = h_v(j,0) + dvx; - buf[m++] = h_v(j,1) + dvy; - buf[m++] = h_v(j,2) + dvz; - } else { - buf[m++] = h_v(j,0); - buf[m++] = h_v(j,1); - buf[m++] = h_v(j,2); - } - buf[m++] = h_dpdTheta(j); - buf[m++] = h_uCond(j); - buf[m++] = h_uMech(j); - buf[m++] = h_uChem(j); - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - h_x(i,0) = buf[m++]; - h_x(i,1) = buf[m++]; - h_x(i,2) = buf[m++]; - h_dpdTheta[i] = buf[m++]; - h_uCond[i] = buf[m++]; - h_uMech[i] = buf[m++]; - h_uChem[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - h_x(i,0) = buf[m++]; - h_x(i,1) = buf[m++]; - h_x(i,2) = buf[m++]; - h_v(i,0) = buf[m++]; - h_v(i,1) = buf[m++]; - h_v(i,2) = buf[m++]; - h_dpdTheta[i] = buf[m++]; - h_uCond[i] = buf[m++]; - h_uMech[i] = buf[m++]; - h_uChem[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_reverse(int n, int first, double *buf) -{ - if(n > 0) - sync(Host,F_MASK); - - int m = 0; - const int last = first + n; - for (int i = first; i < last; i++) { - buf[m++] = h_f(i,0); - buf[m++] = h_f(i,1); - buf[m++] = h_f(i,2); - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::unpack_reverse(int n, int *list, double *buf) -{ - if(n > 0) { - sync(Host,F_MASK); - modified(Host,F_MASK); - } - - int m = 0; - for (int i = 0; i < n; i++) { - const int j = list[i]; - h_f(j,0) += buf[m++]; - h_f(j,1) += buf[m++]; - h_f(j,2) += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecDPDKokkos_PackBorder { - typedef DeviceType device_type; - - typename ArrayTypes::t_xfloat_2d _buf; - const typename ArrayTypes::t_int_2d_const _list; - const int _iswap; - const typename ArrayTypes::t_x_array_randomread _x; - const typename ArrayTypes::t_tagint_1d _tag; - const typename ArrayTypes::t_int_1d _type; - const typename ArrayTypes::t_int_1d _mask; - typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; - X_FLOAT _dx,_dy,_dz; - - AtomVecDPDKokkos_PackBorder( - const typename ArrayTypes::t_xfloat_2d &buf, - const typename ArrayTypes::t_int_2d_const &list, - const int & iswap, - const typename ArrayTypes::t_x_array &x, - const typename ArrayTypes::t_tagint_1d &tag, - const typename ArrayTypes::t_int_1d &type, - const typename ArrayTypes::t_int_1d &mask, - const typename ArrayTypes::t_efloat_1d &dpdTheta, - const typename ArrayTypes::t_efloat_1d &uCond, - const typename ArrayTypes::t_efloat_1d &uMech, - const typename ArrayTypes::t_efloat_1d &uChem, - const typename ArrayTypes::t_efloat_1d &uCG, - const typename ArrayTypes::t_efloat_1d &uCGnew, - const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): - _buf(buf),_list(list),_iswap(iswap), - _x(x),_tag(tag),_type(type),_mask(mask), - _dpdTheta(dpdTheta), - _uCond(uCond), - _uMech(uMech), - _uChem(uChem), - _uCG(uCGnew), - _uCGnew(uCGnew), - _dx(dx),_dy(dy),_dz(dz) {} - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - const int j = _list(_iswap,i); - if (PBC_FLAG == 0) { - _buf(i,0) = _x(j,0); - _buf(i,1) = _x(j,1); - _buf(i,2) = _x(j,2); - } else { - _buf(i,0) = _x(j,0) + _dx; - _buf(i,1) = _x(j,1) + _dy; - _buf(i,2) = _x(j,2) + _dz; - } - _buf(i,3) = _tag(j); - _buf(i,4) = _type(j); - _buf(i,5) = _mask(j); - _buf(i,6) = _dpdTheta(j); - _buf(i,7) = _uCond(j); - _buf(i,8) = _uMech(j); - _buf(i,9) = _uChem(j); - _buf(i,10) = _uCG(j); - _buf(i,11) = _uCGnew(j); - } -}; - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, - int pbc_flag, int *pbc, ExecutionSpace space) -{ - X_FLOAT dx,dy,dz; - - if (pbc_flag != 0) { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if(space==Host) { - AtomVecDPDKokkos_PackBorder f( - buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask, - h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, - dx,dy,dz); - Kokkos::parallel_for(n,f); - LMPHostType::fence(); - } else { - AtomVecDPDKokkos_PackBorder f( - buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask, - d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, - dx,dy,dz); - Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); - } - - } else { - dx = dy = dz = 0; - if(space==Host) { - AtomVecDPDKokkos_PackBorder f( - buf.view(), k_sendlist.view(), - iswap,h_x,h_tag,h_type,h_mask, - h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, - dx,dy,dz); - Kokkos::parallel_for(n,f); - LMPHostType::fence(); - } else { - AtomVecDPDKokkos_PackBorder f( - buf.view(), k_sendlist.view(), - iswap,d_x,d_tag,d_type,d_mask, - d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, - dx,dy,dz); - Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); - } - } - return n*6; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0); - buf[m++] = h_x(j,1); - buf[m++] = h_x(j,2); - buf[m++] = ubuf(h_tag(j)).d; - buf[m++] = ubuf(h_type(j)).d; - buf[m++] = ubuf(h_mask(j)).d; - buf[m++] = h_dpdTheta(j); - buf[m++] = h_uCond(j); - buf[m++] = h_uMech(j); - buf[m++] = h_uChem(j); - buf[m++] = h_uCG(j); - buf[m++] = h_uCGnew(j); - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0) + dx; - buf[m++] = h_x(j,1) + dy; - buf[m++] = h_x(j,2) + dz; - buf[m++] = ubuf(h_tag(j)).d; - buf[m++] = ubuf(h_type(j)).d; - buf[m++] = ubuf(h_mask(j)).d; - buf[m++] = h_dpdTheta(j); - buf[m++] = h_uCond(j); - buf[m++] = h_uMech(j); - buf[m++] = h_uChem(j); - buf[m++] = h_uCG(j); - buf[m++] = h_uCGnew(j); - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0); - buf[m++] = h_x(j,1); - buf[m++] = h_x(j,2); - buf[m++] = ubuf(h_tag(j)).d; - buf[m++] = ubuf(h_type(j)).d; - buf[m++] = ubuf(h_mask(j)).d; - buf[m++] = h_v(j,0); - buf[m++] = h_v(j,1); - buf[m++] = h_v(j,2); - buf[m++] = h_dpdTheta(j); - buf[m++] = h_uCond(j); - buf[m++] = h_uMech(j); - buf[m++] = h_uChem(j); - buf[m++] = h_uCG(j); - buf[m++] = h_uCGnew(j); - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0) + dx; - buf[m++] = h_x(j,1) + dy; - buf[m++] = h_x(j,2) + dz; - buf[m++] = ubuf(h_tag(j)).d; - buf[m++] = ubuf(h_type(j)).d; - buf[m++] = ubuf(h_mask(j)).d; - buf[m++] = h_v(j,0); - buf[m++] = h_v(j,1); - buf[m++] = h_v(j,2); - buf[m++] = h_dpdTheta(j); - buf[m++] = h_uCond(j); - buf[m++] = h_uMech(j); - buf[m++] = h_uChem(j); - buf[m++] = h_uCG(j); - buf[m++] = h_uCGnew(j); - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_x(j,0) + dx; - buf[m++] = h_x(j,1) + dy; - buf[m++] = h_x(j,2) + dz; - buf[m++] = ubuf(h_tag(j)).d; - buf[m++] = ubuf(h_type(j)).d; - buf[m++] = ubuf(h_mask(j)).d; - if (mask[i] & deform_groupbit) { - buf[m++] = h_v(j,0) + dvx; - buf[m++] = h_v(j,1) + dvy; - buf[m++] = h_v(j,2) + dvz; - } else { - buf[m++] = h_v(j,0); - buf[m++] = h_v(j,1); - buf[m++] = h_v(j,2); - } - buf[m++] = h_dpdTheta(j); - buf[m++] = h_uCond(j); - buf[m++] = h_uMech(j); - buf[m++] = h_uChem(j); - buf[m++] = h_uCG(j); - buf[m++] = h_uCGnew(j); - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_dpdTheta[j]; - buf[m++] = h_uCond[j]; - buf[m++] = h_uMech[j]; - buf[m++] = h_uChem[j]; - buf[m++] = h_uCG[j]; - buf[m++] = h_uCGnew[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = h_dpdTheta[j]; - buf[m++] = h_uCond[j]; - buf[m++] = h_uMech[j]; - buf[m++] = h_uChem[j]; - buf[m++] = h_uCG[j]; - buf[m++] = h_uCGnew[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecDPDKokkos_UnpackBorder { - typedef DeviceType device_type; - - const typename ArrayTypes::t_xfloat_2d_const _buf; - typename ArrayTypes::t_x_array _x; - typename ArrayTypes::t_tagint_1d _tag; - typename ArrayTypes::t_int_1d _type; - typename ArrayTypes::t_int_1d _mask; - typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; - int _first; - - - AtomVecDPDKokkos_UnpackBorder( - const typename ArrayTypes::t_xfloat_2d_const &buf, - typename ArrayTypes::t_x_array &x, - typename ArrayTypes::t_tagint_1d &tag, - typename ArrayTypes::t_int_1d &type, - typename ArrayTypes::t_int_1d &mask, - const typename ArrayTypes::t_efloat_1d &dpdTheta, - const typename ArrayTypes::t_efloat_1d &uCond, - const typename ArrayTypes::t_efloat_1d &uMech, - const typename ArrayTypes::t_efloat_1d &uChem, - const typename ArrayTypes::t_efloat_1d &uCG, - const typename ArrayTypes::t_efloat_1d &uCGnew, - const int& first): - _buf(buf),_x(x),_tag(tag),_type(type),_mask(mask), - _dpdTheta(dpdTheta), - _uCond(uCond), - _uMech(uMech), - _uChem(uChem), - _uCG(uCGnew), - _uCGnew(uCGnew), - _first(first) {}; - - KOKKOS_INLINE_FUNCTION - void operator() (const int& i) const { - _x(i+_first,0) = _buf(i,0); - _x(i+_first,1) = _buf(i,1); - _x(i+_first,2) = _buf(i,2); - _tag(i+_first) = static_cast (_buf(i,3)); - _type(i+_first) = static_cast (_buf(i,4)); - _mask(i+_first) = static_cast (_buf(i,5)); - _dpdTheta(i+_first) = _buf(i,6); - _uCond(i+_first) = _buf(i,7); - _uMech(i+_first) = _buf(i,8); - _uChem(i+_first) = _buf(i,9); - _uCG(i+_first) = _buf(i,10); - _uCGnew(i+_first) = _buf(i,11); -// printf("%i %i %lf %lf %lf %i BORDER\n",_tag(i+_first),i+_first,_x(i+_first,0),_x(i+_first,1),_x(i+_first,2),_type(i+_first)); - } -}; - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::unpack_border_kokkos(const int &n, const int &first, - const DAT::tdual_xfloat_2d &buf,ExecutionSpace space) { - modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); - while (first+n >= nmax) grow(0); - modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); - if(space==Host) { - struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), - h_x,h_tag,h_type,h_mask, - h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, - first); - Kokkos::parallel_for(n,f); - LMPHostType::fence(); - } else { - struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), - d_x,d_tag,d_type,d_mask, - d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, - first); - Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); - h_x(i,0) = buf[m++]; - h_x(i,1) = buf[m++]; - h_x(i,2) = buf[m++]; - h_tag(i) = (tagint) ubuf(buf[m++]).i; - h_type(i) = (int) ubuf(buf[m++]).i; - h_mask(i) = (int) ubuf(buf[m++]).i; - h_dpdTheta(i) = buf[m++]; - h_uCond(i) = buf[m++]; - h_uMech(i) = buf[m++]; - h_uChem(i) = buf[m++]; - h_uCG(i) = buf[m++]; - h_uCGnew(i) = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - modified(Host,X_MASK|V_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); - h_x(i,0) = buf[m++]; - h_x(i,1) = buf[m++]; - h_x(i,2) = buf[m++]; - h_tag(i) = (tagint) ubuf(buf[m++]).i; - h_type(i) = (int) ubuf(buf[m++]).i; - h_mask(i) = (int) ubuf(buf[m++]).i; - h_v(i,0) = buf[m++]; - h_v(i,1) = buf[m++]; - h_v(i,2) = buf[m++]; - h_dpdTheta(i) = buf[m++]; - h_uCond(i) = buf[m++]; - h_uMech(i) = buf[m++]; - h_uChem(i) = buf[m++]; - h_uCG(i) = buf[m++]; - h_uCGnew(i) = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - h_dpdTheta(i) = buf[m++]; - h_uCond(i) = buf[m++]; - h_uMech(i) = buf[m++]; - h_uChem(i) = buf[m++]; - h_uCG(i) = buf[m++]; - h_uCGnew(i) = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - h_dpdTheta(i) = buf[m++]; - h_uCond(i) = buf[m++]; - h_uMech(i) = buf[m++]; - h_uChem(i) = buf[m++]; - h_uCG(i) = buf[m++]; - h_uCGnew(i) = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecDPDKokkos_PackExchangeFunctor { - typedef DeviceType device_type; - typedef ArrayTypes AT; - typename AT::t_x_array_randomread _x; - typename AT::t_v_array_randomread _v; - typename AT::t_tagint_1d_randomread _tag; - typename AT::t_int_1d_randomread _type; - typename AT::t_int_1d_randomread _mask; - typename AT::t_imageint_1d_randomread _image; - typename AT::t_efloat_1d_randomread _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; - typename AT::t_x_array _xw; - typename AT::t_v_array _vw; - typename AT::t_tagint_1d _tagw; - typename AT::t_int_1d _typew; - typename AT::t_int_1d _maskw; - typename AT::t_imageint_1d _imagew; - typename AT::t_efloat_1d _dpdThetaw,_uCondw,_uMechw,_uChemw,_uCGw,_uCGneww; - - typename AT::t_xfloat_2d_um _buf; - typename AT::t_int_1d_const _sendlist; - typename AT::t_int_1d_const _copylist; - int _nlocal,_dim; - X_FLOAT _lo,_hi; - - AtomVecDPDKokkos_PackExchangeFunctor( - const AtomKokkos* atom, - const typename AT::tdual_xfloat_2d buf, - typename AT::tdual_int_1d sendlist, - typename AT::tdual_int_1d copylist,int nlocal, int dim, - X_FLOAT lo, X_FLOAT hi): - _x(atom->k_x.view()), - _v(atom->k_v.view()), - _tag(atom->k_tag.view()), - _type(atom->k_type.view()), - _mask(atom->k_mask.view()), - _image(atom->k_image.view()), - _dpdTheta(atom->k_dpdTheta.view()), - _uCond(atom->k_uCond.view()), - _uMech(atom->k_uMech.view()), - _uChem(atom->k_uChem.view()), - _uCG(atom->k_uCG.view()), - _uCGnew(atom->k_uCGnew.view()), - _xw(atom->k_x.view()), - _vw(atom->k_v.view()), - _tagw(atom->k_tag.view()), - _typew(atom->k_type.view()), - _maskw(atom->k_mask.view()), - _imagew(atom->k_image.view()), - _dpdThetaw(atom->k_dpdTheta.view()), - _uCondw(atom->k_uCond.view()), - _uMechw(atom->k_uMech.view()), - _uChemw(atom->k_uChem.view()), - _uCGw(atom->k_uCG.view()), - _uCGneww(atom->k_uCGnew.view()), - _sendlist(sendlist.template view()), - _copylist(copylist.template view()), - _nlocal(nlocal),_dim(dim), - _lo(lo),_hi(hi){ - const size_t elements = 17; - const int maxsendlist = (buf.template view().dimension_0()*buf.template view().dimension_1())/elements; - - buffer_view(_buf,buf,maxsendlist,elements); - } - - KOKKOS_INLINE_FUNCTION - void operator() (const int &mysend) const { - const int i = _sendlist(mysend); - _buf(mysend,0) = 17; - _buf(mysend,1) = _x(i,0); - _buf(mysend,2) = _x(i,1); - _buf(mysend,3) = _x(i,2); - _buf(mysend,4) = _v(i,0); - _buf(mysend,5) = _v(i,1); - _buf(mysend,6) = _v(i,2); - _buf(mysend,7) = _tag[i]; - _buf(mysend,8) = _type[i]; - _buf(mysend,9) = _mask[i]; - _buf(mysend,10) = _image[i]; - _buf(mysend,11) = _dpdTheta[i]; - _buf(mysend,12) = _uCond[i]; - _buf(mysend,13) = _uMech[i]; - _buf(mysend,14) = _uChem[i]; - _buf(mysend,15) = _uCG[i]; - _buf(mysend,16) = _uCGnew[i]; - const int j = _copylist(mysend); - - if(j>-1) { - _xw(i,0) = _x(j,0); - _xw(i,1) = _x(j,1); - _xw(i,2) = _x(j,2); - _vw(i,0) = _v(j,0); - _vw(i,1) = _v(j,1); - _vw(i,2) = _v(j,2); - _tagw[i] = _tag(j); - _typew[i] = _type(j); - _maskw[i] = _mask(j); - _imagew[i] = _image(j); - _dpdThetaw[i] = _dpdTheta(j); - _uCondw[i] = _uCond(j); - _uMechw[i] = _uMech(j); - _uChemw[i] = _uChem(j); - _uCGw[i] = _uCG(j); - _uCGneww[i] = _uCGnew(j); - } - } -}; - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d k_sendlist,DAT::tdual_int_1d k_copylist,ExecutionSpace space,int dim,X_FLOAT lo,X_FLOAT hi ) -{ - if(nsend > (int) (k_buf.view().dimension_0()*k_buf.view().dimension_1())/17) { - int newsize = nsend*17/k_buf.view().dimension_1()+1; - k_buf.resize(newsize,k_buf.view().dimension_1()); - } - if(space == Host) { - AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); - Kokkos::parallel_for(nsend,f); - LMPHostType::fence(); - return nsend*17; - } else { - AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); - Kokkos::parallel_for(nsend,f); - LMPDeviceType::fence(); - return nsend*17; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = h_x(i,0); - buf[m++] = h_x(i,1); - buf[m++] = h_x(i,2); - buf[m++] = h_v(i,0); - buf[m++] = h_v(i,1); - buf[m++] = h_v(i,2); - buf[m++] = ubuf(h_tag(i)).d; - buf[m++] = ubuf(h_type(i)).d; - buf[m++] = ubuf(h_mask(i)).d; - buf[m++] = ubuf(h_image(i)).d; - buf[m++] = h_dpdTheta[i]; - buf[m++] = h_uCond[i]; - buf[m++] = h_uMech[i]; - buf[m++] = h_uChem[i]; - buf[m++] = h_uCG[i]; - buf[m++] = h_uCGnew[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -template -struct AtomVecDPDKokkos_UnpackExchangeFunctor { - typedef DeviceType device_type; - typedef ArrayTypes AT; - typename AT::t_x_array _x; - typename AT::t_v_array _v; - typename AT::t_tagint_1d _tag; - typename AT::t_int_1d _type; - typename AT::t_int_1d _mask; - typename AT::t_imageint_1d _image; - typename AT::t_efloat_1d _dpdTheta; - typename AT::t_efloat_1d _uCond; - typename AT::t_efloat_1d _uMech; - typename AT::t_efloat_1d _uChem; - typename AT::t_efloat_1d _uCG; - typename AT::t_efloat_1d _uCGnew; - - typename AT::t_xfloat_2d_um _buf; - typename AT::t_int_1d _nlocal; - int _dim; - X_FLOAT _lo,_hi; - - AtomVecDPDKokkos_UnpackExchangeFunctor( - const AtomKokkos* atom, - const typename AT::tdual_xfloat_2d buf, - typename AT::tdual_int_1d nlocal, - int dim, X_FLOAT lo, X_FLOAT hi): - _x(atom->k_x.view()), - _v(atom->k_v.view()), - _tag(atom->k_tag.view()), - _type(atom->k_type.view()), - _mask(atom->k_mask.view()), - _image(atom->k_image.view()), - _nlocal(nlocal.template view()),_dim(dim), - _lo(lo),_hi(hi){ - const size_t elements = 17; - const int maxsendlist = (buf.template view().dimension_0()*buf.template view().dimension_1())/elements; - - buffer_view(_buf,buf,maxsendlist,elements); - } - - KOKKOS_INLINE_FUNCTION - void operator() (const int &myrecv) const { - X_FLOAT x = _buf(myrecv,_dim+1); - if (x >= _lo && x < _hi) { - int i = Kokkos::atomic_fetch_add(&_nlocal(0),1); - _x(i,0) = _buf(myrecv,1); - _x(i,1) = _buf(myrecv,2); - _x(i,2) = _buf(myrecv,3); - _v(i,0) = _buf(myrecv,4); - _v(i,1) = _buf(myrecv,5); - _v(i,2) = _buf(myrecv,6); - _tag[i] = _buf(myrecv,7); - _type[i] = _buf(myrecv,8); - _mask[i] = _buf(myrecv,9); - _image[i] = _buf(myrecv,10); - _dpdTheta[i] = _buf(myrecv,11); - _uCond[i] = _buf(myrecv,12); - _uMech[i] = _buf(myrecv,13); - _uChem[i] = _buf(myrecv,14); - _uCG[i] = _buf(myrecv,15); - _uCGnew[i] = _buf(myrecv,16); - } - } -}; - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nrecv,int nlocal,int dim,X_FLOAT lo,X_FLOAT hi,ExecutionSpace space) { - if(space == Host) { - k_count.h_view(0) = nlocal; - AtomVecDPDKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); - Kokkos::parallel_for(nrecv/17,f); - LMPHostType::fence(); - return k_count.h_view(0); - } else { - k_count.h_view(0) = nlocal; - k_count.modify(); - k_count.sync(); - AtomVecDPDKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); - Kokkos::parallel_for(nrecv/17,f); - LMPDeviceType::fence(); - k_count.modify(); - k_count.sync(); - - return k_count.h_view(0); - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | - MASK_MASK | IMAGE_MASK); - - int m = 1; - h_x(nlocal,0) = buf[m++]; - h_x(nlocal,1) = buf[m++]; - h_x(nlocal,2) = buf[m++]; - h_v(nlocal,0) = buf[m++]; - h_v(nlocal,1) = buf[m++]; - h_v(nlocal,2) = buf[m++]; - h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; - h_type(nlocal) = (int) ubuf(buf[m++]).i; - h_mask(nlocal) = (int) ubuf(buf[m++]).i; - h_image(nlocal) = (imageint) ubuf(buf[m++]).i; - h_dpdTheta[nlocal] = buf[m++]; - h_uCond[nlocal] = buf[m++]; - h_uMech[nlocal] = buf[m++]; - h_uChem[nlocal] = buf[m++]; - h_uCG[nlocal] = buf[m++]; - h_uCGnew[nlocal] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 15 * nlocal; // 11 + dpdTheta + uCond + uMech + uChem - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_restart(int i, double *buf) -{ - sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | - MASK_MASK | IMAGE_MASK ); - - int m = 1; - buf[m++] = h_x(i,0); - buf[m++] = h_x(i,1); - buf[m++] = h_x(i,2); - buf[m++] = ubuf(h_tag(i)).d; - buf[m++] = ubuf(h_type(i)).d; - buf[m++] = ubuf(h_mask(i)).d; - buf[m++] = ubuf(h_image(i)).d; - buf[m++] = h_v(i,0); - buf[m++] = h_v(i,1); - buf[m++] = h_v(i,2); - buf[m++] = h_dpdTheta[i]; - buf[m++] = h_uCond[i]; - buf[m++] = h_uMech[i]; - buf[m++] = h_uChem[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | - MASK_MASK | IMAGE_MASK ); - - int m = 1; - h_x(nlocal,0) = buf[m++]; - h_x(nlocal,1) = buf[m++]; - h_x(nlocal,2) = buf[m++]; - h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; - h_type(nlocal) = (int) ubuf(buf[m++]).i; - h_mask(nlocal) = (int) ubuf(buf[m++]).i; - h_image(nlocal) = (imageint) ubuf(buf[m++]).i; - h_v(nlocal,0) = buf[m++]; - h_v(nlocal,1) = buf[m++]; - h_v(nlocal,2) = buf[m++]; - h_dpdTheta[nlocal] = buf[m++]; - h_uCond[nlocal] = buf[m++]; - h_uMech[nlocal] = buf[m++]; - h_uChem[nlocal] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (ubuf(buf[m++]).i) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - //if(nlocal>2) printf("typeA: %i %i\n",type[0],type[1]); - atomKK->modified(Host,ALL_MASK); - grow(0); - //if(nlocal>2) printf("typeB: %i %i\n",type[0],type[1]); - } - atomKK->modified(Host,ALL_MASK); - - tag[nlocal] = 0; - type[nlocal] = itype; - h_x(nlocal,0) = coord[0]; - h_x(nlocal,1) = coord[1]; - h_x(nlocal,2) = coord[2]; - h_mask[nlocal] = 1; - h_image[nlocal] = ((tagint) IMGMAX << IMG2BITS) | - ((tagint) IMGMAX << IMGBITS) | IMGMAX; - h_v(nlocal,0) = 0.0; - h_v(nlocal,1) = 0.0; - h_v(nlocal,2) = 0.0; - h_rho[nlocal] = 0.0; - h_dpdTheta[nlocal] = 0.0; - h_uCond[nlocal] = 0.0; - h_uMech[nlocal] = 0.0; - h_uChem[nlocal] = 0.0; - h_uCG[nlocal] = 0.0; - h_uCGnew[nlocal] = 0.0; - h_duChem[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::data_atom(double *coord, tagint imagetmp, - char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - h_tag[nlocal] = ATOTAGINT(values[0]); - h_type[nlocal] = atoi(values[1]); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - h_dpdTheta[nlocal] = atof(values[2]); - if (h_dpdTheta[nlocal] <= 0) - error->one(FLERR,"Internal temperature in Atoms section of date file must be > zero"); - - h_x(nlocal,0) = coord[0]; - h_x(nlocal,1) = coord[1]; - h_x(nlocal,2) = coord[2]; - - h_image[nlocal] = imagetmp; - - h_mask[nlocal] = 1; - h_v(nlocal,0) = 0.0; - h_v(nlocal,1) = 0.0; - h_v(nlocal,2) = 0.0; - - h_rho[nlocal] = 0.0; - h_uCond[nlocal] = 0.0; - h_uMech[nlocal] = 0.0; - h_uChem[nlocal] = 0.0; - h_uCG[nlocal] = 0.0; - h_uCGnew[nlocal] = 0.0; - - atomKK->modified(Host,ALL_MASK); - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::data_atom_hybrid(int nlocal, char **values) -{ - h_dpdTheta(nlocal) = atof(values[0]); - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(h_tag(i)).d; - buf[i][1] = ubuf(h_type(i)).d; - buf[i][2] = h_dpdTheta(i); - buf[i][3] = h_x(i,0); - buf[i][4] = h_x(i,1); - buf[i][5] = h_x(i,2); - buf[i][6] = (h_image[i] & IMGMASK) - IMGMAX; - buf[i][7] = (h_image[i] >> IMGBITS & IMGMASK) - IMGMAX; - buf[i][8] = (h_image[i] >> IMG2BITS) - IMGMAX; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::pack_data_hybrid(int i, double *buf) -{ - buf[0] = h_dpdTheta(i); - return 1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecDPDKokkos::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecDPDKokkos::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*commKK->nthreads,3); - if (atom->memcheck("rho")) bytes += memory->usage(rho,nmax); - if (atom->memcheck("dpdTheta")) bytes += memory->usage(dpdTheta,nmax); - if (atom->memcheck("uCond")) bytes += memory->usage(uCond,nmax); - if (atom->memcheck("uMech")) bytes += memory->usage(uMech,nmax); - if (atom->memcheck("uChem")) bytes += memory->usage(uChem,nmax); - if (atom->memcheck("uCG")) bytes += memory->usage(uCG,nmax); - if (atom->memcheck("uCGnew")) bytes += memory->usage(uCGnew,nmax); - if (atom->memcheck("duChem")) bytes += memory->usage(duChem,nmax); - - return bytes; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::sync(ExecutionSpace space, unsigned int mask) -{ - if (space == Device) { - if (mask & X_MASK) atomKK->k_x.sync(); - if (mask & V_MASK) atomKK->k_v.sync(); - if (mask & F_MASK) atomKK->k_f.sync(); - if (mask & TAG_MASK) atomKK->k_tag.sync(); - if (mask & TYPE_MASK) atomKK->k_type.sync(); - if (mask & MASK_MASK) atomKK->k_mask.sync(); - if (mask & IMAGE_MASK) atomKK->k_image.sync(); - } else { - if (mask & X_MASK) atomKK->k_x.sync(); - if (mask & V_MASK) atomKK->k_v.sync(); - if (mask & F_MASK) atomKK->k_f.sync(); - if (mask & TAG_MASK) atomKK->k_tag.sync(); - if (mask & TYPE_MASK) atomKK->k_type.sync(); - if (mask & MASK_MASK) atomKK->k_mask.sync(); - if (mask & IMAGE_MASK) atomKK->k_image.sync(); - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::sync_overlapping_device(ExecutionSpace space, unsigned int mask) -{ - if (space == Device) { - if ((mask & X_MASK) && atomKK->k_x.need_sync()) - perform_async_copy(atomKK->k_x,space); - if ((mask & V_MASK) && atomKK->k_v.need_sync()) - perform_async_copy(atomKK->k_v,space); - if ((mask & F_MASK) && atomKK->k_f.need_sync()) - perform_async_copy(atomKK->k_f,space); - if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) - perform_async_copy(atomKK->k_tag,space); - if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) - perform_async_copy(atomKK->k_type,space); - if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) - perform_async_copy(atomKK->k_mask,space); - if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) - perform_async_copy(atomKK->k_image,space); - } else { - if ((mask & X_MASK) && atomKK->k_x.need_sync()) - perform_async_copy(atomKK->k_x,space); - if ((mask & V_MASK) && atomKK->k_v.need_sync()) - perform_async_copy(atomKK->k_v,space); - if ((mask & F_MASK) && atomKK->k_f.need_sync()) - perform_async_copy(atomKK->k_f,space); - if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) - perform_async_copy(atomKK->k_tag,space); - if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) - perform_async_copy(atomKK->k_type,space); - if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) - perform_async_copy(atomKK->k_mask,space); - if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) - perform_async_copy(atomKK->k_image,space); - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPDKokkos::modified(ExecutionSpace space, unsigned int mask) -{ - if (space == Device) { - if (mask & X_MASK) atomKK->k_x.modify(); - if (mask & V_MASK) atomKK->k_v.modify(); - if (mask & F_MASK) atomKK->k_f.modify(); - if (mask & TAG_MASK) atomKK->k_tag.modify(); - if (mask & TYPE_MASK) atomKK->k_type.modify(); - if (mask & MASK_MASK) atomKK->k_mask.modify(); - if (mask & IMAGE_MASK) atomKK->k_image.modify(); - } else { - if (mask & X_MASK) atomKK->k_x.modify(); - if (mask & V_MASK) atomKK->k_v.modify(); - if (mask & F_MASK) atomKK->k_f.modify(); - if (mask & TAG_MASK) atomKK->k_tag.modify(); - if (mask & TYPE_MASK) atomKK->k_type.modify(); - if (mask & MASK_MASK) atomKK->k_mask.modify(); - if (mask & IMAGE_MASK) atomKK->k_image.modify(); - } -} - diff --git a/src/USER-DPD/atom_vec_dpd_kokkos.h b/src/USER-DPD/atom_vec_dpd_kokkos.h deleted file mode 100644 index d108e58ae7..0000000000 --- a/src/USER-DPD/atom_vec_dpd_kokkos.h +++ /dev/null @@ -1,135 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale AtomicKokkos/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 ATOM_CLASS - -AtomStyle(dpd/kk,AtomVecDPDKokkos) - -#else - -#ifndef LMP_ATOM_VEC_DPD_KOKKOS_H -#define LMP_ATOM_VEC_DPD_KOKKOS_H - -#include "atom_vec_kokkos.h" -#include "kokkos_type.h" - -namespace LAMMPS_NS { - -class AtomVecDPDKokkos : public AtomVecKokkos { - public: - AtomVecDPDKokkos(class LAMMPS *); - virtual ~AtomVecDPDKokkos() {} - void grow(int); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, tagint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - - void grow_reset(); - int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, - const int & iswap, - const DAT::tdual_xfloat_2d &buf, - const int &pbc_flag, const int pbc[]); - void unpack_comm_kokkos(const int &n, const int &nfirst, - const DAT::tdual_xfloat_2d &buf); - int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, - const int & iswap, const int nfirst, - const int &pbc_flag, const int pbc[]); - int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, - DAT::tdual_xfloat_2d buf,int iswap, - int pbc_flag, int *pbc, ExecutionSpace space); - void unpack_border_kokkos(const int &n, const int &nfirst, - const DAT::tdual_xfloat_2d &buf, - ExecutionSpace space); - int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, - DAT::tdual_int_1d k_sendlist, - DAT::tdual_int_1d k_copylist, - ExecutionSpace space, int dim, - X_FLOAT lo, X_FLOAT hi); - int unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, - int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, - ExecutionSpace space); - - void sync(ExecutionSpace space, unsigned int mask); - void modified(ExecutionSpace space, unsigned int mask); - void sync_overlapping_device(ExecutionSpace space, unsigned int mask); - double *uCond,*uMech,*uChem,*uCG,*uCGnew,*rho,*dpdTheta; - double *duChem; - - protected: - DAT::t_efloat_1d d_uCond, d_uMech, d_uChem, d_uCG, d_uCGnew,d_rho,d_dpdTheta,d_duChem; - HAT::t_efloat_1d h_uCond, h_uMech, h_uChem, h_uCG, h_uCGnew,h_rho,h_dpdTheta,h_duChem; - - tagint *tag; - imageint *image; - int *type,*mask; - double **x,**v,**f; - - DAT::t_tagint_1d d_tag; - HAT::t_tagint_1d h_tag; - DAT::t_imageint_1d d_image; - HAT::t_imageint_1d h_image; - DAT::t_int_1d d_type, d_mask; - HAT::t_int_1d h_type, h_mask; - - DAT::t_x_array d_x; - DAT::t_v_array d_v; - DAT::t_f_array d_f; - HAT::t_x_array h_x; - HAT::t_v_array h_v; - HAT::t_f_array h_f; - - DAT::tdual_int_1d k_count; -}; - -} - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - -*/ -- GitLab From 1dbf6d443f45a96887c02999bec3832d3c534b61 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 13 Dec 2016 16:43:40 -0700 Subject: [PATCH 007/337] Adding Kokkos files --- src/Depend.sh | 4 + src/KOKKOS/Install.sh | 6 + src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 354 ++++++++++ src/KOKKOS/fix_eos_table_rx_kokkos.h | 152 +++++ src/KOKKOS/pair_exp6_rx_kokkos.cpp | 46 +- src/KOKKOS/pair_exp6_rx_kokkos.h | 9 +- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 791 +++++++++++++++++++++++ src/KOKKOS/pair_multi_lucy_rx_kokkos.h | 215 ++++++ src/KOKKOS/pair_table_kokkos.cpp | 758 +--------------------- src/KOKKOS/pair_table_kokkos.h | 44 +- src/KOKKOS/pair_table_rx_kokkos.cpp | 634 ++++++++++++++++++ src/KOKKOS/pair_table_rx_kokkos.h | 269 ++++++++ src/USER-DPD/pair_multi_lucy.h | 2 +- src/USER-DPD/pair_multi_lucy_rx.cpp | 6 +- src/USER-DPD/pair_multi_lucy_rx.h | 2 +- src/pair_table.h | 6 +- 16 files changed, 2493 insertions(+), 805 deletions(-) create mode 100644 src/KOKKOS/fix_eos_table_rx_kokkos.cpp create mode 100644 src/KOKKOS/fix_eos_table_rx_kokkos.h create mode 100644 src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp create mode 100644 src/KOKKOS/pair_multi_lucy_rx_kokkos.h create mode 100644 src/KOKKOS/pair_table_rx_kokkos.cpp create mode 100644 src/KOKKOS/pair_table_rx_kokkos.h diff --git a/src/Depend.sh b/src/Depend.sh index 44964d5182..51f83b2ea5 100644 --- a/src/Depend.sh +++ b/src/Depend.sh @@ -113,6 +113,10 @@ if (test $1 = "USER-CG-CMM") then depend USER-OMP fi +if (test $1 = "USER-DPD") then + depend KOKKOS +fi + if (test $1 = "USER-FEP") then depend USER-OMP fi diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 1381a1978c..567e825642 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -73,6 +73,8 @@ action domain_kokkos.cpp action domain_kokkos.h action fix_deform_kokkos.cpp action fix_deform_kokkos.h +action fix_eos_table_rx_kokkos.cpp fix_eos_table_rx.cpp +action fix_eos_table_rx_kokkos.h fix_eos_table_rx.h action fix_langevin_kokkos.cpp action fix_langevin_kokkos.h action fix_nh_kokkos.cpp @@ -171,6 +173,8 @@ action pair_lj_gromacs_kokkos.cpp action pair_lj_gromacs_kokkos.h action pair_lj_sdk_kokkos.cpp pair_lj_sdk.cpp action pair_lj_sdk_kokkos.h pair_lj_sdk.h +action pair_multi_lucy_rx_kokkos.cpp pair_multi_lucy_rx.cpp +action pair_multi_lucy_rx_kokkos.h pair_multi_lucy_rx.h action pair_reax_c_kokkos.cpp pair_reax_c.cpp action pair_reax_c_kokkos.h pair_reax_c.h action pair_sw_kokkos.cpp pair_sw.cpp @@ -179,6 +183,8 @@ action pair_vashishta_kokkos.cpp pair_vashishta.cpp action pair_vashishta_kokkos.h pair_vashishta.h action pair_table_kokkos.cpp action pair_table_kokkos.h +action pair_table_rx_kokkos.cpp pair_table_rx.cpp +action pair_table_rx_kokkos.h pair_table_rx.h action pair_tersoff_kokkos.cpp pair_tersoff.cpp action pair_tersoff_kokkos.h pair_tersoff.h action pair_tersoff_mod_kokkos.cpp pair_tersoff_mod.cpp diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp new file mode 100644 index 0000000000..a1e0b1a07d --- /dev/null +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -0,0 +1,354 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Stan Moore (Sandia) +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_eos_table_rx_kokkos.h" +#include "atom_kokkos.h" +#include "error.h" +#include "force.h" +#include "memory.h" +#include "comm.h" +#include +#include "modify.h" +#include "atom_masks.h" + +#define MAXLINE 1024 + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +template +FixEOStableRXKokkos::FixEOStableRXKokkos(LAMMPS *lmp, int narg, char **arg) : + FixEOStableRX(lmp, narg, arg) +{ + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +FixEOStableRXKokkos::~FixEOStableRXKokkos() +{ + +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::setup(int vflag) +{ + int nlocal = atom->nlocal; + mask = atomKK->k_mask.view(); + uCond = atomKK->k_uCond.view(); + uMech = atomKK->k_uMech.view(); + uChem = atomKK->k_uChem.view(); + dpdTheta= atomKK->k_dpdTheta.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + double duChem; + + for (int i = 0; i < nlocal; i++) // parallel_for + if (mask[i] & groupbit){ + duChem = uCG[i] - uCGnew[i]; + uChem[i] += duChem; + uCG[i] = 0.0; + uCGnew[i] = 0.0; + } + + // Communicate the updated momenta and velocities to all nodes + comm->forward_comm_fix(this); + + for (int i = 0; i < nlocal; i++) // parallel_for + if (mask[i] & groupbit) + temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::init() +{ + int nlocal = atom->nlocal; + mask = atomKK->k_mask.view(); + uCond = atomKK->k_uCond.view(); + uMech = atomKK->k_uMech.view(); + uChem = atomKK->k_uChem.view(); + dpdTheta= atomKK->k_dpdTheta.view(); + double tmp; + + if(this->restart_reset){ + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) + temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); + } else { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if(dpdTheta[i] <= 0.0) + error->one(FLERR,"Internal temperature <= zero"); + energy_lookup(i,dpdTheta[i],tmp); + uCond[i] = tmp / 2.0; + uMech[i] = tmp / 2.0; + uChem[i] = 0.0; + } + } +} + + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::post_integrate() +{ + int nlocal = atom->nlocal; + mask = atomKK->k_mask.view(); + uCond = atomKK->k_uCond.view(); + uMech = atomKK->k_uMech.view(); + uChem = atomKK->k_uChem.view(); + dpdTheta= atomKK->k_dpdTheta.view(); + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit){ + temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); + if(dpdTheta[i] <= 0.0) + error->one(FLERR,"Internal temperature <= zero"); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::end_of_step() +{ + int nlocal = atom->nlocal; + mask = atomKK->k_mask.view(); + uCond = atomKK->k_uCond.view(); + uMech = atomKK->k_uMech.view(); + uChem = atomKK->k_uChem.view(); + dpdTheta= atomKK->k_dpdTheta.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + double duChem; + + // Communicate the ghost uCGnew + comm->reverse_comm_fix(this); + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit){ + duChem = uCG[i] - uCGnew[i]; + uChem[i] += duChem; + uCG[i] = 0.0; + uCGnew[i] = 0.0; + } + + // Communicate the updated momenta and velocities to all nodes + comm->forward_comm_fix(this); + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit){ + temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); + if(dpdTheta[i] <= 0.0) + error->one(FLERR,"Internal temperature <= zero"); + } +} + +/* ---------------------------------------------------------------------- + calculate potential ui at temperature thetai +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::energy_lookup(int id, double thetai, double &ui) const +{ + int itable; + double fraction, uTmp, nTotal; + + ui = 0.0; + nTotal = 0.0; + for(int ispecies=0;ispecieslo); + thetai = MIN(thetai,tb->hi); + + if (tabstyle == LINEAR) { + itable = static_cast ((thetai - tb->lo) * tb->invdelta); + fraction = (thetai - tb->r[itable]) * tb->invdelta; + uTmp = tb->e[itable] + fraction*tb->de[itable]; + + uTmp += dHf[ispecies]; + // mol fraction form: + ui += atom->dvector[ispecies][id]*uTmp; + nTotal += atom->dvector[ispecies][id]; + } + } + ui = ui - double(nTotal+1.5)*force->boltz*thetai; +} + +/* ---------------------------------------------------------------------- + calculate temperature thetai at energy ui +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::temperature_lookup(int id, double ui, double &thetai) const +{ + Table *tb = &tables[0]; + + int it; + double t1,t2,u1,u2,f1,f2; + double maxit = 100; + double temp; + double delta = 0.001; + + // Store the current thetai in t1 + t1 = MAX(thetai,tb->lo); + t1 = MIN(t1,tb->hi); + if(t1==tb->hi) delta = -delta; + + // Compute u1 at thetai + energy_lookup(id,t1,u1); + + // Compute f1 + f1 = u1 - ui; + + // Compute guess of t2 + t2 = (1.0 + delta)*t1; + + // Compute u2 at t2 + energy_lookup(id,t2,u2); + + // Compute f1 + f2 = u2 - ui; + + // Apply the Secant Method + for(it=0; itone(FLERR,"NaN detected in secant solver."); + temp = t1; + temp = MAX(temp,tb->lo); + temp = MIN(temp,tb->hi); + char str[256]; + sprintf(str,"Secant solver did not converge because table bounds were exceeded: it=%d id=%d ui=%lf thetai=%lf t1=%lf t2=%lf f1=%lf f2=%lf dpdTheta=%lf\n",it,id,ui,thetai,t1,t2,f1,f2,temp); + error->warning(FLERR,str); + break; + } + temp = t2 - f2*(t2-t1)/(f2-f1); + if(fabs(temp-t2) < 1e-6) break; + f1 = f2; + t1 = t2; + t2 = temp; + energy_lookup(id,t2,u2); + f2 = u2 - ui; + } + if(it==maxit){ + char str[256]; + sprintf(str,"Maxit exceeded in secant solver: id=%d ui=%lf thetai=%lf t1=%lf t2=%lf f1=%lf f2=%lf\n",id,ui,thetai,t1,t2,f1,f2); + if(isnan(f1) || isnan(f2) || isnan(ui) || isnan(thetai) || isnan(t1) || isnan(t2)) + error->one(FLERR,"NaN detected in secant solver."); + error->one(FLERR,str); + } + thetai = temp; +} + +/* ---------------------------------------------------------------------- */ + +template +int FixEOStableRXKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + int ii,jj,m; + uChem = atomKK->k_uChem.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + + m = 0; + for (ii = 0; ii < n; ii++) { + jj = list[ii]; + buf[m++] = uChem[jj]; + buf[m++] = uCG[jj]; + buf[m++] = uCGnew[jj]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::unpack_forward_comm(int n, int first, double *buf) +{ + int ii,m,last; + uChem = atomKK->k_uChem.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + + m = 0; + last = first + n ; + for (ii = first; ii < last; ii++){ + uChem[ii] = buf[m++]; + uCG[ii] = buf[m++]; + uCGnew[ii] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +int FixEOStableRXKokkos::pack_reverse_comm(int n, int first, double *buf) +{ + int i,m,last; + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = uCG[i]; + buf[m++] = uCGnew[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i,j,m; + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + + uCG[j] += buf[m++]; + uCGnew[j] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +namespace LAMMPS_NS { +template class FixEOStableRXKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixEOStableRXKokkos; +#endif +} diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.h b/src/KOKKOS/fix_eos_table_rx_kokkos.h new file mode 100644 index 0000000000..9eccd67c54 --- /dev/null +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.h @@ -0,0 +1,152 @@ +/* -*- 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(eos/table/rx/kk,FixEOStableRXKokkos) +FixStyle(eos/table/rx/kk/device,FixEOStableRXKokkos) +FixStyle(eos/table/rx/kk/host,FixEOStableRXKokkos) + +#else + +#ifndef LMP_FIX_EOS_TABLE_RX_KOKKOS_H +#define LMP_FIX_EOS_TABLE_RX_KOKKOS_H + +#include "fix_eos_table_rx.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class FixEOStableRXKokkos : public FixEOStableRX { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef EV_FLOAT value_type; + + FixEOStableRXKokkos(class LAMMPS *, int, char **); + virtual ~FixEOStableRXKokkos(); + void setup(int); + void init(); + void post_integrate(); + void end_of_step(); + + KOKKOS_INLINE_FUNCTION + void energy_lookup(int, double, double &) const; + + KOKKOS_INLINE_FUNCTION + void temperature_lookup(int, double, double &) const; + + protected: + //struct Table { + // int ninput; + // double lo,hi; + // double *rfile,*efile; + // double *e2file; + // double delta,invdelta,deltasq6; + // double *r,*e,*de,*e2; + //}; + //Table *tables, *tables2; + + void allocate(); + + //double *dHf; + + typename AT::t_int_1d mask; + typename AT::t_efloat_1d uCond,uMech,uChem,uCG,uCGnew,rho,dpdTheta,duChem; + + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + int pack_forward_comm(int , int *, double *, int, int *); + void unpack_forward_comm(int , int , double *); + + //int *eosSpecies; + }; +} + +#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: FixEOStableRXKokkos requires a fix rx command. + +The fix rx command must come before the pair style command in the input file + +E: There are no rx species specified + +There must be at least one species specified through the fix rx command + +E: Invalid eos/table/rx length + +The eos/table/rx table must have more than one entry. + +E: eos/table/rx values are not increasing + +The equation-of-state must an increasing function + +E: Internal temperature <= zero. + +Self-explanatory. + +E: Cannot open eos table/rx potential file %s + +Self-explanatory. + +E: Incorrect format in eos table/rx file + +Self-explanatory. + +E: Cannot open file %s + +Self-explanatory. + +E: Did not find keyword in table file + +Self-explanatory. + +E: Illegal fix eos/table/rx command + +Incorrect number of arguments specified for the fix eos/table/rx command. + +E: Invalid keyword in fix eos/table/rx parameters + +Self-explanatory. + +E: The number of columns in fix eos/table/rx does not match the number of species. + +Self-explanatory. Check format for fix eos/table/rx file. + +E: fix eos/table/rx parameters did not set N + +The number of table entries was not set in the eos/table/rx file + +W: Secant solver did not converge because table bounds were exceeded + +The secant solver failed to converge, resulting in the lower or upper table bound temperature to be returned + +E: NaN detected in secant solver. + +Self-explanatory. + +E: Maxit exceeded in secant solver + +The maximum number of interations was exceeded in the secant solver + +*/ diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 754fa4667d..a7d5569537 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -31,6 +31,8 @@ #include "modify.h" #include "fix.h" #include +#include "atom_masks.h" +#include "neigh_request.h" using namespace LAMMPS_NS; using namespace MathConst; @@ -50,7 +52,10 @@ using namespace MathSpecial; template PairExp6rxKokkos::PairExp6rxKokkos(LAMMPS *lmp) : PairExp6rx(lmp) { - + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; } /* ---------------------------------------------------------------------- */ @@ -63,6 +68,39 @@ PairExp6rxKokkos::~PairExp6rxKokkos() /* ---------------------------------------------------------------------- */ +template +void PairExp6rxKokkos::init_style() +{ + PairExp6rxKokkos::init_style(); + + // irequest = neigh request made by parent class + + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full_cluster = 0; + neighbor->requests[irequest]->ghost = 1; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + neighbor->requests[irequest]->full_cluster = 0; + neighbor->requests[irequest]->ghost = 1; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); + } +} + +/* ---------------------------------------------------------------------- */ + template void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) { @@ -270,14 +308,14 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxCompute KOKKOS_INLINE_FUNCTION @@ -73,9 +77,6 @@ class PairExp6rxKokkos : public PairExp6rx { KOKKOS_INLINE_FUNCTION void operator()(TagPairExp6rxCompute, const int&) const; - KOKKOS_INLINE_FUNCTION - void operator()(TagPairExp6rxgetParamsEXP6, const int&) const; - template KOKKOS_INLINE_FUNCTION void ev_tally(EV_FLOAT &ev, const int &i, const int &j, diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp new file mode 100644 index 0000000000..de70ae86f5 --- /dev/null +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -0,0 +1,791 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------------------------- + Contributing authors: + Stan Moore (Sandia) + + Please cite the related publications: + J.D. Moore, B.C. Barnes, S. Izvekov, M. Lisal, M.S. Sellers, D.E. Taylor & J.K. Brennan + "A coarse-grain force field for RDX: Density dependent and energy conserving" + The Journal of Chemical Physics, 2016, 144, 104501. +------------------------------------------------------------------------------------------- */ + +#include +#include +#include "math_const.h" +#include +#include +#include "pair_multi_lucy_rx_kokkos.h" +#include "atom_kokkos.h" +#include "force.h" +#include "comm.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" +#include "citeme.h" +#include "modify.h" +#include "fix.h" +#include "atom_masks.h" +#include "neigh_request.h" + +using namespace LAMMPS_NS; + +enum{NONE,RLINEAR,RSQ}; + +#define MAXLINE 1024 + +#define oneFluidParameter (-1) +#define isOneFluid(_site) ( (_site) == oneFluidParameter ) + +static const char cite_pair_multi_lucy_rx[] = + "pair_style multi/lucy/rx command:\n\n" + "@Article{Moore16,\n" + " author = {J.D. Moore, B.C. Barnes, S. Izvekov, M. Lisal, M.S. Sellers, D.E. Taylor and J. K. Brennan},\n" + " title = {A coarse-grain force field for RDX: Density dependent and energy conserving},\n" + " journal = {J. Chem. Phys.},\n" + " year = 2016,\n" + " volume = 144\n" + " pages = {104501}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +template +PairMultiLucyRXKokkos::PairMultiLucyRXKokkos(LAMMPS *lmp) : PairMultiLucyRX(lmp) +{ + respa_enable = 0; + + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +PairMultiLucyRXKokkos::~PairMultiLucyRXKokkos() +{ + +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::init_style() +{ + PairMultiLucyRX::init_style(); + + // irequest = neigh request made by parent class + + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full_cluster = 0; + neighbor->requests[irequest]->ghost = 1; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + neighbor->requests[irequest]->full_cluster = 0; + neighbor->requests[irequest]->ghost = 1; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::compute(int eflag_in, int vflag_in) +{ + eflag = eflag_in; + vflag = vflag_in; + + double evdwl,evdwlOld; + + evdwlOld = 0.0; + evdwl = 0.0; + if (neighflag == FULL) no_virial_fdotr_compute = 1; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + // reallocate per-atom arrays if necessary + + if (eflag_atom) { + memory->destroy_kokkos(k_eatom,eatom); + memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.d_view; + } + if (vflag_atom) { + memory->destroy_kokkos(k_vatom,vatom); + memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); + d_vatom = k_vatom.d_view; + } + + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + type = atomKK->k_type.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + dvector = atomKK->k_dvector.view(); + rho = atomKK->k_rho.view(); + + nlocal = atom->nlocal; + int nghost = atom->nghost; + int newton_pair = force->newton_pair; + + { + const int ntotal = nlocal + nghost; + d_fractionOld1 = typename AT::t_float_1d("PairMultiLucyRX::fractionOld1",ntotal); + d_fractionOld2 = typename AT::t_float_1d("PairMultiLucyRX::fractionOld2",ntotal); + d_fraction1 = typename AT::t_float_1d("PairMultiLucyRX::fraction1",ntotal); + d_fraction2 = typename AT::t_float_1d("PairMultiLucyRX::fraction2",ntotal); + + Kokkos::parallel_for(Kokkos::RangePolicy(0,ntotal),*this); + } + + const int inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + computeLocalDensity(); + + // loop over neighbors of my atoms + + EV_FLOAT ev; + + if (evflag) { + Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + } else { + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + + if (eflag_global) eng_vdwl += ev.evdwl; + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } + + copymode = 0; +} + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXgetParams, const int &i) const { + getParams(i, d_fractionOld1[i], d_fractionOld2[i], d_fraction1[i], d_fraction2[i]); +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute, const int &ii, EV_FLOAT& ev) const { + int i,j,jj,inum,jnum,itype,jtype,itable; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; + double rsq; + + double fractionOld1_i,fractionOld1_j; + double fractionOld2_i,fractionOld2_j; + double fraction1_i; + + double pi = MathConst::MY_PI; + double A_i, A_j; + double fraction_i,fraction_j; + int jtable; + + Table *tb; + + int tlm1 = tablength - 1; + + i = d_ilist[ii]; + xtmp = x(i,0); + ytmp = x(i,1); + ztmp = x(i,2); + itype = type[i]; + jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + + fractionOld1_i = d_fractionOld1[i]; + fractionOld2_i = d_fractionOld2[i]; + fraction1_i = d_fraction1[i]; + + for (jj = 0; jj < jnum; jj++) { + int j = d_neighbors(i,jj); + j &= NEIGHMASK; + + delx = xtmp - x(j,0); + dely = ytmp - x(j,1); + delz = ztmp - x(j,2); + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < d_cutsq(itype,jtype)) { // optimize + fpair = 0.0; + + fractionOld1_j = d_fractionOld1[j]; + fractionOld2_j = d_fractionOld2[j]; + + tb = &tables[tabindex[itype][jtype]]; + if (rho[i]*rho[i] < tb->innersq || rho[j]*rho[j] < tb->innersq){ + //printf("Table inner cutoff = %lf\n",sqrt(tb->innersq)); + //printf("rho[%d]=%lf\n",i,rho[i]); + //printf("rho[%d]=%lf\n",j,rho[j]); + error->one(FLERR,"Density < table inner cutoff"); + } + if (tabstyle == LOOKUP) { + itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); + jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); + if (itable >= tlm1 || jtable >= tlm1){ + //printf("Table outer index = %d\n",tlm1); + //printf("itableIndex=%d rho[%d]=%lf\n",itable,i,rho[i]); + //printf("jtableIndex=%d rho[%d]=%lf\n",jtable,j,rho[j]); + error->one(FLERR,"Density > table outer cutoff"); + } + A_i = tb->f[itable]; + A_j = tb->f[jtable]; + + const double rfactor = 1.0-sqrt(rsq/d_cutsq(itype,jtype)); + fpair = 0.5*(A_i + A_j)*(4.0-3.0*rfactor)*rfactor*rfactor*rfactor; + fpair /= sqrt(rsq); + + } else if (tabstyle == LINEAR) { + itable = static_cast ((rho[i]*rho[i] - tb->innersq) * tb->invdelta); + jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); + if (itable >= tlm1 || jtable >= tlm1){ + //printf("Table outer index = %d\n",tlm1); + //printf("itableIndex=%d rho[%d]=%lf\n",itable,i,rho[i]); + //printf("jtableIndex=%d rho[%d]=%lf\n",jtable,j,rho[j]); + error->one(FLERR,"Density > table outer cutoff"); + } + if(itable<0) itable=0; + if(itable>=tlm1) itable=tlm1; + if(jtable<0) jtable=0; + if(jtable>=tlm1)jtable=tlm1; + + fraction_i = (((rho[i]*rho[i]) - tb->rsq[itable]) * tb->invdelta); + fraction_j = (((rho[j]*rho[j]) - tb->rsq[jtable]) * tb->invdelta); + if(itable==0) fraction_i=0.0; + if(itable==tlm1) fraction_i=0.0; + if(jtable==0) fraction_j=0.0; + if(jtable==tlm1) fraction_j=0.0; + + A_i = tb->f[itable] + fraction_i*tb->df[itable]; + A_j = tb->f[jtable] + fraction_j*tb->df[jtable]; + + const double rfactor = 1.0-sqrt(rsq/d_cutsq(itype,jtype)); + fpair = 0.5*(A_i + A_j)*(4.0-3.0*rfactor)*rfactor*rfactor*rfactor; + fpair /= sqrt(rsq); + + } else error->one(FLERR,"Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx"); + + if (isite1 == isite2) fpair = sqrt(fractionOld1_i*fractionOld2_j)*fpair; + else fpair = (sqrt(fractionOld1_i*fractionOld2_j) + sqrt(fractionOld2_i*fractionOld1_j))*fpair; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f(j,0) -= delx*fpair; + f(j,1) -= dely*fpair; + f(j,2) -= delz*fpair; + } + //if (evflag) ev_tally(i,j,nlocal,newton_pair,0.0,0.0,fpair,delx,dely,delz); + if (EVFLAG) this->template ev_tally(ev,i,j,0.0,fpair,delx,dely,delz); + } + } + + f(i,0) += fx_i; + f(i,1) += fy_i; + f(i,2) += fz_i; + + tb = &tables[tabindex[itype][itype]]; + itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); + if (tabstyle == LOOKUP) evdwl = tb->e[itable]; + else if (tabstyle == LINEAR){ + if (itable >= tlm1){ + //printf("itableIndex=%d rho[%d]=%lf\n",itable,i,rho[i]); + error->one(FLERR,"Density > table outer cutoff"); + } + if(itable==0) fraction_i=0.0; + else fraction_i = (((rho[i]*rho[i]) - tb->rsq[itable]) * tb->invdelta); + evdwl = tb->e[itable] + fraction_i*tb->de[itable]; + } else error->one(FLERR,"Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx"); + + evdwl *=(pi*d_cutsq(itype,itype)*d_cutsq(itype,itype))/84.0; + evdwlOld = fractionOld1_i*evdwl; + evdwl = fraction1_i*evdwl; + + uCG[i] += evdwlOld; + uCGnew[i] += evdwl; + + evdwl = evdwlOld; + + //if (evflag) ev_tally(0,0,nlocal,newton_pair,evdwl,0.0,0.0,0.0,0.0,0.0); + if (EVFLAG) ev.evdwl += evdwl; +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairMultiLucyRXCompute(), ii, ev); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::coeff(int narg, char **arg) +{ + if (narg != 6 && narg != 7) error->all(FLERR,"Illegal pair_coeff command"); + + bool rx_flag = false; + for (int i = 0; i < modify->nfix; i++) + if (strncmp(modify->fix[i]->style,"rx",2) == 0) rx_flag = true; + if (!rx_flag) error->all(FLERR,"PairMultiLucyRXKokkos requires a fix rx command."); + + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + int me; + MPI_Comm_rank(world,&me); + tables = (Table *) + memory->srealloc(tables,(ntables+1)*sizeof(Table),"pair:tables"); + Table *tb = &tables[ntables]; + null_table(tb); + if (me == 0) read_table(tb,arg[2],arg[3]); + bcast_table(tb); + + nspecies = atom->nspecies_dpd; + int n; + n = strlen(arg[3]) + 1; + site1 = new char[n]; + strcpy(site1,arg[4]); + + n = strlen(arg[4]) + 1; + site2 = new char[n]; + strcpy(site2,arg[5]); + + // set table cutoff + + if (narg == 7) tb->cut = force->numeric(FLERR,arg[6]); + else if (tb->rflag) tb->cut = tb->rhi; + else tb->cut = tb->rfile[tb->ninput-1]; + + // error check on table parameters + // insure cutoff is within table + + if (tb->ninput <= 1) error->one(FLERR,"Invalid pair table length"); + if (tb->rflag == 0) { + rho_0 = tb->rfile[0]; + } else { + rho_0 = tb->rlo; + } + + tb->match = 0; + if (tabstyle == LINEAR && tb->ninput == tablength && + tb->rflag == RSQ) tb->match = 1; + + // spline read-in values and compute r,e,f vectors within table + + if (tb->match == 0) spline_table(tb); + compute_table(tb); + + // store ptr to table in tabindex + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + tabindex[i][j] = ntables; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) error->all(FLERR,"Illegal pair_coeff command"); + ntables++; + + // Match site* to isite values. + + if (strcmp(site1, "1fluid") == 0) + isite1 = oneFluidParameter; + else { + isite1 = nspecies; + for (int ispecies = 0; ispecies < nspecies; ++ispecies) + if (strcmp(site1, atom->dname[ispecies]) == 0){ + isite1 = ispecies; + break; + } + + if (isite1 == nspecies) + error->all(FLERR,"Pair_multi_lucy_rx site1 is invalid."); + } + + if (strcmp(site2, "1fluid") == 0) + isite2 = oneFluidParameter; + else { + isite2 = nspecies; + for (int ispecies = 0; ispecies < nspecies; ++ispecies) + if (strcmp(site2, atom->dname[ispecies]) == 0){ + isite2 = ispecies; + break; + } + + if (isite2 == nspecies) + error->all(FLERR,"Pair_multi_lucy_rx site2 is invalid."); + } + +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::computeLocalDensity() +{ + x = atomKK->k_x.view(); + type = atomKK->k_type.view(); + rho = atomKK->k_rho.view(); + nlocal = atom->nlocal; + + //sync + + const int inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + const double pi = MathConst::MY_PI; + + const bool newton_pair = force->newton_pair; + one_type = (atom->ntypes == 1); + + // Special cut-off values for when there's only one type. + cutsq_type11 = cutsq[1][1]; + rcut_type11 = sqrt(cutsq_type11); + factor_type11 = 84.0/(5.0*pi*rcut_type11*rcut_type11*rcut_type11); + + // zero out density + int m = nlocal; + if (newton_pair) m += atom->nghost; + Kokkos::parallel_for(Kokkos::RangePolicy(0,m),*this); + +// rho = density at each atom +// loop over neighbors of my atoms + if (newton_pair) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + + if (newton_pair) comm->reverse_comm_pair(this); + + comm->forward_comm_pair(this); +} + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXZero, const int &i) const { + rho[i] = 0.0; +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLocalDensity, const int &ii) const { + const int i = d_ilist[ii]; + + const double xtmp = x(i,0); + const double ytmp = x(i,1); + const double ztmp = x(i,2); + + double rho_i = rho[i]; + + const int itype = type[i]; + const int jnum = d_numneigh[i]; + + const double pi = MathConst::MY_PI; + + for (int jj = 0; jj < jnum; jj++){ + const int j = (d_neighbors(i,jj) & NEIGHMASK); + const int jtype = type[j]; + + const double delx = xtmp - x(j,0); + const double dely = ytmp - x(j,1); + const double delz = ztmp - x(j,2); + const double rsq = delx*delx + dely*dely + delz*delz; + + if (one_type) { + if (rsq < cutsq_type11) { + const double rcut = rcut_type11; + const double r_over_rcut = sqrt(rsq) / rcut; + const double tmpFactor = 1.0 - r_over_rcut; + const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; + const double factor = factor_type11*(1.0 + 1.5*r_over_rcut)*tmpFactor4; + rho_i += factor; + if (NEWTON_PAIR || j < nlocal) + rho[j] += factor; + } else if (rsq < d_cutsq(itype,jtype)) { + const double rcut = sqrt(d_cutsq(itype,jtype)); + const double tmpFactor = 1.0-sqrt(rsq)/rcut; + const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; + const double factor = (84.0/(5.0*pi*rcut*rcut*rcut))*(1.0+3.0*sqrt(rsq)/(2.0*rcut))*tmpFactor4; + rho_i += factor; + if (NEWTON_PAIR || j < nlocal) + rho[j] += factor; + } + } + } + + rho[i] = rho_i; +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::getParams(int id, double &fractionOld1, double &fractionOld2, double &fraction1, double &fraction2) const +{ + double fractionOld, fraction; + double nTotal, nTotalOld; + + nTotal = 0.0; + nTotalOld = 0.0; + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + nTotal += dvector(ispecies,id); + nTotalOld += dvector(ispecies+nspecies,id); + } + + if (isOneFluid(isite1) == false){ + fractionOld1 = dvector(isite1+nspecies,id)/nTotalOld; + fraction1 = dvector(isite1,id)/nTotal; + } + if (isOneFluid(isite2) == false){ + fractionOld2 = dvector(isite2+nspecies,id)/nTotalOld; + fraction2 = dvector(isite2,id)/nTotal; + } + + if (isOneFluid(isite1) || isOneFluid(isite2)){ + fractionOld = 0.0; + fraction = 0.0; + + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + if (isite1 == ispecies || isite2 == ispecies) continue; + fractionOld += dvector(ispecies+nspecies,id) / nTotalOld; + fraction += dvector(ispecies,id) / nTotal; + } + if (isOneFluid(isite1)){ + fractionOld1 = fractionOld; + fraction1 = fraction; + } + if (isOneFluid(isite2)){ + fractionOld2 = fractionOld; + fraction2 = fraction; + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +int PairMultiLucyRXKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + int i,j,m; + rho = atomKK->k_rho.view(); + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = rho[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::unpack_forward_comm(int n, int first, double *buf) +{ + int i,m,last; + rho = atomKK->k_rho.view(); + + m = 0; + last = first + n; + for (i = first; i < last; i++) rho[i] = buf[m++]; +} + +/* ---------------------------------------------------------------------- */ + +template +int PairMultiLucyRXKokkos::pack_reverse_comm(int n, int first, double *buf) +{ + int i,m,last; + rho = atomKK->k_rho.view(); + + m = 0; + last = first + n; + for (i = first; i < last; i++) buf[m++] = rho[i]; + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i,j,m; + rho = atomKK->k_rho.view(); + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + rho[j] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const +{ + const int EFLAG = eflag; + const int VFLAG = vflag_either; + + // The eatom and vatom arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > v_eatom = k_eatom.view(); + Kokkos::View::value> > v_vatom = k_vatom.view(); + + if (EFLAG) { + if (eflag_atom) { + const E_FLOAT epairhalf = 0.5 * epair; + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) v_eatom[i] += epairhalf; + if (NEWTON_PAIR || j < nlocal) v_eatom[j] += epairhalf; + } else { + v_eatom[i] += epairhalf; + } + } + } + + if (VFLAG) { + const E_FLOAT v0 = delx*delx*fpair; + const E_FLOAT v1 = dely*dely*fpair; + const E_FLOAT v2 = delz*delz*fpair; + const E_FLOAT v3 = delx*dely*fpair; + const E_FLOAT v4 = delx*delz*fpair; + const E_FLOAT v5 = dely*delz*fpair; + + if (vflag_global) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + + if (vflag_atom) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + v_vatom(j,0) += 0.5*v0; + v_vatom(j,1) += 0.5*v1; + v_vatom(j,2) += 0.5*v2; + v_vatom(j,3) += 0.5*v3; + v_vatom(j,4) += 0.5*v4; + v_vatom(j,5) += 0.5*v5; + } + } else { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +namespace LAMMPS_NS { +template class PairMultiLucyRXKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class PairMultiLucyRXKokkos; +#endif +} diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h new file mode 100644 index 0000000000..74a10ddee1 --- /dev/null +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h @@ -0,0 +1,215 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(multi/lucy/rx/kk,PairMultiLucyRXKokkos) +PairStyle(multi/lucy/rx/kk/device,PairMultiLucyRXKokkos) +PairStyle(multi/lucy/rx/kk/host,PairMultiLucyRXKokkos) + +#else + +#ifndef LMP_PAIR_MULTI_LUCY_RX_KOKKOS_H +#define LMP_PAIR_MULTI_LUCY_RX_KOKKOS_H + + +#include "pair_multi_lucy_rx.h" +#include "pair_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +struct TagPairMultiLucyRXgetParams{}; + +template +struct TagPairMultiLucyRXCompute{}; + +struct TagPairMultiLucyRXZero{}; + +template +struct TagPairMultiLucyRXComputeLocalDensity{}; + +template +class PairMultiLucyRXKokkos : public PairMultiLucyRX { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef EV_FLOAT value_type; + + PairMultiLucyRXKokkos(class LAMMPS *); + virtual ~PairMultiLucyRXKokkos(); + + void compute(int, int); + void init_style(); + void coeff(int, char **); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + void computeLocalDensity(); + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXgetParams, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXCompute, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXCompute, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXZero, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXComputeLocalDensity, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const; + + private: + int nlocal; + int neighflag; + int eflag,vflag; + + bool one_type; + double cutsq_type11; + double rcut_type11; + double factor_type11; + + //struct Table { + // int ninput,rflag,fpflag,match; + // double rlo,rhi,fplo,fphi,cut; + // double *rfile,*efile,*ffile; + // double *e2file,*f2file; + // double innersq,delta,invdelta,deltasq6; + // double *rsq,*drsq,*e,*de,*f,*df,*e2,*f2; + //}; + //Table *tables; + + int **tabindex; + + //void read_table(Table *, char *, char *); + //void param_extract(Table *, char *); + + char *site1, *site2; + + KOKKOS_INLINE_FUNCTION + void getParams(int, double &, double &, double &, double &) const; + + typename AT::t_float_1d d_fractionOld1,d_fractionOld2,d_fraction1,d_fraction2; + + typename AT::t_x_array_randomread x; + typename AT::t_f_array f; + typename AT::t_int_1d_randomread type; + typename AT::t_efloat_1d rho; + typename AT::t_efloat_1d uCG, uCGnew; + typename AT::t_float_2d dvector; + + DAT::tdual_efloat_1d k_eatom; + DAT::tdual_virial_array k_vatom; + DAT::t_efloat_1d d_eatom; + DAT::t_virial_array d_vatom; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist; + typename AT::t_int_1d_randomread d_numneigh; + + typename AT::tdual_ffloat_2d k_cutsq; + typename AT::t_ffloat_2d d_cutsq; + + friend void pair_virial_fdotr_compute(PairMultiLucyRXKokkos*); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Pair multi/lucy/rx command requires atom_style with density (e.g. dpd, meso) + +Self-explanatory + +E: Density < table inner cutoff + +The local density inner is smaller than the inner cutoff + +E: Density > table inner cutoff + +The local density inner is greater than the inner cutoff + +E: Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx + +Self-explanatory + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Unknown table style in pair_style command + +Self-explanatory + +E: Illegal number of pair table entries + +There must be at least 2 table entries. + +E: Illegal pair_coeff command + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +E: PairMultiLucyRXKokkos requires a fix rx command + +The fix rx command must come before the pair style command in the input file + +E: There are no rx species specified + +There must be at least one species specified through the fix rx command + +E: Invalid pair table length + +Length of read-in pair table is invalid + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +E: Cannot open file %s + +The specified file cannot be opened. Check that the path and name are +correct. + +E: Did not find keyword in table file + +Keyword used in pair_coeff command was not found in table file. + +E: Invalid keyword in pair table parameters + +Keyword used in list of table parameters is not recognized. + +E: Pair table parameters did not set N + +List of pair table parameters must include N setting. + +*/ diff --git a/src/KOKKOS/pair_table_kokkos.cpp b/src/KOKKOS/pair_table_kokkos.cpp index 278c5b0a2f..271490bbdd 100644 --- a/src/KOKKOS/pair_table_kokkos.cpp +++ b/src/KOKKOS/pair_table_kokkos.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Paul Crozier (SNL) + Contributing author: Christian Trott (SNL) ------------------------------------------------------------------------- */ #include @@ -41,7 +41,7 @@ enum{FULL,HALFTHREAD,HALF}; /* ---------------------------------------------------------------------- */ template -PairTableKokkos::PairTableKokkos(LAMMPS *lmp) : Pair(lmp) +PairTableKokkos::PairTableKokkos(LAMMPS *lmp) : PairTable(lmp) { update_table = 0; atomKK = (AtomKokkos *) atom; @@ -98,6 +98,7 @@ void PairTableKokkos::compute_style(int eflag_in, int vflag_in) if (neighflag == FULL || neighflag == FULLCLUSTER) no_virial_fdotr_compute = 1; + if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; @@ -221,6 +222,7 @@ compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, c //if (rsq < d_table_const.innersq(tidx)) // error->one(FLERR,"Pair distance < table inner cutoff"); + if (Specialisation::TabStyle == LOOKUP) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); //if (itable >= tlm1) @@ -338,8 +340,6 @@ void PairTableKokkos::create_kokkos_tables() memory->create_kokkos(d_table->drsq,h_table->drsq,ntables,ntable,"Table::drsq"); } - - for(int i=0; i < ntables; i++) { Table* tb = &tables[i]; @@ -477,85 +477,6 @@ void PairTableKokkos::settings(int narg, char **arg) tables = NULL; } -/* ---------------------------------------------------------------------- - set coeffs for one or more type pairs -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::coeff(int narg, char **arg) -{ - if (narg != 4 && narg != 5) error->all(FLERR,"Illegal pair_coeff command"); - if (!allocated) allocate(); - - int ilo,ihi,jlo,jhi; - force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); - force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); - - int me; - MPI_Comm_rank(world,&me); - tables = (Table *) - memory->srealloc(tables,(ntables+1)*sizeof(Table),"pair:tables"); - Table *tb = &tables[ntables]; - null_table(tb); - if (me == 0) read_table(tb,arg[2],arg[3]); - bcast_table(tb); - - // set table cutoff - - if (narg == 5) tb->cut = force->numeric(FLERR,arg[4]); - else if (tb->rflag) tb->cut = tb->rhi; - else tb->cut = tb->rfile[tb->ninput-1]; - - // error check on table parameters - // insure cutoff is within table - // for BITMAP tables, file values can be in non-ascending order - - if (tb->ninput <= 1) error->one(FLERR,"Invalid pair table length"); - double rlo,rhi; - if (tb->rflag == 0) { - rlo = tb->rfile[0]; - rhi = tb->rfile[tb->ninput-1]; - } else { - rlo = tb->rlo; - rhi = tb->rhi; - } - if (tb->cut <= rlo || tb->cut > rhi) - error->all(FLERR,"Invalid pair table cutoff"); - if (rlo <= 0.0) error->all(FLERR,"Invalid pair table cutoff"); - - // match = 1 if don't need to spline read-in tables - // this is only the case if r values needed by final tables - // exactly match r values read from file - // for tabstyle SPLINE, always need to build spline tables - - tb->match = 0; - if (tabstyle == LINEAR && tb->ninput == tablength && - tb->rflag == RSQ && tb->rhi == tb->cut) tb->match = 1; - if (tabstyle == BITMAP && tb->ninput == 1 << tablength && - tb->rflag == BMP && tb->rhi == tb->cut) tb->match = 1; - if (tb->rflag == BMP && tb->match == 0) - error->all(FLERR,"Bitmapped table in file does not match requested table"); - - // spline read-in values and compute r,e,f vectors within table - - if (tb->match == 0) spline_table(tb); - compute_table(tb); - - // store ptr to table in tabindex - - int count = 0; - for (int i = ilo; i <= ihi; i++) { - for (int j = MAX(jlo,i); j <= jhi; j++) { - tabindex[i][j] = ntables; - setflag[i][j] = 1; - count++; - } - } - - if (count == 0) error->all(FLERR,"Illegal pair_coeff command"); - ntables++; -} - /* ---------------------------------------------------------------------- init for one type pair i,j and corresponding j,i ------------------------------------------------------------------------- */ @@ -574,677 +495,6 @@ double PairTableKokkos::init_one(int i, int j) return tables[tabindex[i][j]].cut; } -/* ---------------------------------------------------------------------- - read a table section from a tabulated potential file - only called by proc 0 - this function sets these values in Table: - ninput,rfile,efile,ffile,rflag,rlo,rhi,fpflag,fplo,fphi,ntablebits -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::read_table(Table *tb, char *file, char *keyword) -{ - char line[MAXLINE]; - - // open file - - FILE *fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - sprintf(str,"Cannot open file %s",file); - error->one(FLERR,str); - } - - // loop until section found with matching keyword - - while (1) { - if (fgets(line,MAXLINE,fp) == NULL) - error->one(FLERR,"Did not find keyword in table file"); - if (strspn(line," \t\n\r") == strlen(line)) continue; // blank line - if (line[0] == '#') continue; // comment - char *word = strtok(line," \t\n\r"); - if (strcmp(word,keyword) == 0) break; // matching keyword - fgets(line,MAXLINE,fp); // no match, skip section - param_extract(tb,line); - fgets(line,MAXLINE,fp); - for (int i = 0; i < tb->ninput; i++) fgets(line,MAXLINE,fp); - } - - // read args on 2nd line of section - // allocate table arrays for file values - - fgets(line,MAXLINE,fp); - param_extract(tb,line); - memory->create(tb->rfile,tb->ninput,"pair:rfile"); - memory->create(tb->efile,tb->ninput,"pair:efile"); - memory->create(tb->ffile,tb->ninput,"pair:ffile"); - - // setup bitmap parameters for table to read in - - tb->ntablebits = 0; - int masklo,maskhi,nmask,nshiftbits; - if (tb->rflag == BMP) { - while (1 << tb->ntablebits < tb->ninput) tb->ntablebits++; - if (1 << tb->ntablebits != tb->ninput) - error->one(FLERR,"Bitmapped table is incorrect length in table file"); - init_bitmap(tb->rlo,tb->rhi,tb->ntablebits,masklo,maskhi,nmask,nshiftbits); - } - - // read r,e,f table values from file - // if rflag set, compute r - // if rflag not set, use r from file - - int itmp; - double rtmp; - union_int_float_t rsq_lookup; - - fgets(line,MAXLINE,fp); - for (int i = 0; i < tb->ninput; i++) { - fgets(line,MAXLINE,fp); - sscanf(line,"%d %lg %lg %lg",&itmp,&rtmp,&tb->efile[i],&tb->ffile[i]); - - if (tb->rflag == RLINEAR) - rtmp = tb->rlo + (tb->rhi - tb->rlo)*i/(tb->ninput-1); - else if (tb->rflag == RSQ) { - rtmp = tb->rlo*tb->rlo + - (tb->rhi*tb->rhi - tb->rlo*tb->rlo)*i/(tb->ninput-1); - rtmp = sqrt(rtmp); - } else if (tb->rflag == BMP) { - rsq_lookup.i = i << nshiftbits; - rsq_lookup.i |= masklo; - if (rsq_lookup.f < tb->rlo*tb->rlo) { - rsq_lookup.i = i << nshiftbits; - rsq_lookup.i |= maskhi; - } - rtmp = sqrtf(rsq_lookup.f); - } - - tb->rfile[i] = rtmp; - } - - // close file - - fclose(fp); -} - -/* ---------------------------------------------------------------------- - broadcast read-in table info from proc 0 to other procs - this function communicates these values in Table: - ninput,rfile,efile,ffile,rflag,rlo,rhi,fpflag,fplo,fphi -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::bcast_table(Table *tb) -{ - MPI_Bcast(&tb->ninput,1,MPI_INT,0,world); - - int me; - MPI_Comm_rank(world,&me); - if (me > 0) { - memory->create(tb->rfile,tb->ninput,"pair:rfile"); - memory->create(tb->efile,tb->ninput,"pair:efile"); - memory->create(tb->ffile,tb->ninput,"pair:ffile"); - } - - MPI_Bcast(tb->rfile,tb->ninput,MPI_DOUBLE,0,world); - MPI_Bcast(tb->efile,tb->ninput,MPI_DOUBLE,0,world); - MPI_Bcast(tb->ffile,tb->ninput,MPI_DOUBLE,0,world); - - MPI_Bcast(&tb->rflag,1,MPI_INT,0,world); - if (tb->rflag) { - MPI_Bcast(&tb->rlo,1,MPI_DOUBLE,0,world); - MPI_Bcast(&tb->rhi,1,MPI_DOUBLE,0,world); - } - MPI_Bcast(&tb->fpflag,1,MPI_INT,0,world); - if (tb->fpflag) { - MPI_Bcast(&tb->fplo,1,MPI_DOUBLE,0,world); - MPI_Bcast(&tb->fphi,1,MPI_DOUBLE,0,world); - } -} - -/* ---------------------------------------------------------------------- - build spline representation of e,f over entire range of read-in table - this function sets these values in Table: e2file,f2file -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::spline_table(Table *tb) -{ - memory->create(tb->e2file,tb->ninput,"pair:e2file"); - memory->create(tb->f2file,tb->ninput,"pair:f2file"); - - double ep0 = - tb->ffile[0]; - double epn = - tb->ffile[tb->ninput-1]; - spline(tb->rfile,tb->efile,tb->ninput,ep0,epn,tb->e2file); - - if (tb->fpflag == 0) { - tb->fplo = (tb->ffile[1] - tb->ffile[0]) / (tb->rfile[1] - tb->rfile[0]); - tb->fphi = (tb->ffile[tb->ninput-1] - tb->ffile[tb->ninput-2]) / - (tb->rfile[tb->ninput-1] - tb->rfile[tb->ninput-2]); - } - - double fp0 = tb->fplo; - double fpn = tb->fphi; - spline(tb->rfile,tb->ffile,tb->ninput,fp0,fpn,tb->f2file); -} - -/* ---------------------------------------------------------------------- - extract attributes from parameter line in table section - format of line: N value R/RSQ/BITMAP lo hi FP fplo fphi - N is required, other params are optional -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::param_extract(Table *tb, char *line) -{ - tb->ninput = 0; - tb->rflag = NONE; - tb->fpflag = 0; - - char *word = strtok(line," \t\n\r\f"); - while (word) { - if (strcmp(word,"N") == 0) { - word = strtok(NULL," \t\n\r\f"); - tb->ninput = atoi(word); - } else if (strcmp(word,"R") == 0 || strcmp(word,"RSQ") == 0 || - strcmp(word,"BITMAP") == 0) { - if (strcmp(word,"R") == 0) tb->rflag = RLINEAR; - else if (strcmp(word,"RSQ") == 0) tb->rflag = RSQ; - else if (strcmp(word,"BITMAP") == 0) tb->rflag = BMP; - word = strtok(NULL," \t\n\r\f"); - tb->rlo = atof(word); - word = strtok(NULL," \t\n\r\f"); - tb->rhi = atof(word); - } else if (strcmp(word,"FP") == 0) { - tb->fpflag = 1; - word = strtok(NULL," \t\n\r\f"); - tb->fplo = atof(word); - word = strtok(NULL," \t\n\r\f"); - tb->fphi = atof(word); - } else { - error->one(FLERR,"Invalid keyword in pair table parameters"); - } - word = strtok(NULL," \t\n\r\f"); - } - - if (tb->ninput == 0) error->one(FLERR,"Pair table parameters did not set N"); -} - -/* ---------------------------------------------------------------------- - compute r,e,f vectors from splined values -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::compute_table(Table *tb) -{ - update_table = 1; - int tlm1 = tablength-1; - - // inner = inner table bound - // cut = outer table bound - // delta = table spacing in rsq for N-1 bins - - double inner; - if (tb->rflag) inner = tb->rlo; - else inner = tb->rfile[0]; - tb->innersq = inner*inner; - tb->delta = (tb->cut*tb->cut - tb->innersq) / tlm1; - tb->invdelta = 1.0/tb->delta; - - // direct lookup tables - // N-1 evenly spaced bins in rsq from inner to cut - // e,f = value at midpt of bin - // e,f are N-1 in length since store 1 value at bin midpt - // f is converted to f/r when stored in f[i] - // e,f are never a match to read-in values, always computed via spline interp - - if (tabstyle == LOOKUP) { - memory->create(tb->e,tlm1,"pair:e"); - memory->create(tb->f,tlm1,"pair:f"); - - double r,rsq; - for (int i = 0; i < tlm1; i++) { - rsq = tb->innersq + (i+0.5)*tb->delta; - r = sqrt(rsq); - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - } - } - - // linear tables - // N-1 evenly spaced bins in rsq from inner to cut - // rsq,e,f = value at lower edge of bin - // de,df values = delta from lower edge to upper edge of bin - // rsq,e,f are N in length so de,df arrays can compute difference - // f is converted to f/r when stored in f[i] - // e,f can match read-in values, else compute via spline interp - - if (tabstyle == LINEAR) { - memory->create(tb->rsq,tablength,"pair:rsq"); - memory->create(tb->e,tablength,"pair:e"); - memory->create(tb->f,tablength,"pair:f"); - memory->create(tb->de,tlm1,"pair:de"); - memory->create(tb->df,tlm1,"pair:df"); - - double r,rsq; - for (int i = 0; i < tablength; i++) { - rsq = tb->innersq + i*tb->delta; - r = sqrt(rsq); - tb->rsq[i] = rsq; - if (tb->match) { - tb->e[i] = tb->efile[i]; - tb->f[i] = tb->ffile[i]/r; - } else { - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - } - } - - for (int i = 0; i < tlm1; i++) { - tb->de[i] = tb->e[i+1] - tb->e[i]; - tb->df[i] = tb->f[i+1] - tb->f[i]; - } - } - - // cubic spline tables - // N-1 evenly spaced bins in rsq from inner to cut - // rsq,e,f = value at lower edge of bin - // e2,f2 = spline coefficient for each bin - // rsq,e,f,e2,f2 are N in length so have N-1 spline bins - // f is converted to f/r after e is splined - // e,f can match read-in values, else compute via spline interp - - if (tabstyle == SPLINE) { - memory->create(tb->rsq,tablength,"pair:rsq"); - memory->create(tb->e,tablength,"pair:e"); - memory->create(tb->f,tablength,"pair:f"); - memory->create(tb->e2,tablength,"pair:e2"); - memory->create(tb->f2,tablength,"pair:f2"); - - tb->deltasq6 = tb->delta*tb->delta / 6.0; - - double r,rsq; - for (int i = 0; i < tablength; i++) { - rsq = tb->innersq + i*tb->delta; - r = sqrt(rsq); - tb->rsq[i] = rsq; - if (tb->match) { - tb->e[i] = tb->efile[i]; - tb->f[i] = tb->ffile[i]/r; - } else { - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r); - } - } - - // ep0,epn = dh/dg at inner and at cut - // h(r) = e(r) and g(r) = r^2 - // dh/dg = (de/dr) / 2r = -f/2r - - double ep0 = - tb->f[0] / (2.0 * sqrt(tb->innersq)); - double epn = - tb->f[tlm1] / (2.0 * tb->cut); - spline(tb->rsq,tb->e,tablength,ep0,epn,tb->e2); - - // fp0,fpn = dh/dg at inner and at cut - // h(r) = f(r)/r and g(r) = r^2 - // dh/dg = (1/r df/dr - f/r^2) / 2r - // dh/dg in secant approx = (f(r2)/r2 - f(r1)/r1) / (g(r2) - g(r1)) - - double fp0,fpn; - double secant_factor = 0.1; - if (tb->fpflag) fp0 = (tb->fplo/sqrt(tb->innersq) - tb->f[0]/tb->innersq) / - (2.0 * sqrt(tb->innersq)); - else { - double rsq1 = tb->innersq; - double rsq2 = rsq1 + secant_factor*tb->delta; - fp0 = (splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq2)) / - sqrt(rsq2) - tb->f[0] / sqrt(rsq1)) / (secant_factor*tb->delta); - } - - if (tb->fpflag && tb->cut == tb->rfile[tb->ninput-1]) fpn = - (tb->fphi/tb->cut - tb->f[tlm1]/(tb->cut*tb->cut)) / (2.0 * tb->cut); - else { - double rsq2 = tb->cut * tb->cut; - double rsq1 = rsq2 - secant_factor*tb->delta; - fpn = (tb->f[tlm1] / sqrt(rsq2) - - splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq1)) / - sqrt(rsq1)) / (secant_factor*tb->delta); - } - - for (int i = 0; i < tablength; i++) tb->f[i] /= sqrt(tb->rsq[i]); - spline(tb->rsq,tb->f,tablength,fp0,fpn,tb->f2); - } - - // bitmapped linear tables - // 2^N bins from inner to cut, spaced in bitmapped manner - // f is converted to f/r when stored in f[i] - // e,f can match read-in values, else compute via spline interp - - if (tabstyle == BITMAP) { - double r; - union_int_float_t rsq_lookup; - int masklo,maskhi; - - // linear lookup tables of length ntable = 2^n - // stored value = value at lower edge of bin - - init_bitmap(inner,tb->cut,tablength,masklo,maskhi,tb->nmask,tb->nshiftbits); - int ntable = 1 << tablength; - int ntablem1 = ntable - 1; - - memory->create(tb->rsq,ntable,"pair:rsq"); - memory->create(tb->e,ntable,"pair:e"); - memory->create(tb->f,ntable,"pair:f"); - memory->create(tb->de,ntable,"pair:de"); - memory->create(tb->df,ntable,"pair:df"); - memory->create(tb->drsq,ntable,"pair:drsq"); - - union_int_float_t minrsq_lookup; - minrsq_lookup.i = 0 << tb->nshiftbits; - minrsq_lookup.i |= maskhi; - - for (int i = 0; i < ntable; i++) { - rsq_lookup.i = i << tb->nshiftbits; - rsq_lookup.i |= masklo; - if (rsq_lookup.f < tb->innersq) { - rsq_lookup.i = i << tb->nshiftbits; - rsq_lookup.i |= maskhi; - } - r = sqrtf(rsq_lookup.f); - tb->rsq[i] = rsq_lookup.f; - if (tb->match) { - tb->e[i] = tb->efile[i]; - tb->f[i] = tb->ffile[i]/r; - } else { - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - } - minrsq_lookup.f = MIN(minrsq_lookup.f,rsq_lookup.f); - } - - tb->innersq = minrsq_lookup.f; - - for (int i = 0; i < ntablem1; i++) { - tb->de[i] = tb->e[i+1] - tb->e[i]; - tb->df[i] = tb->f[i+1] - tb->f[i]; - tb->drsq[i] = 1.0/(tb->rsq[i+1] - tb->rsq[i]); - } - - // get the delta values for the last table entries - // tables are connected periodically between 0 and ntablem1 - - tb->de[ntablem1] = tb->e[0] - tb->e[ntablem1]; - tb->df[ntablem1] = tb->f[0] - tb->f[ntablem1]; - tb->drsq[ntablem1] = 1.0/(tb->rsq[0] - tb->rsq[ntablem1]); - - // get the correct delta values at itablemax - // smallest r is in bin itablemin - // largest r is in bin itablemax, which is itablemin-1, - // or ntablem1 if itablemin=0 - - // deltas at itablemax only needed if corresponding rsq < cut*cut - // if so, compute deltas between rsq and cut*cut - // if tb->match, data at cut*cut is unavailable, so we'll take - // deltas at itablemax-1 as a good approximation - - double e_tmp,f_tmp; - int itablemin = minrsq_lookup.i & tb->nmask; - itablemin >>= tb->nshiftbits; - int itablemax = itablemin - 1; - if (itablemin == 0) itablemax = ntablem1; - int itablemaxm1 = itablemax - 1; - if (itablemax == 0) itablemaxm1 = ntablem1; - rsq_lookup.i = itablemax << tb->nshiftbits; - rsq_lookup.i |= maskhi; - if (rsq_lookup.f < tb->cut*tb->cut) { - if (tb->match) { - tb->de[itablemax] = tb->de[itablemaxm1]; - tb->df[itablemax] = tb->df[itablemaxm1]; - tb->drsq[itablemax] = tb->drsq[itablemaxm1]; - } else { - rsq_lookup.f = tb->cut*tb->cut; - r = sqrtf(rsq_lookup.f); - e_tmp = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - f_tmp = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - tb->de[itablemax] = e_tmp - tb->e[itablemax]; - tb->df[itablemax] = f_tmp - tb->f[itablemax]; - tb->drsq[itablemax] = 1.0/(rsq_lookup.f - tb->rsq[itablemax]); - } - } - } -} - -/* ---------------------------------------------------------------------- - set all ptrs in a table to NULL, so can be freed safely -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::null_table(Table *tb) -{ - tb->rfile = tb->efile = tb->ffile = NULL; - tb->e2file = tb->f2file = NULL; - tb->rsq = tb->drsq = tb->e = tb->de = NULL; - tb->f = tb->df = tb->e2 = tb->f2 = NULL; -} - -/* ---------------------------------------------------------------------- - free all arrays in a table -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::free_table(Table *tb) -{ - memory->destroy(tb->rfile); - memory->destroy(tb->efile); - memory->destroy(tb->ffile); - memory->destroy(tb->e2file); - memory->destroy(tb->f2file); - - memory->destroy(tb->rsq); - memory->destroy(tb->drsq); - memory->destroy(tb->e); - memory->destroy(tb->de); - memory->destroy(tb->f); - memory->destroy(tb->df); - memory->destroy(tb->e2); - memory->destroy(tb->f2); -} - -/* ---------------------------------------------------------------------- - spline and splint routines modified from Numerical Recipes -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::spline(double *x, double *y, int n, - double yp1, double ypn, double *y2) -{ - int i,k; - double p,qn,sig,un; - double *u = new double[n]; - - if (yp1 > 0.99e30) y2[0] = u[0] = 0.0; - else { - y2[0] = -0.5; - u[0] = (3.0/(x[1]-x[0])) * ((y[1]-y[0]) / (x[1]-x[0]) - yp1); - } - for (i = 1; i < n-1; i++) { - sig = (x[i]-x[i-1]) / (x[i+1]-x[i-1]); - p = sig*y2[i-1] + 2.0; - y2[i] = (sig-1.0) / p; - u[i] = (y[i+1]-y[i]) / (x[i+1]-x[i]) - (y[i]-y[i-1]) / (x[i]-x[i-1]); - u[i] = (6.0*u[i] / (x[i+1]-x[i-1]) - sig*u[i-1]) / p; - } - if (ypn > 0.99e30) qn = un = 0.0; - else { - qn = 0.5; - un = (3.0/(x[n-1]-x[n-2])) * (ypn - (y[n-1]-y[n-2]) / (x[n-1]-x[n-2])); - } - y2[n-1] = (un-qn*u[n-2]) / (qn*y2[n-2] + 1.0); - for (k = n-2; k >= 0; k--) y2[k] = y2[k]*y2[k+1] + u[k]; - - delete [] u; -} - -/* ---------------------------------------------------------------------- */ - -template -double PairTableKokkos::splint(double *xa, double *ya, double *y2a, int n, double x) -{ - int klo,khi,k; - double h,b,a,y; - - klo = 0; - khi = n-1; - while (khi-klo > 1) { - k = (khi+klo) >> 1; - if (xa[k] > x) khi = k; - else klo = k; - } - h = xa[khi]-xa[klo]; - a = (xa[khi]-x) / h; - b = (x-xa[klo]) / h; - y = a*ya[klo] + b*ya[khi] + - ((a*a*a-a)*y2a[klo] + (b*b*b-b)*y2a[khi]) * (h*h)/6.0; - return y; -} - -/* ---------------------------------------------------------------------- - proc 0 writes to restart file -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::write_restart(FILE *fp) -{ - write_restart_settings(fp); -} - -/* ---------------------------------------------------------------------- - proc 0 reads from restart file, bcasts -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::read_restart(FILE *fp) -{ - read_restart_settings(fp); - allocate(); -} - -/* ---------------------------------------------------------------------- - proc 0 writes to restart file -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::write_restart_settings(FILE *fp) -{ - fwrite(&tabstyle,sizeof(int),1,fp); - fwrite(&tablength,sizeof(int),1,fp); - fwrite(&ewaldflag,sizeof(int),1,fp); - fwrite(&pppmflag,sizeof(int),1,fp); - fwrite(&msmflag,sizeof(int),1,fp); - fwrite(&dispersionflag,sizeof(int),1,fp); - fwrite(&tip4pflag,sizeof(int),1,fp); -} - -/* ---------------------------------------------------------------------- - proc 0 reads from restart file, bcasts -------------------------------------------------------------------------- */ - -template -void PairTableKokkos::read_restart_settings(FILE *fp) -{ - if (comm->me == 0) { - fread(&tabstyle,sizeof(int),1,fp); - fread(&tablength,sizeof(int),1,fp); - fread(&ewaldflag,sizeof(int),1,fp); - fread(&pppmflag,sizeof(int),1,fp); - fread(&msmflag,sizeof(int),1,fp); - fread(&dispersionflag,sizeof(int),1,fp); - fread(&tip4pflag,sizeof(int),1,fp); - } - MPI_Bcast(&tabstyle,1,MPI_INT,0,world); - MPI_Bcast(&tablength,1,MPI_INT,0,world); - MPI_Bcast(&ewaldflag,1,MPI_INT,0,world); - MPI_Bcast(&pppmflag,1,MPI_INT,0,world); - MPI_Bcast(&msmflag,1,MPI_INT,0,world); - MPI_Bcast(&dispersionflag,1,MPI_INT,0,world); - MPI_Bcast(&tip4pflag,1,MPI_INT,0,world); -} - -/* ---------------------------------------------------------------------- */ - -template -double PairTableKokkos::single(int i, int j, int itype, int jtype, double rsq, - double factor_coul, double factor_lj, - double &fforce) -{ - int itable; - double fraction,value,a,b,phi; - int tlm1 = tablength - 1; - - Table *tb = &tables[tabindex[itype][jtype]]; - if (rsq < tb->innersq) error->one(FLERR,"Pair distance < table inner cutoff"); - - if (tabstyle == LOOKUP) { - itable = static_cast ((rsq-tb->innersq) * tb->invdelta); - if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); - fforce = factor_lj * tb->f[itable]; - } else if (tabstyle == LINEAR) { - itable = static_cast ((rsq-tb->innersq) * tb->invdelta); - if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); - fraction = (rsq - tb->rsq[itable]) * tb->invdelta; - value = tb->f[itable] + fraction*tb->df[itable]; - fforce = factor_lj * value; - } else if (tabstyle == SPLINE) { - itable = static_cast ((rsq-tb->innersq) * tb->invdelta); - if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); - b = (rsq - tb->rsq[itable]) * tb->invdelta; - a = 1.0 - b; - value = a * tb->f[itable] + b * tb->f[itable+1] + - ((a*a*a-a)*tb->f2[itable] + (b*b*b-b)*tb->f2[itable+1]) * - tb->deltasq6; - fforce = factor_lj * value; - } else { - union_int_float_t rsq_lookup; - rsq_lookup.f = rsq; - itable = rsq_lookup.i & tb->nmask; - itable >>= tb->nshiftbits; - fraction = (rsq_lookup.f - tb->rsq[itable]) * tb->drsq[itable]; - value = tb->f[itable] + fraction*tb->df[itable]; - fforce = factor_lj * value; - } - - if (tabstyle == LOOKUP) - phi = tb->e[itable]; - else if (tabstyle == LINEAR || tabstyle == BITMAP) - phi = tb->e[itable] + fraction*tb->de[itable]; - else - phi = a * tb->e[itable] + b * tb->e[itable+1] + - ((a*a*a-a)*tb->e2[itable] + (b*b*b-b)*tb->e2[itable+1]) * tb->deltasq6; - return factor_lj*phi; -} - -/* ---------------------------------------------------------------------- - return the Coulomb cutoff for tabled potentials - called by KSpace solvers which require that all pairwise cutoffs be the same - loop over all tables not just those indexed by tabindex[i][j] since - no way to know which tables are active since pair::init() not yet called -------------------------------------------------------------------------- */ - -template -void *PairTableKokkos::extract(const char *str, int &dim) -{ - if (strcmp(str,"cut_coul") != 0) return NULL; - if (ntables == 0) error->all(FLERR,"All pair coeffs are not set"); - - double cut_coul = tables[0].cut; - for (int m = 1; m < ntables; m++) - if (tables[m].cut != cut_coul) - error->all(FLERR, - "Pair table cutoffs must all be equal to use with KSpace"); - dim = 0; - return &tables[0].cut; -} - template void PairTableKokkos::init_style() { diff --git a/src/KOKKOS/pair_table_kokkos.h b/src/KOKKOS/pair_table_kokkos.h index 09e64804b4..7c021df61e 100644 --- a/src/KOKKOS/pair_table_kokkos.h +++ b/src/KOKKOS/pair_table_kokkos.h @@ -22,7 +22,7 @@ PairStyle(table/kk/host,PairTableKokkos) #ifndef LMP_PAIR_TABLE_KOKKOS_H #define LMP_PAIR_TABLE_KOKKOS_H -#include "pair.h" +#include "pair_table.h" #include "pair_kokkos.h" #include "neigh_list_kokkos.h" #include "atom_kokkos.h" @@ -38,7 +38,7 @@ template class PairTableComputeFunctor; template -class PairTableKokkos : public Pair { +class PairTableKokkos : public PairTable { public: enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2|FULLCLUSTER}; @@ -59,18 +59,9 @@ class PairTableKokkos : public Pair { const NeighListKokkos &list) const; */ void settings(int, char **); - void coeff(int, char **); double init_one(int, int); - void write_restart(FILE *); - void read_restart(FILE *); - void write_restart_settings(FILE *); - void read_restart_settings(FILE *); - double single(int, int, int, int, double, double, double, double &); - void *extract(const char *, int &); - void init_style(); - protected: enum{LOOKUP,LINEAR,SPLINE,BITMAP}; @@ -107,17 +98,6 @@ class PairTableKokkos : public Pair { typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; }; - struct Table { - int ninput,rflag,fpflag,match,ntablebits; - int nshiftbits,nmask; - double rlo,rhi,fplo,fphi,cut; - double *rfile,*efile,*ffile; - double *e2file,*f2file; - double innersq,delta,invdelta,deltasq6; - double *rsq,*drsq,*e,*de,*f,*df,*e2,*f2; - }; - int ntables; - Table *tables; TableDeviceConst d_table_const; TableDevice* d_table; TableHost* h_table; @@ -128,15 +108,6 @@ class PairTableKokkos : public Pair { typename ArrayTypes::t_ffloat_2d d_cutsq; void allocate(); - void read_table(Table *, char *, char *); - void param_extract(Table *, char *); - void bcast_table(Table *); - void spline_table(Table *); - void compute_table(Table *); - void null_table(Table *); - void free_table(Table *); - void spline(double *, double *, int, double, double, double *); - double splint(double *, double *, double *, int, double); typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array_const c_x; @@ -213,11 +184,6 @@ class PairTableKokkos : public Pair { friend void pair_virial_fdotr_compute(PairTableKokkos*); }; - - - - - } #endif @@ -297,4 +263,10 @@ E: Cannot use chosen neighbor list style with lj/cut/kk That style is not supported by Kokkos. + + + */ + + + diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp new file mode 100644 index 0000000000..4c809d98bd --- /dev/null +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -0,0 +1,634 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Stan Moore (SNL) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_table_rx_kokkos.h" +#include "kokkos.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "memory.h" +#include "error.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; + +enum{NONE,RLINEAR,RSQ,BMP}; +enum{FULL,HALFTHREAD,HALF}; + +#define MAXLINE 1024 + +/* ---------------------------------------------------------------------- */ + +template +PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTableRX(lmp) +{ + update_table = 0; + atomKK = (AtomKokkos *) atom; + ntables = 0; + tables = NULL; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + h_table = new TableHost(); + d_table = new TableDevice(); +} + +/* ---------------------------------------------------------------------- */ + +template +PairTableRXKokkos::~PairTableRXKokkos() +{ +/* for (int m = 0; m < ntables; m++) free_table(&tables[m]); + memory->sfree(tables); + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + memory->destroy(tabindex); + }*/ + delete h_table; + delete d_table; + +} + +/* ---------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::compute(int eflag_in, int vflag_in) +{ + if(update_table) + create_kokkos_tables(); + if(tabstyle == LOOKUP) + compute_style(eflag_in,vflag_in); + if(tabstyle == LINEAR) + compute_style(eflag_in,vflag_in); + if(tabstyle == SPLINE) + compute_style(eflag_in,vflag_in); + if(tabstyle == BITMAP) + compute_style(eflag_in,vflag_in); +} + +template +template +void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) +{ + eflag = eflag_in; + vflag = vflag_in; + + if (neighflag == FULL || neighflag == FULLCLUSTER) no_virial_fdotr_compute = 1; + + + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + atomKK->sync(execution_space,datamask_read); + //k_cutsq.template sync(); + //k_params.template sync(); + if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); + else atomKK->modified(execution_space,F_MASK); + + x = c_x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + type = atomKK->k_type.view(); + nlocal = atom->nlocal; + nall = atom->nlocal + atom->nghost; + special_lj[0] = force->special_lj[0]; + special_lj[1] = force->special_lj[1]; + special_lj[2] = force->special_lj[2]; + special_lj[3] = force->special_lj[3]; + newton_pair = force->newton_pair; + d_cutsq = d_table->cutsq; + // loop over neighbors of my atoms + + EV_FLOAT ev; + if(atom->ntypes > MAX_TYPES_STACKPARAMS) { + if (neighflag == FULL) { + PairComputeFunctor,FULL,false,S_TableRXCompute > + ff(this,(NeighListKokkos*) list); + if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); + else Kokkos::parallel_for(list->inum,ff); + } else if (neighflag == HALFTHREAD) { + PairComputeFunctor,HALFTHREAD,false,S_TableRXCompute > + ff(this,(NeighListKokkos*) list); + if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); + else Kokkos::parallel_for(list->inum,ff); + } else if (neighflag == HALF) { + PairComputeFunctor,HALF,false,S_TableRXCompute > + f(this,(NeighListKokkos*) list); + if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); + else Kokkos::parallel_for(list->inum,f); + } else if (neighflag == N2) { + PairComputeFunctor,N2,false,S_TableRXCompute > + f(this,(NeighListKokkos*) list); + if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); + else Kokkos::parallel_for(nlocal,f); + } else if (neighflag == FULLCLUSTER) { + typedef PairComputeFunctor,FULLCLUSTER,false,S_TableRXCompute > + f_type; + f_type f(this,(NeighListKokkos*) list); + #ifdef KOKKOS_HAVE_CUDA + const int teamsize = Kokkos::Impl::is_same::value ? 32 : 1; + #else + const int teamsize = 1; + #endif + const int nteams = (list->inum*+teamsize-1)/teamsize; + Kokkos::TeamPolicy config(nteams,teamsize,NeighClusterSize); + if (eflag || vflag) Kokkos::parallel_reduce(config,f,ev); + else Kokkos::parallel_for(config,f); + } + } else { + if (neighflag == FULL) { + PairComputeFunctor,FULL,true,S_TableRXCompute > + f(this,(NeighListKokkos*) list); + if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); + else Kokkos::parallel_for(list->inum,f); + } else if (neighflag == HALFTHREAD) { + PairComputeFunctor,HALFTHREAD,true,S_TableRXCompute > + f(this,(NeighListKokkos*) list); + if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); + else Kokkos::parallel_for(list->inum,f); + } else if (neighflag == HALF) { + PairComputeFunctor,HALF,true,S_TableRXCompute > + f(this,(NeighListKokkos*) list); + if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); + else Kokkos::parallel_for(list->inum,f); + } else if (neighflag == N2) { + PairComputeFunctor,N2,true,S_TableRXCompute > + f(this,(NeighListKokkos*) list); + if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); + else Kokkos::parallel_for(nlocal,f); + } else if (neighflag == FULLCLUSTER) { + typedef PairComputeFunctor,FULLCLUSTER,true,S_TableRXCompute > + f_type; + f_type f(this,(NeighListKokkos*) list); + #ifdef KOKKOS_HAVE_CUDA + const int teamsize = Kokkos::Impl::is_same::value ? 32 : 1; + #else + const int teamsize = 1; + #endif + const int nteams = (list->inum*+teamsize-1)/teamsize; + Kokkos::TeamPolicy config(nteams,teamsize,NeighClusterSize); + if (eflag || vflag) Kokkos::parallel_reduce(config,f,ev); + else Kokkos::parallel_for(config,f); + } + } + + if (eflag) eng_vdwl += ev.evdwl; + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); +} + +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairTableRXKokkos:: +compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { + (void) i; + (void) j; + union_int_float_t rsq_lookup; + double fpair; + const int tidx = d_table_const.tabindex(itype,jtype); + //const Table* const tb = &tables[tabindex[itype][jtype]]; + + //if (rsq < d_table_const.innersq(tidx)) + // error->one(FLERR,"Pair distance < table inner cutoff"); + + + if (Specialisation::TabStyle == LOOKUP) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //if (itable >= tlm1) + // error->one(FLERR,"Pair distance > table outer cutoff"); + fpair = d_table_const.f(tidx,itable); + } else if (Specialisation::TabStyle == LINEAR) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //if (itable >= tlm1) + // error->one(FLERR,"Pair distance > table outer cutoff"); + const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); + } else if (Specialisation::TabStyle == SPLINE) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //if (itable >= tlm1) + // error->one(FLERR,"Pair distance > table outer cutoff"); + const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + const double a = 1.0 - b; + fpair = a * d_table_const.f(tidx,itable) + b * d_table_const.f(tidx,itable+1) + + ((a*a*a-a)*d_table_const.f2(tidx,itable) + (b*b*b-b)*d_table_const.f2(tidx,itable+1)) * + d_table_const.deltasq6(tidx); + } else { + rsq_lookup.f = rsq; + int itable = rsq_lookup.i & d_table_const.nmask(tidx); + itable >>= d_table_const.nshiftbits(tidx); + const double fraction = (rsq_lookup.f - d_table_const.rsq(tidx,itable)) * d_table_const.drsq(tidx,itable); + fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); + } + return fpair; +} + +template +template +KOKKOS_INLINE_FUNCTION +F_FLOAT PairTableRXKokkos:: +compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { + (void) i; + (void) j; + double evdwl; + union_int_float_t rsq_lookup; + const int tidx = d_table_const.tabindex(itype,jtype); + //const Table* const tb = &tables[tabindex[itype][jtype]]; + + //if (rsq < d_table_const.innersq(tidx)) + // error->one(FLERR,"Pair distance < table inner cutoff"); + + if (Specialisation::TabStyle == LOOKUP) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //if (itable >= tlm1) + // error->one(FLERR,"Pair distance > table outer cutoff"); + evdwl = d_table_const.e(tidx,itable); + } else if (Specialisation::TabStyle == LINEAR) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //if (itable >= tlm1) + // error->one(FLERR,"Pair distance > table outer cutoff"); + const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); + } else if (Specialisation::TabStyle == SPLINE) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //if (itable >= tlm1) + // error->one(FLERR,"Pair distance > table outer cutoff"); + const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + const double a = 1.0 - b; + evdwl = a * d_table_const.e(tidx,itable) + b * d_table_const.e(tidx,itable+1) + + ((a*a*a-a)*d_table_const.e2(tidx,itable) + (b*b*b-b)*d_table_const.e2(tidx,itable+1)) * + d_table_const.deltasq6(tidx); + } else { + rsq_lookup.f = rsq; + int itable = rsq_lookup.i & d_table_const.nmask(tidx); + itable >>= d_table_const.nshiftbits(tidx); + const double fraction = (rsq_lookup.f - d_table_const.rsq(tidx,itable)) * d_table_const.drsq(tidx,itable); + evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); + } + return evdwl; +} + +template +void PairTableRXKokkos::create_kokkos_tables() +{ + const int tlm1 = tablength-1; + + memory->create_kokkos(d_table->nshiftbits,h_table->nshiftbits,ntables,"Table::nshiftbits"); + memory->create_kokkos(d_table->nmask,h_table->nmask,ntables,"Table::nmask"); + memory->create_kokkos(d_table->innersq,h_table->innersq,ntables,"Table::innersq"); + memory->create_kokkos(d_table->invdelta,h_table->invdelta,ntables,"Table::invdelta"); + memory->create_kokkos(d_table->deltasq6,h_table->deltasq6,ntables,"Table::deltasq6"); + + if(tabstyle == LOOKUP) { + memory->create_kokkos(d_table->e,h_table->e,ntables,tlm1,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tlm1,"Table::f"); + } + + if(tabstyle == LINEAR) { + memory->create_kokkos(d_table->rsq,h_table->rsq,ntables,tablength,"Table::rsq"); + memory->create_kokkos(d_table->e,h_table->e,ntables,tablength,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tablength,"Table::f"); + memory->create_kokkos(d_table->de,h_table->de,ntables,tlm1,"Table::de"); + memory->create_kokkos(d_table->df,h_table->df,ntables,tlm1,"Table::df"); + } + + if(tabstyle == SPLINE) { + memory->create_kokkos(d_table->rsq,h_table->rsq,ntables,tablength,"Table::rsq"); + memory->create_kokkos(d_table->e,h_table->e,ntables,tablength,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tablength,"Table::f"); + memory->create_kokkos(d_table->e2,h_table->e2,ntables,tablength,"Table::e2"); + memory->create_kokkos(d_table->f2,h_table->f2,ntables,tablength,"Table::f2"); + } + + if(tabstyle == BITMAP) { + int ntable = 1 << tablength; + memory->create_kokkos(d_table->rsq,h_table->rsq,ntables,ntable,"Table::rsq"); + memory->create_kokkos(d_table->e,h_table->e,ntables,ntable,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,ntable,"Table::f"); + memory->create_kokkos(d_table->de,h_table->de,ntables,ntable,"Table::de"); + memory->create_kokkos(d_table->df,h_table->df,ntables,ntable,"Table::df"); + memory->create_kokkos(d_table->drsq,h_table->drsq,ntables,ntable,"Table::drsq"); + } + + for(int i=0; i < ntables; i++) { + Table* tb = &tables[i]; + + h_table->nshiftbits[i] = tb->nshiftbits; + h_table->nmask[i] = tb->nmask; + h_table->innersq[i] = tb->innersq; + h_table->invdelta[i] = tb->invdelta; + h_table->deltasq6[i] = tb->deltasq6; + + for(int j = 0; jrsq.dimension_1(); j++) + h_table->rsq(i,j) = tb->rsq[j]; + for(int j = 0; jdrsq.dimension_1(); j++) + h_table->drsq(i,j) = tb->drsq[j]; + for(int j = 0; je.dimension_1(); j++) + h_table->e(i,j) = tb->e[j]; + for(int j = 0; jde.dimension_1(); j++) + h_table->de(i,j) = tb->de[j]; + for(int j = 0; jf.dimension_1(); j++) + h_table->f(i,j) = tb->f[j]; + for(int j = 0; jdf.dimension_1(); j++) + h_table->df(i,j) = tb->df[j]; + for(int j = 0; je2.dimension_1(); j++) + h_table->e2(i,j) = tb->e2[j]; + for(int j = 0; jf2.dimension_1(); j++) + h_table->f2(i,j) = tb->f2[j]; + } + + + Kokkos::deep_copy(d_table->nshiftbits,h_table->nshiftbits); + Kokkos::deep_copy(d_table->nmask,h_table->nmask); + Kokkos::deep_copy(d_table->innersq,h_table->innersq); + Kokkos::deep_copy(d_table->invdelta,h_table->invdelta); + Kokkos::deep_copy(d_table->deltasq6,h_table->deltasq6); + Kokkos::deep_copy(d_table->rsq,h_table->rsq); + Kokkos::deep_copy(d_table->drsq,h_table->drsq); + Kokkos::deep_copy(d_table->e,h_table->e); + Kokkos::deep_copy(d_table->de,h_table->de); + Kokkos::deep_copy(d_table->f,h_table->f); + Kokkos::deep_copy(d_table->df,h_table->df); + Kokkos::deep_copy(d_table->e2,h_table->e2); + Kokkos::deep_copy(d_table->f2,h_table->f2); + Kokkos::deep_copy(d_table->tabindex,h_table->tabindex); + + d_table_const.nshiftbits = d_table->nshiftbits; + d_table_const.nmask = d_table->nmask; + d_table_const.innersq = d_table->innersq; + d_table_const.invdelta = d_table->invdelta; + d_table_const.deltasq6 = d_table->deltasq6; + d_table_const.rsq = d_table->rsq; + d_table_const.drsq = d_table->drsq; + d_table_const.e = d_table->e; + d_table_const.de = d_table->de; + d_table_const.f = d_table->f; + d_table_const.df = d_table->df; + d_table_const.e2 = d_table->e2; + d_table_const.f2 = d_table->f2; + + + Kokkos::deep_copy(d_table->cutsq,h_table->cutsq); + update_table = 0; +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::allocate() +{ + allocated = 1; + const int nt = atom->ntypes + 1; + + memory->create(setflag,nt,nt,"pair:setflag"); + memory->create_kokkos(d_table->cutsq,h_table->cutsq,cutsq,nt,nt,"pair:cutsq"); + memory->create_kokkos(d_table->tabindex,h_table->tabindex,tabindex,nt,nt,"pair:tabindex"); + + d_table_const.cutsq = d_table->cutsq; + d_table_const.tabindex = d_table->tabindex; + memset(&setflag[0][0],0,nt*nt*sizeof(int)); + memset(&cutsq[0][0],0,nt*nt*sizeof(double)); + memset(&tabindex[0][0],0,nt*nt*sizeof(int)); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::settings(int narg, char **arg) +{ + if (narg < 2) error->all(FLERR,"Illegal pair_style command"); + + // new settings + + if (strcmp(arg[0],"lookup") == 0) tabstyle = LOOKUP; + else if (strcmp(arg[0],"linear") == 0) tabstyle = LINEAR; + else if (strcmp(arg[0],"spline") == 0) tabstyle = SPLINE; + else if (strcmp(arg[0],"bitmap") == 0) tabstyle = BITMAP; + else error->all(FLERR,"Unknown table style in pair_style command"); + + tablength = force->inumeric(FLERR,arg[1]); + if (tablength < 2) error->all(FLERR,"Illegal number of pair table entries"); + + // optional keywords + // assert the tabulation is compatible with a specific long-range solver + + int iarg = 2; + while (iarg < narg) { + if (strcmp(arg[iarg],"ewald") == 0) ewaldflag = 1; + else if (strcmp(arg[iarg],"pppm") == 0) pppmflag = 1; + else if (strcmp(arg[iarg],"msm") == 0) msmflag = 1; + else if (strcmp(arg[iarg],"dispersion") == 0) dispersionflag = 1; + else if (strcmp(arg[iarg],"tip4p") == 0) tip4pflag = 1; + else error->all(FLERR,"Illegal pair_style command"); + iarg++; + } + + // delete old tables, since cannot just change settings + + for (int m = 0; m < ntables; m++) free_table(&tables[m]); + memory->sfree(tables); + + if (allocated) { + memory->destroy(setflag); + + d_table_const.tabindex = d_table->tabindex = typename ArrayTypes::t_int_2d(); + h_table->tabindex = typename ArrayTypes::t_int_2d(); + + d_table_const.cutsq = d_table->cutsq = typename ArrayTypes::t_ffloat_2d(); + h_table->cutsq = typename ArrayTypes::t_ffloat_2d(); + } + allocated = 0; + + ntables = 0; + tables = NULL; +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +template +double PairTableRXKokkos::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + tabindex[j][i] = tabindex[i][j]; + + if(i +void PairTableRXKokkos::init_style() +{ + neighbor->request(this,instance_me); + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full_cluster = 0; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + neighbor->requests[irequest]->full_cluster = 0; + } else if (neighflag == N2) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full_cluster = 0; + } else if (neighflag == FULLCLUSTER) { + neighbor->requests[irequest]->full_cluster = 1; + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with lj/cut/kk"); + } +} + +/* +template template +KOKKOS_INLINE_FUNCTION +void PairTableRXKokkos:: +ev_tally(EV_FLOAT &ev, const int &i, const int &j, const F_FLOAT &fpair, + const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const +{ + const int EFLAG = eflag; + const int NEWTON_PAIR = newton_pair; + const int VFLAG = vflag_either; + + if (EFLAG) { + if (eflag_atom) { + E_FLOAT epairhalf = 0.5 * (ev.evdwl + ev.ecoul); + if (NEWTON_PAIR || i < nlocal) eatom[i] += epairhalf; + if (NEWTON_PAIR || j < nlocal) eatom[j] += epairhalf; + } + } + + if (VFLAG) { + const E_FLOAT v0 = delx*delx*fpair; + const E_FLOAT v1 = dely*dely*fpair; + const E_FLOAT v2 = delz*delz*fpair; + const E_FLOAT v3 = delx*dely*fpair; + const E_FLOAT v4 = delx*delz*fpair; + const E_FLOAT v5 = dely*delz*fpair; + + if (vflag_global) { + if (NEIGHFLAG) { + if (NEWTON_PAIR) { + ev.v[0] += v0; + ev.v[1] += v1; + ev.v[2] += v2; + ev.v[3] += v3; + ev.v[4] += v4; + ev.v[5] += v5; + } else { + if (i < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (j < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + + if (vflag_atom) { + if (NEWTON_PAIR || i < nlocal) { + d_vatom(i,0) += 0.5*v0; + d_vatom(i,1) += 0.5*v1; + d_vatom(i,2) += 0.5*v2; + d_vatom(i,3) += 0.5*v3; + d_vatom(i,4) += 0.5*v4; + d_vatom(i,5) += 0.5*v5; + } + if (NEWTON_PAIR || (NEIGHFLAG && j < nlocal)) { + d_vatom(j,0) += 0.5*v0; + d_vatom(j,1) += 0.5*v1; + d_vatom(j,2) += 0.5*v2; + d_vatom(j,3) += 0.5*v3; + d_vatom(j,4) += 0.5*v4; + d_vatom(j,5) += 0.5*v5; + } + } + } +} +*/ +template +void PairTableRXKokkos::cleanup_copy() { + // WHY needed: this prevents parent copy from deallocating any arrays + allocated = 0; + cutsq = NULL; + eatom = NULL; + vatom = NULL; + h_table=NULL; d_table=NULL; +} + +namespace LAMMPS_NS { +template class PairTableRXKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class PairTableRXKokkos; +#endif + +} + diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h new file mode 100644 index 0000000000..6f0616cc28 --- /dev/null +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -0,0 +1,269 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(table/rx/kk,PairTableRXKokkos) +PairStyle(table/rx/kk/device,PairTableRXKokkos) +PairStyle(table/rx/kk/host,PairTableRXKokkos) + +#else + +#ifndef LMP_PAIR_TABLE_RX_KOKKOS_H +#define LMP_PAIR_TABLE_RX_KOKKOS_H + +#include "pair_table_rx.h" +#include "pair_kokkos.h" +#include "neigh_list_kokkos.h" +#include "atom_kokkos.h" + +namespace LAMMPS_NS { + +template +struct S_TableRXCompute { + enum {TabStyle = TABSTYLE}; +}; + +template +class PairTableRXComputeFunctor; + +template +class PairTableRXKokkos : public PairTableRX { + public: + + enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2|FULLCLUSTER}; + enum {COUL_FLAG=0}; + typedef DeviceType device_type; + + PairTableRXKokkos(class LAMMPS *); + virtual ~PairTableRXKokkos(); + + virtual void compute(int, int); + + template + void compute_style(int, int); + + /*template + KOKKOS_FUNCTION + EV_FLOAT compute_item(const int& i, + const NeighListKokkos &list) const; +*/ + void settings(int, char **); + double init_one(int, int); + void init_style(); + + protected: + enum{LOOKUP,LINEAR,SPLINE,BITMAP}; + + int tabstyle,tablength; + /*struct TableDeviceConst { + typename ArrayTypes::t_ffloat_2d_randomread cutsq; + typename ArrayTypes::t_int_2d_randomread tabindex; + typename ArrayTypes::t_int_1d_randomread nshiftbits,nmask; + typename ArrayTypes::t_ffloat_1d_randomread innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d_randomread rsq,drsq,e,de,f,df,e2,f2; + };*/ + //Its faster not to use texture fetch if the number of tables is less than 32! + struct TableDeviceConst { + typename ArrayTypes::t_ffloat_2d cutsq; + typename ArrayTypes::t_int_2d tabindex; + typename ArrayTypes::t_int_1d nshiftbits,nmask; + typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d_randomread rsq,drsq,e,de,f,df,e2,f2; + }; + + struct TableDevice { + typename ArrayTypes::t_ffloat_2d cutsq; + typename ArrayTypes::t_int_2d tabindex; + typename ArrayTypes::t_int_1d nshiftbits,nmask; + typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; + }; + + struct TableHost { + typename ArrayTypes::t_ffloat_2d cutsq; + typename ArrayTypes::t_int_2d tabindex; + typename ArrayTypes::t_int_1d nshiftbits,nmask; + typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; + }; + + TableDeviceConst d_table_const; + TableDevice* d_table; + TableHost* h_table; + + int **tabindex; + F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + + typename ArrayTypes::t_ffloat_2d d_cutsq; + + void allocate(); + + typename ArrayTypes::t_x_array_randomread x; + typename ArrayTypes::t_x_array_const c_x; + typename ArrayTypes::t_f_array f; + typename ArrayTypes::t_int_1d_randomread type; + typename ArrayTypes::t_efloat_1d d_eatom; + typename ArrayTypes::t_virial_array d_vatom; + + protected: + int nlocal,nall,eflag,vflag,neighflag,newton_pair; + + int update_table; + void create_kokkos_tables(); + void cleanup_copy(); + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; + + template + KOKKOS_INLINE_FUNCTION + F_FLOAT compute_ecoul(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { + return 0; + } + + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + + friend void pair_virial_fdotr_compute(PairTableRXKokkos*); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Pair distance < table inner cutoff + +Two atoms are closer together than the pairwise table allows. + +E: Pair distance > table outer cutoff + +Two atoms are further apart than the pairwise table allows. + +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: Unknown table style in pair_style command + +Style of table is invalid for use with pair_style table command. + +E: Illegal number of pair table entries + +There must be at least 2 table entries. + +E: Invalid pair table length + +Length of read-in pair table is invalid + +E: Invalid pair table cutoff + +Cutoffs in pair_coeff command are not valid with read-in pair table. + +E: Bitmapped table in file does not match requested table + +Setting for bitmapped table in pair_coeff command must match table +in file exactly. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +E: Cannot open file %s + +The specified file cannot be opened. Check that the path and name are +correct. If the file is a compressed file, also check that the gzip +executable can be found and run. + +E: Did not find keyword in table file + +Keyword used in pair_coeff command was not found in table file. + +E: Bitmapped table is incorrect length in table file + +Number of table entries is not a correct power of 2. + +E: Invalid keyword in pair table parameters + +Keyword used in list of table parameters is not recognized. + +E: Pair table parameters did not set N + +List of pair table parameters must include N setting. + +E: Pair table cutoffs must all be equal to use with KSpace + +When using pair style table with a long-range KSpace solver, the +cutoffs for all atom type pairs must all be the same, since the +long-range solver starts at that cutoff. + +E: Cannot use chosen neighbor list style with lj/cut/kk + +That style is not supported by Kokkos. + + + + +*/ \ No newline at end of file diff --git a/src/USER-DPD/pair_multi_lucy.h b/src/USER-DPD/pair_multi_lucy.h index f3c67e4fa4..0a2d2f9885 100644 --- a/src/USER-DPD/pair_multi_lucy.h +++ b/src/USER-DPD/pair_multi_lucy.h @@ -18,7 +18,7 @@ PairStyle(multi/lucy,PairMultiLucy) #else #ifndef LMP_PAIR_MULTI_LUCY_H -#define LMP_PAIR_MUTLI_LUCY_H +#define LMP_PAIR_MULTI_LUCY_H #include "pair.h" diff --git a/src/USER-DPD/pair_multi_lucy_rx.cpp b/src/USER-DPD/pair_multi_lucy_rx.cpp index cd107f1519..431293e823 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.cpp +++ b/src/USER-DPD/pair_multi_lucy_rx.cpp @@ -59,8 +59,7 @@ static const char cite_pair_multi_lucy_rx[] = /* ---------------------------------------------------------------------- */ -PairMultiLucyRX::PairMultiLucyRX(LAMMPS *lmp) : Pair(lmp), - ntables(0), tables(NULL), tabindex(NULL), site1(NULL), site2(NULL) +PairMultiLucyRX::PairMultiLucyRX(LAMMPS *lmp) : Pair(lmp) { if (lmp->citeme) lmp->citeme->add(cite_pair_multi_lucy_rx); @@ -69,6 +68,9 @@ PairMultiLucyRX::PairMultiLucyRX(LAMMPS *lmp) : Pair(lmp), ntables = 0; tables = NULL; + tabindex = NULL; + site1 = site2 = NULL; + comm_forward = 1; comm_reverse = 1; diff --git a/src/USER-DPD/pair_multi_lucy_rx.h b/src/USER-DPD/pair_multi_lucy_rx.h index 596a6c684d..2913716c5a 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.h +++ b/src/USER-DPD/pair_multi_lucy_rx.h @@ -18,7 +18,7 @@ PairStyle(multi/lucy/rx,PairMultiLucyRX) #else #ifndef LMP_PAIR_MULTI_LUCY_RX_H -#define LMP_PAIR_MUTLI_LUCY_RX_H +#define LMP_PAIR_MULTI_LUCY_RX_H #include "pair.h" diff --git a/src/pair_table.h b/src/pair_table.h index 6cfd9df832..358491f7cf 100644 --- a/src/pair_table.h +++ b/src/pair_table.h @@ -30,9 +30,9 @@ class PairTable : public Pair { virtual ~PairTable(); virtual void compute(int, int); - void settings(int, char **); + virtual void settings(int, char **); void coeff(int, char **); - double init_one(int, int); + virtual double init_one(int, int); void write_restart(FILE *); void read_restart(FILE *); void write_restart_settings(FILE *); @@ -58,7 +58,7 @@ class PairTable : public Pair { int **tabindex; - void allocate(); + virtual void allocate(); void read_table(Table *, char *, char *); void param_extract(Table *, char *); void bcast_table(Table *); -- GitLab From f93c62d3e20301ea53e41a5a6f50b8aa9957d942 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 13 Dec 2016 16:54:00 -0700 Subject: [PATCH 008/337] Reverting accidental change --- src/USER-DPD/pair_multi_lucy_rx.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/USER-DPD/pair_multi_lucy_rx.cpp b/src/USER-DPD/pair_multi_lucy_rx.cpp index 431293e823..cd107f1519 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.cpp +++ b/src/USER-DPD/pair_multi_lucy_rx.cpp @@ -59,7 +59,8 @@ static const char cite_pair_multi_lucy_rx[] = /* ---------------------------------------------------------------------- */ -PairMultiLucyRX::PairMultiLucyRX(LAMMPS *lmp) : Pair(lmp) +PairMultiLucyRX::PairMultiLucyRX(LAMMPS *lmp) : Pair(lmp), + ntables(0), tables(NULL), tabindex(NULL), site1(NULL), site2(NULL) { if (lmp->citeme) lmp->citeme->add(cite_pair_multi_lucy_rx); @@ -68,9 +69,6 @@ PairMultiLucyRX::PairMultiLucyRX(LAMMPS *lmp) : Pair(lmp) ntables = 0; tables = NULL; - tabindex = NULL; - site1 = site2 = NULL; - comm_forward = 1; comm_reverse = 1; -- GitLab From 3e2cd6d265db7bbbe97cc2dc00977cead964e67c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 14 Dec 2016 11:46:04 -0700 Subject: [PATCH 009/337] Merging from master to 13Dec16 version --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 1 - src/KOKKOS/pair_exp6_rx_kokkos.cpp | 2 -- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 2 -- src/KOKKOS/pair_table_rx_kokkos.cpp | 35 +---------------------- src/KOKKOS/pair_table_rx_kokkos.h | 10 +------ src/KOKKOS/pair_vashishta_kokkos.cpp | 1 - src/neigh_request.cpp | 1 - src/neigh_request.h | 1 - 8 files changed, 2 insertions(+), 51 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index f7e1fecc09..45da5bf165 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -317,7 +317,6 @@ void PairDPDfdtEnergyKokkos::init_style() if (neighflag == HALF || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 1; - neighbor->requests[irequest]->full_cluster = 0; } else { error->all(FLERR,"Cannot use chosen neighbor list style with dpd/fdt/energy/kk"); } diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index a7d5569537..569d131af7 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -87,12 +87,10 @@ void PairExp6rxKokkos::init_style() if (neighflag == FULL) { neighbor->requests[irequest]->full = 1; neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->full_cluster = 0; neighbor->requests[irequest]->ghost = 1; } else if (neighflag == HALF || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 1; - neighbor->requests[irequest]->full_cluster = 0; neighbor->requests[irequest]->ghost = 1; } else { error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index de70ae86f5..d1a13b12fd 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -101,12 +101,10 @@ void PairMultiLucyRXKokkos::init_style() if (neighflag == FULL) { neighbor->requests[irequest]->full = 1; neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->full_cluster = 0; neighbor->requests[irequest]->ghost = 1; } else if (neighflag == HALF || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 1; - neighbor->requests[irequest]->full_cluster = 0; neighbor->requests[irequest]->ghost = 1; } else { error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 4c809d98bd..bf32d1c14f 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -96,7 +96,7 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (neighflag == FULL || neighflag == FULLCLUSTER) no_virial_fdotr_compute = 1; + if (neighflag == FULL) no_virial_fdotr_compute = 1; if (eflag || vflag) ev_setup(eflag,vflag); @@ -143,19 +143,6 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); else Kokkos::parallel_for(nlocal,f); - } else if (neighflag == FULLCLUSTER) { - typedef PairComputeFunctor,FULLCLUSTER,false,S_TableRXCompute > - f_type; - f_type f(this,(NeighListKokkos*) list); - #ifdef KOKKOS_HAVE_CUDA - const int teamsize = Kokkos::Impl::is_same::value ? 32 : 1; - #else - const int teamsize = 1; - #endif - const int nteams = (list->inum*+teamsize-1)/teamsize; - Kokkos::TeamPolicy config(nteams,teamsize,NeighClusterSize); - if (eflag || vflag) Kokkos::parallel_reduce(config,f,ev); - else Kokkos::parallel_for(config,f); } } else { if (neighflag == FULL) { @@ -178,19 +165,6 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); else Kokkos::parallel_for(nlocal,f); - } else if (neighflag == FULLCLUSTER) { - typedef PairComputeFunctor,FULLCLUSTER,true,S_TableRXCompute > - f_type; - f_type f(this,(NeighListKokkos*) list); - #ifdef KOKKOS_HAVE_CUDA - const int teamsize = Kokkos::Impl::is_same::value ? 32 : 1; - #else - const int teamsize = 1; - #endif - const int nteams = (list->inum*+teamsize-1)/teamsize; - Kokkos::TeamPolicy config(nteams,teamsize,NeighClusterSize); - if (eflag || vflag) Kokkos::parallel_reduce(config,f,ev); - else Kokkos::parallel_for(config,f); } } @@ -511,19 +485,12 @@ void PairTableRXKokkos::init_style() if (neighflag == FULL) { neighbor->requests[irequest]->full = 1; neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->full_cluster = 0; } else if (neighflag == HALF || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 1; - neighbor->requests[irequest]->full_cluster = 0; } else if (neighflag == N2) { neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->full_cluster = 0; - } else if (neighflag == FULLCLUSTER) { - neighbor->requests[irequest]->full_cluster = 1; - neighbor->requests[irequest]->full = 1; - neighbor->requests[irequest]->half = 0; } else { error->all(FLERR,"Cannot use chosen neighbor list style with lj/cut/kk"); } diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index 6f0616cc28..b379901201 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -41,7 +41,7 @@ template class PairTableRXKokkos : public PairTableRX { public: - enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2|FULLCLUSTER}; + enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2}; enum {COUL_FLAG=0}; typedef DeviceType device_type; @@ -141,45 +141,37 @@ class PairTableRXKokkos : public PairTableRX { friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; - friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; - friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; - friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; - friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; - friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; - friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; - friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; friend class PairComputeFunctor >; - friend class PairComputeFunctor >; friend void pair_virial_fdotr_compute(PairTableRXKokkos*); }; diff --git a/src/KOKKOS/pair_vashishta_kokkos.cpp b/src/KOKKOS/pair_vashishta_kokkos.cpp index 73e4e04f98..bf3b5bae85 100644 --- a/src/KOKKOS/pair_vashishta_kokkos.cpp +++ b/src/KOKKOS/pair_vashishta_kokkos.cpp @@ -603,7 +603,6 @@ void PairVashishtaKokkos::init_style() if (neighflag == FULL || neighflag == HALF || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 1; neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->full_cluster = 0; if (neighflag == FULL) neighbor->requests[irequest]->ghost = 1; else diff --git a/src/neigh_request.cpp b/src/neigh_request.cpp index 4a3eb14933..a8ba8496cd 100644 --- a/src/neigh_request.cpp +++ b/src/neigh_request.cpp @@ -39,7 +39,6 @@ NeighRequest::NeighRequest(LAMMPS *lmp) : Pointers(lmp) gran = granhistory = 0; respainner = respamiddle = respaouter = 0; half_from_full = 0; - full_cluster = 0; // only set when command = 1; diff --git a/src/neigh_request.h b/src/neigh_request.h index 0b561710e7..62cb11f830 100644 --- a/src/neigh_request.h +++ b/src/neigh_request.h @@ -47,7 +47,6 @@ class NeighRequest : protected Pointers { int respainner; // 1 if a rRESPA inner list int respamiddle; // 1 if a rRESPA middle list int respaouter; // 1 if a rRESPA outer list - int full_cluster; // only used by Kokkos pair styles // command_style only set if command = 1 // allows print_pair_info() to access command name -- GitLab From a9d26b3f4aadbf8e7a7aa91190d513b6a02217d2 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 14 Dec 2016 12:58:02 -0700 Subject: [PATCH 010/337] Updates to Kokkos files --- src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 143 ++++++++++++++--------- src/KOKKOS/fix_eos_table_rx_kokkos.h | 21 ++++ src/KOKKOS/pair_exp6_rx_kokkos.cpp | 16 ++- src/KOKKOS/pair_exp6_rx_kokkos.h | 2 + src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 33 +++--- src/KOKKOS/pair_multi_lucy_rx_kokkos.h | 2 + 6 files changed, 145 insertions(+), 72 deletions(-) diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index a1e0b1a07d..faf490fcc0 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -42,6 +42,9 @@ FixEOStableRXKokkos::FixEOStableRXKokkos(LAMMPS *lmp, int narg, char execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + + k_error_flag = DAT::tdual_int_scalar("fix:error_flag"); + k_warning_flag = DAT::tdual_int_scalar("fix:warning_flag"); } /* ---------------------------------------------------------------------- */ @@ -65,22 +68,33 @@ void FixEOStableRXKokkos::setup(int vflag) dpdTheta= atomKK->k_dpdTheta.view(); uCG = atomKK->k_uCG.view(); uCGnew = atomKK->k_uCGnew.view(); - double duChem; - for (int i = 0; i < nlocal; i++) // parallel_for - if (mask[i] & groupbit){ - duChem = uCG[i] - uCGnew[i]; - uChem[i] += duChem; - uCG[i] = 0.0; - uCGnew[i] = 0.0; - } + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); // Communicate the updated momenta and velocities to all nodes comm->forward_comm_fix(this); - for (int i = 0; i < nlocal; i++) // parallel_for - if (mask[i] & groupbit) - temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + + error_check(); +} + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::operator()(TagFixEOStableRXSetup, const int &i) const { + if (mask[i] & groupbit) { + const double duChem = uCG[i] - uCGnew[i]; + uChem[i] += duChem; + uCG[i] = 0.0; + uCGnew[i] = 0.0; + } +} + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::operator()(TagFixEOStableRXTemperatureLookup, const int &i) const { + if (mask[i] & groupbit) + temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); } /* ---------------------------------------------------------------------- */ @@ -94,25 +108,28 @@ void FixEOStableRXKokkos::init() uMech = atomKK->k_uMech.view(); uChem = atomKK->k_uChem.view(); dpdTheta= atomKK->k_dpdTheta.view(); - double tmp; - if(this->restart_reset){ - for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit) - temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); - } else { - for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit) { - if(dpdTheta[i] <= 0.0) - error->one(FLERR,"Internal temperature <= zero"); - energy_lookup(i,dpdTheta[i],tmp); - uCond[i] = tmp / 2.0; - uMech[i] = tmp / 2.0; - uChem[i] = 0.0; - } - } + if (this->restart_reset) + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + + error_check(); } +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::operator()(TagFixEOStableRXInit, const int &i) const { + double tmp; + if (mask[i] & groupbit) { + if(dpdTheta[i] <= 0.0) + k_error_flag.d_view() = 1; + energy_lookup(i,dpdTheta[i],tmp); + uCond[i] = tmp / 2.0; + uMech[i] = tmp / 2.0; + uChem[i] = 0.0; + } +} /* ---------------------------------------------------------------------- */ @@ -126,12 +143,19 @@ void FixEOStableRXKokkos::post_integrate() uChem = atomKK->k_uChem.view(); dpdTheta= atomKK->k_dpdTheta.view(); - for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit){ - temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); - if(dpdTheta[i] <= 0.0) - error->one(FLERR,"Internal temperature <= zero"); - } + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + + error_check(); +} + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::operator()(TagFixEOStableRXTemperatureLookup2, const int &i) const { + if (mask[i] & groupbit){ + temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); + if (dpdTheta[i] <= 0.0) + k_error_flag.d_view() = 1; + } } /* ---------------------------------------------------------------------- */ @@ -152,23 +176,14 @@ void FixEOStableRXKokkos::end_of_step() // Communicate the ghost uCGnew comm->reverse_comm_fix(this); - for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit){ - duChem = uCG[i] - uCGnew[i]; - uChem[i] += duChem; - uCG[i] = 0.0; - uCGnew[i] = 0.0; - } + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); // Communicate the updated momenta and velocities to all nodes comm->forward_comm_fix(this); - for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit){ - temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); - if(dpdTheta[i] <= 0.0) - error->one(FLERR,"Internal temperature <= zero"); - } + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + + error_check(); } /* ---------------------------------------------------------------------- @@ -242,13 +257,11 @@ void FixEOStableRXKokkos::temperature_lookup(int id, double ui, doub // Apply the Secant Method for(it=0; itone(FLERR,"NaN detected in secant solver."); + if(isnan(f1) || isnan(f2)) k_error_flag.d_view() = 2; temp = t1; temp = MAX(temp,tb->lo); temp = MIN(temp,tb->hi); - char str[256]; - sprintf(str,"Secant solver did not converge because table bounds were exceeded: it=%d id=%d ui=%lf thetai=%lf t1=%lf t2=%lf f1=%lf f2=%lf dpdTheta=%lf\n",it,id,ui,thetai,t1,t2,f1,f2,temp); - error->warning(FLERR,str); + k_warning_flag.d_view() = 1; break; } temp = t2 - f2*(t2-t1)/(f2-f1); @@ -260,11 +273,9 @@ void FixEOStableRXKokkos::temperature_lookup(int id, double ui, doub f2 = u2 - ui; } if(it==maxit){ - char str[256]; - sprintf(str,"Maxit exceeded in secant solver: id=%d ui=%lf thetai=%lf t1=%lf t2=%lf f1=%lf f2=%lf\n",id,ui,thetai,t1,t2,f1,f2); if(isnan(f1) || isnan(f2) || isnan(ui) || isnan(thetai) || isnan(t1) || isnan(t2)) - error->one(FLERR,"NaN detected in secant solver."); - error->one(FLERR,str); + k_error_flag.d_view() = 2; + k_error_flag.d_view() = 3; } thetai = temp; } @@ -346,6 +357,30 @@ void FixEOStableRXKokkos::unpack_reverse_comm(int n, int *list, doub /* ---------------------------------------------------------------------- */ +template +void FixEOStableRXKokkos::error_check() +{ + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view() == 1) + error->one(FLERR,"Internal temperature <= zero"); + else if (k_error_flag.h_view() == 2) + error->one(FLERR,"NaN detected in secant solver."); + else if (k_error_flag.h_view() == 3) + error->one(FLERR,"Maxit exceeded in secant solver."); + + k_warning_flag.template modify(); + k_warning_flag.template sync(); + if (k_warning_flag.h_view()) { + error->warning(FLERR,"Secant solver did not converge because table bounds were exceeded."); + k_warning_flag.h_view() = 0; + k_warning_flag.template modify(); + k_warning_flag.template sync(); + } +} + +/* ---------------------------------------------------------------------- */ + namespace LAMMPS_NS { template class FixEOStableRXKokkos; #ifdef KOKKOS_HAVE_CUDA diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.h b/src/KOKKOS/fix_eos_table_rx_kokkos.h index 9eccd67c54..9b0ca366a0 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.h +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.h @@ -27,6 +27,11 @@ FixStyle(eos/table/rx/kk/host,FixEOStableRXKokkos) namespace LAMMPS_NS { +struct TagFixEOStableRXInit{}; +struct TagFixEOStableRXSetup{}; +struct TagFixEOStableRXTemperatureLookup{}; +struct TagFixEOStableRXTemperatureLookup2{}; + template class FixEOStableRXKokkos : public FixEOStableRX { public: @@ -41,6 +46,18 @@ class FixEOStableRXKokkos : public FixEOStableRX { void post_integrate(); void end_of_step(); + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEOStableRXInit, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEOStableRXSetup, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEOStableRXTemperatureLookup, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEOStableRXTemperatureLookup2, const int&) const; + KOKKOS_INLINE_FUNCTION void energy_lookup(int, double, double &) const; @@ -59,12 +76,16 @@ class FixEOStableRXKokkos : public FixEOStableRX { //Table *tables, *tables2; void allocate(); + void error_check(); //double *dHf; typename AT::t_int_1d mask; typename AT::t_efloat_1d uCond,uMech,uChem,uCG,uCGnew,rho,dpdTheta,duChem; + DAT::tdual_int_scalar k_error_flag; + DAT::tdual_int_scalar k_warning_flag; + int pack_reverse_comm(int, int, double *); void unpack_reverse_comm(int, int *, double *); int pack_forward_comm(int , int *, double *, int, int *); diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 569d131af7..c46f3d037d 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -56,6 +56,8 @@ PairExp6rxKokkos::PairExp6rxKokkos(LAMMPS *lmp) : PairExp6rx(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + + k_error_flag = DAT::tdual_int_scalar("pair:error_flag"); } /* ---------------------------------------------------------------------- */ @@ -168,6 +170,11 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); } + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view()) + error->all(FLERR,"The number of molecules in CG particle is less than 1e-8."); + int inum = list->inum; NeighListKokkos* k_list = static_cast*>(list); d_numneigh = k_list->d_numneigh; @@ -184,6 +191,11 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view()) + error->all(FLERR,"alpha_ij is 6.0 in pair exp6"); + if (eflag_global) eng_vdwl += ev.evdwl; if (vflag_global) { virial[0] += ev.v[0]; @@ -358,7 +370,7 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxComputeall(FLERR,"alpha_ij is 6.0 in pair exp6"); + k_error_flag.d_view() = 1; // A3. Compute some convenient quantities for evaluating the force rminv = 1.0/rmOld12_ij; @@ -774,7 +786,7 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double } } if(nTotal < 1e-8 || nTotal_old < 1e-8) - error->all(FLERR,"The number of molecules in CG particle is less than 1e-8."); + k_error_flag.d_view() = 1; // Compute the mole fraction of molecules within the fluid portion of the particle (One Fluid Approximation) fractionOFA_old = nTotalOFA_old / nTotal_old; diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index b0fbd3d9e5..366cf99d75 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -103,6 +103,8 @@ class PairExp6rxKokkos : public PairExp6rx { DAT::t_efloat_1d d_eatom; DAT::t_virial_array d_vatom; + DAT::tdual_int_scalar k_error_flag; + typename AT::t_neighbors_2d d_neighbors; typename AT::t_int_1d_randomread d_ilist; typename AT::t_int_1d_randomread d_numneigh; diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index d1a13b12fd..bea7cb6b0b 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -70,6 +70,8 @@ PairMultiLucyRXKokkos::PairMultiLucyRXKokkos(LAMMPS *lmp) : PairMult execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + + k_error_flag = DAT::tdual_int_scalar("pair:error_flag"); } /* ---------------------------------------------------------------------- */ @@ -180,6 +182,15 @@ void PairMultiLucyRXKokkos::compute(int eflag_in, int vflag_in) Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view() == 1) + error->one(FLERR,"Density < table inner cutoff"); + else if (k_error_flag.h_view() == 2) + error->one(FLERR,"Density > table outer cutoff"); + else if (k_error_flag.h_view() == 3) + error->one(FLERR,"Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx"); + if (eflag_global) eng_vdwl += ev.evdwl; if (vflag_global) { virial[0] += ev.v[0]; @@ -265,19 +276,13 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeinnersq || rho[j]*rho[j] < tb->innersq){ - //printf("Table inner cutoff = %lf\n",sqrt(tb->innersq)); - //printf("rho[%d]=%lf\n",i,rho[i]); - //printf("rho[%d]=%lf\n",j,rho[j]); - error->one(FLERR,"Density < table inner cutoff"); + k_error_flag.d_view() = 1; } if (tabstyle == LOOKUP) { itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); if (itable >= tlm1 || jtable >= tlm1){ - //printf("Table outer index = %d\n",tlm1); - //printf("itableIndex=%d rho[%d]=%lf\n",itable,i,rho[i]); - //printf("jtableIndex=%d rho[%d]=%lf\n",jtable,j,rho[j]); - error->one(FLERR,"Density > table outer cutoff"); + k_error_flag.d_view() = 2; } A_i = tb->f[itable]; A_j = tb->f[jtable]; @@ -290,10 +295,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute ((rho[i]*rho[i] - tb->innersq) * tb->invdelta); jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); if (itable >= tlm1 || jtable >= tlm1){ - //printf("Table outer index = %d\n",tlm1); - //printf("itableIndex=%d rho[%d]=%lf\n",itable,i,rho[i]); - //printf("jtableIndex=%d rho[%d]=%lf\n",jtable,j,rho[j]); - error->one(FLERR,"Density > table outer cutoff"); + k_error_flag.d_view() = 2; } if(itable<0) itable=0; if(itable>=tlm1) itable=tlm1; @@ -314,7 +316,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeone(FLERR,"Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx"); + } else k_error_flag.d_view() = 3; if (isite1 == isite2) fpair = sqrt(fractionOld1_i*fractionOld2_j)*fpair; else fpair = (sqrt(fractionOld1_i*fractionOld2_j) + sqrt(fractionOld2_i*fractionOld1_j))*fpair; @@ -341,13 +343,12 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputee[itable]; else if (tabstyle == LINEAR){ if (itable >= tlm1){ - //printf("itableIndex=%d rho[%d]=%lf\n",itable,i,rho[i]); - error->one(FLERR,"Density > table outer cutoff"); + k_error_flag.d_view() = 2; } if(itable==0) fraction_i=0.0; else fraction_i = (((rho[i]*rho[i]) - tb->rsq[itable]) * tb->invdelta); evdwl = tb->e[itable] + fraction_i*tb->de[itable]; - } else error->one(FLERR,"Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx"); + } else k_error_flag.d_view() = 3; evdwl *=(pi*d_cutsq(itype,itype)*d_cutsq(itype,itype))/84.0; evdwlOld = fractionOld1_i*evdwl; diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h index 74a10ddee1..ff22516eb1 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h @@ -130,6 +130,8 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { typename AT::t_int_1d_randomread d_ilist; typename AT::t_int_1d_randomread d_numneigh; + DAT::tdual_int_scalar k_error_flag; + typename AT::tdual_ffloat_2d k_cutsq; typename AT::t_ffloat_2d d_cutsq; -- GitLab From c0d6cbbdd3f135578b584525c92e447c663e2e1b Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 15 Dec 2016 11:18:50 -0700 Subject: [PATCH 011/337] Updates to Kokkos files --- src/KOKKOS/atom_vec_dpd_kokkos.cpp | 72 ++++ src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 2 +- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 3 + src/KOKKOS/pair_exp6_rx_kokkos.cpp | 68 ++- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 492 ++++++++++++++-------- src/KOKKOS/pair_multi_lucy_rx_kokkos.h | 79 +++- src/USER-DPD/fix_eos_table_rx.cpp | 2 + src/USER-DPD/pair_multi_lucy_rx.cpp | 2 + src/USER-DPD/pair_table_rx.cpp | 2 + src/atom_masks.h | 12 + 10 files changed, 534 insertions(+), 200 deletions(-) diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index c79559172f..58fc9c46c3 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -1801,6 +1801,15 @@ void AtomVecDPDKokkos::sync(ExecutionSpace space, unsigned int mask) if (mask & TYPE_MASK) atomKK->k_type.sync(); if (mask & MASK_MASK) atomKK->k_mask.sync(); if (mask & IMAGE_MASK) atomKK->k_image.sync(); + if (mask & DPDRHO_MASK) atomKK->k_rho.sync(); + if (mask & DPDTHETA_MASK) atomKK->k_dpdTheta.sync(); + if (mask & UCOND_MASK) atomKK->k_uCond.sync(); + if (mask & UMECH_MASK) atomKK->k_uMech.sync(); + if (mask & UCHEM_MASK) atomKK->k_uChem.sync(); + if (mask & UCG_MASK) atomKK->k_uCG.sync(); + if (mask & UCGNEW_MASK) atomKK->k_uCGnew.sync(); + if (mask & DUCHEM_MASK) atomKK->k_duChem.sync(); + if (mask & DVECTOR_MASK) atomKK->k_dvector.sync(); } else { if (mask & X_MASK) atomKK->k_x.sync(); if (mask & V_MASK) atomKK->k_v.sync(); @@ -1809,6 +1818,15 @@ void AtomVecDPDKokkos::sync(ExecutionSpace space, unsigned int mask) if (mask & TYPE_MASK) atomKK->k_type.sync(); if (mask & MASK_MASK) atomKK->k_mask.sync(); if (mask & IMAGE_MASK) atomKK->k_image.sync(); + if (mask & DPDRHO_MASK) atomKK->k_rho.sync(); + if (mask & DPDTHETA_MASK) atomKK->k_dpdTheta.sync(); + if (mask & UCOND_MASK) atomKK->k_uCond.sync(); + if (mask & UMECH_MASK) atomKK->k_uMech.sync(); + if (mask & UCHEM_MASK) atomKK->k_uChem.sync(); + if (mask & UCG_MASK) atomKK->k_uCG.sync(); + if (mask & UCGNEW_MASK) atomKK->k_uCGnew.sync(); + if (mask & DUCHEM_MASK) atomKK->k_duChem.sync(); + if (mask & DVECTOR_MASK) atomKK->k_dvector.sync(); } } @@ -1831,6 +1849,24 @@ void AtomVecDPDKokkos::sync_overlapping_device(ExecutionSpace space, unsigned in perform_async_copy(atomKK->k_mask,space); if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) perform_async_copy(atomKK->k_image,space); + if ((mask & DPDRHO_MASK) && atomKK->k_rho.need_sync()) + perform_async_copy(atomKK->k_rho,space); + if ((mask & DPDTHETA_MASK) && atomKK->k_dpdTheta.need_sync()) + perform_async_copy(atomKK->k_dpdTheta,space); + if ((mask & UCOND_MASK) && atomKK->k_uCond.need_sync()) + perform_async_copy(atomKK->k_uCond,space); + if ((mask & UMECH_MASK) && atomKK->k_uMech.need_sync()) + perform_async_copy(atomKK->k_uMech,space); + if ((mask & UCHEM_MASK) && atomKK->k_uChem.need_sync()) + perform_async_copy(atomKK->k_uChem,space); + if ((mask & UCG_MASK) && atomKK->k_uCG.need_sync()) + perform_async_copy(atomKK->k_uCG,space); + if ((mask & UCGNEW_MASK) && atomKK->k_uCGnew.need_sync()) + perform_async_copy(atomKK->k_uCGnew,space); + if ((mask & DUCHEM_MASK) && atomKK->k_duChem.need_sync()) + perform_async_copy(atomKK->k_duChem,space); + if ((mask & DVECTOR_MASK) && atomKK->k_dvector.need_sync()) + perform_async_copy(atomKK->k_dvector,space); } else { if ((mask & X_MASK) && atomKK->k_x.need_sync()) perform_async_copy(atomKK->k_x,space); @@ -1846,6 +1882,24 @@ void AtomVecDPDKokkos::sync_overlapping_device(ExecutionSpace space, unsigned in perform_async_copy(atomKK->k_mask,space); if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) perform_async_copy(atomKK->k_image,space); + if ((mask & DPDRHO_MASK) && atomKK->k_rho.need_sync()) + perform_async_copy(atomKK->k_rho,space); + if ((mask & DPDTHETA_MASK) && atomKK->k_dpdTheta.need_sync()) + perform_async_copy(atomKK->k_dpdTheta,space); + if ((mask & UCOND_MASK) && atomKK->k_uCond.need_sync()) + perform_async_copy(atomKK->k_uCond,space); + if ((mask & UMECH_MASK) && atomKK->k_uMech.need_sync()) + perform_async_copy(atomKK->k_uMech,space); + if ((mask & UCHEM_MASK) && atomKK->k_uChem.need_sync()) + perform_async_copy(atomKK->k_uChem,space); + if ((mask & UCG_MASK) && atomKK->k_uCG.need_sync()) + perform_async_copy(atomKK->k_uCG,space); + if ((mask & UCGNEW_MASK) && atomKK->k_uCGnew.need_sync()) + perform_async_copy(atomKK->k_uCGnew,space); + if ((mask & DUCHEM_MASK) && atomKK->k_duChem.need_sync()) + perform_async_copy(atomKK->k_duChem,space); + if ((mask & DVECTOR_MASK) && atomKK->k_dvector.need_sync()) + perform_async_copy(atomKK->k_dvector,space); } } @@ -1861,6 +1915,15 @@ void AtomVecDPDKokkos::modified(ExecutionSpace space, unsigned int mask) if (mask & TYPE_MASK) atomKK->k_type.modify(); if (mask & MASK_MASK) atomKK->k_mask.modify(); if (mask & IMAGE_MASK) atomKK->k_image.modify(); + if (mask & DPDRHO_MASK) atomKK->k_rho.modify(); + if (mask & DPDTHETA_MASK) atomKK->k_dpdTheta.modify(); + if (mask & UCOND_MASK) atomKK->k_uCond.modify(); + if (mask & UMECH_MASK) atomKK->k_uMech.modify(); + if (mask & UCHEM_MASK) atomKK->k_uChem.modify(); + if (mask & UCG_MASK) atomKK->k_uCG.modify(); + if (mask & UCGNEW_MASK) atomKK->k_uCGnew.modify(); + if (mask & DUCHEM_MASK) atomKK->k_duChem.modify(); + if (mask & DVECTOR_MASK) atomKK->k_dvector.modify(); } else { if (mask & X_MASK) atomKK->k_x.modify(); if (mask & V_MASK) atomKK->k_v.modify(); @@ -1869,6 +1932,15 @@ void AtomVecDPDKokkos::modified(ExecutionSpace space, unsigned int mask) if (mask & TYPE_MASK) atomKK->k_type.modify(); if (mask & MASK_MASK) atomKK->k_mask.modify(); if (mask & IMAGE_MASK) atomKK->k_image.modify(); + if (mask & DPDRHO_MASK) atomKK->k_rho.modify(); + if (mask & DPDTHETA_MASK) atomKK->k_dpdTheta.modify(); + if (mask & UCOND_MASK) atomKK->k_uCond.modify(); + if (mask & UMECH_MASK) atomKK->k_uMech.modify(); + if (mask & UCHEM_MASK) atomKK->k_uChem.modify(); + if (mask & UCG_MASK) atomKK->k_uCG.modify(); + if (mask & UCGNEW_MASK) atomKK->k_uCGnew.modify(); + if (mask & DUCHEM_MASK) atomKK->k_duChem.modify(); + if (mask & DVECTOR_MASK) atomKK->k_dvector.modify(); } } diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index faf490fcc0..75e9b292f9 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -52,7 +52,7 @@ FixEOStableRXKokkos::FixEOStableRXKokkos(LAMMPS *lmp, int narg, char template FixEOStableRXKokkos::~FixEOStableRXKokkos() { - + if (copymode) return; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index 45da5bf165..0bfbb9491e 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -52,6 +52,8 @@ PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : PairDP { atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | F_MASK | TYPE_MASK | TAG_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; cutsq = NULL; } @@ -357,6 +359,7 @@ double PairDPDfdtEnergyKokkos::init_one(int i, int j) m_cutsq[j][i] = m_cutsq[i][j] = cutone*cutone; } k_cutsq.h_view(i,j) = cutone*cutone; + k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j); k_cutsq.template modify(); return cutone; diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index c46f3d037d..7e74f39ef0 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -54,8 +54,8 @@ PairExp6rxKokkos::PairExp6rxKokkos(LAMMPS *lmp) : PairExp6rx(lmp) { atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; - datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; - datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; k_error_flag = DAT::tdual_int_scalar("pair:error_flag"); } @@ -104,6 +104,8 @@ void PairExp6rxKokkos::init_style() template void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) { + copymode = 1; + eflag = eflag_in; vflag = vflag_in; @@ -141,7 +143,9 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) special_coul[3] = force->special_coul[3]; newton_pair = force->newton_pair; - copymode = 1; + atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); + if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK); + else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); // Initialize the Exp6 parameter data for both the local // and ghost atoms. Make the parameter data persistent @@ -185,10 +189,22 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) EV_FLOAT ev; - if (evflag) { - Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - } else { - Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } k_error_flag.template modify(); @@ -246,6 +262,12 @@ template template KOKKOS_INLINE_FUNCTION void PairExp6rxKokkos::operator()(TagPairExp6rxCompute, const int &ii, EV_FLOAT& ev) const { + + // These arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + Kokkos::View::value> > a_uCG = uCG; + Kokkos::View::value> > a_uCGnew = uCGnew; + int i,j,jj,jnum,itype,jtype; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; double rsq,r2inv,r6inv,forceExp6,factor_lj; @@ -287,6 +309,12 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxComputetemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); } } } + + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; + a_uCG[i] += uCG_i; + a_uCGnew[i] += uCGnew_i; } template diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index bea7cb6b0b..03bbaf9907 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -68,8 +68,14 @@ PairMultiLucyRXKokkos::PairMultiLucyRXKokkos(LAMMPS *lmp) : PairMult atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; - datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; - datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + update_table = 0; + ntables = 0; + tables = NULL; + h_table = new TableHost(); + d_table = new TableDevice(); k_error_flag = DAT::tdual_int_scalar("pair:error_flag"); } @@ -79,7 +85,10 @@ PairMultiLucyRXKokkos::PairMultiLucyRXKokkos(LAMMPS *lmp) : PairMult template PairMultiLucyRXKokkos::~PairMultiLucyRXKokkos() { + if (copymode) return; + delete h_table; + delete d_table; } /* ---------------------------------------------------------------------- */ @@ -109,7 +118,7 @@ void PairMultiLucyRXKokkos::init_style() neighbor->requests[irequest]->half = 1; neighbor->requests[irequest]->ghost = 1; } else { - error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); + error->all(FLERR,"Cannot use chosen neighbor list style with multi/lucy/rx/kk"); } } @@ -118,6 +127,23 @@ void PairMultiLucyRXKokkos::init_style() template void PairMultiLucyRXKokkos::compute(int eflag_in, int vflag_in) { + if (update_table) + create_kokkos_tables(); + + if (tabstyle == LOOKUP) + compute_style(eflag_in,vflag_in); + else if(tabstyle == LINEAR) + compute_style(eflag_in,vflag_in); +} + +/* ---------------------------------------------------------------------- */ + +template +template +void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in) +{ + copymode = 1; + eflag = eflag_in; vflag = vflag_in; @@ -145,10 +171,14 @@ void PairMultiLucyRXKokkos::compute(int eflag_in, int vflag_in) x = atomKK->k_x.view(); f = atomKK->k_f.view(); type = atomKK->k_type.view(); + rho = atomKK->k_rho.view(); uCG = atomKK->k_uCG.view(); uCGnew = atomKK->k_uCGnew.view(); dvector = atomKK->k_dvector.view(); - rho = atomKK->k_rho.view(); + + atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | DPDRHO_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); + if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK); + else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); nlocal = atom->nlocal; int nghost = atom->nghost; @@ -176,10 +206,22 @@ void PairMultiLucyRXKokkos::compute(int eflag_in, int vflag_in) EV_FLOAT ev; - if (evflag) { - Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - } else { - Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } k_error_flag.template modify(); @@ -223,9 +265,13 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXgetParams, } template -template +template KOKKOS_INLINE_FUNCTION -void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute, const int &ii, EV_FLOAT& ev) const { +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute, const int &ii, EV_FLOAT& ev) const { + + // The f array is atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + int i,j,jj,inum,jnum,itype,jtype,itable; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; double rsq; @@ -239,8 +285,6 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute::operator()(TagPairMultiLucyRXComputeinnersq || rho[j]*rho[j] < tb->innersq){ + //tb = &tables[tabindex[itype][jtype]]; + const int tidx = d_table_const.tabindex(itype,jtype); + //if (rho[i]*rho[i] < tb->innersq || rho[j]*rho[j] < tb->innersq){ + if (rho[i]*rho[i] < d_table_const.innersq(tidx) || rho[j]*rho[j] < d_table_const.innersq(tidx)){ k_error_flag.d_view() = 1; } - if (tabstyle == LOOKUP) { - itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); - jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); + if (TABSTYLE == LOOKUP) { + //itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); + itable = static_cast (((rho[i]*rho[i]) - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); + jtable = static_cast (((rho[j]*rho[j]) - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); if (itable >= tlm1 || jtable >= tlm1){ k_error_flag.d_view() = 2; } - A_i = tb->f[itable]; - A_j = tb->f[jtable]; + //A_i = tb->f[itable]; + A_i = d_table_const.f(tidx,itable); + //A_j = tb->f[jtable]; + A_j = d_table_const.f(tidx,jtable); const double rfactor = 1.0-sqrt(rsq/d_cutsq(itype,jtype)); fpair = 0.5*(A_i + A_j)*(4.0-3.0*rfactor)*rfactor*rfactor*rfactor; fpair /= sqrt(rsq); - } else if (tabstyle == LINEAR) { - itable = static_cast ((rho[i]*rho[i] - tb->innersq) * tb->invdelta); - jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); + } else if (TABSTYLE == LINEAR) { + //itable = static_cast ((rho[i]*rho[i] - tb->innersq) * tb->invdelta); + itable = static_cast ((rho[i]*rho[i] - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); + jtable = static_cast ((rho[j]*rho[j] - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); if (itable >= tlm1 || jtable >= tlm1){ k_error_flag.d_view() = 2; } @@ -302,15 +354,19 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute=tlm1)jtable=tlm1; - fraction_i = (((rho[i]*rho[i]) - tb->rsq[itable]) * tb->invdelta); - fraction_j = (((rho[j]*rho[j]) - tb->rsq[jtable]) * tb->invdelta); + //fraction_i = (((rho[i]*rho[i]) - tb->rsq[itable]) * tb->invdelta); + fraction_i = (((rho[i]*rho[i]) - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx)); + //fraction_j = (((rho[j]*rho[j]) - tb->rsq[jtable]) * tb->invdelta); + fraction_j = (((rho[j]*rho[j]) - d_table_const.rsq(tidx,jtable)) * d_table_const.invdelta(tidx)); if(itable==0) fraction_i=0.0; if(itable==tlm1) fraction_i=0.0; if(jtable==0) fraction_j=0.0; if(jtable==tlm1) fraction_j=0.0; - A_i = tb->f[itable] + fraction_i*tb->df[itable]; - A_j = tb->f[jtable] + fraction_j*tb->df[jtable]; + //A_i = tb->f[itable] + fraction_i*tb->df[itable]; + A_i = d_table_const.f(tidx,itable) + fraction_i*d_table_const.df(tidx,itable); + //A_j = tb->f[jtable] + fraction_j*tb->df[jtable]; + A_j = d_table_const.f(tidx,jtable) + fraction_j*d_table_const.df(tidx,jtable); const double rfactor = 1.0-sqrt(rsq/d_cutsq(itype,jtype)); fpair = 0.5*(A_i + A_j)*(4.0-3.0*rfactor)*rfactor*rfactor*rfactor; @@ -325,29 +381,34 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputetemplate ev_tally(ev,i,j,0.0,fpair,delx,dely,delz); } } - f(i,0) += fx_i; - f(i,1) += fy_i; - f(i,2) += fz_i; - - tb = &tables[tabindex[itype][itype]]; - itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); - if (tabstyle == LOOKUP) evdwl = tb->e[itable]; - else if (tabstyle == LINEAR){ + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; + + //tb = &tables[tabindex[itype][itype]]; + const int tidx = d_table_const.tabindex(itype,itype); + //itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); + itable = static_cast (((rho[i]*rho[i]) - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //if (TABSTYLE == LOOKUP) evdwl = tb->e[itable]; + if (TABSTYLE == LOOKUP) evdwl = d_table_const.e(tidx,itable); + else if (TABSTYLE == LINEAR){ if (itable >= tlm1){ k_error_flag.d_view() = 2; } if(itable==0) fraction_i=0.0; - else fraction_i = (((rho[i]*rho[i]) - tb->rsq[itable]) * tb->invdelta); - evdwl = tb->e[itable] + fraction_i*tb->de[itable]; + //else fraction_i = (((rho[i]*rho[i]) - tb->rsq[itable]) * tb->invdelta); + else fraction_i = (((rho[i]*rho[i]) - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx)); + //evdwl = tb->e[itable] + fraction_i*tb->de[itable]; + evdwl = d_table_const.e(tidx,itable); + fraction_i*d_table_const.de(tidx,itable); } else k_error_flag.d_view() = 3; evdwl *=(pi*d_cutsq(itype,itype)*d_cutsq(itype,itype))/84.0; @@ -364,121 +425,11 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute -template +template KOKKOS_INLINE_FUNCTION -void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute, const int &ii) const { +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute, const int &ii) const { EV_FLOAT ev; - this->template operator()(TagPairMultiLucyRXCompute(), ii, ev); -} - -/* ---------------------------------------------------------------------- - set coeffs for one or more type pairs -------------------------------------------------------------------------- */ - -template -void PairMultiLucyRXKokkos::coeff(int narg, char **arg) -{ - if (narg != 6 && narg != 7) error->all(FLERR,"Illegal pair_coeff command"); - - bool rx_flag = false; - for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"rx",2) == 0) rx_flag = true; - if (!rx_flag) error->all(FLERR,"PairMultiLucyRXKokkos requires a fix rx command."); - - if (!allocated) allocate(); - - int ilo,ihi,jlo,jhi; - force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); - force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); - - int me; - MPI_Comm_rank(world,&me); - tables = (Table *) - memory->srealloc(tables,(ntables+1)*sizeof(Table),"pair:tables"); - Table *tb = &tables[ntables]; - null_table(tb); - if (me == 0) read_table(tb,arg[2],arg[3]); - bcast_table(tb); - - nspecies = atom->nspecies_dpd; - int n; - n = strlen(arg[3]) + 1; - site1 = new char[n]; - strcpy(site1,arg[4]); - - n = strlen(arg[4]) + 1; - site2 = new char[n]; - strcpy(site2,arg[5]); - - // set table cutoff - - if (narg == 7) tb->cut = force->numeric(FLERR,arg[6]); - else if (tb->rflag) tb->cut = tb->rhi; - else tb->cut = tb->rfile[tb->ninput-1]; - - // error check on table parameters - // insure cutoff is within table - - if (tb->ninput <= 1) error->one(FLERR,"Invalid pair table length"); - if (tb->rflag == 0) { - rho_0 = tb->rfile[0]; - } else { - rho_0 = tb->rlo; - } - - tb->match = 0; - if (tabstyle == LINEAR && tb->ninput == tablength && - tb->rflag == RSQ) tb->match = 1; - - // spline read-in values and compute r,e,f vectors within table - - if (tb->match == 0) spline_table(tb); - compute_table(tb); - - // store ptr to table in tabindex - - int count = 0; - for (int i = ilo; i <= ihi; i++) { - for (int j = MAX(jlo,i); j <= jhi; j++) { - tabindex[i][j] = ntables; - setflag[i][j] = 1; - count++; - } - } - - if (count == 0) error->all(FLERR,"Illegal pair_coeff command"); - ntables++; - - // Match site* to isite values. - - if (strcmp(site1, "1fluid") == 0) - isite1 = oneFluidParameter; - else { - isite1 = nspecies; - for (int ispecies = 0; ispecies < nspecies; ++ispecies) - if (strcmp(site1, atom->dname[ispecies]) == 0){ - isite1 = ispecies; - break; - } - - if (isite1 == nspecies) - error->all(FLERR,"Pair_multi_lucy_rx site1 is invalid."); - } - - if (strcmp(site2, "1fluid") == 0) - isite2 = oneFluidParameter; - else { - isite2 = nspecies; - for (int ispecies = 0; ispecies < nspecies; ++ispecies) - if (strcmp(site2, atom->dname[ispecies]) == 0){ - isite2 = ispecies; - break; - } - - if (isite2 == nspecies) - error->all(FLERR,"Pair_multi_lucy_rx site2 is invalid."); - } - + this->template operator()(TagPairMultiLucyRXCompute(), ii, ev); } /* ---------------------------------------------------------------------- */ @@ -486,12 +437,16 @@ void PairMultiLucyRXKokkos::coeff(int narg, char **arg) template void PairMultiLucyRXKokkos::computeLocalDensity() { + copymode = 1; + x = atomKK->k_x.view(); type = atomKK->k_type.view(); rho = atomKK->k_rho.view(); + h_rho = atomKK->k_rho.h_view; nlocal = atom->nlocal; - //sync + atomKK->sync(execution_space,X_MASK | TYPE_MASK | DPDRHO_MASK); + atomKK->modified(execution_space,DPDRHO_MASK); const int inum = list->inum; NeighListKokkos* k_list = static_cast*>(list); @@ -514,16 +469,34 @@ void PairMultiLucyRXKokkos::computeLocalDensity() if (newton_pair) m += atom->nghost; Kokkos::parallel_for(Kokkos::RangePolicy(0,m),*this); -// rho = density at each atom -// loop over neighbors of my atoms - if (newton_pair) - Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); - else - Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + // rho = density at each atom + // loop over neighbors of my atoms + + if (neighflag == HALF) { + if (newton_pair) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else if (neighflag == HALFTHREAD) { + if (newton_pair) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + + // communicate and sum densities (on the host) - if (newton_pair) comm->reverse_comm_pair(this); + if (newton_pair) { + atomKK->modified(execution_space,DPDRHO_MASK); + atomKK->sync(Host,DPDRHO_MASK); + comm->reverse_comm_pair(this); + atomKK->modified(Host,DPDRHO_MASK); + atomKK->sync(execution_space,DPDRHO_MASK); + } comm->forward_comm_pair(this); + + copymode = 0; } template @@ -536,6 +509,10 @@ template template KOKKOS_INLINE_FUNCTION void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLocalDensity, const int &ii) const { + + // The rho array is atomic for Half/Thread neighbor style + Kokkos::View::value> > a_rho = rho; + const int i = d_ilist[ii]; const double xtmp = x(i,0); @@ -567,7 +544,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLoca const double factor = factor_type11*(1.0 + 1.5*r_over_rcut)*tmpFactor4; rho_i += factor; if (NEWTON_PAIR || j < nlocal) - rho[j] += factor; + a_rho[j] += factor; } else if (rsq < d_cutsq(itype,jtype)) { const double rcut = sqrt(d_cutsq(itype,jtype)); const double tmpFactor = 1.0-sqrt(rsq)/rcut; @@ -575,12 +552,12 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLoca const double factor = (84.0/(5.0*pi*rcut*rcut*rcut))*(1.0+3.0*sqrt(rsq)/(2.0*rcut))*tmpFactor4; rho_i += factor; if (NEWTON_PAIR || j < nlocal) - rho[j] += factor; + a_rho[j] += factor; } } } - rho[i] = rho_i; + a_rho[i] = rho_i; } /* ---------------------------------------------------------------------- */ @@ -630,16 +607,53 @@ void PairMultiLucyRXKokkos::getParams(int id, double &fractionOld1, /* ---------------------------------------------------------------------- */ +template +int PairMultiLucyRXKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, int iswap_in, DAT::tdual_xfloat_1d &buf, + int pbc_flag, int *pbc) +{ + d_sendlist = k_sendlist.view(); + iswap = iswap_in; + v_buf = buf.view(); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + DeviceType::fence(); + return n; +} + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXPackForwardComm, const int &i) const { + int j = d_sendlist(iswap, i); + v_buf[i] = rho[j]; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::unpack_forward_comm_kokkos(int n, int first_in, DAT::tdual_xfloat_1d &buf) +{ + first = first_in; + v_buf = buf.view(); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + DeviceType::fence(); +} + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXUnpackForwardComm, const int &i) const { + rho[i + first] = v_buf[i]; +} + +/* ---------------------------------------------------------------------- */ + template int PairMultiLucyRXKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { int i,j,m; - rho = atomKK->k_rho.view(); m = 0; for (i = 0; i < n; i++) { j = list[i]; - buf[m++] = rho[j]; + buf[m++] = h_rho[j]; } return m; } @@ -650,11 +664,10 @@ template void PairMultiLucyRXKokkos::unpack_forward_comm(int n, int first, double *buf) { int i,m,last; - rho = atomKK->k_rho.view(); m = 0; last = first + n; - for (i = first; i < last; i++) rho[i] = buf[m++]; + for (i = first; i < last; i++) h_rho[i] = buf[m++]; } /* ---------------------------------------------------------------------- */ @@ -663,11 +676,10 @@ template int PairMultiLucyRXKokkos::pack_reverse_comm(int n, int first, double *buf) { int i,m,last; - rho = atomKK->k_rho.view(); m = 0; last = first + n; - for (i = first; i < last; i++) buf[m++] = rho[i]; + for (i = first; i < last; i++) buf[m++] = h_rho[i]; return m; } @@ -677,12 +689,11 @@ template void PairMultiLucyRXKokkos::unpack_reverse_comm(int n, int *list, double *buf) { int i,j,m; - rho = atomKK->k_rho.view(); m = 0; for (i = 0; i < n; i++) { j = list[i]; - rho[j] += buf[m++]; + h_rho[j] += buf[m++]; } } @@ -782,6 +793,145 @@ void PairMultiLucyRXKokkos::ev_tally(EV_FLOAT &ev, const int &i, con /* ---------------------------------------------------------------------- */ +template +void PairMultiLucyRXKokkos::create_kokkos_tables() +{ + const int tlm1 = tablength-1; + + memory->create_kokkos(d_table->innersq,h_table->innersq,ntables,"Table::innersq"); + memory->create_kokkos(d_table->invdelta,h_table->invdelta,ntables,"Table::invdelta"); + memory->create_kokkos(d_table->deltasq6,h_table->deltasq6,ntables,"Table::deltasq6"); + + if(tabstyle == LOOKUP) { + memory->create_kokkos(d_table->e,h_table->e,ntables,tlm1,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tlm1,"Table::f"); + } + + if(tabstyle == LINEAR) { + memory->create_kokkos(d_table->rsq,h_table->rsq,ntables,tablength,"Table::rsq"); + memory->create_kokkos(d_table->e,h_table->e,ntables,tablength,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tablength,"Table::f"); + memory->create_kokkos(d_table->de,h_table->de,ntables,tlm1,"Table::de"); + memory->create_kokkos(d_table->df,h_table->df,ntables,tlm1,"Table::df"); + } + + for(int i=0; i < ntables; i++) { + Table* tb = &tables[i]; + + h_table->innersq[i] = tb->innersq; + h_table->invdelta[i] = tb->invdelta; + h_table->deltasq6[i] = tb->deltasq6; + + for(int j = 0; jrsq.dimension_1(); j++) + h_table->rsq(i,j) = tb->rsq[j]; + for(int j = 0; jdrsq.dimension_1(); j++) + h_table->drsq(i,j) = tb->drsq[j]; + for(int j = 0; je.dimension_1(); j++) + h_table->e(i,j) = tb->e[j]; + for(int j = 0; jde.dimension_1(); j++) + h_table->de(i,j) = tb->de[j]; + for(int j = 0; jf.dimension_1(); j++) + h_table->f(i,j) = tb->f[j]; + for(int j = 0; jdf.dimension_1(); j++) + h_table->df(i,j) = tb->df[j]; + for(int j = 0; je2.dimension_1(); j++) + h_table->e2(i,j) = tb->e2[j]; + for(int j = 0; jf2.dimension_1(); j++) + h_table->f2(i,j) = tb->f2[j]; + } + + + Kokkos::deep_copy(d_table->innersq,h_table->innersq); + Kokkos::deep_copy(d_table->invdelta,h_table->invdelta); + Kokkos::deep_copy(d_table->deltasq6,h_table->deltasq6); + Kokkos::deep_copy(d_table->rsq,h_table->rsq); + Kokkos::deep_copy(d_table->drsq,h_table->drsq); + Kokkos::deep_copy(d_table->e,h_table->e); + Kokkos::deep_copy(d_table->de,h_table->de); + Kokkos::deep_copy(d_table->f,h_table->f); + Kokkos::deep_copy(d_table->df,h_table->df); + Kokkos::deep_copy(d_table->e2,h_table->e2); + Kokkos::deep_copy(d_table->f2,h_table->f2); + Kokkos::deep_copy(d_table->tabindex,h_table->tabindex); + + d_table_const.innersq = d_table->innersq; + d_table_const.invdelta = d_table->invdelta; + d_table_const.deltasq6 = d_table->deltasq6; + d_table_const.rsq = d_table->rsq; + d_table_const.drsq = d_table->drsq; + d_table_const.e = d_table->e; + d_table_const.de = d_table->de; + d_table_const.f = d_table->f; + d_table_const.df = d_table->df; + d_table_const.e2 = d_table->e2; + d_table_const.f2 = d_table->f2; + + + Kokkos::deep_copy(d_table->cutsq,h_table->cutsq); + update_table = 0; +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::allocate() +{ + allocated = 1; + const int nt = atom->ntypes + 1; + + memory->create(setflag,nt,nt,"pair:setflag"); + memory->create_kokkos(d_table->cutsq,h_table->cutsq,cutsq,nt,nt,"pair:cutsq"); + memory->create_kokkos(d_table->tabindex,h_table->tabindex,tabindex,nt,nt,"pair:tabindex"); + + d_table_const.cutsq = d_table->cutsq; + d_table_const.tabindex = d_table->tabindex; + memset(&setflag[0][0],0,nt*nt*sizeof(int)); + memset(&cutsq[0][0],0,nt*nt*sizeof(double)); + memset(&tabindex[0][0],0,nt*nt*sizeof(int)); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::settings(int narg, char **arg) +{ + if (narg < 2) error->all(FLERR,"Illegal pair_style command"); + + // new settings + + if (strcmp(arg[0],"lookup") == 0) tabstyle = LOOKUP; + else if (strcmp(arg[0],"linear") == 0) tabstyle = LINEAR; + else error->all(FLERR,"Unknown table style in pair_style command"); + + tablength = force->inumeric(FLERR,arg[1]); + if (tablength < 2) error->all(FLERR,"Illegal number of pair table entries"); + + // delete old tables, since cannot just change settings + + for (int m = 0; m < ntables; m++) free_table(&tables[m]); + memory->sfree(tables); + + if (allocated) { + memory->destroy(setflag); + + d_table_const.tabindex = d_table->tabindex = typename ArrayTypes::t_int_2d(); + h_table->tabindex = typename ArrayTypes::t_int_2d(); + + d_table_const.cutsq = d_table->cutsq = typename ArrayTypes::t_ffloat_2d(); + h_table->cutsq = typename ArrayTypes::t_ffloat_2d(); + } + allocated = 0; + + ntables = 0; + tables = NULL; +} + +/* ---------------------------------------------------------------------- */ + namespace LAMMPS_NS { template class PairMultiLucyRXKokkos; #ifdef KOKKOS_HAVE_CUDA diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h index ff22516eb1..a259588f78 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h @@ -29,9 +29,12 @@ PairStyle(multi/lucy/rx/kk/host,PairMultiLucyRXKokkos) namespace LAMMPS_NS { +struct TagPairMultiLucyRXPackForwardComm{}; +struct TagPairMultiLucyRXUnpackForwardComm{}; + struct TagPairMultiLucyRXgetParams{}; -template +template struct TagPairMultiLucyRXCompute{}; struct TagPairMultiLucyRXZero{}; @@ -50,24 +53,37 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { virtual ~PairMultiLucyRXKokkos(); void compute(int, int); + void settings(int, char **); + + template + void compute_style(int, int); + void init_style(); - void coeff(int, char **); + int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int, int *); + void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&); int pack_forward_comm(int, int *, double *, int, int *); void unpack_forward_comm(int, int, double *); int pack_reverse_comm(int, int, double *); void unpack_reverse_comm(int, int *, double *); void computeLocalDensity(); + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXPackForwardComm, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXUnpackForwardComm, const int&) const; + KOKKOS_INLINE_FUNCTION void operator()(TagPairMultiLucyRXgetParams, const int&) const; - template + template KOKKOS_INLINE_FUNCTION - void operator()(TagPairMultiLucyRXCompute, const int&, EV_FLOAT&) const; + void operator()(TagPairMultiLucyRXCompute, const int&, EV_FLOAT&) const; - template + template KOKKOS_INLINE_FUNCTION - void operator()(TagPairMultiLucyRXCompute, const int&) const; + void operator()(TagPairMultiLucyRXCompute, const int&) const; KOKKOS_INLINE_FUNCTION void operator()(TagPairMultiLucyRXZero, const int&) const; @@ -92,6 +108,8 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { double rcut_type11; double factor_type11; + enum{LOOKUP,LINEAR,SPLINE,BITMAP}; + //struct Table { // int ninput,rflag,fpflag,match; // double rlo,rhi,fplo,fphi,cut; @@ -100,14 +118,47 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { // double innersq,delta,invdelta,deltasq6; // double *rsq,*drsq,*e,*de,*f,*df,*e2,*f2; //}; - //Table *tables; - int **tabindex; + int tabstyle,tablength; + /*struct TableDeviceConst { + typename ArrayTypes::t_ffloat_2d_randomread cutsq; + typename ArrayTypes::t_int_2d_randomread tabindex; + typename ArrayTypes::t_ffloat_1d_randomread innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d_randomread rsq,drsq,e,de,f,df,e2,f2; + };*/ + //Its faster not to use texture fetch if the number of tables is less than 32! + struct TableDeviceConst { + typename ArrayTypes::t_ffloat_2d cutsq; + typename ArrayTypes::t_int_2d tabindex; + typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d_randomread rsq,drsq,e,de,f,df,e2,f2; + }; + + struct TableDevice { + typename ArrayTypes::t_ffloat_2d cutsq; + typename ArrayTypes::t_int_2d tabindex; + typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; + }; + + struct TableHost { + typename ArrayTypes::t_ffloat_2d cutsq; + typename ArrayTypes::t_int_2d tabindex; + typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; + }; + + TableDeviceConst d_table_const; + TableDevice* d_table; + TableHost* h_table; - //void read_table(Table *, char *, char *); - //void param_extract(Table *, char *); + int **tabindex; + F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; - char *site1, *site2; + void allocate(); + int update_table; + void create_kokkos_tables(); + void cleanup_copy(); KOKKOS_INLINE_FUNCTION void getParams(int, double &, double &, double &, double &) const; @@ -118,6 +169,7 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { typename AT::t_f_array f; typename AT::t_int_1d_randomread type; typename AT::t_efloat_1d rho; + typename HAT::t_efloat_1d h_rho; typename AT::t_efloat_1d uCG, uCGnew; typename AT::t_float_2d dvector; @@ -135,6 +187,11 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { typename AT::tdual_ffloat_2d k_cutsq; typename AT::t_ffloat_2d d_cutsq; + int iswap; + int first; + typename AT::t_int_2d d_sendlist; + typename AT::t_xfloat_1d_um v_buf; + friend void pair_virial_fdotr_compute(PairMultiLucyRXKokkos*); }; diff --git a/src/USER-DPD/fix_eos_table_rx.cpp b/src/USER-DPD/fix_eos_table_rx.cpp index e10ce96089..8871bdd176 100644 --- a/src/USER-DPD/fix_eos_table_rx.cpp +++ b/src/USER-DPD/fix_eos_table_rx.cpp @@ -127,6 +127,8 @@ FixEOStableRX::FixEOStableRX(LAMMPS *lmp, int narg, char **arg) : FixEOStableRX::~FixEOStableRX() { + if (copymode) return; + for (int m = 0; m < ntables; m++) { free_table(&tables[m]); free_table(&tables2[m]); diff --git a/src/USER-DPD/pair_multi_lucy_rx.cpp b/src/USER-DPD/pair_multi_lucy_rx.cpp index cd107f1519..6b5c7cf40a 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.cpp +++ b/src/USER-DPD/pair_multi_lucy_rx.cpp @@ -78,6 +78,8 @@ PairMultiLucyRX::PairMultiLucyRX(LAMMPS *lmp) : Pair(lmp), PairMultiLucyRX::~PairMultiLucyRX() { + if (copymode) return; + for (int m = 0; m < ntables; m++) free_table(&tables[m]); memory->sfree(tables); diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index 902d0e5bb4..463e1838c6 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -50,6 +50,8 @@ PairTableRX::PairTableRX(LAMMPS *lmp) : Pair(lmp) PairTableRX::~PairTableRX() { + if (copymode) return; + for (int m = 0; m < ntables; m++) free_table(&tables[m]); memory->sfree(tables); diff --git a/src/atom_masks.h b/src/atom_masks.h index 119f09f273..8e29448488 100644 --- a/src/atom_masks.h +++ b/src/atom_masks.h @@ -42,6 +42,18 @@ #define ENERGY_MASK 0x00010000 #define VIRIAL_MASK 0x00020000 +// DPD + +#define DPDRHO_MASK 0x00040000 +#define DPDTHETA_MASK 0x00080000 +#define UCOND_MASK 0x00100000 +#define UMECH_MASK 0x00200000 +#define UCHEM_MASK 0x00400000 +#define UCG_MASK 0x00800000 +#define UCGNEW_MASK 0x01000000 +#define DUCHEM_MASK 0x02000000 +#define DVECTOR_MASK 0x04000000 + // granular #define RADIUS_MASK 0x00100000 -- GitLab From d5f8f36442bfc14ba49c4090f465f87afc65a24e Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 15 Dec 2016 15:48:09 -0700 Subject: [PATCH 012/337] Change to fix_property_atom to allow virtual override of grow_arrays() function --- src/fix_property_atom.cpp | 3 ++- src/fix_property_atom.h | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/fix_property_atom.cpp b/src/fix_property_atom.cpp index b83aadc95d..002260d8f0 100644 --- a/src/fix_property_atom.cpp +++ b/src/fix_property_atom.cpp @@ -134,7 +134,6 @@ FixPropertyAtom::FixPropertyAtom(LAMMPS *lmp, int narg, char **arg) : // register with Atom class nmax_old = 0; - grow_arrays(atom->nmax); atom->add_callback(0); atom->add_callback(1); if (border) atom->add_callback(2); @@ -190,6 +189,8 @@ int FixPropertyAtom::setmask() void FixPropertyAtom::init() { + grow_arrays(atom->nmax); + // error if atom style has changed since fix was defined // don't allow this b/c user could change to style that defines molecule,q diff --git a/src/fix_property_atom.h b/src/fix_property_atom.h index 77a41f393a..d923d76cac 100644 --- a/src/fix_property_atom.h +++ b/src/fix_property_atom.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class FixPropertyAtom : public Fix { public: FixPropertyAtom(class LAMMPS *, int, char **); - ~FixPropertyAtom(); + virtual ~FixPropertyAtom(); int setmask(); void init(); @@ -38,7 +38,7 @@ class FixPropertyAtom : public Fix { void write_data_section_keyword(int, FILE *); void write_data_section(int, FILE *, int, double **, int); - void grow_arrays(int); + virtual void grow_arrays(int); void copy_arrays(int, int, int); int pack_border(int, int *, double *); int unpack_border(int, int, double *); @@ -50,7 +50,7 @@ class FixPropertyAtom : public Fix { int maxsize_restart(); double memory_usage(); - private: + protected: int nvalue,border; int molecule_flag,q_flag,rmass_flag; int *style,*index; -- GitLab From a3c1d385e84a68721433eaaf318513962c489657 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 15 Dec 2016 15:50:30 -0700 Subject: [PATCH 013/337] Adding Kokkos version of fix_property_atom --- src/KOKKOS/Install.sh | 2 + src/KOKKOS/fix_property_atom_kokkos.cpp | 72 ++++++++++++++++++++ src/KOKKOS/fix_property_atom_kokkos.h | 90 +++++++++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 src/KOKKOS/fix_property_atom_kokkos.cpp create mode 100644 src/KOKKOS/fix_property_atom_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 707ea1e986..a1830163bd 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -87,6 +87,8 @@ action fix_nve_kokkos.cpp action fix_nve_kokkos.h action fix_nvt_kokkos.cpp action fix_nvt_kokkos.h +action fix_property_atom_kokkos.cpp +action fix_property_atom_kokkos.h action fix_qeq_reax_kokkos.cpp fix_qeq_reax.cpp action fix_qeq_reax_kokkos.h fix_qeq_reax.h action fix_reaxc_bonds_kokkos.cpp fix_reaxc_bonds.cpp diff --git a/src/KOKKOS/fix_property_atom_kokkos.cpp b/src/KOKKOS/fix_property_atom_kokkos.cpp new file mode 100644 index 0000000000..327563efbd --- /dev/null +++ b/src/KOKKOS/fix_property_atom_kokkos.cpp @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------- + 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_property_atom_kokkos.h" +#include "atom_kokkos.h" +#include "comm.h" +#include "memory.h" +#include "error.h" +#include "update.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +enum{MOLECULE,CHARGE,RMASS,INTEGER,DOUBLE}; + +/* ---------------------------------------------------------------------- */ + +FixPropertyAtomKokkos::FixPropertyAtomKokkos(LAMMPS *lmp, int narg, char **arg) : + FixPropertyAtom(lmp, narg, arg) +{ + atomKK = (AtomKokkos *) atom; +} + +/* ---------------------------------------------------------------------- + allocate atom-based arrays + initialize new values to 0, + since AtomVec class won't do it as atoms are added, + e.g. in create_atom() or data_atom() +------------------------------------------------------------------------- */ + +void FixPropertyAtomKokkos::grow_arrays(int nmax) +{ + for (int m = 0; m < nvalue; m++) { + if (style[m] == MOLECULE) { + memory->grow(atom->molecule,nmax,"atom:molecule"); + size_t nbytes = (nmax-nmax_old) * sizeof(tagint); + memset(&atom->molecule[nmax_old],0,nbytes); + } else if (style[m] == CHARGE) { + memory->grow(atom->q,nmax,"atom:q"); + size_t nbytes = (nmax-nmax_old) * sizeof(double); + memset(&atom->q[nmax_old],0,nbytes); + } else if (style[m] == RMASS) { + memory->grow(atom->rmass,nmax,"atom:rmass"); + size_t nbytes = (nmax-nmax_old) * sizeof(double); + memset(&atom->rmass[nmax_old],0,nbytes); + } else if (style[m] == INTEGER) { + memory->grow(atom->ivector[index[m]],nmax,"atom:ivector"); + size_t nbytes = (nmax-nmax_old) * sizeof(int); + memset(&atom->ivector[index[m]][nmax_old],0,nbytes); + } else if (style[m] == DOUBLE) { + memory->grow_kokkos(atomKK->k_dvector,atomKK->dvector,nvalue,nmax, + "atom:dvector"); + //memory->grow(atom->dvector[index[m]],nmax,"atom:dvector"); + //size_t nbytes = (nmax-nmax_old) * sizeof(double); + //memset(&atom->dvector[index[m]][nmax_old],0,nbytes); + } + } + + nmax_old = nmax; +} diff --git a/src/KOKKOS/fix_property_atom_kokkos.h b/src/KOKKOS/fix_property_atom_kokkos.h new file mode 100644 index 0000000000..ed1e4d7cfb --- /dev/null +++ b/src/KOKKOS/fix_property_atom_kokkos.h @@ -0,0 +1,90 @@ +/* -*- 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(property/atom/kk,FixPropertyAtomKokkos) + +#else + +#ifndef LMP_FIX_PROPERTY_ATOM_KOKKOS_H +#define LMP_FIX_PROPERTY_ATOM_KOKKOS_H + +#include "fix_property_atom.h" + +namespace LAMMPS_NS { + +class FixPropertyAtomKokkos : public FixPropertyAtom { + public: + FixPropertyAtomKokkos(class LAMMPS *, int, char **); + virtual ~FixPropertyAtomKokkos() {} + + void grow_arrays(int); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Fix property/atom mol when atom_style already has molecule attribute + +Self-explanatory. + +E: Fix property/atom cannot specify mol twice + +Self-explanatory. + +E: Fix property/atom q when atom_style already has charge attribute + +Self-explanatory. + +E: Fix property/atom cannot specify q twice + +Self-explanatory. + +E: Fix property/atom vector name already exists + +The name for an integer or floating-point vector must be unique. + +W: Fix property/atom mol or charge w/out ghost communication + +A model typically needs these properties defined for ghost atoms. + +E: Atom style was redefined after using fix property/atom + +This is not allowed. + +E: Incorrect %s format in data file + +A section of the data file being read by fix property/atom does +not have the correct number of values per line. + +E: Too few lines in %s section of data file + +Self-explanatory. + +E: Invalid atom ID in %s section of data file + +An atom in a section of the data file being read by fix property/atom +has an invalid atom ID that is <= 0 or > the maximum existing atom ID. + +*/ -- GitLab From f47a40b2e4ead7248c601129c9e8a5d82deac91b Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 16 Dec 2016 10:02:01 -0700 Subject: [PATCH 014/337] Fixing Kokkos memory deallocation issue --- src/KOKKOS/atom_kokkos.cpp | 13 +++++++++++++ src/atom.cpp | 8 +++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/atom_kokkos.cpp b/src/KOKKOS/atom_kokkos.cpp index 4a7250e6ab..97b76ba67c 100644 --- a/src/KOKKOS/atom_kokkos.cpp +++ b/src/KOKKOS/atom_kokkos.cpp @@ -73,6 +73,19 @@ AtomKokkos::~AtomKokkos() memory->destroy_kokkos(k_improper_atom2, improper_atom2); memory->destroy_kokkos(k_improper_atom3, improper_atom3); memory->destroy_kokkos(k_improper_atom4, improper_atom4); + + // USER-DPD package + memory->destroy_kokkos(k_uCond,uCond); + memory->destroy_kokkos(k_uMech,uMech); + memory->destroy_kokkos(k_uChem,uChem); + memory->destroy_kokkos(k_uCG,uCG); + memory->destroy_kokkos(k_uCGnew,uCGnew); + memory->destroy_kokkos(k_rho,rho); + memory->destroy_kokkos(k_dpdTheta,dpdTheta); + memory->destroy_kokkos(k_duChem,duChem); + + memory->destroy_kokkos(k_dvector,dvector); + dvector = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/atom.cpp b/src/atom.cpp index 053a18430b..c7f8345898 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -331,9 +331,11 @@ Atom::~Atom() delete [] iname[i]; memory->destroy(ivector[i]); } - for (int i = 0; i < ndvector; i++) { - delete [] dname[i]; - memory->destroy(dvector[i]); + if (dvector != NULL) { + for (int i = 0; i < ndvector; i++) { + delete [] dname[i]; + memory->destroy(dvector[i]); + } } memory->sfree(iname); -- GitLab From d93e3d1cee93983df5e1c0707b4957d2bc138e9a Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 16 Dec 2016 10:06:12 -0700 Subject: [PATCH 015/337] Fixing runtime issues with pair_exp6_rx_kokkos --- src/KOKKOS/fix_property_atom_kokkos.cpp | 2 +- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 17 ++++++++++++++--- src/USER-DPD/pair_exp6_rx.cpp | 10 ++++++---- src/USER-DPD/pair_exp6_rx.h | 4 ++-- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/KOKKOS/fix_property_atom_kokkos.cpp b/src/KOKKOS/fix_property_atom_kokkos.cpp index 327563efbd..cb52988c31 100644 --- a/src/KOKKOS/fix_property_atom_kokkos.cpp +++ b/src/KOKKOS/fix_property_atom_kokkos.cpp @@ -60,7 +60,7 @@ void FixPropertyAtomKokkos::grow_arrays(int nmax) size_t nbytes = (nmax-nmax_old) * sizeof(int); memset(&atom->ivector[index[m]][nmax_old],0,nbytes); } else if (style[m] == DOUBLE) { - memory->grow_kokkos(atomKK->k_dvector,atomKK->dvector,nvalue,nmax, + memory->grow_kokkos(atomKK->k_dvector,atomKK->dvector,atomKK->k_dvector.dimension_0(),nmax, "atom:dvector"); //memory->grow(atom->dvector[index[m]],nmax,"atom:dvector"); //size_t nbytes = (nmax-nmax_old) * sizeof(double); diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 7e74f39ef0..e7934cfa0b 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -65,7 +65,20 @@ PairExp6rxKokkos::PairExp6rxKokkos(LAMMPS *lmp) : PairExp6rx(lmp) template PairExp6rxKokkos::~PairExp6rxKokkos() { + if (copymode) return; + memory->destroy_kokkos(k_eatom,eatom); + memory->destroy_kokkos(k_vatom,vatom); + + memory->destroy_kokkos(k_cutsq,cutsq); + + for (int i=0; i < nparams; ++i) { + delete[] params[i].name; + delete[] params[i].potential; + } + memory->destroy_kokkos(k_params,params); + + memory->destroy_kokkos(k_mol2param,mol2param); } /* ---------------------------------------------------------------------- */ @@ -73,7 +86,7 @@ PairExp6rxKokkos::~PairExp6rxKokkos() template void PairExp6rxKokkos::init_style() { - PairExp6rxKokkos::init_style(); + PairExp6rx::init_style(); // irequest = neigh request made by parent class @@ -89,11 +102,9 @@ void PairExp6rxKokkos::init_style() if (neighflag == FULL) { neighbor->requests[irequest]->full = 1; neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->ghost = 1; } else if (neighflag == HALF || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 1; - neighbor->requests[irequest]->ghost = 1; } else { error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); } diff --git a/src/USER-DPD/pair_exp6_rx.cpp b/src/USER-DPD/pair_exp6_rx.cpp index 2643c9ec04..dd8ac4bbe7 100644 --- a/src/USER-DPD/pair_exp6_rx.cpp +++ b/src/USER-DPD/pair_exp6_rx.cpp @@ -79,11 +79,13 @@ PairExp6rx::~PairExp6rx() { if (copymode) return; - for (int i=0; i < nparams; ++i) { - delete[] params[i].name; - delete[] params[i].potential; + if (params != NULL) { + for (int i=0; i < nparams; ++i) { + delete[] params[i].name; + delete[] params[i].potential; + } + memory->destroy(params); } - memory->destroy(params); memory->destroy(mol2param); if (allocated) { diff --git a/src/USER-DPD/pair_exp6_rx.h b/src/USER-DPD/pair_exp6_rx.h index dd9fa22a48..f9654e4086 100644 --- a/src/USER-DPD/pair_exp6_rx.h +++ b/src/USER-DPD/pair_exp6_rx.h @@ -44,7 +44,7 @@ class PairExp6rx : public Pair { double **epsilon,**rm,**alpha; double **rminv,**buck1,**buck2,**offset; - void allocate(); + virtual void allocate(); int *mol2param; // mapping from molecule to parameters int nparams; // # of stored parameter sets int maxparam; // max # of parameter sets @@ -58,7 +58,7 @@ class PairExp6rx : public Pair { Param *params; // parameter set for an I-J-K interaction int nspecies; - void read_file(char *); + virtual void read_file(char *); void setup(); int isite1, isite2; -- GitLab From cfa61b98aec5951824affe4057f81e022868d470 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 16 Dec 2016 12:37:41 -0700 Subject: [PATCH 016/337] Fixing runtime issues in fix_eos_table_rx_kokkos --- src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 152 ++++++++++++++++++++----- src/KOKKOS/fix_eos_table_rx_kokkos.h | 33 ++++++ 2 files changed, 157 insertions(+), 28 deletions(-) diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index 75e9b292f9..6cb5c0611a 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -40,8 +40,12 @@ FixEOStableRXKokkos::FixEOStableRXKokkos(LAMMPS *lmp, int narg, char { atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; - datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; - datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + update_table = 1; + h_table = new TableHost(); + d_table = new TableDevice(); k_error_flag = DAT::tdual_int_scalar("fix:error_flag"); k_warning_flag = DAT::tdual_int_scalar("fix:warning_flag"); @@ -53,6 +57,9 @@ template FixEOStableRXKokkos::~FixEOStableRXKokkos() { if (copymode) return; + + delete h_table; + delete d_table; } /* ---------------------------------------------------------------------- */ @@ -60,6 +67,11 @@ FixEOStableRXKokkos::~FixEOStableRXKokkos() template void FixEOStableRXKokkos::setup(int vflag) { + if (update_table) + create_kokkos_tables(); + + copymode = 1; + int nlocal = atom->nlocal; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); @@ -68,6 +80,10 @@ void FixEOStableRXKokkos::setup(int vflag) dpdTheta= atomKK->k_dpdTheta.view(); uCG = atomKK->k_uCG.view(); uCGnew = atomKK->k_uCGnew.view(); + dvector = atomKK->k_dvector.view(); + + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); + atomKK->modified(execution_space,UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK); Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); @@ -77,6 +93,8 @@ void FixEOStableRXKokkos::setup(int vflag) Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); error_check(); + + copymode = 0; } template @@ -102,12 +120,21 @@ void FixEOStableRXKokkos::operator()(TagFixEOStableRXTemperatureLook template void FixEOStableRXKokkos::init() { + if (update_table) + create_kokkos_tables(); + + copymode = 1; + int nlocal = atom->nlocal; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); uChem = atomKK->k_uChem.view(); dpdTheta= atomKK->k_dpdTheta.view(); + dvector = atomKK->k_dvector.view(); + + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); + atomKK->modified(execution_space,UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK); if (this->restart_reset) Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); @@ -115,6 +142,8 @@ void FixEOStableRXKokkos::init() Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); error_check(); + + copymode = 0; } template @@ -136,16 +165,27 @@ void FixEOStableRXKokkos::operator()(TagFixEOStableRXInit, const int template void FixEOStableRXKokkos::post_integrate() { + if (update_table) + create_kokkos_tables(); + + copymode = 1; + int nlocal = atom->nlocal; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); uChem = atomKK->k_uChem.view(); dpdTheta= atomKK->k_dpdTheta.view(); + dvector = atomKK->k_dvector.view(); + + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); + atomKK->modified(execution_space,DPDTHETA_MASK); Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); error_check(); + + copymode = 0; } template @@ -163,6 +203,11 @@ void FixEOStableRXKokkos::operator()(TagFixEOStableRXTemperatureLook template void FixEOStableRXKokkos::end_of_step() { + if (update_table) + create_kokkos_tables(); + + copymode = 1; + int nlocal = atom->nlocal; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); @@ -171,7 +216,10 @@ void FixEOStableRXKokkos::end_of_step() dpdTheta= atomKK->k_dpdTheta.view(); uCG = atomKK->k_uCG.view(); uCGnew = atomKK->k_uCGnew.view(); - double duChem; + dvector = atomKK->k_dvector.view(); + + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); + atomKK->modified(execution_space,UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK); // Communicate the ghost uCGnew comm->reverse_comm_fix(this); @@ -184,6 +232,8 @@ void FixEOStableRXKokkos::end_of_step() Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); error_check(); + + copymode = 0; } /* ---------------------------------------------------------------------- @@ -200,22 +250,27 @@ void FixEOStableRXKokkos::energy_lookup(int id, double thetai, doubl ui = 0.0; nTotal = 0.0; for(int ispecies=0;ispecieslo); - thetai = MIN(thetai,tb->hi); + //Table *tb = &tables[ispecies]; + //thetai = MAX(thetai,tb->lo); + thetai = MAX(thetai,d_table_const.lo(ispecies)); + //thetai = MIN(thetai,tb->hi); + thetai = MIN(thetai,d_table_const.hi(ispecies)); if (tabstyle == LINEAR) { - itable = static_cast ((thetai - tb->lo) * tb->invdelta); - fraction = (thetai - tb->r[itable]) * tb->invdelta; - uTmp = tb->e[itable] + fraction*tb->de[itable]; + //itable = static_cast ((thetai - tb->lo) * tb->invdelta); + itable = static_cast ((thetai - d_table_const.lo(ispecies)) * d_table_const.invdelta(ispecies)); + //fraction = (thetai - tb->r[itable]) * tb->invdelta; + fraction = (thetai - d_table_const.r(ispecies,itable)) * d_table_const.invdelta(ispecies); + //uTmp = tb->e[itable] + fraction*tb->de[itable]; + uTmp = d_table_const.e(ispecies,itable) + fraction*d_table_const.de(ispecies,itable); uTmp += dHf[ispecies]; // mol fraction form: - ui += atom->dvector[ispecies][id]*uTmp; - nTotal += atom->dvector[ispecies][id]; + ui += dvector(ispecies,id)*uTmp; + nTotal += dvector(ispecies,id); } } - ui = ui - double(nTotal+1.5)*force->boltz*thetai; + ui = ui - double(nTotal+1.5)*force->boltz*thetai; // need class variable } /* ---------------------------------------------------------------------- @@ -226,18 +281,20 @@ template KOKKOS_INLINE_FUNCTION void FixEOStableRXKokkos::temperature_lookup(int id, double ui, double &thetai) const { - Table *tb = &tables[0]; + //Table *tb = &tables[0]; int it; double t1,t2,u1,u2,f1,f2; double maxit = 100; double temp; double delta = 0.001; + int lo = d_table_const.lo(0); + int hi = d_table_const.hi(0); // Store the current thetai in t1 - t1 = MAX(thetai,tb->lo); - t1 = MIN(t1,tb->hi); - if(t1==tb->hi) delta = -delta; + t1 = MAX(thetai,lo); + t1 = MIN(t1,hi); + if(t1==hi) delta = -delta; // Compute u1 at thetai energy_lookup(id,t1,u1); @@ -259,8 +316,8 @@ void FixEOStableRXKokkos::temperature_lookup(int id, double ui, doub if(fabs(f2-f1)<1e-15){ if(isnan(f1) || isnan(f2)) k_error_flag.d_view() = 2; temp = t1; - temp = MAX(temp,tb->lo); - temp = MIN(temp,tb->hi); + temp = MAX(temp,lo); + temp = MIN(temp,hi); k_warning_flag.d_view() = 1; break; } @@ -286,9 +343,6 @@ template int FixEOStableRXKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { int ii,jj,m; - uChem = atomKK->k_uChem.view(); - uCG = atomKK->k_uCG.view(); - uCGnew = atomKK->k_uCGnew.view(); m = 0; for (ii = 0; ii < n; ii++) { @@ -306,9 +360,6 @@ template void FixEOStableRXKokkos::unpack_forward_comm(int n, int first, double *buf) { int ii,m,last; - uChem = atomKK->k_uChem.view(); - uCG = atomKK->k_uCG.view(); - uCGnew = atomKK->k_uCGnew.view(); m = 0; last = first + n ; @@ -325,8 +376,6 @@ template int FixEOStableRXKokkos::pack_reverse_comm(int n, int first, double *buf) { int i,m,last; - uCG = atomKK->k_uCG.view(); - uCGnew = atomKK->k_uCGnew.view(); m = 0; last = first + n; @@ -343,8 +392,6 @@ template void FixEOStableRXKokkos::unpack_reverse_comm(int n, int *list, double *buf) { int i,j,m; - uCG = atomKK->k_uCG.view(); - uCGnew = atomKK->k_uCGnew.view(); m = 0; for (i = 0; i < n; i++) { @@ -381,6 +428,55 @@ void FixEOStableRXKokkos::error_check() /* ---------------------------------------------------------------------- */ +template +void FixEOStableRXKokkos::create_kokkos_tables() +{ + const int tlm1 = tablength-1; + + memory->create_kokkos(d_table->lo,h_table->lo,ntables,"Table::lo"); + memory->create_kokkos(d_table->hi,h_table->hi,ntables,"Table::hi"); + memory->create_kokkos(d_table->invdelta,h_table->invdelta,ntables,"Table::invdelta"); + + if(tabstyle == LINEAR) { + memory->create_kokkos(d_table->r,h_table->r,ntables,tablength,"Table::r"); + memory->create_kokkos(d_table->e,h_table->e,ntables,tablength,"Table::e"); + memory->create_kokkos(d_table->de,h_table->de,ntables,tlm1,"Table::de"); + } + + for(int i=0; i < ntables; i++) { + Table* tb = &tables[i]; + + h_table->lo[i] = tb->lo; + h_table->hi[i] = tb->hi; + h_table->invdelta[i] = tb->invdelta; + + for(int j = 0; jr.dimension_1(); j++) + h_table->r(i,j) = tb->r[j]; + for(int j = 0; je.dimension_1(); j++) + h_table->e(i,j) = tb->e[j]; + for(int j = 0; jde.dimension_1(); j++) + h_table->de(i,j) = tb->de[j]; + } + + Kokkos::deep_copy(d_table->lo,h_table->lo); + Kokkos::deep_copy(d_table->hi,h_table->hi); + Kokkos::deep_copy(d_table->invdelta,h_table->invdelta); + Kokkos::deep_copy(d_table->r,h_table->r); + Kokkos::deep_copy(d_table->e,h_table->e); + Kokkos::deep_copy(d_table->de,h_table->de); + + d_table_const.lo = d_table->lo; + d_table_const.hi = d_table->hi; + d_table_const.invdelta = d_table->invdelta; + d_table_const.r = d_table->r; + d_table_const.e = d_table->e; + d_table_const.de = d_table->de; + + update_table = 0; +} + +/* ---------------------------------------------------------------------- */ + namespace LAMMPS_NS { template class FixEOStableRXKokkos; #ifdef KOKKOS_HAVE_CUDA diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.h b/src/KOKKOS/fix_eos_table_rx_kokkos.h index 9b0ca366a0..7de8f4dbc4 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.h +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.h @@ -75,13 +75,46 @@ class FixEOStableRXKokkos : public FixEOStableRX { //}; //Table *tables, *tables2; + /*struct TableDeviceConst { + typename ArrayTypes::t_int_1d_randomread lo,hi; + typename ArrayTypes::t_ffloat_1d_randomread invdelta; + typename ArrayTypes::t_ffloat_2d_randomread r,e,de; + };*/ + //Its faster not to use texture fetch if the number of tables is less than 32! + struct TableDeviceConst { + typename ArrayTypes::t_int_1d lo,hi; + typename ArrayTypes::t_ffloat_1d invdelta; + typename ArrayTypes::t_ffloat_2d_randomread r,e,de; + }; + + struct TableDevice { + typename ArrayTypes::t_int_1d lo,hi; + typename ArrayTypes::t_ffloat_1d invdelta; + typename ArrayTypes::t_ffloat_2d r,e,de; + }; + + struct TableHost { + typename ArrayTypes::t_int_1d lo,hi; + typename ArrayTypes::t_ffloat_1d invdelta; + typename ArrayTypes::t_ffloat_2d r,e,de; + }; + + TableDeviceConst d_table_const; + TableDevice* d_table; + TableHost* h_table; + + int **tabindex; + void allocate(); void error_check(); + int update_table; + void create_kokkos_tables(); //double *dHf; typename AT::t_int_1d mask; typename AT::t_efloat_1d uCond,uMech,uChem,uCG,uCGnew,rho,dpdTheta,duChem; + typename AT::t_float_2d dvector; DAT::tdual_int_scalar k_error_flag; DAT::tdual_int_scalar k_warning_flag; -- GitLab From 5cae3eca8c43fc9712a28776e1d196b638d8216c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 16 Dec 2016 17:09:19 -0700 Subject: [PATCH 017/337] Whitespace cleanup to pair_dpd_fdt_energy, should be cherry-picked to Master --- src/USER-DPD/pair_dpd_fdt_energy.cpp | 88 ++++++++++++++-------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp index 2041405467..0f6141d015 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.cpp +++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp @@ -206,7 +206,7 @@ void PairDPDfdtEnergy::compute(int eflag, int vflag) if (r < EPSILON) continue; // r can be 0.0 in DPD systems rinv = 1.0/r; wr = 1.0 - r/cut[itype][jtype]; - wd = wr*wr; + wd = wr*wr; delvx = vxtmp - v[j][0]; delvy = vytmp - v[j][1]; @@ -214,11 +214,11 @@ void PairDPDfdtEnergy::compute(int eflag, int vflag) dot = delx*delvx + dely*delvy + delz*delvz; randnum = random->gaussian(); - // Compute the current temperature - theta_ij = 0.5*(1.0/dpdTheta[i] + 1.0/dpdTheta[j]); - theta_ij = 1.0/theta_ij; - - gamma_ij = sigma[itype][jtype]*sigma[itype][jtype] + // Compute the current temperature + theta_ij = 0.5*(1.0/dpdTheta[i] + 1.0/dpdTheta[j]); + theta_ij = 1.0/theta_ij; + + gamma_ij = sigma[itype][jtype]*sigma[itype][jtype] / (2.0*force->boltz*theta_ij); // conservative force = a0 * wr @@ -239,44 +239,44 @@ void PairDPDfdtEnergy::compute(int eflag, int vflag) f[j][2] -= delz*fpair; } - if (rmass) { - mass_i = rmass[i]; - mass_j = rmass[j]; - } else { - mass_i = mass[itype]; - mass_j = mass[jtype]; - } - massinv_i = 1.0 / mass_i; - massinv_j = 1.0 / mass_j; - - // Compute the mechanical and conductive energy, uMech and uCond - mu_ij = massinv_i + massinv_j; - mu_ij *= force->ftm2v; - - uTmp = gamma_ij*wd*rinv*rinv*dot*dot - - 0.5*sigma[itype][jtype]*sigma[itype][jtype]*mu_ij*wd; - uTmp -= sigma[itype][jtype]*wr*rinv*dot*randnum*dtinvsqrt; - uTmp *= 0.5; - - duMech[i] += uTmp; - if (newton_pair || j < nlocal) { - duMech[j] += uTmp; - } - - // Compute uCond - randnum = random->gaussian(); - kappa_ij = kappa[itype][jtype]; - alpha_ij = sqrt(2.0*force->boltz*kappa_ij); - randPair = alpha_ij*wr*randnum*dtinvsqrt; - - uTmp = kappa_ij*(1.0/dpdTheta[i] - 1.0/dpdTheta[j])*wd; - uTmp += randPair; - - duCond[i] += uTmp; - if (newton_pair || j < nlocal) { - duCond[j] -= uTmp; - } - + if (rmass) { + mass_i = rmass[i]; + mass_j = rmass[j]; + } else { + mass_i = mass[itype]; + mass_j = mass[jtype]; + } + massinv_i = 1.0 / mass_i; + massinv_j = 1.0 / mass_j; + + // Compute the mechanical and conductive energy, uMech and uCond + mu_ij = massinv_i + massinv_j; + mu_ij *= force->ftm2v; + + uTmp = gamma_ij*wd*rinv*rinv*dot*dot + - 0.5*sigma[itype][jtype]*sigma[itype][jtype]*mu_ij*wd; + uTmp -= sigma[itype][jtype]*wr*rinv*dot*randnum*dtinvsqrt; + uTmp *= 0.5; + + duMech[i] += uTmp; + if (newton_pair || j < nlocal) { + duMech[j] += uTmp; + } + + // Compute uCond + randnum = random->gaussian(); + kappa_ij = kappa[itype][jtype]; + alpha_ij = sqrt(2.0*force->boltz*kappa_ij); + randPair = alpha_ij*wr*randnum*dtinvsqrt; + + uTmp = kappa_ij*(1.0/dpdTheta[i] - 1.0/dpdTheta[j])*wd; + uTmp += randPair; + + duCond[i] += uTmp; + if (newton_pair || j < nlocal) { + duCond[j] -= uTmp; + } + if (eflag) { // unshifted eng of conservative term: // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]); -- GitLab From ac57f4721cea7db41b6b964d6fb4a772fa5c5202 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 16 Dec 2016 17:14:27 -0700 Subject: [PATCH 018/337] Small whitespace tweak to pair_dpd_fdt_energy --- src/USER-DPD/pair_dpd_fdt_energy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp index 0f6141d015..558994d35e 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.cpp +++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp @@ -254,7 +254,7 @@ void PairDPDfdtEnergy::compute(int eflag, int vflag) mu_ij *= force->ftm2v; uTmp = gamma_ij*wd*rinv*rinv*dot*dot - - 0.5*sigma[itype][jtype]*sigma[itype][jtype]*mu_ij*wd; + - 0.5*sigma[itype][jtype]*sigma[itype][jtype]*mu_ij*wd; uTmp -= sigma[itype][jtype]*wr*rinv*dot*randnum*dtinvsqrt; uTmp *= 0.5; -- GitLab From 21bb603b93181e4551ebc69fc0e225bf055cd21d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 19 Dec 2016 13:30:00 -0700 Subject: [PATCH 019/337] Porting recent changes from USER-DPD package to KOKKOS package --- src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 7 ++-- src/KOKKOS/fix_eos_table_rx_kokkos.h | 4 +++ src/KOKKOS/pair_exp6_rx_kokkos.cpp | 50 ++++++++++++++++++++------ 3 files changed, 47 insertions(+), 14 deletions(-) diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index 6cb5c0611a..3b22f61e66 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -85,7 +85,8 @@ void FixEOStableRXKokkos::setup(int vflag) atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); atomKK->modified(execution_space,UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK); - Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + if (!this->restart_reset) + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); // Communicate the updated momenta and velocities to all nodes comm->forward_comm_fix(this); @@ -154,8 +155,8 @@ void FixEOStableRXKokkos::operator()(TagFixEOStableRXInit, const int if(dpdTheta[i] <= 0.0) k_error_flag.d_view() = 1; energy_lookup(i,dpdTheta[i],tmp); - uCond[i] = tmp / 2.0; - uMech[i] = tmp / 2.0; + uCond[i] = 0.0; + uMech[i] = tmp; uChem[i] = 0.0; } } diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.h b/src/KOKKOS/fix_eos_table_rx_kokkos.h index 7de8f4dbc4..3b9a00afe2 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.h +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.h @@ -155,6 +155,10 @@ E: eos/table/rx values are not increasing The equation-of-state must an increasing function +E: FixEOStableRX requires atom_style with internal temperature and energies (e.g. dpd) + +Self-explanatory. + E: Internal temperature <= zero. Self-explanatory. diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index e7934cfa0b..e6b8a80f44 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -187,8 +187,10 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) k_error_flag.template modify(); k_error_flag.template sync(); - if (k_error_flag.h_view()) + if (k_error_flag.h_view() == 1) error->all(FLERR,"The number of molecules in CG particle is less than 1e-8."); + else if (k_error_flag.h_view() == 2) + error->all(FLERR,"Computed fraction less than -1.0e-10"); int inum = list->inum; NeighListKokkos* k_list = static_cast*>(list); @@ -432,13 +434,13 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::getParamsEXP6(int id,double &epsilon1,double rm2_old *= pow(nTotalOFA_old,fuchslinR); } } + + // Check that no fractions are less than zero + if(fraction1 < 0.0){ + if(fraction1 < -1.0e-10){ + k_error_flag.d_view() = 2; + } + fraction1 = 0.0; + } + if(fraction2 < 0.0){ + if(fraction2 < -1.0e-10){ + k_error_flag.d_view() = 2; + } + fraction2 = 0.0; + } + if(fraction1_old < 0.0){ + if(fraction1_old < -1.0e-10){ + k_error_flag.d_view() = 2; + } + fraction1_old = 0.0; + } + if(fraction2_old < 0.0){ + if(fraction2_old < -1.0e-10){ + k_error_flag.d_view() = 2; + } + fraction2_old = 0.0; + } } /* ---------------------------------------------------------------------- */ -- GitLab From 3f1f51c1c7551165d023f8269663e45a0ccb08c3 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 19 Dec 2016 13:31:09 -0700 Subject: [PATCH 020/337] Changes necessary for runtime testing of Kokkos styles --- src/USER-DPD/fix_rx.cpp | 4 ++-- src/pair_hybrid.cpp | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 47194cd7bc..1c2313c694 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -363,11 +363,11 @@ void FixRX::post_constructor() newarg2[nspecies+3] = (char *) "ghost"; newarg2[nspecies+4] = (char *) "yes"; - modify->add_fix(nspecies+5,newarg); + modify->add_fix(nspecies+5,newarg,1); fix_species = (FixPropertyAtom *) modify->fix[modify->nfix-1]; restartFlag = modify->fix[modify->nfix-1]->restart_reset; - modify->add_fix(nspecies+5,newarg2); + modify->add_fix(nspecies+5,newarg2,1); fix_species_old = (FixPropertyAtom *) modify->fix[modify->nfix-1]; if(nspecies==0) error->all(FLERR,"There are no rx species specified."); diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 620ceadfd9..d756b9be98 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -39,9 +39,6 @@ PairHybrid::PairHybrid(LAMMPS *lmp) : Pair(lmp), outerflag = 0; respaflag = 0; - - if (lmp->kokkos) - error->all(FLERR,"Cannot yet use pair hybrid with Kokkos"); } /* ---------------------------------------------------------------------- */ -- GitLab From 000df6e1cf3ebf6cfccc69268aafd60ed1fba1b0 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 19 Dec 2016 15:20:10 -0700 Subject: [PATCH 021/337] Fixing what seems to be a Kokkos bug, I will submit to Kokkos lib developers too --- lib/kokkos/algorithms/src/Kokkos_Random.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index d7c06dc14b..d54abeceb0 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -670,8 +670,8 @@ namespace Kokkos { double S = 2.0; double U; while(S>=1.0) { - U = drand(); - const double V = drand(); + U = 2.0*drand() - 1.0; + const double V = 2.0*drand() - 1.0; S = U*U+V*V; } return U*sqrt(-2.0*log(S)/S); -- GitLab From 99910fc43241df916648ad24253f8c757a1b711c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 19 Dec 2016 15:27:16 -0700 Subject: [PATCH 022/337] Adding CPU runtime tested version of pair_dpd_fdt_energy_kokkos --- src/KOKKOS/Install.sh | 2 + src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 696 ++++++++++++++++------ src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 102 +++- src/KOKKOS/rand_pool_wrap.cpp | 72 +++ src/KOKKOS/rand_pool_wrap.h | 84 +++ src/USER-DPD/pair_dpd_fdt_energy.cpp | 2 + src/USER-DPD/pair_dpd_fdt_energy.h | 6 +- 7 files changed, 737 insertions(+), 227 deletions(-) create mode 100644 src/KOKKOS/rand_pool_wrap.cpp create mode 100644 src/KOKKOS/rand_pool_wrap.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index a1830163bd..94be32cc32 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -200,6 +200,8 @@ action pair_tersoff_zbl_kokkos.cpp pair_tersoff_zbl.cpp action pair_tersoff_zbl_kokkos.h pair_tersoff_zbl.h action pppm_kokkos.cpp pppm.cpp action pppm_kokkos.h pppm.h +action rand_pool_wrap_kokkos.cpp +action rand_pool_wrap_kokkos.h action region_block_kokkos.cpp action region_block_kokkos.h action verlet_kokkos.cpp diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index 0bfbb9491e..3b49f43246 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -12,15 +12,13 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: James Larentzos (U.S. Army Research Laboratory) + Contributing author: Stan Moore (Sandia) ------------------------------------------------------------------------- */ #include #include #include #include -#include "pair_dpd_fdt_energy_kokkos.h" -#include "kokkos.h" #include "atom_kokkos.h" #include "atom_vec.h" #include "comm.h" @@ -31,30 +29,26 @@ #include "neigh_list.h" #include "neigh_request.h" #include "random_mars.h" -#include "math_const.h" #include "memory.h" #include "modify.h" +#include "pair_dpd_fdt_energy_kokkos.h" #include "error.h" #include "atom_masks.h" using namespace LAMMPS_NS; -using namespace MathConst; - -#define KOKKOS_CUDA_MAX_THREADS 256 -#define KOKKOS_CUDA_MIN_BLOCKS 8 #define EPSILON 1.0e-10 /* ---------------------------------------------------------------------- */ template -PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : PairDPDfdtEnergy(lmp) +PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : + PairDPDfdtEnergy(lmp),rand_pool(seed + comm->me /** , lmp/**/) { atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; - datamask_read = X_MASK | F_MASK | TYPE_MASK | TAG_MASK | ENERGY_MASK | VIRIAL_MASK; - datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; - cutsq = NULL; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; } /* ---------------------------------------------------------------------- */ @@ -62,26 +56,49 @@ PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : PairDP template PairDPDfdtEnergyKokkos::~PairDPDfdtEnergyKokkos() { + if (copymode) return; + if (allocated) { - memory->destroy_kokkos(k_eatom,eatom); - memory->destroy_kokkos(k_vatom,vatom); - k_cutsq = DAT::tdual_ffloat_2d(); - memory->sfree(cutsq); - eatom = NULL; - vatom = NULL; - cutsq = NULL; + memory->destroy_kokkos(k_duCond,duCond); + memory->destroy_kokkos(k_duMech,duMech); } + + memory->destroy_kokkos(k_cutsq,cutsq); + + /** rand_pool.destroy();/**/ } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ template -void PairDPDfdtEnergyKokkos::cleanup_copy() { - // WHY needed: this prevents parent copy from deallocating any arrays - allocated = 0; - cutsq = NULL; - eatom = NULL; - vatom = NULL; +void PairDPDfdtEnergyKokkos::init_style() +{ + PairDPDfdtEnergy::init_style(); + + // irequest = neigh request made by parent class + + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); + } + + /** rand_pool.init(random,seed);/**/ } /* ---------------------------------------------------------------------- */ @@ -89,9 +106,12 @@ void PairDPDfdtEnergyKokkos::cleanup_copy() { template void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) { + copymode = 1; + eflag = eflag_in; vflag = vflag_in; + if (neighflag == FULL) no_virial_fdotr_compute = 1; if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; @@ -100,35 +120,115 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) if (eflag_atom) { memory->destroy_kokkos(k_eatom,eatom); memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); - d_eatom = k_eatom.view(); + d_eatom = k_eatom.d_view; } if (vflag_atom) { memory->destroy_kokkos(k_vatom,vatom); memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); - d_vatom = k_vatom.view(); + d_vatom = k_vatom.d_view; } - atomKK->sync(execution_space,datamask_read); - k_cutsq.template sync(); - if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); - else atomKK->modified(execution_space,F_MASK); - x = atomKK->k_x.view(); - c_x = atomKK->k_x.view(); + v = atomKK->k_v.view(); f = atomKK->k_f.view(); type = atomKK->k_type.view(); - tag = atomKK->k_tag.view(); + mass = atomKK->k_mass.view(); + rmass = atomKK->rmass; + dpdTheta = atomKK->k_dpdTheta.view(); + + k_cutsq.template sync(); + k_params.template sync(); + atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | DPDTHETA_MASK | RMASS_MASK); + if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK); + else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); + atomKK->k_mass.sync(); + nlocal = atom->nlocal; - nall = atom->nlocal + atom->nghost; - newton_pair = force->newton_pair; - special_lj[0] = force->special_lj[0]; - special_lj[1] = force->special_lj[1]; - special_lj[2] = force->special_lj[2]; - special_lj[3] = force->special_lj[3]; + int nghost = atom->nghost; + int newton_pair = force->newton_pair; + dtinvsqrt = 1.0/sqrt(update->dt); + + int inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + boltz = force->boltz; + + int STACKPARAMS = 0; // optimize // loop over neighbors of my atoms - EV_FLOAT ev = pair_compute,void >(this,(NeighListKokkos*)list); + EV_FLOAT ev; + + if (splitFDT_flag) { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + } else { + + // Allocate memory for duCond and duMech + if (allocated) { + memory->destroy_kokkos(k_duCond,duCond); + memory->destroy_kokkos(k_duMech,duMech); + } + memory->create_kokkos(k_duCond,duCond,nlocal+nghost,"pair:duCond"); + memory->create_kokkos(k_duMech,duMech,nlocal+nghost,"pair:duMech"); + d_duCond = k_duCond.view(); + d_duMech = k_duMech.view(); + h_duCond = k_duCond.h_view; + h_duMech = k_duMech.h_view; + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal+nghost),*this); + + atomKK->sync(execution_space,V_MASK); + + // loop over neighbors of my atoms + + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + + // Communicate the ghost delta energies to the locally owned atoms + + k_duCond.template modify(); + k_duCond.template sync(); + k_duMech.template modify(); + k_duMech.template sync(); + comm->reverse_comm_pair(this); + //k_duCond.template modify(); + //k_duCond.template sync(); + //k_duMech.template modify(); + //k_duMech.template sync(); + } if (eflag_global) eng_vdwl += ev.evdwl; if (vflag_global) { @@ -151,125 +251,262 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) k_vatom.template modify(); k_vatom.template sync(); } + + copymode = 0; } template -template KOKKOS_INLINE_FUNCTION -F_FLOAT PairDPDfdtEnergyKokkos:: -compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { - (void) i; - (void) j; - const F_FLOAT r = sqrt(rsq); - if (r < EPSILON) return 0; // r can be 0.0 in DPD systems - const F_FLOAT rinv = 1.0/r; - const F_FLOAT wr = 1.0 - r/cut[itype][jtype]; - const F_FLOAT wd = wr*wr; - - // conservative force = a0 * wr - return a0[itype][jtype]*wr*rinv; +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyZero, const int &ii) const { + d_duCond[ii] = 0.0; + d_duMech[ii] = 0.0; } template -template +template KOKKOS_INLINE_FUNCTION -F_FLOAT PairDPDfdtEnergyKokkos:: -compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { - (void) i; - (void) j; - const F_FLOAT r = sqrt(rsq); - if (r < EPSILON) return 0; // r can be 0.0 in DPD systems - const F_FLOAT rinv = 1.0/r; - const F_FLOAT wr = 1.0 - r/cut[itype][jtype]; - const F_FLOAT wd = wr*wr; - // unshifted eng of conservative term: - // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]); - // eng shifted to 0.0 at cutoff - return 0.5*a0[itype][jtype]*cut[itype][jtype] * wd; +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSplit, const int &ii, EV_FLOAT& ev) const { + + // The f array is atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + + int i,j,jj,inum,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double vxtmp,vytmp,vztmp,delvx,delvy,delvz; + double rsq,r,rinv,wd,wr,factor_dpd,uTmp; + double dot,randnum; + + double kappa_ij, alpha_ij, theta_ij, gamma_ij; + double mass_i, mass_j; + double massinv_i, massinv_j; + double randPair, mu_ij; + + i = d_ilist[ii]; + xtmp = x(i,0); + ytmp = x(i,1); + ztmp = x(i,2); + itype = type[i]; + jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + + for (jj = 0; jj < jnum; jj++) { + j = d_neighbors(i,jj); + factor_dpd = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x(j,0); + dely = ytmp - x(j,1); + delz = ztmp - x(j,2); + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + double cutsq_ij = STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype); + if (rsq < cutsq_ij) { + r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in DPD systems + rinv = 1.0/r; + double cut_ij = STACKPARAMS?m_params[itype][jtype].cut:params(itype,jtype).cut; + wr = 1.0 - r/cut_ij; + wd = wr*wr; + + // conservative force = a0 * wr + double a0_ij = STACKPARAMS?m_params[itype][jtype].a0:params(itype,jtype).a0; + fpair = a0_ij*wr; + fpair *= factor_dpd*rinv; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + a_f(j,0) -= delx*fpair; + a_f(j,1) -= dely*fpair; + a_f(j,2) -= delz*fpair; + } + + if (eflag) { + // unshifted eng of conservative term: + // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/d_cut(itype,jtype)); + // eng shifted to 0.0 at cutoff + evdwl = 0.5*a0_ij*cut_ij * wd; + evdwl *= factor_dpd; + ev.evdwl += evdwl; + } + + if (EVFLAG) this->template ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + } + } + + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; } +template +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSplit, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairDPDfdtEnergyComputeSplit(), ii, ev); +} -/* - int i,j,ii,jj,inum,jnum,itype,jtype; +template +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNoSplit, const int &ii, EV_FLOAT& ev) const { + + // These array are atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + Kokkos::View::value> > a_duCond = d_duCond; + Kokkos::View::value> > a_duMech = d_duMech; + + int i,j,jj,inum,jnum,itype,jtype; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; - double rsq,r,rinv,wd,wr,factor_dpd; - int *ilist,*jlist,*numneigh,**firstneigh; + double vxtmp,vytmp,vztmp,delvx,delvy,delvz; + double rsq,r,rinv,wd,wr,factor_dpd,uTmp; + double dot,randnum; + + double kappa_ij, alpha_ij, theta_ij, gamma_ij; + double mass_i, mass_j; + double massinv_i, massinv_j; + double randPair, mu_ij; + + rand_type rand_gen = rand_pool.get_state(); + + i = d_ilist[ii]; + xtmp = x(i,0); + ytmp = x(i,1); + ztmp = x(i,2); + vxtmp = v(i,0); + vytmp = v(i,1); + vztmp = v(i,2); + itype = type[i]; + jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + + for (jj = 0; jj < jnum; jj++) { + j = d_neighbors(i,jj); + factor_dpd = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x(j,0); + dely = ytmp - x(j,1); + delz = ztmp - x(j,2); + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + double cutsq_ij = STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype); + if (rsq < cutsq_ij) { + r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in DPD systems + rinv = 1.0/r; + double cut_ij = STACKPARAMS?m_params[itype][jtype].cut:params(itype,jtype).cut; + wr = 1.0 - r/cut_ij; + wd = wr*wr; + + delvx = vxtmp - v(j,0); + delvy = vytmp - v(j,1); + delvz = vztmp - v(j,2); + dot = delx*delvx + dely*delvy + delz*delvz; + randnum = rand_gen.normal(); + + // Compute the current temperature + theta_ij = 0.5*(1.0/dpdTheta[i] + 1.0/dpdTheta[j]); + theta_ij = 1.0/theta_ij; + + double sigma_ij = STACKPARAMS?m_params[itype][jtype].sigma:params(itype,jtype).sigma; + gamma_ij = sigma_ij*sigma_ij + / (2.0*boltz*theta_ij); + + // conservative force = a0 * wr + // drag force = -gamma * wr^2 * (delx dot delv) / r + // random force = sigma * wr * rnd * dtinvsqrt; + + double a0_ij = STACKPARAMS?m_params[itype][jtype].a0:params(itype,jtype).a0; + fpair = a0_ij*wr; + fpair -= gamma_ij*wd*dot*rinv; + fpair += sigma_ij*wr*randnum*dtinvsqrt; + fpair *= factor_dpd*rinv; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + f(j,0) -= delx*fpair; + f(j,1) -= dely*fpair; + f(j,2) -= delz*fpair; + } - evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + if (rmass) { + mass_i = rmass[i]; + mass_j = rmass[j]; + } else { + mass_i = mass[itype]; + mass_j = mass[jtype]; + } + massinv_i = 1.0 / mass_i; + massinv_j = 1.0 / mass_j; - double **x = atom->x; - double **f = atom->f; - int *type = atom->type; - int nlocal = atom->nlocal; - double *special_lj = force->special_lj; - int newton_pair = force->newton_pair; + // Compute the mechanical and conductive energy, uMech and uCond + mu_ij = massinv_i + massinv_j; + mu_ij *= force->ftm2v; - inum = list->inum; - ilist = list->ilist; - numneigh = list->numneigh; - firstneigh = list->firstneigh; + uTmp = gamma_ij*wd*rinv*rinv*dot*dot + - 0.5*sigma_ij*sigma_ij*mu_ij*wd; + uTmp -= sigma_ij*wr*rinv*dot*randnum*dtinvsqrt; + uTmp *= 0.5; - // loop over neighbors of my atoms + a_duMech[i] += uTmp; + if (NEWTON_PAIR || j < nlocal) { + a_duMech[j] += uTmp; + } - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - itype = type[i]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - factor_dpd = special_lj[sbmask(j)]; - j &= NEIGHMASK; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - jtype = type[j]; - - if (rsq < cutsq[itype][jtype]) { - r = sqrt(rsq); - if (r < EPSILON) continue; // r can be 0.0 in DPD systems - rinv = 1.0/r; - wr = 1.0 - r/cut[itype][jtype]; - wd = wr*wr; - - // conservative force = a0 * wr - fpair = a0[itype][jtype]*wr; - fpair *= factor_dpd*rinv; - - f[i][0] += delx*fpair; - f[i][1] += dely*fpair; - f[i][2] += delz*fpair; - if (newton_pair || j < nlocal) { - f[j][0] -= delx*fpair; - f[j][1] -= dely*fpair; - f[j][2] -= delz*fpair; - } + // Compute uCond + randnum = rand_gen.normal(); + kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa; + alpha_ij = sqrt(2.0*boltz*kappa_ij); + randPair = alpha_ij*wr*randnum*dtinvsqrt; - if (eflag) { - // unshifted eng of conservative term: - // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]); - // eng shifted to 0.0 at cutoff - evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd; - evdwl *= factor_dpd; - } + uTmp = kappa_ij*(1.0/dpdTheta[i] - 1.0/dpdTheta[j])*wd; + uTmp += randPair; + + a_duCond[i] += uTmp; + if (NEWTON_PAIR || j < nlocal) { + a_duCond[j] -= uTmp; + } - if (evflag) ev_tally(i,j,nlocal,newton_pair, - evdwl,0.0,fpair,delx,dely,delz); + if (eflag) { + // unshifted eng of conservative term: + // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/d_cut(itype,jtype)); + // eng shifted to 0.0 at cutoff + evdwl = 0.5*a0_ij*cut_ij * wd; + evdwl *= factor_dpd; + ev.evdwl += evdwl; } + + if (EVFLAG) this->template ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); } } - if (vflag_fdotr) virial_fdotr_compute(); + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; + + rand_pool.free_state(rand_gen); +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNoSplit, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairDPDfdtEnergyComputeNoSplit(), ii, ev); } -*/ /* ---------------------------------------------------------------------- allocate all arrays @@ -281,69 +518,26 @@ void PairDPDfdtEnergyKokkos::allocate() PairDPDfdtEnergy::allocate(); int n = atom->ntypes; + int nlocal = atom->nlocal; + int nghost = atom->nghost; + memory->destroy(cutsq); memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); -} - -/* ---------------------------------------------------------------------- - global settings -------------------------------------------------------------------------- */ - -template -void PairDPDfdtEnergyKokkos::settings(int narg, char **arg) -{ - if (narg != 2) error->all(FLERR,"Illegal pair_style command"); - PairDPDfdtEnergy::settings(2,arg); -} - -/* ---------------------------------------------------------------------- - init specific to this pair style -------------------------------------------------------------------------- */ - -template -void PairDPDfdtEnergyKokkos::init_style() -{ - PairDPDfdtEnergy::init_style(); - - neighflag = lmp->kokkos->neighflag; - int irequest = neighbor->nrequest - 1; - - neighbor->requests[irequest]-> - kokkos_host = Kokkos::Impl::is_same::value && - !Kokkos::Impl::is_same::value; - neighbor->requests[irequest]-> - kokkos_device = Kokkos::Impl::is_same::value; - - if (neighflag == HALF || neighflag == HALFTHREAD) { - neighbor->requests[irequest]->full = 0; - neighbor->requests[irequest]->half = 1; - } else { - error->all(FLERR,"Cannot use chosen neighbor list style with dpd/fdt/energy/kk"); + k_params = Kokkos::DualView("PairDPDfdtEnergy::params",n+1,n+1); + params = k_params.d_view; + + if (!splitFDT_flag) { + memory->destroy(duCond); + memory->destroy(duMech); + memory->create_kokkos(k_duCond,duCond,nlocal+nghost+1,"pair:duCond"); + memory->create_kokkos(k_duMech,duMech,nlocal+nghost+1,"pair:duMech"); + d_duCond = k_duCond.view(); + d_duMech = k_duMech.view(); + h_duCond = k_duCond.h_view; + h_duMech = k_duMech.h_view; } - -/* - if (comm->ghost_velocity == 0) - error->all(FLERR,"Pair dpd/fdt/energy requires ghost atoms store velocity"); - - // if newton off, forces between atoms ij will be double computed - // using different random numbers - - if (force->newton_pair == 0 && comm->me == 0) error->warning(FLERR, - "Pair dpd/fdt/energy requires newton pair on"); - - int irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->ssa = 0; - for (int i = 0; i < modify->nfix; i++) - if (strcmp(modify->fix[i]->style,"shardlow") == 0) - neighbor->requests[irequest]->ssa = 1; - - bool eos_flag = false; - for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"eos",3) == 0) eos_flag = true; - if(!eos_flag) error->all(FLERR,"pair_style dpd/fdt/energy requires an EOS to be specified"); -*/ } /* ---------------------------------------------------------------------- @@ -355,21 +549,129 @@ double PairDPDfdtEnergyKokkos::init_one(int i, int j) { double cutone = PairDPDfdtEnergy::init_one(i,j); + k_params.h_view(i,j).cut = cut[i][j]; + k_params.h_view(i,j).a0 = a0[i][j]; + k_params.h_view(i,j).sigma = sigma[i][j]; + k_params.h_view(i,j).kappa = kappa[i][j]; + k_params.h_view(j,i) = k_params.h_view(i,j); if(i(); + k_params.template modify(); return cutone; } +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const +{ + const int EFLAG = eflag; + const int VFLAG = vflag_either; + + // The eatom and vatom arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > v_eatom = k_eatom.view(); + Kokkos::View::value> > v_vatom = k_vatom.view(); + + if (EFLAG) { + if (eflag_atom) { + const E_FLOAT epairhalf = 0.5 * epair; + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) v_eatom[i] += epairhalf; + if (NEWTON_PAIR || j < nlocal) v_eatom[j] += epairhalf; + } else { + v_eatom[i] += epairhalf; + } + } + } + + if (VFLAG) { + const E_FLOAT v0 = delx*delx*fpair; + const E_FLOAT v1 = dely*dely*fpair; + const E_FLOAT v2 = delz*delz*fpair; + const E_FLOAT v3 = delx*dely*fpair; + const E_FLOAT v4 = delx*delz*fpair; + const E_FLOAT v5 = dely*delz*fpair; + + if (vflag_global) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + + if (vflag_atom) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + v_vatom(j,0) += 0.5*v0; + v_vatom(j,1) += 0.5*v1; + v_vatom(j,2) += 0.5*v2; + v_vatom(j,3) += 0.5*v3; + v_vatom(j,4) += 0.5*v4; + v_vatom(j,5) += 0.5*v5; + } + } else { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +int PairDPDfdtEnergyKokkos::sbmask(const int& j) const { + return j >> SBBITS & 3; +} namespace LAMMPS_NS { template class PairDPDfdtEnergyKokkos; #ifdef KOKKOS_HAVE_CUDA template class PairDPDfdtEnergyKokkos; #endif -} - +} \ No newline at end of file diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index a8a5f25801..b8d22eff34 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -22,67 +22,115 @@ PairStyle(dpd/fdt/energy/kk/host,PairDPDfdtEnergyKokkos) #ifndef LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H #define LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H -#include "pair_kokkos.h" #include "pair_dpd_fdt_energy.h" -#include "neigh_list_kokkos.h" +#include "pair_kokkos.h" +#include "kokkos_type.h" +#include "Kokkos_Random.hpp" +#include "rand_pool_wrap.h" namespace LAMMPS_NS { +struct TagPairDPDfdtEnergyZero{}; + +template +struct TagPairDPDfdtEnergyComputeSplit{}; + +template +struct TagPairDPDfdtEnergyComputeNoSplit{}; + template class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { public: - enum {EnabledNeighFlags=HALFTHREAD|HALF}; - enum {COUL_FLAG=0}; typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef EV_FLOAT value_type; + PairDPDfdtEnergyKokkos(class LAMMPS *); virtual ~PairDPDfdtEnergyKokkos(); virtual void compute(int, int); - virtual void settings(int, char **); void init_style(); double init_one(int, int); - protected: - void cleanup_copy(); + void operator()(TagPairDPDfdtEnergyZero, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairDPDfdtEnergyComputeSplit, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairDPDfdtEnergyComputeSplit, const int&) const; - template + template KOKKOS_INLINE_FUNCTION - F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; + void operator()(TagPairDPDfdtEnergyComputeNoSplit, const int&, EV_FLOAT&) const; - template + template KOKKOS_INLINE_FUNCTION - F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; + void operator()(TagPairDPDfdtEnergyComputeNoSplit, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const; + + KOKKOS_INLINE_FUNCTION + int sbmask(const int& j) const; + + struct params_dpd { + params_dpd(){cut=0;a0=0;sigma=0;kappa=0;}; + params_dpd(int i){cut=0;a0=0;sigma=0;kappa=0;}; + F_FLOAT cut,a0,sigma,kappa; + }; + + protected: + int eflag,vflag; + int nlocal,neighflag; + int STACKPARAMS; + double dtinvsqrt; + double boltz; + + virtual void allocate(); + + Kokkos::DualView k_params; + typename Kokkos::DualView::t_dev_const_um params; + // hardwired to space for 15 atom types + params_dpd m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + F_FLOAT m_cut[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array c_x; + typename ArrayTypes::t_v_array_randomread v; typename ArrayTypes::t_f_array f; typename ArrayTypes::t_int_1d_randomread type; + typename ArrayTypes::t_float_1d_randomread mass; + double *rmass; + typename AT::t_efloat_1d dpdTheta; + DAT::tdual_efloat_1d k_duCond,k_duMech; + typename AT::t_efloat_1d d_duCond,d_duMech; + HAT::t_efloat_1d h_duCond,h_duMech; DAT::tdual_efloat_1d k_eatom; DAT::tdual_virial_array k_vatom; - typename ArrayTypes::t_efloat_1d d_eatom; - typename ArrayTypes::t_virial_array d_vatom; - typename ArrayTypes::t_tagint_1d tag; + DAT::t_efloat_1d d_eatom; + DAT::t_virial_array d_vatom; - int newton_pair; - double special_lj[4]; + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist; + typename AT::t_int_1d_randomread d_numneigh; typename ArrayTypes::tdual_ffloat_2d k_cutsq; typename ArrayTypes::t_ffloat_2d d_cutsq; + /**/Kokkos::Random_XorShift64_Pool rand_pool; + typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type;/**/ - int neighflag; - int nlocal,nall,eflag,vflag; - - void allocate(); + /**RandPoolWrap rand_pool; + typedef RandWrap rand_type;/**/ - friend class PairComputeFunctor; - friend class PairComputeFunctor; - friend class PairComputeFunctor; - friend class PairComputeFunctor; - friend EV_FLOAT pair_compute_neighlist(PairDPDfdtEnergyKokkos*,NeighListKokkos*); - friend EV_FLOAT pair_compute_neighlist(PairDPDfdtEnergyKokkos*,NeighListKokkos*); - friend EV_FLOAT pair_compute(PairDPDfdtEnergyKokkos*,NeighListKokkos*); friend void pair_virial_fdotr_compute(PairDPDfdtEnergyKokkos*); }; diff --git a/src/KOKKOS/rand_pool_wrap.cpp b/src/KOKKOS/rand_pool_wrap.cpp new file mode 100644 index 0000000000..b6fd0dbc55 --- /dev/null +++ b/src/KOKKOS/rand_pool_wrap.cpp @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------- + 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 "comm.h" +#include "rand_pool_wrap.h" +#include "lammps.h" +#include "kokkos.h" +#include "random_mars.h" +#include "update.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +RandPoolWrap::RandPoolWrap(int, LAMMPS *lmp) : Pointers(lmp) +{ + random_thr = NULL; + nthreads = lmp->kokkos->num_threads; +} + +/* ---------------------------------------------------------------------- */ + +RandPoolWrap::~RandPoolWrap() +{ + +} + +void RandPoolWrap::destroy() +{ + if (random_thr) { + for (int i=1; i < nthreads; ++i) + delete random_thr[i]; + + delete[] random_thr; + random_thr = NULL; + } +} + +void RandPoolWrap::init(RanMars* random, int seed) +{ + // deallocate pool of RNGs + if (random_thr) { + for (int i=1; i < this->nthreads; ++i) + delete random_thr[i]; + + delete[] random_thr; + } + + // allocate pool of RNGs + // generate a random number generator instance for + // all threads != 0. make sure we use unique seeds. + nthreads = lmp->kokkos->num_threads; + random_thr = new RanMars*[nthreads]; + for (int tid = 1; tid < nthreads; ++tid) { + random_thr[tid] = new RanMars(lmp, seed + comm->me + + comm->nprocs*tid); + } + + // to ensure full compatibility with the serial style + // we use the serial random number generator instance for thread 0 + random_thr[0] = random; +} \ No newline at end of file diff --git a/src/KOKKOS/rand_pool_wrap.h b/src/KOKKOS/rand_pool_wrap.h new file mode 100644 index 0000000000..349896ee9a --- /dev/null +++ b/src/KOKKOS/rand_pool_wrap.h @@ -0,0 +1,84 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef RAND_POOL_WRAP_H +#define RAND_POOL_WRAP_H + +#include "pointers.h" +#include "kokkos_type.h" +#include "random_mars.h" +#include "error.h" + +namespace LAMMPS_NS { + +struct RandWrap { + class RanMars* rng; + + RandWrap() { + rng = NULL; + } + + KOKKOS_INLINE_FUNCTION + double drand() { + return rng->uniform(); + } + + KOKKOS_INLINE_FUNCTION + double normal() { + return rng->gaussian(); + } +}; + +class RandPoolWrap : protected Pointers { + public: + RandPoolWrap(int, class LAMMPS *); + ~RandPoolWrap(); + void destroy(); + void init(RanMars*, int); + + KOKKOS_INLINE_FUNCTION + RandWrap get_state() const + { +#ifdef KOKKOS_HAVE_CUDA + error->all(FLERR,"Cannot use Marsaglia RNG with GPUs"); +#endif + + RandWrap rand_wrap; + int tid = 0; +#ifndef KOKKOS_HAVE_CUDA + tid = LMPDeviceType::hardware_thread_id(); +#endif + rand_wrap.rng = random_thr[tid]; + return rand_wrap; + } + + KOKKOS_INLINE_FUNCTION + void free_state(RandWrap) const + { + + } + + void clean_copy() { random_thr = NULL; } + + private: + class RanMars **random_thr; + int nthreads; +}; + +} + +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp index 558994d35e..19994acfa1 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.cpp +++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp @@ -54,6 +54,8 @@ PairDPDfdtEnergy::PairDPDfdtEnergy(LAMMPS *lmp) : Pair(lmp) PairDPDfdtEnergy::~PairDPDfdtEnergy() { + if (copymode) return; + if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); diff --git a/src/USER-DPD/pair_dpd_fdt_energy.h b/src/USER-DPD/pair_dpd_fdt_energy.h index 335beea7e3..ff29667682 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.h +++ b/src/USER-DPD/pair_dpd_fdt_energy.h @@ -31,8 +31,8 @@ class PairDPDfdtEnergy : public Pair { virtual void compute(int, int); virtual void settings(int, char **); virtual void coeff(int, char **); - void init_style(); - double init_one(int, int); + virtual void init_style(); + virtual double init_one(int, int); void write_restart(FILE *); void read_restart(FILE *); virtual void write_restart_settings(FILE *); @@ -53,7 +53,7 @@ class PairDPDfdtEnergy : public Pair { int seed; bool splitFDT_flag; - void allocate(); + virtual void allocate(); }; -- GitLab From 6f51c3b75c49e4777304e6f926ad53f4792e2ce1 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 19 Dec 2016 16:25:31 -0700 Subject: [PATCH 023/337] Fixing issues in pair_multi_lucy_rx_kokkos --- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 4 ---- src/KOKKOS/pair_multi_lucy_rx_kokkos.h | 1 - 2 files changed, 5 deletions(-) diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 03bbaf9907..76337b5219 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -72,8 +72,6 @@ PairMultiLucyRXKokkos::PairMultiLucyRXKokkos(LAMMPS *lmp) : PairMult datamask_modify = EMPTY_MASK; update_table = 0; - ntables = 0; - tables = NULL; h_table = new TableHost(); d_table = new TableDevice(); @@ -112,11 +110,9 @@ void PairMultiLucyRXKokkos::init_style() if (neighflag == FULL) { neighbor->requests[irequest]->full = 1; neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->ghost = 1; } else if (neighflag == HALF || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 1; - neighbor->requests[irequest]->ghost = 1; } else { error->all(FLERR,"Cannot use chosen neighbor list style with multi/lucy/rx/kk"); } diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h index a259588f78..b205f00796 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h @@ -119,7 +119,6 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { // double *rsq,*drsq,*e,*de,*f,*df,*e2,*f2; //}; - int tabstyle,tablength; /*struct TableDeviceConst { typename ArrayTypes::t_ffloat_2d_randomread cutsq; typename ArrayTypes::t_int_2d_randomread tabindex; -- GitLab From f62a6fe5a55d17cb95d0a3088d2c5d7f7f10b0ee Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 19 Dec 2016 16:50:22 -0700 Subject: [PATCH 024/337] Renaming rand_pool_wrap to rand_pool_wrap_kokkos --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 2 +- src/KOKKOS/{rand_pool_wrap.cpp => rand_pool_wrap_kokkos.cpp} | 4 ++-- src/KOKKOS/{rand_pool_wrap.h => rand_pool_wrap_kokkos.h} | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename src/KOKKOS/{rand_pool_wrap.cpp => rand_pool_wrap_kokkos.cpp} (98%) rename src/KOKKOS/{rand_pool_wrap.h => rand_pool_wrap_kokkos.h} (100%) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index b8d22eff34..67fa315721 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -26,7 +26,7 @@ PairStyle(dpd/fdt/energy/kk/host,PairDPDfdtEnergyKokkos) #include "pair_kokkos.h" #include "kokkos_type.h" #include "Kokkos_Random.hpp" -#include "rand_pool_wrap.h" +#include "rand_pool_wrap_kokkos.h" namespace LAMMPS_NS { diff --git a/src/KOKKOS/rand_pool_wrap.cpp b/src/KOKKOS/rand_pool_wrap_kokkos.cpp similarity index 98% rename from src/KOKKOS/rand_pool_wrap.cpp rename to src/KOKKOS/rand_pool_wrap_kokkos.cpp index b6fd0dbc55..c11764640b 100644 --- a/src/KOKKOS/rand_pool_wrap.cpp +++ b/src/KOKKOS/rand_pool_wrap_kokkos.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ #include "comm.h" -#include "rand_pool_wrap.h" +#include "rand_pool_wrap_kokkos.h" #include "lammps.h" #include "kokkos.h" #include "random_mars.h" @@ -69,4 +69,4 @@ void RandPoolWrap::init(RanMars* random, int seed) // to ensure full compatibility with the serial style // we use the serial random number generator instance for thread 0 random_thr[0] = random; -} \ No newline at end of file +} diff --git a/src/KOKKOS/rand_pool_wrap.h b/src/KOKKOS/rand_pool_wrap_kokkos.h similarity index 100% rename from src/KOKKOS/rand_pool_wrap.h rename to src/KOKKOS/rand_pool_wrap_kokkos.h -- GitLab From 889ee78f8ba0587020cffe61d5a6cb6515f2e4c6 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 19 Dec 2016 17:15:02 -0700 Subject: [PATCH 025/337] Change necessary for pair_exp6_rx_kokkos to compile on GPU --- src/USER-DPD/pair_exp6_rx.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/USER-DPD/pair_exp6_rx.h b/src/USER-DPD/pair_exp6_rx.h index f9654e4086..2dfc1c1a2e 100644 --- a/src/USER-DPD/pair_exp6_rx.h +++ b/src/USER-DPD/pair_exp6_rx.h @@ -37,6 +37,14 @@ class PairExp6rx : public Pair { void write_restart_settings(FILE *); void read_restart_settings(FILE *); + struct Param { + double epsilon,rm,alpha; + int ispecies; + char *name, *potential; // names of unique molecules and interaction type + char *tablename; // name of interaction table + int potentialType; // enumerated interaction potential type. + }; + protected: enum{LINEAR}; double cut_global; @@ -48,13 +56,6 @@ class PairExp6rx : public Pair { int *mol2param; // mapping from molecule to parameters int nparams; // # of stored parameter sets int maxparam; // max # of parameter sets - struct Param { - double epsilon,rm,alpha; - int ispecies; - char *name, *potential; // names of unique molecules and interaction type - char *tablename; // name of interaction table - int potentialType; // enumerated interaction potential type. - }; Param *params; // parameter set for an I-J-K interaction int nspecies; -- GitLab From 35803c75c970c4f978a8623a1364fbce8e337126 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 20 Dec 2016 17:03:46 -0700 Subject: [PATCH 026/337] Fixing issues found during GPU runtime testing --- src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 79 ++++++++++++++++++-------- src/KOKKOS/fix_eos_table_rx_kokkos.h | 6 +- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 9 +-- 3 files changed, 65 insertions(+), 29 deletions(-) diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index 3b22f61e66..cf77e25ff4 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -49,6 +49,13 @@ FixEOStableRXKokkos::FixEOStableRXKokkos(LAMMPS *lmp, int narg, char k_error_flag = DAT::tdual_int_scalar("fix:error_flag"); k_warning_flag = DAT::tdual_int_scalar("fix:warning_flag"); + + k_dHf = DAT::tdual_float_1d("fix:dHf",nspecies); + for (int n = 0; n < nspecies; n++) + k_dHf.h_view(n) = dHf[n]; + k_dHf.modify(); + k_dHf.sync(); + d_dHf = k_dHf.view(); } /* ---------------------------------------------------------------------- */ @@ -73,6 +80,7 @@ void FixEOStableRXKokkos::setup(int vflag) copymode = 1; int nlocal = atom->nlocal; + double boltz = force->boltz; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); @@ -82,16 +90,20 @@ void FixEOStableRXKokkos::setup(int vflag) uCGnew = atomKK->k_uCGnew.view(); dvector = atomKK->k_dvector.view(); - atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); - atomKK->modified(execution_space,UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK); - - if (!this->restart_reset) + if (!this->restart_reset) { + atomKK->sync(execution_space,MASK_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + } // Communicate the updated momenta and velocities to all nodes + atomKK->sync(Host,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); comm->forward_comm_fix(this); + atomKK->modified(Host,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,DPDTHETA_MASK); error_check(); @@ -127,6 +139,7 @@ void FixEOStableRXKokkos::init() copymode = 1; int nlocal = atom->nlocal; + double boltz = force->boltz; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); @@ -134,13 +147,15 @@ void FixEOStableRXKokkos::init() dpdTheta= atomKK->k_dpdTheta.view(); dvector = atomKK->k_dvector.view(); - atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); - atomKK->modified(execution_space,UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK); - - if (this->restart_reset) + if (this->restart_reset) { + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); - else + atomKK->modified(execution_space,DPDTHETA_MASK); + } else { + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK); + } error_check(); @@ -172,6 +187,7 @@ void FixEOStableRXKokkos::post_integrate() copymode = 1; int nlocal = atom->nlocal; + double boltz = force->boltz; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); @@ -210,6 +226,7 @@ void FixEOStableRXKokkos::end_of_step() copymode = 1; int nlocal = atom->nlocal; + double boltz = force->boltz; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); @@ -219,18 +236,24 @@ void FixEOStableRXKokkos::end_of_step() uCGnew = atomKK->k_uCGnew.view(); dvector = atomKK->k_dvector.view(); - atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); - atomKK->modified(execution_space,UCHEM_MASK | DPDTHETA_MASK | UCG_MASK | UCGNEW_MASK); // Communicate the ghost uCGnew + atomKK->sync(Host,UCG_MASK | UCGNEW_MASK); comm->reverse_comm_fix(this); + atomKK->modified(Host,UCG_MASK | UCGNEW_MASK); + atomKK->sync(execution_space,MASK_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); // Communicate the updated momenta and velocities to all nodes + atomKK->sync(Host,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); comm->forward_comm_fix(this); + atomKK->modified(Host,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,DPDTHETA_MASK); error_check(); @@ -265,13 +288,13 @@ void FixEOStableRXKokkos::energy_lookup(int id, double thetai, doubl //uTmp = tb->e[itable] + fraction*tb->de[itable]; uTmp = d_table_const.e(ispecies,itable) + fraction*d_table_const.de(ispecies,itable); - uTmp += dHf[ispecies]; + uTmp += d_dHf[ispecies]; // mol fraction form: ui += dvector(ispecies,id)*uTmp; nTotal += dvector(ispecies,id); } } - ui = ui - double(nTotal+1.5)*force->boltz*thetai; // need class variable + ui = ui - double(nTotal+1.5)*boltz*thetai; } /* ---------------------------------------------------------------------- @@ -344,13 +367,16 @@ template int FixEOStableRXKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { int ii,jj,m; + HAT::t_efloat_1d h_uChem = atomKK->k_uChem.h_view; + HAT::t_efloat_1d h_uCG = atomKK->k_uCG.h_view; + HAT::t_efloat_1d h_uCGnew = atomKK->k_uCGnew.h_view; m = 0; for (ii = 0; ii < n; ii++) { jj = list[ii]; - buf[m++] = uChem[jj]; - buf[m++] = uCG[jj]; - buf[m++] = uCGnew[jj]; + buf[m++] = h_uChem[jj]; + buf[m++] = h_uCG[jj]; + buf[m++] = h_uCGnew[jj]; } return m; } @@ -361,13 +387,16 @@ template void FixEOStableRXKokkos::unpack_forward_comm(int n, int first, double *buf) { int ii,m,last; + HAT::t_efloat_1d h_uChem = atomKK->k_uChem.h_view; + HAT::t_efloat_1d h_uCG = atomKK->k_uCG.h_view; + HAT::t_efloat_1d h_uCGnew = atomKK->k_uCGnew.h_view; m = 0; last = first + n ; for (ii = first; ii < last; ii++){ - uChem[ii] = buf[m++]; - uCG[ii] = buf[m++]; - uCGnew[ii] = buf[m++]; + h_uChem[ii] = buf[m++]; + h_uCG[ii] = buf[m++]; + h_uCGnew[ii] = buf[m++]; } } @@ -377,12 +406,14 @@ template int FixEOStableRXKokkos::pack_reverse_comm(int n, int first, double *buf) { int i,m,last; + HAT::t_efloat_1d h_uCG = atomKK->k_uCG.h_view; + HAT::t_efloat_1d h_uCGnew = atomKK->k_uCGnew.h_view; m = 0; last = first + n; for (i = first; i < last; i++) { - buf[m++] = uCG[i]; - buf[m++] = uCGnew[i]; + buf[m++] = h_uCG[i]; + buf[m++] = h_uCGnew[i]; } return m; } @@ -393,13 +424,15 @@ template void FixEOStableRXKokkos::unpack_reverse_comm(int n, int *list, double *buf) { int i,j,m; + HAT::t_efloat_1d h_uCG = atomKK->k_uCG.h_view; + HAT::t_efloat_1d h_uCGnew = atomKK->k_uCGnew.h_view; m = 0; for (i = 0; i < n; i++) { j = list[i]; - uCG[j] += buf[m++]; - uCGnew[j] += buf[m++]; + h_uCG[j] += buf[m++]; + h_uCGnew[j] += buf[m++]; } } diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.h b/src/KOKKOS/fix_eos_table_rx_kokkos.h index 3b9a00afe2..d4a5094ae0 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.h +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.h @@ -105,12 +105,15 @@ class FixEOStableRXKokkos : public FixEOStableRX { int **tabindex; + double boltz; + void allocate(); void error_check(); int update_table; void create_kokkos_tables(); - //double *dHf; + DAT::tdual_float_1d k_dHf; + typename AT::t_float_1d d_dHf; typename AT::t_int_1d mask; typename AT::t_efloat_1d uCond,uMech,uChem,uCG,uCGnew,rho,dpdTheta,duChem; @@ -124,7 +127,6 @@ class FixEOStableRXKokkos : public FixEOStableRX { int pack_forward_comm(int , int *, double *, int, int *); void unpack_forward_comm(int , int , double *); - //int *eosSpecies; }; } diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index e6b8a80f44..a2c70ca115 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -645,7 +645,7 @@ void PairExp6rxKokkos::read_file(char *file) int params_per_line = 5; char **words = new char*[params_per_line+1]; - memory->sfree(params); + memory->destroy_kokkos(k_params,params); params = NULL; nparams = maxparam = 0; @@ -723,6 +723,7 @@ void PairExp6rxKokkos::read_file(char *file) // load up parameter settings and error check their values if (nparams == maxparam) { + k_params.template modify(); maxparam += DELTA; memory->grow_kokkos(k_params,params,maxparam, "pair:params"); @@ -823,7 +824,7 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double nTotal += dvector(ispecies,id); nTotal_old += dvector(ispecies+nspecies,id); - iparam = mol2param[ispecies]; + iparam = d_mol2param[ispecies]; if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { @@ -840,7 +841,7 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double fractionOFA = nTotalOFA / nTotal; for (int ispecies = 0; ispecies < nspecies; ispecies++) { - iparam = mol2param[ispecies]; + iparam = d_mol2param[ispecies]; if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; // If Site1 matches a pure species, then grab the parameters @@ -881,7 +882,7 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double xMolei_old = dvector(ispecies+nspecies,id)/nTotalOFA_old; for (int jspecies = 0; jspecies < nspecies; jspecies++) { - jparam = mol2param[jspecies]; + jparam = d_mol2param[jspecies]; if (jparam < 0 || d_params[jparam].potentialType != exp6PotentialType ) continue; if (isite1 == d_params[jparam].ispecies || isite2 == d_params[jparam].ispecies) continue; rmj = d_params[jparam].rm; -- GitLab From 73326922d67c756653f4607222b63ac1b5378139 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 21 Dec 2016 08:56:48 -0700 Subject: [PATCH 027/337] Fixing Kokkos issue in fix_eos_table_rx_kokkos --- src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index cf77e25ff4..c47923680c 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -80,7 +80,7 @@ void FixEOStableRXKokkos::setup(int vflag) copymode = 1; int nlocal = atom->nlocal; - double boltz = force->boltz; + boltz = force->boltz; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); @@ -139,7 +139,7 @@ void FixEOStableRXKokkos::init() copymode = 1; int nlocal = atom->nlocal; - double boltz = force->boltz; + boltz = force->boltz; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); @@ -187,7 +187,7 @@ void FixEOStableRXKokkos::post_integrate() copymode = 1; int nlocal = atom->nlocal; - double boltz = force->boltz; + boltz = force->boltz; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); @@ -226,7 +226,7 @@ void FixEOStableRXKokkos::end_of_step() copymode = 1; int nlocal = atom->nlocal; - double boltz = force->boltz; + boltz = force->boltz; mask = atomKK->k_mask.view(); uCond = atomKK->k_uCond.view(); uMech = atomKK->k_uMech.view(); -- GitLab From 807d9529da32778eb6dbc2216f6a72b1e1325d3c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 21 Dec 2016 10:41:29 -0700 Subject: [PATCH 028/337] Fixing issues found during GPU runtime testing --- lib/kokkos/algorithms/src/Kokkos_Random.hpp | 8 +++--- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 29 ++++++++++++--------- src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 3 ++- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 5 +--- src/KOKKOS/pair_exp6_rx_kokkos.h | 1 - 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index d54abeceb0..afe6b54e90 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -910,8 +910,8 @@ namespace Kokkos { double S = 2.0; double U; while(S>=1.0) { - U = drand(); - const double V = drand(); + U = 2.0*drand() - 1.0; + const double V = 2.0*drand() - 1.0; S = U*U+V*V; } return U*sqrt(-2.0*log(S)/S); @@ -1163,8 +1163,8 @@ namespace Kokkos { double S = 2.0; double U; while(S>=1.0) { - U = drand(); - const double V = drand(); + U = 2.0*drand() - 1.0; + const double V = 2.0*drand() - 1.0; S = U*U+V*V; } return U*sqrt(-2.0*log(S)/S); diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index 3b49f43246..310f4689cb 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -138,10 +138,14 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) k_cutsq.template sync(); k_params.template sync(); - atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | DPDTHETA_MASK | RMASS_MASK); + atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK); if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK); - else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); - atomKK->k_mass.sync(); + else atomKK->modified(execution_space,F_MASK); + + special_lj[0] = force->special_lj[0]; + special_lj[1] = force->special_lj[1]; + special_lj[2] = force->special_lj[2]; + special_lj[3] = force->special_lj[3]; nlocal = atom->nlocal; int nghost = atom->nghost; @@ -155,6 +159,7 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) d_ilist = k_list->d_ilist; boltz = force->boltz; + ftm2v = force->ftm2v; int STACKPARAMS = 0; // optimize @@ -195,7 +200,8 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) h_duMech = k_duMech.h_view; Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal+nghost),*this); - atomKK->sync(execution_space,V_MASK); + atomKK->sync(execution_space,V_MASK | DPDTHETA_MASK | RMASS_MASK); + atomKK->k_mass.sync(); // loop over neighbors of my atoms @@ -219,15 +225,12 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) // Communicate the ghost delta energies to the locally owned atoms + // this memory transfer can be removed when fix_dpd_fdt_energy_kokkos is added k_duCond.template modify(); k_duCond.template sync(); k_duMech.template modify(); k_duMech.template sync(); comm->reverse_comm_pair(this); - //k_duCond.template modify(); - //k_duCond.template sync(); - //k_duMech.template modify(); - //k_duMech.template sync(); } if (eflag_global) eng_vdwl += ev.evdwl; @@ -335,7 +338,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSp ev.evdwl += evdwl; } - if (EVFLAG) this->template ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + if (EVFLAG) this->template ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); } } @@ -437,9 +440,9 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNo fy_i += dely*fpair; fz_i += delz*fpair; if (NEWTON_PAIR || j < nlocal) { - f(j,0) -= delx*fpair; - f(j,1) -= dely*fpair; - f(j,2) -= delz*fpair; + a_f(j,0) -= delx*fpair; + a_f(j,1) -= dely*fpair; + a_f(j,2) -= delz*fpair; } if (rmass) { @@ -454,7 +457,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNo // Compute the mechanical and conductive energy, uMech and uCond mu_ij = massinv_i + massinv_j; - mu_ij *= force->ftm2v; + mu_ij *= ftm2v; uTmp = gamma_ij*wd*rinv*rinv*dot*dot - 0.5*sigma_ij*sigma_ij*mu_ij*wd; diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index 67fa315721..8e7d01de2a 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -89,7 +89,8 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { int nlocal,neighflag; int STACKPARAMS; double dtinvsqrt; - double boltz; + double boltz,ftm2v; + double special_lj[4]; virtual void allocate(); diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index a2c70ca115..8ab7d62324 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -148,10 +148,6 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) special_lj[1] = force->special_lj[1]; special_lj[2] = force->special_lj[2]; special_lj[3] = force->special_lj[3]; - special_coul[0] = force->special_coul[0]; - special_coul[1] = force->special_coul[1]; - special_coul[2] = force->special_coul[2]; - special_coul[3] = force->special_coul[3]; newton_pair = force->newton_pair; atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); @@ -595,6 +591,7 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxComputetemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); } diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 366cf99d75..7dfe20fc22 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -89,7 +89,6 @@ class PairExp6rxKokkos : public PairExp6rx { protected: int eflag,vflag; int nlocal,newton_pair,neighflag; - double special_coul[4]; double special_lj[4]; typename AT::t_x_array_randomread x; -- GitLab From 163b61a32eff89364b99ca0e9dbde28364a65ded Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 21 Dec 2016 15:37:00 -0700 Subject: [PATCH 029/337] Removing pair_table_rx_kokkos from Kokkos Install.sh since it isn't ready for runtime testing --- src/KOKKOS/Install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 94be32cc32..17e9f93c9d 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -190,8 +190,8 @@ action pair_vashishta_kokkos.cpp pair_vashishta.cpp action pair_vashishta_kokkos.h pair_vashishta.h action pair_table_kokkos.cpp action pair_table_kokkos.h -action pair_table_rx_kokkos.cpp pair_table_rx.cpp -action pair_table_rx_kokkos.h pair_table_rx.h +#action pair_table_rx_kokkos.cpp pair_table_rx.cpp +#action pair_table_rx_kokkos.h pair_table_rx.h action pair_tersoff_kokkos.cpp pair_tersoff.cpp action pair_tersoff_kokkos.h pair_tersoff.h action pair_tersoff_mod_kokkos.cpp pair_tersoff_mod.cpp -- GitLab From f6fe61196da6acb067c321433dcfa31dba8fc39e Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 22 Dec 2016 11:34:17 -0700 Subject: [PATCH 030/337] CPU runtime tested version of pair_multi_lucy_rx_kokkos --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 9 ++- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 11 ++-- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 70 ++++++++++------------- src/KOKKOS/pair_multi_lucy_rx_kokkos.h | 30 ++++------ src/USER-DPD/pair_multi_lucy_rx.h | 12 ++-- 5 files changed, 61 insertions(+), 71 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index 310f4689cb..133d366fbc 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -58,6 +58,9 @@ PairDPDfdtEnergyKokkos::~PairDPDfdtEnergyKokkos() { if (copymode) return; + memory->destroy_kokkos(k_eatom,eatom); + memory->destroy_kokkos(k_vatom,vatom); + if (allocated) { memory->destroy_kokkos(k_duCond,duCond); memory->destroy_kokkos(k_duMech,duMech); @@ -335,7 +338,8 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSp // eng shifted to 0.0 at cutoff evdwl = 0.5*a0_ij*cut_ij * wd; evdwl *= factor_dpd; - ev.evdwl += evdwl; + if (EVFLAG) + ev.evdwl += ((NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); @@ -489,7 +493,8 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNo // eng shifted to 0.0 at cutoff evdwl = 0.5*a0_ij*cut_ij * wd; evdwl *= factor_dpd; - ev.evdwl += evdwl; + if (EVFLAG) + ev.evdwl += ((NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 8ab7d62324..559948067d 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -153,6 +153,7 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK); else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); + k_cutsq.template sync(); // Initialize the Exp6 parameter data for both the local // and ghost atoms. Make the parameter data persistent @@ -495,7 +496,7 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxComputetemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); } @@ -630,6 +632,7 @@ void PairExp6rxKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); + k_cutsq.template modify(); memory->create(cut,n+1,n+1,"pair:cut_lj"); } diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 76337b5219..1dc8ccbae9 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -71,7 +71,7 @@ PairMultiLucyRXKokkos::PairMultiLucyRXKokkos(LAMMPS *lmp) : PairMult datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; - update_table = 0; + update_table = 1; h_table = new TableHost(); d_table = new TableDevice(); @@ -85,8 +85,14 @@ PairMultiLucyRXKokkos::~PairMultiLucyRXKokkos() { if (copymode) return; + memory->destroy_kokkos(k_eatom,eatom); + memory->destroy_kokkos(k_vatom,vatom); + + memory->destroy_kokkos(k_cutsq,cutsq); + delete h_table; delete d_table; + tabindex = NULL; } /* ---------------------------------------------------------------------- */ @@ -123,6 +129,8 @@ void PairMultiLucyRXKokkos::init_style() template void PairMultiLucyRXKokkos::compute(int eflag_in, int vflag_in) { + copymode = 1; + if (update_table) create_kokkos_tables(); @@ -130,6 +138,8 @@ void PairMultiLucyRXKokkos::compute(int eflag_in, int vflag_in) compute_style(eflag_in,vflag_in); else if(tabstyle == LINEAR) compute_style(eflag_in,vflag_in); + + copymode = 0; } /* ---------------------------------------------------------------------- */ @@ -138,15 +148,9 @@ template template void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in) { - copymode = 1; - eflag = eflag_in; vflag = vflag_in; - double evdwl,evdwlOld; - - evdwlOld = 0.0; - evdwl = 0.0; if (neighflag == FULL) no_virial_fdotr_compute = 1; if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; @@ -175,6 +179,7 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | DPDRHO_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK); else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); + k_cutsq.template sync(); nlocal = atom->nlocal; int nghost = atom->nghost; @@ -250,8 +255,6 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in k_vatom.template modify(); k_vatom.template sync(); } - - copymode = 0; } template @@ -316,10 +319,12 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeinnersq || rho[j]*rho[j] < tb->innersq){ if (rho[i]*rho[i] < d_table_const.innersq(tidx) || rho[j]*rho[j] < d_table_const.innersq(tidx)){ k_error_flag.d_view() = 1; } + if (TABSTYLE == LOOKUP) { //itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); itable = static_cast (((rho[i]*rho[i]) - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); @@ -338,6 +343,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute ((rho[i]*rho[i] - tb->innersq) * tb->invdelta); itable = static_cast ((rho[i]*rho[i] - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); //jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); @@ -395,8 +401,9 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); itable = static_cast (((rho[i]*rho[i]) - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); //if (TABSTYLE == LOOKUP) evdwl = tb->e[itable]; - if (TABSTYLE == LOOKUP) evdwl = d_table_const.e(tidx,itable); - else if (TABSTYLE == LINEAR){ + if (TABSTYLE == LOOKUP) { + evdwl = d_table_const.e(tidx,itable); + } else if (TABSTYLE == LINEAR) { if (itable >= tlm1){ k_error_flag.d_view() = 2; } @@ -404,7 +411,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputersq[itable]) * tb->invdelta); else fraction_i = (((rho[i]*rho[i]) - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx)); //evdwl = tb->e[itable] + fraction_i*tb->de[itable]; - evdwl = d_table_const.e(tidx,itable); + fraction_i*d_table_const.de(tidx,itable); + evdwl = d_table_const.e(tidx,itable) + fraction_i*d_table_const.de(tidx,itable); } else k_error_flag.d_view() = 3; evdwl *=(pi*d_cutsq(itype,itype)*d_cutsq(itype,itype))/84.0; @@ -417,7 +424,8 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute @@ -433,8 +441,6 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute void PairMultiLucyRXKokkos::computeLocalDensity() { - copymode = 1; - x = atomKK->k_x.view(); type = atomKK->k_type.view(); rho = atomKK->k_rho.view(); @@ -491,8 +497,6 @@ void PairMultiLucyRXKokkos::computeLocalDensity() } comm->forward_comm_pair(this); - - copymode = 0; } template @@ -506,6 +510,7 @@ template KOKKOS_INLINE_FUNCTION void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLocalDensity, const int &ii) const { + // The rho array is atomic for Half/Thread neighbor style Kokkos::View::value> > a_rho = rho; @@ -565,6 +570,7 @@ void PairMultiLucyRXKokkos::getParams(int id, double &fractionOld1, double fractionOld, fraction; double nTotal, nTotalOld; + nTotal = 0.0; nTotalOld = 0.0; for (int ispecies = 0; ispecies < nspecies; ispecies++){ @@ -796,7 +802,6 @@ void PairMultiLucyRXKokkos::create_kokkos_tables() memory->create_kokkos(d_table->innersq,h_table->innersq,ntables,"Table::innersq"); memory->create_kokkos(d_table->invdelta,h_table->invdelta,ntables,"Table::invdelta"); - memory->create_kokkos(d_table->deltasq6,h_table->deltasq6,ntables,"Table::deltasq6"); if(tabstyle == LOOKUP) { memory->create_kokkos(d_table->e,h_table->e,ntables,tlm1,"Table::e"); @@ -816,12 +821,9 @@ void PairMultiLucyRXKokkos::create_kokkos_tables() h_table->innersq[i] = tb->innersq; h_table->invdelta[i] = tb->invdelta; - h_table->deltasq6[i] = tb->deltasq6; for(int j = 0; jrsq.dimension_1(); j++) h_table->rsq(i,j) = tb->rsq[j]; - for(int j = 0; jdrsq.dimension_1(); j++) - h_table->drsq(i,j) = tb->drsq[j]; for(int j = 0; je.dimension_1(); j++) h_table->e(i,j) = tb->e[j]; for(int j = 0; jde.dimension_1(); j++) @@ -830,40 +832,26 @@ void PairMultiLucyRXKokkos::create_kokkos_tables() h_table->f(i,j) = tb->f[j]; for(int j = 0; jdf.dimension_1(); j++) h_table->df(i,j) = tb->df[j]; - for(int j = 0; je2.dimension_1(); j++) - h_table->e2(i,j) = tb->e2[j]; - for(int j = 0; jf2.dimension_1(); j++) - h_table->f2(i,j) = tb->f2[j]; } Kokkos::deep_copy(d_table->innersq,h_table->innersq); Kokkos::deep_copy(d_table->invdelta,h_table->invdelta); - Kokkos::deep_copy(d_table->deltasq6,h_table->deltasq6); Kokkos::deep_copy(d_table->rsq,h_table->rsq); - Kokkos::deep_copy(d_table->drsq,h_table->drsq); Kokkos::deep_copy(d_table->e,h_table->e); Kokkos::deep_copy(d_table->de,h_table->de); Kokkos::deep_copy(d_table->f,h_table->f); Kokkos::deep_copy(d_table->df,h_table->df); - Kokkos::deep_copy(d_table->e2,h_table->e2); - Kokkos::deep_copy(d_table->f2,h_table->f2); Kokkos::deep_copy(d_table->tabindex,h_table->tabindex); d_table_const.innersq = d_table->innersq; d_table_const.invdelta = d_table->invdelta; - d_table_const.deltasq6 = d_table->deltasq6; d_table_const.rsq = d_table->rsq; - d_table_const.drsq = d_table->drsq; d_table_const.e = d_table->e; d_table_const.de = d_table->de; d_table_const.f = d_table->f; d_table_const.df = d_table->df; - d_table_const.e2 = d_table->e2; - d_table_const.f2 = d_table->f2; - - Kokkos::deep_copy(d_table->cutsq,h_table->cutsq); update_table = 0; } @@ -878,11 +866,14 @@ void PairMultiLucyRXKokkos::allocate() const int nt = atom->ntypes + 1; memory->create(setflag,nt,nt,"pair:setflag"); - memory->create_kokkos(d_table->cutsq,h_table->cutsq,cutsq,nt,nt,"pair:cutsq"); - memory->create_kokkos(d_table->tabindex,h_table->tabindex,tabindex,nt,nt,"pair:tabindex"); - d_table_const.cutsq = d_table->cutsq; + memory->create_kokkos(k_cutsq,cutsq,nt,nt,"pair:cutsq"); + d_cutsq = k_cutsq.template view(); + k_cutsq.template modify(); + + memory->create_kokkos(d_table->tabindex,h_table->tabindex,tabindex,nt,nt,"pair:tabindex"); d_table_const.tabindex = d_table->tabindex; + memset(&setflag[0][0],0,nt*nt*sizeof(int)); memset(&cutsq[0][0],0,nt*nt*sizeof(double)); memset(&tabindex[0][0],0,nt*nt*sizeof(int)); @@ -916,9 +907,6 @@ void PairMultiLucyRXKokkos::settings(int narg, char **arg) d_table_const.tabindex = d_table->tabindex = typename ArrayTypes::t_int_2d(); h_table->tabindex = typename ArrayTypes::t_int_2d(); - - d_table_const.cutsq = d_table->cutsq = typename ArrayTypes::t_ffloat_2d(); - h_table->cutsq = typename ArrayTypes::t_ffloat_2d(); } allocated = 0; diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h index b205f00796..a6622ac4ec 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h @@ -120,44 +120,38 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { //}; /*struct TableDeviceConst { - typename ArrayTypes::t_ffloat_2d_randomread cutsq; - typename ArrayTypes::t_int_2d_randomread tabindex; - typename ArrayTypes::t_ffloat_1d_randomread innersq,invdelta,deltasq6; - typename ArrayTypes::t_ffloat_2d_randomread rsq,drsq,e,de,f,df,e2,f2; + typename AT::t_int_2d_randomread tabindex; + typename AT::t_ffloat_1d_randomread innersq,invdelta; + typename AT::t_ffloat_2d_randomread rsq,e,de,f,df; };*/ //Its faster not to use texture fetch if the number of tables is less than 32! struct TableDeviceConst { - typename ArrayTypes::t_ffloat_2d cutsq; - typename ArrayTypes::t_int_2d tabindex; - typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; - typename ArrayTypes::t_ffloat_2d_randomread rsq,drsq,e,de,f,df,e2,f2; + typename AT::t_int_2d tabindex; + typename AT::t_ffloat_1d innersq,invdelta; + typename AT::t_ffloat_2d_randomread rsq,e,de,f,df; }; struct TableDevice { - typename ArrayTypes::t_ffloat_2d cutsq; - typename ArrayTypes::t_int_2d tabindex; - typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; - typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; + typename AT::t_int_2d tabindex; + typename AT::t_ffloat_1d innersq,invdelta; + typename AT::t_ffloat_2d rsq,e,de,f,df; }; struct TableHost { - typename ArrayTypes::t_ffloat_2d cutsq; - typename ArrayTypes::t_int_2d tabindex; - typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; - typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; + HAT::t_int_2d tabindex; + HAT::t_ffloat_1d innersq,invdelta; + HAT::t_ffloat_2d rsq,e,de,f,df; }; TableDeviceConst d_table_const; TableDevice* d_table; TableHost* h_table; - int **tabindex; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; void allocate(); int update_table; void create_kokkos_tables(); - void cleanup_copy(); KOKKOS_INLINE_FUNCTION void getParams(int, double &, double &, double &, double &) const; diff --git a/src/USER-DPD/pair_multi_lucy_rx.h b/src/USER-DPD/pair_multi_lucy_rx.h index 2913716c5a..0562739c50 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.h +++ b/src/USER-DPD/pair_multi_lucy_rx.h @@ -30,17 +30,17 @@ class PairMultiLucyRX : public Pair { virtual ~PairMultiLucyRX(); virtual void compute(int, int); - void settings(int, char **); + virtual void settings(int, char **); void coeff(int, char **); double init_one(int, int); void write_restart(FILE *); void read_restart(FILE *); void write_restart_settings(FILE *); void read_restart_settings(FILE *); - int pack_forward_comm(int, int *, double *, int, int *); - void unpack_forward_comm(int, int, double *); - int pack_reverse_comm(int, int, double *); - void unpack_reverse_comm(int, int *, double *); + virtual int pack_forward_comm(int, int *, double *, int, int *); + virtual void unpack_forward_comm(int, int, double *); + virtual int pack_reverse_comm(int, int, double *); + virtual void unpack_reverse_comm(int, int *, double *); void computeLocalDensity(); double rho_0; @@ -64,7 +64,7 @@ class PairMultiLucyRX : public Pair { int **tabindex; - void allocate(); + virtual void allocate(); void read_table(Table *, char *, char *); void param_extract(Table *, char *); void bcast_table(Table *); -- GitLab From a4ab877c4672b919ed5807864f5db726ef522926 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 22 Dec 2016 13:16:57 -0700 Subject: [PATCH 031/337] Change to allow pair_dpd_fdt_energy_kokkos --- src/USER-DPD/fix_dpd_energy.cpp | 2 ++ src/USER-DPD/fix_rx.cpp | 3 +++ src/USER-DPD/fix_shardlow.cpp | 2 ++ 3 files changed, 7 insertions(+) diff --git a/src/USER-DPD/fix_dpd_energy.cpp b/src/USER-DPD/fix_dpd_energy.cpp index 05907a5fcf..475e12f02f 100644 --- a/src/USER-DPD/fix_dpd_energy.cpp +++ b/src/USER-DPD/fix_dpd_energy.cpp @@ -34,6 +34,8 @@ FixDPDenergy::FixDPDenergy(LAMMPS *lmp, int narg, char **arg) : pairDPDE = NULL; pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1); + if (pairDPDE == NULL) + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy/kk",1); if (pairDPDE == NULL) error->all(FLERR,"Must use pair_style dpd/fdt/energy with fix dpd/energy"); diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index df67cf4035..0bd560b241 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -627,6 +627,9 @@ int FixRX::setmask() void FixRX::init() { pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1); + if (pairDPDE == NULL) + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy/kk",1); + if (pairDPDE == NULL) error->all(FLERR,"Must use pair_style dpd/fdt/energy with fix rx"); diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 28c5382237..541f4ba3c3 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -94,6 +94,8 @@ FixShardlow::FixShardlow(LAMMPS *lmp, int narg, char **arg) : pairDPDE = NULL; pairDPD = (PairDPDfdt *) force->pair_match("dpd/fdt",1); pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1); + if (pairDPDE == NULL) + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy/kk",1); if(pairDPDE){ comm_forward = 3; -- GitLab From a36e563aa56e8e3a31f19f8b010301c3b170b941 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 22 Dec 2016 14:37:42 -0700 Subject: [PATCH 032/337] Temporarily reverting change to pair_table_kokkos to allow runtime testing --- src/KOKKOS/pair_table_kokkos.cpp | 758 ++++++++++++++++++++++++++++++- src/KOKKOS/pair_table_kokkos.h | 44 +- 2 files changed, 790 insertions(+), 12 deletions(-) diff --git a/src/KOKKOS/pair_table_kokkos.cpp b/src/KOKKOS/pair_table_kokkos.cpp index b8b647964c..5230d1a91f 100644 --- a/src/KOKKOS/pair_table_kokkos.cpp +++ b/src/KOKKOS/pair_table_kokkos.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Christian Trott (SNL) + Contributing author: Paul Crozier (SNL) ------------------------------------------------------------------------- */ #include @@ -41,7 +41,7 @@ enum{FULL,HALFTHREAD,HALF}; /* ---------------------------------------------------------------------- */ template -PairTableKokkos::PairTableKokkos(LAMMPS *lmp) : PairTable(lmp) +PairTableKokkos::PairTableKokkos(LAMMPS *lmp) : Pair(lmp) { update_table = 0; atomKK = (AtomKokkos *) atom; @@ -98,7 +98,6 @@ void PairTableKokkos::compute_style(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; @@ -196,7 +195,6 @@ compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, c //if (rsq < d_table_const.innersq(tidx)) // error->one(FLERR,"Pair distance < table inner cutoff"); - if (Specialisation::TabStyle == LOOKUP) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); //if (itable >= tlm1) @@ -314,6 +312,8 @@ void PairTableKokkos::create_kokkos_tables() memory->create_kokkos(d_table->drsq,h_table->drsq,ntables,ntable,"Table::drsq"); } + + for(int i=0; i < ntables; i++) { Table* tb = &tables[i]; @@ -451,6 +451,85 @@ void PairTableKokkos::settings(int narg, char **arg) tables = NULL; } +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::coeff(int narg, char **arg) +{ + if (narg != 4 && narg != 5) error->all(FLERR,"Illegal pair_coeff command"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + int me; + MPI_Comm_rank(world,&me); + tables = (Table *) + memory->srealloc(tables,(ntables+1)*sizeof(Table),"pair:tables"); + Table *tb = &tables[ntables]; + null_table(tb); + if (me == 0) read_table(tb,arg[2],arg[3]); + bcast_table(tb); + + // set table cutoff + + if (narg == 5) tb->cut = force->numeric(FLERR,arg[4]); + else if (tb->rflag) tb->cut = tb->rhi; + else tb->cut = tb->rfile[tb->ninput-1]; + + // error check on table parameters + // insure cutoff is within table + // for BITMAP tables, file values can be in non-ascending order + + if (tb->ninput <= 1) error->one(FLERR,"Invalid pair table length"); + double rlo,rhi; + if (tb->rflag == 0) { + rlo = tb->rfile[0]; + rhi = tb->rfile[tb->ninput-1]; + } else { + rlo = tb->rlo; + rhi = tb->rhi; + } + if (tb->cut <= rlo || tb->cut > rhi) + error->all(FLERR,"Invalid pair table cutoff"); + if (rlo <= 0.0) error->all(FLERR,"Invalid pair table cutoff"); + + // match = 1 if don't need to spline read-in tables + // this is only the case if r values needed by final tables + // exactly match r values read from file + // for tabstyle SPLINE, always need to build spline tables + + tb->match = 0; + if (tabstyle == LINEAR && tb->ninput == tablength && + tb->rflag == RSQ && tb->rhi == tb->cut) tb->match = 1; + if (tabstyle == BITMAP && tb->ninput == 1 << tablength && + tb->rflag == BMP && tb->rhi == tb->cut) tb->match = 1; + if (tb->rflag == BMP && tb->match == 0) + error->all(FLERR,"Bitmapped table in file does not match requested table"); + + // spline read-in values and compute r,e,f vectors within table + + if (tb->match == 0) spline_table(tb); + compute_table(tb); + + // store ptr to table in tabindex + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + tabindex[i][j] = ntables; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) error->all(FLERR,"Illegal pair_coeff command"); + ntables++; +} + /* ---------------------------------------------------------------------- init for one type pair i,j and corresponding j,i ------------------------------------------------------------------------- */ @@ -469,6 +548,677 @@ double PairTableKokkos::init_one(int i, int j) return tables[tabindex[i][j]].cut; } +/* ---------------------------------------------------------------------- + read a table section from a tabulated potential file + only called by proc 0 + this function sets these values in Table: + ninput,rfile,efile,ffile,rflag,rlo,rhi,fpflag,fplo,fphi,ntablebits +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::read_table(Table *tb, char *file, char *keyword) +{ + char line[MAXLINE]; + + // open file + + FILE *fp = force->open_potential(file); + if (fp == NULL) { + char str[128]; + sprintf(str,"Cannot open file %s",file); + error->one(FLERR,str); + } + + // loop until section found with matching keyword + + while (1) { + if (fgets(line,MAXLINE,fp) == NULL) + error->one(FLERR,"Did not find keyword in table file"); + if (strspn(line," \t\n\r") == strlen(line)) continue; // blank line + if (line[0] == '#') continue; // comment + char *word = strtok(line," \t\n\r"); + if (strcmp(word,keyword) == 0) break; // matching keyword + fgets(line,MAXLINE,fp); // no match, skip section + param_extract(tb,line); + fgets(line,MAXLINE,fp); + for (int i = 0; i < tb->ninput; i++) fgets(line,MAXLINE,fp); + } + + // read args on 2nd line of section + // allocate table arrays for file values + + fgets(line,MAXLINE,fp); + param_extract(tb,line); + memory->create(tb->rfile,tb->ninput,"pair:rfile"); + memory->create(tb->efile,tb->ninput,"pair:efile"); + memory->create(tb->ffile,tb->ninput,"pair:ffile"); + + // setup bitmap parameters for table to read in + + tb->ntablebits = 0; + int masklo,maskhi,nmask,nshiftbits; + if (tb->rflag == BMP) { + while (1 << tb->ntablebits < tb->ninput) tb->ntablebits++; + if (1 << tb->ntablebits != tb->ninput) + error->one(FLERR,"Bitmapped table is incorrect length in table file"); + init_bitmap(tb->rlo,tb->rhi,tb->ntablebits,masklo,maskhi,nmask,nshiftbits); + } + + // read r,e,f table values from file + // if rflag set, compute r + // if rflag not set, use r from file + + int itmp; + double rtmp; + union_int_float_t rsq_lookup; + + fgets(line,MAXLINE,fp); + for (int i = 0; i < tb->ninput; i++) { + fgets(line,MAXLINE,fp); + sscanf(line,"%d %lg %lg %lg",&itmp,&rtmp,&tb->efile[i],&tb->ffile[i]); + + if (tb->rflag == RLINEAR) + rtmp = tb->rlo + (tb->rhi - tb->rlo)*i/(tb->ninput-1); + else if (tb->rflag == RSQ) { + rtmp = tb->rlo*tb->rlo + + (tb->rhi*tb->rhi - tb->rlo*tb->rlo)*i/(tb->ninput-1); + rtmp = sqrt(rtmp); + } else if (tb->rflag == BMP) { + rsq_lookup.i = i << nshiftbits; + rsq_lookup.i |= masklo; + if (rsq_lookup.f < tb->rlo*tb->rlo) { + rsq_lookup.i = i << nshiftbits; + rsq_lookup.i |= maskhi; + } + rtmp = sqrtf(rsq_lookup.f); + } + + tb->rfile[i] = rtmp; + } + + // close file + + fclose(fp); +} + +/* ---------------------------------------------------------------------- + broadcast read-in table info from proc 0 to other procs + this function communicates these values in Table: + ninput,rfile,efile,ffile,rflag,rlo,rhi,fpflag,fplo,fphi +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::bcast_table(Table *tb) +{ + MPI_Bcast(&tb->ninput,1,MPI_INT,0,world); + + int me; + MPI_Comm_rank(world,&me); + if (me > 0) { + memory->create(tb->rfile,tb->ninput,"pair:rfile"); + memory->create(tb->efile,tb->ninput,"pair:efile"); + memory->create(tb->ffile,tb->ninput,"pair:ffile"); + } + + MPI_Bcast(tb->rfile,tb->ninput,MPI_DOUBLE,0,world); + MPI_Bcast(tb->efile,tb->ninput,MPI_DOUBLE,0,world); + MPI_Bcast(tb->ffile,tb->ninput,MPI_DOUBLE,0,world); + + MPI_Bcast(&tb->rflag,1,MPI_INT,0,world); + if (tb->rflag) { + MPI_Bcast(&tb->rlo,1,MPI_DOUBLE,0,world); + MPI_Bcast(&tb->rhi,1,MPI_DOUBLE,0,world); + } + MPI_Bcast(&tb->fpflag,1,MPI_INT,0,world); + if (tb->fpflag) { + MPI_Bcast(&tb->fplo,1,MPI_DOUBLE,0,world); + MPI_Bcast(&tb->fphi,1,MPI_DOUBLE,0,world); + } +} + +/* ---------------------------------------------------------------------- + build spline representation of e,f over entire range of read-in table + this function sets these values in Table: e2file,f2file +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::spline_table(Table *tb) +{ + memory->create(tb->e2file,tb->ninput,"pair:e2file"); + memory->create(tb->f2file,tb->ninput,"pair:f2file"); + + double ep0 = - tb->ffile[0]; + double epn = - tb->ffile[tb->ninput-1]; + spline(tb->rfile,tb->efile,tb->ninput,ep0,epn,tb->e2file); + + if (tb->fpflag == 0) { + tb->fplo = (tb->ffile[1] - tb->ffile[0]) / (tb->rfile[1] - tb->rfile[0]); + tb->fphi = (tb->ffile[tb->ninput-1] - tb->ffile[tb->ninput-2]) / + (tb->rfile[tb->ninput-1] - tb->rfile[tb->ninput-2]); + } + + double fp0 = tb->fplo; + double fpn = tb->fphi; + spline(tb->rfile,tb->ffile,tb->ninput,fp0,fpn,tb->f2file); +} + +/* ---------------------------------------------------------------------- + extract attributes from parameter line in table section + format of line: N value R/RSQ/BITMAP lo hi FP fplo fphi + N is required, other params are optional +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::param_extract(Table *tb, char *line) +{ + tb->ninput = 0; + tb->rflag = NONE; + tb->fpflag = 0; + + char *word = strtok(line," \t\n\r\f"); + while (word) { + if (strcmp(word,"N") == 0) { + word = strtok(NULL," \t\n\r\f"); + tb->ninput = atoi(word); + } else if (strcmp(word,"R") == 0 || strcmp(word,"RSQ") == 0 || + strcmp(word,"BITMAP") == 0) { + if (strcmp(word,"R") == 0) tb->rflag = RLINEAR; + else if (strcmp(word,"RSQ") == 0) tb->rflag = RSQ; + else if (strcmp(word,"BITMAP") == 0) tb->rflag = BMP; + word = strtok(NULL," \t\n\r\f"); + tb->rlo = atof(word); + word = strtok(NULL," \t\n\r\f"); + tb->rhi = atof(word); + } else if (strcmp(word,"FP") == 0) { + tb->fpflag = 1; + word = strtok(NULL," \t\n\r\f"); + tb->fplo = atof(word); + word = strtok(NULL," \t\n\r\f"); + tb->fphi = atof(word); + } else { + error->one(FLERR,"Invalid keyword in pair table parameters"); + } + word = strtok(NULL," \t\n\r\f"); + } + + if (tb->ninput == 0) error->one(FLERR,"Pair table parameters did not set N"); +} + +/* ---------------------------------------------------------------------- + compute r,e,f vectors from splined values +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::compute_table(Table *tb) +{ + update_table = 1; + int tlm1 = tablength-1; + + // inner = inner table bound + // cut = outer table bound + // delta = table spacing in rsq for N-1 bins + + double inner; + if (tb->rflag) inner = tb->rlo; + else inner = tb->rfile[0]; + tb->innersq = inner*inner; + tb->delta = (tb->cut*tb->cut - tb->innersq) / tlm1; + tb->invdelta = 1.0/tb->delta; + + // direct lookup tables + // N-1 evenly spaced bins in rsq from inner to cut + // e,f = value at midpt of bin + // e,f are N-1 in length since store 1 value at bin midpt + // f is converted to f/r when stored in f[i] + // e,f are never a match to read-in values, always computed via spline interp + + if (tabstyle == LOOKUP) { + memory->create(tb->e,tlm1,"pair:e"); + memory->create(tb->f,tlm1,"pair:f"); + + double r,rsq; + for (int i = 0; i < tlm1; i++) { + rsq = tb->innersq + (i+0.5)*tb->delta; + r = sqrt(rsq); + tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); + tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; + } + } + + // linear tables + // N-1 evenly spaced bins in rsq from inner to cut + // rsq,e,f = value at lower edge of bin + // de,df values = delta from lower edge to upper edge of bin + // rsq,e,f are N in length so de,df arrays can compute difference + // f is converted to f/r when stored in f[i] + // e,f can match read-in values, else compute via spline interp + + if (tabstyle == LINEAR) { + memory->create(tb->rsq,tablength,"pair:rsq"); + memory->create(tb->e,tablength,"pair:e"); + memory->create(tb->f,tablength,"pair:f"); + memory->create(tb->de,tlm1,"pair:de"); + memory->create(tb->df,tlm1,"pair:df"); + + double r,rsq; + for (int i = 0; i < tablength; i++) { + rsq = tb->innersq + i*tb->delta; + r = sqrt(rsq); + tb->rsq[i] = rsq; + if (tb->match) { + tb->e[i] = tb->efile[i]; + tb->f[i] = tb->ffile[i]/r; + } else { + tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); + tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; + } + } + + for (int i = 0; i < tlm1; i++) { + tb->de[i] = tb->e[i+1] - tb->e[i]; + tb->df[i] = tb->f[i+1] - tb->f[i]; + } + } + + // cubic spline tables + // N-1 evenly spaced bins in rsq from inner to cut + // rsq,e,f = value at lower edge of bin + // e2,f2 = spline coefficient for each bin + // rsq,e,f,e2,f2 are N in length so have N-1 spline bins + // f is converted to f/r after e is splined + // e,f can match read-in values, else compute via spline interp + + if (tabstyle == SPLINE) { + memory->create(tb->rsq,tablength,"pair:rsq"); + memory->create(tb->e,tablength,"pair:e"); + memory->create(tb->f,tablength,"pair:f"); + memory->create(tb->e2,tablength,"pair:e2"); + memory->create(tb->f2,tablength,"pair:f2"); + + tb->deltasq6 = tb->delta*tb->delta / 6.0; + + double r,rsq; + for (int i = 0; i < tablength; i++) { + rsq = tb->innersq + i*tb->delta; + r = sqrt(rsq); + tb->rsq[i] = rsq; + if (tb->match) { + tb->e[i] = tb->efile[i]; + tb->f[i] = tb->ffile[i]/r; + } else { + tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); + tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r); + } + } + + // ep0,epn = dh/dg at inner and at cut + // h(r) = e(r) and g(r) = r^2 + // dh/dg = (de/dr) / 2r = -f/2r + + double ep0 = - tb->f[0] / (2.0 * sqrt(tb->innersq)); + double epn = - tb->f[tlm1] / (2.0 * tb->cut); + spline(tb->rsq,tb->e,tablength,ep0,epn,tb->e2); + + // fp0,fpn = dh/dg at inner and at cut + // h(r) = f(r)/r and g(r) = r^2 + // dh/dg = (1/r df/dr - f/r^2) / 2r + // dh/dg in secant approx = (f(r2)/r2 - f(r1)/r1) / (g(r2) - g(r1)) + + double fp0,fpn; + double secant_factor = 0.1; + if (tb->fpflag) fp0 = (tb->fplo/sqrt(tb->innersq) - tb->f[0]/tb->innersq) / + (2.0 * sqrt(tb->innersq)); + else { + double rsq1 = tb->innersq; + double rsq2 = rsq1 + secant_factor*tb->delta; + fp0 = (splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq2)) / + sqrt(rsq2) - tb->f[0] / sqrt(rsq1)) / (secant_factor*tb->delta); + } + + if (tb->fpflag && tb->cut == tb->rfile[tb->ninput-1]) fpn = + (tb->fphi/tb->cut - tb->f[tlm1]/(tb->cut*tb->cut)) / (2.0 * tb->cut); + else { + double rsq2 = tb->cut * tb->cut; + double rsq1 = rsq2 - secant_factor*tb->delta; + fpn = (tb->f[tlm1] / sqrt(rsq2) - + splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq1)) / + sqrt(rsq1)) / (secant_factor*tb->delta); + } + + for (int i = 0; i < tablength; i++) tb->f[i] /= sqrt(tb->rsq[i]); + spline(tb->rsq,tb->f,tablength,fp0,fpn,tb->f2); + } + + // bitmapped linear tables + // 2^N bins from inner to cut, spaced in bitmapped manner + // f is converted to f/r when stored in f[i] + // e,f can match read-in values, else compute via spline interp + + if (tabstyle == BITMAP) { + double r; + union_int_float_t rsq_lookup; + int masklo,maskhi; + + // linear lookup tables of length ntable = 2^n + // stored value = value at lower edge of bin + + init_bitmap(inner,tb->cut,tablength,masklo,maskhi,tb->nmask,tb->nshiftbits); + int ntable = 1 << tablength; + int ntablem1 = ntable - 1; + + memory->create(tb->rsq,ntable,"pair:rsq"); + memory->create(tb->e,ntable,"pair:e"); + memory->create(tb->f,ntable,"pair:f"); + memory->create(tb->de,ntable,"pair:de"); + memory->create(tb->df,ntable,"pair:df"); + memory->create(tb->drsq,ntable,"pair:drsq"); + + union_int_float_t minrsq_lookup; + minrsq_lookup.i = 0 << tb->nshiftbits; + minrsq_lookup.i |= maskhi; + + for (int i = 0; i < ntable; i++) { + rsq_lookup.i = i << tb->nshiftbits; + rsq_lookup.i |= masklo; + if (rsq_lookup.f < tb->innersq) { + rsq_lookup.i = i << tb->nshiftbits; + rsq_lookup.i |= maskhi; + } + r = sqrtf(rsq_lookup.f); + tb->rsq[i] = rsq_lookup.f; + if (tb->match) { + tb->e[i] = tb->efile[i]; + tb->f[i] = tb->ffile[i]/r; + } else { + tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); + tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; + } + minrsq_lookup.f = MIN(minrsq_lookup.f,rsq_lookup.f); + } + + tb->innersq = minrsq_lookup.f; + + for (int i = 0; i < ntablem1; i++) { + tb->de[i] = tb->e[i+1] - tb->e[i]; + tb->df[i] = tb->f[i+1] - tb->f[i]; + tb->drsq[i] = 1.0/(tb->rsq[i+1] - tb->rsq[i]); + } + + // get the delta values for the last table entries + // tables are connected periodically between 0 and ntablem1 + + tb->de[ntablem1] = tb->e[0] - tb->e[ntablem1]; + tb->df[ntablem1] = tb->f[0] - tb->f[ntablem1]; + tb->drsq[ntablem1] = 1.0/(tb->rsq[0] - tb->rsq[ntablem1]); + + // get the correct delta values at itablemax + // smallest r is in bin itablemin + // largest r is in bin itablemax, which is itablemin-1, + // or ntablem1 if itablemin=0 + + // deltas at itablemax only needed if corresponding rsq < cut*cut + // if so, compute deltas between rsq and cut*cut + // if tb->match, data at cut*cut is unavailable, so we'll take + // deltas at itablemax-1 as a good approximation + + double e_tmp,f_tmp; + int itablemin = minrsq_lookup.i & tb->nmask; + itablemin >>= tb->nshiftbits; + int itablemax = itablemin - 1; + if (itablemin == 0) itablemax = ntablem1; + int itablemaxm1 = itablemax - 1; + if (itablemax == 0) itablemaxm1 = ntablem1; + rsq_lookup.i = itablemax << tb->nshiftbits; + rsq_lookup.i |= maskhi; + if (rsq_lookup.f < tb->cut*tb->cut) { + if (tb->match) { + tb->de[itablemax] = tb->de[itablemaxm1]; + tb->df[itablemax] = tb->df[itablemaxm1]; + tb->drsq[itablemax] = tb->drsq[itablemaxm1]; + } else { + rsq_lookup.f = tb->cut*tb->cut; + r = sqrtf(rsq_lookup.f); + e_tmp = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); + f_tmp = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; + tb->de[itablemax] = e_tmp - tb->e[itablemax]; + tb->df[itablemax] = f_tmp - tb->f[itablemax]; + tb->drsq[itablemax] = 1.0/(rsq_lookup.f - tb->rsq[itablemax]); + } + } + } +} + +/* ---------------------------------------------------------------------- + set all ptrs in a table to NULL, so can be freed safely +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::null_table(Table *tb) +{ + tb->rfile = tb->efile = tb->ffile = NULL; + tb->e2file = tb->f2file = NULL; + tb->rsq = tb->drsq = tb->e = tb->de = NULL; + tb->f = tb->df = tb->e2 = tb->f2 = NULL; +} + +/* ---------------------------------------------------------------------- + free all arrays in a table +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::free_table(Table *tb) +{ + memory->destroy(tb->rfile); + memory->destroy(tb->efile); + memory->destroy(tb->ffile); + memory->destroy(tb->e2file); + memory->destroy(tb->f2file); + + memory->destroy(tb->rsq); + memory->destroy(tb->drsq); + memory->destroy(tb->e); + memory->destroy(tb->de); + memory->destroy(tb->f); + memory->destroy(tb->df); + memory->destroy(tb->e2); + memory->destroy(tb->f2); +} + +/* ---------------------------------------------------------------------- + spline and splint routines modified from Numerical Recipes +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::spline(double *x, double *y, int n, + double yp1, double ypn, double *y2) +{ + int i,k; + double p,qn,sig,un; + double *u = new double[n]; + + if (yp1 > 0.99e30) y2[0] = u[0] = 0.0; + else { + y2[0] = -0.5; + u[0] = (3.0/(x[1]-x[0])) * ((y[1]-y[0]) / (x[1]-x[0]) - yp1); + } + for (i = 1; i < n-1; i++) { + sig = (x[i]-x[i-1]) / (x[i+1]-x[i-1]); + p = sig*y2[i-1] + 2.0; + y2[i] = (sig-1.0) / p; + u[i] = (y[i+1]-y[i]) / (x[i+1]-x[i]) - (y[i]-y[i-1]) / (x[i]-x[i-1]); + u[i] = (6.0*u[i] / (x[i+1]-x[i-1]) - sig*u[i-1]) / p; + } + if (ypn > 0.99e30) qn = un = 0.0; + else { + qn = 0.5; + un = (3.0/(x[n-1]-x[n-2])) * (ypn - (y[n-1]-y[n-2]) / (x[n-1]-x[n-2])); + } + y2[n-1] = (un-qn*u[n-2]) / (qn*y2[n-2] + 1.0); + for (k = n-2; k >= 0; k--) y2[k] = y2[k]*y2[k+1] + u[k]; + + delete [] u; +} + +/* ---------------------------------------------------------------------- */ + +template +double PairTableKokkos::splint(double *xa, double *ya, double *y2a, int n, double x) +{ + int klo,khi,k; + double h,b,a,y; + + klo = 0; + khi = n-1; + while (khi-klo > 1) { + k = (khi+klo) >> 1; + if (xa[k] > x) khi = k; + else klo = k; + } + h = xa[khi]-xa[klo]; + a = (xa[khi]-x) / h; + b = (x-xa[klo]) / h; + y = a*ya[klo] + b*ya[khi] + + ((a*a*a-a)*y2a[klo] + (b*b*b-b)*y2a[khi]) * (h*h)/6.0; + return y; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::write_restart(FILE *fp) +{ + write_restart_settings(fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::read_restart(FILE *fp) +{ + read_restart_settings(fp); + allocate(); +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::write_restart_settings(FILE *fp) +{ + fwrite(&tabstyle,sizeof(int),1,fp); + fwrite(&tablength,sizeof(int),1,fp); + fwrite(&ewaldflag,sizeof(int),1,fp); + fwrite(&pppmflag,sizeof(int),1,fp); + fwrite(&msmflag,sizeof(int),1,fp); + fwrite(&dispersionflag,sizeof(int),1,fp); + fwrite(&tip4pflag,sizeof(int),1,fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +template +void PairTableKokkos::read_restart_settings(FILE *fp) +{ + if (comm->me == 0) { + fread(&tabstyle,sizeof(int),1,fp); + fread(&tablength,sizeof(int),1,fp); + fread(&ewaldflag,sizeof(int),1,fp); + fread(&pppmflag,sizeof(int),1,fp); + fread(&msmflag,sizeof(int),1,fp); + fread(&dispersionflag,sizeof(int),1,fp); + fread(&tip4pflag,sizeof(int),1,fp); + } + MPI_Bcast(&tabstyle,1,MPI_INT,0,world); + MPI_Bcast(&tablength,1,MPI_INT,0,world); + MPI_Bcast(&ewaldflag,1,MPI_INT,0,world); + MPI_Bcast(&pppmflag,1,MPI_INT,0,world); + MPI_Bcast(&msmflag,1,MPI_INT,0,world); + MPI_Bcast(&dispersionflag,1,MPI_INT,0,world); + MPI_Bcast(&tip4pflag,1,MPI_INT,0,world); +} + +/* ---------------------------------------------------------------------- */ + +template +double PairTableKokkos::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + int itable; + double fraction,value,a,b,phi; + int tlm1 = tablength - 1; + + Table *tb = &tables[tabindex[itype][jtype]]; + if (rsq < tb->innersq) error->one(FLERR,"Pair distance < table inner cutoff"); + + if (tabstyle == LOOKUP) { + itable = static_cast ((rsq-tb->innersq) * tb->invdelta); + if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); + fforce = factor_lj * tb->f[itable]; + } else if (tabstyle == LINEAR) { + itable = static_cast ((rsq-tb->innersq) * tb->invdelta); + if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); + fraction = (rsq - tb->rsq[itable]) * tb->invdelta; + value = tb->f[itable] + fraction*tb->df[itable]; + fforce = factor_lj * value; + } else if (tabstyle == SPLINE) { + itable = static_cast ((rsq-tb->innersq) * tb->invdelta); + if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); + b = (rsq - tb->rsq[itable]) * tb->invdelta; + a = 1.0 - b; + value = a * tb->f[itable] + b * tb->f[itable+1] + + ((a*a*a-a)*tb->f2[itable] + (b*b*b-b)*tb->f2[itable+1]) * + tb->deltasq6; + fforce = factor_lj * value; + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & tb->nmask; + itable >>= tb->nshiftbits; + fraction = (rsq_lookup.f - tb->rsq[itable]) * tb->drsq[itable]; + value = tb->f[itable] + fraction*tb->df[itable]; + fforce = factor_lj * value; + } + + if (tabstyle == LOOKUP) + phi = tb->e[itable]; + else if (tabstyle == LINEAR || tabstyle == BITMAP) + phi = tb->e[itable] + fraction*tb->de[itable]; + else + phi = a * tb->e[itable] + b * tb->e[itable+1] + + ((a*a*a-a)*tb->e2[itable] + (b*b*b-b)*tb->e2[itable+1]) * tb->deltasq6; + return factor_lj*phi; +} + +/* ---------------------------------------------------------------------- + return the Coulomb cutoff for tabled potentials + called by KSpace solvers which require that all pairwise cutoffs be the same + loop over all tables not just those indexed by tabindex[i][j] since + no way to know which tables are active since pair::init() not yet called +------------------------------------------------------------------------- */ + +template +void *PairTableKokkos::extract(const char *str, int &dim) +{ + if (strcmp(str,"cut_coul") != 0) return NULL; + if (ntables == 0) error->all(FLERR,"All pair coeffs are not set"); + + double cut_coul = tables[0].cut; + for (int m = 1; m < ntables; m++) + if (tables[m].cut != cut_coul) + error->all(FLERR, + "Pair table cutoffs must all be equal to use with KSpace"); + dim = 0; + return &tables[0].cut; +} + template void PairTableKokkos::init_style() { diff --git a/src/KOKKOS/pair_table_kokkos.h b/src/KOKKOS/pair_table_kokkos.h index 5b3f3852c3..4d3a9ec106 100644 --- a/src/KOKKOS/pair_table_kokkos.h +++ b/src/KOKKOS/pair_table_kokkos.h @@ -22,7 +22,7 @@ PairStyle(table/kk/host,PairTableKokkos) #ifndef LMP_PAIR_TABLE_KOKKOS_H #define LMP_PAIR_TABLE_KOKKOS_H -#include "pair_table.h" +#include "pair.h" #include "pair_kokkos.h" #include "neigh_list_kokkos.h" #include "atom_kokkos.h" @@ -38,7 +38,7 @@ template class PairTableComputeFunctor; template -class PairTableKokkos : public PairTable { +class PairTableKokkos : public Pair { public: enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2}; @@ -59,9 +59,18 @@ class PairTableKokkos : public PairTable { const NeighListKokkos &list) const; */ void settings(int, char **); + void coeff(int, char **); double init_one(int, int); + void write_restart(FILE *); + void read_restart(FILE *); + void write_restart_settings(FILE *); + void read_restart_settings(FILE *); + double single(int, int, int, int, double, double, double, double &); + void *extract(const char *, int &); + void init_style(); + protected: enum{LOOKUP,LINEAR,SPLINE,BITMAP}; @@ -98,6 +107,17 @@ class PairTableKokkos : public PairTable { typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; }; + struct Table { + int ninput,rflag,fpflag,match,ntablebits; + int nshiftbits,nmask; + double rlo,rhi,fplo,fphi,cut; + double *rfile,*efile,*ffile; + double *e2file,*f2file; + double innersq,delta,invdelta,deltasq6; + double *rsq,*drsq,*e,*de,*f,*df,*e2,*f2; + }; + int ntables; + Table *tables; TableDeviceConst d_table_const; TableDevice* d_table; TableHost* h_table; @@ -108,6 +128,15 @@ class PairTableKokkos : public PairTable { typename ArrayTypes::t_ffloat_2d d_cutsq; void allocate(); + void read_table(Table *, char *, char *); + void param_extract(Table *, char *); + void bcast_table(Table *); + void spline_table(Table *); + void compute_table(Table *); + void null_table(Table *); + void free_table(Table *); + void spline(double *, double *, int, double, double, double *); + double splint(double *, double *, double *, int, double); typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array_const c_x; @@ -176,6 +205,11 @@ class PairTableKokkos : public PairTable { friend void pair_virial_fdotr_compute(PairTableKokkos*); }; + + + + + } #endif @@ -255,10 +289,4 @@ E: Cannot use chosen neighbor list style with lj/cut/kk That style is not supported by Kokkos. - - - */ - - - -- GitLab From cc1b55e0310a5a0953d500c1b92b274ac8acf009 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 23 Dec 2016 12:36:05 -0700 Subject: [PATCH 033/337] Merging USER-DPD updates --- doc/src/fix_eos_table_rx.txt | 42 +- doc/src/pair_exp6_rx.txt | 60 ++- doc/src/pair_multi_lucy_rx.txt | 13 +- doc/src/pair_table_rx.txt | 15 +- .../USER/dpd/dpde-vv/log.dpde-vv.reference | 232 ++++----- .../USER/dpd/dpdrx-shardlow/in.dpdrx-shardlow | 2 +- .../log.dpdrx-shardlow.reference | 60 ++- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 40 +- src/USER-DPD/fix_eos_table_rx.cpp | 139 ++++-- src/USER-DPD/fix_eos_table_rx.h | 3 +- src/USER-DPD/fix_rx.cpp | 15 +- src/USER-DPD/pair_exp6_rx.cpp | 449 ++++++++++++------ src/USER-DPD/pair_exp6_rx.h | 13 +- src/USER-DPD/pair_multi_lucy_rx.cpp | 126 +++-- src/USER-DPD/pair_multi_lucy_rx.h | 3 +- src/USER-DPD/pair_table_rx.cpp | 174 ++++--- src/USER-DPD/pair_table_rx.h | 5 +- 17 files changed, 899 insertions(+), 492 deletions(-) diff --git a/doc/src/fix_eos_table_rx.txt b/doc/src/fix_eos_table_rx.txt index f92b405f49..749642f57c 100644 --- a/doc/src/fix_eos_table_rx.txt +++ b/doc/src/fix_eos_table_rx.txt @@ -10,7 +10,7 @@ fix eos/table/rx command :h3 [Syntax:] -fix ID group-ID eos/table/rx style file1 N keyword file2 :pre +fix ID group-ID eos/table/rx style file1 N keyword ... :pre ID, group-ID are documented in "fix"_fix.html command eos/table/rx = style name of this fix command @@ -18,11 +18,16 @@ style = {linear} = method of interpolation file1 = filename containing the tabulated equation of state N = use N values in {linear} tables keyword = name of table keyword correponding to table file -file2 = filename containing the heats of formation of each species :ul +file2 = filename containing the heats of formation of each species (optional) +deltaHf = heat of formation for a single species in energy units (optional) +energyCorr = energy correction in energy units (optional) +tempCorrCoeff = temperature correction coefficient (optional) :ul [Examples:] -fix 1 all eos/table/rx linear eos.table 10000 KEYWORD thermo.table :pre +fix 1 all eos/table/rx linear eos.table 10000 KEYWORD thermo.table +fix 1 all eos/table/rx linear eos.table 10000 KEYWORD 1.5 +fix 1 all eos/table/rx linear eos.table 10000 KEYWORD 1.5 0.025 0.0 :pre [Description:] @@ -39,7 +44,15 @@ where {m} is the number of species, {c_i,j} is the concentration of species {j} in particle {i}, {u_j} is the internal energy of species j, {DeltaH_f,j} is the heat of formation of species {j}, N is the number of molecules represented by the coarse-grained particle, kb is the -Boltzmann constant, and T is the temperature of the system. +Boltzmann constant, and T is the temperature of the system. Additionally, +it is possible to modify the concentration-dependent particle internal +energy relation by adding an energy correction, temperature-dependent +correction, and/or a molecule-dependent correction. An energy correction can +be specified as a constant (in energy units). A temperature correction can be +specified by multiplying a temperature correction coefficient by the +internal temperature. A molecular correction can be specified by +by multiplying a molecule correction coefficient by the average number of +product gas particles in the coarse-grain particle. Fix {eos/table/rx} creates interpolation tables of length {N} from {m} internal energy values of each species {u_j} listed in a file as a @@ -58,6 +71,14 @@ file is described below. The second filename specifies a file containing heat of formation {DeltaH_f,j} for each species. +In cases where the coarse-grain particle represents a single molecular +species (i.e., no reactions occur and fix {rx} is not present in the input file), +fix {eos/table/rx} can be applied in a similar manner to fix {eos/table} +within a non-reactive DPD simulation. In this case, the heat of formation +filename is replaced with the heat of formation value for the single species. +Additionally, the energy correction and temperature correction coefficients may +also be specified as fix arguments. + :line The format of a tabulated file is as follows (without the @@ -116,6 +137,19 @@ Note that the species can be listed in any order. The tag that is used as the species name must correspond with the tags used to define the reactions with the "fix rx"_fix_rx.html command. +Alternatively, corrections to the EOS can be included by specifying +three additional columns that correspond to the energy correction, +the temperature correction coefficient and molecule correction +coefficient. In this case, the format of the file is as follows: + +# HEAT OF FORMATION TABLE (one or more comment or blank lines) :pre + (blank) +h2 0.00 1.23 0.025 0.0 (species name, heat of formation, energy correction, temperature correction coefficient, molecule correction coefficient) +no2 0.34 0.00 0.000 -1.76 +n2 0.00 0.00 0.000 -1.76 +... +no 0.93 0.00 0.000 -1.76 :pre + :line [Restrictions:] diff --git a/doc/src/pair_exp6_rx.txt b/doc/src/pair_exp6_rx.txt index 7b22dccc4f..dafba2c44c 100644 --- a/doc/src/pair_exp6_rx.txt +++ b/doc/src/pair_exp6_rx.txt @@ -10,16 +10,21 @@ pair_style exp6/rx command :h3 [Syntax:] -pair_style exp6/rx cutoff :pre +pair_style exp6/rx cutoff ... :pre -cutoff = global cutoff for DPD interactions (distance units) :ul +cutoff = global cutoff for DPD interactions (distance units) +weighting = fractional or molecular (optional) :ul [Examples:] pair_style exp6/rx 10.0 -pair_coeff * * exp6.params h2o h2o 1.0 1.0 10.0 -pair_coeff * * exp6.params h2o 1fluid 1.0 1.0 10.0 -pair_coeff * * exp6.params 1fluid 1fluid 1.0 1.0 10.0 :pre +pair_style exp6/rx 10.0 fractional +pair_style exp6/rx 10.0 molecular +pair_coeff * * exp6.params h2o h2o exponent 1.0 1.0 10.0 +pair_coeff * * exp6.params h2o 1fluid exponent 1.0 1.0 10.0 +pair_coeff * * exp6.params 1fluid 1fluid exponent 1.0 1.0 10.0 +pair_coeff * * exp6.params 1fluid 1fluid none 10.0 +pair_coeff * * exp6.params 1fluid 1fluid polynomial filename 10.0 :pre [Description:] @@ -50,14 +55,36 @@ defined in the reaction kinetics files specified with the "fix rx"_fix_rx.html command or they must correspond to the tag "1fluid", signifying interaction with a product species mixture determined through a one-fluid approximation. The interaction potential is -weighted by the geometric average of the concentrations of the two -species. The coarse-grained potential is stored before and after the +weighted by the geometric average of either the mole fraction concentrations +or the number of molecules associated with the interacting coarse-grained +particles (see the {fractional} or {molecular} weighting pair style options). +The coarse-grained potential is stored before and after the reaction kinetics solver is applied, where the difference is defined to be the internal chemical energy (uChem). -The fourth and fifth arguments specify the {Rm} and {epsilon} scaling exponents. +The fourth argument specifies the type of scaling that will be used +to scale the EXP-6 paramters as reactions occur. Currently, there +are three scaling options: {exponent}, {polynomial} and {none}. -The final argument specifies the interaction cutoff. +Exponent scaling requires two additional arguments for scaling +the {Rm} and {epsilon} parameters, respectively. The scaling factor +is computed by phi^exponent, where phi is the number of molecules +represented by the coarse-grain particle and exponent is specified +as a pair coefficient argument for {Rm} and {epsilon}, respectively. +The {Rm} and {epsilon} parameters are multiplied by the scaling +factor to give the scaled interaction paramters for the CG particle. + +Polynomial scaling requires a filename to be specified as a pair +coeff argument. The file contains the coefficients to a fifth order +polynomial for the {alpha}, {epsilon} and {Rm} parameters that depend +upon phi (the number of molecules represented by the CG particle). +The format of a polynomial file is provided below. + +The {none} option to the scaling does not have any additional pair coeff +arguments. This is equivalent to specifying the {exponent} option with +{Rm} and {epsilon} exponents of 0.0 and 0.0, respectively. + +The final argument specifies the interaction cutoff (optional). :line @@ -70,6 +97,19 @@ no2 exp6 13.60 0.01 3.70 ... co2 exp6 13.00 0.03 3.20 :pre +The format of the polynomial scaling file as follows (without the +parenthesized comments): + +# POLYNOMIAL FILE (one or more comment or blank lines) :pre +# General Functional Form: +# A*phi^5 + B*phi^4 + C*phi^3 + D*phi^2 + E*phi + F +# +# Parameter A B C D E F + (blank) +alpha 0.0000 0.00000 0.00008 0.04955 -0.73804 13.63201 +epsilon 0.0000 0.00478 -0.06283 0.24486 -0.33737 2.60097 +rm 0.0001 -0.00118 -0.00253 0.05812 -0.00509 1.50106 :pre + A section begins with a non-blank line whose 1st character is not a "#"; blank lines or lines starting with "#" can be used as comments between sections. @@ -117,4 +157,4 @@ LAMMPS"_Section_start.html#start_3 section for more info. "pair_coeff"_pair_coeff.html -[Default:] none +[Default:] fractional weighting diff --git a/doc/src/pair_multi_lucy_rx.txt b/doc/src/pair_multi_lucy_rx.txt index 14b5b32181..75547a71ce 100644 --- a/doc/src/pair_multi_lucy_rx.txt +++ b/doc/src/pair_multi_lucy_rx.txt @@ -13,11 +13,14 @@ pair_style multi/lucy/rx command :h3 pair_style multi/lucy/rx style N keyword ... :pre style = {lookup} or {linear} = method of interpolation -N = use N values in {lookup}, {linear} tables :ul +N = use N values in {lookup}, {linear} tables +weighting = fractional or molecular (optional) :ul [Examples:] pair_style multi/lucy/rx linear 1000 +pair_style multi/lucy/rx linear 1000 fractional +pair_style multi/lucy/rx linear 1000 molecular pair_coeff * * multibody.table ENTRY1 h2o h2o 7.0 pair_coeff * * multibody.table ENTRY1 h2o 1fluid 7.0 :pre @@ -94,8 +97,10 @@ tags must either correspond to the species defined in the reaction kinetics files specified with the "fix rx"_fix_rx.html command or they must correspond to the tag "1fluid", signifying interaction with a product species mixture determined through a one-fluid approximation. -The interaction potential is weighted by the geometric average of the -concentrations of the two species. The coarse-grained potential is +The interaction potential is weighted by the geometric average of +either the mole fraction concentrations or the number of molecules +associated with the interacting coarse-grained particles (see the +{fractional} or {molecular} weighting pair style options). The coarse-grained potential is stored before and after the reaction kinetics solver is applied, where the difference is defined to be the internal chemical energy (uChem). @@ -205,7 +210,7 @@ LAMMPS"_Section_start.html#start_3 section for more info. "pair_coeff"_pair_coeff.html -[Default:] none +[Default:] fractional weighting :line diff --git a/doc/src/pair_table_rx.txt b/doc/src/pair_table_rx.txt index e6006f62e2..d089a4f9da 100644 --- a/doc/src/pair_table_rx.txt +++ b/doc/src/pair_table_rx.txt @@ -10,16 +10,17 @@ pair_style table/rx command :h3 [Syntax:] -pair_style table style N :pre +pair_style table style N ... :pre style = {lookup} or {linear} or {spline} or {bitmap} = method of interpolation N = use N values in {lookup}, {linear}, {spline} tables -N = use 2^N values in {bitmap} tables +weighting = fractional or molecular (optional) :ul [Examples:] pair_style table/rx linear 1000 -pair_style table/rx bitmap 12 +pair_style table/rx linear 1000 fractional +pair_style table/rx linear 1000 molecular pair_coeff * * rxn.table ENTRY1 h2o h2o 10.0 pair_coeff * * rxn.table ENTRY1 1fluid 1fluid 10.0 pair_coeff * 3 rxn.table ENTRY1 h2o no2 10.0 :pre @@ -84,8 +85,10 @@ tags must either correspond to the species defined in the reaction kinetics files specified with the "fix rx"_fix_rx.html command or they must correspond to the tag "1fluid", signifying interaction with a product species mixture determined through a one-fluid approximation. -The interaction potential is weighted by the geometric average of the -concentrations of the two species. The coarse-grained potential is +The interaction potential is weighted by the geometric average of +either the mole fraction concentrations or the number of molecules +associated with the interacting coarse-grained particles (see the +{fractional} or {molecular} weighting pair style options). The coarse-grained potential is stored before and after the reaction kinetics solver is applied, where the difference is defined to be the internal chemical energy (uChem). @@ -230,7 +233,7 @@ LAMMPS"_Section_start.html#start_3 section for more info. "pair_coeff"_pair_coeff.html -[Default:] none +[Default:] fractional weighting :line diff --git a/examples/USER/dpd/dpde-vv/log.dpde-vv.reference b/examples/USER/dpd/dpde-vv/log.dpde-vv.reference index 7bc7bda365..800a39f7a5 100644 --- a/examples/USER/dpd/dpde-vv/log.dpde-vv.reference +++ b/examples/USER/dpd/dpde-vv/log.dpde-vv.reference @@ -35,129 +35,133 @@ thermo_modify format float %24.16f run 1000 Neighbor list info ... - 1 neighbor list requests update every 1 steps, delay 0 steps, check no max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 10.6 ghost atom cutoff = 10.6 - binsize = 5.3 -> bins = 25 25 25 -Memory usage per processor = 3.36353 Mbytes + binsize = 5.3, bins = 25 25 25 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair dpd/fdt/energy, perpetual + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Memory usage per processor = 4.28221 Mbytes Step Temp Press PotEng KinEng c_dpdU[1] c_dpdU[2] v_totEnergy c_dpdU[4] - 0 301.4391322267262012 1636.1776395935085020 1188.6488072196075336 394.4722035796053206 7852.5601874986105031 7852.5601874986105031 17288.2413857964347699 299.9999999999841407 - 10 301.4791572483523510 1486.4422375141198245 1188.7147620806101713 394.5245815119678241 7852.5601874999802021 7852.3731942333779443 17288.1727253259377903 299.9960221120699089 - 20 301.4275643919337426 1677.9356110821624952 1188.7839634625399867 394.4570655673388728 7852.5601874999938445 7852.3711851933012440 17288.1724017231754260 299.9955485734552099 - 30 301.2240988054542186 1452.7304951528931269 1188.8550809767796181 394.1908044563202225 7852.5601875000002110 7852.5679666239848302 17288.1740395570850524 299.9988968405210130 - 40 301.1023506886409677 1527.9758363521380033 1188.9264527568634549 394.0314812537677653 7852.5601874999947540 7852.6574764573806533 17288.1755979680056043 300.0001694462812338 - 50 301.0409654880461972 1597.1737251233498682 1188.9944523606982330 393.9511507566391515 7852.5601875000029395 7852.6700547249911324 17288.1758453423317405 299.9999653064982681 - 60 301.2904978886139133 1610.8630327676828529 1189.0651026961211301 394.2776962691256131 7852.5601874999829306 7852.2734988976435488 17288.1764853628737910 299.9919857290491905 - 70 300.8575037843163500 1489.3259312130880971 1189.1295686642290548 393.7110673208616731 7852.5601874999856591 7852.7707182199101226 17288.1715417049854295 300.0010992278233175 - 80 300.5955830326474825 1449.3896097889587509 1189.1880764967559116 393.3683100440913449 7852.5601875000411383 7853.0484238882281716 17288.1649979291178170 300.0059513551503301 - 90 301.0092332775843147 1553.9266324350364812 1189.2470037925052111 393.9096250433288446 7852.5601875000420478 7852.4452067113825251 17288.1620230472581170 299.9940347326859182 - 100 301.0478004479094238 1539.2270336322194453 1189.3010269201699884 393.9600951881690207 7852.5601875000074870 7852.3416236045995902 17288.1629332129450631 299.9916385566916119 - 110 300.9609384905550087 1500.0429484565006533 1189.3524514939088021 393.8464250502817663 7852.5601874999983920 7852.4114980357189779 17288.1705620799075405 299.9925626482005327 - 120 300.9625536631411933 1630.5065919443034090 1189.4006029528841282 393.8485387131115658 7852.5601875000575092 7852.3600810123671181 17288.1694101784196391 299.9911580775880680 - 130 301.0373750247310340 1539.2267307640183844 1189.4426173625224692 393.9464521696795032 7852.5601874999993015 7852.2178388309775983 17288.1670958631802932 299.9879581026651749 - 140 300.7465104415114752 1550.8353679735087098 1189.4887352231000932 393.5658181350791551 7852.5601874999920256 7852.5559582333216895 17288.1706990914935886 299.9939749909034958 - 150 300.6667173911141617 1634.8987162883277051 1189.5368575067818711 393.4613985788388959 7852.5601874999920256 7852.6079668015609059 17288.1664103871735279 299.9946423938895350 - 160 300.4684731724562425 1462.9400882126803936 1189.5825022927965620 393.2019703048678707 7852.5601874999847496 7852.8265187980177870 17288.1711788956672535 299.9983600613423960 - 170 300.1439323338466920 1510.2352578813552100 1189.6305700279478970 392.7772665220106774 7852.5601874999802021 7853.2009671047335360 17288.1689911546709482 300.0051118582463232 - 180 300.1074244553407198 1529.6307083879951279 1189.6764977580119194 392.7294912276224181 7852.5601874999729262 7853.2047509722533505 17288.1709274578606710 300.0047089238623812 - 190 300.4193298066089142 1546.3205495807171701 1189.7172820166240399 393.1376598363699486 7852.5601874999847496 7852.7461854379371289 17288.1613147909156396 299.9954451643528728 - 200 300.3353919251508728 1532.5496449337254035 1189.7600175880224924 393.0278162310690391 7852.5601874999683787 7852.8107089913455638 17288.1587303104060993 299.9962707550171785 - 210 300.3276568499739483 1504.8178651700843602 1189.7998299597820733 393.0176938818990493 7852.5601875000156724 7852.7810130200659842 17288.1587243617614149 299.9953436245502871 - 220 300.5768315696971626 1592.5896084568344122 1189.8391466344742184 393.3437713226064716 7852.5601875000329528 7852.4205574703573802 17288.1636629274726147 299.9880321846658831 - 230 300.6587445618569063 1672.3049358942289473 1189.8766340798690635 393.4509650976162334 7852.5601874999847496 7852.2733199687863817 17288.1611066462573945 299.9848228571166828 - 240 300.7517707836825025 1527.1722267937811921 1189.9126240081129708 393.5727019751183207 7852.5601875000065775 7852.1160682173085661 17288.1615817005440476 299.9814952182625802 - 250 300.8473715548367409 1589.1847713095248764 1189.9441342461948352 393.6978079843565865 7852.5601875000047585 7851.9625847797888127 17288.1647145103452203 299.9782210858571148 - 260 300.8450266408960942 1623.1896863377055524 1189.9636161513917614 393.6947393603111891 7852.5601874999820211 7851.9471828473988353 17288.1657258590821584 299.9775302202895659 - 270 300.6663619570709898 1564.5160171187899323 1189.9764081239700317 393.4609334472908131 7852.5601875000193104 7852.1708276117251444 17288.1683566830033669 299.9812899253168439 - 280 300.7668534205726019 1618.5400526904263643 1189.9872008155405183 393.5924395618274048 7852.5601875000184009 7852.0271568534708422 17288.1669847308585304 299.9781169783826158 - 290 300.8462727198648849 1562.6765776748122789 1189.9918265985252219 393.6963700162682471 7852.5601875000211294 7851.9189772084127981 17288.1673613232269417 299.9756806168044250 - 300 300.8095414073812890 1525.1785808192844343 1189.9873922767767453 393.6483023295390922 7852.5601875000020300 7851.9657301693578120 17288.1616122756749974 299.9761279889730758 - 310 300.9496330741350221 1566.5597234051326723 1189.9752299662607129 393.8316304464934774 7852.5601875000056680 7851.7898117189633922 17288.1568596317229094 299.9723726900590464 - 320 301.2370566356515837 1513.6869483705047514 1189.9626455872523820 394.2077614578674343 7852.5601874999929350 7851.4248466706330873 17288.1554412157456682 299.9650543775110236 - 330 301.3279721508968692 1549.0667862452519330 1189.9513389477854162 394.3267362020337146 7852.5601874999929350 7851.3129955581916875 17288.1512582080031279 299.9625537201162615 - 340 301.1145736537583844 1414.7930515101759283 1189.9408691169965095 394.0474765890400590 7852.5601874999993015 7851.6028846074832472 17288.1514178135184920 299.9677356565828745 - 350 301.1651600907370039 1529.8016115175887535 1189.9314470205476937 394.1136755032911196 7852.5601874999929350 7851.5441417268757505 17288.1494517507089768 299.9662576716461331 - 360 301.0550563185083206 1536.7721716375504002 1189.9200519814730796 393.9695904359920178 7852.5601875000074870 7851.7101209691463737 17288.1599508866202086 299.9690811750865009 - 370 301.1008976932964742 1522.3385843459479929 1189.9109162496640693 394.0295798208944120 7852.5601875000211294 7851.6603423306560217 17288.1610259012340975 299.9677565060027860 - 380 301.1656898730700505 1505.0548721701993600 1189.9005648244351505 394.1143687921909304 7852.5601875000056680 7851.5816827598300733 17288.1568038764598896 299.9659906785156522 - 390 300.8379322662876802 1740.9151205755624687 1189.8851457594087151 393.6854554509390596 7852.5601875000238579 7852.0268864110385039 17288.1576751214088290 299.9741278188615752 - 400 300.8663790447546376 1564.9461156870302148 1189.8690133470408909 393.7226817503372445 7852.5601875000411383 7852.0043792319993372 17288.1562618294192362 299.9732593416579789 - 410 300.6263441860635908 1564.2840871092373618 1189.8566574093877080 393.4085650033033517 7852.5601874999892971 7852.3284491703725507 17288.1538590830532485 299.9792095875052951 - 420 300.5302259436974168 1438.1569922368764765 1189.8406936554465574 393.2827818158641549 7852.5601875000302243 7852.4696075433648730 17288.1532705147074012 299.9815165752025337 - 430 300.5877786105220935 1503.3641639033023694 1189.8251514530138593 393.3580969454444016 7852.5601874999802021 7852.4023373559457468 17288.1457732543858583 299.9798346272511935 - 440 300.7289160804472772 1689.2527029957295781 1189.8035410609209066 393.5427936314976591 7852.5601875000029395 7852.2436462415198548 17288.1501684339418716 299.9764596782897570 - 450 300.9487198282456575 1497.3668092174791582 1189.7808137689632986 393.8304353457919547 7852.5601874999938445 7851.9788323927432430 17288.1502690074921702 299.9710227473042323 - 460 300.9359942496024587 1625.1573864018491804 1189.7615359247627111 393.8137822755282400 7852.5601875000147629 7852.0165192783370003 17288.1520249786408385 299.9713565393226986 - 470 301.0000133856357252 1486.1561922844011860 1189.7439269526955741 393.8975596188205941 7852.5601874999656502 7851.9561324572268859 17288.1578065287103527 299.9697143418395626 - 480 300.8568627175957886 1535.6080526199095857 1189.7237810071801505 393.7102284019063063 7852.5601874999601932 7852.1697010727630186 17288.1638979818089865 299.9732503057674080 - 490 301.0608040775520067 1497.3221544489886128 1189.7062242497636362 393.9771121242308709 7852.5601874999974825 7851.9258988739011329 17288.1694227478947141 299.9682362511933320 - 500 301.0232592587148019 1517.5854528541199215 1189.6911287485861521 393.9279798589197981 7852.5601875000247674 7851.9823225510326665 17288.1616186585633841 299.9690333355835037 - 510 300.7038579923685120 1420.2615974401142012 1189.6747661513456933 393.5100018730125839 7852.5601874999674692 7852.4114869568047652 17288.1564424811294884 299.9768186576545759 - 520 300.5917863355052759 1537.4862082427132464 1189.6604754398756540 393.3633415734188361 7852.5601875000029395 7852.5789017095057716 17288.1629062228021212 299.9795694302102333 - 530 300.4751352158502868 1481.1071694751799441 1189.6453243069925065 393.2106884527691477 7852.5601874999811116 7852.7451655714066874 17288.1613658311471227 299.9823181268525900 - 540 300.5380123640739498 1547.3461372766389559 1189.6261485232855648 393.2929713568877332 7852.5601875000375003 7852.6850583598352387 17288.1643657400454686 299.9808112190538623 - 550 300.4253885005187499 1544.3485889749692888 1189.6033595464525661 393.1455884232119047 7852.5601874999756546 7852.8598718466746504 17288.1690073163154011 299.9835860164698147 - 560 300.3263552442093101 1556.5150300058251105 1189.5759163336824713 393.0159905619273673 7852.5601875000111249 7853.0148613782675966 17288.1669557738860021 299.9861837797674866 - 570 300.1977324643196425 1511.2320626303917379 1189.5441090918316149 392.8476709710407704 7852.5601875000102154 7853.2098259401755058 17288.1617935030590161 299.9896761688499964 - 580 300.3543631005173893 1588.9566243200433746 1189.5094471319721379 393.0526424747489500 7852.5601875000156724 7853.0374555421631158 17288.1597326488990802 299.9859298211933378 - 590 300.5019108864805730 1504.4406939723214691 1189.4809412920112663 393.2457278908070748 7852.5601874999874781 7852.8704277855340479 17288.1572844683396397 299.9823573257917815 - 600 300.4791158523048011 1540.4690749004150803 1189.4551948503105905 393.2158976318902432 7852.5601875000220389 7852.9312239063838206 17288.1625038886049879 299.9832002920041987 - 610 300.5939139841889869 1368.0565839211087678 1189.4252547652590692 393.3661258776944578 7852.5601874999574648 7852.8130977336286378 17288.1646658765384927 299.9807742697515778 - 620 300.7674247480806002 1483.2566452708945235 1189.3941250938435132 393.5931872179773450 7852.5601875000193104 7852.6187967208716145 17288.1662965327122947 299.9766963671718258 - 630 300.7920034341021278 1543.0699124130637756 1189.3598279316649950 393.6253516166882491 7852.5601875000302243 7852.6219971866230480 17288.1673642350069713 299.9762538437230432 - 640 300.8032734267029014 1423.2549819291616586 1189.3293074476885067 393.6400998638143278 7852.5601874999847496 7852.6384826097782934 17288.1680774212654796 299.9762118202994543 - 650 300.7516995878241346 1542.6559695158523482 1189.3021161045705867 393.5726088061030055 7852.5601874999720167 7852.7361949473242930 17288.1711073579681397 299.9775656396505497 - 660 300.8699697098109596 1675.5121937767839881 1189.2687179804190691 393.7273806013013768 7852.5601874999802021 7852.6179739687149777 17288.1742600504148868 299.9750492262036801 - 670 301.0255004186900578 1520.7397686587873977 1189.2284265783687260 393.9309127074437242 7852.5601874999847496 7852.4592279727157802 17288.1787547585117863 299.9715123049731460 - 680 301.1071983488760679 1651.9751417063259851 1189.1858967311386550 394.0378250459656329 7852.5601875000002110 7852.3982826328638112 17288.1821919099675142 299.9699481289110850 - 690 301.0027086454253435 1496.1607274163641250 1189.1436949551202815 393.9010867158519886 7852.5601875000293148 7852.5788938360938118 17288.1838630070960789 299.9731939774295597 - 700 300.9009090279179759 1551.8182127127668082 1189.0993919251338866 393.7678687121208441 7852.5601875000102154 7852.7513665452252098 17288.1788146824910655 299.9761043445071209 - 710 301.2325536720837817 1678.1546953970853338 1189.0528341066981284 394.2018687459686817 7852.5601874999956635 7852.3633298995819132 17288.1782202522445004 299.9683013583347133 - 720 301.2122298224125529 1524.1415452491430642 1189.0046957644285612 394.1752723525083866 7852.5601875000093059 7852.4351629896145823 17288.1753186065616319 299.9693315350040734 - 730 301.0763282392692304 1547.1987029633166912 1188.9602551214045434 393.9974275034455218 7852.5601874999883876 7852.6518053705112834 17288.1696754953518393 299.9732715774841267 - 740 301.3262401480515109 1544.7045314021493141 1188.9131307177485724 394.3244696516559884 7852.5601874999965730 7852.3694201272974169 17288.1672079966992897 299.9674666811455950 - 750 301.5740779122830304 1591.1785078054851965 1188.8637580645938669 394.6487975126887022 7852.5601875000029395 7852.0919529470393172 17288.1646960243233480 299.9616008527094095 - 760 301.4385361878654521 1547.3218422039201414 1188.8113669183098864 394.4714235854450521 7852.5601874999838401 7852.3161911124070684 17288.1591691161447670 299.9656339783694534 - 770 301.6110125684814420 1494.5039561806622714 1188.7581685915934031 394.6971313010439530 7852.5601875000083965 7852.1351720579104949 17288.1506594505553949 299.9619855799395509 - 780 301.8360352039435384 1588.1458619705292676 1188.7039178696472845 394.9916026067776329 7852.5601874999956635 7851.9015195838428554 17288.1572275602629816 299.9572350302977952 - 790 302.1008324754310479 1545.4409171812178556 1188.6491103416560691 395.3381241828382144 7852.5601875000138534 7851.6150048936624444 17288.1624269181702402 299.9513959104631340 - 800 301.9660372380565718 1563.9565804790736365 1188.5964649891604950 395.1617271307158035 7852.5601874999874781 7851.8461249560614306 17288.1645045759250934 299.9555810527747326 - 810 302.0507207347627627 1511.4560763489957935 1188.5468477146612258 395.2725464702810996 7852.5601875000120344 7851.7904104899025697 17288.1699921748586348 299.9541551776504775 - 820 302.4700213214911741 1458.5135514273570152 1188.4981381693974072 395.8212556746473751 7852.5601875000202199 7851.2935886962204677 17288.1731700402851857 299.9441803241180651 - 830 302.2853997979337350 1496.2544527963129894 1188.4496917372191547 395.5796544641875698 7852.5601875000447762 7851.5862641793482908 17288.1757978808018379 299.9494768794835977 - 840 302.0840465730901201 1518.8301331998704882 1188.3994383226176978 395.3161576523596636 7852.5601875000038490 7851.8962146812327774 17288.1719981562127941 299.9550476592922337 - 850 301.8910942560261788 1469.8827850510901953 1188.3489956121345585 395.0636545180261692 7852.5601874999829306 7852.2025804631493884 17288.1754180932912277 299.9606927700139067 - 860 301.7284384160519153 1657.6802015862324424 1188.3052233777652873 394.8507982536594341 7852.5601875000093059 7852.4644669022691232 17288.1806760337058222 299.9652835238809985 - 870 301.6331619894115192 1501.5829953208524330 1188.2628815714097072 394.7261166912876433 7852.5601875000202199 7852.6378180648598573 17288.1870038275774277 299.9682811831179379 - 880 301.3703918424367316 1499.1595903074553462 1188.2195190931643083 394.3822478705861272 7852.5601874999956635 7853.0266423250832304 17288.1885967888301820 299.9755099056966401 - 890 301.4157954313303662 1598.8758859042511631 1188.1845892608291706 394.4416643558612918 7852.5601875000065775 7853.0036606192506952 17288.1901017359487014 299.9745322513492738 - 900 301.4752150615485675 1621.2148728756822038 1188.1517520946135846 394.5194226492019993 7852.5601874999711072 7852.9579580608560718 17288.1893203046420240 299.9733125337182287 - 910 301.4308816315938770 1538.4823217911632582 1188.1159856659232901 394.4614066057066566 7852.5601875000002110 7853.0558695713261841 17288.1934493429580471 299.9748317405193916 - 920 301.4323110133492492 1594.7193046491217956 1188.0835779842032025 394.4632771371357762 7852.5601875000202199 7853.0942701464364291 17288.2013127677964803 299.9751127806911200 - 930 301.4801256941950101 1387.6885377097617038 1188.0464206196895702 394.5258488489681099 7852.5601875000229484 7853.0656502842994087 17288.1981072529815719 299.9740698440909910 - 940 301.8075611840245074 1534.2487040663793323 1188.0124217312886685 394.9543406584059539 7852.5601874999701977 7852.6729444202819650 17288.1998943099461030 299.9660570413493588 - 950 301.6915970126173647 1567.7725992489238251 1187.9790455470049437 394.8025864986412898 7852.5601875000274958 7852.8619557087595240 17288.2037752544347313 299.9694678653150959 - 960 301.6392594677008105 1504.8502165144939227 1187.9439133338105421 394.7340960325207675 7852.5601874999711072 7852.9728807988849439 17288.2110776651898050 299.9711546356286362 - 970 301.6049535791644303 1514.0198965433548892 1187.9094123369413865 394.6892023276233772 7852.5601874999765641 7853.0497909819878259 17288.2085931465298927 299.9722547114341751 - 980 301.2982841679705643 1634.1208149125807267 1187.8768454876480973 394.2878856256063500 7852.5601874999856591 7853.4862008383515786 17288.2111194515891839 299.9802110109069986 - 990 301.2573007350166563 1489.7316698898257528 1187.8432331161868660 394.2342534877078606 7852.5601875000047585 7853.5840096862748396 17288.2216837901723920 299.9819468620868292 - 1000 301.3195135766228532 1562.6587211933920116 1187.8034267774903583 394.3156670604516307 7852.5601874999356369 7853.5372636956635688 17288.2165450335414789 299.9807651637231629 -Loop time of 21.3308 on 1 procs for 1000 steps with 10125 atoms + 0 301.4391322267262012 1636.1776395935080473 1188.6488072196075336 394.4722035796053206 0.0000000000000000 15705.1203749972210062 17288.2413857964347699 299.9999999999841407 + 10 301.4791572483523510 1486.4422375141214161 1188.7147620806101713 394.5245815119678241 0.0000000000000000 15704.9333817333845218 17288.1727253259632562 299.9960221120699089 + 20 301.4275643919337995 1677.9356110821622678 1188.7839634625399867 394.4570655673389865 -0.0000000000000000 15704.9313726932996360 17288.1724017231790640 299.9955485734552667 + 30 301.2240988054542186 1452.7304951528922174 1188.8550809767796181 394.1908044563202225 -0.0000000000000000 15705.1281541239713988 17288.1740395570705005 299.9988968405209562 + 40 301.1023506886409109 1527.9758363521384581 1188.9264527568634549 394.0314812537677085 -0.0000000000000000 15705.2176639573335706 17288.1755979679655866 300.0001694462812907 + 50 301.0409654880461972 1597.1737251233505503 1188.9944523606984603 393.9511507566391515 -0.0000000000000000 15705.2302422249904339 17288.1758453423281026 299.9999653064982112 + 60 301.2904978886138565 1610.8630327676828529 1189.0651026961211301 394.2776962691255562 -0.0000000000000000 15704.8336863976528548 17288.1764853628992569 299.9919857290491905 + 70 300.8575037843164068 1489.3259312130892340 1189.1295686642290548 393.7110673208617300 0.0000000000000000 15705.3309057198275696 17288.1715417049199459 300.0010992278232607 + 80 300.5955830326474825 1449.3896097889576140 1189.1880764967559116 393.3683100440913449 -0.0000000000000000 15705.6086113882302016 17288.1649979290777992 300.0059513551502164 + 90 301.0092332775843147 1553.9266324350371633 1189.2470037925056658 393.9096250433288446 -0.0000000000000000 15705.0053942113881931 17288.1620230472217372 299.9940347326859182 + 100 301.0478004479094238 1539.2270336322201274 1189.3010269201699884 393.9600951881690207 -0.0000000000000000 15704.9018111045588739 17288.1629332128977694 299.9916385566916119 + 110 300.9609384905550655 1500.0429484565015628 1189.3524514939088021 393.8464250502818231 -0.0000000000000000 15704.9716855356964516 17288.1705620798857126 299.9925626482006464 + 120 300.9625536631413070 1630.5065919443020448 1189.4006029528841282 393.8485387131116795 0.0000000000000000 15704.9202685123345873 17288.1694101783286897 299.9911580775880680 + 130 301.0373750247309772 1539.2267307640188392 1189.4426173625224692 393.9464521696794463 -0.0000000000000000 15704.7780263310032751 17288.1670958632057591 299.9879581026650044 + 140 300.7465104415114183 1550.8353679735089372 1189.4887352231000932 393.5658181350790983 0.0000000000000000 15705.1161457332873397 17288.1706990914681228 299.9939749909034958 + 150 300.6667173911142186 1634.8987162883267956 1189.5368575067818711 393.4613985788390096 0.0000000000000000 15705.1681543015274656 17288.1664103871480620 299.9946423938894213 + 160 300.4684731724561857 1462.9400882126797114 1189.5825022927965620 393.2019703048678139 0.0000000000000000 15705.3867062980680203 17288.1711788957327371 299.9983600613422254 + 170 300.1439323338466920 1510.2352578813547552 1189.6305700279476696 392.7772665220106774 -0.0000000000000000 15705.7611546046609874 17288.1689911546200165 300.0051118582463232 + 180 300.1074244553407766 1529.6307083879964921 1189.6764977580119194 392.7294912276225318 -0.0000000000000000 15705.7649384723172261 17288.1709274579516205 300.0047089238623812 + 190 300.4193298066088573 1546.3205495807169427 1189.7172820166242673 393.1376598363698349 0.0000000000000000 15705.3063729379555298 17288.1613147909483814 299.9954451643527022 + 200 300.3353919251508728 1532.5496449337249487 1189.7600175880224924 393.0278162310690391 -0.0000000000000000 15705.3708964914076205 17288.1587303105006868 299.9962707550172922 + 210 300.3276568499739483 1504.8178651700850423 1189.7998299597820733 393.0176938818990493 0.0000000000000000 15705.3412005200552812 17288.1587243617359491 299.9953436245502871 + 220 300.5768315696972195 1592.5896084568353217 1189.8391466344739911 393.3437713226065284 -0.0000000000000000 15704.9807449702821032 17288.1636629273634753 299.9880321846658262 + 230 300.6587445618569063 1672.3049358942282652 1189.8766340798690635 393.4509650976162334 0.0000000000000000 15704.8335074687693123 17288.1611066462537565 299.9848228571169102 + 240 300.7517707836825025 1527.1722267937814195 1189.9126240081131982 393.5727019751183207 -0.0000000000000000 15704.6762557172896777 17288.1615817005222198 299.9814952182625802 + 250 300.8473715548367409 1589.1847713095232848 1189.9441342461948352 393.6978079843565865 0.0000000000000000 15704.5227722798481409 17288.1647145103997900 299.9782210858571148 + 260 300.8450266408959806 1623.1896863377055524 1189.9636161513917614 393.6947393603110186 0.0000000000000000 15704.5073703474117792 17288.1657258591149002 299.9775302202894522 + 270 300.6663619570710466 1564.5160171187892502 1189.9764081239700317 393.4609334472908699 0.0000000000000000 15704.7310151116998895 17288.1683566829597112 299.9812899253167302 + 280 300.7668534205727155 1618.5400526904256822 1189.9872008155405183 393.5924395618275184 0.0000000000000000 15704.5873443533891987 17288.1669847307566670 299.9781169783825590 + 290 300.8462727198648281 1562.6765776748138705 1189.9918265985252219 393.6963700162681334 0.0000000000000000 15704.4791647084566648 17288.1673613232487696 299.9756806168042544 + 300 300.8095414073812890 1525.1785808192844343 1189.9873922767767453 393.6483023295390922 0.0000000000000000 15704.5259176693853078 17288.1616122757004632 299.9761279889731327 + 310 300.9496330741349652 1566.5597234051326723 1189.9752299662607129 393.8316304464933637 0.0000000000000000 15704.3499992189717887 17288.1568596317265474 299.9723726900589327 + 320 301.2370566356514132 1513.6869483705036146 1189.9626455872523820 394.2077614578672069 0.0000000000000000 15703.9850341706151085 17288.1554412157347542 299.9650543775107394 + 330 301.3279721508969260 1549.0667862452526151 1189.9513389477854162 394.3267362020338282 0.0000000000000000 15703.8731830581982649 17288.1512582080176799 299.9625537201162615 + 340 301.1145736537582707 1414.7930515101757010 1189.9408691169962822 394.0474765890398885 0.0000000000000000 15704.1630721074998291 17288.1514178135366819 299.9677356565827040 + 350 301.1651600907369470 1529.8016115175894356 1189.9314470205474663 394.1136755032910628 0.0000000000000000 15704.1043292268568621 17288.1494517506944248 299.9662576716459625 + 360 301.0550563185083206 1536.7721716375513097 1189.9200519814730796 393.9695904359920178 0.0000000000000000 15704.2703084691693221 17288.1599508866347605 299.9690811750866146 + 370 301.1008976932965311 1522.3385843459491298 1189.9109162496640693 394.0295798208944689 0.0000000000000000 15704.2205298306434997 17288.1610259012013557 299.9677565060027860 + 380 301.1656898730701073 1505.0548721701995873 1189.9005648244356053 394.1143687921909873 -0.0000000000000000 15704.1418702597857191 17288.1568038764125959 299.9659906785157091 + 390 300.8379322662877371 1740.9151205755633782 1189.8851457594089425 393.6854554509391164 -0.0000000000000000 15704.5870739109432179 17288.1576751212924137 299.9741278188614046 + 400 300.8663790447545239 1564.9461156870302148 1189.8690133470406636 393.7226817503371308 0.0000000000000000 15704.5645667319495260 17288.1562618293282867 299.9732593416576947 + 410 300.6263441860637045 1564.2840871092375892 1189.8566574093874806 393.4085650033035222 -0.0000000000000000 15704.8886366703736712 17288.1538590830641624 299.9792095875053519 + 420 300.5302259436973031 1438.1569922368769312 1189.8406936554461026 393.2827818158640412 0.0000000000000000 15705.0297950433650840 17288.1532705146746594 299.9815165752024768 + 430 300.5877786105221503 1503.3641639033021420 1189.8251514530136319 393.3580969454445153 -0.0000000000000000 15704.9625248558968451 17288.1457732543567545 299.9798346272512504 + 440 300.7289160804472772 1689.2527029957295781 1189.8035410609209066 393.5427936314976591 -0.0000000000000000 15704.8038337415237038 17288.1501684339418716 299.9764596782894728 + 450 300.9487198282456006 1497.3668092174784761 1189.7808137689632986 393.8304353457918978 -0.0000000000000000 15704.5390198927143501 17288.1502690074703423 299.9710227473042323 + 460 300.9359942496024019 1625.1573864018473614 1189.7615359247631659 393.8137822755281263 0.0000000000000000 15704.5767067783035600 17288.1520249785935448 299.9713565393225849 + 470 301.0000133856357252 1486.1561922844020955 1189.7439269526958014 393.8975596188205941 0.0000000000000000 15704.5163199572089070 17288.1578065287249046 299.9697143418395058 + 480 300.8568627175958454 1535.6080526199100404 1189.7237810071803779 393.7102284019064200 -0.0000000000000000 15704.7298885727686866 17288.1638979818562802 299.9732503057675785 + 490 301.0608040775520067 1497.3221544489890675 1189.7062242497640909 393.9771121242308709 -0.0000000000000000 15704.4860863739140768 17288.1694227479092660 299.9682362511933889 + 500 301.0232592587148019 1517.5854528541185573 1189.6911287485863795 393.9279798589197981 -0.0000000000000000 15704.5425100510510674 17288.1616186585561081 299.9690333355832195 + 510 300.7038579923685120 1420.2615974401142012 1189.6747661513456933 393.5100018730125839 -0.0000000000000000 15704.9716744568013382 17288.1564424811585923 299.9768186576548032 + 520 300.5917863355052759 1537.4862082427125642 1189.6604754398761088 393.3633415734188361 -0.0000000000000000 15705.1390892093895673 17288.1629062226857059 299.9795694302102902 + 530 300.4751352158504574 1481.1071694751785799 1189.6453243069920518 393.2106884527693751 -0.0000000000000000 15705.3053530714041699 17288.1613658311653126 299.9823181268525900 + 540 300.5380123640739498 1547.3461372766387285 1189.6261485232855648 393.2929713568877332 0.0000000000000000 15705.2452458598490921 17288.1643657400236407 299.9808112190538623 + 550 300.4253885005187499 1544.3485889749688340 1189.6033595464525661 393.1455884232119047 0.0000000000000000 15705.4200593467012368 17288.1690073163663328 299.9835860164698147 + 560 300.3263552442091395 1556.5150300058239736 1189.5759163336820166 393.0159905619271399 0.0000000000000000 15705.5750488783432957 17288.1669557739514858 299.9861837797674298 + 570 300.1977324643196994 1511.2320626303924200 1189.5441090918316149 392.8476709710408272 0.0000000000000000 15705.7700134401693504 17288.1617935030408262 299.9896761688500533 + 580 300.3543631005173893 1588.9566243200420104 1189.5094471319723652 393.0526424747489500 -0.0000000000000000 15705.5976430422142585 17288.1597326489354600 299.9859298211932810 + 590 300.5019108864805730 1504.4406939723210144 1189.4809412920112663 393.2457278908070748 -0.0000000000000000 15705.4306152855297114 17288.1572844683469157 299.9823573257918952 + 600 300.4791158523048011 1540.4690749004137160 1189.4551948503108179 393.2158976318902432 0.0000000000000000 15705.4914114063831221 17288.1625038885831600 299.9832002920041418 + 610 300.5939139841890437 1368.0565839211083130 1189.4252547652597514 393.3661258776945715 0.0000000000000000 15705.3732852337052464 17288.1646658766585460 299.9807742697515209 + 620 300.7674247480806002 1483.2566452708929319 1189.3941250938437406 393.5931872179773450 0.0000000000000000 15705.1789842209145718 17288.1662965327341226 299.9766963671719395 + 630 300.7920034341022415 1543.0699124130630935 1189.3598279316649950 393.6253516166883628 -0.0000000000000000 15705.1821846865786938 17288.1673642349305737 299.9762538437231001 + 640 300.8032734267029014 1423.2549819291609765 1189.3293074476887341 393.6400998638143278 -0.0000000000000000 15705.1986701098048798 17288.1680774213091354 299.9762118202993975 + 650 300.7516995878240209 1542.6559695158514387 1189.3021161045703593 393.5726088061028349 0.0000000000000000 15705.2963824473390559 17288.1711073580117954 299.9775656396504360 + 660 300.8699697098108459 1675.5121937767842155 1189.2687179804192965 393.7273806013012063 0.0000000000000000 15705.1781614686860848 17288.1742600504076108 299.9750492262035095 + 670 301.0255004186899441 1520.7397686587889893 1189.2284265783694082 393.9309127074436105 0.0000000000000000 15705.0194154727287241 17288.1787547585408902 299.9715123049731460 + 680 301.1071983488761248 1651.9751417063253029 1189.1858967311388824 394.0378250459656897 0.0000000000000000 15704.9584701329349627 17288.1821919100402738 299.9699481289110281 + 690 301.0027086454255141 1496.1607274163641250 1189.1436949551202815 393.9010867158522160 0.0000000000000000 15705.1390813360922039 17288.1838630070633371 299.9731939774292755 + 700 300.9009090279178622 1551.8182127127668082 1189.0993919251338866 393.7678687121206735 -0.0000000000000000 15705.3115540452217829 17288.1788146824765136 299.9761043445070641 + 710 301.2325536720837817 1678.1546953970841969 1189.0528341066981284 394.2018687459686817 0.0000000000000000 15704.9235173995584773 17288.1782202522263105 299.9683013583346565 + 720 301.2122298224125529 1524.1415452491437463 1189.0046957644283339 394.1752723525083866 0.0000000000000000 15704.9953504895402148 17288.1753186064779584 299.9693315350040734 + 730 301.0763282392692304 1547.1987029633176007 1188.9602551214045434 393.9974275034455218 0.0000000000000000 15705.2119928705469647 17288.1696754953954951 299.9732715774840699 + 740 301.3262401480515109 1544.7045314021493141 1188.9131307177485724 394.3244696516559884 0.0000000000000000 15704.9296076272603386 17288.1672079966665478 299.9674666811455950 + 750 301.5740779122830872 1591.1785078054849691 1188.8637580645940943 394.6487975126887591 0.0000000000000000 15704.6521404470349808 17288.1646960243160720 299.9616008527092959 + 760 301.4385361878655658 1547.3218422039212783 1188.8113669183098864 394.4714235854451658 0.0000000000000000 15704.8763786124927719 17288.1591691162466304 299.9656339783693966 + 770 301.6110125684815557 1494.5039561806624988 1188.7581685915934031 394.6971313010441236 0.0000000000000000 15704.6953595579507237 17288.1506594505881367 299.9619855799396646 + 780 301.8360352039435384 1588.1458619705304045 1188.7039178696477393 394.9916026067776329 0.0000000000000000 15704.4617070838321524 17288.1572275602593436 299.9572350302976247 + 790 302.1008324754310479 1545.4409171812180830 1188.6491103416560691 395.3381241828382144 0.0000000000000000 15704.1751923936917592 17288.1624269181847922 299.9513959104630771 + 800 301.9660372380565718 1563.9565804790738639 1188.5964649891604950 395.1617271307158035 0.0000000000000000 15704.4063124560707365 17288.1645045759469212 299.9555810527747326 + 810 302.0507207347627059 1511.4560763489960209 1188.5468477146607711 395.2725464702810427 0.0000000000000000 15704.3505979898400255 17288.1699921747822373 299.9541551776507617 + 820 302.4700213214913447 1458.5135514273563331 1188.4981381693974072 395.8212556746476025 0.0000000000000000 15703.8537761962070363 17288.1731700402524439 299.9441803241177809 + 830 302.2853997979336214 1496.2544527963145811 1188.4496917372191547 395.5796544641873993 0.0000000000000000 15704.1464516793694202 17288.1757978807763720 299.9494768794834840 + 840 302.0840465730901201 1518.8301331998702608 1188.3994383226179252 395.3161576523596636 0.0000000000000000 15704.4564021812439023 17288.1719981562200701 299.9550476592922337 + 850 301.8910942560260082 1469.8827850510904227 1188.3489956121347859 395.0636545180259986 0.0000000000000000 15704.7627679631386854 17288.1754180932985037 299.9606927700136794 + 860 301.7284384160518016 1657.6802015862315329 1188.3052233777652873 394.8507982536592635 0.0000000000000000 15705.0246544022065791 17288.1806760336330626 299.9652835238807711 + 870 301.6331619894114624 1501.5829953208508414 1188.2628815714099346 394.7261166912875865 0.0000000000000000 15705.1980055648327834 17288.1870038275301340 299.9682811831179947 + 880 301.3703918424367316 1499.1595903074555736 1188.2195190931643083 394.3822478705861272 0.0000000000000000 15705.5868298250898079 17288.1885967888410960 299.9755099056964127 + 890 301.4157954313303662 1598.8758859042509357 1188.1845892608291706 394.4416643558612918 0.0000000000000000 15705.5638481192290783 17288.1901017359195976 299.9745322513492738 + 900 301.4752150615486812 1621.2148728756842502 1188.1517520946144941 394.5194226492021699 0.0000000000000000 15705.5181455608308170 17288.1893203046492999 299.9733125337182287 + 910 301.4308816315937634 1538.4823217911621214 1188.1159856659228353 394.4614066057064861 0.0000000000000000 15705.6160570713091147 17288.1934493429398572 299.9748317405192779 + 920 301.4323110133492492 1594.7193046491240693 1188.0835779842032025 394.4632771371357762 0.0000000000000000 15705.6544576464475540 17288.2013127677855664 299.9751127806913473 + 930 301.4801256941949532 1387.6885377097596574 1188.0464206196900250 394.5258488489680531 0.0000000000000000 15705.6258377843460039 17288.1981072530033998 299.9740698440912183 + 940 301.8075611840245074 1534.2487040663797870 1188.0124217312888959 394.9543406584059539 0.0000000000000000 15705.2331319202457962 17288.1998943099388271 299.9660570413491882 + 950 301.6915970126175353 1567.7725992489226883 1187.9790455470049437 394.8025864986415172 0.0000000000000000 15705.4221432087451831 17288.2037752543910756 299.9694678653152096 + 960 301.6392594677008105 1504.8502165144939227 1187.9439133338107695 394.7340960325207675 0.0000000000000000 15705.5330682989206252 17288.2110776652516506 299.9711546356285226 + 970 301.6049535791644871 1514.0198965433535250 1187.9094123369409317 394.6892023276234909 0.0000000000000000 15705.6099784820144123 17288.2085931465771864 299.9722547114341751 + 980 301.2982841679706780 1634.1208149125800446 1187.8768454876478700 394.2878856256065205 0.0000000000000000 15706.0463883383199573 17288.2111194515746320 299.9802110109068849 + 990 301.2573007350166563 1489.7316698898262075 1187.8432331161866387 394.2342534877078606 0.0000000000000000 15706.1441971863041545 17288.2216837901978579 299.9819468620868292 + 1000 301.3195135766228532 1562.6587211933931485 1187.8034267774903583 394.3156670604516307 0.0000000000000000 15706.0974511956701463 17288.2165450336106005 299.9807651637235040 +Loop time of 17.0881 on 1 procs for 1000 steps with 10125 atoms -Performance: 4.050 ns/day, 5.925 hours/ns, 46.880 timesteps/s -99.8% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 5.056 ns/day, 4.747 hours/ns, 58.520 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 10.099 | 10.099 | 10.099 | 0.0 | 47.34 -Neigh | 10.145 | 10.145 | 10.145 | 0.0 | 47.56 -Comm | 0.49807 | 0.49807 | 0.49807 | 0.0 | 2.33 -Output | 0.011203 | 0.011203 | 0.011203 | 0.0 | 0.05 -Modify | 0.28296 | 0.28296 | 0.28296 | 0.0 | 1.33 -Other | | 0.295 | | | 1.38 +Pair | 8.0541 | 8.0541 | 8.0541 | 0.0 | 47.13 +Neigh | 8.1306 | 8.1306 | 8.1306 | 0.0 | 47.58 +Comm | 0.39415 | 0.39415 | 0.39415 | 0.0 | 2.31 +Output | 0.01103 | 0.01103 | 0.01103 | 0.0 | 0.06 +Modify | 0.24061 | 0.24061 | 0.24061 | 0.0 | 1.41 +Other | | 0.2576 | | | 1.51 Nlocal: 10125 ave 10125 max 10125 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -170,4 +174,4 @@ Total # of neighbors = 114682 Ave neighs/atom = 11.3266 Neighbor list builds = 1000 Dangerous builds not checked -Total wall time: 0:00:21 +Total wall time: 0:00:17 diff --git a/examples/USER/dpd/dpdrx-shardlow/in.dpdrx-shardlow b/examples/USER/dpd/dpdrx-shardlow/in.dpdrx-shardlow index e65b5a14db..815c974741 100755 --- a/examples/USER/dpd/dpdrx-shardlow/in.dpdrx-shardlow +++ b/examples/USER/dpd/dpdrx-shardlow/in.dpdrx-shardlow @@ -37,7 +37,7 @@ timestep 0.001 pair_style hybrid/overlay dpd/fdt/energy 16.00 234324 exp6/rx 16.00 pair_coeff * * dpd/fdt/energy 0.0 0.05 10.0 16.00 -pair_coeff * * exp6/rx params.exp6 1fluid 1fluid 1.0 1.0 16.00 +pair_coeff * * exp6/rx params.exp6 1fluid 1fluid exponent 1.0 1.0 16.00 fix 1 all shardlow fix 2 all nve diff --git a/examples/USER/dpd/dpdrx-shardlow/log.dpdrx-shardlow.reference b/examples/USER/dpd/dpdrx-shardlow/log.dpdrx-shardlow.reference index 067708154a..b80e033eb9 100644 --- a/examples/USER/dpd/dpdrx-shardlow/log.dpdrx-shardlow.reference +++ b/examples/USER/dpd/dpdrx-shardlow/log.dpdrx-shardlow.reference @@ -48,7 +48,7 @@ timestep 0.001 pair_style hybrid/overlay dpd/fdt/energy 16.00 234324 exp6/rx 16.00 pair_coeff * * dpd/fdt/energy 0.0 0.05 10.0 16.00 -pair_coeff * * exp6/rx params.exp6 1fluid 1fluid 1.0 1.0 16.00 +pair_coeff * * exp6/rx params.exp6 1fluid 1fluid exponent 1.0 1.0 16.00 fix 1 all shardlow fix 2 all nve @@ -69,39 +69,51 @@ dump_modify 2 sort id run 10 Neighbor list info ... - 2 neighbor list requests update every 1 steps, delay 10 steps, check yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 18 ghost atom cutoff = 18 - binsize = 9 -> bins = 8 8 5 -Memory usage per processor = 6.52436 Mbytes + binsize = 9, bins = 8 8 5 + 3 neighbor lists, perpetual/occasional/extra = 3 0 0 + (1) pair dpd/fdt/energy, perpetual + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard + (2) pair exp6/rx, perpetual, copy from (1) + pair build: copy + stencil: none + bin: none + (3) fix shardlow, perpetual, ssa + pair build: half/bin/newton/ssa + stencil: half/bin/3d/newton/ssa + bin: ssa +Memory usage per processor = 8.39564 Mbytes Step Temp Press Volume PotEng KinEng c_dpdU[1] c_dpdU[2] c_dpdU[3] v_totEnergy c_dpdU[4] - 0 2065.00000000 1368.17463335 179834.51777865 0.00000000 230.35385810 3841.42393279 3841.42393279 0.00000000 7682.84786557 2065.00000000 - 1 2064.93210437 1368.12964881 179834.51777865 0.00000000 230.34628424 3841.42393279 3841.43150665 0.00000000 7682.85543943 2065.20275230 - 2 2067.82089565 1370.04362990 179834.51777865 -0.00000000 230.66853326 3841.42393279 3841.10925763 0.00000000 7682.53319042 2065.32453473 - 3 2070.45225169 1371.78704616 179834.51777865 -0.00000000 230.96206499 3841.42393279 3840.81572590 0.00000000 7682.23965869 2065.45336917 - 4 2075.00241157 1374.80177416 179834.51777865 -0.00000000 231.46964217 3841.42393279 3840.30814872 0.00000000 7681.73208151 2065.52973333 - 5 2073.96509212 1374.11449370 179834.51777865 -0.00000000 231.35392762 3841.42393279 3840.42386327 0.00000000 7681.84779605 2065.76011517 - 6 2074.26516936 1374.31331117 179834.51777865 -0.00000000 231.38740169 3841.42393279 3840.39038920 0.00000000 7681.81432198 2065.95399323 - 7 2071.41069700 1372.42206822 179834.51777865 -0.00000000 231.06898100 3841.42393279 3840.70880989 0.00000000 7682.13274267 2066.23407076 - 8 2071.35844957 1372.38745146 179834.51777865 -0.00000000 231.06315272 3841.42393279 3840.71463817 0.00000000 7682.13857095 2066.43766287 - 9 2071.35676496 1372.38633532 179834.51777865 -0.00000000 231.06296480 3841.42393279 3840.71482609 0.00000000 7682.13875887 2066.64001166 - 10 2066.53172340 1369.18948328 179834.51777865 -0.00000000 230.52472415 3841.42393279 3841.25306673 0.00000000 7682.67699952 2066.97516855 -Loop time of 0.289778 on 1 procs for 10 steps with 864 atoms - -Performance: 2.982 ns/day, 8.049 hours/ns, 34.509 timesteps/s -99.4% CPU use with 1 MPI tasks x no OpenMP threads + 0 2065.00000000 1368.17463335 179834.51777865 0.00000000 230.35385810 0.00000000 7682.84786557 0.00000000 7682.84786557 2065.00000000 + 1 2064.93210437 1368.12964881 179834.51777865 0.00000000 230.34628424 0.00000000 7682.85543943 0.00000000 7682.85543943 2065.20275230 + 2 2067.82089565 1370.04362990 179834.51777865 -0.00000000 230.66853326 0.00000000 7682.53319042 0.00000000 7682.53319042 2065.32453473 + 3 2070.45225169 1371.78704616 179834.51777865 -0.00000000 230.96206499 0.00000000 7682.23965869 0.00000000 7682.23965869 2065.45336917 + 4 2075.00241157 1374.80177416 179834.51777865 -0.00000000 231.46964217 0.00000000 7681.73208151 0.00000000 7681.73208151 2065.52973333 + 5 2073.96509212 1374.11449370 179834.51777865 -0.00000000 231.35392762 -0.00000000 7681.84779605 0.00000000 7681.84779605 2065.76011517 + 6 2074.26516936 1374.31331117 179834.51777865 -0.00000000 231.38740169 -0.00000000 7681.81432198 0.00000000 7681.81432198 2065.95399323 + 7 2071.41069700 1372.42206822 179834.51777865 -0.00000000 231.06898100 -0.00000000 7682.13274267 0.00000000 7682.13274267 2066.23407076 + 8 2071.35844957 1372.38745146 179834.51777865 -0.00000000 231.06315272 0.00000000 7682.13857095 0.00000000 7682.13857095 2066.43766287 + 9 2071.35676496 1372.38633532 179834.51777865 -0.00000000 231.06296480 0.00000000 7682.13875887 0.00000000 7682.13875887 2066.64001166 + 10 2066.53172340 1369.18948328 179834.51777865 -0.00000000 230.52472415 0.00000000 7682.67699952 0.00000000 7682.67699952 2066.97516855 +Loop time of 0.611304 on 1 procs for 10 steps with 864 atoms + +Performance: 1.413 ns/day, 16.981 hours/ns, 16.358 timesteps/s +98.2% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.16405 | 0.16405 | 0.16405 | 0.0 | 56.61 +Pair | 0.34177 | 0.34177 | 0.34177 | 0.0 | 55.91 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.00066328 | 0.00066328 | 0.00066328 | 0.0 | 0.23 -Output | 0.037718 | 0.037718 | 0.037718 | 0.0 | 13.02 -Modify | 0.087281 | 0.087281 | 0.087281 | 0.0 | 30.12 -Other | | 7.057e-05 | | | 0.02 +Comm | 0.0013342 | 0.0013342 | 0.0013342 | 0.0 | 0.22 +Output | 0.083583 | 0.083583 | 0.083583 | 0.0 | 13.67 +Modify | 0.18451 | 0.18451 | 0.18451 | 0.0 | 30.18 +Other | | 0.0001087 | | | 0.02 Nlocal: 864 ave 864 max 864 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 559948067d..ce3b547435 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -936,32 +936,32 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double // Fuchslin-Like Exp-6 Scaling double powfuch = 0.0; - if(fuchslinEpsilon < 0.0){ - powfuch = pow(nTotalOFA,-fuchslinEpsilon); + if(exponentEpsilon < 0.0){ + powfuch = pow(nTotalOFA,-exponentEpsilon); if(powfuch<1e-15) epsilon1 = 0.0; else epsilon1 *= 1.0/powfuch; - powfuch = pow(nTotalOFA_old,-fuchslinEpsilon); + powfuch = pow(nTotalOFA_old,-exponentEpsilon); if(powfuch<1e-15) epsilon1_old = 0.0; else epsilon1_old *= 1.0/powfuch; } else { - epsilon1 *= pow(nTotalOFA,fuchslinEpsilon); - epsilon1_old *= pow(nTotalOFA_old,fuchslinEpsilon); + epsilon1 *= pow(nTotalOFA,exponentEpsilon); + epsilon1_old *= pow(nTotalOFA_old,exponentEpsilon); } - if(fuchslinR < 0.0){ - powfuch = pow(nTotalOFA,-fuchslinR); + if(exponentR < 0.0){ + powfuch = pow(nTotalOFA,-exponentR); if(powfuch<1e-15) rm1 = 0.0; else rm1 *= 1.0/powfuch; - powfuch = pow(nTotalOFA_old,-fuchslinR); + powfuch = pow(nTotalOFA_old,-exponentR); if(powfuch<1e-15) rm1_old = 0.0; else rm1_old *= 1.0/powfuch; } else { - rm1 *= pow(nTotalOFA,fuchslinR); - rm1_old *= pow(nTotalOFA_old,fuchslinR); + rm1 *= pow(nTotalOFA,exponentR); + rm1_old *= pow(nTotalOFA_old,exponentR); } } @@ -990,32 +990,32 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double // Fuchslin-Like Exp-6 Scaling double powfuch = 0.0; - if(fuchslinEpsilon < 0.0){ - powfuch = pow(nTotalOFA,-fuchslinEpsilon); + if(exponentEpsilon < 0.0){ + powfuch = pow(nTotalOFA,-exponentEpsilon); if(powfuch<1e-15) epsilon2 = 0.0; else epsilon2 *= 1.0/powfuch; - powfuch = pow(nTotalOFA_old,-fuchslinEpsilon); + powfuch = pow(nTotalOFA_old,-exponentEpsilon); if(powfuch<1e-15) epsilon2_old = 0.0; else epsilon2_old *= 1.0/powfuch; } else { - epsilon2 *= pow(nTotalOFA,fuchslinEpsilon); - epsilon2_old *= pow(nTotalOFA_old,fuchslinEpsilon); + epsilon2 *= pow(nTotalOFA,exponentEpsilon); + epsilon2_old *= pow(nTotalOFA_old,exponentEpsilon); } - if(fuchslinR < 0.0){ - powfuch = pow(nTotalOFA,-fuchslinR); + if(exponentR < 0.0){ + powfuch = pow(nTotalOFA,-exponentR); if(powfuch<1e-15) rm2 = 0.0; else rm2 *= 1.0/powfuch; - powfuch = pow(nTotalOFA_old,-fuchslinR); + powfuch = pow(nTotalOFA_old,-exponentR); if(powfuch<1e-15) rm2_old = 0.0; else rm2_old *= 1.0/powfuch; } else { - rm2 *= pow(nTotalOFA,fuchslinR); - rm2_old *= pow(nTotalOFA_old,fuchslinR); + rm2 *= pow(nTotalOFA,exponentR); + rm2_old *= pow(nTotalOFA_old,exponentR); } } diff --git a/src/USER-DPD/fix_eos_table_rx.cpp b/src/USER-DPD/fix_eos_table_rx.cpp index 91ccc8475e..52b1930c1c 100644 --- a/src/USER-DPD/fix_eos_table_rx.cpp +++ b/src/USER-DPD/fix_eos_table_rx.cpp @@ -28,6 +28,12 @@ #define MAXLINE 1024 +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + using namespace LAMMPS_NS; using namespace FixConst; @@ -37,17 +43,18 @@ FixEOStableRX::FixEOStableRX(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), ntables(0), tables(NULL), tables2(NULL), dHf(NULL), eosSpecies(NULL) { - if (narg != 8) error->all(FLERR,"Illegal fix eos/table/rx command"); + if (narg != 8 && narg != 10) error->all(FLERR,"Illegal fix eos/table/rx command"); restart_peratom = 1; nevery = 1; - bool rx_flag = false; + rx_flag = false; + nspecies = 1; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"rx",2) == 0) rx_flag = true; - if (!rx_flag) error->all(FLERR,"FixEOStableRX requires a fix rx command."); - - nspecies = atom->nspecies_dpd; - if(nspecies==0) error->all(FLERR,"There are no rx species specified."); + if (strncmp(modify->fix[i]->style,"rx",2) == 0){ + rx_flag = true; + nspecies = atom->nspecies_dpd; + if(nspecies==0) error->all(FLERR,"There are no rx species specified."); + } if (strcmp(arg[3],"linear") == 0) tabstyle = LINEAR; else error->all(FLERR,"Unknown table style in fix eos/table/rx"); @@ -113,8 +120,25 @@ FixEOStableRX::FixEOStableRX(LAMMPS *lmp, int narg, char **arg) : ntables++; } - // Read the Formation Enthalpies - read_file(arg[7]); + // Read the Formation Enthalpies and Correction Coefficients + dHf = new double[nspecies]; + energyCorr = new double[nspecies]; + tempCorrCoeff = new double[nspecies]; + moleculeCorrCoeff= new double[nspecies]; + for (int ii=0; iime == 0) { ptr = fgets(&line[n],MAXLINE-n,fp); @@ -332,7 +358,7 @@ void FixEOStableRX::read_file(char *file) nwords = atom->count_words(line); } - if (nwords != params_per_line) + if (nwords != min_params_per_line && nwords != max_params_per_line) error->all(FLERR,"Incorrect format in eos table/rx potential file"); // words = ptrs to all words in line @@ -344,8 +370,14 @@ void FixEOStableRX::read_file(char *file) for (ispecies = 0; ispecies < nspecies; ispecies++) if (strcmp(words[0],&atom->dname[ispecies][0]) == 0) break; - if (ispecies < nspecies) + if (ispecies < nspecies){ dHf[ispecies] = atof(words[1]); + if(nwords > min_params_per_line+1){ + energyCorr[ispecies] = atof(words[2]); + tempCorrCoeff[ispecies] = atof(words[3]); + moleculeCorrCoeff[ispecies] = atof(words[4]); + } + } } delete [] words; @@ -547,27 +579,33 @@ void FixEOStableRX::param_extract(Table *tb, char *line) error->one(FLERR,"Invalid keyword in fix eos/table/rx parameters"); word = strtok(NULL," \t\n\r\f"); - while (word) { - for (ispecies = 0; ispecies < nspecies; ispecies++) - if (strcmp(word,&atom->dname[ispecies][0]) == 0){ - eosSpecies[ncolumn] = ispecies; - ncolumn++; - break; + if(rx_flag){ + while (word) { + for (ispecies = 0; ispecies < nspecies; ispecies++) + if (strcmp(word,&atom->dname[ispecies][0]) == 0){ + eosSpecies[ncolumn] = ispecies; + ncolumn++; + break; + } + if (ispecies == nspecies){ + printf("name=%s not found in species list\n",word); + error->one(FLERR,"Invalid keyword in fix eos/table/rx parameters"); } - if (ispecies == nspecies){ - printf("name=%s not found in species list\n",word); - error->one(FLERR,"Invalid keyword in fix eos/table/rx parameters"); + word = strtok(NULL," \t\n\r\f"); } - word = strtok(NULL," \t\n\r\f"); - } - for (int icolumn = 0; icolumn < ncolumn; icolumn++) - if(eosSpecies[icolumn]==-1) - error->one(FLERR,"EOS data is missing from fix eos/table/rx tabe"); - if(ncolumn != nspecies){ - printf("ncolumns=%d nspecies=%d\n",ncolumn,nspecies); - error->one(FLERR,"The number of columns in fix eos/table/rx does not match the number of species"); + for (int icolumn = 0; icolumn < ncolumn; icolumn++) + if(eosSpecies[icolumn]==-1) + error->one(FLERR,"EOS data is missing from fix eos/table/rx tabe"); + if(ncolumn != nspecies){ + printf("ncolumns=%d nspecies=%d\n",ncolumn,nspecies); + error->one(FLERR,"The number of columns in fix eos/table/rx does not match the number of species"); + } + } else { + eosSpecies[0] = 0; + ncolumn++; } + if (tb->ninput == 0) error->one(FLERR,"fix eos/table/rx parameters did not set N"); } @@ -655,11 +693,27 @@ double FixEOStableRX::splint(double *xa, double *ya, double *y2a, int n, double void FixEOStableRX::energy_lookup(int id, double thetai, double &ui) { - int itable; - double fraction, uTmp, nTotal; + int itable, nPG; + double fraction, uTmp, nMolecules, nTotal, nTotalPG; + double tolerance = 1.0e-10; ui = 0.0; nTotal = 0.0; + nTotalPG = 0.0; + nPG = 0; + + if(rx_flag){ + for(int ispecies=0;ispeciesdvector[ispecies][id]; + if(fabs(moleculeCorrCoeff[ispecies]) > tolerance){ + nPG++; + nTotalPG += atom->dvector[ispecies][id]; + } + } + } else { + nTotal = 1.0; + } + for(int ispecies=0;ispecieslo); @@ -671,9 +725,13 @@ void FixEOStableRX::energy_lookup(int id, double thetai, double &ui) uTmp = tb->e[itable] + fraction*tb->de[itable]; uTmp += dHf[ispecies]; - // mol fraction form: - ui += atom->dvector[ispecies][id]*uTmp; - nTotal += atom->dvector[ispecies][id]; + uTmp += tempCorrCoeff[ispecies]*thetai; // temperature correction + uTmp += energyCorr[ispecies]; // energy correction + if(nPG > 0) ui += moleculeCorrCoeff[ispecies]*nTotalPG/double(nPG); // molecule correction + + if(rx_flag) nMolecules = atom->dvector[ispecies][id]; + else nMolecules = 1.0; + ui += nMolecules*uTmp; } } ui = ui - double(nTotal+1.5)*force->boltz*thetai; @@ -692,6 +750,7 @@ void FixEOStableRX::temperature_lookup(int id, double ui, double &thetai) double maxit = 100; double temp; double delta = 0.001; + double tolerance = 1.0e-10; // Store the current thetai in t1 t1 = MAX(thetai,tb->lo); @@ -715,7 +774,7 @@ void FixEOStableRX::temperature_lookup(int id, double ui, double &thetai) // Apply the Secant Method for(it=0; itone(FLERR,"NaN detected in secant solver."); temp = t1; temp = MAX(temp,tb->lo); @@ -726,7 +785,7 @@ void FixEOStableRX::temperature_lookup(int id, double ui, double &thetai) break; } temp = t2 - f2*(t2-t1)/(f2-f1); - if(fabs(temp-t2) < 1e-6) break; + if(fabs(temp-t2) < tolerance) break; f1 = f2; t1 = t2; t2 = temp; diff --git a/src/USER-DPD/fix_eos_table_rx.h b/src/USER-DPD/fix_eos_table_rx.h index 078cf1e2e1..8c26d133a5 100644 --- a/src/USER-DPD/fix_eos_table_rx.h +++ b/src/USER-DPD/fix_eos_table_rx.h @@ -67,7 +67,7 @@ class FixEOStableRX : public Fix { void read_file(char *); - double *dHf; + double *dHf,*energyCorr,*tempCorrCoeff,*moleculeCorrCoeff; int pack_reverse_comm(int, int, double *); void unpack_reverse_comm(int, int *, double *); @@ -76,6 +76,7 @@ class FixEOStableRX : public Fix { int *eosSpecies; int ncolumn; + bool rx_flag; }; } diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 0bd560b241..b7330ba1ef 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -45,6 +45,12 @@ enum{LUCY}; #define MAXLINE 1024 #define DELTA 4 +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + #define SparseKinetics_enableIntegralReactions (true) #define SparseKinetics_invalidIndex (-1) @@ -693,7 +699,6 @@ void FixRX::pre_force(int vflag) int *mask = atom->mask; double *dpdTheta = atom->dpdTheta; int newton_pair = force->newton_pair; - int ii; double theta; if(localTempFlag){ @@ -996,9 +1001,9 @@ void FixRX::rk4(int id, double *rwork) // Store the solution back in atom->dvector. for (int ispecies = 0; ispecies < nspecies; ispecies++){ - if(y[ispecies] < -1.0e-10) - error->one(FLERR,"Computed concentration in RK4 solver is < -1.0e-10"); - else if(y[ispecies] < 1e-15) + if(y[ispecies] < -MY_EPSILON) + error->one(FLERR,"Computed concentration in RK4 solver is < -10*DBL_EPSILON"); + else if(y[ispecies] < MY_EPSILON) y[ispecies] = 0.0; atom->dvector[ispecies][id] = y[ispecies]; } @@ -1515,7 +1520,7 @@ void FixRX::rkf45(int id, double *rwork) for (int ispecies = 0; ispecies < nspecies; ispecies++){ if(y[ispecies] < -1.0e-10) error->one(FLERR,"Computed concentration in RKF45 solver is < -1.0e-10"); - else if(y[ispecies] < 1e-20) + else if(y[ispecies] < MY_EPSILON) y[ispecies] = 0.0; atom->dvector[ispecies][id] = y[ispecies]; } diff --git a/src/USER-DPD/pair_exp6_rx.cpp b/src/USER-DPD/pair_exp6_rx.cpp index 202e0bf654..87a283179c 100644 --- a/src/USER-DPD/pair_exp6_rx.cpp +++ b/src/USER-DPD/pair_exp6_rx.cpp @@ -35,6 +35,12 @@ using namespace MathSpecial; #define MAXLINE 1024 #define DELTA 4 +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + #define oneFluidApproxParameter (-1) #define isOneFluidApprox(_site) ( (_site) == oneFluidApproxParameter ) @@ -47,17 +53,17 @@ using namespace MathSpecial; struct PairExp6ParamDataType { int n; - double *epsilon1, *alpha1, *rm1, *fraction1, - *epsilon2, *alpha2, *rm2, *fraction2, - *epsilonOld1, *alphaOld1, *rmOld1, *fractionOld1, - *epsilonOld2, *alphaOld2, *rmOld2, *fractionOld2; + double *epsilon1, *alpha1, *rm1, *mixWtSite1, + *epsilon2, *alpha2, *rm2, *mixWtSite2, + *epsilonOld1, *alphaOld1, *rmOld1, *mixWtSite1old, + *epsilonOld2, *alphaOld2, *rmOld2, *mixWtSite2old; // Default constructor -- nullify everything. PairExp6ParamDataType(void) - : n(0), epsilon1(NULL), alpha1(NULL), rm1(NULL), fraction1(NULL), - epsilon2(NULL), alpha2(NULL), rm2(NULL), fraction2(NULL), - epsilonOld1(NULL), alphaOld1(NULL), rmOld1(NULL), fractionOld1(NULL), - epsilonOld2(NULL), alphaOld2(NULL), rmOld2(NULL), fractionOld2(NULL) + : n(0), epsilon1(NULL), alpha1(NULL), rm1(NULL), mixWtSite1(NULL), + epsilon2(NULL), alpha2(NULL), rm2(NULL), mixWtSite2(NULL), + epsilonOld1(NULL), alphaOld1(NULL), rmOld1(NULL), mixWtSite1old(NULL), + epsilonOld2(NULL), alphaOld2(NULL), rmOld2(NULL), mixWtSite2old(NULL) {} }; @@ -71,6 +77,7 @@ PairExp6rx::PairExp6rx(LAMMPS *lmp) : Pair(lmp) nparams = maxparam = 0; params = NULL; mol2param = NULL; + fractionalWeighting = true; } /* ---------------------------------------------------------------------- */ @@ -93,6 +100,11 @@ PairExp6rx::~PairExp6rx() memory->destroy(cutsq); memory->destroy(cut); } + if(scalingFlag == POLYNOMIAL){ + memory->destroy(coeffAlpha); + memory->destroy(coeffEps); + memory->destroy(coeffRm); + } } /* ---------------------------------------------------------------------- */ @@ -134,10 +146,10 @@ void PairExp6rx::compute(int eflag, int vflag) double epsilon2_j,alpha2_j,rm2_j; double evdwlOldEXP6_12, evdwlOldEXP6_21, fpairOldEXP6_12, fpairOldEXP6_21; double evdwlEXP6_12, evdwlEXP6_21; - double fractionOld1_i, fractionOld1_j; - double fractionOld2_i, fractionOld2_j; - double fraction1_i, fraction1_j; - double fraction2_i, fraction2_j; + double mixWtSite1old_i, mixWtSite1old_j; + double mixWtSite2old_i, mixWtSite2old_j; + double mixWtSite1_i, mixWtSite1_j; + double mixWtSite2_i, mixWtSite2_j; double *uCG = atom->uCG; double *uCGnew = atom->uCGnew; @@ -157,38 +169,38 @@ void PairExp6rx::compute(int eflag, int vflag) memory->create( PairExp6ParamData.epsilon1 , np_total, "PairExp6ParamData.epsilon1"); memory->create( PairExp6ParamData.alpha1 , np_total, "PairExp6ParamData.alpha1"); memory->create( PairExp6ParamData.rm1 , np_total, "PairExp6ParamData.rm1"); - memory->create( PairExp6ParamData.fraction1 , np_total, "PairExp6ParamData.fraction1"); + memory->create( PairExp6ParamData.mixWtSite1 , np_total, "PairExp6ParamData.mixWtSite1"); memory->create( PairExp6ParamData.epsilon2 , np_total, "PairExp6ParamData.epsilon2"); memory->create( PairExp6ParamData.alpha2 , np_total, "PairExp6ParamData.alpha2"); memory->create( PairExp6ParamData.rm2 , np_total, "PairExp6ParamData.rm2"); - memory->create( PairExp6ParamData.fraction2 , np_total, "PairExp6ParamData.fraction2"); + memory->create( PairExp6ParamData.mixWtSite2 , np_total, "PairExp6ParamData.mixWtSite2"); memory->create( PairExp6ParamData.epsilonOld1 , np_total, "PairExp6ParamData.epsilonOld1"); memory->create( PairExp6ParamData.alphaOld1 , np_total, "PairExp6ParamData.alphaOld1"); memory->create( PairExp6ParamData.rmOld1 , np_total, "PairExp6ParamData.rmOld1"); - memory->create( PairExp6ParamData.fractionOld1 , np_total, "PairExp6ParamData.fractionOld1"); + memory->create( PairExp6ParamData.mixWtSite1old , np_total, "PairExp6ParamData.mixWtSite1old"); memory->create( PairExp6ParamData.epsilonOld2 , np_total, "PairExp6ParamData.epsilonOld2"); memory->create( PairExp6ParamData.alphaOld2 , np_total, "PairExp6ParamData.alphaOld2"); memory->create( PairExp6ParamData.rmOld2 , np_total, "PairExp6ParamData.rmOld2"); - memory->create( PairExp6ParamData.fractionOld2 , np_total, "PairExp6ParamData.fractionOld2"); + memory->create( PairExp6ParamData.mixWtSite2old , np_total, "PairExp6ParamData.mixWtSite2old"); for (i = 0; i < np_total; ++i) { - getParamsEXP6 (i, PairExp6ParamData.epsilon1[i], + getMixingWeights (i, PairExp6ParamData.epsilon1[i], PairExp6ParamData.alpha1[i], PairExp6ParamData.rm1[i], - PairExp6ParamData.fraction1[i], + PairExp6ParamData.mixWtSite1[i], PairExp6ParamData.epsilon2[i], PairExp6ParamData.alpha2[i], PairExp6ParamData.rm2[i], - PairExp6ParamData.fraction2[i], + PairExp6ParamData.mixWtSite2[i], PairExp6ParamData.epsilonOld1[i], PairExp6ParamData.alphaOld1[i], PairExp6ParamData.rmOld1[i], - PairExp6ParamData.fractionOld1[i], + PairExp6ParamData.mixWtSite1old[i], PairExp6ParamData.epsilonOld2[i], PairExp6ParamData.alphaOld2[i], PairExp6ParamData.rmOld2[i], - PairExp6ParamData.fractionOld2[i]); + PairExp6ParamData.mixWtSite2old[i]); } } @@ -212,19 +224,19 @@ void PairExp6rx::compute(int eflag, int vflag) epsilon1_i = PairExp6ParamData.epsilon1[i]; alpha1_i = PairExp6ParamData.alpha1[i]; rm1_i = PairExp6ParamData.rm1[i]; - fraction1_i = PairExp6ParamData.fraction1[i]; + mixWtSite1_i = PairExp6ParamData.mixWtSite1[i]; epsilon2_i = PairExp6ParamData.epsilon2[i]; alpha2_i = PairExp6ParamData.alpha2[i]; rm2_i = PairExp6ParamData.rm2[i]; - fraction2_i = PairExp6ParamData.fraction2[i]; + mixWtSite2_i = PairExp6ParamData.mixWtSite2[i]; epsilonOld1_i = PairExp6ParamData.epsilonOld1[i]; alphaOld1_i = PairExp6ParamData.alphaOld1[i]; rmOld1_i = PairExp6ParamData.rmOld1[i]; - fractionOld1_i = PairExp6ParamData.fractionOld1[i]; + mixWtSite1old_i = PairExp6ParamData.mixWtSite1old[i]; epsilonOld2_i = PairExp6ParamData.epsilonOld2[i]; alphaOld2_i = PairExp6ParamData.alphaOld2[i]; rmOld2_i = PairExp6ParamData.rmOld2[i]; - fractionOld2_i = PairExp6ParamData.fractionOld2[i]; + mixWtSite2old_i = PairExp6ParamData.mixWtSite2old[i]; } for (jj = 0; jj < jnum; jj++) { @@ -259,19 +271,19 @@ void PairExp6rx::compute(int eflag, int vflag) epsilon1_j = PairExp6ParamData.epsilon1[j]; alpha1_j = PairExp6ParamData.alpha1[j]; rm1_j = PairExp6ParamData.rm1[j]; - fraction1_j = PairExp6ParamData.fraction1[j]; + mixWtSite1_j = PairExp6ParamData.mixWtSite1[j]; epsilon2_j = PairExp6ParamData.epsilon2[j]; alpha2_j = PairExp6ParamData.alpha2[j]; rm2_j = PairExp6ParamData.rm2[j]; - fraction2_j = PairExp6ParamData.fraction2[j]; + mixWtSite2_j = PairExp6ParamData.mixWtSite2[j]; epsilonOld1_j = PairExp6ParamData.epsilonOld1[j]; alphaOld1_j = PairExp6ParamData.alphaOld1[j]; rmOld1_j = PairExp6ParamData.rmOld1[j]; - fractionOld1_j = PairExp6ParamData.fractionOld1[j]; + mixWtSite1old_j = PairExp6ParamData.mixWtSite1old[j]; epsilonOld2_j = PairExp6ParamData.epsilonOld2[j]; alphaOld2_j = PairExp6ParamData.alphaOld2[j]; rmOld2_j = PairExp6ParamData.rmOld2[j]; - fractionOld2_j = PairExp6ParamData.fractionOld2[j]; + mixWtSite2old_j = PairExp6ParamData.mixWtSite2old[j]; } // A2. Apply Lorentz-Berthelot mixing rules for the i-j pair @@ -372,9 +384,9 @@ void PairExp6rx::compute(int eflag, int vflag) } if (isite1 == isite2) - evdwlOld = sqrt(fractionOld1_i*fractionOld2_j)*evdwlOldEXP6_12; + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12; else - evdwlOld = sqrt(fractionOld1_i*fractionOld2_j)*evdwlOldEXP6_12 + sqrt(fractionOld2_i*fractionOld1_j)*evdwlOldEXP6_21; + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*evdwlOldEXP6_21; evdwlOld *= factor_lj; @@ -455,8 +467,8 @@ void PairExp6rx::compute(int eflag, int vflag) // // Apply Mixing Rule to get the overall force for the CG pair // - if (isite1 == isite2) fpair = sqrt(fractionOld1_i*fractionOld2_j)*fpairOldEXP6_12; - else fpair = sqrt(fractionOld1_i*fractionOld2_j)*fpairOldEXP6_12 + sqrt(fractionOld2_i*fractionOld1_j)*fpairOldEXP6_21; + if (isite1 == isite2) fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12; + else fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*fpairOldEXP6_21; f[i][0] += delx*fpair; f[i][1] += dely*fpair; @@ -467,8 +479,8 @@ void PairExp6rx::compute(int eflag, int vflag) f[j][2] -= delz*fpair; } - if (isite1 == isite2) evdwl = sqrt(fraction1_i*fraction2_j)*evdwlEXP6_12; - else evdwl = sqrt(fraction1_i*fraction2_j)*evdwlEXP6_12 + sqrt(fraction2_i*fraction1_j)*evdwlEXP6_21; + if (isite1 == isite2) evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12; + else evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12 + sqrt(mixWtSite2_i*mixWtSite1_j)*evdwlEXP6_21; evdwl *= factor_lj; uCGnew[i] += 0.5*evdwl; @@ -488,19 +500,19 @@ void PairExp6rx::compute(int eflag, int vflag) if (PairExp6ParamData.epsilon1 ) memory->destroy(PairExp6ParamData.epsilon1); if (PairExp6ParamData.alpha1 ) memory->destroy(PairExp6ParamData.alpha1); if (PairExp6ParamData.rm1 ) memory->destroy(PairExp6ParamData.rm1); - if (PairExp6ParamData.fraction1 ) memory->destroy(PairExp6ParamData.fraction1); + if (PairExp6ParamData.mixWtSite1 ) memory->destroy(PairExp6ParamData.mixWtSite1); if (PairExp6ParamData.epsilon2 ) memory->destroy(PairExp6ParamData.epsilon2); if (PairExp6ParamData.alpha2 ) memory->destroy(PairExp6ParamData.alpha2); if (PairExp6ParamData.rm2 ) memory->destroy(PairExp6ParamData.rm2); - if (PairExp6ParamData.fraction2 ) memory->destroy(PairExp6ParamData.fraction2); + if (PairExp6ParamData.mixWtSite2 ) memory->destroy(PairExp6ParamData.mixWtSite2); if (PairExp6ParamData.epsilonOld1 ) memory->destroy(PairExp6ParamData.epsilonOld1); if (PairExp6ParamData.alphaOld1 ) memory->destroy(PairExp6ParamData.alphaOld1); if (PairExp6ParamData.rmOld1 ) memory->destroy(PairExp6ParamData.rmOld1); - if (PairExp6ParamData.fractionOld1) memory->destroy(PairExp6ParamData.fractionOld1); + if (PairExp6ParamData.mixWtSite1old) memory->destroy(PairExp6ParamData.mixWtSite1old); if (PairExp6ParamData.epsilonOld2 ) memory->destroy(PairExp6ParamData.epsilonOld2); if (PairExp6ParamData.alphaOld2 ) memory->destroy(PairExp6ParamData.alphaOld2); if (PairExp6ParamData.rmOld2 ) memory->destroy(PairExp6ParamData.rmOld2); - if (PairExp6ParamData.fractionOld2) memory->destroy(PairExp6ParamData.fractionOld2); + if (PairExp6ParamData.mixWtSite2old) memory->destroy(PairExp6ParamData.mixWtSite2old); } } @@ -530,10 +542,20 @@ void PairExp6rx::allocate() void PairExp6rx::settings(int narg, char **arg) { - if (narg != 1) error->all(FLERR,"Illegal pair_style command"); + if (narg < 1) error->all(FLERR,"Illegal pair_style command"); cut_global = force->numeric(FLERR,arg[0]); + // optional keywords + + int iarg = 1; + while (iarg < narg) { + if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; + else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; + else error->all(FLERR,"Illegal pair_style command"); + iarg++; + } + if (allocated) { int i,j; for (i = 1; i <= atom->ntypes; i++) @@ -551,7 +573,7 @@ void PairExp6rx::settings(int narg, char **arg) void PairExp6rx::coeff(int narg, char **arg) { - if (narg < 7 || narg > 8) error->all(FLERR,"Incorrect args for pair coefficients"); + if (narg < 6 || narg > 9) error->all(FLERR,"Incorrect args for pair coefficients"); bool rx_flag = false; for (int i = 0; i < modify->nfix; i++) @@ -628,21 +650,36 @@ void PairExp6rx::coeff(int narg, char **arg) params[iparam].potentialType = exp6PotentialType; else error->all(FLERR,"params[].potential type unknown"); - - //printf("params[%d].name= %s ispecies= %d potential= %s potentialType= %d\n", iparam, params[iparam].name, params[iparam].ispecies, params[iparam].potential, params[iparam].potentialType); } } delete[] site1; delete[] site2; site1 = site2 = NULL; - fuchslinR = force->numeric(FLERR,arg[5]); - fuchslinEpsilon = force->numeric(FLERR,arg[6]); - setup(); double cut_one = cut_global; - if (narg == 8) cut_one = force->numeric(FLERR,arg[7]); + if (strcmp(arg[5],"exponent") == 0){ + scalingFlag = EXPONENT; + exponentR = force->numeric(FLERR,arg[6]); + exponentEpsilon = force->numeric(FLERR,arg[7]); + if (narg > 9) error->all(FLERR,"Incorrect args for pair coefficients"); + if (narg == 9) cut_one = force->numeric(FLERR,arg[8]); + } else if (strcmp(arg[5],"polynomial") == 0){ + scalingFlag = POLYNOMIAL; + memory->create(coeffAlpha,6,"pair:coeffAlpha"); + memory->create(coeffEps,6,"pair:coeffEps"); + memory->create(coeffRm,6,"pair:coeffRm"); + read_file2(arg[6]); + if (narg > 8) error->all(FLERR,"Incorrect args for pair coefficients"); + if (narg == 8) cut_one = force->numeric(FLERR,arg[7]); + } else if (strcmp(arg[5],"none") == 0){ + scalingFlag = NONE; + if (narg > 7) error->all(FLERR,"Incorrect args for pair coefficients"); + if (narg == 7) cut_one = force->numeric(FLERR,arg[6]); + } else { + error->all(FLERR,"Incorrect args for pair coefficients"); + } int count = 0; for (int i = ilo; i <= ihi; i++) { @@ -784,6 +821,95 @@ void PairExp6rx::read_file(char *file) /* ---------------------------------------------------------------------- */ +void PairExp6rx::read_file2(char *file) +{ + int params_per_line = 7; + char **words = new char*[params_per_line+1]; + + // open file on proc 0 + + FILE *fp; + fp = NULL; + if (comm->me == 0) { + fp = fopen(file,"r"); + if (fp == NULL) { + char str[128]; + sprintf(str,"Cannot open polynomial file %s",file); + error->one(FLERR,str); + } + } + + // one set of params can span multiple lines + int n,nwords; + char line[MAXLINE],*ptr; + int eof = 0; + + while (1) { + if (comm->me == 0) { + ptr = fgets(line,MAXLINE,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + + // strip comment, skip line if blank + + if ((ptr = strchr(line,'#'))) *ptr = '\0'; + nwords = atom->count_words(line); + if (nwords == 0) continue; + + // concatenate additional lines until have params_per_line words + + while (nwords < params_per_line) { + n = strlen(line); + if (comm->me == 0) { + ptr = fgets(&line[n],MAXLINE-n,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + if ((ptr = strchr(line,'#'))) *ptr = '\0'; + nwords = atom->count_words(line); + } + + if (nwords != params_per_line) + error->all(FLERR,"Incorrect format in polynomial file"); + + // words = ptrs to all words in line + + nwords = 0; + words[nwords++] = strtok(line," \t\n\r\f"); + while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; + + if (strcmp(words[0],"alpha") == 0){ + for (int ii=1; iidvector[ispecies][id]; - nTotal_old += atom->dvector[ispecies+nspecies][id]; + nTotalOld += atom->dvector[ispecies+nspecies][id]; iparam = mol2param[ispecies]; if (iparam < 0 || params[iparam].potentialType != exp6PotentialType ) continue; if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { if (isite1 == params[iparam].ispecies || isite2 == params[iparam].ispecies) continue; - nTotalOFA_old += atom->dvector[ispecies+nspecies][id]; - nTotalOFA += atom->dvector[ispecies][id]; + nMoleculesOFAold += atom->dvector[ispecies+nspecies][id]; + nMoleculesOFA += atom->dvector[ispecies][id]; } } - if(nTotal < 1e-8 || nTotal_old < 1e-8) - error->all(FLERR,"The number of molecules in CG particle is less than 1e-8."); + if(nTotal < MY_EPSILON || nTotalOld < MY_EPSILON) + error->all(FLERR,"The number of molecules in CG particle is less than 10*DBL_EPSILON."); // Compute the mole fraction of molecules within the fluid portion of the particle (One Fluid Approximation) - fractionOFA_old = nTotalOFA_old / nTotal_old; - fractionOFA = nTotalOFA / nTotal; + fractionOFAold = nMoleculesOFAold / nTotalOld; + fractionOFA = nMoleculesOFA / nTotal; for (int ispecies = 0; ispecies < nspecies; ispecies++) { iparam = mol2param[ispecies]; @@ -942,8 +1073,10 @@ void PairExp6rx::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm alpha1 = params[iparam].alpha; // Compute the mole fraction of Site1 - fraction1_old = atom->dvector[ispecies+nspecies][id]/nTotal_old; - fraction1 = atom->dvector[ispecies][id]/nTotal; + nMoleculesOld1 = atom->dvector[ispecies+nspecies][id]; + nMolecules1 = atom->dvector[ispecies][id]; + fractionOld1 = nMoleculesOld1/nTotalOld; + fraction1 = nMolecules1/nTotal; } // If Site2 matches a pure species, then grab the parameters @@ -956,7 +1089,9 @@ void PairExp6rx::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm alpha2 = params[iparam].alpha; // Compute the mole fraction of Site2 - fraction2_old = atom->dvector[ispecies+nspecies][id]/nTotal_old; + nMoleculesOld2 = atom->dvector[ispecies+nspecies][id]; + nMolecules2 = atom->dvector[ispecies][id]; + fractionOld2 = atom->dvector[ispecies+nspecies][id]/nTotalOld; fraction2 = atom->dvector[ispecies][id]/nTotal; } @@ -966,8 +1101,10 @@ void PairExp6rx::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm rmi = params[iparam].rm; epsiloni = params[iparam].epsilon; alphai = params[iparam].alpha; - xMolei = atom->dvector[ispecies][id]/nTotalOFA; - xMolei_old = atom->dvector[ispecies+nspecies][id]/nTotalOFA_old; + if(nMoleculesOFAdvector[ispecies][id]/nMoleculesOFA; + if(nMoleculesOFAolddvector[ispecies+nspecies][id]/nMoleculesOFAold; for (int jspecies = 0; jspecies < nspecies; jspecies++) { jparam = mol2param[jspecies]; @@ -976,15 +1113,17 @@ void PairExp6rx::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm rmj = params[jparam].rm; epsilonj = params[jparam].epsilon; alphaj = params[jparam].alpha; - xMolej = atom->dvector[jspecies][id]/nTotalOFA; - xMolej_old = atom->dvector[jspecies+nspecies][id]/nTotalOFA_old; + if(nMoleculesOFAdvector[jspecies][id]/nMoleculesOFA; + if(nMoleculesOFAolddvector[jspecies+nspecies][id]/nMoleculesOFAold; rmij = (rmi+rmj)/2.0; rm3ij = rmij*rmij*rmij; epsilonij = sqrt(epsiloni*epsilonj); alphaij = sqrt(alphai*alphaj); - if(fractionOFA_old > 0.0){ + if(fractionOFAold > 0.0){ rm3_old += xMolei_old*xMolej_old*rm3ij; epsilon_old += xMolei_old*xMolej_old*rm3ij*epsilonij; alpha_old += xMolei_old*xMolej_old*rm3ij*epsilonij*alphaij; @@ -1000,7 +1139,7 @@ void PairExp6rx::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm if (isOneFluidApprox(isite1)){ rm1 = cbrt(rm3); - if(rm1 < 1e-16) { + if(rm1 < MY_EPSILON) { rm1 = 0.0; epsilon1 = 0.0; alpha1 = 0.0; @@ -1008,11 +1147,11 @@ void PairExp6rx::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm epsilon1 = epsilon / rm3; alpha1 = alpha / epsilon1 / rm3; } - + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); fraction1 = fractionOFA; rm1_old = cbrt(rm3_old); - if(rm1_old < 1e-16) { + if(rm1_old < MY_EPSILON) { rm1_old = 0.0; epsilon1_old = 0.0; alpha1_old = 0.0; @@ -1020,42 +1159,21 @@ void PairExp6rx::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm epsilon1_old = epsilon_old / rm3_old; alpha1_old = alpha_old / epsilon1_old / rm3_old; } - fraction1_old = fractionOFA_old; - - // Fuchslin-Like Exp-6 Scaling - double powfuch = 0.0; - if(fuchslinEpsilon < 0.0){ - powfuch = pow(nTotalOFA,-fuchslinEpsilon); - if(powfuch<1e-15) epsilon1 = 0.0; - else epsilon1 *= 1.0/powfuch; - - powfuch = pow(nTotalOFA_old,-fuchslinEpsilon); - if(powfuch<1e-15) epsilon1_old = 0.0; - else epsilon1_old *= 1.0/powfuch; - - } else { - epsilon1 *= pow(nTotalOFA,fuchslinEpsilon); - epsilon1_old *= pow(nTotalOFA_old,fuchslinEpsilon); - } - - if(fuchslinR < 0.0){ - powfuch = pow(nTotalOFA,-fuchslinR); - if(powfuch<1e-15) rm1 = 0.0; - else rm1 *= 1.0/powfuch; - - powfuch = pow(nTotalOFA_old,-fuchslinR); - if(powfuch<1e-15) rm1_old = 0.0; - else rm1_old *= 1.0/powfuch; - - } else { - rm1 *= pow(nTotalOFA,fuchslinR); - rm1_old *= pow(nTotalOFA_old,fuchslinR); + nMoleculesOld1 = 1.0-(nTotalOld-nMoleculesOFAold); + fractionOld1 = fractionOFAold; + + if(scalingFlag == EXPONENT){ + exponentScaling(nMoleculesOFA,epsilon1,rm1); + exponentScaling(nMoleculesOFAold,epsilon1_old,rm1_old); + } else if(scalingFlag == POLYNOMIAL){ + polynomialScaling(nMoleculesOFA,alpha1,epsilon1,rm1); + polynomialScaling(nMoleculesOFAold,alpha1_old,epsilon1_old,rm1_old); } } if (isOneFluidApprox(isite2)){ rm2 = cbrt(rm3); - if(rm2 < 1e-16) { + if(rm2 < MY_EPSILON) { rm2 = 0.0; epsilon2 = 0.0; alpha2 = 0.0; @@ -1063,10 +1181,11 @@ void PairExp6rx::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm epsilon2 = epsilon / rm3; alpha2 = alpha / epsilon2 / rm3; } + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); fraction2 = fractionOFA; rm2_old = cbrt(rm3_old); - if(rm2_old < 1e-16) { + if(rm2_old < MY_EPSILON) { rm2_old = 0.0; epsilon2_old = 0.0; alpha2_old = 0.0; @@ -1074,64 +1193,96 @@ void PairExp6rx::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm epsilon2_old = epsilon_old / rm3_old; alpha2_old = alpha_old / epsilon2_old / rm3_old; } - fraction2_old = fractionOFA_old; - - // Fuchslin-Like Exp-6 Scaling - double powfuch = 0.0; - if(fuchslinEpsilon < 0.0){ - powfuch = pow(nTotalOFA,-fuchslinEpsilon); - if(powfuch<1e-15) epsilon2 = 0.0; - else epsilon2 *= 1.0/powfuch; - - powfuch = pow(nTotalOFA_old,-fuchslinEpsilon); - if(powfuch<1e-15) epsilon2_old = 0.0; - else epsilon2_old *= 1.0/powfuch; - - } else { - epsilon2 *= pow(nTotalOFA,fuchslinEpsilon); - epsilon2_old *= pow(nTotalOFA_old,fuchslinEpsilon); - } - - if(fuchslinR < 0.0){ - powfuch = pow(nTotalOFA,-fuchslinR); - if(powfuch<1e-15) rm2 = 0.0; - else rm2 *= 1.0/powfuch; - - powfuch = pow(nTotalOFA_old,-fuchslinR); - if(powfuch<1e-15) rm2_old = 0.0; - else rm2_old *= 1.0/powfuch; - - } else { - rm2 *= pow(nTotalOFA,fuchslinR); - rm2_old *= pow(nTotalOFA_old,fuchslinR); + nMoleculesOld2 = 1.0-(nTotalOld-nMoleculesOFAold); + fractionOld2 = fractionOFAold; + + if(scalingFlag == EXPONENT){ + exponentScaling(nMoleculesOFA,epsilon2,rm2); + exponentScaling(nMoleculesOFAold,epsilon2_old,rm2_old); + } else if(scalingFlag == POLYNOMIAL){ + polynomialScaling(nMoleculesOFA,alpha2,epsilon2,rm2); + polynomialScaling(nMoleculesOFAold,alpha2_old,epsilon2_old,rm2_old); } } // Check that no fractions are less than zero - if(fraction1 < 0.0){ - if(fraction1 < -1.0e-10){ - error->all(FLERR,"Computed fraction less than -1.0e-10"); + if(fraction1 < 0.0 || nMolecules1 < 0.0){ + if(fraction1 < -MY_EPSILON || nMolecules1 < -MY_EPSILON){ + error->all(FLERR,"Computed fraction less than -10*DBL_EPSILON"); } + nMolecules1 = 0.0; fraction1 = 0.0; } - if(fraction2 < 0.0){ - if(fraction2 < -1.0e-10){ - error->all(FLERR,"Computed fraction less than -1.0e-10"); + if(fraction2 < 0.0 || nMolecules2 < 0.0){ + if(fraction2 < -MY_EPSILON || nMolecules2 < -MY_EPSILON){ + error->all(FLERR,"Computed fraction less than -10*DBL_EPSILON"); } + nMolecules2 = 0.0; fraction2 = 0.0; } - if(fraction1_old < 0.0){ - if(fraction1_old < -1.0e-10){ - error->all(FLERR,"Computed fraction less than -1.0e-10"); + if(fractionOld1 < 0.0 || nMoleculesOld1 < 0.0){ + if(fractionOld1 < -MY_EPSILON || nMoleculesOld1 < -MY_EPSILON){ + error->all(FLERR,"Computed fraction less than -10*DBL_EPSILON"); } - fraction1_old = 0.0; + nMoleculesOld1 = 0.0; + fractionOld1 = 0.0; } - if(fraction2_old < 0.0){ - if(fraction2_old < -1.0e-10){ - error->all(FLERR,"Computed fraction less than -1.0e-10"); + if(fractionOld2 < 0.0 || nMoleculesOld2 < 0.0){ + if(fractionOld2 < -MY_EPSILON || nMoleculesOld2 < -MY_EPSILON){ + error->all(FLERR,"Computed fraction less than -10*DBL_EPSILON"); } - fraction2_old = 0.0; + nMoleculesOld2 = 0.0; + fractionOld2 = 0.0; } + + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; + } +} + +/* ---------------------------------------------------------------------- */ + +void PairExp6rx::exponentScaling(double phi, double &epsilon, double &rm) const +{ + double powfuch; + + if(exponentEpsilon < 0.0){ + powfuch = pow(phi,-exponentEpsilon); + if(powfuchnghost; int newton_pair = force->newton_pair; - double fractionOld1_i,fractionOld1_j; - double fractionOld2_i,fractionOld2_j; - double fraction1_i; + double mixWtSite1old_i,mixWtSite1old_j; + double mixWtSite2old_i,mixWtSite2old_j; + double mixWtSite1_i; double *uCG = atom->uCG; double *uCGnew = atom->uCGnew; @@ -126,20 +133,20 @@ void PairMultiLucyRX::compute(int eflag, int vflag) int jtable; double *rho = atom->rho; - double *fractionOld1 = NULL; - double *fractionOld2 = NULL; - double *fraction1 = NULL; - double *fraction2 = NULL; + double *mixWtSite1old = NULL; + double *mixWtSite2old = NULL; + double *mixWtSite1 = NULL; + double *mixWtSite2 = NULL; { const int ntotal = nlocal + nghost; - memory->create(fractionOld1, ntotal, "PairMultiLucyRX::fractionOld1"); - memory->create(fractionOld2, ntotal, "PairMultiLucyRX::fractionOld2"); - memory->create(fraction1, ntotal, "PairMultiLucyRX::fraction1"); - memory->create(fraction2, ntotal, "PairMultiLucyRX::fraction2"); + memory->create(mixWtSite1old, ntotal, "PairMultiLucyRX::mixWtSite1old"); + memory->create(mixWtSite2old, ntotal, "PairMultiLucyRX::mixWtSite2old"); + memory->create(mixWtSite1, ntotal, "PairMultiLucyRX::mixWtSite1"); + memory->create(mixWtSite2, ntotal, "PairMultiLucyRX::mixWtSite2"); for (int i = 0; i < ntotal; ++i) - getParams(i, fractionOld1[i], fractionOld2[i], fraction1[i], fraction2[i]); + getMixingWeights(i, mixWtSite1old[i], mixWtSite2old[i], mixWtSite1[i], mixWtSite2[i]); } inum = list->inum; @@ -164,9 +171,9 @@ void PairMultiLucyRX::compute(int eflag, int vflag) double fy_i = 0.0; double fz_i = 0.0; - fractionOld1_i = fractionOld1[i]; - fractionOld2_i = fractionOld2[i]; - fraction1_i = fraction1[i]; + mixWtSite1old_i = mixWtSite1old[i]; + mixWtSite2old_i = mixWtSite2old[i]; + mixWtSite1_i = mixWtSite1[i]; for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; @@ -181,8 +188,8 @@ void PairMultiLucyRX::compute(int eflag, int vflag) if (rsq < cutsq[itype][jtype]) { fpair = 0.0; - fractionOld1_j = fractionOld1[j]; - fractionOld2_j = fractionOld2[j]; + mixWtSite1old_j = mixWtSite1old[j]; + mixWtSite2old_j = mixWtSite2old[j]; tb = &tables[tabindex[itype][jtype]]; if (rho[i]*rho[i] < tb->innersq || rho[j]*rho[j] < tb->innersq){ @@ -237,8 +244,8 @@ void PairMultiLucyRX::compute(int eflag, int vflag) } else error->one(FLERR,"Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx"); - if (isite1 == isite2) fpair = sqrt(fractionOld1_i*fractionOld2_j)*fpair; - else fpair = (sqrt(fractionOld1_i*fractionOld2_j) + sqrt(fractionOld2_i*fractionOld1_j))*fpair; + if (isite1 == isite2) fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpair; + else fpair = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + sqrt(mixWtSite2old_i*mixWtSite1old_j))*fpair; fx_i += delx*fpair; fy_i += dely*fpair; @@ -270,8 +277,8 @@ void PairMultiLucyRX::compute(int eflag, int vflag) } else error->one(FLERR,"Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx"); evdwl *=(pi*cutsq[itype][itype]*cutsq[itype][itype])/84.0; - evdwlOld = fractionOld1_i*evdwl; - evdwl = fraction1_i*evdwl; + evdwlOld = mixWtSite1old_i*evdwl; + evdwl = mixWtSite1_i*evdwl; uCG[i] += evdwlOld; uCGnew[i] += evdwl; @@ -283,10 +290,10 @@ void PairMultiLucyRX::compute(int eflag, int vflag) if (vflag_fdotr) virial_fdotr_compute(); - memory->destroy(fractionOld1); - memory->destroy(fractionOld2); - memory->destroy(fraction1); - memory->destroy(fraction2); + memory->destroy(mixWtSite1old); + memory->destroy(mixWtSite2old); + memory->destroy(mixWtSite1); + memory->destroy(mixWtSite2); } /* ---------------------------------------------------------------------- @@ -313,7 +320,7 @@ void PairMultiLucyRX::allocate() void PairMultiLucyRX::settings(int narg, char **arg) { - if (narg != 2) error->all(FLERR,"Illegal pair_style command"); + if (narg < 2) error->all(FLERR,"Illegal pair_style command"); // new settings @@ -324,6 +331,16 @@ void PairMultiLucyRX::settings(int narg, char **arg) tablength = force->inumeric(FLERR,arg[1]); if (tablength < 2) error->all(FLERR,"Illegal number of pair table entries"); + // optional keywords + + int iarg = 2; + while (iarg < narg) { + if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; + else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; + else error->all(FLERR,"Illegal pair_style command"); + iarg++; + } + // delete old tables, since cannot just change settings for (int m = 0; m < ntables; m++) free_table(&tables[m]); @@ -930,9 +947,14 @@ void PairMultiLucyRX::computeLocalDensity() /* ---------------------------------------------------------------------- */ -void PairMultiLucyRX::getParams(int id, double &fractionOld1, double &fractionOld2, double &fraction1, double &fraction2) +void PairMultiLucyRX::getMixingWeights(int id, double &mixWtSite1old, double &mixWtSite2old, double &mixWtSite1, double &mixWtSite2) { - double fractionOld, fraction; + double fractionOFAold, fractionOFA; + double fractionOld1, fraction1; + double fractionOld2, fraction2; + double nMoleculesOFAold, nMoleculesOFA; + double nMoleculesOld1, nMolecules1; + double nMoleculesOld2, nMolecules2; double nTotal, nTotalOld; nTotal = 0.0; @@ -943,32 +965,56 @@ void PairMultiLucyRX::getParams(int id, double &fractionOld1, double &fractionOl } if (isOneFluid(isite1) == false){ - fractionOld1 = atom->dvector[isite1+nspecies][id]/nTotalOld; - fraction1 = atom->dvector[isite1][id]/nTotal; + nMoleculesOld1 = atom->dvector[isite1+nspecies][id]; + nMolecules1 = atom->dvector[isite1][id]; + fractionOld1 = nMoleculesOld1/nTotalOld; + fraction1 = nMolecules1/nTotal; } if (isOneFluid(isite2) == false){ - fractionOld2 = atom->dvector[isite2+nspecies][id]/nTotalOld; - fraction2 = atom->dvector[isite2][id]/nTotal; + nMoleculesOld2 = atom->dvector[isite2+nspecies][id]; + nMolecules2 = atom->dvector[isite2][id]; + fractionOld2 = nMoleculesOld2/nTotalOld; + fraction2 = nMolecules2/nTotal; } if (isOneFluid(isite1) || isOneFluid(isite2)){ - fractionOld = 0.0; - fraction = 0.0; + nMoleculesOFAold = 0.0; + nMoleculesOFA = 0.0; + fractionOFAold = 0.0; + fractionOFA = 0.0; for (int ispecies = 0; ispecies < nspecies; ispecies++){ if (isite1 == ispecies || isite2 == ispecies) continue; - fractionOld += atom->dvector[ispecies+nspecies][id] / nTotalOld; - fraction += atom->dvector[ispecies][id] / nTotal; + nMoleculesOFAold += atom->dvector[ispecies+nspecies][id]; + nMoleculesOFA += atom->dvector[ispecies][id]; + fractionOFAold += atom->dvector[ispecies+nspecies][id] / nTotalOld; + fractionOFA += atom->dvector[ispecies][id] / nTotal; } if (isOneFluid(isite1)){ - fractionOld1 = fractionOld; - fraction1 = fraction; + nMoleculesOld1 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); + fractionOld1 = fractionOFAold; + fraction1 = fractionOFA; } if (isOneFluid(isite2)){ - fractionOld2 = fractionOld; - fraction2 = fraction; + nMoleculesOld2 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); + fractionOld2 = fractionOFAold; + fraction2 = fractionOFA; } } + + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; + } } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-DPD/pair_multi_lucy_rx.h b/src/USER-DPD/pair_multi_lucy_rx.h index 0562739c50..5975bd6ccd 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.h +++ b/src/USER-DPD/pair_multi_lucy_rx.h @@ -78,7 +78,8 @@ class PairMultiLucyRX : public Pair { int nspecies; char *site1, *site2; int isite1, isite2; - void getParams(int, double &, double &, double &, double &); + void getMixingWeights(int, double &, double &, double &, double &); + bool fractionalWeighting; }; diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index 463e1838c6..e3cacc6155 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -35,6 +35,12 @@ enum{NONE,RLINEAR,RSQ,BMP}; #define MAXLINE 1024 +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + #define OneFluidValue (-1) #define isOneFluid(_site_) ( (_site_) == OneFluidValue ) @@ -44,6 +50,7 @@ PairTableRX::PairTableRX(LAMMPS *lmp) : Pair(lmp) { ntables = 0; tables = NULL; + fractionalWeighting = true; } /* ---------------------------------------------------------------------- */ @@ -84,21 +91,6 @@ void PairTableRX::compute(int eflag, int vflag) if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; - double *fractionOld1, *fractionOld2; - double *fraction1, *fraction2; - - { - const int ntotal = atom->nlocal + atom->nghost; - - memory->create(fractionOld1, ntotal, "PairTableRx::compute::fractionOld1"); - memory->create(fractionOld2, ntotal, "PairTableRx::compute::fractionOld2"); - memory->create(fraction1, ntotal, "PairTableRx::compute::fraction1"); - memory->create(fraction2, ntotal, "PairTableRx::compute::fraction2"); - - for (int i = 0; i < ntotal; ++i) - getParams(i, fractionOld1[i], fractionOld2[i], fraction1[i], fraction2[i]); - } - double **x = atom->x; double **f = atom->f; int *type = atom->type; @@ -106,13 +98,29 @@ void PairTableRX::compute(int eflag, int vflag) double *special_lj = force->special_lj; int newton_pair = force->newton_pair; - double fractionOld1_i, fractionOld1_j; - double fractionOld2_i, fractionOld2_j; - double fraction1_i, fraction1_j; - double fraction2_i, fraction2_j; + double mixWtSite1old_i, mixWtSite1old_j; + double mixWtSite2old_i, mixWtSite2old_j; + double mixWtSite1_i, mixWtSite1_j; + double mixWtSite2_i, mixWtSite2_j; double *uCG = atom->uCG; double *uCGnew = atom->uCGnew; + double *mixWtSite1old = NULL; + double *mixWtSite2old = NULL; + double *mixWtSite1 = NULL; + double *mixWtSite2 = NULL; + + { + const int ntotal = atom->nlocal + atom->nghost; + memory->create(mixWtSite1old, ntotal, "PairTableRx::compute::mixWtSite1old"); + memory->create(mixWtSite2old, ntotal, "PairTableRx::compute::mixWtSite2old"); + memory->create(mixWtSite1, ntotal, "PairTableRx::compute::mixWtSite1"); + memory->create(mixWtSite2, ntotal, "PairTableRx::compute::mixWtSite2"); + + for (int i = 0; i < ntotal; ++i) + getMixingWeights(i, mixWtSite1old[i], mixWtSite2old[i], mixWtSite1[i], mixWtSite2[i]); + } + inum = list->inum; ilist = list->ilist; numneigh = list->numneigh; @@ -132,10 +140,10 @@ void PairTableRX::compute(int eflag, int vflag) double uCGnew_i = 0.0; double fx_i = 0.0, fy_i = 0.0, fz_i = 0.0; - fractionOld1_i = fractionOld1[i]; - fractionOld2_i = fractionOld2[i]; - fraction1_i = fraction1[i]; - fraction2_i = fraction2[i]; + mixWtSite1old_i = mixWtSite1old[i]; + mixWtSite2old_i = mixWtSite2old[i]; + mixWtSite1_i = mixWtSite1[i]; + mixWtSite2_i = mixWtSite2[i]; for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; @@ -149,10 +157,10 @@ void PairTableRX::compute(int eflag, int vflag) jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - fractionOld1_j = fractionOld1[j]; - fractionOld2_j = fractionOld2[j]; - fraction1_j = fraction1[j]; - fraction2_j = fraction2[j]; + mixWtSite1old_j = mixWtSite1old[j]; + mixWtSite2old_j = mixWtSite2old[j]; + mixWtSite1_j = mixWtSite1[j]; + mixWtSite2_j = mixWtSite2[j]; tb = &tables[tabindex[itype][jtype]]; if (rsq < tb->innersq) @@ -188,8 +196,8 @@ void PairTableRX::compute(int eflag, int vflag) value = tb->f[itable] + fraction*tb->df[itable]; fpair = factor_lj * value; } - if (isite1 == isite2) fpair = sqrt(fractionOld1_i*fractionOld2_j)*fpair; - else fpair = (sqrt(fractionOld1_i*fractionOld2_j) + sqrt(fractionOld2_i*fractionOld1_j))*fpair; + if (isite1 == isite2) fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpair; + else fpair = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + sqrt(mixWtSite2old_i*mixWtSite1old_j))*fpair; fx_i += delx*fpair; fy_i += dely*fpair; @@ -210,11 +218,11 @@ void PairTableRX::compute(int eflag, int vflag) ((a*a*a-a)*tb->e2[itable] + (b*b*b-b)*tb->e2[itable+1]) * tb->deltasq6; if (isite1 == isite2){ - evdwlOld = sqrt(fractionOld1_i*fractionOld2_j)*evdwl; - evdwl = sqrt(fraction1_i*fraction2_j)*evdwl; + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwl; + evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwl; } else { - evdwlOld = (sqrt(fractionOld1_i*fractionOld2_j) + sqrt(fractionOld2_i*fractionOld1_j))*evdwl; - evdwl = (sqrt(fraction1_i*fraction2_j) + sqrt(fraction2_i*fraction1_j))*evdwl; + evdwlOld = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + sqrt(mixWtSite2old_i*mixWtSite1old_j))*evdwl; + evdwl = (sqrt(mixWtSite1_i*mixWtSite2_j) + sqrt(mixWtSite2_i*mixWtSite1_j))*evdwl; } evdwlOld *= factor_lj; evdwl *= factor_lj; @@ -240,10 +248,10 @@ void PairTableRX::compute(int eflag, int vflag) } if (vflag_fdotr) virial_fdotr_compute(); - memory->destroy(fractionOld1); - memory->destroy(fractionOld2); - memory->destroy(fraction1); - memory->destroy(fraction2); + memory->destroy(mixWtSite1old); + memory->destroy(mixWtSite2old); + memory->destroy(mixWtSite1); + memory->destroy(mixWtSite2); } /* ---------------------------------------------------------------------- @@ -293,6 +301,8 @@ void PairTableRX::settings(int narg, char **arg) else if (strcmp(arg[iarg],"msm") == 0) msmflag = 1; else if (strcmp(arg[iarg],"dispersion") == 0) dispersionflag = 1; else if (strcmp(arg[iarg],"tip4p") == 0) tip4pflag = 1; + else if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; + else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; else error->all(FLERR,"Illegal pair_style command"); iarg++; } @@ -1061,17 +1071,17 @@ double PairTableRX::single(int i, int j, int itype, int jtype, double rsq, int tlm1 = tablength - 1; Table *tb = &tables[tabindex[itype][jtype]]; - double fraction1_i, fraction1_j; - double fraction2_i, fraction2_j; - double fractionOld1_i, fractionOld1_j; - double fractionOld2_i, fractionOld2_j; + double mixWtSite1_i, mixWtSite1_j; + double mixWtSite2_i, mixWtSite2_j; + double mixWtSite1old_i, mixWtSite1old_j; + double mixWtSite2old_i, mixWtSite2old_j; fraction = 0.0; a = 0.0; b = 0.0; - getParams(i,fractionOld1_i,fractionOld2_i,fraction1_i,fraction2_i); - getParams(j,fractionOld1_j,fractionOld2_j,fraction1_j,fraction2_j); + getMixingWeights(i,mixWtSite1old_i,mixWtSite2old_i,mixWtSite1_i,mixWtSite2_i); + getMixingWeights(j,mixWtSite1old_j,mixWtSite2old_j,mixWtSite1_j,mixWtSite2_j); if (rsq < tb->innersq) error->one(FLERR,"Pair distance < table inner cutoff"); @@ -1104,8 +1114,8 @@ double PairTableRX::single(int i, int j, int itype, int jtype, double rsq, fforce = factor_lj * value; } - if (isite1 == isite2) fforce = sqrt(fraction1_i*fraction2_j)*fforce; - else fforce = (sqrt(fraction1_i*fraction2_j) + sqrt(fraction2_i*fraction1_j))*fforce; + if (isite1 == isite2) fforce = sqrt(mixWtSite1_i*mixWtSite2_j)*fforce; + else fforce = (sqrt(mixWtSite1_i*mixWtSite2_j) + sqrt(mixWtSite2_i*mixWtSite1_j))*fforce; if (tabstyle == LOOKUP) phi = tb->e[itable]; @@ -1115,8 +1125,8 @@ double PairTableRX::single(int i, int j, int itype, int jtype, double rsq, phi = a * tb->e[itable] + b * tb->e[itable+1] + ((a*a*a-a)*tb->e2[itable] + (b*b*b-b)*tb->e2[itable+1]) * tb->deltasq6; - if (isite1 == isite2) phi = sqrt(fraction1_i*fraction2_j)*phi; - else phi = (sqrt(fraction1_i*fraction2_j) + sqrt(fraction2_i*fraction1_j))*phi; + if (isite1 == isite2) phi = sqrt(mixWtSite1_i*mixWtSite2_j)*phi; + else phi = (sqrt(mixWtSite1_i*mixWtSite2_j) + sqrt(mixWtSite2_i*mixWtSite1_j))*phi; return factor_lj*phi; } @@ -1143,46 +1153,74 @@ void *PairTableRX::extract(const char *str, int &dim) /* ---------------------------------------------------------------------- */ -void PairTableRX::getParams(int id, double &fractionOld1, double &fractionOld2, double &fraction1, double &fraction2) +void PairTableRX::getMixingWeights(int id, double &mixWtSite1old, double &mixWtSite2old, double &mixWtSite1, double &mixWtSite2) { - double nTotal = 0.0; - double nTotalOld = 0.0; + double fractionOFAold, fractionOFA; + double fractionOld1, fraction1; + double fractionOld2, fraction2; + double nMoleculesOFAold, nMoleculesOFA; + double nMoleculesOld1, nMolecules1; + double nMoleculesOld2, nMolecules2; + double nTotal, nTotalOld; + + nTotal = 0.0; + nTotalOld = 0.0; for (int ispecies = 0; ispecies < nspecies; ++ispecies){ nTotal += atom->dvector[ispecies][id]; nTotalOld += atom->dvector[ispecies+nspecies][id]; } - if(nTotal < 1e-8 || nTotalOld < 1e-8) - error->all(FLERR,"The number of molecules in CG particle is less than 1e-8."); + if(nTotal < MY_EPSILON || nTotalOld < MY_EPSILON) + error->all(FLERR,"The number of molecules in CG particle is less than 10*DBL_EPSILON."); if (isOneFluid(isite1) == false){ - fractionOld1 = atom->dvector[isite1+nspecies][id]/nTotalOld; - fraction1 = atom->dvector[isite1][id]/nTotal; + nMoleculesOld1 = atom->dvector[isite1+nspecies][id]; + nMolecules1 = atom->dvector[isite1][id]; + fractionOld1 = nMoleculesOld1/nTotalOld; + fraction1 = nMolecules1/nTotal; } if (isOneFluid(isite2) == false){ - fractionOld2 = atom->dvector[isite2+nspecies][id]/nTotalOld; - fraction2 = atom->dvector[isite2][id]/nTotal; + nMoleculesOld2 = atom->dvector[isite2+nspecies][id]; + nMolecules2 = atom->dvector[isite2][id]; + fractionOld2 = nMoleculesOld2/nTotalOld; + fraction2 = nMolecules2/nTotal; } if (isOneFluid(isite1) || isOneFluid(isite2)){ - double fractionOld = 0.0; - double fraction = 0.0; + nMoleculesOFAold = 0.0; + nMoleculesOFA = 0.0; + fractionOFAold = 0.0; + fractionOFA = 0.0; for (int ispecies = 0; ispecies < nspecies; ispecies++){ if (isite1 == ispecies || isite2 == ispecies) continue; - - fractionOld += atom->dvector[ispecies+nspecies][id]/nTotalOld; - fraction += atom->dvector[ispecies][id]/nTotal; + nMoleculesOFAold += atom->dvector[ispecies+nspecies][id]; + nMoleculesOFA += atom->dvector[ispecies][id]; + fractionOFAold += atom->dvector[ispecies+nspecies][id]/nTotalOld; + fractionOFA += atom->dvector[ispecies][id]/nTotal; } - if(isOneFluid(isite1)){ - fractionOld1 = fractionOld; - fraction1 = fraction; + nMoleculesOld1 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); + fractionOld1 = fractionOFAold; + fraction1 = fractionOFA; } - if(isOneFluid(isite2)){ - fractionOld2 = fractionOld; - fraction2 = fraction; + nMoleculesOld2 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); + fractionOld2 = fractionOFAold; + fraction2 = fractionOFA; } } -} + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; + } +} diff --git a/src/USER-DPD/pair_table_rx.h b/src/USER-DPD/pair_table_rx.h index f04ebced20..c6afe6a8d5 100644 --- a/src/USER-DPD/pair_table_rx.h +++ b/src/USER-DPD/pair_table_rx.h @@ -72,7 +72,8 @@ class PairTableRX : public Pair { int nspecies; char *site1, *site2; int isite1, isite2; - void getParams(int, double &, double &, double &, double &); + void getMixingWeights(int, double &, double &, double &, double &); + bool fractionalWeighting; }; @@ -163,7 +164,7 @@ When using pair style table with a long-range KSpace solver, the cutoffs for all atom type pairs must all be the same, since the long-range solver starts at that cutoff. -E: The number of molecules in CG particle is less than 1e-8 +E: The number of molecules in CG particle is less than 10*DBL_EPSILON Self-explanatory. Check the species concentrations have been properly set and check the reaction kinetic solver parameters in fix rx to more for -- GitLab From 2af10cb8da9b8bbac64cead53eb7cae57088ed7c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 3 Jan 2017 10:09:44 -0700 Subject: [PATCH 034/337] Updating fix_eos_table_rx_kokkos to USER-DPD changes --- src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 64 ++++++++++++++++++++++---- src/KOKKOS/fix_eos_table_rx_kokkos.h | 4 +- 2 files changed, 58 insertions(+), 10 deletions(-) diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index c47923680c..aff2cdfa2d 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -29,6 +29,13 @@ #define MAXLINE 1024 +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + + using namespace LAMMPS_NS; using namespace FixConst; @@ -51,11 +58,31 @@ FixEOStableRXKokkos::FixEOStableRXKokkos(LAMMPS *lmp, int narg, char k_warning_flag = DAT::tdual_int_scalar("fix:warning_flag"); k_dHf = DAT::tdual_float_1d("fix:dHf",nspecies); - for (int n = 0; n < nspecies; n++) + k_energyCorr = DAT::tdual_float_1d("fix:energyCorr",nspecies); + k_tempCorrCoeff = DAT::tdual_float_1d("fix:tempCorrCoeff",nspecies); + k_moleculeCorrCoeff = DAT::tdual_float_1d("fix:moleculeCorrCoeff",nspecies); + for (int n = 0; n < nspecies; n++) { k_dHf.h_view(n) = dHf[n]; + k_energyCorr.h_view(n) = energyCorr[n]; + k_tempCorrCoeff.h_view(n) = tempCorrCoeff[n]; + k_moleculeCorrCoeff.h_view(n) = moleculeCorrCoeff[n]; + } + k_dHf.modify(); k_dHf.sync(); d_dHf = k_dHf.view(); + + k_energyCorr.modify(); + k_energyCorr.sync(); + d_energyCorr = k_energyCorr.view(); + + k_tempCorrCoeff.modify(); + k_tempCorrCoeff.sync(); + d_tempCorrCoeff = k_tempCorrCoeff.view(); + + k_moleculeCorrCoeff.modify(); + k_moleculeCorrCoeff.sync(); + d_moleculeCorrCoeff = k_moleculeCorrCoeff.view(); } /* ---------------------------------------------------------------------- */ @@ -268,11 +295,27 @@ template KOKKOS_INLINE_FUNCTION void FixEOStableRXKokkos::energy_lookup(int id, double thetai, double &ui) const { - int itable; - double fraction, uTmp, nTotal; + int itable, nPG; + double fraction, uTmp, nMolecules, nTotal, nTotalPG; + double tolerance = 1.0e-10; ui = 0.0; nTotal = 0.0; + nTotalPG = 0.0; + nPG = 0; + + if (rx_flag) { + for (int ispecies = 0; ispecies < nspecies; ispecies++ ) { + nTotal += dvector(ispecies,id); + if (fabs(d_moleculeCorrCoeff[ispecies]) > tolerance) { + nPG++; + nTotalPG += dvector(ispecies,id); + } + } + } else { + nTotal = 1.0; + } + for(int ispecies=0;ispecieslo); @@ -289,9 +332,13 @@ void FixEOStableRXKokkos::energy_lookup(int id, double thetai, doubl uTmp = d_table_const.e(ispecies,itable) + fraction*d_table_const.de(ispecies,itable); uTmp += d_dHf[ispecies]; - // mol fraction form: - ui += dvector(ispecies,id)*uTmp; - nTotal += dvector(ispecies,id); + uTmp += d_tempCorrCoeff[ispecies]*thetai; // temperature correction + uTmp += d_energyCorr[ispecies]; // energy correction + if (nPG > 0) ui += d_moleculeCorrCoeff[ispecies]*nTotalPG/double(nPG); // molecule correction + + if (rx_flag) nMolecules = dvector(ispecies,id); + else nMolecules = 1.0; + ui += nMolecules*uTmp; } } ui = ui - double(nTotal+1.5)*boltz*thetai; @@ -312,6 +359,7 @@ void FixEOStableRXKokkos::temperature_lookup(int id, double ui, doub double maxit = 100; double temp; double delta = 0.001; + double tolerance = 1.0e-10; int lo = d_table_const.lo(0); int hi = d_table_const.hi(0); @@ -337,7 +385,7 @@ void FixEOStableRXKokkos::temperature_lookup(int id, double ui, doub // Apply the Secant Method for(it=0; it::temperature_lookup(int id, double ui, doub break; } temp = t2 - f2*(t2-t1)/(f2-f1); - if(fabs(temp-t2) < 1e-6) break; + if(fabs(temp-t2) < tolerance) break; f1 = f2; t1 = t2; t2 = temp; diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.h b/src/KOKKOS/fix_eos_table_rx_kokkos.h index d4a5094ae0..91d73f1036 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.h +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.h @@ -112,8 +112,8 @@ class FixEOStableRXKokkos : public FixEOStableRX { int update_table; void create_kokkos_tables(); - DAT::tdual_float_1d k_dHf; - typename AT::t_float_1d d_dHf; + DAT::tdual_float_1d k_dHf,k_energyCorr,k_tempCorrCoeff,k_moleculeCorrCoeff; + typename AT::t_float_1d d_dHf,d_energyCorr,d_tempCorrCoeff,d_moleculeCorrCoeff; typename AT::t_int_1d mask; typename AT::t_efloat_1d uCond,uMech,uChem,uCG,uCGnew,rho,dpdTheta,duChem; -- GitLab From f220b07625b7089b981fcaeff999bae3712b6a3a Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 3 Jan 2017 10:36:55 -0700 Subject: [PATCH 035/337] Updating pair_exp6_rx_kokkos to USER-DPD changes --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 310 +++++++++++++++++------------ src/KOKKOS/pair_exp6_rx_kokkos.h | 30 ++- src/USER-DPD/pair_exp6_rx.h | 2 +- 3 files changed, 203 insertions(+), 139 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index ce3b547435..3ce6b78e57 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -41,6 +41,12 @@ using namespace MathSpecial; #define MAXLINE 1024 #define DELTA 4 +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + #define oneFluidApproxParameter (-1) #define isOneFluidApprox(_site) ( (_site) == oneFluidApproxParameter ) @@ -165,29 +171,29 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) PairExp6ParamData.epsilon1 = typename AT::t_float_1d("PairExp6ParamData.epsilon1" ,np_total); PairExp6ParamData.alpha1 = typename AT::t_float_1d("PairExp6ParamData.alpha1" ,np_total); PairExp6ParamData.rm1 = typename AT::t_float_1d("PairExp6ParamData.rm1" ,np_total); - PairExp6ParamData.fraction1 = typename AT::t_float_1d("PairExp6ParamData.fraction1" ,np_total); + PairExp6ParamData.mixWtSite1 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1" ,np_total); PairExp6ParamData.epsilon2 = typename AT::t_float_1d("PairExp6ParamData.epsilon2" ,np_total); PairExp6ParamData.alpha2 = typename AT::t_float_1d("PairExp6ParamData.alpha2" ,np_total); PairExp6ParamData.rm2 = typename AT::t_float_1d("PairExp6ParamData.rm2" ,np_total); - PairExp6ParamData.fraction2 = typename AT::t_float_1d("PairExp6ParamData.fraction2" ,np_total); + PairExp6ParamData.mixWtSite2 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2" ,np_total); PairExp6ParamData.epsilonOld1 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld1" ,np_total); PairExp6ParamData.alphaOld1 = typename AT::t_float_1d("PairExp6ParamData.alphaOld1" ,np_total); PairExp6ParamData.rmOld1 = typename AT::t_float_1d("PairExp6ParamData.rmOld1" ,np_total); - PairExp6ParamData.fractionOld1 = typename AT::t_float_1d("PairExp6ParamData.fractionOld1",np_total); + PairExp6ParamData.mixWtSite1old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1old",np_total); PairExp6ParamData.epsilonOld2 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld2" ,np_total); PairExp6ParamData.alphaOld2 = typename AT::t_float_1d("PairExp6ParamData.alphaOld2" ,np_total); PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); - PairExp6ParamData.fractionOld2 = typename AT::t_float_1d("PairExp6ParamData.fractionOld2",np_total); + PairExp6ParamData.mixWtSite2old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2old",np_total); - Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); } k_error_flag.template modify(); k_error_flag.template sync(); if (k_error_flag.h_view() == 1) - error->all(FLERR,"The number of molecules in CG particle is less than 1e-8."); + error->all(FLERR,"The number of molecules in CG particle is less than 10*DBL_EPSILON."); else if (k_error_flag.h_view() == 2) - error->all(FLERR,"Computed fraction less than -1.0e-10"); + error->all(FLERR,"Computed fraction less than -10*DBL_EPSILON"); int inum = list->inum; NeighListKokkos* k_list = static_cast*>(list); @@ -249,23 +255,23 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) template KOKKOS_INLINE_FUNCTION -void PairExp6rxKokkos::operator()(TagPairExp6rxgetParamsEXP6, const int &i) const { - getParamsEXP6 (i, PairExp6ParamData.epsilon1[i], +void PairExp6rxKokkos::operator()(TagPairExp6rxgetMixingWeights, const int &i) const { + getMixingWeights (i, PairExp6ParamData.epsilon1[i], PairExp6ParamData.alpha1[i], PairExp6ParamData.rm1[i], - PairExp6ParamData.fraction1[i], + PairExp6ParamData.mixWtSite1[i], PairExp6ParamData.epsilon2[i], PairExp6ParamData.alpha2[i], PairExp6ParamData.rm2[i], - PairExp6ParamData.fraction2[i], + PairExp6ParamData.mixWtSite2[i], PairExp6ParamData.epsilonOld1[i], PairExp6ParamData.alphaOld1[i], PairExp6ParamData.rmOld1[i], - PairExp6ParamData.fractionOld1[i], + PairExp6ParamData.mixWtSite1old[i], PairExp6ParamData.epsilonOld2[i], PairExp6ParamData.alphaOld2[i], PairExp6ParamData.rmOld2[i], - PairExp6ParamData.fractionOld2[i]); + PairExp6ParamData.mixWtSite2old[i]); } template @@ -300,10 +306,10 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::allocate() memory->create(cut,n+1,n+1,"pair:cut_lj"); } + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::coeff(int narg, char **arg) +{ + PairExp6rx::coeff(narg,arg); + + if (scalingFlag == POLYNOMIAL) + for (int i = 0; i < 6; i++) { + s_coeffAlpha[i] = coeffAlpha[i]; + s_coeffEps[i] = coeffEps[i]; + s_coeffRm[i] = coeffRm[i]; + } +} + /* ---------------------------------------------------------------------- */ template @@ -793,7 +817,7 @@ void PairExp6rxKokkos::setup() template KOKKOS_INLINE_FUNCTION -void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double &alpha1,double &rm1, double &fraction1,double &epsilon2,double &alpha2,double &rm2,double &fraction2,double &epsilon1_old,double &alpha1_old,double &rm1_old, double &fraction1_old,double &epsilon2_old,double &alpha2_old,double &rm2_old,double &fraction2_old) const +void PairExp6rxKokkos::getMixingWeights(int id,double &epsilon1,double &alpha1,double &rm1, double &mixWtSite1,double &epsilon2,double &alpha2,double &rm2,double &mixWtSite2,double &epsilon1_old,double &alpha1_old,double &rm1_old, double &mixWtSite1old,double &epsilon2_old,double &alpha2_old,double &rm2_old,double &mixWtSite2old) const { int iparam, jparam; double rmi, rmj, rmij, rm3ij; @@ -801,11 +825,16 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double double alphai, alphaj, alphaij; double epsilon_old, rm3_old, alpha_old; double epsilon, rm3, alpha; - double fractionOFA, fractionOFA_old; - double nTotalOFA, nTotalOFA_old; - double nTotal, nTotal_old; double xMolei, xMolej, xMolei_old, xMolej_old; + double fractionOFAold, fractionOFA; + double fractionOld1, fraction1; + double fractionOld2, fraction2; + double nMoleculesOFAold, nMoleculesOFA; + double nMoleculesOld1, nMolecules1; + double nMoleculesOld2, nMolecules2; + double nTotal, nTotalold; + rm3 = 0.0; epsilon = 0.0; alpha = 0.0; @@ -813,32 +842,32 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double rm3_old = 0.0; alpha_old = 0.0; fractionOFA = 0.0; - fractionOFA_old = 0.0; - nTotalOFA = 0.0; - nTotalOFA_old = 0.0; + fractionOFAold = 0.0; + nMoleculesOFA = 0.0; + nMoleculesOFAold = 0.0; nTotal = 0.0; - nTotal_old = 0.0; + nTotalold = 0.0; // Compute the total number of molecules in the old and new CG particle as well as the total number of molecules in the fluid portion of the old and new CG particle for (int ispecies = 0; ispecies < nspecies; ispecies++){ nTotal += dvector(ispecies,id); - nTotal_old += dvector(ispecies+nspecies,id); + nTotalold += dvector(ispecies+nspecies,id); iparam = d_mol2param[ispecies]; if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { if (isite1 == d_params[iparam].ispecies || isite2 == d_params[iparam].ispecies) continue; - nTotalOFA_old += dvector(ispecies+nspecies,id); - nTotalOFA += dvector(ispecies,id); + nMoleculesOFAold += dvector(ispecies+nspecies,id); + nMoleculesOFA += dvector(ispecies,id); } } - if(nTotal < 1e-8 || nTotal_old < 1e-8) + if(nTotal < MY_EPSILON || nTotalold < MY_EPSILON) k_error_flag.d_view() = 1; // Compute the mole fraction of molecules within the fluid portion of the particle (One Fluid Approximation) - fractionOFA_old = nTotalOFA_old / nTotal_old; - fractionOFA = nTotalOFA / nTotal; + fractionOFAold = nMoleculesOFAold / nTotalold; + fractionOFA = nMoleculesOFA / nTotal; for (int ispecies = 0; ispecies < nspecies; ispecies++) { iparam = d_mol2param[ispecies]; @@ -854,8 +883,10 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double alpha1 = d_params[iparam].alpha; // Compute the mole fraction of Site1 - fraction1_old = dvector(ispecies+nspecies,id)/nTotal_old; - fraction1 = dvector(ispecies,id)/nTotal; + nMoleculesOld1 = dvector(ispecies+nspecies,id); + nMolecules1 = dvector(ispecies,id); + fractionOld1 = nMoleculesOld1/nTotalold; + fraction1 = nMolecules1/nTotal; } // If Site2 matches a pure species, then grab the parameters @@ -868,8 +899,9 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double alpha2 = d_params[iparam].alpha; // Compute the mole fraction of Site2 - fraction2_old = dvector(ispecies+nspecies,id)/nTotal_old; - fraction2 = dvector(ispecies,id)/nTotal; + nMoleculesOld2 = dvector(ispecies+nspecies,id); + nMolecules2 = dvector(ispecies,id); + fractionOld2 = dvector(ispecies+nspecies,id)/nTotalold; } // If Site1 or Site2 matches is a fluid, then compute the paramters @@ -878,8 +910,10 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double rmi = d_params[iparam].rm; epsiloni = d_params[iparam].epsilon; alphai = d_params[iparam].alpha; - xMolei = dvector(ispecies,id)/nTotalOFA; - xMolei_old = dvector(ispecies+nspecies,id)/nTotalOFA_old; + if(nMoleculesOFA::getParamsEXP6(int id,double &epsilon1,double rmj = d_params[jparam].rm; epsilonj = d_params[jparam].epsilon; alphaj = d_params[jparam].alpha; - xMolej = dvector(jspecies,id)/nTotalOFA; - xMolej_old = dvector(jspecies+nspecies,id)/nTotalOFA_old; + if(nMoleculesOFA 0.0){ + if(fractionOFAold > 0.0){ rm3_old += xMolei_old*xMolej_old*rm3ij; epsilon_old += xMolei_old*xMolej_old*rm3ij*epsilonij; alpha_old += xMolei_old*xMolej_old*rm3ij*epsilonij*alphaij; @@ -912,7 +948,7 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double if (isOneFluidApprox(isite1)){ rm1 = cbrt(rm3); - if(rm1 < 1e-16) { + if(rm1 < MY_EPSILON) { rm1 = 0.0; epsilon1 = 0.0; alpha1 = 0.0; @@ -920,11 +956,11 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double epsilon1 = epsilon / rm3; alpha1 = alpha / epsilon1 / rm3; } - + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); fraction1 = fractionOFA; rm1_old = cbrt(rm3_old); - if(rm1_old < 1e-16) { + if(rm1_old < MY_EPSILON) { rm1_old = 0.0; epsilon1_old = 0.0; alpha1_old = 0.0; @@ -932,42 +968,21 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double epsilon1_old = epsilon_old / rm3_old; alpha1_old = alpha_old / epsilon1_old / rm3_old; } - fraction1_old = fractionOFA_old; - - // Fuchslin-Like Exp-6 Scaling - double powfuch = 0.0; - if(exponentEpsilon < 0.0){ - powfuch = pow(nTotalOFA,-exponentEpsilon); - if(powfuch<1e-15) epsilon1 = 0.0; - else epsilon1 *= 1.0/powfuch; - - powfuch = pow(nTotalOFA_old,-exponentEpsilon); - if(powfuch<1e-15) epsilon1_old = 0.0; - else epsilon1_old *= 1.0/powfuch; - - } else { - epsilon1 *= pow(nTotalOFA,exponentEpsilon); - epsilon1_old *= pow(nTotalOFA_old,exponentEpsilon); - } - - if(exponentR < 0.0){ - powfuch = pow(nTotalOFA,-exponentR); - if(powfuch<1e-15) rm1 = 0.0; - else rm1 *= 1.0/powfuch; - - powfuch = pow(nTotalOFA_old,-exponentR); - if(powfuch<1e-15) rm1_old = 0.0; - else rm1_old *= 1.0/powfuch; - - } else { - rm1 *= pow(nTotalOFA,exponentR); - rm1_old *= pow(nTotalOFA_old,exponentR); + nMoleculesOld1 = 1.0-(nTotalold-nMoleculesOFAold); + fractionOld1 = fractionOFAold; + + if(scalingFlag == EXPONENT){ + exponentScaling(nMoleculesOFA,epsilon1,rm1); + exponentScaling(nMoleculesOFAold,epsilon1_old,rm1_old); + } else if(scalingFlag == POLYNOMIAL){ + polynomialScaling(nMoleculesOFA,alpha1,epsilon1,rm1); + polynomialScaling(nMoleculesOFAold,alpha1_old,epsilon1_old,rm1_old); } } if (isOneFluidApprox(isite2)){ rm2 = cbrt(rm3); - if(rm2 < 1e-16) { + if(rm2 < MY_EPSILON) { rm2 = 0.0; epsilon2 = 0.0; alpha2 = 0.0; @@ -975,10 +990,11 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double epsilon2 = epsilon / rm3; alpha2 = alpha / epsilon2 / rm3; } + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); fraction2 = fractionOFA; rm2_old = cbrt(rm3_old); - if(rm2_old < 1e-16) { + if(rm2_old < MY_EPSILON) { rm2_old = 0.0; epsilon2_old = 0.0; alpha2_old = 0.0; @@ -986,68 +1002,104 @@ void PairExp6rxKokkos::getParamsEXP6(int id,double &epsilon1,double epsilon2_old = epsilon_old / rm3_old; alpha2_old = alpha_old / epsilon2_old / rm3_old; } - fraction2_old = fractionOFA_old; - - // Fuchslin-Like Exp-6 Scaling - double powfuch = 0.0; - if(exponentEpsilon < 0.0){ - powfuch = pow(nTotalOFA,-exponentEpsilon); - if(powfuch<1e-15) epsilon2 = 0.0; - else epsilon2 *= 1.0/powfuch; - - powfuch = pow(nTotalOFA_old,-exponentEpsilon); - if(powfuch<1e-15) epsilon2_old = 0.0; - else epsilon2_old *= 1.0/powfuch; - - } else { - epsilon2 *= pow(nTotalOFA,exponentEpsilon); - epsilon2_old *= pow(nTotalOFA_old,exponentEpsilon); - } - - if(exponentR < 0.0){ - powfuch = pow(nTotalOFA,-exponentR); - if(powfuch<1e-15) rm2 = 0.0; - else rm2 *= 1.0/powfuch; - - powfuch = pow(nTotalOFA_old,-exponentR); - if(powfuch<1e-15) rm2_old = 0.0; - else rm2_old *= 1.0/powfuch; - - } else { - rm2 *= pow(nTotalOFA,exponentR); - rm2_old *= pow(nTotalOFA_old,exponentR); + nMoleculesOld2 = 1.0-(nTotalold-nMoleculesOFAold); + fractionOld2 = fractionOFAold; + + if(scalingFlag == EXPONENT){ + exponentScaling(nMoleculesOFA,epsilon2,rm2); + exponentScaling(nMoleculesOFAold,epsilon2_old,rm2_old); + } else if(scalingFlag == POLYNOMIAL){ + polynomialScaling(nMoleculesOFA,alpha2,epsilon2,rm2); + polynomialScaling(nMoleculesOFAold,alpha2_old,epsilon2_old,rm2_old); } } // Check that no fractions are less than zero - if(fraction1 < 0.0){ - if(fraction1 < -1.0e-10){ + if(fraction1 < 0.0 || nMolecules1 < 0.0){ + if(fraction1 < -MY_EPSILON || nMolecules1 < -MY_EPSILON){ k_error_flag.d_view() = 2; } + nMolecules1 = 0.0; fraction1 = 0.0; } - if(fraction2 < 0.0){ - if(fraction2 < -1.0e-10){ + if(fraction2 < 0.0 || nMolecules2 < 0.0){ + if(fraction2 < -MY_EPSILON || nMolecules2 < -MY_EPSILON){ k_error_flag.d_view() = 2; } + nMolecules2 = 0.0; fraction2 = 0.0; } - if(fraction1_old < 0.0){ - if(fraction1_old < -1.0e-10){ + if(fractionOld1 < 0.0 || nMoleculesOld1 < 0.0){ + if(fractionOld1 < -MY_EPSILON || nMoleculesOld1 < -MY_EPSILON){ k_error_flag.d_view() = 2; } - fraction1_old = 0.0; + nMoleculesOld1 = 0.0; + fractionOld1 = 0.0; } - if(fraction2_old < 0.0){ - if(fraction2_old < -1.0e-10){ + if(fractionOld2 < 0.0 || nMoleculesOld2 < 0.0){ + if(fractionOld2 < -MY_EPSILON || nMoleculesOld2 < -MY_EPSILON){ k_error_flag.d_view() = 2; } - fraction2_old = 0.0; + nMoleculesOld2 = 0.0; + fractionOld2 = 0.0; + } + + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; } } /* ---------------------------------------------------------------------- */ +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::exponentScaling(double phi, double &epsilon, double &rm) const +{ + double powfuch; + + if(exponentEpsilon < 0.0){ + powfuch = pow(phi,-exponentEpsilon); + if(powfuch +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::polynomialScaling(double phi, double &alpha, double &epsilon, double &rm) const +{ + double phi2 = phi*phi; + double phi3 = phi2*phi; + double phi4 = phi2*phi2; + double phi5 = phi2*phi3; + + alpha = (s_coeffAlpha[0]*phi5 + s_coeffAlpha[1]*phi4 + s_coeffAlpha[2]*phi3 + s_coeffAlpha[3]*phi2 + s_coeffAlpha[4]*phi + s_coeffAlpha[5]); + epsilon *= (s_coeffEps[0]*phi5 + s_coeffEps[1]*phi4 + s_coeffEps[2]*phi3 + s_coeffEps[3]*phi2 + s_coeffEps[4]*phi + s_coeffEps[5]); + rm *= (s_coeffEps[0]*phi5 + s_coeffEps[1]*phi4 + s_coeffEps[2]*phi3 + s_coeffEps[3]*phi2 + s_coeffEps[4]*phi + s_coeffEps[5]); +} + +/* ---------------------------------------------------------------------- */ + template KOKKOS_INLINE_FUNCTION double PairExp6rxKokkos::func_rin(const double &alpha) const diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 7dfe20fc22..488c9d0039 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -38,18 +38,21 @@ struct PairExp6ParamDataTypeKokkos typedef ArrayTypes AT; int n; - typename AT::t_float_1d epsilon1, alpha1, rm1, fraction1, - epsilon2, alpha2, rm2, fraction2, - epsilonOld1, alphaOld1, rmOld1, fractionOld1, - epsilonOld2, alphaOld2, rmOld2, fractionOld2; + typename AT::t_float_1d epsilon1, alpha1, rm1, mixWtSite1, + epsilon2, alpha2, rm2, mixWtSite2, + epsilonOld1, alphaOld1, rmOld1, mixWtSite1old, + epsilonOld2, alphaOld2, rmOld2, mixWtSite2old; // Default constructor -- nullify everything. PairExp6ParamDataTypeKokkos(void) - : n(0) + : n(0), epsilon1(NULL), alpha1(NULL), rm1(NULL), mixWtSite1(NULL), + epsilon2(NULL), alpha2(NULL), rm2(NULL), mixWtSite2(NULL), + epsilonOld1(NULL), alphaOld1(NULL), rmOld1(NULL), mixWtSite1old(NULL), + epsilonOld2(NULL), alphaOld2(NULL), rmOld2(NULL), mixWtSite2old(NULL) {} }; -struct TagPairExp6rxgetParamsEXP6{}; +struct TagPairExp6rxgetMixingWeights{}; template struct TagPairExp6rxCompute{}; @@ -64,10 +67,11 @@ class PairExp6rxKokkos : public PairExp6rx { PairExp6rxKokkos(class LAMMPS *); virtual ~PairExp6rxKokkos(); void compute(int, int); + void coeff(int, char **); void init_style(); KOKKOS_INLINE_FUNCTION - void operator()(TagPairExp6rxgetParamsEXP6, const int&) const; + void operator()(TagPairExp6rxgetMixingWeights, const int&) const; template KOKKOS_INLINE_FUNCTION @@ -127,7 +131,15 @@ class PairExp6rxKokkos : public PairExp6rx { void setup(); KOKKOS_INLINE_FUNCTION - void getParamsEXP6(int, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &) const; + void getMixingWeights(int, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &) const; + + KOKKOS_INLINE_FUNCTION + void exponentScaling(double, double &, double &) const; + + KOKKOS_INLINE_FUNCTION + void polynomialScaling(double, double &, double &, double &) const; + + double s_coeffAlpha[6],s_coeffEps[6],s_coeffRm[6]; KOKKOS_INLINE_FUNCTION double func_rin(const double &) const; @@ -196,7 +208,7 @@ E: Potential file has duplicate entry. Self-explanatory -E: The number of molecules in CG particle is less than 1e-8. +E: The number of molecules in CG particle is less than 10*DBL_EPSILON. Self-explanatory. Check the species concentrations have been properly set and check the reaction kinetic solver parameters in fix rx to more for diff --git a/src/USER-DPD/pair_exp6_rx.h b/src/USER-DPD/pair_exp6_rx.h index a7531da318..31d4ffb20b 100644 --- a/src/USER-DPD/pair_exp6_rx.h +++ b/src/USER-DPD/pair_exp6_rx.h @@ -30,7 +30,7 @@ class PairExp6rx : public Pair { virtual ~PairExp6rx(); virtual void compute(int, int); void settings(int, char **); - void coeff(int, char **); + virtual void coeff(int, char **); double init_one(int, int); void write_restart(FILE *); void read_restart(FILE *); -- GitLab From ccaa0506cb93e9f884ebc22b32575feda7e99199 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 22 Dec 2016 07:55:15 -0700 Subject: [PATCH 036/337] LAMMPS_LAMBDA from ibaned/lammps@7559bc9 --- src/KOKKOS/kokkos_type.h | 6 ++++++ 1 file changed, 6 insertions(+) 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 -- GitLab From 66cdd3a708b911663cc45e7d6117f09d39784123 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 22 Dec 2016 08:01:46 -0700 Subject: [PATCH 037/337] draft fix_dpd_energy_kokkos.h --- src/KOKKOS/fix_dpd_energy_kokkos.h | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/KOKKOS/fix_dpd_energy_kokkos.h diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.h b/src/KOKKOS/fix_dpd_energy_kokkos.h new file mode 100644 index 0000000000..399cf91334 --- /dev/null +++ b/src/KOKKOS/fix_dpd_energy_kokkos.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------- + 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(dpd/energy/kk,FixDPDenergyKokkos) +FixStyle(dpd/energy/kk/device,FixDPDenergyKokkos) +FixStyle(dpd/energy/kk/host,FixDPDenergyKokkos) + +#else + +#ifndef LMP_FIX_DPDE_H +#define LMP_FIX_DPDE_H + +#include "fix_dpd_energy.h" + +namespace LAMMPS_NS { + +class FixDPDenergyKokkos : public FixDPDEnergy { + public: + FixDPDenergyKokkos(class LAMMPS *, int, char **); + virtual ~FixDPDenergyKokkos() {} + virtual void initial_integrate(int); + virtual void final_integrate(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ -- GitLab From 53e07996c6929f422568b5473a77cbcaea799c1e Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 22 Dec 2016 08:07:48 -0700 Subject: [PATCH 038/337] save draft of fix_dpd_energy_kokkos.cpp --- src/KOKKOS/fix_dpd_energy_kokkos.cpp | 77 ++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/KOKKOS/fix_dpd_energy_kokkos.cpp diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.cpp b/src/KOKKOS/fix_dpd_energy_kokkos.cpp new file mode 100644 index 0000000000..ea93c28b01 --- /dev/null +++ b/src/KOKKOS/fix_dpd_energy_kokkos.cpp @@ -0,0 +1,77 @@ +/* ---------------------------------------------------------------------- + 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_dpd_energy_kokkos.h" +#include "atom_kokkos.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "modify.h" +#include "error.h" +#include "pair_dpd_fdt_energy.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixDPDenergyKokkos::FixDPDenergyKokkos(LAMMPS *lmp, int narg, char **arg) : + FixDPDenergy(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass +------------------------------------------------------------------------- */ + +void FixDPDenergyKokkos::initial_integrate(int vflag) +{ + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + t_efloat_1d uCond = atomKK + double *uCond = atom->uCond; + double *uMech = atom->uMech; + double *duCond = pairDPDE->duCond; + double *duMech = pairDPDE->duMech; + + for (int i = 0; i < nlocal; i++){ + uCond[i] += 0.5*update->dt*duCond[i]; + uMech[i] += 0.5*update->dt*duMech[i]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixDPDenergyKokkos::final_integrate() +{ + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + double *uCond = atom->uCond; + double *uMech = atom->uMech; + double *duCond = pairDPDE->duCond; + double *duMech = pairDPDE->duMech; + + for (int i = 0; i < nlocal; i++){ + uCond[i] += 0.5*update->dt*duCond[i]; + uMech[i] += 0.5*update->dt*duMech[i]; + } +} -- GitLab From 04e2f170a33c2162f841b8a21403d95048b86371 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 22 Dec 2016 09:28:25 -0700 Subject: [PATCH 039/337] first draft fix_dpd_energy_kokkos had to make k_duCond and k_duMech in pair_dpd_fdt_energy_kokkos public so they could be accessed and sync'ed --- src/KOKKOS/fix_dpd_energy_kokkos.cpp | 64 +++++++++++++++---------- src/KOKKOS/fix_dpd_energy_kokkos.h | 10 ++++ src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 3 +- 3 files changed, 50 insertions(+), 27 deletions(-) diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.cpp b/src/KOKKOS/fix_dpd_energy_kokkos.cpp index ea93c28b01..38671d66ab 100644 --- a/src/KOKKOS/fix_dpd_energy_kokkos.cpp +++ b/src/KOKKOS/fix_dpd_energy_kokkos.cpp @@ -20,14 +20,14 @@ #include "respa.h" #include "modify.h" #include "error.h" -#include "pair_dpd_fdt_energy.h" using namespace LAMMPS_NS; using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixDPDenergyKokkos::FixDPDenergyKokkos(LAMMPS *lmp, int narg, char **arg) : +template +FixDPDenergyKokkos::FixDPDenergyKokkos(LAMMPS *lmp, int narg, char **arg) : FixDPDenergy(lmp, narg, arg) { kokkosable = 1; @@ -35,43 +35,55 @@ FixDPDenergyKokkos::FixDPDenergyKokkos(LAMMPS *lmp, int narg, char **arg) : execution_space = ExecutionSpaceFromDevice::space; datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; + pairDPDEKK = dynamic_cast(pairDPDE); + if (!pairDPDEKK) + error->all(FLERR,"Must use pair_style dpd/fdt/energy/kk with fix dpd/energy/kk"); } -/* ---------------------------------------------------------------------- - allow for both per-type and per-atom mass -------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ -void FixDPDenergyKokkos::initial_integrate(int vflag) +template +void FixDPDenergyKokkos::take_half_step() { int nlocal = atom->nlocal; if (igroup == atom->firstgroup) nlocal = atom->nfirst; - t_efloat_1d uCond = atomKK - double *uCond = atom->uCond; - double *uMech = atom->uMech; - double *duCond = pairDPDE->duCond; - double *duMech = pairDPDE->duMech; + atomKK->sync(execution_space, UCOND_MASK); + t_efloat_1d uCond = atomKK->k_uCond.view(); + atomKK->sync(execution_space, UMECH_MASK); + t_efloat_1d uMech = atomKK->k_uMech.view(); + + pairDPDEKK->k_duCond.sync(); + t_efloat_1d_const duCond = pairDPDEKK->k_duCond.view(); + pairDPDEKK->k_duMech.sync(); + t_efloat_1d_const duMech = pairDPDEKK->k_duMech.view(); + + auto dt = update->dt; + + Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { + uCond(i) += 0.5*dt*duCond(i); + uMech(i) += 0.5*dt*duMech(i); + }); - for (int i = 0; i < nlocal; i++){ - uCond[i] += 0.5*update->dt*duCond[i]; - uMech[i] += 0.5*update->dt*duMech[i]; - } + atomKK->modified(execution_space, UCOND_MASK); + atomKK->modified(execution_space, UMECH_MASK); + //should not be needed once everything is Kokkos + atomKK->sync(ExecutionSpaceFromDevice, UCOND_MASK); + atomKK->sync(ExecutionSpaceFromDevice, UMECH_MASK); } /* ---------------------------------------------------------------------- */ -void FixDPDenergyKokkos::final_integrate() +template +void FixDPDenergyKokkos::initial_integrate(int) { - int nlocal = atom->nlocal; - if (igroup == atom->firstgroup) nlocal = atom->nfirst; + take_half_step(); +} - double *uCond = atom->uCond; - double *uMech = atom->uMech; - double *duCond = pairDPDE->duCond; - double *duMech = pairDPDE->duMech; +/* ---------------------------------------------------------------------- */ - for (int i = 0; i < nlocal; i++){ - uCond[i] += 0.5*update->dt*duCond[i]; - uMech[i] += 0.5*update->dt*duMech[i]; - } +template +void FixDPDenergyKokkos::final_integrate() +{ + take_half_step(); } diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.h b/src/KOKKOS/fix_dpd_energy_kokkos.h index 399cf91334..e5ae2b0127 100644 --- a/src/KOKKOS/fix_dpd_energy_kokkos.h +++ b/src/KOKKOS/fix_dpd_energy_kokkos.h @@ -23,15 +23,21 @@ FixStyle(dpd/energy/kk/host,FixDPDenergyKokkos) #define LMP_FIX_DPDE_H #include "fix_dpd_energy.h" +#include "pair_dpd_dft_energy_kokkos.h" namespace LAMMPS_NS { +template class FixDPDenergyKokkos : public FixDPDEnergy { public: FixDPDenergyKokkos(class LAMMPS *, int, char **); virtual ~FixDPDenergyKokkos() {} virtual void initial_integrate(int); virtual void final_integrate(); + + protected: + void take_half_step(); + PairDPDfdtEnergyKokkos* pairDPDEKK; }; } @@ -41,4 +47,8 @@ class FixDPDenergyKokkos : public FixDPDEnergy { /* ERROR/WARNING messages: +E: Must use pair_style dpd/fdt/energy/kk with fix dpd/energy/kk + +Self-explanatory. + */ diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index 8e7d01de2a..41360091bc 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -84,6 +84,8 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { F_FLOAT cut,a0,sigma,kappa; }; + DAT::tdual_efloat_1d k_duCond,k_duMech; + protected: int eflag,vflag; int nlocal,neighflag; @@ -110,7 +112,6 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { typename ArrayTypes::t_float_1d_randomread mass; double *rmass; typename AT::t_efloat_1d dpdTheta; - DAT::tdual_efloat_1d k_duCond,k_duMech; typename AT::t_efloat_1d d_duCond,d_duMech; HAT::t_efloat_1d h_duCond,h_duMech; -- GitLab From 89795b3653ea6270b90911cf30b3777312af5828 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 22 Dec 2016 10:18:30 -0700 Subject: [PATCH 040/337] got fix_dpd_energy_kokkos to compile --- src/KOKKOS/Install.sh | 2 ++ src/KOKKOS/fix_dpd_energy_kokkos.cpp | 26 ++++++++++++++++++-------- src/KOKKOS/fix_dpd_energy_kokkos.h | 8 ++++---- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 17e9f93c9d..96ec348b30 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -99,6 +99,8 @@ action fix_setforce_kokkos.cpp action fix_setforce_kokkos.h action fix_wall_reflect_kokkos.cpp action fix_wall_reflect_kokkos.h +action fix_dpd_energy_kokkos.cpp fix_dpd_energy.cpp +action fix_dpd_energy_kokkos.h fix_dpd_energy.h action gridcomm_kokkos.cpp gridcomm.cpp action gridcomm_kokkos.h gridcomm.h action improper_harmonic_kokkos.cpp improper_harmonic.cpp diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.cpp b/src/KOKKOS/fix_dpd_energy_kokkos.cpp index 38671d66ab..6ab0b215b4 100644 --- a/src/KOKKOS/fix_dpd_energy_kokkos.cpp +++ b/src/KOKKOS/fix_dpd_energy_kokkos.cpp @@ -14,6 +14,7 @@ #include #include #include "fix_dpd_energy_kokkos.h" +#include "atom_masks.h" #include "atom_kokkos.h" #include "force.h" #include "update.h" @@ -48,15 +49,17 @@ void FixDPDenergyKokkos::take_half_step() int nlocal = atom->nlocal; if (igroup == atom->firstgroup) nlocal = atom->nfirst; + using AT = ArrayTypes; + atomKK->sync(execution_space, UCOND_MASK); - t_efloat_1d uCond = atomKK->k_uCond.view(); + typename AT::t_efloat_1d uCond = atomKK->k_uCond.view(); atomKK->sync(execution_space, UMECH_MASK); - t_efloat_1d uMech = atomKK->k_uMech.view(); + typename AT::t_efloat_1d uMech = atomKK->k_uMech.view(); - pairDPDEKK->k_duCond.sync(); - t_efloat_1d_const duCond = pairDPDEKK->k_duCond.view(); - pairDPDEKK->k_duMech.sync(); - t_efloat_1d_const duMech = pairDPDEKK->k_duMech.view(); + pairDPDEKK->k_duCond.template sync(); + typename AT::t_efloat_1d_const duCond = pairDPDEKK->k_duCond.template view(); + pairDPDEKK->k_duMech.template sync(); + typename AT::t_efloat_1d_const duMech = pairDPDEKK->k_duMech.template view(); auto dt = update->dt; @@ -68,8 +71,8 @@ void FixDPDenergyKokkos::take_half_step() atomKK->modified(execution_space, UCOND_MASK); atomKK->modified(execution_space, UMECH_MASK); //should not be needed once everything is Kokkos - atomKK->sync(ExecutionSpaceFromDevice, UCOND_MASK); - atomKK->sync(ExecutionSpaceFromDevice, UMECH_MASK); + atomKK->sync(ExecutionSpaceFromDevice::space, UCOND_MASK); + atomKK->sync(ExecutionSpaceFromDevice::space, UMECH_MASK); } /* ---------------------------------------------------------------------- */ @@ -87,3 +90,10 @@ void FixDPDenergyKokkos::final_integrate() { take_half_step(); } + +namespace LAMMPS_NS { +template class FixDPDenergyKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixDPDenergyKokkos; +#endif +} diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.h b/src/KOKKOS/fix_dpd_energy_kokkos.h index e5ae2b0127..0c43ecf422 100644 --- a/src/KOKKOS/fix_dpd_energy_kokkos.h +++ b/src/KOKKOS/fix_dpd_energy_kokkos.h @@ -19,16 +19,16 @@ FixStyle(dpd/energy/kk/host,FixDPDenergyKokkos) #else -#ifndef LMP_FIX_DPDE_H -#define LMP_FIX_DPDE_H +#ifndef LMP_FIX_DPDE_KOKKOS_H +#define LMP_FIX_DPDE_KOKKOS_H #include "fix_dpd_energy.h" -#include "pair_dpd_dft_energy_kokkos.h" +#include "pair_dpd_fdt_energy_kokkos.h" namespace LAMMPS_NS { template -class FixDPDenergyKokkos : public FixDPDEnergy { +class FixDPDenergyKokkos : public FixDPDenergy { public: FixDPDenergyKokkos(class LAMMPS *, int, char **); virtual ~FixDPDenergyKokkos() {} -- GitLab From e632f8597ac7a5229d51e8f12bfbd776f9369aee Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 3 Jan 2017 09:04:10 -0700 Subject: [PATCH 041/337] fix warning about enum comparisons --- src/KOKKOS/pair_table_kokkos.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_table_kokkos.h b/src/KOKKOS/pair_table_kokkos.h index 4d3a9ec106..e768c97164 100644 --- a/src/KOKKOS/pair_table_kokkos.h +++ b/src/KOKKOS/pair_table_kokkos.h @@ -31,7 +31,7 @@ namespace LAMMPS_NS { template struct S_TableCompute { - enum {TabStyle = TABSTYLE}; + static constexpr int TabStyle = TABSTYLE; }; template -- GitLab From dae132c77099b2b5a895b3c08ee7df7bd11a74d4 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 3 Jan 2017 10:53:10 -0700 Subject: [PATCH 042/337] place newline at end of file --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index 133d366fbc..4f04da2f3b 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -682,4 +682,4 @@ template class PairDPDfdtEnergyKokkos; #ifdef KOKKOS_HAVE_CUDA template class PairDPDfdtEnergyKokkos; #endif -} \ No newline at end of file +} -- GitLab From e3ebd8e7f1793caa1b7f686f6d7ae9a671be25ac Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 3 Jan 2017 09:15:30 -0700 Subject: [PATCH 043/337] remove syncs that shouldn't be needed --- src/KOKKOS/fix_dpd_energy_kokkos.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.cpp b/src/KOKKOS/fix_dpd_energy_kokkos.cpp index 6ab0b215b4..e6878afed4 100644 --- a/src/KOKKOS/fix_dpd_energy_kokkos.cpp +++ b/src/KOKKOS/fix_dpd_energy_kokkos.cpp @@ -70,9 +70,6 @@ void FixDPDenergyKokkos::take_half_step() atomKK->modified(execution_space, UCOND_MASK); atomKK->modified(execution_space, UMECH_MASK); - //should not be needed once everything is Kokkos - atomKK->sync(ExecutionSpaceFromDevice::space, UCOND_MASK); - atomKK->sync(ExecutionSpaceFromDevice::space, UMECH_MASK); } /* ---------------------------------------------------------------------- */ -- GitLab From 6d7607a6ade5299b021190373add4a1d50765aaa Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 3 Jan 2017 11:13:46 -0700 Subject: [PATCH 044/337] member function containing lambdas must be public --- src/KOKKOS/fix_dpd_energy_kokkos.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.h b/src/KOKKOS/fix_dpd_energy_kokkos.h index 0c43ecf422..ebf3a796fe 100644 --- a/src/KOKKOS/fix_dpd_energy_kokkos.h +++ b/src/KOKKOS/fix_dpd_energy_kokkos.h @@ -35,8 +35,8 @@ class FixDPDenergyKokkos : public FixDPDenergy { virtual void initial_integrate(int); virtual void final_integrate(); - protected: void take_half_step(); + protected: PairDPDfdtEnergyKokkos* pairDPDEKK; }; -- GitLab From ae0e882cde4c74c5cae0af09fa5fd46c783fad24 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 3 Jan 2017 11:51:28 -0700 Subject: [PATCH 045/337] Updating pair_multi_lucy_rx_kokkos to USER-DPD changes --- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 111 ++++++++++++++++------- src/KOKKOS/pair_multi_lucy_rx_kokkos.h | 8 +- 2 files changed, 82 insertions(+), 37 deletions(-) diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 1dc8ccbae9..7cff630cb0 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -45,6 +45,12 @@ enum{NONE,RLINEAR,RSQ}; #define MAXLINE 1024 +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + #define oneFluidParameter (-1) #define isOneFluid(_site) ( (_site) == oneFluidParameter ) @@ -187,12 +193,12 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in { const int ntotal = nlocal + nghost; - d_fractionOld1 = typename AT::t_float_1d("PairMultiLucyRX::fractionOld1",ntotal); - d_fractionOld2 = typename AT::t_float_1d("PairMultiLucyRX::fractionOld2",ntotal); - d_fraction1 = typename AT::t_float_1d("PairMultiLucyRX::fraction1",ntotal); - d_fraction2 = typename AT::t_float_1d("PairMultiLucyRX::fraction2",ntotal); + d_mixWtSite1old = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite1old",ntotal); + d_mixWtSite2old = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite2old",ntotal); + d_mixWtSite1 = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite1",ntotal); + d_mixWtSite2 = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite2",ntotal); - Kokkos::parallel_for(Kokkos::RangePolicy(0,ntotal),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,ntotal),*this); } const int inum = list->inum; @@ -259,8 +265,8 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in template KOKKOS_INLINE_FUNCTION -void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXgetParams, const int &i) const { - getParams(i, d_fractionOld1[i], d_fractionOld2[i], d_fraction1[i], d_fraction2[i]); +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXgetMixingWeights, const int &i) const { + getMixingWeights(i, d_mixWtSite1old[i], d_mixWtSite2old[i], d_mixWtSite1[i], d_mixWtSite2[i]); } template @@ -275,9 +281,9 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute::operator()(TagPairMultiLucyRXCompute::operator()(TagPairMultiLucyRXCompute::operator()(TagPairMultiLucyRXCompute::operator()(TagPairMultiLucyRXCompute::operator()(TagPairMultiLucyRXComputeLoca template KOKKOS_INLINE_FUNCTION -void PairMultiLucyRXKokkos::getParams(int id, double &fractionOld1, double &fractionOld2, double &fraction1, double &fraction2) const +void PairMultiLucyRXKokkos::getMixingWeights(int id, double &mixWtSite1old, double &mixWtSite2old, double &mixWtSite1, double &mixWtSite2) const { - double fractionOld, fraction; + double fractionOFAold, fractionOFA; + double fractionOld1, fraction1; + double fractionOld2, fraction2; + double nMoleculesOFAold, nMoleculesOFA; + double nMoleculesOld1, nMolecules1; + double nMoleculesOld2, nMolecules2; double nTotal, nTotalOld; @@ -579,32 +590,56 @@ void PairMultiLucyRXKokkos::getParams(int id, double &fractionOld1, } if (isOneFluid(isite1) == false){ - fractionOld1 = dvector(isite1+nspecies,id)/nTotalOld; - fraction1 = dvector(isite1,id)/nTotal; + nMoleculesOld1 = dvector(isite1+nspecies,id); + nMolecules1 = dvector(isite1,id); + fractionOld1 = nMoleculesOld1/nTotalOld; + fraction1 = nMolecules1/nTotal; } if (isOneFluid(isite2) == false){ - fractionOld2 = dvector(isite2+nspecies,id)/nTotalOld; - fraction2 = dvector(isite2,id)/nTotal; + nMoleculesOld2 = dvector(isite2+nspecies,id); + nMolecules2 = dvector(isite2,id); + fractionOld2 = nMoleculesOld2/nTotalOld; + fraction2 = nMolecules2/nTotal; } if (isOneFluid(isite1) || isOneFluid(isite2)){ - fractionOld = 0.0; - fraction = 0.0; + nMoleculesOFAold = 0.0; + nMoleculesOFA = 0.0; + fractionOFAold = 0.0; + fractionOFA = 0.0; for (int ispecies = 0; ispecies < nspecies; ispecies++){ if (isite1 == ispecies || isite2 == ispecies) continue; - fractionOld += dvector(ispecies+nspecies,id) / nTotalOld; - fraction += dvector(ispecies,id) / nTotal; + nMoleculesOFAold += dvector(ispecies+nspecies,id); + nMoleculesOFA += dvector(ispecies,id); + fractionOFAold += dvector(ispecies+nspecies,id) / nTotalOld; + fractionOFA += dvector(ispecies,id) / nTotal; } if (isOneFluid(isite1)){ - fractionOld1 = fractionOld; - fraction1 = fraction; + nMoleculesOld1 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); + fractionOld1 = fractionOFAold; + fraction1 = fractionOFA; } if (isOneFluid(isite2)){ - fractionOld2 = fractionOld; - fraction2 = fraction; + nMoleculesOld2 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); + fractionOld2 = fractionOFAold; + fraction2 = fractionOFA; } } + + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; + } } /* ---------------------------------------------------------------------- */ @@ -897,6 +932,16 @@ void PairMultiLucyRXKokkos::settings(int narg, char **arg) tablength = force->inumeric(FLERR,arg[1]); if (tablength < 2) error->all(FLERR,"Illegal number of pair table entries"); + // optional keywords + + int iarg = 2; + while (iarg < narg) { + if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; + else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; + else error->all(FLERR,"Illegal pair_style command"); + iarg++; + } + // delete old tables, since cannot just change settings for (int m = 0; m < ntables; m++) free_table(&tables[m]); diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h index a6622ac4ec..1e84e3efd8 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h @@ -32,7 +32,7 @@ namespace LAMMPS_NS { struct TagPairMultiLucyRXPackForwardComm{}; struct TagPairMultiLucyRXUnpackForwardComm{}; -struct TagPairMultiLucyRXgetParams{}; +struct TagPairMultiLucyRXgetMixingWeights{}; template struct TagPairMultiLucyRXCompute{}; @@ -75,7 +75,7 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { void operator()(TagPairMultiLucyRXUnpackForwardComm, const int&) const; KOKKOS_INLINE_FUNCTION - void operator()(TagPairMultiLucyRXgetParams, const int&) const; + void operator()(TagPairMultiLucyRXgetMixingWeights, const int&) const; template KOKKOS_INLINE_FUNCTION @@ -154,9 +154,9 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { void create_kokkos_tables(); KOKKOS_INLINE_FUNCTION - void getParams(int, double &, double &, double &, double &) const; + void getMixingWeights(int, double &, double &, double &, double &) const; - typename AT::t_float_1d d_fractionOld1,d_fractionOld2,d_fraction1,d_fraction2; + typename AT::t_float_1d d_mixWtSite1old,d_mixWtSite2old,d_mixWtSite1,d_mixWtSite2; typename AT::t_x_array_randomread x; typename AT::t_f_array f; -- GitLab From a4271ae8c5c2367cfc33f08b4994849a0cccd40b Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Wed, 4 Jan 2017 15:13:46 -0500 Subject: [PATCH 046/337] Added a Makefile for AFRL Thunder. --- src/MAKE/MACHINES/Makefile.afrl_thunder | 116 ++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/MAKE/MACHINES/Makefile.afrl_thunder diff --git a/src/MAKE/MACHINES/Makefile.afrl_thunder b/src/MAKE/MACHINES/Makefile.afrl_thunder new file mode 100644 index 0000000000..ceeec48870 --- /dev/null +++ b/src/MAKE/MACHINES/Makefile.afrl_thunder @@ -0,0 +1,116 @@ +# mpi = MPI with its default compiler + +SHELL = /bin/sh + +# --------------------------------------------------------------------- +# compiler/linker settings +# specify flags and libraries needed for your compiler + +CC = mpicxx +CCFLAGS = -g -O3 -Wall -Wextra -frounding-math -fsignaling-nans -march=native +SHFLAGS = -shared -MD -mcmodel=medium -fpic -fPIC +DEPFLAGS = -M + +LINK = mpicxx +LINKFLAGS = -g -O +LIB = +SIZE = size + +ARCHIVE = ar +ARFLAGS = -rc +SHLIBFLAGS = -shared + +# --------------------------------------------------------------------- +# LAMMPS-specific settings, all OPTIONAL +# specify settings for LAMMPS features you will use +# if you change any -D setting, do full re-compile after "make clean" + +# LAMMPS ifdef settings +# see possible settings in Section 2.2 (step 4) of manual + +LMP_INC = -DLAMMPS_GZIP +#LMP_INC += -DLAMMPS_JPEG +LMP_INC += -DLAMMPS_MEMALIGN=64 + +# 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 manual +# can be left blank to use provided KISS FFT library +# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings +# PATH = path for FFT library +# LIB = name of FFT library + +FFT_INC = +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 + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +# Individual dependencies + +depend : fastdep.exe $(SRC) + @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 + +fastdep.exe: ../DEPEND/fastdep.c + cc -O -o $@ $< + +sinclude .depend -- GitLab From 8503ac22a859abb2617b5fe9bab2e5db6ec0803f Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Thu, 5 Jan 2017 13:58:11 -0500 Subject: [PATCH 047/337] Fixed error->all instead of error->one bug in USER-DPD/fix_shardlow.cpp. During dynamic load balancing, the subdomains will not be uniform so the bbox size test in USER-DPD/fix_shardlow.cpp may only be called by one rank. Using error->one allows any rank to stop the simulation in this scenario. Added rcut and bbox information to help in diagnostics. --- src/USER-DPD/fix_shardlow.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 541f4ba3c3..108b82a5b6 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -445,7 +445,12 @@ void FixShardlow::initial_integrate(int vflag) error->all(FLERR,"Fix shardlow does not yet support triclinic geometries"); if(rcut >= bbx || rcut >= bby || rcut>= bbz ) - error->all(FLERR,"Shardlow algorithm requires sub-domain length > 2*(rcut+skin). Either reduce the number of processors requested, or change the cutoff/skin\n"); + { + char fmt[] = {"Shardlow algorithm requires sub-domain length > 2*(rcut+skin). Either reduce the number of processors requested, or change the cutoff/skin: rcut= %e bbx= %e bby= %e bbz= %e\n"}; + char *msg = (char *) malloc(sizeof(fmt) + 4*15); + sprintf(msg, fmt, rcut, bbx, bby, bbz); + error->one(FLERR, msg); + } // Allocate memory for v_t0 to hold the initial velocities for the ghosts v_t0 = (double (*)[3]) memory->smalloc(sizeof(double)*3*nghost, "FixShardlow:v_t0"); -- GitLab From 332372dec2caab9d6f8fdcf3c87d3d6b37466999 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Thu, 5 Jan 2017 14:03:16 -0500 Subject: [PATCH 048/337] Renamed Makefile.afrl_thunder to Makefile.icex to be more general. --- src/MAKE/MACHINES/{Makefile.afrl_thunder => Makefile.icex} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/MAKE/MACHINES/{Makefile.afrl_thunder => Makefile.icex} (100%) diff --git a/src/MAKE/MACHINES/Makefile.afrl_thunder b/src/MAKE/MACHINES/Makefile.icex similarity index 100% rename from src/MAKE/MACHINES/Makefile.afrl_thunder rename to src/MAKE/MACHINES/Makefile.icex -- GitLab From 19f2d2d1ecb13dae5ef26f16c8ba75b935c5fcf5 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 5 Jan 2017 15:22:59 -0700 Subject: [PATCH 049/337] fix many warnings in pair_dpd_fdt_energy_kokkos one Kokkos kernel was not annotated consistently, STACKPARAMS was essentially uninitialized and confused with a local variable, plus lots of variables were unused in some of the Kokkos kernels. --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 14 +++----------- src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 1 + 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index 4f04da2f3b..5de2b38ed0 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -49,6 +49,7 @@ PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : execution_space = ExecutionSpaceFromDevice::space; datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; + STACKPARAMS = 0; } /* ---------------------------------------------------------------------- */ @@ -164,8 +165,6 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) boltz = force->boltz; ftm2v = force->ftm2v; - int STACKPARAMS = 0; // optimize - // loop over neighbors of my atoms EV_FLOAT ev; @@ -278,14 +277,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSp int i,j,jj,inum,jnum,itype,jtype; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; - double vxtmp,vytmp,vztmp,delvx,delvy,delvz; - double rsq,r,rinv,wd,wr,factor_dpd,uTmp; - double dot,randnum; - - double kappa_ij, alpha_ij, theta_ij, gamma_ij; - double mass_i, mass_j; - double massinv_i, massinv_j; - double randPair, mu_ij; + double rsq,r,rinv,wd,wr,factor_dpd; i = d_ilist[ii]; xtmp = x(i,0); @@ -369,7 +361,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNo Kokkos::View::value> > a_duCond = d_duCond; Kokkos::View::value> > a_duMech = d_duMech; - int i,j,jj,inum,jnum,itype,jtype; + int i,j,jj,jnum,itype,jtype; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; double vxtmp,vytmp,vztmp,delvx,delvy,delvz; double rsq,r,rinv,wd,wr,factor_dpd,uTmp; diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index 41360091bc..2c2b78ac57 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -51,6 +51,7 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { void init_style(); double init_one(int, int); + KOKKOS_INLINE_FUNCTION void operator()(TagPairDPDfdtEnergyZero, const int&) const; template -- GitLab From 318ab9a18506143905a0692f33dd9ac6e22ac4d0 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 3 Jan 2017 16:33:15 -0700 Subject: [PATCH 050/337] trying PairTableRX : public PairTable saves a lot of duplicate code --- src/USER-DPD/pair_table_rx.cpp | 662 +-------------------------------- src/USER-DPD/pair_table_rx.h | 40 +- src/pair_table.cpp | 4 +- src/pair_table.h | 7 +- 4 files changed, 13 insertions(+), 700 deletions(-) diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index e3cacc6155..c8d59c052d 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -31,10 +31,6 @@ using namespace LAMMPS_NS; -enum{NONE,RLINEAR,RSQ,BMP}; - -#define MAXLINE 1024 - #ifdef DBL_EPSILON #define MY_EPSILON (10.0*DBL_EPSILON) #else @@ -46,31 +42,13 @@ enum{NONE,RLINEAR,RSQ,BMP}; /* ---------------------------------------------------------------------- */ -PairTableRX::PairTableRX(LAMMPS *lmp) : Pair(lmp) +PairTableRX::PairTableRX(LAMMPS *lmp) : PairTable(lmp) { - ntables = 0; - tables = NULL; fractionalWeighting = true; } /* ---------------------------------------------------------------------- */ -PairTableRX::~PairTableRX() -{ - if (copymode) return; - - for (int m = 0; m < ntables; m++) free_table(&tables[m]); - memory->sfree(tables); - - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); - memory->destroy(tabindex); - } -} - -/* ---------------------------------------------------------------------- */ - void PairTableRX::compute(int eflag, int vflag) { int i,j,ii,jj,inum,jnum,itype,jtype,itable; @@ -254,24 +232,6 @@ void PairTableRX::compute(int eflag, int vflag) memory->destroy(mixWtSite2); } -/* ---------------------------------------------------------------------- - allocate all arrays -------------------------------------------------------------------------- */ - -void PairTableRX::allocate() -{ - allocated = 1; - const int nt = atom->ntypes + 1; - - memory->create(setflag,nt,nt,"pair:setflag"); - memory->create(cutsq,nt,nt,"pair:cutsq"); - memory->create(tabindex,nt,nt,"pair:tabindex"); - - memset(&setflag[0][0],0,nt*nt*sizeof(int)); - memset(&cutsq[0][0],0,nt*nt*sizeof(double)); - memset(&tabindex[0][0],0,nt*nt*sizeof(int)); -} - /* ---------------------------------------------------------------------- global settings ------------------------------------------------------------------------- */ @@ -301,8 +261,8 @@ void PairTableRX::settings(int narg, char **arg) else if (strcmp(arg[iarg],"msm") == 0) msmflag = 1; else if (strcmp(arg[iarg],"dispersion") == 0) dispersionflag = 1; else if (strcmp(arg[iarg],"tip4p") == 0) tip4pflag = 1; - else if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; - else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; + else if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; + else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; else error->all(FLERR,"Illegal pair_style command"); iarg++; } @@ -464,602 +424,6 @@ void PairTableRX::coeff(int narg, char **arg) } -/* ---------------------------------------------------------------------- - init for one type pair i,j and corresponding j,i -------------------------------------------------------------------------- */ - -double PairTableRX::init_one(int i, int j) -{ - if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); - - tabindex[j][i] = tabindex[i][j]; - - return tables[tabindex[i][j]].cut; -} - -/* ---------------------------------------------------------------------- - read a table section from a tabulated potential file - only called by proc 0 - this function sets these values in Table: - ninput,rfile,efile,ffile,rflag,rlo,rhi,fpflag,fplo,fphi,ntablebits -------------------------------------------------------------------------- */ - -void PairTableRX::read_table(Table *tb, char *file, char *keyword) -{ - char line[MAXLINE]; - - // open file - - FILE *fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - sprintf(str,"Cannot open file %s",file); - error->one(FLERR,str); - } - - // loop until section found with matching keyword - - while (1) { - if (fgets(line,MAXLINE,fp) == NULL) - error->one(FLERR,"Did not find keyword in table file"); - if (strspn(line," \t\n\r") == strlen(line)) continue; // blank line - if (line[0] == '#') continue; // comment - char *word = strtok(line," \t\n\r"); - if (strcmp(word,keyword) == 0) break; // matching keyword - fgets(line,MAXLINE,fp); // no match, skip section - param_extract(tb,line); - fgets(line,MAXLINE,fp); - for (int i = 0; i < tb->ninput; i++) fgets(line,MAXLINE,fp); - } - - // read args on 2nd line of section - // allocate table arrays for file values - - fgets(line,MAXLINE,fp); - param_extract(tb,line); - memory->create(tb->rfile,tb->ninput,"pair:rfile"); - memory->create(tb->efile,tb->ninput,"pair:efile"); - memory->create(tb->ffile,tb->ninput,"pair:ffile"); - - // setup bitmap parameters for table to read in - - tb->ntablebits = 0; - int masklo,maskhi,nmask,nshiftbits; - if (tb->rflag == BMP) { - while (1 << tb->ntablebits < tb->ninput) tb->ntablebits++; - if (1 << tb->ntablebits != tb->ninput) - error->one(FLERR,"Bitmapped table is incorrect length in table file"); - init_bitmap(tb->rlo,tb->rhi,tb->ntablebits,masklo,maskhi,nmask,nshiftbits); - } - - // read r,e,f table values from file - // if rflag set, compute r - // if rflag not set, use r from file - - int itmp; - double rtmp; - union_int_float_t rsq_lookup; - - fgets(line,MAXLINE,fp); - for (int i = 0; i < tb->ninput; i++) { - fgets(line,MAXLINE,fp); - sscanf(line,"%d %lg %lg %lg",&itmp,&rtmp,&tb->efile[i],&tb->ffile[i]); - - if (tb->rflag == RLINEAR) - rtmp = tb->rlo + (tb->rhi - tb->rlo)*i/(tb->ninput-1); - else if (tb->rflag == RSQ) { - rtmp = tb->rlo*tb->rlo + - (tb->rhi*tb->rhi - tb->rlo*tb->rlo)*i/(tb->ninput-1); - rtmp = sqrt(rtmp); - } else if (tb->rflag == BMP) { - rsq_lookup.i = i << nshiftbits; - rsq_lookup.i |= masklo; - if (rsq_lookup.f < tb->rlo*tb->rlo) { - rsq_lookup.i = i << nshiftbits; - rsq_lookup.i |= maskhi; - } - rtmp = sqrtf(rsq_lookup.f); - } - - tb->rfile[i] = rtmp; - } - - // close file - - fclose(fp); -} - -/* ---------------------------------------------------------------------- - broadcast read-in table info from proc 0 to other procs - this function communicates these values in Table: - ninput,rfile,efile,ffile,rflag,rlo,rhi,fpflag,fplo,fphi -------------------------------------------------------------------------- */ - -void PairTableRX::bcast_table(Table *tb) -{ - MPI_Bcast(&tb->ninput,1,MPI_INT,0,world); - - int me; - MPI_Comm_rank(world,&me); - if (me > 0) { - memory->create(tb->rfile,tb->ninput,"pair:rfile"); - memory->create(tb->efile,tb->ninput,"pair:efile"); - memory->create(tb->ffile,tb->ninput,"pair:ffile"); - } - - MPI_Bcast(tb->rfile,tb->ninput,MPI_DOUBLE,0,world); - MPI_Bcast(tb->efile,tb->ninput,MPI_DOUBLE,0,world); - MPI_Bcast(tb->ffile,tb->ninput,MPI_DOUBLE,0,world); - - MPI_Bcast(&tb->rflag,1,MPI_INT,0,world); - if (tb->rflag) { - MPI_Bcast(&tb->rlo,1,MPI_DOUBLE,0,world); - MPI_Bcast(&tb->rhi,1,MPI_DOUBLE,0,world); - } - MPI_Bcast(&tb->fpflag,1,MPI_INT,0,world); - if (tb->fpflag) { - MPI_Bcast(&tb->fplo,1,MPI_DOUBLE,0,world); - MPI_Bcast(&tb->fphi,1,MPI_DOUBLE,0,world); - } -} - -/* ---------------------------------------------------------------------- - build spline representation of e,f over entire range of read-in table - this function sets these values in Table: e2file,f2file -------------------------------------------------------------------------- */ - -void PairTableRX::spline_table(Table *tb) -{ - memory->create(tb->e2file,tb->ninput,"pair:e2file"); - memory->create(tb->f2file,tb->ninput,"pair:f2file"); - - double ep0 = - tb->ffile[0]; - double epn = - tb->ffile[tb->ninput-1]; - spline(tb->rfile,tb->efile,tb->ninput,ep0,epn,tb->e2file); - - if (tb->fpflag == 0) { - tb->fplo = (tb->ffile[1] - tb->ffile[0]) / (tb->rfile[1] - tb->rfile[0]); - tb->fphi = (tb->ffile[tb->ninput-1] - tb->ffile[tb->ninput-2]) / - (tb->rfile[tb->ninput-1] - tb->rfile[tb->ninput-2]); - } - - double fp0 = tb->fplo; - double fpn = tb->fphi; - spline(tb->rfile,tb->ffile,tb->ninput,fp0,fpn,tb->f2file); -} - -/* ---------------------------------------------------------------------- - extract attributes from parameter line in table section - format of line: N value R/RSQ/BITMAP lo hi FP fplo fphi - N is required, other params are optional -------------------------------------------------------------------------- */ - -void PairTableRX::param_extract(Table *tb, char *line) -{ - tb->ninput = 0; - tb->rflag = NONE; - tb->fpflag = 0; - - char *word = strtok(line," \t\n\r\f"); - while (word) { - if (strcmp(word,"N") == 0) { - word = strtok(NULL," \t\n\r\f"); - tb->ninput = atoi(word); - } else if (strcmp(word,"R") == 0 || strcmp(word,"RSQ") == 0 || - strcmp(word,"BITMAP") == 0) { - if (strcmp(word,"R") == 0) tb->rflag = RLINEAR; - else if (strcmp(word,"RSQ") == 0) tb->rflag = RSQ; - else if (strcmp(word,"BITMAP") == 0) tb->rflag = BMP; - word = strtok(NULL," \t\n\r\f"); - tb->rlo = atof(word); - word = strtok(NULL," \t\n\r\f"); - tb->rhi = atof(word); - } else if (strcmp(word,"FP") == 0) { - tb->fpflag = 1; - word = strtok(NULL," \t\n\r\f"); - tb->fplo = atof(word); - word = strtok(NULL," \t\n\r\f"); - tb->fphi = atof(word); - } else { - printf("WORD: %s\n",word); - error->one(FLERR,"Invalid keyword in pair table parameters"); - } - word = strtok(NULL," \t\n\r\f"); - } - - if (tb->ninput == 0) error->one(FLERR,"Pair table parameters did not set N"); -} - -/* ---------------------------------------------------------------------- - compute r,e,f vectors from splined values -------------------------------------------------------------------------- */ - -void PairTableRX::compute_table(Table *tb) -{ - int tlm1 = tablength-1; - - // inner = inner table bound - // cut = outer table bound - // delta = table spacing in rsq for N-1 bins - - double inner; - if (tb->rflag) inner = tb->rlo; - else inner = tb->rfile[0]; - tb->innersq = double(inner)*double(inner); - tb->delta = double(tb->cut*tb->cut - double(tb->innersq)) / double(tlm1); - tb->invdelta = 1.0/double(tb->delta); - - // direct lookup tables - // N-1 evenly spaced bins in rsq from inner to cut - // e,f = value at midpt of bin - // e,f are N-1 in length since store 1 value at bin midpt - // f is converted to f/r when stored in f[i] - // e,f are never a match to read-in values, always computed via spline interp - - if (tabstyle == LOOKUP) { - memory->create(tb->e,tlm1,"pair:e"); - memory->create(tb->f,tlm1,"pair:f"); - - double r,rsq; - for (int i = 0; i < tlm1; i++) { - rsq = tb->innersq + (i+0.5)*tb->delta; - r = sqrt(rsq); - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - } - } - - // linear tables - // N-1 evenly spaced bins in rsq from inner to cut - // rsq,e,f = value at lower edge of bin - // de,df values = delta from lower edge to upper edge of bin - // rsq,e,f are N in length so de,df arrays can compute difference - // f is converted to f/r when stored in f[i] - // e,f can match read-in values, else compute via spline interp - - if (tabstyle == LINEAR) { - memory->create(tb->rsq,tablength,"pair:rsq"); - memory->create(tb->e,tablength,"pair:e"); - memory->create(tb->f,tablength,"pair:f"); - memory->create(tb->de,tlm1,"pair:de"); - memory->create(tb->df,tlm1,"pair:df"); - - double r,rsq; - for (int i = 0; i < tablength; i++) { - rsq = tb->innersq + i*tb->delta; - r = sqrt(rsq); - tb->rsq[i] = rsq; - if (tb->match) { - tb->e[i] = tb->efile[i]; - tb->f[i] = tb->ffile[i]/r; - } else { - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - } - } - - for (int i = 0; i < tlm1; i++) { - tb->de[i] = tb->e[i+1] - tb->e[i]; - tb->df[i] = tb->f[i+1] - tb->f[i]; - } - } - - // cubic spline tables - // N-1 evenly spaced bins in rsq from inner to cut - // rsq,e,f = value at lower edge of bin - // e2,f2 = spline coefficient for each bin - // rsq,e,f,e2,f2 are N in length so have N-1 spline bins - // f is converted to f/r after e is splined - // e,f can match read-in values, else compute via spline interp - - if (tabstyle == SPLINE) { - memory->create(tb->rsq,tablength,"pair:rsq"); - memory->create(tb->e,tablength,"pair:e"); - memory->create(tb->f,tablength,"pair:f"); - memory->create(tb->e2,tablength,"pair:e2"); - memory->create(tb->f2,tablength,"pair:f2"); - - tb->deltasq6 = tb->delta*tb->delta / 6.0; - - double r,rsq; - for (int i = 0; i < tablength; i++) { - rsq = tb->innersq + i*tb->delta; - r = sqrt(rsq); - tb->rsq[i] = rsq; - if (tb->match) { - tb->e[i] = tb->efile[i]; - tb->f[i] = tb->ffile[i]/r; - } else { - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r); - } - } - - // ep0,epn = dh/dg at inner and at cut - // h(r) = e(r) and g(r) = r^2 - // dh/dg = (de/dr) / 2r = -f/2r - - double ep0 = - tb->f[0] / (2.0 * sqrt(tb->innersq)); - double epn = - tb->f[tlm1] / (2.0 * tb->cut); - spline(tb->rsq,tb->e,tablength,ep0,epn,tb->e2); - - // fp0,fpn = dh/dg at inner and at cut - // h(r) = f(r)/r and g(r) = r^2 - // dh/dg = (1/r df/dr - f/r^2) / 2r - // dh/dg in secant approx = (f(r2)/r2 - f(r1)/r1) / (g(r2) - g(r1)) - - double fp0,fpn; - double secant_factor = 0.1; - if (tb->fpflag) fp0 = (tb->fplo/sqrt(tb->innersq) - tb->f[0]/tb->innersq) / - (2.0 * sqrt(tb->innersq)); - else { - double rsq1 = tb->innersq; - double rsq2 = rsq1 + secant_factor*tb->delta; - fp0 = (splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq2)) / - sqrt(rsq2) - tb->f[0] / sqrt(rsq1)) / (secant_factor*tb->delta); - } - - if (tb->fpflag && tb->cut == tb->rfile[tb->ninput-1]) fpn = - (tb->fphi/tb->cut - tb->f[tlm1]/(tb->cut*tb->cut)) / (2.0 * tb->cut); - else { - double rsq2 = tb->cut * tb->cut; - double rsq1 = rsq2 - secant_factor*tb->delta; - fpn = (tb->f[tlm1] / sqrt(rsq2) - - splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq1)) / - sqrt(rsq1)) / (secant_factor*tb->delta); - } - - for (int i = 0; i < tablength; i++) tb->f[i] /= sqrt(tb->rsq[i]); - spline(tb->rsq,tb->f,tablength,fp0,fpn,tb->f2); - } - - // bitmapped linear tables - // 2^N bins from inner to cut, spaced in bitmapped manner - // f is converted to f/r when stored in f[i] - // e,f can match read-in values, else compute via spline interp - - if (tabstyle == BITMAP) { - double r; - union_int_float_t rsq_lookup; - int masklo,maskhi; - - // linear lookup tables of length ntable = 2^n - // stored value = value at lower edge of bin - - init_bitmap(inner,tb->cut,tablength,masklo,maskhi,tb->nmask,tb->nshiftbits); - int ntable = 1 << tablength; - int ntablem1 = ntable - 1; - - memory->create(tb->rsq,ntable,"pair:rsq"); - memory->create(tb->e,ntable,"pair:e"); - memory->create(tb->f,ntable,"pair:f"); - memory->create(tb->de,ntable,"pair:de"); - memory->create(tb->df,ntable,"pair:df"); - memory->create(tb->drsq,ntable,"pair:drsq"); - - union_int_float_t minrsq_lookup; - minrsq_lookup.i = 0 << tb->nshiftbits; - minrsq_lookup.i |= maskhi; - - for (int i = 0; i < ntable; i++) { - rsq_lookup.i = i << tb->nshiftbits; - rsq_lookup.i |= masklo; - if (rsq_lookup.f < tb->innersq) { - rsq_lookup.i = i << tb->nshiftbits; - rsq_lookup.i |= maskhi; - } - r = sqrtf(rsq_lookup.f); - tb->rsq[i] = rsq_lookup.f; - if (tb->match) { - tb->e[i] = tb->efile[i]; - tb->f[i] = tb->ffile[i]/r; - } else { - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - } - minrsq_lookup.f = MIN(minrsq_lookup.f,rsq_lookup.f); - } - - tb->innersq = minrsq_lookup.f; - - for (int i = 0; i < ntablem1; i++) { - tb->de[i] = tb->e[i+1] - tb->e[i]; - tb->df[i] = tb->f[i+1] - tb->f[i]; - tb->drsq[i] = 1.0/(tb->rsq[i+1] - tb->rsq[i]); - } - - // get the delta values for the last table entries - // tables are connected periodically between 0 and ntablem1 - - tb->de[ntablem1] = tb->e[0] - tb->e[ntablem1]; - tb->df[ntablem1] = tb->f[0] - tb->f[ntablem1]; - tb->drsq[ntablem1] = 1.0/(tb->rsq[0] - tb->rsq[ntablem1]); - - // get the correct delta values at itablemax - // smallest r is in bin itablemin - // largest r is in bin itablemax, which is itablemin-1, - // or ntablem1 if itablemin=0 - - // deltas at itablemax only needed if corresponding rsq < cut*cut - // if so, compute deltas between rsq and cut*cut - // if tb->match, data at cut*cut is unavailable, so we'll take - // deltas at itablemax-1 as a good approximation - - double e_tmp,f_tmp; - int itablemin = minrsq_lookup.i & tb->nmask; - itablemin >>= tb->nshiftbits; - int itablemax = itablemin - 1; - if (itablemin == 0) itablemax = ntablem1; - int itablemaxm1 = itablemax - 1; - if (itablemax == 0) itablemaxm1 = ntablem1; - rsq_lookup.i = itablemax << tb->nshiftbits; - rsq_lookup.i |= maskhi; - if (rsq_lookup.f < tb->cut*tb->cut) { - if (tb->match) { - tb->de[itablemax] = tb->de[itablemaxm1]; - tb->df[itablemax] = tb->df[itablemaxm1]; - tb->drsq[itablemax] = tb->drsq[itablemaxm1]; - } else { - rsq_lookup.f = tb->cut*tb->cut; - r = sqrtf(rsq_lookup.f); - e_tmp = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - f_tmp = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - tb->de[itablemax] = e_tmp - tb->e[itablemax]; - tb->df[itablemax] = f_tmp - tb->f[itablemax]; - tb->drsq[itablemax] = 1.0/(rsq_lookup.f - tb->rsq[itablemax]); - } - } - } -} - -/* ---------------------------------------------------------------------- - set all ptrs in a table to NULL, so can be freed safely -------------------------------------------------------------------------- */ - -void PairTableRX::null_table(Table *tb) -{ - tb->rfile = tb->efile = tb->ffile = NULL; - tb->e2file = tb->f2file = NULL; - tb->rsq = tb->drsq = tb->e = tb->de = NULL; - tb->f = tb->df = tb->e2 = tb->f2 = NULL; -} - -/* ---------------------------------------------------------------------- - free all arrays in a table -------------------------------------------------------------------------- */ - -void PairTableRX::free_table(Table *tb) -{ - memory->destroy(tb->rfile); - memory->destroy(tb->efile); - memory->destroy(tb->ffile); - memory->destroy(tb->e2file); - memory->destroy(tb->f2file); - - memory->destroy(tb->rsq); - memory->destroy(tb->drsq); - memory->destroy(tb->e); - memory->destroy(tb->de); - memory->destroy(tb->f); - memory->destroy(tb->df); - memory->destroy(tb->e2); - memory->destroy(tb->f2); -} - -/* ---------------------------------------------------------------------- - spline and splint routines modified from Numerical Recipes -------------------------------------------------------------------------- */ - -void PairTableRX::spline(double *x, double *y, int n, - double yp1, double ypn, double *y2) -{ - int i,k; - double p,qn,sig,un; - double *u = new double[n]; - - if (yp1 > 0.99e30) y2[0] = u[0] = 0.0; - else { - y2[0] = -0.5; - u[0] = (3.0/(x[1]-x[0])) * ((y[1]-y[0]) / (x[1]-x[0]) - yp1); - } - for (i = 1; i < n-1; i++) { - sig = (x[i]-x[i-1]) / (x[i+1]-x[i-1]); - p = sig*y2[i-1] + 2.0; - y2[i] = (sig-1.0) / p; - u[i] = (y[i+1]-y[i]) / (x[i+1]-x[i]) - (y[i]-y[i-1]) / (x[i]-x[i-1]); - u[i] = (6.0*u[i] / (x[i+1]-x[i-1]) - sig*u[i-1]) / p; - } - if (ypn > 0.99e30) qn = un = 0.0; - else { - qn = 0.5; - un = (3.0/(x[n-1]-x[n-2])) * (ypn - (y[n-1]-y[n-2]) / (x[n-1]-x[n-2])); - } - y2[n-1] = (un-qn*u[n-2]) / (qn*y2[n-2] + 1.0); - for (k = n-2; k >= 0; k--) y2[k] = y2[k]*y2[k+1] + u[k]; - - delete [] u; -} - -/* ---------------------------------------------------------------------- */ - -double PairTableRX::splint(double *xa, double *ya, double *y2a, int n, double x) -{ - int klo,khi,k; - double h,b,a,y; - - klo = 0; - khi = n-1; - while (khi-klo > 1) { - k = (khi+klo) >> 1; - if (xa[k] > x) khi = k; - else klo = k; - } - h = xa[khi]-xa[klo]; - a = (xa[khi]-x) / h; - b = (x-xa[klo]) / h; - y = a*ya[klo] + b*ya[khi] + - ((a*a*a-a)*y2a[klo] + (b*b*b-b)*y2a[khi]) * (h*h)/6.0; - return y; -} - -/* ---------------------------------------------------------------------- - proc 0 writes to restart file -------------------------------------------------------------------------- */ - -void PairTableRX::write_restart(FILE *fp) -{ - write_restart_settings(fp); -} - -/* ---------------------------------------------------------------------- - proc 0 reads from restart file, bcasts -------------------------------------------------------------------------- */ - -void PairTableRX::read_restart(FILE *fp) -{ - read_restart_settings(fp); - allocate(); -} - -/* ---------------------------------------------------------------------- - proc 0 writes to restart file -------------------------------------------------------------------------- */ - -void PairTableRX::write_restart_settings(FILE *fp) -{ - fwrite(&tabstyle,sizeof(int),1,fp); - fwrite(&tablength,sizeof(int),1,fp); - fwrite(&ewaldflag,sizeof(int),1,fp); - fwrite(&pppmflag,sizeof(int),1,fp); - fwrite(&msmflag,sizeof(int),1,fp); - fwrite(&dispersionflag,sizeof(int),1,fp); - fwrite(&tip4pflag,sizeof(int),1,fp); -} - -/* ---------------------------------------------------------------------- - proc 0 reads from restart file, bcasts -------------------------------------------------------------------------- */ - -void PairTableRX::read_restart_settings(FILE *fp) -{ - if (comm->me == 0) { - fread(&tabstyle,sizeof(int),1,fp); - fread(&tablength,sizeof(int),1,fp); - fread(&ewaldflag,sizeof(int),1,fp); - fread(&pppmflag,sizeof(int),1,fp); - fread(&msmflag,sizeof(int),1,fp); - fread(&dispersionflag,sizeof(int),1,fp); - fread(&tip4pflag,sizeof(int),1,fp); - } - MPI_Bcast(&tabstyle,1,MPI_INT,0,world); - MPI_Bcast(&tablength,1,MPI_INT,0,world); - MPI_Bcast(&ewaldflag,1,MPI_INT,0,world); - MPI_Bcast(&pppmflag,1,MPI_INT,0,world); - MPI_Bcast(&msmflag,1,MPI_INT,0,world); - MPI_Bcast(&dispersionflag,1,MPI_INT,0,world); - MPI_Bcast(&tip4pflag,1,MPI_INT,0,world); -} - /* ---------------------------------------------------------------------- */ double PairTableRX::single(int i, int j, int itype, int jtype, double rsq, @@ -1131,26 +495,6 @@ double PairTableRX::single(int i, int j, int itype, int jtype, double rsq, return factor_lj*phi; } -/* ---------------------------------------------------------------------- - return the Coulomb cutoff for tabled potentials - called by KSpace solvers which require that all pairwise cutoffs be the same - loop over all tables not just those indexed by tabindex[i][j] since - no way to know which tables are active since pair::init() not yet called -------------------------------------------------------------------------- */ - -void *PairTableRX::extract(const char *str, int &dim) -{ - if (strcmp(str,"cut_coul") != 0) return NULL; - if (ntables == 0) error->all(FLERR,"All pair coeffs are not set"); - - double cut_coul = tables[0].cut; - for (int m = 1; m < ntables; m++) - if (tables[m].cut != cut_coul) - error->all(FLERR,"Pair table cutoffs must all be equal to use with KSpace"); - dim = 0; - return &tables[0].cut; -} - /* ---------------------------------------------------------------------- */ void PairTableRX::getMixingWeights(int id, double &mixWtSite1old, double &mixWtSite2old, double &mixWtSite1, double &mixWtSite2) diff --git a/src/USER-DPD/pair_table_rx.h b/src/USER-DPD/pair_table_rx.h index c6afe6a8d5..4f80872029 100644 --- a/src/USER-DPD/pair_table_rx.h +++ b/src/USER-DPD/pair_table_rx.h @@ -1,4 +1,4 @@ -/* ---------------------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov @@ -20,11 +20,11 @@ PairStyle(table/rx,PairTableRX) #ifndef LMP_PAIR_TABLE_RX_H #define LMP_PAIR_TABLE_RX_H -#include "pair.h" +#include "pair_table.h" namespace LAMMPS_NS { -class PairTableRX : public Pair { +class PairTableRX : public PairTable { public: PairTableRX(class LAMMPS *); virtual ~PairTableRX(); @@ -32,43 +32,11 @@ class PairTableRX : public Pair { virtual void compute(int, int); void settings(int, char **); void coeff(int, char **); - double init_one(int, int); - void write_restart(FILE *); - void read_restart(FILE *); - void write_restart_settings(FILE *); - void read_restart_settings(FILE *); - double single(int, int, int, int, double, double, double, double &); - void *extract(const char *, int &); + virtual double single(int, int, int, int, double, double, double, double &); protected: enum{LOOKUP,LINEAR,SPLINE,BITMAP}; - int tabstyle,tablength; - struct Table { - int ninput,rflag,fpflag,match,ntablebits; - int nshiftbits,nmask; - double rlo,rhi,fplo,fphi,cut; - double *rfile,*efile,*ffile; - double *e2file,*f2file; - double innersq,delta,invdelta,deltasq6; - double *rsq,*drsq,*e,*de,*f,*df,*e2,*f2; - }; - int ntables; - Table *tables; - - int **tabindex; - - void allocate(); - void read_table(Table *, char *, char *); - void param_extract(Table *, char *); - void bcast_table(Table *); - void spline_table(Table *); - void compute_table(Table *); - void null_table(Table *); - void free_table(Table *); - void spline(double *, double *, int, double, double, double *); - double splint(double *, double *, double *, int, double); - int nspecies; char *site1, *site2; int isite1, isite2; diff --git a/src/pair_table.cpp b/src/pair_table.cpp index c4bc3e7dd2..1c6bfe128e 100644 --- a/src/pair_table.cpp +++ b/src/pair_table.cpp @@ -29,8 +29,6 @@ using namespace LAMMPS_NS; -enum{NONE,RLINEAR,RSQ,BMP}; - #define MAXLINE 1024 #define EPSILONR 1.0e-6 @@ -46,6 +44,8 @@ PairTable::PairTable(LAMMPS *lmp) : Pair(lmp) PairTable::~PairTable() { + if (copymode) return; + for (int m = 0; m < ntables; m++) free_table(&tables[m]); memory->sfree(tables); diff --git a/src/pair_table.h b/src/pair_table.h index 358491f7cf..370efcec2f 100644 --- a/src/pair_table.h +++ b/src/pair_table.h @@ -37,11 +37,12 @@ class PairTable : public Pair { void read_restart(FILE *); void write_restart_settings(FILE *); void read_restart_settings(FILE *); - double single(int, int, int, int, double, double, double, double &); + virtual double single(int, int, int, int, double, double, double, double &); void *extract(const char *, int &); protected: enum{LOOKUP,LINEAR,SPLINE,BITMAP}; + enum{NONE,RLINEAR,RSQ,BMP}; int tabstyle,tablength; struct Table { @@ -66,8 +67,8 @@ class PairTable : public Pair { void compute_table(Table *); void null_table(Table *); void free_table(Table *); - void spline(double *, double *, int, double, double, double *); - double splint(double *, double *, double *, int, double); + static void spline(double *, double *, int, double, double, double *); + static double splint(double *, double *, double *, int, double); }; } -- GitLab From 3941fe9ab7488bf91fca7b6c529ad2c2cd7ba35b Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 3 Jan 2017 16:42:24 -0700 Subject: [PATCH 051/337] fix compilation --- src/USER-DPD/pair_table_rx.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-DPD/pair_table_rx.h b/src/USER-DPD/pair_table_rx.h index 4f80872029..00314ac424 100644 --- a/src/USER-DPD/pair_table_rx.h +++ b/src/USER-DPD/pair_table_rx.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairTableRX : public PairTable { public: PairTableRX(class LAMMPS *); - virtual ~PairTableRX(); + virtual ~PairTableRX() {} virtual void compute(int, int); void settings(int, char **); -- GitLab From a1ac2ae9b7570d27148064d90ea8051c7e30c75e Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 4 Jan 2017 10:51:31 -0700 Subject: [PATCH 052/337] move enum to pair.h to avoid having it be replicated in several different locations --- src/pair.cpp | 2 -- src/pair.h | 2 ++ src/pair_table.h | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pair.cpp b/src/pair.cpp index 5d73a592e8..f8ae641d2f 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -43,8 +43,6 @@ using namespace LAMMPS_NS; using namespace MathConst; -enum{NONE,RLINEAR,RSQ,BMP}; - // allocate space for static class instance variable and initialize it int Pair::instance_total = 0; diff --git a/src/pair.h b/src/pair.h index 3378115e49..fbb6d8408b 100644 --- a/src/pair.h +++ b/src/pair.h @@ -32,6 +32,8 @@ class Pair : protected Pointers { friend class Info; public: + enum{NONE,RLINEAR,RSQ,BMP}; + static int instance_total; // # of Pair classes ever instantiated double eng_vdwl,eng_coul; // accumulated energies diff --git a/src/pair_table.h b/src/pair_table.h index 370efcec2f..8d5dbdb28a 100644 --- a/src/pair_table.h +++ b/src/pair_table.h @@ -42,7 +42,6 @@ class PairTable : public Pair { protected: enum{LOOKUP,LINEAR,SPLINE,BITMAP}; - enum{NONE,RLINEAR,RSQ,BMP}; int tabstyle,tablength; struct Table { -- GitLab From 70927d08e734d418ed61f9492160ca23b65c6e6f Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 5 Jan 2017 13:25:30 -0700 Subject: [PATCH 053/337] remove duplicate enum --- src/USER-DPD/pair_table_rx.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/USER-DPD/pair_table_rx.h b/src/USER-DPD/pair_table_rx.h index 00314ac424..9dee5df266 100644 --- a/src/USER-DPD/pair_table_rx.h +++ b/src/USER-DPD/pair_table_rx.h @@ -35,7 +35,6 @@ class PairTableRX : public PairTable { virtual double single(int, int, int, int, double, double, double, double &); protected: - enum{LOOKUP,LINEAR,SPLINE,BITMAP}; int nspecies; char *site1, *site2; -- GitLab From ad1402562d70ffa4a03e150ed9246e8ae710c684 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 5 Jan 2017 20:54:24 -0700 Subject: [PATCH 054/337] Revert "move enum to pair.h" This reverts commit a1ac2ae9b7570d27148064d90ea8051c7e30c75e. --- src/pair.cpp | 2 ++ src/pair.h | 2 -- src/pair_table.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pair.cpp b/src/pair.cpp index f8ae641d2f..5d73a592e8 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -43,6 +43,8 @@ using namespace LAMMPS_NS; using namespace MathConst; +enum{NONE,RLINEAR,RSQ,BMP}; + // allocate space for static class instance variable and initialize it int Pair::instance_total = 0; diff --git a/src/pair.h b/src/pair.h index fbb6d8408b..3378115e49 100644 --- a/src/pair.h +++ b/src/pair.h @@ -32,8 +32,6 @@ class Pair : protected Pointers { friend class Info; public: - enum{NONE,RLINEAR,RSQ,BMP}; - static int instance_total; // # of Pair classes ever instantiated double eng_vdwl,eng_coul; // accumulated energies diff --git a/src/pair_table.h b/src/pair_table.h index 8d5dbdb28a..370efcec2f 100644 --- a/src/pair_table.h +++ b/src/pair_table.h @@ -42,6 +42,7 @@ class PairTable : public Pair { protected: enum{LOOKUP,LINEAR,SPLINE,BITMAP}; + enum{NONE,RLINEAR,RSQ,BMP}; int tabstyle,tablength; struct Table { -- GitLab From d8ddef37ed5407a3723b854ffc8ae077fb4c9fc5 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 5 Jan 2017 20:56:37 -0700 Subject: [PATCH 055/337] put enum back in .cpp file see lammps/lammps#325 --- src/USER-DPD/pair_table_rx.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index c8d59c052d..e8f0e81057 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -31,6 +31,8 @@ using namespace LAMMPS_NS; +enum{NONE,RLINEAR,RSQ,BMP}; + #ifdef DBL_EPSILON #define MY_EPSILON (10.0*DBL_EPSILON) #else -- GitLab From 7201f003e57716ac7a14378127dc22fbc63954f1 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 5 Jan 2017 21:00:39 -0700 Subject: [PATCH 056/337] move another enum back see lammps/lammps#325 --- src/pair_table.cpp | 2 ++ src/pair_table.h | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pair_table.cpp b/src/pair_table.cpp index 1c6bfe128e..b36843ff44 100644 --- a/src/pair_table.cpp +++ b/src/pair_table.cpp @@ -29,6 +29,8 @@ using namespace LAMMPS_NS; +enum{NONE,RLINEAR,RSQ,BMP}; + #define MAXLINE 1024 #define EPSILONR 1.0e-6 diff --git a/src/pair_table.h b/src/pair_table.h index 370efcec2f..8d5dbdb28a 100644 --- a/src/pair_table.h +++ b/src/pair_table.h @@ -42,7 +42,6 @@ class PairTable : public Pair { protected: enum{LOOKUP,LINEAR,SPLINE,BITMAP}; - enum{NONE,RLINEAR,RSQ,BMP}; int tabstyle,tablength; struct Table { -- GitLab From d26f1403cdb70e88abd9f9d8dced12a3ef16bd51 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 10 Jan 2017 15:22:52 -0700 Subject: [PATCH 057/337] fix race condition on rho the main bug here is the use of a local rho_i accumulator which later gets assigned back to rho[i]. in parallel, atomic additions can happen to rho[i] while the local accumulator is held; those atomic additions are lost when the accumulator is atomically assigned. we instead initialize the accumulator to zero and atomically add it back to rho[i]. --- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 7cff630cb0..24502f875c 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -526,7 +526,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLoca const double ytmp = x(i,1); const double ztmp = x(i,2); - double rho_i = rho[i]; + double rho_i_contrib = 0.0; const int itype = type[i]; const int jnum = d_numneigh[i]; @@ -549,7 +549,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLoca const double tmpFactor = 1.0 - r_over_rcut; const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; const double factor = factor_type11*(1.0 + 1.5*r_over_rcut)*tmpFactor4; - rho_i += factor; + rho_i_contrib += factor; if (NEWTON_PAIR || j < nlocal) a_rho[j] += factor; } else if (rsq < d_cutsq(itype,jtype)) { @@ -557,14 +557,14 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLoca const double tmpFactor = 1.0-sqrt(rsq)/rcut; const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; const double factor = (84.0/(5.0*pi*rcut*rcut*rcut))*(1.0+3.0*sqrt(rsq)/(2.0*rcut))*tmpFactor4; - rho_i += factor; + rho_i_contrib += factor; if (NEWTON_PAIR || j < nlocal) a_rho[j] += factor; } } } - a_rho[i] = rho_i; + a_rho[i] += rho_i_contrib; } /* ---------------------------------------------------------------------- */ -- GitLab From 6abefe7ef956621d52941fb2f1778665fd6a5e3d Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 6 Jan 2017 15:41:41 -0700 Subject: [PATCH 058/337] restarting PairTableRXKokkos as an exact copy of PairTableKokkos, now that it derives from PairTable --- src/KOKKOS/Install.sh | 4 +- src/KOKKOS/pair_table_rx_kokkos.cpp | 241 ++++++++++------------------ src/KOKKOS/pair_table_rx_kokkos.h | 191 ++++++---------------- 3 files changed, 131 insertions(+), 305 deletions(-) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index d796de5e2f..cfda7dbf94 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -195,8 +195,8 @@ action pair_vashishta_kokkos.cpp pair_vashishta.cpp action pair_vashishta_kokkos.h pair_vashishta.h action pair_table_kokkos.cpp action pair_table_kokkos.h -#action pair_table_rx_kokkos.cpp pair_table_rx.cpp -#action pair_table_rx_kokkos.h pair_table_rx.h +action pair_table_rx_kokkos.cpp pair_table_rx.cpp +action pair_table_rx_kokkos.h pair_table_rx.h action pair_tersoff_kokkos.cpp pair_tersoff.cpp action pair_tersoff_kokkos.h pair_tersoff.h action pair_tersoff_mod_kokkos.cpp pair_tersoff_mod.cpp diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index bf32d1c14f..2ccdefd05d 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Stan Moore (SNL) + Contributing author: Dan Ibanez (SNL) ------------------------------------------------------------------------- */ #include @@ -33,20 +33,13 @@ using namespace LAMMPS_NS; -enum{NONE,RLINEAR,RSQ,BMP}; -enum{FULL,HALFTHREAD,HALF}; - -#define MAXLINE 1024 - /* ---------------------------------------------------------------------- */ template -PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTableRX(lmp) +PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTable(lmp) { update_table = 0; atomKK = (AtomKokkos *) atom; - ntables = 0; - tables = NULL; execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; @@ -59,17 +52,12 @@ PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTableRX(lmp) template PairTableRXKokkos::~PairTableRXKokkos() { -/* for (int m = 0; m < ntables; m++) free_table(&tables[m]); - memory->sfree(tables); - - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); - memory->destroy(tabindex); - }*/ + if (copymode) return; delete h_table; + h_table = nullptr; delete d_table; - + d_table = nullptr; + copymode = true; //prevents base class destructor from running } /* ---------------------------------------------------------------------- */ @@ -98,7 +86,6 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; @@ -124,44 +111,44 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) EV_FLOAT ev; if(atom->ntypes > MAX_TYPES_STACKPARAMS) { if (neighflag == FULL) { - PairComputeFunctor,FULL,false,S_TableRXCompute > + PairComputeFunctor,FULL,false,S_TableCompute > ff(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); else Kokkos::parallel_for(list->inum,ff); } else if (neighflag == HALFTHREAD) { - PairComputeFunctor,HALFTHREAD,false,S_TableRXCompute > + PairComputeFunctor,HALFTHREAD,false,S_TableCompute > ff(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); else Kokkos::parallel_for(list->inum,ff); } else if (neighflag == HALF) { - PairComputeFunctor,HALF,false,S_TableRXCompute > + PairComputeFunctor,HALF,false,S_TableCompute > f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); else Kokkos::parallel_for(list->inum,f); } else if (neighflag == N2) { - PairComputeFunctor,N2,false,S_TableRXCompute > + PairComputeFunctor,N2,false,S_TableCompute > f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); else Kokkos::parallel_for(nlocal,f); } } else { if (neighflag == FULL) { - PairComputeFunctor,FULL,true,S_TableRXCompute > + PairComputeFunctor,FULL,true,S_TableCompute > f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); else Kokkos::parallel_for(list->inum,f); } else if (neighflag == HALFTHREAD) { - PairComputeFunctor,HALFTHREAD,true,S_TableRXCompute > + PairComputeFunctor,HALFTHREAD,true,S_TableCompute > f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); else Kokkos::parallel_for(list->inum,f); } else if (neighflag == HALF) { - PairComputeFunctor,HALF,true,S_TableRXCompute > + PairComputeFunctor,HALF,true,S_TableCompute > f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); else Kokkos::parallel_for(list->inum,f); } else if (neighflag == N2) { - PairComputeFunctor,N2,true,S_TableRXCompute > + PairComputeFunctor,N2,true,S_TableCompute > f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); else Kokkos::parallel_for(nlocal,f); @@ -191,27 +178,15 @@ compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, c union_int_float_t rsq_lookup; double fpair; const int tidx = d_table_const.tabindex(itype,jtype); - //const Table* const tb = &tables[tabindex[itype][jtype]]; - - //if (rsq < d_table_const.innersq(tidx)) - // error->one(FLERR,"Pair distance < table inner cutoff"); - - if (Specialisation::TabStyle == LOOKUP) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - //if (itable >= tlm1) - // error->one(FLERR,"Pair distance > table outer cutoff"); fpair = d_table_const.f(tidx,itable); } else if (Specialisation::TabStyle == LINEAR) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - //if (itable >= tlm1) - // error->one(FLERR,"Pair distance > table outer cutoff"); const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); } else if (Specialisation::TabStyle == SPLINE) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - //if (itable >= tlm1) - // error->one(FLERR,"Pair distance > table outer cutoff"); const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); const double a = 1.0 - b; fpair = a * d_table_const.f(tidx,itable) + b * d_table_const.f(tidx,itable+1) + @@ -237,26 +212,15 @@ compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, c double evdwl; union_int_float_t rsq_lookup; const int tidx = d_table_const.tabindex(itype,jtype); - //const Table* const tb = &tables[tabindex[itype][jtype]]; - - //if (rsq < d_table_const.innersq(tidx)) - // error->one(FLERR,"Pair distance < table inner cutoff"); - if (Specialisation::TabStyle == LOOKUP) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - //if (itable >= tlm1) - // error->one(FLERR,"Pair distance > table outer cutoff"); evdwl = d_table_const.e(tidx,itable); } else if (Specialisation::TabStyle == LINEAR) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - //if (itable >= tlm1) - // error->one(FLERR,"Pair distance > table outer cutoff"); const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); } else if (Specialisation::TabStyle == SPLINE) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - //if (itable >= tlm1) - // error->one(FLERR,"Pair distance > table outer cutoff"); const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); const double a = 1.0 - b; evdwl = a * d_table_const.e(tidx,itable) + b * d_table_const.e(tidx,itable+1) + @@ -314,6 +278,8 @@ void PairTableRXKokkos::create_kokkos_tables() memory->create_kokkos(d_table->drsq,h_table->drsq,ntables,ntable,"Table::drsq"); } + + for(int i=0; i < ntables; i++) { Table* tb = &tables[i]; @@ -343,36 +309,69 @@ void PairTableRXKokkos::create_kokkos_tables() Kokkos::deep_copy(d_table->nshiftbits,h_table->nshiftbits); - Kokkos::deep_copy(d_table->nmask,h_table->nmask); - Kokkos::deep_copy(d_table->innersq,h_table->innersq); - Kokkos::deep_copy(d_table->invdelta,h_table->invdelta); - Kokkos::deep_copy(d_table->deltasq6,h_table->deltasq6); - Kokkos::deep_copy(d_table->rsq,h_table->rsq); - Kokkos::deep_copy(d_table->drsq,h_table->drsq); - Kokkos::deep_copy(d_table->e,h_table->e); - Kokkos::deep_copy(d_table->de,h_table->de); - Kokkos::deep_copy(d_table->f,h_table->f); - Kokkos::deep_copy(d_table->df,h_table->df); - Kokkos::deep_copy(d_table->e2,h_table->e2); - Kokkos::deep_copy(d_table->f2,h_table->f2); - Kokkos::deep_copy(d_table->tabindex,h_table->tabindex); - d_table_const.nshiftbits = d_table->nshiftbits; + Kokkos::deep_copy(d_table->nmask,h_table->nmask); d_table_const.nmask = d_table->nmask; + Kokkos::deep_copy(d_table->innersq,h_table->innersq); d_table_const.innersq = d_table->innersq; + Kokkos::deep_copy(d_table->invdelta,h_table->invdelta); d_table_const.invdelta = d_table->invdelta; + Kokkos::deep_copy(d_table->deltasq6,h_table->deltasq6); d_table_const.deltasq6 = d_table->deltasq6; - d_table_const.rsq = d_table->rsq; - d_table_const.drsq = d_table->drsq; - d_table_const.e = d_table->e; - d_table_const.de = d_table->de; - d_table_const.f = d_table->f; - d_table_const.df = d_table->df; - d_table_const.e2 = d_table->e2; - d_table_const.f2 = d_table->f2; + if(tabstyle == LOOKUP) { + Kokkos::deep_copy(d_table->e,h_table->e); + d_table_const.e = d_table->e; + Kokkos::deep_copy(d_table->f,h_table->f); + d_table_const.f = d_table->f; + } + + if(tabstyle == LINEAR) { + Kokkos::deep_copy(d_table->rsq,h_table->rsq); + d_table_const.rsq = d_table->rsq; + Kokkos::deep_copy(d_table->e,h_table->e); + d_table_const.e = d_table->e; + Kokkos::deep_copy(d_table->f,h_table->f); + d_table_const.f = d_table->f; + Kokkos::deep_copy(d_table->de,h_table->de); + d_table_const.de = d_table->de; + Kokkos::deep_copy(d_table->df,h_table->df); + d_table_const.df = d_table->df; + } + + if(tabstyle == SPLINE) { + Kokkos::deep_copy(d_table->rsq,h_table->rsq); + d_table_const.rsq = d_table->rsq; + Kokkos::deep_copy(d_table->e,h_table->e); + d_table_const.e = d_table->e; + Kokkos::deep_copy(d_table->f,h_table->f); + d_table_const.f = d_table->f; + Kokkos::deep_copy(d_table->e2,h_table->e2); + d_table_const.e2 = d_table->e2; + Kokkos::deep_copy(d_table->f2,h_table->f2); + d_table_const.f2 = d_table->f2; + } + + if(tabstyle == BITMAP) { + Kokkos::deep_copy(d_table->rsq,h_table->rsq); + d_table_const.rsq = d_table->rsq; + Kokkos::deep_copy(d_table->e,h_table->e); + d_table_const.e = d_table->e; + Kokkos::deep_copy(d_table->f,h_table->f); + d_table_const.f = d_table->f; + Kokkos::deep_copy(d_table->de,h_table->de); + d_table_const.de = d_table->de; + Kokkos::deep_copy(d_table->df,h_table->df); + d_table_const.df = d_table->df; + Kokkos::deep_copy(d_table->drsq,h_table->drsq); + d_table_const.drsq = d_table->drsq; + } Kokkos::deep_copy(d_table->cutsq,h_table->cutsq); + d_table_const.cutsq = d_table->cutsq; + Kokkos::deep_copy(d_table->tabindex,h_table->tabindex); + d_table_const.tabindex = d_table->tabindex; + update_table = 0; } @@ -389,9 +388,9 @@ void PairTableRXKokkos::allocate() memory->create(setflag,nt,nt,"pair:setflag"); memory->create_kokkos(d_table->cutsq,h_table->cutsq,cutsq,nt,nt,"pair:cutsq"); memory->create_kokkos(d_table->tabindex,h_table->tabindex,tabindex,nt,nt,"pair:tabindex"); - d_table_const.cutsq = d_table->cutsq; d_table_const.tabindex = d_table->tabindex; + memset(&setflag[0][0],0,nt*nt*sizeof(int)); memset(&cutsq[0][0],0,nt*nt*sizeof(double)); memset(&tabindex[0][0],0,nt*nt*sizeof(int)); @@ -469,6 +468,17 @@ double PairTableRXKokkos::init_one(int i, int j) return tables[tabindex[i][j]].cut; } +/* ---------------------------------------------------------------------- + compute r,e,f vectors from splined values +------------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::compute_table(Table *tb) +{ + update_table = 1; + PairTable::compute_table(tb); +} + template void PairTableRXKokkos::init_style() { @@ -496,91 +506,6 @@ void PairTableRXKokkos::init_style() } } -/* -template template -KOKKOS_INLINE_FUNCTION -void PairTableRXKokkos:: -ev_tally(EV_FLOAT &ev, const int &i, const int &j, const F_FLOAT &fpair, - const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const -{ - const int EFLAG = eflag; - const int NEWTON_PAIR = newton_pair; - const int VFLAG = vflag_either; - - if (EFLAG) { - if (eflag_atom) { - E_FLOAT epairhalf = 0.5 * (ev.evdwl + ev.ecoul); - if (NEWTON_PAIR || i < nlocal) eatom[i] += epairhalf; - if (NEWTON_PAIR || j < nlocal) eatom[j] += epairhalf; - } - } - - if (VFLAG) { - const E_FLOAT v0 = delx*delx*fpair; - const E_FLOAT v1 = dely*dely*fpair; - const E_FLOAT v2 = delz*delz*fpair; - const E_FLOAT v3 = delx*dely*fpair; - const E_FLOAT v4 = delx*delz*fpair; - const E_FLOAT v5 = dely*delz*fpair; - - if (vflag_global) { - if (NEIGHFLAG) { - if (NEWTON_PAIR) { - ev.v[0] += v0; - ev.v[1] += v1; - ev.v[2] += v2; - ev.v[3] += v3; - ev.v[4] += v4; - ev.v[5] += v5; - } else { - if (i < nlocal) { - ev.v[0] += 0.5*v0; - ev.v[1] += 0.5*v1; - ev.v[2] += 0.5*v2; - ev.v[3] += 0.5*v3; - ev.v[4] += 0.5*v4; - ev.v[5] += 0.5*v5; - } - if (j < nlocal) { - ev.v[0] += 0.5*v0; - ev.v[1] += 0.5*v1; - ev.v[2] += 0.5*v2; - ev.v[3] += 0.5*v3; - ev.v[4] += 0.5*v4; - ev.v[5] += 0.5*v5; - } - } - } else { - ev.v[0] += 0.5*v0; - ev.v[1] += 0.5*v1; - ev.v[2] += 0.5*v2; - ev.v[3] += 0.5*v3; - ev.v[4] += 0.5*v4; - ev.v[5] += 0.5*v5; - } - } - - if (vflag_atom) { - if (NEWTON_PAIR || i < nlocal) { - d_vatom(i,0) += 0.5*v0; - d_vatom(i,1) += 0.5*v1; - d_vatom(i,2) += 0.5*v2; - d_vatom(i,3) += 0.5*v3; - d_vatom(i,4) += 0.5*v4; - d_vatom(i,5) += 0.5*v5; - } - if (NEWTON_PAIR || (NEIGHFLAG && j < nlocal)) { - d_vatom(j,0) += 0.5*v0; - d_vatom(j,1) += 0.5*v1; - d_vatom(j,2) += 0.5*v2; - d_vatom(j,3) += 0.5*v3; - d_vatom(j,4) += 0.5*v4; - d_vatom(j,5) += 0.5*v5; - } - } - } -} -*/ template void PairTableRXKokkos::cleanup_copy() { // WHY needed: this prevents parent copy from deallocating any arrays diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index b379901201..c4e07d41d6 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -13,32 +13,21 @@ #ifdef PAIR_CLASS -PairStyle(table/rx/kk,PairTableRXKokkos) -PairStyle(table/rx/kk/device,PairTableRXKokkos) -PairStyle(table/rx/kk/host,PairTableRXKokkos) +PairStyle(table/rx/kk,PairTableKokkos) +PairStyle(table/rx/kk/device,PairTableKokkos) +PairStyle(table/rx/kk/host,PairTableKokkos) #else #ifndef LMP_PAIR_TABLE_RX_KOKKOS_H #define LMP_PAIR_TABLE_RX_KOKKOS_H -#include "pair_table_rx.h" -#include "pair_kokkos.h" -#include "neigh_list_kokkos.h" -#include "atom_kokkos.h" +#include "pair_table_kokkos.h" namespace LAMMPS_NS { -template -struct S_TableRXCompute { - enum {TabStyle = TABSTYLE}; -}; - -template -class PairTableRXComputeFunctor; - template -class PairTableRXKokkos : public PairTableRX { +class PairTableRXKokkos : public PairTable { public: enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2}; @@ -53,27 +42,14 @@ class PairTableRXKokkos : public PairTableRX { template void compute_style(int, int); - /*template - KOKKOS_FUNCTION - EV_FLOAT compute_item(const int& i, - const NeighListKokkos &list) const; -*/ void settings(int, char **); double init_one(int, int); + void init_style(); + protected: - enum{LOOKUP,LINEAR,SPLINE,BITMAP}; - - int tabstyle,tablength; - /*struct TableDeviceConst { - typename ArrayTypes::t_ffloat_2d_randomread cutsq; - typename ArrayTypes::t_int_2d_randomread tabindex; - typename ArrayTypes::t_int_1d_randomread nshiftbits,nmask; - typename ArrayTypes::t_ffloat_1d_randomread innersq,invdelta,deltasq6; - typename ArrayTypes::t_ffloat_2d_randomread rsq,drsq,e,de,f,df,e2,f2; - };*/ - //Its faster not to use texture fetch if the number of tables is less than 32! + struct TableDeviceConst { typename ArrayTypes::t_ffloat_2d cutsq; typename ArrayTypes::t_int_2d tabindex; @@ -102,12 +78,12 @@ class PairTableRXKokkos : public PairTableRX { TableDevice* d_table; TableHost* h_table; - int **tabindex; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; typename ArrayTypes::t_ffloat_2d d_cutsq; - void allocate(); + virtual void allocate(); + void compute_table(Table *); typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array_const c_x; @@ -137,41 +113,41 @@ class PairTableRXKokkos : public PairTableRX { return 0; } - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; + friend class PairComputeFunctor >; friend void pair_virial_fdotr_compute(PairTableRXKokkos*); }; @@ -183,79 +159,4 @@ class PairTableRXKokkos : public PairTableRX { /* ERROR/WARNING messages: -E: Pair distance < table inner cutoff - -Two atoms are closer together than the pairwise table allows. - -E: Pair distance > table outer cutoff - -Two atoms are further apart than the pairwise table allows. - -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: Unknown table style in pair_style command - -Style of table is invalid for use with pair_style table command. - -E: Illegal number of pair table entries - -There must be at least 2 table entries. - -E: Invalid pair table length - -Length of read-in pair table is invalid - -E: Invalid pair table cutoff - -Cutoffs in pair_coeff command are not valid with read-in pair table. - -E: Bitmapped table in file does not match requested table - -Setting for bitmapped table in pair_coeff command must match table -in file exactly. - -E: All pair coeffs are not set - -All pair coefficients must be set in the data file or by the -pair_coeff command before running a simulation. - -E: Cannot open file %s - -The specified file cannot be opened. Check that the path and name are -correct. If the file is a compressed file, also check that the gzip -executable can be found and run. - -E: Did not find keyword in table file - -Keyword used in pair_coeff command was not found in table file. - -E: Bitmapped table is incorrect length in table file - -Number of table entries is not a correct power of 2. - -E: Invalid keyword in pair table parameters - -Keyword used in list of table parameters is not recognized. - -E: Pair table parameters did not set N - -List of pair table parameters must include N setting. - -E: Pair table cutoffs must all be equal to use with KSpace - -When using pair style table with a long-range KSpace solver, the -cutoffs for all atom type pairs must all be the same, since the -long-range solver starts at that cutoff. - -E: Cannot use chosen neighbor list style with lj/cut/kk - -That style is not supported by Kokkos. - - - - -*/ \ No newline at end of file + */ -- GitLab From f995bb43355f412709cf3420d4b215f39d8bbf61 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 6 Jan 2017 16:00:35 -0700 Subject: [PATCH 059/337] starting to add getMixingWeights some compile errors to work out --- src/KOKKOS/pair_table_rx_kokkos.cpp | 82 +++++++++++++++++++++++++++++ src/KOKKOS/pair_table_rx_kokkos.h | 5 ++ 2 files changed, 87 insertions(+) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 2ccdefd05d..54882ec3ce 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -33,6 +33,15 @@ using namespace LAMMPS_NS; +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + +#define OneFluidValue (-1) +#define isOneFluid(_site_) ( (_site_) == OneFluidValue ) + /* ---------------------------------------------------------------------- */ template @@ -516,6 +525,79 @@ void PairTableRXKokkos::cleanup_copy() { h_table=NULL; d_table=NULL; } +template +KOKKOS_INLINE_FUNCTION +void PairTableRXKokkos::getMixingWeights(typename DAT::t_float_2d_randomread dvector, int, double &, double &, double &, double &) { + double fractionOFAold, fractionOFA; + double fractionOld1, fraction1; + double fractionOld2, fraction2; + double nMoleculesOFAold, nMoleculesOFA; + double nMoleculesOld1, nMolecules1; + double nMoleculesOld2, nMolecules2; + double nTotal, nTotalOld; + + nTotal = 0.0; + nTotalOld = 0.0; + for (int ispecies = 0; ispecies < nspecies; ++ispecies){ + nTotal += dvector(ispecies,id); + nTotalOld += dvector(ispecies+nspecies,id); + } + if(nTotal < MY_EPSILON || nTotalOld < MY_EPSILON) + error->all(FLERR,"The number of molecules in CG particle is less than 10*DBL_EPSILON."); + + if (isOneFluid(isite1) == false){ + nMoleculesOld1 = dvector(isite1+nspecies,id); + nMolecules1 = dvector(isite1,id); + fractionOld1 = nMoleculesOld1/nTotalOld; + fraction1 = nMolecules1/nTotal; + } + if (isOneFluid(isite2) == false){ + nMoleculesOld2 = dvector(isite2+nspecies,id); + nMolecules2 = dvector(isite2,id); + fractionOld2 = nMoleculesOld2/nTotalOld; + fraction2 = nMolecules2/nTotal; + } + + if (isOneFluid(isite1) || isOneFluid(isite2)){ + nMoleculesOFAold = 0.0; + nMoleculesOFA = 0.0; + fractionOFAold = 0.0; + fractionOFA = 0.0; + + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + if (isite1 == ispecies || isite2 == ispecies) continue; + nMoleculesOFAold += dvector(ispecies+nspecies,id); + nMoleculesOFA += dvector(ispecies,id); + fractionOFAold += dvector(ispecies+nspecies,id)/nTotalOld; + fractionOFA += dvector(ispecies,id)/nTotal; + } + if(isOneFluid(isite1)){ + nMoleculesOld1 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); + fractionOld1 = fractionOFAold; + fraction1 = fractionOFA; + } + if(isOneFluid(isite2)){ + nMoleculesOld2 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); + fractionOld2 = fractionOFAold; + fraction2 = fractionOFA; + } + } + + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; + } +} + namespace LAMMPS_NS { template class PairTableRXKokkos; #ifdef KOKKOS_HAVE_CUDA diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index c4e07d41d6..1878faf16c 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -30,6 +30,8 @@ template class PairTableRXKokkos : public PairTable { public: + using DAT = ArrayTypes; + enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2}; enum {COUL_FLAG=0}; typedef DeviceType device_type; @@ -150,6 +152,9 @@ class PairTableRXKokkos : public PairTable { friend class PairComputeFunctor >; friend void pair_virial_fdotr_compute(PairTableRXKokkos*); + + KOKKOS_INLINE_FUNCTION + void getMixingWeights(typename DAT::t_float_2d_randomread dvector, int, double &, double &, double &, double &); }; } -- GitLab From 21cde6261aa476d59e32788b036195c7ebb98498 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 9 Jan 2017 12:29:15 -0700 Subject: [PATCH 060/337] add member variables from PairTableRX --- src/KOKKOS/pair_table_rx_kokkos.cpp | 5 ++++- src/KOKKOS/pair_table_rx_kokkos.h | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 54882ec3ce..83fcb2ce1d 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -527,7 +527,10 @@ void PairTableRXKokkos::cleanup_copy() { template KOKKOS_INLINE_FUNCTION -void PairTableRXKokkos::getMixingWeights(typename DAT::t_float_2d_randomread dvector, int, double &, double &, double &, double &) { +void PairTableRXKokkos::getMixingWeights( + typename DAT::t_float_2d_randomread dvector, int id, + double &mixWtSite1old, double &mixWtSite2old, + double &mixWtSite1, double &mixWtSite2) { double fractionOFAold, fractionOFA; double fractionOld1, fraction1; double fractionOld2, fraction2; diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index 1878faf16c..0d8a8f151e 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -153,8 +153,15 @@ class PairTableRXKokkos : public PairTable { friend void pair_virial_fdotr_compute(PairTableRXKokkos*); + /* PairTableRX members */ + + int nspecies; + char *site1, *site2; + int isite1, isite2; + bool fractionalWeighting; + KOKKOS_INLINE_FUNCTION - void getMixingWeights(typename DAT::t_float_2d_randomread dvector, int, double &, double &, double &, double &); + void getMixingWeights(typename DAT::t_float_2d_randomread, int, double &, double &, double &, double &); }; } -- GitLab From afbc6fc628b68baae2286c1c953a29dd78f1779e Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 9 Jan 2017 13:17:23 -0700 Subject: [PATCH 061/337] added coeff, settings, single, fix compile --- src/KOKKOS/pair_table_rx_kokkos.cpp | 228 +++++++++++++++++++++++++++- src/KOKKOS/pair_table_rx_kokkos.h | 6 +- 2 files changed, 232 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 83fcb2ce1d..5a71739b6d 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -30,9 +30,12 @@ #include "memory.h" #include "error.h" #include "atom_masks.h" +#include "fix.h" using namespace LAMMPS_NS; +enum{NONE,RLINEAR,RSQ,BMP}; + #ifdef DBL_EPSILON #define MY_EPSILON (10.0*DBL_EPSILON) #else @@ -54,6 +57,7 @@ PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTable(lmp) datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; h_table = new TableHost(); d_table = new TableDevice(); + fractionalWeighting = true; } /* ---------------------------------------------------------------------- */ @@ -435,6 +439,8 @@ void PairTableRXKokkos::settings(int narg, char **arg) else if (strcmp(arg[iarg],"msm") == 0) msmflag = 1; else if (strcmp(arg[iarg],"dispersion") == 0) dispersionflag = 1; else if (strcmp(arg[iarg],"tip4p") == 0) tip4pflag = 1; + else if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; + else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; else error->all(FLERR,"Illegal pair_style command"); iarg++; } @@ -459,6 +465,148 @@ void PairTableRXKokkos::settings(int narg, char **arg) tables = NULL; } +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::coeff(int narg, char **arg) +{ + if (narg != 6 && narg != 7) error->all(FLERR,"Illegal pair_coeff command"); + if (!allocated) allocate(); + + bool rx_flag = false; + for (int i = 0; i < modify->nfix; i++) + if (strncmp(modify->fix[i]->style,"rx",2) == 0) rx_flag = true; + if (!rx_flag) error->all(FLERR,"PairTableRX requires a fix rx command."); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + int me; + MPI_Comm_rank(world,&me); + tables = (Table *) + memory->srealloc(tables,(ntables+1)*sizeof(Table),"pair:tables"); + Table *tb = &tables[ntables]; + null_table(tb); + if (me == 0) read_table(tb,arg[2],arg[3]); + bcast_table(tb); + + nspecies = atom->nspecies_dpd; + if(nspecies==0) error->all(FLERR,"There are no rx species specified."); + int n; + n = strlen(arg[3]) + 1; + site1 = new char[n]; + strcpy(site1,arg[4]); + + int ispecies; + for (ispecies = 0; ispecies < nspecies; ispecies++){ + if (strcmp(site1,&atom->dname[ispecies][0]) == 0) break; + } + if (ispecies == nspecies && strcmp(site1,"1fluid") != 0) + error->all(FLERR,"Site1 name not recognized in pair coefficients"); + + n = strlen(arg[4]) + 1; + site2 = new char[n]; + strcpy(site2,arg[5]); + + for (ispecies = 0; ispecies < nspecies; ispecies++){ + if (strcmp(site2,&atom->dname[ispecies][0]) == 0) break; + } + if (ispecies == nspecies && strcmp(site2,"1fluid") != 0) + error->all(FLERR,"Site2 name not recognized in pair coefficients"); + + // set table cutoff + + if (narg == 7) tb->cut = force->numeric(FLERR,arg[6]); + else if (tb->rflag) tb->cut = tb->rhi; + else tb->cut = tb->rfile[tb->ninput-1]; + + // error check on table parameters + // insure cutoff is within table + // for BITMAP tables, file values can be in non-ascending order + + if (tb->ninput <= 1) error->one(FLERR,"Invalid pair table length"); + double rlo,rhi; + if (tb->rflag == 0) { + rlo = tb->rfile[0]; + rhi = tb->rfile[tb->ninput-1]; + } else { + rlo = tb->rlo; + rhi = tb->rhi; + } + if (tb->cut <= rlo || tb->cut > rhi) + error->all(FLERR,"Invalid pair table cutoff"); + if (rlo <= 0.0) error->all(FLERR,"Invalid pair table cutoff"); + + // match = 1 if don't need to spline read-in tables + // this is only the case if r values needed by final tables + // exactly match r values read from file + // for tabstyle SPLINE, always need to build spline tables + + tb->match = 0; + if (tabstyle == LINEAR && tb->ninput == tablength && + tb->rflag == RSQ && tb->rhi == tb->cut) tb->match = 1; + if (tabstyle == BITMAP && tb->ninput == 1 << tablength && + tb->rflag == BMP && tb->rhi == tb->cut) tb->match = 1; + if (tb->rflag == BMP && tb->match == 0) + error->all(FLERR,"Bitmapped table in file does not match requested table"); + + // spline read-in values and compute r,e,f vectors within table + + if (tb->match == 0) spline_table(tb); + compute_table(tb); + + // store ptr to table in tabindex + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + tabindex[i][j] = ntables; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) error->all(FLERR,"Illegal pair_coeff command"); + ntables++; + + { + if ( strcmp(site1,"1fluid") == 0 ) + isite1 = OneFluidValue; + else { + isite1 = nspecies; + + for (int k = 0; k < nspecies; k++){ + if (strcmp(site1, atom->dname[k]) == 0){ + isite1 = k; + break; + } + } + + if (isite1 == nspecies) error->all(FLERR,"isite1 == nspecies"); + } + + if ( strcmp(site2,"1fluid") == 0 ) + isite2 = OneFluidValue; + else { + isite2 = nspecies; + + for (int k = 0; k < nspecies; k++){ + if (strcmp(site2, atom->dname[k]) == 0){ + isite2 = ispecies; + break; + } + } + + if (isite2 == nspecies) + error->all(FLERR,"isite2 == nspecies"); + } + } + +} + /* ---------------------------------------------------------------------- init for one type pair i,j and corresponding j,i ------------------------------------------------------------------------- */ @@ -477,6 +625,82 @@ double PairTableRXKokkos::init_one(int i, int j) return tables[tabindex[i][j]].cut; } +/* ---------------------------------------------------------------------- */ + +template +double PairTableRXKokkos::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + int itable; + double fraction,value,a,b,phi; + int tlm1 = tablength - 1; + + Table *tb = &tables[tabindex[itype][jtype]]; + double mixWtSite1_i, mixWtSite1_j; + double mixWtSite2_i, mixWtSite2_j; + double mixWtSite1old_i, mixWtSite1old_j; + double mixWtSite2old_i, mixWtSite2old_j; + + fraction = 0.0; + a = 0.0; + b = 0.0; + + typename ArrayTypes::t_float_2d_randomread h_dvector = + atomKK->k_dvector.view(); + getMixingWeights(h_dvector,i,mixWtSite1old_i,mixWtSite2old_i, + mixWtSite1_i,mixWtSite2_i); + getMixingWeights(h_dvector,j,mixWtSite1old_j,mixWtSite2old_j, + mixWtSite1_j,mixWtSite2_j); + + if (rsq < tb->innersq) error->one(FLERR,"Pair distance < table inner cutoff"); + + if (tabstyle == LOOKUP) { + itable = static_cast ((rsq-tb->innersq) * tb->invdelta); + if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); + fforce = factor_lj * tb->f[itable]; + } else if (tabstyle == LINEAR) { + itable = static_cast ((rsq-tb->innersq) * tb->invdelta); + if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); + fraction = (rsq - tb->rsq[itable]) * tb->invdelta; + value = tb->f[itable] + fraction*tb->df[itable]; + fforce = factor_lj * value; + } else if (tabstyle == SPLINE) { + itable = static_cast ((rsq-tb->innersq) * tb->invdelta); + if (itable >= tlm1) error->one(FLERR,"Pair distance > table outer cutoff"); + b = (rsq - tb->rsq[itable]) * tb->invdelta; + a = 1.0 - b; + value = a * tb->f[itable] + b * tb->f[itable+1] + + ((a*a*a-a)*tb->f2[itable] + (b*b*b-b)*tb->f2[itable+1]) * + tb->deltasq6; + fforce = factor_lj * value; + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & tb->nmask; + itable >>= tb->nshiftbits; + fraction = (rsq_lookup.f - tb->rsq[itable]) * tb->drsq[itable]; + value = tb->f[itable] + fraction*tb->df[itable]; + fforce = factor_lj * value; + } + + if (isite1 == isite2) fforce = sqrt(mixWtSite1_i*mixWtSite2_j)*fforce; + else fforce = (sqrt(mixWtSite1_i*mixWtSite2_j) + sqrt(mixWtSite2_i*mixWtSite1_j))*fforce; + + if (tabstyle == LOOKUP) + phi = tb->e[itable]; + else if (tabstyle == LINEAR || tabstyle == BITMAP) + phi = tb->e[itable] + fraction*tb->de[itable]; + else + phi = a * tb->e[itable] + b * tb->e[itable+1] + + ((a*a*a-a)*tb->e2[itable] + (b*b*b-b)*tb->e2[itable+1]) * tb->deltasq6; + + if (isite1 == isite2) phi = sqrt(mixWtSite1_i*mixWtSite2_j)*phi; + else phi = (sqrt(mixWtSite1_i*mixWtSite2_j) + sqrt(mixWtSite2_i*mixWtSite1_j))*phi; + + return factor_lj*phi; +} + /* ---------------------------------------------------------------------- compute r,e,f vectors from splined values ------------------------------------------------------------------------- */ @@ -526,9 +750,11 @@ void PairTableRXKokkos::cleanup_copy() { } template +template KOKKOS_INLINE_FUNCTION void PairTableRXKokkos::getMixingWeights( - typename DAT::t_float_2d_randomread dvector, int id, + typename ArrayTypes::t_float_2d_randomread dvector, + int id, double &mixWtSite1old, double &mixWtSite2old, double &mixWtSite1, double &mixWtSite2) { double fractionOFAold, fractionOFA; diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index 0d8a8f151e..de6de61429 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -45,7 +45,9 @@ class PairTableRXKokkos : public PairTable { void compute_style(int, int); void settings(int, char **); + void coeff(int, char **); double init_one(int, int); + virtual double single(int, int, int, int, double, double, double, double &); void init_style(); @@ -160,8 +162,10 @@ class PairTableRXKokkos : public PairTable { int isite1, isite2; bool fractionalWeighting; + template KOKKOS_INLINE_FUNCTION - void getMixingWeights(typename DAT::t_float_2d_randomread, int, double &, double &, double &, double &); + void getMixingWeights(typename ArrayTypes::t_float_2d_randomread, + int, double &, double &, double &, double &); }; } -- GitLab From 4d5abe64d5cef0e1299bc7d43ac4482f25333d4f Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 9 Jan 2017 14:04:03 -0700 Subject: [PATCH 062/337] draft compute_fpair for PairTableRXKokkos --- src/KOKKOS/pair_table_rx_kokkos.cpp | 21 ++++++++++++++++++--- src/KOKKOS/pair_table_rx_kokkos.h | 5 +++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 5a71739b6d..bb6c034dc0 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -53,7 +53,7 @@ PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTable(lmp) update_table = 0; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; - datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | DVECTOR_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; h_table = new TableHost(); d_table = new TableDevice(); @@ -121,6 +121,19 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) d_cutsq = d_table->cutsq; // loop over neighbors of my atoms + const int ntotal = atom->nlocal + atom->nghost; + mixWtSite1old_ = Kokkos::View("PairTableRxKokkos::mixWtSite1old", ntotal); + mixWtSite2old_ = Kokkos::View("PairTableRxKokkos::mixWtSite2old", ntotal); + mixWtSite1_ = Kokkos::View("PairTableRxKokkos::mixWtSite1", ntotal); + mixWtSite2_ = Kokkos::View("PairTableRxKokkos::mixWtSite2", ntotal); + + typename DAT::t_float_2d_randomread d_dvector = atomKK->k_dvector.view(); + + Kokkos::parallel_for(ntotal, LAMMPS_LAMBDA(int i) { + getMixingWeights(d_dvector, i, mixWtSite1old_(i), mixWtSite2old_(i), + mixWtSite1_(i), mixWtSite2_(i)); + }); + EV_FLOAT ev; if(atom->ntypes > MAX_TYPES_STACKPARAMS) { if (neighflag == FULL) { @@ -186,8 +199,6 @@ template KOKKOS_INLINE_FUNCTION F_FLOAT PairTableRXKokkos:: compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { - (void) i; - (void) j; union_int_float_t rsq_lookup; double fpair; const int tidx = d_table_const.tabindex(itype,jtype); @@ -212,6 +223,9 @@ compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, c const double fraction = (rsq_lookup.f - d_table_const.rsq(tidx,itable)) * d_table_const.drsq(tidx,itable); fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); } + if (isite1 == isite2) fpair *= sqrt(mixWtSite1old_(i) * mixWtSite2old_(j)); + else fpair *= (sqrt(mixWtSite1old_(i) * mixWtSite2old_(j)) + + sqrt(mixWtSite2old_(i) * mixWtSite1old_(j))); return fpair; } @@ -646,6 +660,7 @@ double PairTableRXKokkos::single(int i, int j, int itype, int jtype, a = 0.0; b = 0.0; + atomKK->k_dvector.template sync(); typename ArrayTypes::t_float_2d_randomread h_dvector = atomKK->k_dvector.view(); getMixingWeights(h_dvector,i,mixWtSite1old_i,mixWtSite2old_i, diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index de6de61429..a0d937549f 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -166,6 +166,11 @@ class PairTableRXKokkos : public PairTable { KOKKOS_INLINE_FUNCTION void getMixingWeights(typename ArrayTypes::t_float_2d_randomread, int, double &, double &, double &, double &); + + Kokkos::View mixWtSite1old_; + Kokkos::View mixWtSite2old_; + Kokkos::View mixWtSite1_; + Kokkos::View mixWtSite2_; }; } -- GitLab From c877c07491e32160f42dbde04a7e34e5f6637b57 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 9 Jan 2017 16:21:32 -0700 Subject: [PATCH 063/337] progress towards custom compute functor which is needed to handle uCG contributions. --- src/KOKKOS/pair_table_rx_kokkos.cpp | 220 ++++++++++++++++++++++++++-- src/KOKKOS/pair_table_rx_kokkos.h | 76 +++++----- 2 files changed, 237 insertions(+), 59 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index bb6c034dc0..cc0a416ad9 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -90,6 +90,195 @@ void PairTableRXKokkos::compute(int eflag_in, int vflag_in) compute_style(eflag_in,vflag_in); } +template +template +PairTableRXKokkos::Full::Functor( + PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr): + c(*c_ptr),f(c.f),list(*list_ptr) +{} + +template +template +PairTableRXKokkos::Full::~Functor() { + c.cleanup_copy(); + list.clean_copy(); +} + +template +template +template +KOKKOS_INLINE_FUNCTION +EV_FLOAT +PairTableRXKokkos::Functor:: +compute_item(const int& ii) { + EV_FLOAT ev; + const int i = list.d_ilist[ii]; + const X_FLOAT xtmp = c.x(i,0); + const X_FLOAT ytmp = c.x(i,1); + const X_FLOAT ztmp = c.x(i,2); + const int itype = c.type(i); + + const AtomNeighborsConst jlist = list.get_neighbors_const(i); + const int jnum = list.d_numneigh[i]; + + double uCG_i = 0.0; + double uCGnew_i = 0.0; + double fx_i = 0.0, fy_i = 0.0, fz_i = 0.0; + + double mixWtSite1old_i = mixWtSite1old(i); + double mixWtSite2old_i = mixWtSite2old(i); + double mixWtSite1_i = mixWtSite1(i); + double mixWtSite2_i = mixWtSite2(i); + + for (int jj = 0; jj < jnum; jj++) { + int j = jlist(jj); + const F_FLOAT factor_lj = c.special_lj[sbmask(j)]; + j &= NEIGHMASK; + + const X_FLOAT delx = xtmp - c.x(j,0); + const X_FLOAT dely = ytmp - c.x(j,1); + const X_FLOAT delz = ztmp - c.x(j,2); + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + const int jtype = c.type(j); + + if(rsq < (STACKPARAMS?c.m_cutsq[itype][jtype]:c.d_cutsq(itype,jtype))) { + double mixWtSite1old_j = mixWtSite1old[j]; + double mixWtSite2old_j = mixWtSite2old[j]; + double mixWtSite1_j = mixWtSite1[j]; + double mixWtSite2_j = mixWtSite2[j]; + + const F_FLOAT fpair = factor_lj*c.template compute_fpair(rsq,i,j,itype,jtype); + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + + bool do_half = (NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && + (NEWTON_PAIR || j < c.nlocal); + if (do_half) { + f(j,0) -= delx*fpair; + f(j,1) -= dely*fpair; + f(j,2) -= delz*fpair; + } + + auto evdwl = c.template compute_evdwl(rsq,i,j,itype,jtype); + + double evdwlOld; + if (isite1 == isite2) { + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwl; + evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwl; + } else { + evdwlOld = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + + sqrt(mixWtSite2old_i*mixWtSite1old_j))*evdwl; + evdwl = (sqrt(mixWtSite1_i*mixWtSite2_j) + + sqrt(mixWtSite2_i*mixWtSite1_j))*evdwl; + } + evdwlOld *= factor_lj; + evdwl *= factor_lj; + + uCG_i += 0.5*evdwlOld; + if (do_half) uCG(j) += 0.5*evdwlOld; + + uCGnew_i += 0.5*evdwl; + if (do_half) uCGnew(j) += 0.5*evdwl; + evdwl = evdwlOld; + + ev.evdwl += (do_half ? 1.0 : 0.5)*evdwl; + + if (EVFLAG) ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + } + } + + uCG(i) += uCG_i; + uCGnew(i) += uCGnew_i; + + f(i,0) += fx_i; + f(i,1) += fy_i; + f(i,2) += fz_i; + + return ev; +} + +template +template +KOKKOS_INLINE_FUNCTION +void +PairTableRXKokkos::Functor:: +ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const +{ + const int EFLAG = c.eflag; + const int NEWTON_PAIR = c.newton_pair; + const int VFLAG = c.vflag_either; + + if (VFLAG) { + const E_FLOAT v0 = delx*delx*fpair; + const E_FLOAT v1 = dely*dely*fpair; + const E_FLOAT v2 = delz*delz*fpair; + const E_FLOAT v3 = delx*dely*fpair; + const E_FLOAT v4 = delx*delz*fpair; + const E_FLOAT v5 = dely*delz*fpair; + + if (c.vflag_global) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR) { + ev.v[0] += v0; + ev.v[1] += v1; + ev.v[2] += v2; + ev.v[3] += v3; + ev.v[4] += v4; + ev.v[5] += v5; + } else { + if (i < c.nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (j < c.nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + } +} + +template +template +KOKKOS_INLINE_FUNCTION +void +PairTableRXKokkos::Functor:: +operator()(const int i) const { + if (c.newton_pair) compute_item<0,1>(i); + else compute_item<0,0>(i); +} + +template +template +KOKKOS_INLINE_FUNCTION +void +PairTableRXKokkos::Functor:: +operator()(const int i, value_type &energy_virial) const { + if (c.newton_pair) energy_virial += compute_item<1,1>(i); + else energy_virial += compute_item<1,0>(i); +} + template template void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) @@ -102,9 +291,10 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; + if (eflag_atom) error->all(FLERR, "pair table/rx/kk does not handle eflag_atom\n"); + if (vflag_atom) error->all(FLERR, "pair table/rx/kk does not handle vflag_atom\n"); + atomKK->sync(execution_space,datamask_read); - //k_cutsq.template sync(); - //k_params.template sync(); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); @@ -122,10 +312,10 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) // loop over neighbors of my atoms const int ntotal = atom->nlocal + atom->nghost; - mixWtSite1old_ = Kokkos::View("PairTableRxKokkos::mixWtSite1old", ntotal); - mixWtSite2old_ = Kokkos::View("PairTableRxKokkos::mixWtSite2old", ntotal); - mixWtSite1_ = Kokkos::View("PairTableRxKokkos::mixWtSite1", ntotal); - mixWtSite2_ = Kokkos::View("PairTableRxKokkos::mixWtSite2", ntotal); + mixWtSite1old_ = Kokkos::View("PairTableRXKokkos::mixWtSite1old", ntotal); + mixWtSite2old_ = Kokkos::View("PairTableRXKokkos::mixWtSite2old", ntotal); + mixWtSite1_ = Kokkos::View("PairTableRXKokkos::mixWtSite1", ntotal); + mixWtSite2_ = Kokkos::View("PairTableRXKokkos::mixWtSite2", ntotal); typename DAT::t_float_2d_randomread d_dvector = atomKK->k_dvector.view(); @@ -195,21 +385,21 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) } template -template +template KOKKOS_INLINE_FUNCTION F_FLOAT PairTableRXKokkos:: compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { union_int_float_t rsq_lookup; double fpair; const int tidx = d_table_const.tabindex(itype,jtype); - if (Specialisation::TabStyle == LOOKUP) { + if (TABSTYLE == LOOKUP) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); fpair = d_table_const.f(tidx,itable); - } else if (Specialisation::TabStyle == LINEAR) { + } else if (TABSTYLE == LINEAR) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); - } else if (Specialisation::TabStyle == SPLINE) { + } else if (TABSTYLE == SPLINE) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); const double a = 1.0 - b; @@ -230,23 +420,21 @@ compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, c } template -template +template KOKKOS_INLINE_FUNCTION F_FLOAT PairTableRXKokkos:: compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { - (void) i; - (void) j; double evdwl; union_int_float_t rsq_lookup; const int tidx = d_table_const.tabindex(itype,jtype); - if (Specialisation::TabStyle == LOOKUP) { + if (TABSTYLE == LOOKUP) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); evdwl = d_table_const.e(tidx,itable); - } else if (Specialisation::TabStyle == LINEAR) { + } else if (TABSTYLE == LINEAR) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); - } else if (Specialisation::TabStyle == SPLINE) { + } else if (TABSTYLE == SPLINE) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); const double a = 1.0 - b; diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index a0d937549f..f717dc3f8a 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -33,7 +33,6 @@ class PairTableRXKokkos : public PairTable { using DAT = ArrayTypes; enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2}; - enum {COUL_FLAG=0}; typedef DeviceType device_type; PairTableRXKokkos(class LAMMPS *); @@ -111,48 +110,6 @@ class PairTableRXKokkos : public PairTable { KOKKOS_INLINE_FUNCTION F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; - template - KOKKOS_INLINE_FUNCTION - F_FLOAT compute_ecoul(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { - return 0; - } - - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend class PairComputeFunctor >; - friend void pair_virial_fdotr_compute(PairTableRXKokkos*); /* PairTableRX members */ @@ -171,6 +128,39 @@ class PairTableRXKokkos : public PairTable { Kokkos::View mixWtSite2old_; Kokkos::View mixWtSite1_; Kokkos::View mixWtSite2_; + + /* a duplicate of PairComputeFunctor to deal with uCG */ + template + struct Functor { + using device_type = DeviceType; + typedef EV_FLOAT value_type; + PairTableRXKokkos c; + // arrays are atomic for Half(Thread) neighbor style + Kokkos::View::value> > f; + Kokkos::View::value> > uCG; + Kokkos::View::value> > uCGnew; + NeighListKokkos list; + Functor(PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr); + ~Functor(); + KOKKOS_INLINE_FUNCTION int sbmask(const int& j) const { + return j >> SBBITS & 3; + } + template + KOKKOS_INLINE_FUNCTION + EV_FLOAT compute_item(const int&, + const NeighListKokkos&, const NoCoulTag&) const; + KOKKOS_INLINE_FUNCTION + ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const + KOKKOS_INLINE_FUNCTION + void operator()(const int) const; + KOKKOS_INLINE_FUNCTION + void operator()(const int, value_type&) const; + }; }; } -- GitLab From e4673d7fa80b40dca606c4cf85f92e2f6d2b098b Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 9 Jan 2017 16:36:25 -0700 Subject: [PATCH 064/337] fix compilation --- src/KOKKOS/pair_table_rx_kokkos.cpp | 52 +++++++++++++---------------- src/KOKKOS/pair_table_rx_kokkos.h | 10 +++--- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index cc0a416ad9..26e335fcff 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -92,14 +92,14 @@ void PairTableRXKokkos::compute(int eflag_in, int vflag_in) template template -PairTableRXKokkos::Full::Functor( +PairTableRXKokkos::Functor::Functor( PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr): c(*c_ptr),f(c.f),list(*list_ptr) {} template template -PairTableRXKokkos::Full::~Functor() { +PairTableRXKokkos::Functor::~Functor() { c.cleanup_copy(); list.clean_copy(); } @@ -110,7 +110,7 @@ template KOKKOS_INLINE_FUNCTION EV_FLOAT PairTableRXKokkos::Functor:: -compute_item(const int& ii) { +compute_item(const int& ii) const { EV_FLOAT ev; const int i = list.d_ilist[ii]; const X_FLOAT xtmp = c.x(i,0); @@ -125,10 +125,10 @@ compute_item(const int& ii) { double uCGnew_i = 0.0; double fx_i = 0.0, fy_i = 0.0, fz_i = 0.0; - double mixWtSite1old_i = mixWtSite1old(i); - double mixWtSite2old_i = mixWtSite2old(i); - double mixWtSite1_i = mixWtSite1(i); - double mixWtSite2_i = mixWtSite2(i); + double mixWtSite1old_i = c.mixWtSite1old_(i); + double mixWtSite2old_i = c.mixWtSite2old_(i); + double mixWtSite1_i = c.mixWtSite1_(i); + double mixWtSite2_i = c.mixWtSite2_(i); for (int jj = 0; jj < jnum; jj++) { int j = jlist(jj); @@ -142,12 +142,12 @@ compute_item(const int& ii) { const int jtype = c.type(j); if(rsq < (STACKPARAMS?c.m_cutsq[itype][jtype]:c.d_cutsq(itype,jtype))) { - double mixWtSite1old_j = mixWtSite1old[j]; - double mixWtSite2old_j = mixWtSite2old[j]; - double mixWtSite1_j = mixWtSite1[j]; - double mixWtSite2_j = mixWtSite2[j]; + double mixWtSite1old_j = c.mixWtSite1old_(j); + double mixWtSite2old_j = c.mixWtSite2old_(j); + double mixWtSite1_j = c.mixWtSite1_(j); + double mixWtSite2_j = c.mixWtSite2_(j); - const F_FLOAT fpair = factor_lj*c.template compute_fpair(rsq,i,j,itype,jtype); + const F_FLOAT fpair = factor_lj*c.template compute_fpair(rsq,i,j,itype,jtype); fx_i += delx*fpair; fy_i += dely*fpair; @@ -164,7 +164,7 @@ compute_item(const int& ii) { auto evdwl = c.template compute_evdwl(rsq,i,j,itype,jtype); double evdwlOld; - if (isite1 == isite2) { + if (c.isite1 == c.isite2) { evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwl; evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwl; } else { @@ -324,48 +324,42 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) mixWtSite1_(i), mixWtSite2_(i)); }); + if (neighflag == N2) error->all(FLERR,"pair table/rx/kk can't handle N2 yet\n"); + EV_FLOAT ev; if(atom->ntypes > MAX_TYPES_STACKPARAMS) { if (neighflag == FULL) { - PairComputeFunctor,FULL,false,S_TableCompute > - ff(this,(NeighListKokkos*) list); + Functor ff(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); else Kokkos::parallel_for(list->inum,ff); } else if (neighflag == HALFTHREAD) { - PairComputeFunctor,HALFTHREAD,false,S_TableCompute > - ff(this,(NeighListKokkos*) list); + Functor ff(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); else Kokkos::parallel_for(list->inum,ff); } else if (neighflag == HALF) { - PairComputeFunctor,HALF,false,S_TableCompute > - f(this,(NeighListKokkos*) list); + Functor f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); else Kokkos::parallel_for(list->inum,f); } else if (neighflag == N2) { - PairComputeFunctor,N2,false,S_TableCompute > - f(this,(NeighListKokkos*) list); + Functor f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); else Kokkos::parallel_for(nlocal,f); } } else { if (neighflag == FULL) { - PairComputeFunctor,FULL,true,S_TableCompute > - f(this,(NeighListKokkos*) list); + Functor f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); else Kokkos::parallel_for(list->inum,f); } else if (neighflag == HALFTHREAD) { - PairComputeFunctor,HALFTHREAD,true,S_TableCompute > - f(this,(NeighListKokkos*) list); + Functor f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); else Kokkos::parallel_for(list->inum,f); } else if (neighflag == HALF) { - PairComputeFunctor,HALF,true,S_TableCompute > - f(this,(NeighListKokkos*) list); + Functor f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); else Kokkos::parallel_for(list->inum,f); } else if (neighflag == N2) { - PairComputeFunctor,N2,true,S_TableCompute > - f(this,(NeighListKokkos*) list); + Functor f(this,(NeighListKokkos*) list); if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); else Kokkos::parallel_for(nlocal,f); } diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index f717dc3f8a..c468461263 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -102,11 +102,11 @@ class PairTableRXKokkos : public PairTable { void create_kokkos_tables(); void cleanup_copy(); - template + template KOKKOS_INLINE_FUNCTION F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; - template + template KOKKOS_INLINE_FUNCTION F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; @@ -150,12 +150,12 @@ class PairTableRXKokkos : public PairTable { } template KOKKOS_INLINE_FUNCTION - EV_FLOAT compute_item(const int&, - const NeighListKokkos&, const NoCoulTag&) const; + EV_FLOAT compute_item(const int&) const; KOKKOS_INLINE_FUNCTION + void ev_tally(EV_FLOAT &ev, const int &i, const int &j, const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, - const F_FLOAT &dely, const F_FLOAT &delz) const + const F_FLOAT &dely, const F_FLOAT &delz) const; KOKKOS_INLINE_FUNCTION void operator()(const int) const; KOKKOS_INLINE_FUNCTION -- GitLab From 5d5751be190b198c8e8c48526d40217e0c443255 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 10 Jan 2017 12:38:48 -0700 Subject: [PATCH 065/337] fix class name in PAIR_CLASS setup --- src/KOKKOS/pair_table_rx_kokkos.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index c468461263..de9ae20e35 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -13,9 +13,9 @@ #ifdef PAIR_CLASS -PairStyle(table/rx/kk,PairTableKokkos) -PairStyle(table/rx/kk/device,PairTableKokkos) -PairStyle(table/rx/kk/host,PairTableKokkos) +PairStyle(table/rx/kk,PairTableRXKokkos) +PairStyle(table/rx/kk/device,PairTableRXKokkos) +PairStyle(table/rx/kk/host,PairTableRXKokkos) #else -- GitLab From 55aa91be6b88670dc16658883e30bfe0710e695e Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 10 Jan 2017 13:07:22 -0700 Subject: [PATCH 066/337] copy uCG and uCGnew correctly --- src/KOKKOS/pair_table_rx_kokkos.cpp | 9 ++++++--- src/KOKKOS/pair_table_rx_kokkos.h | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 26e335fcff..0cb2f11efc 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -53,8 +53,9 @@ PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTable(lmp) update_table = 0; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; - datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | DVECTOR_MASK; - datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | + DVECTOR_MASK | UCG_MASK | UCGNEW_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK; h_table = new TableHost(); d_table = new TableDevice(); fractionalWeighting = true; @@ -94,7 +95,7 @@ template template PairTableRXKokkos::Functor::Functor( PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr): - c(*c_ptr),f(c.f),list(*list_ptr) + c(*c_ptr),f(c.f),uCG(c.uCG),uCGnew(c.uCGnew),list(*list_ptr) {} template @@ -301,6 +302,8 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) x = c_x = atomKK->k_x.view(); f = atomKK->k_f.view(); type = atomKK->k_type.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); nlocal = atom->nlocal; nall = atom->nlocal + atom->nghost; special_lj[0] = force->special_lj[0]; diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index de9ae20e35..ad8071800f 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -92,6 +92,8 @@ class PairTableRXKokkos : public PairTable { typename ArrayTypes::t_x_array_const c_x; typename ArrayTypes::t_f_array f; typename ArrayTypes::t_int_1d_randomread type; + typename ArrayTypes::t_efloat_1d uCG; + typename ArrayTypes::t_efloat_1d uCGnew; typename ArrayTypes::t_efloat_1d d_eatom; typename ArrayTypes::t_virial_array d_vatom; -- GitLab From d65676e981bdb5d8a9cc2c4dad9c8dfb09ea1d74 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 10 Jan 2017 16:08:55 -0700 Subject: [PATCH 067/337] make everything public to appease NVCC --- src/KOKKOS/pair_table_rx_kokkos.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index ad8071800f..ed0f0c2eb2 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -50,9 +50,6 @@ class PairTableRXKokkos : public PairTable { void init_style(); - - protected: - struct TableDeviceConst { typename ArrayTypes::t_ffloat_2d cutsq; typename ArrayTypes::t_int_2d tabindex; @@ -97,7 +94,6 @@ class PairTableRXKokkos : public PairTable { typename ArrayTypes::t_efloat_1d d_eatom; typename ArrayTypes::t_virial_array d_vatom; - protected: int nlocal,nall,eflag,vflag,neighflag,newton_pair; int update_table; @@ -163,6 +159,7 @@ class PairTableRXKokkos : public PairTable { KOKKOS_INLINE_FUNCTION void operator()(const int, value_type&) const; }; + }; } -- GitLab From 6a9a0e8c334f60ccc8a6e4a8ff19308cac09a156 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 11 Jan 2017 09:25:13 -0700 Subject: [PATCH 068/337] tracking down some invalid reads... --- src/KOKKOS/Install.sh | 4 +- src/KOKKOS/pair_table_rx_kokkos.cpp | 290 ++++++++++++++-------------- src/KOKKOS/pair_table_rx_kokkos.h | 4 +- 3 files changed, 148 insertions(+), 150 deletions(-) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index cfda7dbf94..e76f62d65d 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -28,8 +28,8 @@ action () { # force rebuild of files with LMP_KOKKOS switch -touch ../accelerator_kokkos.h -touch ../memory.h +#touch ../accelerator_kokkos.h +#touch ../memory.h # list of files with optional dependcies diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 0cb2f11efc..6c7c7b0efe 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -94,15 +94,15 @@ void PairTableRXKokkos::compute(int eflag_in, int vflag_in) template template PairTableRXKokkos::Functor::Functor( - PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr): - c(*c_ptr),f(c.f),uCG(c.uCG),uCGnew(c.uCGnew),list(*list_ptr) + PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr)//: +//c(*c_ptr),f(c.f),uCG(c.uCG),uCGnew(c.uCGnew),list(*list_ptr) {} template template PairTableRXKokkos::Functor::~Functor() { - c.cleanup_copy(); - list.clean_copy(); +//c.cleanup_copy(); +//list.clean_copy(); } template @@ -113,89 +113,89 @@ EV_FLOAT PairTableRXKokkos::Functor:: compute_item(const int& ii) const { EV_FLOAT ev; - const int i = list.d_ilist[ii]; - const X_FLOAT xtmp = c.x(i,0); - const X_FLOAT ytmp = c.x(i,1); - const X_FLOAT ztmp = c.x(i,2); - const int itype = c.type(i); - - const AtomNeighborsConst jlist = list.get_neighbors_const(i); - const int jnum = list.d_numneigh[i]; - - double uCG_i = 0.0; - double uCGnew_i = 0.0; - double fx_i = 0.0, fy_i = 0.0, fz_i = 0.0; - - double mixWtSite1old_i = c.mixWtSite1old_(i); - double mixWtSite2old_i = c.mixWtSite2old_(i); - double mixWtSite1_i = c.mixWtSite1_(i); - double mixWtSite2_i = c.mixWtSite2_(i); - - for (int jj = 0; jj < jnum; jj++) { - int j = jlist(jj); - const F_FLOAT factor_lj = c.special_lj[sbmask(j)]; - j &= NEIGHMASK; - - const X_FLOAT delx = xtmp - c.x(j,0); - const X_FLOAT dely = ytmp - c.x(j,1); - const X_FLOAT delz = ztmp - c.x(j,2); - const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; - const int jtype = c.type(j); - - if(rsq < (STACKPARAMS?c.m_cutsq[itype][jtype]:c.d_cutsq(itype,jtype))) { - double mixWtSite1old_j = c.mixWtSite1old_(j); - double mixWtSite2old_j = c.mixWtSite2old_(j); - double mixWtSite1_j = c.mixWtSite1_(j); - double mixWtSite2_j = c.mixWtSite2_(j); - - const F_FLOAT fpair = factor_lj*c.template compute_fpair(rsq,i,j,itype,jtype); - - fx_i += delx*fpair; - fy_i += dely*fpair; - fz_i += delz*fpair; - - bool do_half = (NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && - (NEWTON_PAIR || j < c.nlocal); - if (do_half) { - f(j,0) -= delx*fpair; - f(j,1) -= dely*fpair; - f(j,2) -= delz*fpair; - } - - auto evdwl = c.template compute_evdwl(rsq,i,j,itype,jtype); - - double evdwlOld; - if (c.isite1 == c.isite2) { - evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwl; - evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwl; - } else { - evdwlOld = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + - sqrt(mixWtSite2old_i*mixWtSite1old_j))*evdwl; - evdwl = (sqrt(mixWtSite1_i*mixWtSite2_j) + - sqrt(mixWtSite2_i*mixWtSite1_j))*evdwl; - } - evdwlOld *= factor_lj; - evdwl *= factor_lj; - - uCG_i += 0.5*evdwlOld; - if (do_half) uCG(j) += 0.5*evdwlOld; - - uCGnew_i += 0.5*evdwl; - if (do_half) uCGnew(j) += 0.5*evdwl; - evdwl = evdwlOld; - - ev.evdwl += (do_half ? 1.0 : 0.5)*evdwl; - - if (EVFLAG) ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); - } - } - - uCG(i) += uCG_i; - uCGnew(i) += uCGnew_i; - - f(i,0) += fx_i; - f(i,1) += fy_i; - f(i,2) += fz_i; +//const int i = list.d_ilist[ii]; +//const X_FLOAT xtmp = c.x(i,0); +//const X_FLOAT ytmp = c.x(i,1); +//const X_FLOAT ztmp = c.x(i,2); +//const int itype = c.type(i); + +//const AtomNeighborsConst jlist = list.get_neighbors_const(i); +//const int jnum = list.d_numneigh[i]; + +//double uCG_i = 0.0; +//double uCGnew_i = 0.0; +//double fx_i = 0.0, fy_i = 0.0, fz_i = 0.0; + +//double mixWtSite1old_i = c.mixWtSite1old_(i); +//double mixWtSite2old_i = c.mixWtSite2old_(i); +//double mixWtSite1_i = c.mixWtSite1_(i); +//double mixWtSite2_i = c.mixWtSite2_(i); + +//for (int jj = 0; jj < jnum; jj++) { +// int j = jlist(jj); +// const F_FLOAT factor_lj = c.special_lj[sbmask(j)]; +// j &= NEIGHMASK; + +// const X_FLOAT delx = xtmp - c.x(j,0); +// const X_FLOAT dely = ytmp - c.x(j,1); +// const X_FLOAT delz = ztmp - c.x(j,2); +// const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; +// const int jtype = c.type(j); + +// if(rsq < (STACKPARAMS?c.m_cutsq[itype][jtype]:c.d_cutsq(itype,jtype))) { +// double mixWtSite1old_j = c.mixWtSite1old_(j); +// double mixWtSite2old_j = c.mixWtSite2old_(j); +// double mixWtSite1_j = c.mixWtSite1_(j); +// double mixWtSite2_j = c.mixWtSite2_(j); + +// const F_FLOAT fpair = factor_lj*c.template compute_fpair(rsq,i,j,itype,jtype); + +// fx_i += delx*fpair; +// fy_i += dely*fpair; +// fz_i += delz*fpair; + +// bool do_half = (NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && +// (NEWTON_PAIR || j < c.nlocal); +// if (do_half) { +// f(j,0) -= delx*fpair; +// f(j,1) -= dely*fpair; +// f(j,2) -= delz*fpair; +// } + +// auto evdwl = c.template compute_evdwl(rsq,i,j,itype,jtype); + +// double evdwlOld; +// if (c.isite1 == c.isite2) { +// evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwl; +// evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwl; +// } else { +// evdwlOld = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + +// sqrt(mixWtSite2old_i*mixWtSite1old_j))*evdwl; +// evdwl = (sqrt(mixWtSite1_i*mixWtSite2_j) + +// sqrt(mixWtSite2_i*mixWtSite1_j))*evdwl; +// } +// evdwlOld *= factor_lj; +// evdwl *= factor_lj; + +// uCG_i += 0.5*evdwlOld; +// if (do_half) uCG(j) += 0.5*evdwlOld; + +// uCGnew_i += 0.5*evdwl; +// if (do_half) uCGnew(j) += 0.5*evdwl; +// evdwl = evdwlOld; + +// ev.evdwl += (do_half ? 1.0 : 0.5)*evdwl; + +// if (EVFLAG) ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); +// } +//} + +//uCG(i) += uCG_i; +//uCGnew(i) += uCGnew_i; + +//f(i,0) += fx_i; +//f(i,1) += fy_i; +//f(i,2) += fz_i; return ev; } @@ -209,55 +209,55 @@ ev_tally(EV_FLOAT &ev, const int &i, const int &j, const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const { - const int EFLAG = c.eflag; - const int NEWTON_PAIR = c.newton_pair; - const int VFLAG = c.vflag_either; - - if (VFLAG) { - const E_FLOAT v0 = delx*delx*fpair; - const E_FLOAT v1 = dely*dely*fpair; - const E_FLOAT v2 = delz*delz*fpair; - const E_FLOAT v3 = delx*dely*fpair; - const E_FLOAT v4 = delx*delz*fpair; - const E_FLOAT v5 = dely*delz*fpair; - - if (c.vflag_global) { - if (NEIGHFLAG!=FULL) { - if (NEWTON_PAIR) { - ev.v[0] += v0; - ev.v[1] += v1; - ev.v[2] += v2; - ev.v[3] += v3; - ev.v[4] += v4; - ev.v[5] += v5; - } else { - if (i < c.nlocal) { - ev.v[0] += 0.5*v0; - ev.v[1] += 0.5*v1; - ev.v[2] += 0.5*v2; - ev.v[3] += 0.5*v3; - ev.v[4] += 0.5*v4; - ev.v[5] += 0.5*v5; - } - if (j < c.nlocal) { - ev.v[0] += 0.5*v0; - ev.v[1] += 0.5*v1; - ev.v[2] += 0.5*v2; - ev.v[3] += 0.5*v3; - ev.v[4] += 0.5*v4; - ev.v[5] += 0.5*v5; - } - } - } else { - ev.v[0] += 0.5*v0; - ev.v[1] += 0.5*v1; - ev.v[2] += 0.5*v2; - ev.v[3] += 0.5*v3; - ev.v[4] += 0.5*v4; - ev.v[5] += 0.5*v5; - } - } - } +//const int EFLAG = c.eflag; +//const int NEWTON_PAIR = c.newton_pair; +//const int VFLAG = c.vflag_either; + +//if (VFLAG) { +// const E_FLOAT v0 = delx*delx*fpair; +// const E_FLOAT v1 = dely*dely*fpair; +// const E_FLOAT v2 = delz*delz*fpair; +// const E_FLOAT v3 = delx*dely*fpair; +// const E_FLOAT v4 = delx*delz*fpair; +// const E_FLOAT v5 = dely*delz*fpair; + +// if (c.vflag_global) { +// if (NEIGHFLAG!=FULL) { +// if (NEWTON_PAIR) { +// ev.v[0] += v0; +// ev.v[1] += v1; +// ev.v[2] += v2; +// ev.v[3] += v3; +// ev.v[4] += v4; +// ev.v[5] += v5; +// } else { +// if (i < c.nlocal) { +// ev.v[0] += 0.5*v0; +// ev.v[1] += 0.5*v1; +// ev.v[2] += 0.5*v2; +// ev.v[3] += 0.5*v3; +// ev.v[4] += 0.5*v4; +// ev.v[5] += 0.5*v5; +// } +// if (j < c.nlocal) { +// ev.v[0] += 0.5*v0; +// ev.v[1] += 0.5*v1; +// ev.v[2] += 0.5*v2; +// ev.v[3] += 0.5*v3; +// ev.v[4] += 0.5*v4; +// ev.v[5] += 0.5*v5; +// } +// } +// } else { +// ev.v[0] += 0.5*v0; +// ev.v[1] += 0.5*v1; +// ev.v[2] += 0.5*v2; +// ev.v[3] += 0.5*v3; +// ev.v[4] += 0.5*v4; +// ev.v[5] += 0.5*v5; +// } +// } +//} } template @@ -266,8 +266,8 @@ KOKKOS_INLINE_FUNCTION void PairTableRXKokkos::Functor:: operator()(const int i) const { - if (c.newton_pair) compute_item<0,1>(i); - else compute_item<0,0>(i); +//if (c.newton_pair) compute_item<0,1>(i); +//else compute_item<0,0>(i); } template @@ -276,8 +276,8 @@ KOKKOS_INLINE_FUNCTION void PairTableRXKokkos::Functor:: operator()(const int i, value_type &energy_virial) const { - if (c.newton_pair) energy_virial += compute_item<1,1>(i); - else energy_virial += compute_item<1,0>(i); +//if (c.newton_pair) energy_virial += compute_item<1,1>(i); +//else energy_virial += compute_item<1,0>(i); } template @@ -322,10 +322,10 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) typename DAT::t_float_2d_randomread d_dvector = atomKK->k_dvector.view(); - Kokkos::parallel_for(ntotal, LAMMPS_LAMBDA(int i) { - getMixingWeights(d_dvector, i, mixWtSite1old_(i), mixWtSite2old_(i), - mixWtSite1_(i), mixWtSite2_(i)); - }); +//Kokkos::parallel_for(ntotal, LAMMPS_LAMBDA(int i) { +// getMixingWeights(d_dvector, i, mixWtSite1old_(i), mixWtSite2old_(i), +// mixWtSite1_(i), mixWtSite2_(i)); +//}); if (neighflag == N2) error->all(FLERR,"pair table/rx/kk can't handle N2 yet\n"); @@ -971,8 +971,6 @@ void PairTableRXKokkos::getMixingWeights( nTotal += dvector(ispecies,id); nTotalOld += dvector(ispecies+nspecies,id); } - if(nTotal < MY_EPSILON || nTotalOld < MY_EPSILON) - error->all(FLERR,"The number of molecules in CG particle is less than 10*DBL_EPSILON."); if (isOneFluid(isite1) == false){ nMoleculesOld1 = dvector(isite1+nspecies,id); diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index ed0f0c2eb2..b71f57076d 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -132,7 +132,7 @@ class PairTableRXKokkos : public PairTable { struct Functor { using device_type = DeviceType; typedef EV_FLOAT value_type; - PairTableRXKokkos c; + //PairTableRXKokkos c; // arrays are atomic for Half(Thread) neighbor style Kokkos::View::value> > f; @@ -140,7 +140,7 @@ class PairTableRXKokkos : public PairTable { device_type,Kokkos::MemoryTraits::value> > uCG; Kokkos::View::value> > uCGnew; - NeighListKokkos list; + //NeighListKokkos list; Functor(PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr); ~Functor(); KOKKOS_INLINE_FUNCTION int sbmask(const int& j) const { -- GitLab From b5ff41f5efedd0aea4674263c7f4d620308e3100 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 11 Jan 2017 11:10:33 -0700 Subject: [PATCH 069/337] made MixingWeights code non-member CUDA was simply giving too many errors dealing with captures of member variables. --- src/KOKKOS/pair_table_rx_kokkos.cpp | 199 ++++++++++++++++------------ 1 file changed, 114 insertions(+), 85 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 6c7c7b0efe..63db613538 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -31,6 +31,7 @@ #include "error.h" #include "atom_masks.h" #include "fix.h" +#include using namespace LAMMPS_NS; @@ -45,6 +46,92 @@ enum{NONE,RLINEAR,RSQ,BMP}; #define OneFluidValue (-1) #define isOneFluid(_site_) ( (_site_) == OneFluidValue ) +template +KOKKOS_INLINE_FUNCTION +void getMixingWeights( + typename ArrayTypes::t_float_2d_randomread dvector, + int nspecies, + int isite1, int isite2, + bool fractionalWeighting, + int id, + double &mixWtSite1old, double &mixWtSite2old, + double &mixWtSite1, double &mixWtSite2) { + double fractionOFAold, fractionOFA; + double fractionOld1, fraction1; + double fractionOld2, fraction2; + double nMoleculesOFAold, nMoleculesOFA; + double nMoleculesOld1, nMolecules1; + double nMoleculesOld2, nMolecules2; + double nTotal, nTotalOld; + + nTotal = 0.0; + nTotalOld = 0.0; + assert(id >= 0); + assert(id < dvector.dimension_1()); + for (int ispecies = 0; ispecies < nspecies; ++ispecies){ + assert(ispecies < dvector.dimension_0()); + nTotal += dvector(ispecies,id); + assert(ispecies+nspecies < dvector.dimension_0()); + nTotalOld += dvector(ispecies+nspecies,id); + } + + assert(isite1 >= 0); + assert(isite1 < nspecies); + assert(isite2 >= 0); + assert(isite2 < nspecies); + if (isOneFluid(isite1) == false){ + nMoleculesOld1 = dvector(isite1+nspecies,id); + nMolecules1 = dvector(isite1,id); + fractionOld1 = nMoleculesOld1/nTotalOld; + fraction1 = nMolecules1/nTotal; + } + if (isOneFluid(isite2) == false){ + nMoleculesOld2 = dvector(isite2+nspecies,id); + nMolecules2 = dvector(isite2,id); + fractionOld2 = nMoleculesOld2/nTotalOld; + fraction2 = nMolecules2/nTotal; + } + + if (isOneFluid(isite1) || isOneFluid(isite2)){ + nMoleculesOFAold = 0.0; + nMoleculesOFA = 0.0; + fractionOFAold = 0.0; + fractionOFA = 0.0; + + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + if (isite1 == ispecies || isite2 == ispecies) continue; + nMoleculesOFAold += dvector(ispecies+nspecies,id); + nMoleculesOFA += dvector(ispecies,id); + fractionOFAold += dvector(ispecies+nspecies,id)/nTotalOld; + fractionOFA += dvector(ispecies,id)/nTotal; + } + if(isOneFluid(isite1)){ + nMoleculesOld1 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); + fractionOld1 = fractionOFAold; + fraction1 = fractionOFA; + } + if(isOneFluid(isite2)){ + nMoleculesOld2 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); + fractionOld2 = fractionOFAold; + fraction2 = fractionOFA; + } + } + + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; + } +} + /* ---------------------------------------------------------------------- */ template @@ -280,6 +367,24 @@ operator()(const int i, value_type &energy_virial) const { //else energy_virial += compute_item<1,0>(i); } +template +static void getAllMixingWeights( + int ntotal, + typename ArrayTypes::t_float_2d_randomread dvector, + int nspecies, + int isite1, int isite2, + bool fractionalWeighting, + Kokkos::View mixWtSite1old, + Kokkos::View mixWtSite2old, + Kokkos::View mixWtSite1, + Kokkos::View mixWtSite2) { + Kokkos::parallel_for(ntotal, + LAMMPS_LAMBDA(int i) { + getMixingWeights(dvector,nspecies,isite1,isite2,fractionalWeighting, + i, mixWtSite1old(i), mixWtSite2old(i), mixWtSite1(i), mixWtSite2(i)); + }); +} + template template void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) @@ -320,12 +425,9 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) mixWtSite1_ = Kokkos::View("PairTableRXKokkos::mixWtSite1", ntotal); mixWtSite2_ = Kokkos::View("PairTableRXKokkos::mixWtSite2", ntotal); - typename DAT::t_float_2d_randomread d_dvector = atomKK->k_dvector.view(); - -//Kokkos::parallel_for(ntotal, LAMMPS_LAMBDA(int i) { -// getMixingWeights(d_dvector, i, mixWtSite1old_(i), mixWtSite2old_(i), -// mixWtSite1_(i), mixWtSite2_(i)); -//}); + getAllMixingWeights(ntotal, atomKK->k_dvector.template view(), + nspecies, isite1, isite2, fractionalWeighting, + mixWtSite1old_, mixWtSite2old_, mixWtSite1_, mixWtSite2_); if (neighflag == N2) error->all(FLERR,"pair table/rx/kk can't handle N2 yet\n"); @@ -848,9 +950,13 @@ double PairTableRXKokkos::single(int i, int j, int itype, int jtype, atomKK->k_dvector.template sync(); typename ArrayTypes::t_float_2d_randomread h_dvector = atomKK->k_dvector.view(); - getMixingWeights(h_dvector,i,mixWtSite1old_i,mixWtSite2old_i, + getMixingWeights(h_dvector, + nspecies, isite1, isite2, fractionalWeighting, + i,mixWtSite1old_i,mixWtSite2old_i, mixWtSite1_i,mixWtSite2_i); - getMixingWeights(h_dvector,j,mixWtSite1old_j,mixWtSite2old_j, + getMixingWeights(h_dvector, + nspecies, isite1, isite2, fractionalWeighting, + j,mixWtSite1old_j,mixWtSite2old_j, mixWtSite1_j,mixWtSite2_j); if (rsq < tb->innersq) error->one(FLERR,"Pair distance < table inner cutoff"); @@ -948,83 +1054,6 @@ void PairTableRXKokkos::cleanup_copy() { vatom = NULL; h_table=NULL; d_table=NULL; } - -template -template -KOKKOS_INLINE_FUNCTION -void PairTableRXKokkos::getMixingWeights( - typename ArrayTypes::t_float_2d_randomread dvector, - int id, - double &mixWtSite1old, double &mixWtSite2old, - double &mixWtSite1, double &mixWtSite2) { - double fractionOFAold, fractionOFA; - double fractionOld1, fraction1; - double fractionOld2, fraction2; - double nMoleculesOFAold, nMoleculesOFA; - double nMoleculesOld1, nMolecules1; - double nMoleculesOld2, nMolecules2; - double nTotal, nTotalOld; - - nTotal = 0.0; - nTotalOld = 0.0; - for (int ispecies = 0; ispecies < nspecies; ++ispecies){ - nTotal += dvector(ispecies,id); - nTotalOld += dvector(ispecies+nspecies,id); - } - - if (isOneFluid(isite1) == false){ - nMoleculesOld1 = dvector(isite1+nspecies,id); - nMolecules1 = dvector(isite1,id); - fractionOld1 = nMoleculesOld1/nTotalOld; - fraction1 = nMolecules1/nTotal; - } - if (isOneFluid(isite2) == false){ - nMoleculesOld2 = dvector(isite2+nspecies,id); - nMolecules2 = dvector(isite2,id); - fractionOld2 = nMoleculesOld2/nTotalOld; - fraction2 = nMolecules2/nTotal; - } - - if (isOneFluid(isite1) || isOneFluid(isite2)){ - nMoleculesOFAold = 0.0; - nMoleculesOFA = 0.0; - fractionOFAold = 0.0; - fractionOFA = 0.0; - - for (int ispecies = 0; ispecies < nspecies; ispecies++){ - if (isite1 == ispecies || isite2 == ispecies) continue; - nMoleculesOFAold += dvector(ispecies+nspecies,id); - nMoleculesOFA += dvector(ispecies,id); - fractionOFAold += dvector(ispecies+nspecies,id)/nTotalOld; - fractionOFA += dvector(ispecies,id)/nTotal; - } - if(isOneFluid(isite1)){ - nMoleculesOld1 = 1.0-(nTotalOld-nMoleculesOFAold); - nMolecules1 = 1.0-(nTotal-nMoleculesOFA); - fractionOld1 = fractionOFAold; - fraction1 = fractionOFA; - } - if(isOneFluid(isite2)){ - nMoleculesOld2 = 1.0-(nTotalOld-nMoleculesOFAold); - nMolecules2 = 1.0-(nTotal-nMoleculesOFA); - fractionOld2 = fractionOFAold; - fraction2 = fractionOFA; - } - } - - if(fractionalWeighting){ - mixWtSite1old = fractionOld1; - mixWtSite1 = fraction1; - mixWtSite2old = fractionOld2; - mixWtSite2 = fraction2; - } else { - mixWtSite1old = nMoleculesOld1; - mixWtSite1 = nMolecules1; - mixWtSite2old = nMoleculesOld2; - mixWtSite2 = nMolecules2; - } -} - namespace LAMMPS_NS { template class PairTableRXKokkos; #ifdef KOKKOS_HAVE_CUDA -- GitLab From cb9fdf7801bed0d31e08286fee04655f13ea0435 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 11 Jan 2017 11:44:54 -0700 Subject: [PATCH 070/337] starting to separate compute_item from the class --- src/KOKKOS/neigh_list_kokkos.h | 10 +- src/KOKKOS/pair_table_rx_kokkos.cpp | 241 ++++++++++++++++++---------- src/KOKKOS/pair_table_rx_kokkos.h | 7 - 3 files changed, 163 insertions(+), 95 deletions(-) diff --git a/src/KOKKOS/neigh_list_kokkos.h b/src/KOKKOS/neigh_list_kokkos.h index 45e768927c..32e6e704ae 100644 --- a/src/KOKKOS/neigh_list_kokkos.h +++ b/src/KOKKOS/neigh_list_kokkos.h @@ -48,7 +48,7 @@ class AtomNeighborsConst const int num_neighs; KOKKOS_INLINE_FUNCTION - AtomNeighborsConst(int* const & firstneigh, const int & _num_neighs, + AtomNeighborsConst(const int* const & firstneigh, const int & _num_neighs, const int & stride): _firstneigh(firstneigh), num_neighs(_num_neighs), _stride(stride) {}; KOKKOS_INLINE_FUNCTION @@ -87,6 +87,14 @@ public: &d_neighbors(i,1)-&d_neighbors(i,0)); } + KOKKOS_INLINE_FUNCTION + static AtomNeighborsConst static_neighbors_const(int i, + typename ArrayTypes::t_neighbors_2d_const d_neighbors, + typename ArrayTypes::t_int_1d d_numneigh) { + return AtomNeighborsConst(&d_neighbors(i,0),d_numneigh(i), + &d_neighbors(i,1)-&d_neighbors(i,0)); + } + KOKKOS_INLINE_FUNCTION AtomNeighborsConst get_neighbors_const(const int &i) const { return AtomNeighborsConst(&d_neighbors(i,0),d_numneigh(i), diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 63db613538..c96da87d2f 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -31,6 +31,7 @@ #include "error.h" #include "atom_masks.h" #include "fix.h" +#include "kokkos_few.h" #include using namespace LAMMPS_NS; @@ -192,101 +193,167 @@ PairTableRXKokkos::Functor::~Functor //list.clean_copy(); } -template -template -template +KOKKOS_INLINE_FUNCTION static int sbmask(const int& j) const +{ + return j >> SBBITS & 3; +} + +template KOKKOS_INLINE_FUNCTION -EV_FLOAT -PairTableRXKokkos::Functor:: -compute_item(const int& ii) const { +static EV_FLOAT compute_item(int ii, + typename ArrayTypes::t_in_1d_const d_ilist, + typename ArrayTypes::t_neighbors_2d_const d_neighbors, + typename ArrayTypes::t_in_1d_const d_numneigh, + typename ArrayTypes::t_x_array_randomread x, + typename ArrayTypes::t_int_1d_randomread type, + Kokkos::View mixWtSite1old, + Kokkos::View mixWtSite2old, + Kokkos::View mixWtSite1, + Kokkos::View mixWtSite2, + Few special_lj, + Few, MAX_TYPES_STACKPARAMS+1> m_cutsq, + typename ArrayTypes::t_ffloat_2d d_cutsq, + Kokkos::View::t_f_array::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > f; + Kokkos::View::value> > uCG; + Kokkos::View::value> > uCGnew; + ) { EV_FLOAT ev; -//const int i = list.d_ilist[ii]; -//const X_FLOAT xtmp = c.x(i,0); -//const X_FLOAT ytmp = c.x(i,1); -//const X_FLOAT ztmp = c.x(i,2); -//const int itype = c.type(i); - -//const AtomNeighborsConst jlist = list.get_neighbors_const(i); -//const int jnum = list.d_numneigh[i]; - -//double uCG_i = 0.0; -//double uCGnew_i = 0.0; -//double fx_i = 0.0, fy_i = 0.0, fz_i = 0.0; - -//double mixWtSite1old_i = c.mixWtSite1old_(i); -//double mixWtSite2old_i = c.mixWtSite2old_(i); -//double mixWtSite1_i = c.mixWtSite1_(i); -//double mixWtSite2_i = c.mixWtSite2_(i); - -//for (int jj = 0; jj < jnum; jj++) { -// int j = jlist(jj); -// const F_FLOAT factor_lj = c.special_lj[sbmask(j)]; -// j &= NEIGHMASK; - -// const X_FLOAT delx = xtmp - c.x(j,0); -// const X_FLOAT dely = ytmp - c.x(j,1); -// const X_FLOAT delz = ztmp - c.x(j,2); -// const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; -// const int jtype = c.type(j); - -// if(rsq < (STACKPARAMS?c.m_cutsq[itype][jtype]:c.d_cutsq(itype,jtype))) { -// double mixWtSite1old_j = c.mixWtSite1old_(j); -// double mixWtSite2old_j = c.mixWtSite2old_(j); -// double mixWtSite1_j = c.mixWtSite1_(j); -// double mixWtSite2_j = c.mixWtSite2_(j); - -// const F_FLOAT fpair = factor_lj*c.template compute_fpair(rsq,i,j,itype,jtype); - -// fx_i += delx*fpair; -// fy_i += dely*fpair; -// fz_i += delz*fpair; - -// bool do_half = (NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && -// (NEWTON_PAIR || j < c.nlocal); -// if (do_half) { -// f(j,0) -= delx*fpair; -// f(j,1) -= dely*fpair; -// f(j,2) -= delz*fpair; -// } - -// auto evdwl = c.template compute_evdwl(rsq,i,j,itype,jtype); - -// double evdwlOld; -// if (c.isite1 == c.isite2) { -// evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwl; -// evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwl; -// } else { -// evdwlOld = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + -// sqrt(mixWtSite2old_i*mixWtSite1old_j))*evdwl; -// evdwl = (sqrt(mixWtSite1_i*mixWtSite2_j) + -// sqrt(mixWtSite2_i*mixWtSite1_j))*evdwl; -// } -// evdwlOld *= factor_lj; -// evdwl *= factor_lj; - -// uCG_i += 0.5*evdwlOld; -// if (do_half) uCG(j) += 0.5*evdwlOld; - -// uCGnew_i += 0.5*evdwl; -// if (do_half) uCGnew(j) += 0.5*evdwl; -// evdwl = evdwlOld; - -// ev.evdwl += (do_half ? 1.0 : 0.5)*evdwl; - -// if (EVFLAG) ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); -// } -//} + auto i = d_ilist(ii); + auto xtmp = x(i,0); + auto ytmp = x(i,1); + auto ztmp = x(i,2); + auto itype = type(i); + + auto jlist = NeighListKokkos::static_neighbors_const(i, + d_neighbors, d_numneigh); + auto jnum = d_numneigh(i); + + double uCG_i = 0.0; + double uCGnew_i = 0.0; + double fx_i = 0.0, fy_i = 0.0, fz_i = 0.0; + + auto mixWtSite1old_i = mixWtSite1old(i); + auto mixWtSite2old_i = mixWtSite2old(i); + auto mixWtSite1_i = mixWtSite1(i); + auto mixWtSite2_i = mixWtSite2(i); + + for (int jj = 0; jj < jnum; jj++) { + auto j = jlist(jj); + const F_FLOAT factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + auto delx = xtmp - x(j,0); + auto dely = ytmp - x(j,1); + auto delz = ztmp - x(j,2); + auto rsq = delx*delx + dely*dely + delz*delz; + auto jtype = type(j); + + if(rsq < (STACKPARAMS ? m_cutsq[itype][jtype] : d_cutsq(itype,jtype))) { + auto mixWtSite1old_j = mixWtSite1old_(j); + auto mixWtSite2old_j = mixWtSite2old_(j); + auto mixWtSite1_j = mixWtSite1_(j); + auto mixWtSite2_j = mixWtSite2_(j); + + auto fpair = factor_lj * compute_fpair( + rsq,i,j,itype,jtype); + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + + auto do_half = (NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && + (NEWTON_PAIR || j < c.nlocal); + if (do_half) { + f(j,0) -= delx*fpair; + f(j,1) -= dely*fpair; + f(j,2) -= delz*fpair; + } + + auto evdwl = compute_evdwl( + rsq,i,j,itype,jtype); + + double evdwlOld; + if (c.isite1 == c.isite2) { + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwl; + evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwl; + } else { + evdwlOld = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + + sqrt(mixWtSite2old_i*mixWtSite1old_j))*evdwl; + evdwl = (sqrt(mixWtSite1_i*mixWtSite2_j) + + sqrt(mixWtSite2_i*mixWtSite1_j))*evdwl; + } + evdwlOld *= factor_lj; + evdwl *= factor_lj; + + uCG_i += 0.5*evdwlOld; + if (do_half) uCG(j) += 0.5*evdwlOld; + + uCGnew_i += 0.5*evdwl; + if (do_half) uCGnew(j) += 0.5*evdwl; + evdwl = evdwlOld; + + ev.evdwl += (do_half ? 1.0 : 0.5)*evdwl; + + if (EVFLAG) { + ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + } + } + } -//uCG(i) += uCG_i; -//uCGnew(i) += uCGnew_i; + uCG(i) += uCG_i; + uCGnew(i) += uCGnew_i; -//f(i,0) += fx_i; -//f(i,1) += fy_i; -//f(i,2) += fz_i; + f(i,0) += fx_i; + f(i,1) += fy_i; + f(i,2) += fz_i; return ev; } +template +static void compute_all_items( + int eflag, int vflag, + int newton_pair, + EV_FLOAT& ev, + Kokkos::View mixWtSite1old, + Kokkos::View mixWtSite2old, + Kokkos::View mixWtSite1, + Kokkos::View mixWtSite2, + int inum, + if (eflag || vflag) { + Kokkos::parallel_reduce(inum, + LAMMPS_LAMBDA(int i, EV_FLOAT& energy_virial) { + if (newton_pair) { + energy_virial += + compute_item( + ); + } else { + energy_virial += + compute_item( + ); + energy_virial += compute_item<1,0>(i); + } + }, ev); + } else { + Kokkos::parallel_for(inum, + LAMMPS_LAMBDA(int i) { + if (newton_pair) { + compute_item( + ); + } else { + compute_item( + ); + } + }, ev); + } +} + template template KOKKOS_INLINE_FUNCTION diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index b71f57076d..33f96d4c32 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -85,10 +85,8 @@ class PairTableRXKokkos : public PairTable { virtual void allocate(); void compute_table(Table *); - typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array_const c_x; typename ArrayTypes::t_f_array f; - typename ArrayTypes::t_int_1d_randomread type; typename ArrayTypes::t_efloat_1d uCG; typename ArrayTypes::t_efloat_1d uCGnew; typename ArrayTypes::t_efloat_1d d_eatom; @@ -117,11 +115,6 @@ class PairTableRXKokkos : public PairTable { int isite1, isite2; bool fractionalWeighting; - template - KOKKOS_INLINE_FUNCTION - void getMixingWeights(typename ArrayTypes::t_float_2d_randomread, - int, double &, double &, double &, double &); - Kokkos::View mixWtSite1old_; Kokkos::View mixWtSite2old_; Kokkos::View mixWtSite1_; -- GitLab From c2bb20e60f8396158f6f712386a54a75b7d5ac43 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 11 Jan 2017 11:54:01 -0700 Subject: [PATCH 071/337] made compute_fpair a free function as well --- src/KOKKOS/pair_table_rx_kokkos.cpp | 81 +++++++++++++++-------------- src/KOKKOS/pair_table_rx_kokkos.h | 4 -- 2 files changed, 43 insertions(+), 42 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index c96da87d2f..26c5de87e4 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -198,6 +198,40 @@ KOKKOS_INLINE_FUNCTION static int sbmask(const int& j) const return j >> SBBITS & 3; } +template +KOKKOS_INLINE_FUNCTION +static F_FLOAT +compute_fpair(F_FLOAT rsq, + int itype, int jtype, + PairTableRXKokkos::TableDeviceConst d_table_const, + ) { + union_int_float_t rsq_lookup; + double fpair; + const int tidx = d_table_const.tabindex(itype,jtype); + if (TABSTYLE == LOOKUP) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + fpair = d_table_const.f(tidx,itable); + } else if (TABSTYLE == LINEAR) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); + } else if (TABSTYLE == SPLINE) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + const double a = 1.0 - b; + fpair = a * d_table_const.f(tidx,itable) + b * d_table_const.f(tidx,itable+1) + + ((a*a*a-a)*d_table_const.f2(tidx,itable) + (b*b*b-b)*d_table_const.f2(tidx,itable+1)) * + d_table_const.deltasq6(tidx); + } else { + rsq_lookup.f = rsq; + int itable = rsq_lookup.i & d_table_const.nmask(tidx); + itable >>= d_table_const.nshiftbits(tidx); + const double fraction = (rsq_lookup.f - d_table_const.rsq(tidx,itable)) * d_table_const.drsq(tidx,itable); + fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); + } + return fpair; +} + template KOKKOS_INLINE_FUNCTION @@ -222,6 +256,8 @@ static EV_FLOAT compute_item(int ii, device_type,Kokkos::MemoryTraits::value> > uCG; Kokkos::View::value> > uCGnew; + int isite1, int isite2, + PairTableRXKokkos::TableDeviceConst d_table_const, ) { EV_FLOAT ev; auto i = d_ilist(ii); @@ -260,8 +296,12 @@ static EV_FLOAT compute_item(int ii, auto mixWtSite1_j = mixWtSite1_(j); auto mixWtSite2_j = mixWtSite2_(j); - auto fpair = factor_lj * compute_fpair( - rsq,i,j,itype,jtype); + auto fpair = factor_lj * compute_fpair( + rsq,itype,jtype,d_table_const); + + if (isite1 == isite2) fpair *= sqrt(mixWtSite1old_i * mixWtSite2old_j); + else fpair *= (sqrt(mixWtSite1old_i * mixWtSite2old_j) + + sqrt(mixWtSite2old_i * mixWtSite1old_j)); fx_i += delx*fpair; fy_i += dely*fpair; @@ -279,7 +319,7 @@ static EV_FLOAT compute_item(int ii, rsq,i,j,itype,jtype); double evdwlOld; - if (c.isite1 == c.isite2) { + if (isite1 == isite2) { evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwl; evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwl; } else { @@ -550,41 +590,6 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (vflag_fdotr) pair_virial_fdotr_compute(this); } -template -template -KOKKOS_INLINE_FUNCTION -F_FLOAT PairTableRXKokkos:: -compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { - union_int_float_t rsq_lookup; - double fpair; - const int tidx = d_table_const.tabindex(itype,jtype); - if (TABSTYLE == LOOKUP) { - const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - fpair = d_table_const.f(tidx,itable); - } else if (TABSTYLE == LINEAR) { - const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); - fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); - } else if (TABSTYLE == SPLINE) { - const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); - const double a = 1.0 - b; - fpair = a * d_table_const.f(tidx,itable) + b * d_table_const.f(tidx,itable+1) + - ((a*a*a-a)*d_table_const.f2(tidx,itable) + (b*b*b-b)*d_table_const.f2(tidx,itable+1)) * - d_table_const.deltasq6(tidx); - } else { - rsq_lookup.f = rsq; - int itable = rsq_lookup.i & d_table_const.nmask(tidx); - itable >>= d_table_const.nshiftbits(tidx); - const double fraction = (rsq_lookup.f - d_table_const.rsq(tidx,itable)) * d_table_const.drsq(tidx,itable); - fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); - } - if (isite1 == isite2) fpair *= sqrt(mixWtSite1old_(i) * mixWtSite2old_(j)); - else fpair *= (sqrt(mixWtSite1old_(i) * mixWtSite2old_(j)) + - sqrt(mixWtSite2old_(i) * mixWtSite1old_(j))); - return fpair; -} - template template KOKKOS_INLINE_FUNCTION diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index 33f96d4c32..b2814adcec 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -98,10 +98,6 @@ class PairTableRXKokkos : public PairTable { void create_kokkos_tables(); void cleanup_copy(); - template - KOKKOS_INLINE_FUNCTION - F_FLOAT compute_fpair(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; - template KOKKOS_INLINE_FUNCTION F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; -- GitLab From 41804ff52464f6c60ae3a0b32ead2f0a5386d733 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 11 Jan 2017 12:42:05 -0700 Subject: [PATCH 072/337] progress converting compute_style --- src/KOKKOS/pair_table_rx_kokkos.cpp | 234 +++++++++++++++------------- src/KOKKOS/pair_table_rx_kokkos.h | 11 +- 2 files changed, 126 insertions(+), 119 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 26c5de87e4..a9703dd927 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -232,10 +232,48 @@ compute_fpair(F_FLOAT rsq, return fpair; } +template +KOKKOS_INLINE_FUNCTION +static F_FLOAT +compute_evdwl( + F_FLOAT rsq, + int itype, int jtype, + PairTableRXKokkos::TableDeviceConst d_table_const, + ) const { + double evdwl; + union_int_float_t rsq_lookup; + const int tidx = d_table_const.tabindex(itype,jtype); + if (TABSTYLE == LOOKUP) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + evdwl = d_table_const.e(tidx,itable); + } else if (TABSTYLE == LINEAR) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); + } else if (TABSTYLE == SPLINE) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + const double a = 1.0 - b; + evdwl = a * d_table_const.e(tidx,itable) + b * d_table_const.e(tidx,itable+1) + + ((a*a*a-a)*d_table_const.e2(tidx,itable) + (b*b*b-b)*d_table_const.e2(tidx,itable+1)) * + d_table_const.deltasq6(tidx); + } else { + rsq_lookup.f = rsq; + int itable = rsq_lookup.i & d_table_const.nmask(tidx); + itable >>= d_table_const.nshiftbits(tidx); + const double fraction = (rsq_lookup.f - d_table_const.rsq(tidx,itable)) * d_table_const.drsq(tidx,itable); + evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); + } + return evdwl; +} + template KOKKOS_INLINE_FUNCTION -static EV_FLOAT compute_item(int ii, +static EV_FLOAT +compute_item( + int ii, + int nlocal, typename ArrayTypes::t_in_1d_const d_ilist, typename ArrayTypes::t_neighbors_2d_const d_neighbors, typename ArrayTypes::t_in_1d_const d_numneigh, @@ -308,7 +346,7 @@ static EV_FLOAT compute_item(int ii, fz_i += delz*fpair; auto do_half = (NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && - (NEWTON_PAIR || j < c.nlocal); + (NEWTON_PAIR || j < nlocal); if (do_half) { f(j,0) -= delx*fpair; f(j,1) -= dely*fpair; @@ -316,7 +354,7 @@ static EV_FLOAT compute_item(int ii, } auto evdwl = compute_evdwl( - rsq,i,j,itype,jtype); + rsq,itype,jtype,d_table_const); double evdwlOld; if (isite1 == isite2) { @@ -361,22 +399,47 @@ static void compute_all_items( int eflag, int vflag, int newton_pair, EV_FLOAT& ev, + int nlocal, + int inum, + typename ArrayTypes::t_in_1d_const d_ilist, + typename ArrayTypes::t_neighbors_2d_const d_neighbors, + typename ArrayTypes::t_in_1d_const d_numneigh, + typename ArrayTypes::t_x_array_randomread x, + typename ArrayTypes::t_int_1d_randomread type, Kokkos::View mixWtSite1old, Kokkos::View mixWtSite2old, Kokkos::View mixWtSite1, Kokkos::View mixWtSite2, - int inum, + Few special_lj, + Few, MAX_TYPES_STACKPARAMS+1> m_cutsq, + typename ArrayTypes::t_ffloat_2d d_cutsq, + Kokkos::View::t_f_array::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > f; + Kokkos::View::value> > uCG; + Kokkos::View::value> > uCGnew; + int isite1, int isite2, + PairTableRXKokkos::TableDeviceConst d_table_const) { if (eflag || vflag) { Kokkos::parallel_reduce(inum, LAMMPS_LAMBDA(int i, EV_FLOAT& energy_virial) { if (newton_pair) { energy_virial += compute_item( - ); + i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, + mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const); } else { energy_virial += compute_item( - ); + i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, + mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const); energy_virial += compute_item<1,0>(i); } }, ev); @@ -385,10 +448,16 @@ static void compute_all_items( LAMMPS_LAMBDA(int i) { if (newton_pair) { compute_item( - ); + i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, + mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const); } else { compute_item( - ); + i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, + mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const); } }, ev); } @@ -454,26 +523,6 @@ ev_tally(EV_FLOAT &ev, const int &i, const int &j, //} } -template -template -KOKKOS_INLINE_FUNCTION -void -PairTableRXKokkos::Functor:: -operator()(const int i) const { -//if (c.newton_pair) compute_item<0,1>(i); -//else compute_item<0,0>(i); -} - -template -template -KOKKOS_INLINE_FUNCTION -void -PairTableRXKokkos::Functor:: -operator()(const int i, value_type &energy_virial) const { -//if (c.newton_pair) energy_virial += compute_item<1,1>(i); -//else energy_virial += compute_item<1,0>(i); -} - template static void getAllMixingWeights( int ntotal, @@ -496,8 +545,8 @@ template template void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) { - eflag = eflag_in; - vflag = vflag_in; + auto eflag = eflag_in; + auto vflag = vflag_in; if (neighflag == FULL) no_virial_fdotr_compute = 1; @@ -511,69 +560,68 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); - x = c_x = atomKK->k_x.view(); - f = atomKK->k_f.view(); - type = atomKK->k_type.view(); - uCG = atomKK->k_uCG.view(); - uCGnew = atomKK->k_uCGnew.view(); - nlocal = atom->nlocal; - nall = atom->nlocal + atom->nghost; - special_lj[0] = force->special_lj[0]; - special_lj[1] = force->special_lj[1]; - special_lj[2] = force->special_lj[2]; - special_lj[3] = force->special_lj[3]; - newton_pair = force->newton_pair; + auto x = atomKK->k_x.view(); + auto f = atomKK->k_f.view(); + auto type = atomKK->k_type.view(); + auto uCG = atomKK->k_uCG.view(); + auto uCGnew = atomKK->k_uCGnew.view(); + auto nlocal = atom->nlocal; + Few special_lj_local; + special_lj_local[0] = force->special_lj[0]; + special_lj_local[1] = force->special_lj[1]; + special_lj_local[2] = force->special_lj[2]; + special_lj_local[3] = force->special_lj[3]; + auto newton_pair = force->newton_pair; d_cutsq = d_table->cutsq; // loop over neighbors of my atoms const int ntotal = atom->nlocal + atom->nghost; - mixWtSite1old_ = Kokkos::View("PairTableRXKokkos::mixWtSite1old", ntotal); - mixWtSite2old_ = Kokkos::View("PairTableRXKokkos::mixWtSite2old", ntotal); - mixWtSite1_ = Kokkos::View("PairTableRXKokkos::mixWtSite1", ntotal); - mixWtSite2_ = Kokkos::View("PairTableRXKokkos::mixWtSite2", ntotal); + auto mixWtSite1old = Kokkos::View("PairTableRXKokkos::mixWtSite1old", ntotal); + auto mixWtSite2old = Kokkos::View("PairTableRXKokkos::mixWtSite2old", ntotal); + auto mixWtSite1 = Kokkos::View("PairTableRXKokkos::mixWtSite1", ntotal); + auto mixWtSite2 = Kokkos::View("PairTableRXKokkos::mixWtSite2", ntotal); getAllMixingWeights(ntotal, atomKK->k_dvector.template view(), nspecies, isite1, isite2, fractionalWeighting, - mixWtSite1old_, mixWtSite2old_, mixWtSite1_, mixWtSite2_); + mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2); if (neighflag == N2) error->all(FLERR,"pair table/rx/kk can't handle N2 yet\n"); + NeighListKokkos* l = + dynamic_cast*>(list); + EV_FLOAT ev; if(atom->ntypes > MAX_TYPES_STACKPARAMS) { - if (neighflag == FULL) { - Functor ff(this,(NeighListKokkos*) list); - if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); - else Kokkos::parallel_for(list->inum,ff); - } else if (neighflag == HALFTHREAD) { - Functor ff(this,(NeighListKokkos*) list); - if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); - else Kokkos::parallel_for(list->inum,ff); + if (neighflag == HALFTHREAD) { + compute_all_items( + eflag, vflag, newton_pair, ev, nlocal, + l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const); } else if (neighflag == HALF) { - Functor f(this,(NeighListKokkos*) list); - if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); - else Kokkos::parallel_for(list->inum,f); - } else if (neighflag == N2) { - Functor f(this,(NeighListKokkos*) list); - if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); - else Kokkos::parallel_for(nlocal,f); + compute_all_items( + eflag, vflag, newton_pair, ev, nlocal, + l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const); } } else { - if (neighflag == FULL) { - Functor f(this,(NeighListKokkos*) list); - if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); - else Kokkos::parallel_for(list->inum,f); - } else if (neighflag == HALFTHREAD) { - Functor f(this,(NeighListKokkos*) list); - if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); - else Kokkos::parallel_for(list->inum,f); + if (neighflag == HALFTHREAD) { + compute_all_items( + eflag, vflag, newton_pair, ev, nlocal, + l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const); } else if (neighflag == HALF) { - Functor f(this,(NeighListKokkos*) list); - if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); - else Kokkos::parallel_for(list->inum,f); - } else if (neighflag == N2) { - Functor f(this,(NeighListKokkos*) list); - if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); - else Kokkos::parallel_for(nlocal,f); + compute_all_items( + eflag, vflag, newton_pair, ev, nlocal, + l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const); } } @@ -590,38 +638,6 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (vflag_fdotr) pair_virial_fdotr_compute(this); } -template -template -KOKKOS_INLINE_FUNCTION -F_FLOAT PairTableRXKokkos:: -compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const { - double evdwl; - union_int_float_t rsq_lookup; - const int tidx = d_table_const.tabindex(itype,jtype); - if (TABSTYLE == LOOKUP) { - const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - evdwl = d_table_const.e(tidx,itable); - } else if (TABSTYLE == LINEAR) { - const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); - evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); - } else if (TABSTYLE == SPLINE) { - const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); - const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); - const double a = 1.0 - b; - evdwl = a * d_table_const.e(tidx,itable) + b * d_table_const.e(tidx,itable+1) + - ((a*a*a-a)*d_table_const.e2(tidx,itable) + (b*b*b-b)*d_table_const.e2(tidx,itable+1)) * - d_table_const.deltasq6(tidx); - } else { - rsq_lookup.f = rsq; - int itable = rsq_lookup.i & d_table_const.nmask(tidx); - itable >>= d_table_const.nshiftbits(tidx); - const double fraction = (rsq_lookup.f - d_table_const.rsq(tidx,itable)) * d_table_const.drsq(tidx,itable); - evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); - } - return evdwl; -} - template void PairTableRXKokkos::create_kokkos_tables() { diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index b2814adcec..36441f78b5 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -92,16 +92,12 @@ class PairTableRXKokkos : public PairTable { typename ArrayTypes::t_efloat_1d d_eatom; typename ArrayTypes::t_virial_array d_vatom; - int nlocal,nall,eflag,vflag,neighflag,newton_pair; + int neighflag; int update_table; void create_kokkos_tables(); void cleanup_copy(); - template - KOKKOS_INLINE_FUNCTION - F_FLOAT compute_evdwl(const F_FLOAT& rsq, const int& i, const int&j, const int& itype, const int& jtype) const; - friend void pair_virial_fdotr_compute(PairTableRXKokkos*); /* PairTableRX members */ @@ -111,11 +107,6 @@ class PairTableRXKokkos : public PairTable { int isite1, isite2; bool fractionalWeighting; - Kokkos::View mixWtSite1old_; - Kokkos::View mixWtSite2old_; - Kokkos::View mixWtSite1_; - Kokkos::View mixWtSite2_; - /* a duplicate of PairComputeFunctor to deal with uCG */ template struct Functor { -- GitLab From fdb6b91e29166f0882169946718b1c2d69c114ac Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 11 Jan 2017 12:50:32 -0700 Subject: [PATCH 073/337] near trying to compile --- src/KOKKOS/pair_table_rx_kokkos.cpp | 144 ++++++++++++++-------------- 1 file changed, 71 insertions(+), 73 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index a9703dd927..bed69fa0a0 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -267,6 +267,62 @@ compute_evdwl( return evdwl; } +template +KOKKOS_INLINE_FUNCTION +void +ev_tally( + int vflag_global, + int nlocal, + EV_FLOAT& ev, + F_FLOAT epair, F_FLOAT fpair, + F_FLOAT delx, F_FLOAT dely, F_FLOAT delz) +{ + if (vflag_global) { + auto v0 = delx*delx*fpair; + auto v1 = dely*dely*fpair; + auto v2 = delz*delz*fpair; + auto v3 = delx*dely*fpair; + auto v4 = delx*delz*fpair; + auto v5 = dely*delz*fpair; + + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR) { + ev.v[0] += v0; + ev.v[1] += v1; + ev.v[2] += v2; + ev.v[3] += v3; + ev.v[4] += v4; + ev.v[5] += v5; + } else { + if (i < c.nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (j < c.nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } +} +} + template KOKKOS_INLINE_FUNCTION @@ -296,6 +352,7 @@ compute_item( device_type,Kokkos::MemoryTraits::value> > uCGnew; int isite1, int isite2, PairTableRXKokkos::TableDeviceConst d_table_const, + int vflag_global ) { EV_FLOAT ev; auto i = d_ilist(ii); @@ -379,7 +436,8 @@ compute_item( ev.evdwl += (do_half ? 1.0 : 0.5)*evdwl; if (EVFLAG) { - ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + ev_tally( + vflag_global,nlocal,ev,evdwl,fpair,delx,dely,delz); } } } @@ -422,7 +480,8 @@ static void compute_all_items( Kokkos::View::value> > uCGnew; int isite1, int isite2, - PairTableRXKokkos::TableDeviceConst d_table_const) { + PairTableRXKokkos::TableDeviceConst d_table_const, + int vflag_global) { if (eflag || vflag) { Kokkos::parallel_reduce(inum, LAMMPS_LAMBDA(int i, EV_FLOAT& energy_virial) { @@ -432,97 +491,36 @@ static void compute_all_items( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const); + d_table_const, vflag_global); } else { energy_virial += compute_item( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const); - energy_virial += compute_item<1,0>(i); + d_table_const, vflag_global); } }, ev); } else { Kokkos::parallel_for(inum, LAMMPS_LAMBDA(int i) { if (newton_pair) { - compute_item( + compute_item( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const); + d_table_const, vflag_global); } else { - compute_item( + compute_item( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const); + d_table_const, vflag_global); } }, ev); } } -template -template -KOKKOS_INLINE_FUNCTION -void -PairTableRXKokkos::Functor:: -ev_tally(EV_FLOAT &ev, const int &i, const int &j, - const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, - const F_FLOAT &dely, const F_FLOAT &delz) const -{ -//const int EFLAG = c.eflag; -//const int NEWTON_PAIR = c.newton_pair; -//const int VFLAG = c.vflag_either; - -//if (VFLAG) { -// const E_FLOAT v0 = delx*delx*fpair; -// const E_FLOAT v1 = dely*dely*fpair; -// const E_FLOAT v2 = delz*delz*fpair; -// const E_FLOAT v3 = delx*dely*fpair; -// const E_FLOAT v4 = delx*delz*fpair; -// const E_FLOAT v5 = dely*delz*fpair; - -// if (c.vflag_global) { -// if (NEIGHFLAG!=FULL) { -// if (NEWTON_PAIR) { -// ev.v[0] += v0; -// ev.v[1] += v1; -// ev.v[2] += v2; -// ev.v[3] += v3; -// ev.v[4] += v4; -// ev.v[5] += v5; -// } else { -// if (i < c.nlocal) { -// ev.v[0] += 0.5*v0; -// ev.v[1] += 0.5*v1; -// ev.v[2] += 0.5*v2; -// ev.v[3] += 0.5*v3; -// ev.v[4] += 0.5*v4; -// ev.v[5] += 0.5*v5; -// } -// if (j < c.nlocal) { -// ev.v[0] += 0.5*v0; -// ev.v[1] += 0.5*v1; -// ev.v[2] += 0.5*v2; -// ev.v[3] += 0.5*v3; -// ev.v[4] += 0.5*v4; -// ev.v[5] += 0.5*v5; -// } -// } -// } else { -// ev.v[0] += 0.5*v0; -// ev.v[1] += 0.5*v1; -// ev.v[2] += 0.5*v2; -// ev.v[3] += 0.5*v3; -// ev.v[4] += 0.5*v4; -// ev.v[5] += 0.5*v5; -// } -// } -//} -} - template static void getAllMixingWeights( int ntotal, @@ -598,14 +596,14 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const); + d_table_const, vflag_global); } else if (neighflag == HALF) { compute_all_items( eflag, vflag, newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const); + d_table_const, vflag_global); } } else { if (neighflag == HALFTHREAD) { @@ -614,14 +612,14 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const); + d_table_const, vflag_global); } else if (neighflag == HALF) { compute_all_items( eflag, vflag, newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const); + d_table_const, vflag_global); } } -- GitLab From 5dcbbba4ce53654bc40dc363872878358bfc73b5 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 11 Jan 2017 13:15:01 -0700 Subject: [PATCH 074/337] lots of work towards compiling --- src/KOKKOS/pair_table_rx_kokkos.cpp | 88 ++++++++++++++--------------- src/KOKKOS/pair_table_rx_kokkos.h | 7 +-- src/pair.h | 2 + src/pair_table.h | 2 +- 4 files changed, 50 insertions(+), 49 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index bed69fa0a0..c6206b828b 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -182,7 +182,7 @@ void PairTableRXKokkos::compute(int eflag_in, int vflag_in) template template PairTableRXKokkos::Functor::Functor( - PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr)//: + PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr)//: //c(*c_ptr),f(c.f),uCG(c.uCG),uCGnew(c.uCGnew),list(*list_ptr) {} @@ -193,7 +193,7 @@ PairTableRXKokkos::Functor::~Functor //list.clean_copy(); } -KOKKOS_INLINE_FUNCTION static int sbmask(const int& j) const +KOKKOS_INLINE_FUNCTION static int sbmask(const int& j) { return j >> SBBITS & 3; } @@ -203,19 +203,19 @@ KOKKOS_INLINE_FUNCTION static F_FLOAT compute_fpair(F_FLOAT rsq, int itype, int jtype, - PairTableRXKokkos::TableDeviceConst d_table_const, + typename PairTableRXKokkos::TableDeviceConst d_table_const ) { - union_int_float_t rsq_lookup; + Pair::union_int_float_t rsq_lookup; double fpair; const int tidx = d_table_const.tabindex(itype,jtype); - if (TABSTYLE == LOOKUP) { + if (TABSTYLE == PairTable::LOOKUP) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); fpair = d_table_const.f(tidx,itable); - } else if (TABSTYLE == LINEAR) { + } else if (TABSTYLE == PairTable::LINEAR) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); - } else if (TABSTYLE == SPLINE) { + } else if (TABSTYLE == PairTable::SPLINE) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); const double a = 1.0 - b; @@ -238,19 +238,19 @@ static F_FLOAT compute_evdwl( F_FLOAT rsq, int itype, int jtype, - PairTableRXKokkos::TableDeviceConst d_table_const, - ) const { + typename PairTableRXKokkos::TableDeviceConst d_table_const + ) { double evdwl; - union_int_float_t rsq_lookup; + Pair::union_int_float_t rsq_lookup; const int tidx = d_table_const.tabindex(itype,jtype); - if (TABSTYLE == LOOKUP) { + if (TABSTYLE == PairTable::LOOKUP) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); evdwl = d_table_const.e(tidx,itable); - } else if (TABSTYLE == LINEAR) { + } else if (TABSTYLE == PairTable::LINEAR) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); - } else if (TABSTYLE == SPLINE) { + } else if (TABSTYLE == PairTable::SPLINE) { const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); const double a = 1.0 - b; @@ -273,6 +273,7 @@ void ev_tally( int vflag_global, int nlocal, + int i, int j, EV_FLOAT& ev, F_FLOAT epair, F_FLOAT fpair, F_FLOAT delx, F_FLOAT dely, F_FLOAT delz) @@ -294,7 +295,7 @@ ev_tally( ev.v[4] += v4; ev.v[5] += v5; } else { - if (i < c.nlocal) { + if (i < nlocal) { ev.v[0] += 0.5*v0; ev.v[1] += 0.5*v1; ev.v[2] += 0.5*v2; @@ -302,7 +303,7 @@ ev_tally( ev.v[4] += 0.5*v4; ev.v[5] += 0.5*v5; } - if (j < c.nlocal) { + if (j < nlocal) { ev.v[0] += 0.5*v0; ev.v[1] += 0.5*v1; ev.v[2] += 0.5*v2; @@ -321,7 +322,6 @@ ev_tally( } } } -} template @@ -330,9 +330,9 @@ static EV_FLOAT compute_item( int ii, int nlocal, - typename ArrayTypes::t_in_1d_const d_ilist, - typename ArrayTypes::t_neighbors_2d_const d_neighbors, - typename ArrayTypes::t_in_1d_const d_numneigh, + typename ArrayTypes::t_int_1d_const d_ilist, + typename ArrayTypes::t_neighbors_2d_const d_neighbors, + typename ArrayTypes::t_int_1d_const d_numneigh, typename ArrayTypes::t_x_array_randomread x, typename ArrayTypes::t_int_1d_randomread type, Kokkos::View mixWtSite1old, @@ -345,13 +345,13 @@ compute_item( Kokkos::View::t_f_array::array_layout, DeviceType, - Kokkos::MemoryTraits::value> > f; + Kokkos::MemoryTraits::value> > f, Kokkos::View::value> > uCG; + DeviceType,Kokkos::MemoryTraits::value> > uCG, Kokkos::View::value> > uCGnew; + DeviceType,Kokkos::MemoryTraits::value> > uCGnew, int isite1, int isite2, - PairTableRXKokkos::TableDeviceConst d_table_const, + typename PairTableRXKokkos::TableDeviceConst d_table_const, int vflag_global ) { EV_FLOAT ev; @@ -386,10 +386,10 @@ compute_item( auto jtype = type(j); if(rsq < (STACKPARAMS ? m_cutsq[itype][jtype] : d_cutsq(itype,jtype))) { - auto mixWtSite1old_j = mixWtSite1old_(j); - auto mixWtSite2old_j = mixWtSite2old_(j); - auto mixWtSite1_j = mixWtSite1_(j); - auto mixWtSite2_j = mixWtSite2_(j); + auto mixWtSite1old_j = mixWtSite1old(j); + auto mixWtSite2old_j = mixWtSite2old(j); + auto mixWtSite1_j = mixWtSite1(j); + auto mixWtSite2_j = mixWtSite2(j); auto fpair = factor_lj * compute_fpair( rsq,itype,jtype,d_table_const); @@ -437,7 +437,7 @@ compute_item( if (EVFLAG) { ev_tally( - vflag_global,nlocal,ev,evdwl,fpair,delx,dely,delz); + vflag_global,nlocal,i,j,ev,evdwl,fpair,delx,dely,delz); } } } @@ -459,9 +459,9 @@ static void compute_all_items( EV_FLOAT& ev, int nlocal, int inum, - typename ArrayTypes::t_in_1d_const d_ilist, - typename ArrayTypes::t_neighbors_2d_const d_neighbors, - typename ArrayTypes::t_in_1d_const d_numneigh, + typename ArrayTypes::t_int_1d_const d_ilist, + typename ArrayTypes::t_neighbors_2d_const d_neighbors, + typename ArrayTypes::t_int_1d_const d_numneigh, typename ArrayTypes::t_x_array_randomread x, typename ArrayTypes::t_int_1d_randomread type, Kokkos::View mixWtSite1old, @@ -474,13 +474,13 @@ static void compute_all_items( Kokkos::View::t_f_array::array_layout, DeviceType, - Kokkos::MemoryTraits::value> > f; + Kokkos::MemoryTraits::value> > f, Kokkos::View::value> > uCG; + DeviceType,Kokkos::MemoryTraits::value> > uCG, Kokkos::View::value> > uCGnew; + DeviceType,Kokkos::MemoryTraits::value> > uCGnew, int isite1, int isite2, - PairTableRXKokkos::TableDeviceConst d_table_const, + typename PairTableRXKokkos::TableDeviceConst d_table_const, int vflag_global) { if (eflag || vflag) { Kokkos::parallel_reduce(inum, @@ -517,7 +517,7 @@ static void compute_all_items( special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, vflag_global); } - }, ev); + }); } } @@ -558,8 +558,8 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); else atomKK->modified(execution_space,F_MASK); - auto x = atomKK->k_x.view(); - auto f = atomKK->k_f.view(); + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); auto type = atomKK->k_type.view(); auto uCG = atomKK->k_uCG.view(); auto uCGnew = atomKK->k_uCGnew.view(); @@ -595,14 +595,14 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) eflag, vflag, newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, - special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, vflag_global); } else if (neighflag == HALF) { compute_all_items( eflag, vflag, newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, - special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, vflag_global); } } else { @@ -611,14 +611,14 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) eflag, vflag, newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, - special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, vflag_global); } else if (neighflag == HALF) { - compute_all_items( + compute_all_items( eflag, vflag, newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, - special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, vflag_global); } } @@ -1067,7 +1067,7 @@ double PairTableRXKokkos::single(int i, int j, int itype, int jtype, tb->deltasq6; fforce = factor_lj * value; } else { - union_int_float_t rsq_lookup; + Pair::union_int_float_t rsq_lookup; rsq_lookup.f = rsq; itable = rsq_lookup.i & tb->nmask; itable >>= tb->nshiftbits; diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index 36441f78b5..fdd863e4bc 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -23,6 +23,7 @@ PairStyle(table/rx/kk/host,PairTableRXKokkos) #define LMP_PAIR_TABLE_RX_KOKKOS_H #include "pair_table_kokkos.h" +#include "kokkos_few.h" namespace LAMMPS_NS { @@ -78,17 +79,15 @@ class PairTableRXKokkos : public PairTable { TableDevice* d_table; TableHost* h_table; - F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + Few, MAX_TYPES_STACKPARAMS+1> m_cutsq; typename ArrayTypes::t_ffloat_2d d_cutsq; virtual void allocate(); void compute_table(Table *); - typename ArrayTypes::t_x_array_const c_x; + typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_f_array f; - typename ArrayTypes::t_efloat_1d uCG; - typename ArrayTypes::t_efloat_1d uCGnew; typename ArrayTypes::t_efloat_1d d_eatom; typename ArrayTypes::t_virial_array d_vatom; diff --git a/src/pair.h b/src/pair.h index 3378115e49..ecb54bcf4d 100644 --- a/src/pair.h +++ b/src/pair.h @@ -211,10 +211,12 @@ class Pair : protected Pointers { double tabinner; // inner cutoff for Coulomb table double tabinner_disp; // inner cutoff for dispersion table + public: // custom data type for accessing Coulomb tables typedef union {int i; float f;} union_int_float_t; + protected: int vflag_fdotr; int maxeatom,maxvatom; diff --git a/src/pair_table.h b/src/pair_table.h index caffebdf31..b723fd2d98 100644 --- a/src/pair_table.h +++ b/src/pair_table.h @@ -40,9 +40,9 @@ class PairTable : public Pair { virtual double single(int, int, int, int, double, double, double, double &); void *extract(const char *, int &); - protected: enum{LOOKUP,LINEAR,SPLINE,BITMAP}; + protected: int tabstyle,tablength; struct Table { int ninput,rflag,fpflag,match,ntablebits; -- GitLab From 52761aee0dc0ab1a6319c9d8ab7baa1f6940351b Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 11 Jan 2017 13:18:13 -0700 Subject: [PATCH 075/337] it compiles. --- src/KOKKOS/neigh_list_kokkos.h | 2 +- src/KOKKOS/pair_table_rx_kokkos.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/neigh_list_kokkos.h b/src/KOKKOS/neigh_list_kokkos.h index 32e6e704ae..b43e1106f2 100644 --- a/src/KOKKOS/neigh_list_kokkos.h +++ b/src/KOKKOS/neigh_list_kokkos.h @@ -90,7 +90,7 @@ public: KOKKOS_INLINE_FUNCTION static AtomNeighborsConst static_neighbors_const(int i, typename ArrayTypes::t_neighbors_2d_const d_neighbors, - typename ArrayTypes::t_int_1d d_numneigh) { + typename ArrayTypes::t_int_1d_const d_numneigh) { return AtomNeighborsConst(&d_neighbors(i,0),d_numneigh(i), &d_neighbors(i,1)-&d_neighbors(i,0)); } diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index c6206b828b..2a9e1bb13b 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -410,7 +410,7 @@ compute_item( f(j,2) -= delz*fpair; } - auto evdwl = compute_evdwl( + auto evdwl = compute_evdwl( rsq,itype,jtype,d_table_const); double evdwlOld; -- GitLab From 3580e5409de58417370feae7eb7727ef9480fbde Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 12 Jan 2017 09:00:07 -0700 Subject: [PATCH 076/337] Fixing Kokkos CUDA compile error --- lib/kokkos/Makefile.kokkos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index 73a332ee11..94d0452428 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -20,7 +20,7 @@ KOKKOS_OPTIONS ?= "" #Default settings specific options #Options: force_uvm,use_ldg,rdc,enable_lambda -KOKKOS_CUDA_OPTIONS ?= "" +KOKKOS_CUDA_OPTIONS ?= "enable_lambda" # Check for general settings -- GitLab From 0c3b9426862c4da7730834a194a6e936c7593a7a Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 12 Jan 2017 13:50:30 -0700 Subject: [PATCH 077/337] cleanup changes to Install.sh --- src/KOKKOS/Install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index e76f62d65d..cf753ecee8 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -28,8 +28,8 @@ action () { # force rebuild of files with LMP_KOKKOS switch -#touch ../accelerator_kokkos.h -#touch ../memory.h +touch ../accelerator_kokkos.h +touch ../memory.h # list of files with optional dependcies @@ -196,7 +196,7 @@ action pair_vashishta_kokkos.h pair_vashishta.h action pair_table_kokkos.cpp action pair_table_kokkos.h action pair_table_rx_kokkos.cpp pair_table_rx.cpp -action pair_table_rx_kokkos.h pair_table_rx.h +action pair_table_rx_kokkos.h pair_table_rx.h action pair_tersoff_kokkos.cpp pair_tersoff.cpp action pair_tersoff_kokkos.h pair_tersoff.h action pair_tersoff_mod_kokkos.cpp pair_tersoff_mod.cpp -- GitLab From 4dab6737ba59e402bf9a7609e66e24a75c313699 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 12 Jan 2017 14:15:42 -0700 Subject: [PATCH 078/337] remove leftover code --- src/KOKKOS/pair_table_rx_kokkos.cpp | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 2a9e1bb13b..66089009a2 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -179,20 +179,6 @@ void PairTableRXKokkos::compute(int eflag_in, int vflag_in) compute_style(eflag_in,vflag_in); } -template -template -PairTableRXKokkos::Functor::Functor( - PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr)//: -//c(*c_ptr),f(c.f),uCG(c.uCG),uCGnew(c.uCGnew),list(*list_ptr) -{} - -template -template -PairTableRXKokkos::Functor::~Functor() { -//c.cleanup_copy(); -//list.clean_copy(); -} - KOKKOS_INLINE_FUNCTION static int sbmask(const int& j) { return j >> SBBITS & 3; -- GitLab From cce10f6dff0dc0c28729e5787e9bc998751692b5 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 12 Jan 2017 14:19:10 -0700 Subject: [PATCH 079/337] remove more leftover code --- src/KOKKOS/pair_table_rx_kokkos.h | 33 ------------------------------- 1 file changed, 33 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index fdd863e4bc..4e94802d72 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -106,39 +106,6 @@ class PairTableRXKokkos : public PairTable { int isite1, isite2; bool fractionalWeighting; - /* a duplicate of PairComputeFunctor to deal with uCG */ - template - struct Functor { - using device_type = DeviceType; - typedef EV_FLOAT value_type; - //PairTableRXKokkos c; - // arrays are atomic for Half(Thread) neighbor style - Kokkos::View::value> > f; - Kokkos::View::value> > uCG; - Kokkos::View::value> > uCGnew; - //NeighListKokkos list; - Functor(PairTableRXKokkos* c_ptr, NeighListKokkos* list_ptr); - ~Functor(); - KOKKOS_INLINE_FUNCTION int sbmask(const int& j) const { - return j >> SBBITS & 3; - } - template - KOKKOS_INLINE_FUNCTION - EV_FLOAT compute_item(const int&) const; - KOKKOS_INLINE_FUNCTION - void - ev_tally(EV_FLOAT &ev, const int &i, const int &j, - const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, - const F_FLOAT &dely, const F_FLOAT &delz) const; - KOKKOS_INLINE_FUNCTION - void operator()(const int) const; - KOKKOS_INLINE_FUNCTION - void operator()(const int, value_type&) const; - }; - }; } -- GitLab From 0635151e2db0e53b3680f5bc8613c078e99cf901 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 12 Jan 2017 16:22:24 -0700 Subject: [PATCH 080/337] Fixing neighbor bug --- src/neighbor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 59abc29f19..af59391209 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -909,9 +909,10 @@ void Neighbor::init_pair() done = 1; for (i = 0; i < npair_perpetual; i++) { ptr = NULL; + if (lists[plist[i]]->listfull) ptr = lists[plist[i]]->listfull; if (lists[plist[i]]->listcopy) ptr = lists[plist[i]]->listcopy; + // listskip check must be after listfull check if (lists[plist[i]]->listskip) ptr = lists[plist[i]]->listskip; - if (lists[plist[i]]->listfull) ptr = lists[plist[i]]->listfull; if (ptr == NULL) continue; for (m = 0; m < nrequest; m++) if (ptr == lists[m]) break; -- GitLab From 5b7ab135dd849b2dbc74118036e872a1e20d2c43 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 12 Jan 2017 16:22:38 -0700 Subject: [PATCH 081/337] Fixing Kokkos neighbor bug --- src/neigh_request.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/neigh_request.cpp b/src/neigh_request.cpp index a8ba8496cd..7f5d9a6195 100644 --- a/src/neigh_request.cpp +++ b/src/neigh_request.cpp @@ -138,6 +138,8 @@ int NeighRequest::identical(NeighRequest *other) if (ghost != other->ghost) same = 0; if (omp != other->omp) same = 0; if (intel != other->intel) same = 0; + if (kokkos_host != other->kokkos_host) same = 0; + if (kokkos_device != other->kokkos_device) same = 0; if (ssa != other->ssa) same = 0; if (copy != other->copy_original) same = 0; -- GitLab From c15d6580da4174c247b9dc6af108b02b6b3aa47c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 13 Jan 2017 10:01:22 -0700 Subject: [PATCH 082/337] Fixing issue in pair_multi_lucy_rx_kokkos found by ibaned --- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 24502f875c..fac1478e32 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -277,7 +277,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute::value> > a_f = f; - int i,j,jj,inum,jnum,itype,jtype,itable; + int i,jj,inum,jnum,itype,jtype,itable; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; double rsq; @@ -431,7 +431,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute -- GitLab From 2a35fa7a4e253facc698e834d47a0ccb2cd2cace Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 13 Jan 2017 10:37:31 -0700 Subject: [PATCH 083/337] Adding initial versions of pair_hybrid_kokkos and pair_hybrid_overlay_kokkos --- src/KOKKOS/Install.sh | 4 + src/KOKKOS/pair_hybrid_kokkos.cpp | 147 ++++++++++++++++++++++ src/KOKKOS/pair_hybrid_kokkos.h | 109 ++++++++++++++++ src/KOKKOS/pair_hybrid_overlay_kokkos.cpp | 28 +++++ src/KOKKOS/pair_hybrid_overlay_kokkos.h | 48 +++++++ src/pair_hybrid.h | 6 +- src/pair_hybrid_overlay.h | 2 +- 7 files changed, 338 insertions(+), 6 deletions(-) create mode 100644 src/KOKKOS/pair_hybrid_kokkos.cpp create mode 100644 src/KOKKOS/pair_hybrid_kokkos.h create mode 100644 src/KOKKOS/pair_hybrid_overlay_kokkos.cpp create mode 100644 src/KOKKOS/pair_hybrid_overlay_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index cf753ecee8..198946d9f0 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -154,6 +154,10 @@ action pair_eam_fs_kokkos.cpp pair_eam_fs.cpp action pair_eam_fs_kokkos.h pair_eam_fs.h action pair_exp6_rx_kokkos.cpp pair_exp6_rx.cpp action pair_exp6_rx_kokkos.h pair_exp6_rx.h +action pair_hybrid_kokkos.cpp +action pair_hybrid_kokkos.h +action pair_hybrid_overlay_kokkos.cpp +action pair_hybrid_overlay_kokkos.h action pair_kokkos.h action pair_lj_charmm_coul_charmm_implicit_kokkos.cpp pair_lj_charmm_coul_charmm_implicit.cpp action pair_lj_charmm_coul_charmm_implicit_kokkos.h pair_lj_charmm_coul_charmm_implicit.h diff --git a/src/KOKKOS/pair_hybrid_kokkos.cpp b/src/KOKKOS/pair_hybrid_kokkos.cpp new file mode 100644 index 0000000000..973d60348f --- /dev/null +++ b/src/KOKKOS/pair_hybrid_kokkos.cpp @@ -0,0 +1,147 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_hybrid_kokkos.h" +#include "atom_kokkos.h" +#include "force.h" +#include "pair.h" +#include "neighbor.h" +#include "neigh_request.h" +#include "update.h" +#include "comm.h" +#include "memory.h" +#include "error.h" +#include "respa.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairHybridKokkos::PairHybridKokkos(LAMMPS *lmp) : PairHybrid(lmp) +{ + atomKK = (AtomKokkos *) atom; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- */ + +PairHybridKokkos::~PairHybridKokkos() +{ + +} + +/* ---------------------------------------------------------------------- + call each sub-style's compute() or compute_outer() function + accumulate sub-style global/peratom energy/virial in hybrid + for global vflag = 1: + each sub-style computes own virial[6] + sum sub-style virial[6] to hybrid's virial[6] + for global vflag = 2: + call sub-style with adjusted vflag to prevent it calling + virial_fdotr_compute() + hybrid calls virial_fdotr_compute() on final accumulated f +------------------------------------------------------------------------- */ + +void PairHybridKokkos::compute(int eflag, int vflag) +{ + int i,j,m,n; + + // if no_virial_fdotr_compute is set and global component of + // incoming vflag = 2, then + // reset vflag as if global component were 1 + // necessary since one or more sub-styles cannot compute virial as F dot r + + int neighflag = lmp->kokkos->neighflag; + if (neighflag == FULL) no_virial_fdotr_compute = 1; + + if (no_virial_fdotr_compute && vflag % 4 == 2) vflag = 1 + vflag/4 * 4; + + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = eflag_global = vflag_global = + eflag_atom = vflag_atom = 0; + + // check if global component of incoming vflag = 2 + // if so, reset vflag passed to substyle as if it were 0 + // necessary so substyle will not invoke virial_fdotr_compute() + + int vflag_substyle; + if (vflag % 4 == 2) vflag_substyle = vflag/4 * 4; + else vflag_substyle = vflag; + + double *saved_special = save_special(); + + // check if we are running with r-RESPA using the hybrid keyword + + Respa *respa = NULL; + respaflag = 0; + if (strstr(update->integrate_style,"respa")) { + respa = (Respa *) update->integrate; + if (respa->nhybrid_styles > 0) respaflag = 1; + } + + for (m = 0; m < nstyles; m++) { + + set_special(m); + + if (!respaflag || (respaflag && respa->hybrid_compute[m])) { + + // invoke compute() unless compute flag is turned off or + // outerflag is set and sub-style has a compute_outer() method + + if (styles[m]->compute_flag == 0) continue; + atomKK->sync(styles[m]->execution_space,styles[m]->datamask_read); + if (outerflag && styles[m]->respa_enable) + styles[m]->compute_outer(eflag,vflag_substyle); + else styles[m]->compute(eflag,vflag_substyle); + atomKK->modified(styles[m]->execution_space,styles[m]->datamask_modify); + } + + restore_special(saved_special); + + // jump to next sub-style if r-RESPA does not want global accumulated data + + if (respaflag && !respa->tally_global) continue; + + if (eflag_global) { + eng_vdwl += styles[m]->eng_vdwl; + eng_coul += styles[m]->eng_coul; + } + if (vflag_global) { + for (n = 0; n < 6; n++) virial[n] += styles[m]->virial[n]; + } + if (eflag_atom) { + n = atom->nlocal; + if (force->newton_pair) n += atom->nghost; + double *eatom_substyle = styles[m]->eatom; + for (i = 0; i < n; i++) eatom[i] += eatom_substyle[i]; + } + if (vflag_atom) { + n = atom->nlocal; + if (force->newton_pair) n += atom->nghost; + double **vatom_substyle = styles[m]->vatom; + for (i = 0; i < n; i++) + for (j = 0; j < 6; j++) + vatom[i][j] += vatom_substyle[i][j]; + } + } + + delete [] saved_special; + + if (vflag_fdotr) virial_fdotr_compute(); +} diff --git a/src/KOKKOS/pair_hybrid_kokkos.h b/src/KOKKOS/pair_hybrid_kokkos.h new file mode 100644 index 0000000000..cfcef7fb31 --- /dev/null +++ b/src/KOKKOS/pair_hybrid_kokkos.h @@ -0,0 +1,109 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(hybrid/kk,PairHybridKokkos) + +#else + +#ifndef LMP_PAIR_HYBRID_KOKKOS_H +#define LMP_PAIR_HYBRID_KOKKOS_H + +#include +#include "pair_hybrid.h" + +namespace LAMMPS_NS { + +class PairHybridKokkos : public PairHybrid { + friend class FixGPU; + friend class FixIntel; + friend class FixOMP; + friend class Force; + friend class Respa; + friend class Info; + public: + PairHybridKokkos(class LAMMPS *); + virtual ~PairHybridKokkos(); + void compute(int, int); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Pair style hybrid cannot have hybrid as an argument + +Self-explanatory. + +E: Pair style hybrid cannot have none as an argument + +Self-explanatory. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair coeff for hybrid has invalid style + +Style in pair coeff must have been listed in pair_style command. + +E: Pair hybrid sub-style is not used + +No pair_coeff command used a sub-style specified in the pair_style +command. + +E: Pair_modify special setting for pair hybrid incompatible with global special_bonds setting + +Cannot override a setting of 0.0 or 1.0 or change a setting between +0.0 and 1.0. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +E: Invoked pair single on pair style none + +A command (e.g. a dump) attempted to invoke the single() function on a +pair style none, which is illegal. You are probably attempting to +compute per-atom quantities with an undefined pair style. + +E: Pair hybrid sub-style does not support single call + +You are attempting to invoke a single() call on a pair style +that doesn't support it. + +E: Pair hybrid single calls do not support per sub-style special bond values + +Self-explanatory. + +E: Unknown pair_modify hybrid sub-style + +The choice of sub-style is unknown. + +E: Coulomb cutoffs of pair hybrid sub-styles do not match + +If using a Kspace solver, all Coulomb cutoffs of long pair styles must +be the same. + +*/ diff --git a/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp b/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp new file mode 100644 index 0000000000..55fed33f96 --- /dev/null +++ b/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp @@ -0,0 +1,28 @@ +/* ---------------------------------------------------------------------- + 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 "pair_hybrid_overlay_kokkos.h" +#include "atom.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_request.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairHybridOverlayKokkos::PairHybridOverlayKokkos(LAMMPS *lmp) : PairHybridOverlay(lmp) {} diff --git a/src/KOKKOS/pair_hybrid_overlay_kokkos.h b/src/KOKKOS/pair_hybrid_overlay_kokkos.h new file mode 100644 index 0000000000..c9a50e3bb1 --- /dev/null +++ b/src/KOKKOS/pair_hybrid_overlay_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 PAIR_CLASS + +PairStyle(hybrid/overlay/kk,PairHybridOverlayKokkos) + +#else + +#ifndef LMP_PAIR_HYBRID_OVERLAY_KOKKOS_H +#define LMP_PAIR_HYBRID_OVERLAY_KOKKOS_H + +#include "pair_hybrid_overlay.h" + +namespace LAMMPS_NS { + +class PairHybridOverlayKokkos : public PairHybridOverlay { + public: + PairHybridOverlayKokkos(class LAMMPS *); + virtual ~PairHybridOverlayKokkos() {} +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair coeff for hybrid has invalid style + +Style in pair coeff must have been listed in pair_style command. + +*/ diff --git a/src/pair_hybrid.h b/src/pair_hybrid.h index 4d224dafc3..a7a236d269 100644 --- a/src/pair_hybrid.h +++ b/src/pair_hybrid.h @@ -35,7 +35,7 @@ class PairHybrid : public Pair { public: PairHybrid(class LAMMPS *); virtual ~PairHybrid(); - void compute(int, int); + virtual void compute(int, int); void settings(int, char **); virtual void coeff(int, char **); void init_style(); @@ -88,10 +88,6 @@ class PairHybrid : public Pair { /* ERROR/WARNING messages: -E: Cannot yet use pair hybrid with Kokkos - -This feature is not yet supported. - E: Illegal ... command Self-explanatory. Check the input script syntax and compare to the diff --git a/src/pair_hybrid_overlay.h b/src/pair_hybrid_overlay.h index 60cff45508..169583a48b 100644 --- a/src/pair_hybrid_overlay.h +++ b/src/pair_hybrid_overlay.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairHybridOverlay : public PairHybrid { public: PairHybridOverlay(class LAMMPS *); - ~PairHybridOverlay() {} + virtual ~PairHybridOverlay() {} void coeff(int, char **); private: -- GitLab From a42a666142cdab572ee6bac9ef81559f9c02ceb8 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 13 Jan 2017 13:23:26 -0700 Subject: [PATCH 084/337] support for eatom and vatom in pair_table_rx_kokkos --- src/KOKKOS/pair_table_rx_kokkos.cpp | 210 +++++++++++++++++++++------- src/KOKKOS/pair_table_rx_kokkos.h | 6 +- 2 files changed, 164 insertions(+), 52 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 66089009a2..7402a00900 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -155,6 +155,10 @@ template PairTableRXKokkos::~PairTableRXKokkos() { if (copymode) return; + + memory->destroy_kokkos(k_eatom,eatom); + memory->destroy_kokkos(k_vatom,vatom); + delete h_table; h_table = nullptr; delete d_table; @@ -257,14 +261,38 @@ template KOKKOS_INLINE_FUNCTION void ev_tally( + int eflag, + int eflag_atom, + int vflag, int vflag_global, + int vflag_atom, int nlocal, int i, int j, EV_FLOAT& ev, F_FLOAT epair, F_FLOAT fpair, - F_FLOAT delx, F_FLOAT dely, F_FLOAT delz) + F_FLOAT delx, F_FLOAT dely, F_FLOAT delz, + Kokkos::View::value> > v_vatom, + Kokkos::View::value> > v_eatom) { - if (vflag_global) { + if (eflag) { + if (eflag_atom) { + auto epairhalf = 0.5 * epair; + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) v_eatom[i] += epairhalf; + if (NEWTON_PAIR || j < nlocal) v_eatom[j] += epairhalf; + } else { + v_eatom[i] += epairhalf; + } + } + } + + if (vflag) { auto v0 = delx*delx*fpair; auto v1 = dely*dely*fpair; auto v2 = delz*delz*fpair; @@ -272,39 +300,69 @@ ev_tally( auto v4 = delx*delz*fpair; auto v5 = dely*delz*fpair; - if (NEIGHFLAG!=FULL) { - if (NEWTON_PAIR) { - ev.v[0] += v0; - ev.v[1] += v1; - ev.v[2] += v2; - ev.v[3] += v3; - ev.v[4] += v4; - ev.v[5] += v5; + if (vflag_global) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR) { + ev.v[0] += v0; + ev.v[1] += v1; + ev.v[2] += v2; + ev.v[3] += v3; + ev.v[4] += v4; + ev.v[5] += v5; + } else { + if (i < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (j < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } } else { - if (i < nlocal) { - ev.v[0] += 0.5*v0; - ev.v[1] += 0.5*v1; - ev.v[2] += 0.5*v2; - ev.v[3] += 0.5*v3; - ev.v[4] += 0.5*v4; - ev.v[5] += 0.5*v5; + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + + if (vflag_atom) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; } - if (j < nlocal) { - ev.v[0] += 0.5*v0; - ev.v[1] += 0.5*v1; - ev.v[2] += 0.5*v2; - ev.v[3] += 0.5*v3; - ev.v[4] += 0.5*v4; - ev.v[5] += 0.5*v5; + if (NEWTON_PAIR || j < nlocal) { + v_vatom(j,0) += 0.5*v0; + v_vatom(j,1) += 0.5*v1; + v_vatom(j,2) += 0.5*v2; + v_vatom(j,3) += 0.5*v3; + v_vatom(j,4) += 0.5*v4; + v_vatom(j,5) += 0.5*v5; } + } else { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; } - } else { - ev.v[0] += 0.5*v0; - ev.v[1] += 0.5*v1; - ev.v[2] += 0.5*v2; - ev.v[3] += 0.5*v3; - ev.v[4] += 0.5*v4; - ev.v[5] += 0.5*v5; } } } @@ -338,8 +396,19 @@ compute_item( DeviceType,Kokkos::MemoryTraits::value> > uCGnew, int isite1, int isite2, typename PairTableRXKokkos::TableDeviceConst d_table_const, - int vflag_global - ) { + int eflag, + int eflag_atom, + int vflag, + int vflag_global, + int vflag_atom, + Kokkos::View::value> > v_vatom, + Kokkos::View::value> > v_eatom) { EV_FLOAT ev; auto i = d_ilist(ii); auto xtmp = x(i,0); @@ -423,7 +492,10 @@ compute_item( if (EVFLAG) { ev_tally( - vflag_global,nlocal,i,j,ev,evdwl,fpair,delx,dely,delz); + eflag,eflag_atom, + vflag,vflag_global,vflag_atom, + nlocal,i,j,ev,evdwl,fpair,delx,dely,delz, + v_vatom, v_eatom); } } } @@ -440,7 +512,6 @@ compute_item( template static void compute_all_items( - int eflag, int vflag, int newton_pair, EV_FLOAT& ev, int nlocal, @@ -467,7 +538,19 @@ static void compute_all_items( DeviceType,Kokkos::MemoryTraits::value> > uCGnew, int isite1, int isite2, typename PairTableRXKokkos::TableDeviceConst d_table_const, - int vflag_global) { + int eflag, + int eflag_atom, + int vflag, + int vflag_global, + int vflag_atom, + Kokkos::View::value> > v_vatom, + Kokkos::View::value> > v_eatom) { if (eflag || vflag) { Kokkos::parallel_reduce(inum, LAMMPS_LAMBDA(int i, EV_FLOAT& energy_virial) { @@ -477,14 +560,16 @@ static void compute_all_items( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, vflag_global); + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, v_vatom, v_eatom); } else { energy_virial += compute_item( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, vflag_global); + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, v_vatom, v_eatom); } }, ev); } else { @@ -495,13 +580,15 @@ static void compute_all_items( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, vflag_global); + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, v_vatom, v_eatom); } else { compute_item( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, vflag_global); + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, v_vatom, v_eatom); } }); } @@ -537,8 +624,16 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; - if (eflag_atom) error->all(FLERR, "pair table/rx/kk does not handle eflag_atom\n"); - if (vflag_atom) error->all(FLERR, "pair table/rx/kk does not handle vflag_atom\n"); + if (eflag_atom) { + memory->destroy_kokkos(k_eatom,eatom); + memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.d_view; + } + if (vflag_atom) { + memory->destroy_kokkos(k_vatom,vatom); + memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); + d_vatom = k_vatom.d_view; + } atomKK->sync(execution_space,datamask_read); if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); @@ -578,34 +673,38 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if(atom->ntypes > MAX_TYPES_STACKPARAMS) { if (neighflag == HALFTHREAD) { compute_all_items( - eflag, vflag, newton_pair, ev, nlocal, + newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, vflag_global); + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); } else if (neighflag == HALF) { compute_all_items( - eflag, vflag, newton_pair, ev, nlocal, + newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, vflag_global); + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); } } else { if (neighflag == HALFTHREAD) { compute_all_items( - eflag, vflag, newton_pair, ev, nlocal, + newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, vflag_global); + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); } else if (neighflag == HALF) { compute_all_items( - eflag, vflag, newton_pair, ev, nlocal, + newton_pair, ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, vflag_global); + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); } } @@ -620,6 +719,16 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) } if (vflag_fdotr) pair_virial_fdotr_compute(this); + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } } template @@ -1126,6 +1235,7 @@ void PairTableRXKokkos::cleanup_copy() { vatom = NULL; h_table=NULL; d_table=NULL; } + namespace LAMMPS_NS { template class PairTableRXKokkos; #ifdef KOKKOS_HAVE_CUDA diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index 4e94802d72..c7ecd370a4 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -88,8 +88,6 @@ class PairTableRXKokkos : public PairTable { typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_f_array f; - typename ArrayTypes::t_efloat_1d d_eatom; - typename ArrayTypes::t_virial_array d_vatom; int neighflag; @@ -106,6 +104,10 @@ class PairTableRXKokkos : public PairTable { int isite1, isite2; bool fractionalWeighting; + typename ArrayTypes::tdual_efloat_1d k_eatom; + typename ArrayTypes::tdual_virial_array k_vatom; + typename ArrayTypes::t_efloat_1d d_eatom; + typename ArrayTypes::t_virial_array d_vatom; }; } -- GitLab From 2b2998052c567719d6076435b640186105dda2ce Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 13 Jan 2017 13:50:21 -0700 Subject: [PATCH 085/337] Fixing inheritance issue in pair_hybrid_overlay_kokkos --- src/KOKKOS/pair_hybrid_overlay_kokkos.cpp | 116 +++++++++++++++++++++- src/KOKKOS/pair_hybrid_overlay_kokkos.h | 8 +- 2 files changed, 121 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp b/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp index 55fed33f96..79d9c63221 100644 --- a/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp +++ b/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp @@ -25,4 +25,118 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -PairHybridOverlayKokkos::PairHybridOverlayKokkos(LAMMPS *lmp) : PairHybridOverlay(lmp) {} +PairHybridOverlayKokkos::PairHybridOverlayKokkos(LAMMPS *lmp) : PairHybridKokkos(lmp) {} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairHybridOverlayKokkos::coeff(int narg, char **arg) +{ + if (narg < 3) error->all(FLERR,"Incorrect args for pair coefficients"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + // 3rd arg = pair sub-style name + // 4th arg = pair sub-style index if name used multiple times + // allow for "none" as valid sub-style name + + int multflag; + int m; + + for (m = 0; m < nstyles; m++) { + multflag = 0; + if (strcmp(arg[2],keywords[m]) == 0) { + if (multiple[m]) { + multflag = 1; + if (narg < 4) error->all(FLERR,"Incorrect args for pair coefficients"); + if (!isdigit(arg[3][0])) + error->all(FLERR,"Incorrect args for pair coefficients"); + int index = force->inumeric(FLERR,arg[3]); + if (index == multiple[m]) break; + else continue; + } else break; + } + } + + int none = 0; + if (m == nstyles) { + if (strcmp(arg[2],"none") == 0) none = 1; + else error->all(FLERR,"Pair coeff for hybrid has invalid style"); + } + + // move 1st/2nd args to 2nd/3rd args + // if multflag: move 1st/2nd args to 3rd/4th args + // just copy ptrs, since arg[] points into original input line + + arg[2+multflag] = arg[1]; + arg[1+multflag] = arg[0]; + + // invoke sub-style coeff() starting with 1st remaining arg + + if (!none) styles[m]->coeff(narg-1-multflag,&arg[1+multflag]); + + // set setflag and which type pairs map to which sub-style + // if sub-style is none: set hybrid subflag, wipe out map + // else: set hybrid setflag & map only if substyle setflag is set + // if sub-style is new for type pair, add as multiple mapping + // if sub-style exists for type pair, don't add, just update coeffs + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + if (none) { + setflag[i][j] = 1; + nmap[i][j] = 0; + count++; + } else if (styles[m]->setflag[i][j]) { + int k; + for (k = 0; k < nmap[i][j]; k++) + if (map[i][j][k] == m) break; + if (k == nmap[i][j]) map[i][j][nmap[i][j]++] = m; + setflag[i][j] = 1; + count++; + } + } + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + combine sub-style neigh list requests and create new ones if needed +------------------------------------------------------------------------- */ + +void PairHybridOverlayKokkos::modify_requests() +{ + int i,j; + NeighRequest *irq,*jrq; + + // loop over pair requests only + // if a previous list is same kind with same skip attributes + // then make this one a copy list of that one + // works whether both lists are no-skip or yes-skip + // will not point a list at a copy list, but at copy list's parent + + for (i = 0; i < neighbor->nrequest; i++) { + if (!neighbor->requests[i]->pair) continue; + + irq = neighbor->requests[i]; + for (j = 0; j < i; j++) { + if (!neighbor->requests[j]->pair) continue; + jrq = neighbor->requests[j]; + if (irq->same_kind(jrq) && irq->same_skip(jrq)) { + irq->copy = 1; + irq->otherlist = j; + break; + } + } + } + + // perform same operations on skip lists as pair style = hybrid + + PairHybrid::modify_requests(); +} diff --git a/src/KOKKOS/pair_hybrid_overlay_kokkos.h b/src/KOKKOS/pair_hybrid_overlay_kokkos.h index c9a50e3bb1..2e4899a1f3 100644 --- a/src/KOKKOS/pair_hybrid_overlay_kokkos.h +++ b/src/KOKKOS/pair_hybrid_overlay_kokkos.h @@ -20,14 +20,18 @@ PairStyle(hybrid/overlay/kk,PairHybridOverlayKokkos) #ifndef LMP_PAIR_HYBRID_OVERLAY_KOKKOS_H #define LMP_PAIR_HYBRID_OVERLAY_KOKKOS_H -#include "pair_hybrid_overlay.h" +#include "pair_hybrid_kokkos.h" namespace LAMMPS_NS { -class PairHybridOverlayKokkos : public PairHybridOverlay { +class PairHybridOverlayKokkos : public PairHybridKokkos { public: PairHybridOverlayKokkos(class LAMMPS *); virtual ~PairHybridOverlayKokkos() {} + void coeff(int, char **); + + private: + void modify_requests(); }; } -- GitLab From 688df1c2542cef4461b99e99632cce54dd0eb51d Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 13 Jan 2017 14:40:36 -0700 Subject: [PATCH 086/337] fix CUDA type issues in pair_table_rx_kokkos stop using the global DAT, use the pair's DeviceType for all the relevant types. --- src/KOKKOS/pair_table_rx_kokkos.cpp | 34 +++++++++++++++++------------ src/KOKKOS/pair_table_rx_kokkos.h | 3 --- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 7402a00900..58108c9308 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -272,11 +272,11 @@ ev_tally( F_FLOAT epair, F_FLOAT fpair, F_FLOAT delx, F_FLOAT dely, F_FLOAT delz, Kokkos::View::t_virial_array::array_layout, DeviceType, Kokkos::MemoryTraits::value> > v_vatom, Kokkos::View::t_efloat_1d::array_layout, DeviceType, Kokkos::MemoryTraits::value> > v_eatom) { @@ -390,10 +390,14 @@ compute_item( typename ArrayTypes::t_f_array::array_layout, DeviceType, Kokkos::MemoryTraits::value> > f, - Kokkos::View::value> > uCG, - Kokkos::View::value> > uCGnew, + Kokkos::View::t_efloat_1d::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > uCG, + Kokkos::View::t_efloat_1d::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > uCGnew, int isite1, int isite2, typename PairTableRXKokkos::TableDeviceConst d_table_const, int eflag, @@ -402,11 +406,11 @@ compute_item( int vflag_global, int vflag_atom, Kokkos::View::t_virial_array::array_layout, DeviceType, Kokkos::MemoryTraits::value> > v_vatom, Kokkos::View::t_efloat_1d::array_layout, DeviceType, Kokkos::MemoryTraits::value> > v_eatom) { EV_FLOAT ev; @@ -532,9 +536,11 @@ static void compute_all_items( typename ArrayTypes::t_f_array::array_layout, DeviceType, Kokkos::MemoryTraits::value> > f, - Kokkos::View::t_efloat_1d::array_layout, DeviceType,Kokkos::MemoryTraits::value> > uCG, - Kokkos::View::t_efloat_1d::array_layout, DeviceType,Kokkos::MemoryTraits::value> > uCGnew, int isite1, int isite2, typename PairTableRXKokkos::TableDeviceConst d_table_const, @@ -544,11 +550,11 @@ static void compute_all_items( int vflag_global, int vflag_atom, Kokkos::View::t_virial_array::array_layout, DeviceType, Kokkos::MemoryTraits::value> > v_vatom, Kokkos::View::t_efloat_1d::array_layout, DeviceType, Kokkos::MemoryTraits::value> > v_eatom) { if (eflag || vflag) { @@ -627,12 +633,12 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (eflag_atom) { memory->destroy_kokkos(k_eatom,eatom); memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); - d_eatom = k_eatom.d_view; + d_eatom = k_eatom.template view(); } if (vflag_atom) { memory->destroy_kokkos(k_vatom,vatom); memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); - d_vatom = k_vatom.d_view; + d_vatom = k_vatom.template view(); } atomKK->sync(execution_space,datamask_read); diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index c7ecd370a4..54c114a433 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -30,9 +30,6 @@ namespace LAMMPS_NS { template class PairTableRXKokkos : public PairTable { public: - - using DAT = ArrayTypes; - enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2}; typedef DeviceType device_type; -- GitLab From 91d68e26eff86b7e1fe50bb3786b13b7f6a07b30 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 17 Jan 2017 12:26:00 -0700 Subject: [PATCH 087/337] Prevent overlapping host/device computation in pair_hybrid_kokkos --- src/KOKKOS/pair_hybrid_kokkos.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/KOKKOS/pair_hybrid_kokkos.cpp b/src/KOKKOS/pair_hybrid_kokkos.cpp index 973d60348f..9c0948b7d4 100644 --- a/src/KOKKOS/pair_hybrid_kokkos.cpp +++ b/src/KOKKOS/pair_hybrid_kokkos.cpp @@ -35,6 +35,11 @@ using namespace LAMMPS_NS; PairHybridKokkos::PairHybridKokkos(LAMMPS *lmp) : PairHybrid(lmp) { atomKK = (AtomKokkos *) atom; + + // prevent overlapping host/device computation, which isn't + // yet supported by pair_hybrid_kokkos + execution_space = Device; + datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; } -- GitLab From 8b4130c0cbbbf6bfb69e01d51f5ba47c94ecd3ed Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 17 Jan 2017 13:28:55 -0700 Subject: [PATCH 088/337] Fixing issue with pressure in pair_hybrid_kokkos --- src/KOKKOS/pair_hybrid_kokkos.cpp | 9 ++++++++- src/KOKKOS/pair_hybrid_kokkos.h | 9 +++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_hybrid_kokkos.cpp b/src/KOKKOS/pair_hybrid_kokkos.cpp index 9c0948b7d4..337b56c6ce 100644 --- a/src/KOKKOS/pair_hybrid_kokkos.cpp +++ b/src/KOKKOS/pair_hybrid_kokkos.cpp @@ -148,5 +148,12 @@ void PairHybridKokkos::compute(int eflag, int vflag) delete [] saved_special; - if (vflag_fdotr) virial_fdotr_compute(); + // perform virial_fdotr on device + + atomKK->sync(Device,X_MASK|F_MASK); + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + + if (vflag_fdotr) + pair_virial_fdotr_compute(this); } diff --git a/src/KOKKOS/pair_hybrid_kokkos.h b/src/KOKKOS/pair_hybrid_kokkos.h index cfcef7fb31..62d325925b 100644 --- a/src/KOKKOS/pair_hybrid_kokkos.h +++ b/src/KOKKOS/pair_hybrid_kokkos.h @@ -22,6 +22,8 @@ PairStyle(hybrid/kk,PairHybridKokkos) #include #include "pair_hybrid.h" +#include "pair_kokkos.h" +#include "kokkos_type.h" namespace LAMMPS_NS { @@ -33,9 +35,16 @@ class PairHybridKokkos : public PairHybrid { friend class Respa; friend class Info; public: + typedef LMPDeviceType device_type; + PairHybridKokkos(class LAMMPS *); virtual ~PairHybridKokkos(); void compute(int, int); + + private: + DAT::t_x_array_randomread x; + DAT::t_f_array f; + friend void pair_virial_fdotr_compute(PairHybridKokkos*); }; } -- GitLab From 5569c4c130c08656ddf4313127effcd039185bf6 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 17 Jan 2017 16:19:25 -0700 Subject: [PATCH 089/337] Fixing GPU memory issue with fix_property_atom_kokkos --- src/KOKKOS/atom_vec_dpd_kokkos.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index 58fc9c46c3..82d45dfcd4 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -86,12 +86,12 @@ void AtomVecDPDKokkos::grow(int n) memory->grow_kokkos(atomKK->k_uCGnew,atomKK->uCGnew,nmax,"atom:uCGnew"); memory->grow_kokkos(atomKK->k_duChem,atomKK->duChem,nmax,"atom:duChem"); - grow_reset(); - sync(Host,ALL_MASK); - if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + + grow_reset(); + sync(Host,ALL_MASK); } /* ---------------------------------------------------------------------- -- GitLab From 96636c7514a8fa9f978e3bbb42972a986e458285 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 17 Jan 2017 16:43:55 -0700 Subject: [PATCH 090/337] Fixing warnings in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 4 ++-- src/KOKKOS/pair_exp6_rx_kokkos.h | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 3ce6b78e57..9be44666aa 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -284,7 +284,7 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxCompute::value> > a_uCG = uCG; Kokkos::View::value> > a_uCGnew = uCGnew; - int i,j,jj,jnum,itype,jtype; + int i,jj,jnum,itype,jtype; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; double rsq,r2inv,r6inv,forceExp6,factor_lj; double rCut,rCutInv,rCut2inv,rCut6inv,rCutExp,urc,durc; @@ -508,7 +508,7 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxComputeall(FLERR,"alpha_ij is 6.0 in pair exp6"); + k_error_flag.d_view() = 1; // A3. Compute some convenient quantities for evaluating the force rminv = 1.0/rm12_ij; diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 488c9d0039..1f2172471b 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -150,6 +150,24 @@ class PairExp6rxKokkos : public PairExp6rx { friend void pair_virial_fdotr_compute(PairExp6rxKokkos*); }; + +// optimized version of pow(x,n) with n being integer +// up to 10x faster than pow(x,y) + +KOKKOS_INLINE_FUNCTION +static double powint(const double &x, const int n) { + double yy,ww; + + if (x == 0.0) return 0.0; + int nn = (n > 0) ? n : -n; + ww = x; + + for (yy = 1.0; nn != 0; nn >>= 1, ww *=ww) + if (nn & 1) yy *= ww; + + return (n > 0) ? yy : 1.0/yy; +}; + } #endif -- GitLab From b38733e5a2b73e6f1a3d6ec37958bc68251f2bca Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 18 Jan 2017 10:15:06 -0700 Subject: [PATCH 091/337] Fixing GPU memory issue in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 9be44666aa..bde3a32b4b 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -659,6 +659,10 @@ void PairExp6rxKokkos::coeff(int narg, char **arg) s_coeffEps[i] = coeffEps[i]; s_coeffRm[i] = coeffRm[i]; } + + k_params.template modify(); + k_params.template sync(); + d_params = k_params.template view(); } /* ---------------------------------------------------------------------- */ @@ -776,10 +780,6 @@ void PairExp6rxKokkos::read_file(char *file) } delete [] words; - - k_params.template modify(); - k_params.template sync(); - d_params = k_params.template view(); } /* ---------------------------------------------------------------------- */ -- GitLab From 2d32fa8ccb046159155212e36b09b663608525d5 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 18 Jan 2017 12:53:40 -0700 Subject: [PATCH 092/337] Fixing GPU memory issues in atom_vec_dpd_kokkos --- src/KOKKOS/atom_vec_dpd_kokkos.cpp | 45 +++++++++++++++++++----------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index 82d45dfcd4..699ea61c9d 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -256,7 +256,7 @@ int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, // Choose correct forward PackComm kernel if(commKK->forward_comm_on_host) { - sync(Host,X_MASK); + sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); if(pbc_flag) { if(domain->triclinic) { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, @@ -292,7 +292,7 @@ int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, } LMPHostType::fence(); } else { - sync(Device,X_MASK); + sync(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); if(pbc_flag) { if(domain->triclinic) { struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, @@ -400,8 +400,8 @@ struct AtomVecDPDKokkos_PackCommSelf { int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, const int & iswap, const int nfirst, const int &pbc_flag, const int* const pbc) { if(commKK->forward_comm_on_host) { - sync(Host,X_MASK); - modified(Host,X_MASK); + sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + modified(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); if(pbc_flag) { if(domain->triclinic) { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, @@ -437,8 +437,8 @@ int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list } LMPHostType::fence(); } else { - sync(Device,X_MASK); - modified(Device,X_MASK); + sync(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + modified(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); if(pbc_flag) { if(domain->triclinic) { struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, @@ -520,16 +520,16 @@ struct AtomVecDPDKokkos_UnpackComm { void AtomVecDPDKokkos::unpack_comm_kokkos(const int &n, const int &first, const DAT::tdual_xfloat_2d &buf ) { if(commKK->forward_comm_on_host) { - sync(Host,X_MASK); - modified(Host,X_MASK); + sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + modified(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, buf,first); Kokkos::parallel_for(n,f); LMPDeviceType::fence(); } else { - sync(Device,X_MASK); - modified(Device,X_MASK); + sync(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + modified(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, buf,first); @@ -1107,9 +1107,13 @@ struct AtomVecDPDKokkos_UnpackBorder { void AtomVecDPDKokkos::unpack_border_kokkos(const int &n, const int &first, const DAT::tdual_xfloat_2d &buf,ExecutionSpace space) { - modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK); while (first+n >= nmax) grow(0); - modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK); if(space==Host) { struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), h_x,h_tag,h_type,h_mask, @@ -1137,7 +1141,9 @@ void AtomVecDPDKokkos::unpack_border(int n, int first, double *buf) last = first + n; for (i = first; i < last; i++) { if (i == nmax) grow(0); - modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK); h_x(i,0) = buf[m++]; h_x(i,1) = buf[m++]; h_x(i,2) = buf[m++]; @@ -1168,7 +1174,9 @@ void AtomVecDPDKokkos::unpack_border_vel(int n, int first, double *buf) last = first + n; for (i = first; i < last; i++) { if (i == nmax) grow(0); - modified(Host,X_MASK|V_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + modified(Host,X_MASK|V_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK); h_x(i,0) = buf[m++]; h_x(i,1) = buf[m++]; h_x(i,2) = buf[m++]; @@ -1489,7 +1497,8 @@ int AtomVecDPDKokkos::unpack_exchange(double *buf) int nlocal = atom->nlocal; if (nlocal == nmax) grow(0); modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | - MASK_MASK | IMAGE_MASK); + MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); int m = 1; h_x(nlocal,0) = buf[m++]; @@ -1547,7 +1556,8 @@ int AtomVecDPDKokkos::size_restart() int AtomVecDPDKokkos::pack_restart(int i, double *buf) { sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | - MASK_MASK | IMAGE_MASK ); + MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | + UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); int m = 1; buf[m++] = h_x(i,0); @@ -1586,7 +1596,8 @@ int AtomVecDPDKokkos::unpack_restart(double *buf) memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); } modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | - MASK_MASK | IMAGE_MASK ); + MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | + UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); int m = 1; h_x(nlocal,0) = buf[m++]; -- GitLab From e05b1322895337ed3653b74adebfc54208db3649 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 18 Jan 2017 14:18:35 -0700 Subject: [PATCH 093/337] Fixing error check in fix_eos_table_rx_kokkos --- src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index aff2cdfa2d..40b44d6744 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -404,7 +404,8 @@ void FixEOStableRXKokkos::temperature_lookup(int id, double ui, doub if(it==maxit){ if(isnan(f1) || isnan(f2) || isnan(ui) || isnan(thetai) || isnan(t1) || isnan(t2)) k_error_flag.d_view() = 2; - k_error_flag.d_view() = 3; + else + k_error_flag.d_view() = 3; } thetai = temp; } -- GitLab From 116ae9d0c42aa949f9478a95ba20654804442381 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 18 Jan 2017 14:51:35 -0700 Subject: [PATCH 094/337] Fixing copy bug in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index bde3a32b4b..acba9e473b 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -1095,7 +1095,7 @@ void PairExp6rxKokkos::polynomialScaling(double phi, double &alpha, alpha = (s_coeffAlpha[0]*phi5 + s_coeffAlpha[1]*phi4 + s_coeffAlpha[2]*phi3 + s_coeffAlpha[3]*phi2 + s_coeffAlpha[4]*phi + s_coeffAlpha[5]); epsilon *= (s_coeffEps[0]*phi5 + s_coeffEps[1]*phi4 + s_coeffEps[2]*phi3 + s_coeffEps[3]*phi2 + s_coeffEps[4]*phi + s_coeffEps[5]); - rm *= (s_coeffEps[0]*phi5 + s_coeffEps[1]*phi4 + s_coeffEps[2]*phi3 + s_coeffEps[3]*phi2 + s_coeffEps[4]*phi + s_coeffEps[5]); + rm *= (s_coeffRm[0]*phi5 + s_coeffRm[1]*phi4 + s_coeffRm[2]*phi3 + s_coeffRm[3]*phi2 + s_coeffRm[4]*phi + s_coeffRm[5]); } /* ---------------------------------------------------------------------- */ -- GitLab From cf83ce454369b365efff7210382b7f2a3a246cf1 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 19 Jan 2017 08:44:30 -0700 Subject: [PATCH 095/337] Adding zero compute to pair_dpd_fdt_energy_kokkos --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 32 ++++++++++++----------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index 5de2b38ed0..ec807a0e08 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -170,21 +170,23 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) EV_FLOAT ev; if (splitFDT_flag) { - if (neighflag == HALF) { - if (newton_pair) { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); - } else { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); - } - } else if (neighflag == HALFTHREAD) { - if (newton_pair) { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); - } else { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + if (!a0_is_zero) { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } } } else { -- GitLab From 917ca19b340dec624890201ebb7280c2a64fef0a Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 19 Jan 2017 09:54:15 -0700 Subject: [PATCH 096/337] Fixing GPU memory issue in modify_kokkos, need to cherry pick back to Master --- src/KOKKOS/modify_kokkos.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/KOKKOS/modify_kokkos.cpp b/src/KOKKOS/modify_kokkos.cpp index ec3831dff8..b4a89c8e39 100644 --- a/src/KOKKOS/modify_kokkos.cpp +++ b/src/KOKKOS/modify_kokkos.cpp @@ -360,9 +360,7 @@ void ModifyKokkos::post_run() for (int i = 0; i < nfix; i++) { atomKK->sync(fix[i]->execution_space, fix[i]->datamask_read); - if (!fix[i]->kokkosable) lmp->kokkos->auto_sync = 1; fix[i]->post_run(); - lmp->kokkos->auto_sync = 0; atomKK->modified(fix[i]->execution_space, fix[i]->datamask_modify); } -- GitLab From de6442d8450cbebc62267dcc6872c58e68947766 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 19 Jan 2017 11:55:22 -0700 Subject: [PATCH 097/337] Fixing GPU memory issues in Kokkos --- src/KOKKOS/domain_kokkos.cpp | 4 ++-- src/KOKKOS/verlet_kokkos.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/domain_kokkos.cpp b/src/KOKKOS/domain_kokkos.cpp index cf65316ec9..5c1f1a60b9 100644 --- a/src/KOKKOS/domain_kokkos.cpp +++ b/src/KOKKOS/domain_kokkos.cpp @@ -354,7 +354,6 @@ void DomainKokkos::pbc() } atomKK->sync(Device,X_MASK|V_MASK|MASK_MASK|IMAGE_MASK); - atomKK->modified(Device,X_MASK|V_MASK|IMAGE_MASK); if (xperiodic || yperiodic || zperiodic) { if (deform_vremap) { @@ -385,8 +384,9 @@ void DomainKokkos::pbc() Kokkos::parallel_for(nlocal,f); } } - LMPDeviceType::fence(); + + atomKK->modified(Device,X_MASK|V_MASK|IMAGE_MASK); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/verlet_kokkos.cpp b/src/KOKKOS/verlet_kokkos.cpp index 20c4035276..53b4042376 100644 --- a/src/KOKKOS/verlet_kokkos.cpp +++ b/src/KOKKOS/verlet_kokkos.cpp @@ -170,7 +170,7 @@ void VerletKokkos::setup() modify->setup(vflag); output->setup(); - lmp->kokkos->auto_sync = 0; + lmp->kokkos->auto_sync = 1; update->setupflag = 1; } -- GitLab From 521f3df3d5939fe2d61b3fb9f2e756200822ba6e Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 19 Jan 2017 16:54:50 -0700 Subject: [PATCH 098/337] Initialize variables in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index acba9e473b..dd3228efc4 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -311,6 +311,9 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxCompute Date: Tue, 24 Jan 2017 11:24:47 -0700 Subject: [PATCH 099/337] Fixing GPU memory issue in fix_eos_table_rx_kokkos --- src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index 40b44d6744..38222e6dd7 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -45,6 +45,8 @@ template FixEOStableRXKokkos::FixEOStableRXKokkos(LAMMPS *lmp, int narg, char **arg) : FixEOStableRX(lmp, narg, arg) { + int kokkosable = 1; + atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; datamask_read = EMPTY_MASK; @@ -181,7 +183,7 @@ void FixEOStableRXKokkos::init() } else { atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); - atomKK->modified(execution_space,UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK); + atomKK->modified(execution_space,UCOND_MASK | UMECH_MASK | UCHEM_MASK); } error_check(); @@ -223,9 +225,8 @@ void FixEOStableRXKokkos::post_integrate() dvector = atomKK->k_dvector.view(); atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); - atomKK->modified(execution_space,DPDTHETA_MASK); - Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,DPDTHETA_MASK); error_check(); -- GitLab From 8e808f6c6b861cd46329b3c4d58e97631661896d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 24 Jan 2017 11:45:27 -0700 Subject: [PATCH 100/337] Zeroing variables in pair_exp6_rx_kokkos to match pull request --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 64 ++++++++++++++++-------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index dd3228efc4..23c217ef6e 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -311,9 +311,6 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxComputetemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + // + // Apply Mixing Rule to get the overall force for the CG pair + // + if (isite1 == isite2) fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12; + else fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*fpairOldEXP6_21; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if (NEWTON_PAIR || j < nlocal) { + a_f(j,0) -= delx*fpair; + a_f(j,1) -= dely*fpair; + a_f(j,2) -= delz*fpair; } + + if (isite1 == isite2) evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12; + else evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12 + sqrt(mixWtSite2_i*mixWtSite1_j)*evdwlEXP6_21; + evdwl *= factor_lj; + + uCGnew_i += 0.5*evdwl; + if (NEWTON_PAIR || j < nlocal) + a_uCGnew[j] += 0.5*evdwl; + evdwl = evdwlOld; + if (EVFLAG) + ev.evdwl += ((NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); } } -- GitLab From c617bc180afd1295fd49ffa71fdf779e8bf67603 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 26 Jan 2017 08:52:17 -0700 Subject: [PATCH 101/337] Adding sync/modify to pair_multi_lucy_rx_kokkos --- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index fac1478e32..8399fccc64 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -183,8 +183,6 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in dvector = atomKK->k_dvector.view(); atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | DPDRHO_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); - if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK); - else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); k_cutsq.template sync(); nlocal = atom->nlocal; @@ -231,6 +229,9 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in } } + if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK); + else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); + k_error_flag.template modify(); k_error_flag.template sync(); if (k_error_flag.h_view() == 1) @@ -454,7 +455,6 @@ void PairMultiLucyRXKokkos::computeLocalDensity() nlocal = atom->nlocal; atomKK->sync(execution_space,X_MASK | TYPE_MASK | DPDRHO_MASK); - atomKK->modified(execution_space,DPDRHO_MASK); const int inum = list->inum; NeighListKokkos* k_list = static_cast*>(list); @@ -492,14 +492,14 @@ void PairMultiLucyRXKokkos::computeLocalDensity() Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } + atomKK->modified(execution_space,DPDRHO_MASK); + // communicate and sum densities (on the host) if (newton_pair) { - atomKK->modified(execution_space,DPDRHO_MASK); atomKK->sync(Host,DPDRHO_MASK); comm->reverse_comm_pair(this); atomKK->modified(Host,DPDRHO_MASK); - atomKK->sync(execution_space,DPDRHO_MASK); } comm->forward_comm_pair(this); @@ -687,6 +687,8 @@ int PairMultiLucyRXKokkos::pack_forward_comm(int n, int *list, doubl { int i,j,m; + atomKK->sync(Host,DPDRHO_MASK); + m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -705,6 +707,8 @@ void PairMultiLucyRXKokkos::unpack_forward_comm(int n, int first, do m = 0; last = first + n; for (i = first; i < last; i++) h_rho[i] = buf[m++]; + + atomKK->modified(Host,DPDRHO_MASK); } /* ---------------------------------------------------------------------- */ -- GitLab From 8050eb3aa85c95fd55433208f185ff7f9bc74e02 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 26 Jan 2017 09:17:59 -0700 Subject: [PATCH 102/337] Another tweak to sync/modify in pair_multi_lucy_rx_kokkos --- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 8399fccc64..2e6d48227f 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -496,11 +496,8 @@ void PairMultiLucyRXKokkos::computeLocalDensity() // communicate and sum densities (on the host) - if (newton_pair) { - atomKK->sync(Host,DPDRHO_MASK); + if (newton_pair) comm->reverse_comm_pair(this); - atomKK->modified(Host,DPDRHO_MASK); - } comm->forward_comm_pair(this); } @@ -648,6 +645,8 @@ template int PairMultiLucyRXKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, int iswap_in, DAT::tdual_xfloat_1d &buf, int pbc_flag, int *pbc) { + atomKK->sync(execution_space,DPDRHO_MASK); + d_sendlist = k_sendlist.view(); iswap = iswap_in; v_buf = buf.view(); @@ -672,6 +671,8 @@ void PairMultiLucyRXKokkos::unpack_forward_comm_kokkos(int n, int fi v_buf = buf.view(); Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); DeviceType::fence(); + + atomKK->modified(execution_space,DPDRHO_MASK); } template @@ -718,6 +719,8 @@ int PairMultiLucyRXKokkos::pack_reverse_comm(int n, int first, doubl { int i,m,last; + atomKK->sync(Host,DPDRHO_MASK); + m = 0; last = first + n; for (i = first; i < last; i++) buf[m++] = h_rho[i]; @@ -736,6 +739,8 @@ void PairMultiLucyRXKokkos::unpack_reverse_comm(int n, int *list, do j = list[i]; h_rho[j] += buf[m++]; } + + atomKK->modified(Host,DPDRHO_MASK); } /* ---------------------------------------------------------------------- */ -- GitLab From 6cc969db9282e5712ce659b951615b14366a7e78 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 26 Jan 2017 09:24:13 -0700 Subject: [PATCH 103/337] Fixing warnings in Kokkos --- src/KOKKOS/fix_eos_table_rx_kokkos.cpp | 2 +- src/KOKKOS/rand_pool_wrap_kokkos.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp index 38222e6dd7..8487fd4c4f 100644 --- a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -45,7 +45,7 @@ template FixEOStableRXKokkos::FixEOStableRXKokkos(LAMMPS *lmp, int narg, char **arg) : FixEOStableRX(lmp, narg, arg) { - int kokkosable = 1; + kokkosable = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; diff --git a/src/KOKKOS/rand_pool_wrap_kokkos.h b/src/KOKKOS/rand_pool_wrap_kokkos.h index 349896ee9a..ce134e5215 100644 --- a/src/KOKKOS/rand_pool_wrap_kokkos.h +++ b/src/KOKKOS/rand_pool_wrap_kokkos.h @@ -24,6 +24,7 @@ namespace LAMMPS_NS { struct RandWrap { class RanMars* rng; + KOKKOS_INLINE_FUNCTION RandWrap() { rng = NULL; } -- GitLab From be13ecfa17cf837b0b1b4a69f8b0e733b9c5dae3 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 26 Jan 2017 10:03:43 -0700 Subject: [PATCH 104/337] Fixing Kokkos warnings --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 2 ++ src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 13 +------------ 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index 2c2b78ac57..7d1749eb94 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -80,7 +80,9 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { int sbmask(const int& j) const; struct params_dpd { + KOKKOS_INLINE_FUNCTION params_dpd(){cut=0;a0=0;sigma=0;kappa=0;}; + KOKKOS_INLINE_FUNCTION params_dpd(int i){cut=0;a0=0;sigma=0;kappa=0;}; F_FLOAT cut,a0,sigma,kappa; }; diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 2e6d48227f..30b49a8e8d 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -54,17 +54,6 @@ enum{NONE,RLINEAR,RSQ}; #define oneFluidParameter (-1) #define isOneFluid(_site) ( (_site) == oneFluidParameter ) -static const char cite_pair_multi_lucy_rx[] = - "pair_style multi/lucy/rx command:\n\n" - "@Article{Moore16,\n" - " author = {J.D. Moore, B.C. Barnes, S. Izvekov, M. Lisal, M.S. Sellers, D.E. Taylor and J. K. Brennan},\n" - " title = {A coarse-grain force field for RDX: Density dependent and energy conserving},\n" - " journal = {J. Chem. Phys.},\n" - " year = 2016,\n" - " volume = 144\n" - " pages = {104501}\n" - "}\n\n"; - /* ---------------------------------------------------------------------- */ template @@ -278,7 +267,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute::value> > a_f = f; - int i,jj,inum,jnum,itype,jtype,itable; + int i,jj,jnum,itype,jtype,itable; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; double rsq; -- GitLab From 85c8db5f86c7becfdb6c2d6831368abebabae0d4 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 26 Jan 2017 10:09:45 -0700 Subject: [PATCH 105/337] Fixing warning in pair_dpd_fdt_energy_kokkos --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index ec807a0e08..84a489bcc3 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -277,7 +277,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSp // The f array is atomic for Half/Thread neighbor style Kokkos::View::value> > a_f = f; - int i,j,jj,inum,jnum,itype,jtype; + int i,j,jj,jnum,itype,jtype; double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; double rsq,r,rinv,wd,wr,factor_dpd; -- GitLab From ebe27c65e18645f6aded43a039c8c3af2337afac Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 26 Jan 2017 10:33:03 -0700 Subject: [PATCH 106/337] Removing duplicate code in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 4 ++-- src/KOKKOS/pair_exp6_rx_kokkos.h | 18 ------------------ 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 23c217ef6e..962dcfd031 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -25,7 +25,7 @@ #include "force.h" #include "neigh_list.h" #include "math_const.h" -#include "math_special.h" +#include "math_special_kokkos.h" #include "memory.h" #include "error.h" #include "modify.h" @@ -36,7 +36,7 @@ using namespace LAMMPS_NS; using namespace MathConst; -using namespace MathSpecial; +using namespace MathSpecialKokkos; #define MAXLINE 1024 #define DELTA 4 diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 1f2172471b..488c9d0039 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -150,24 +150,6 @@ class PairExp6rxKokkos : public PairExp6rx { friend void pair_virial_fdotr_compute(PairExp6rxKokkos*); }; - -// optimized version of pow(x,n) with n being integer -// up to 10x faster than pow(x,y) - -KOKKOS_INLINE_FUNCTION -static double powint(const double &x, const int n) { - double yy,ww; - - if (x == 0.0) return 0.0; - int nn = (n > 0) ? n : -n; - ww = x; - - for (yy = 1.0; nn != 0; nn >>= 1, ww *=ww) - if (nn & 1) yy *= ww; - - return (n > 0) ? yy : 1.0/yy; -}; - } #endif -- GitLab From a1f4551ac20e6660d7903f779ad67b4e56d7069d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 27 Jan 2017 10:18:41 -0700 Subject: [PATCH 107/337] Adding missing sync/modified in atom_vec_dpd_kokkos --- src/KOKKOS/atom_vec_dpd_kokkos.cpp | 101 ++++++++++++++++++++++++----- 1 file changed, 83 insertions(+), 18 deletions(-) diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index 699ea61c9d..820f11c215 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -156,6 +156,10 @@ void AtomVecDPDKokkos::grow_reset() void AtomVecDPDKokkos::copy(int i, int j, int delflag) { + sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | + UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); + h_tag[j] = h_tag[i]; h_type[j] = h_type[i]; mask[j] = mask[i]; @@ -176,6 +180,10 @@ void AtomVecDPDKokkos::copy(int i, int j, int delflag) if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); + + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | + UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); } /* ---------------------------------------------------------------------- */ @@ -546,6 +554,8 @@ int AtomVecDPDKokkos::pack_comm(int n, int *list, double *buf, int i,j,m; double dx,dy,dz; + sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + m = 0; if (pbc_flag == 0) { for (i = 0; i < n; i++) { @@ -590,6 +600,8 @@ int AtomVecDPDKokkos::pack_comm_vel(int n, int *list, double *buf, int i,j,m; double dx,dy,dz,dvx,dvy,dvz; + sync(Host,X_MASK|V_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + m = 0; if (pbc_flag == 0) { for (i = 0; i < n; i++) { @@ -674,6 +686,8 @@ void AtomVecDPDKokkos::unpack_comm(int n, int first, double *buf) h_uMech[i] = buf[m++]; h_uChem[i] = buf[m++]; } + + modified(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); } /* ---------------------------------------------------------------------- */ @@ -696,6 +710,8 @@ void AtomVecDPDKokkos::unpack_comm_vel(int n, int first, double *buf) h_uMech[i] = buf[m++]; h_uChem[i] = buf[m++]; } + + modified(Host,X_MASK|V_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); } /* ---------------------------------------------------------------------- */ @@ -805,6 +821,8 @@ int AtomVecDPDKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DA { X_FLOAT dx,dy,dz; + sync(space,ALL_MASK); + if (pbc_flag != 0) { if (domain->triclinic == 0) { dx = pbc[0]*domain->xprd; @@ -864,6 +882,8 @@ int AtomVecDPDKokkos::pack_border(int n, int *list, double *buf, int i,j,m; double dx,dy,dz; + sync(Host,ALL_MASK); + m = 0; if (pbc_flag == 0) { for (i = 0; i < n; i++) { @@ -923,6 +943,8 @@ int AtomVecDPDKokkos::pack_border_vel(int n, int *list, double *buf, int i,j,m; double dx,dy,dz,dvx,dvy,dvz; + sync(Host,ALL_MASK); + m = 0; if (pbc_flag == 0) { for (i = 0; i < n; i++) { @@ -1016,6 +1038,9 @@ int AtomVecDPDKokkos::pack_comm_hybrid(int n, int *list, double *buf) { int i,j,m; + sync(Host,DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -1035,6 +1060,9 @@ int AtomVecDPDKokkos::pack_border_hybrid(int n, int *list, double *buf) { int i,j,m; + sync(Host,DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -1113,7 +1141,7 @@ void AtomVecDPDKokkos::unpack_border_kokkos(const int &n, const int &first, while (first+n >= nmax) grow(0); modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| - UCG_MASK|UCGNEW_MASK); + UCG_MASK|UCGNEW_MASK|DVECTOR_MASK); if(space==Host) { struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), h_x,h_tag,h_type,h_mask, @@ -1141,9 +1169,7 @@ void AtomVecDPDKokkos::unpack_border(int n, int first, double *buf) last = first + n; for (i = first; i < last; i++) { if (i == nmax) grow(0); - modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| - DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| - UCG_MASK|UCGNEW_MASK); + h_x(i,0) = buf[m++]; h_x(i,1) = buf[m++]; h_x(i,2) = buf[m++]; @@ -1162,6 +1188,10 @@ void AtomVecDPDKokkos::unpack_border(int n, int first, double *buf) for (int iextra = 0; iextra < atom->nextra_border; iextra++) m += modify->fix[atom->extra_border[iextra]]-> unpack_border(n,first,&buf[m]); + + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK|DVECTOR_MASK); } /* ---------------------------------------------------------------------- */ @@ -1174,9 +1204,7 @@ void AtomVecDPDKokkos::unpack_border_vel(int n, int first, double *buf) last = first + n; for (i = first; i < last; i++) { if (i == nmax) grow(0); - modified(Host,X_MASK|V_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| - DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| - UCG_MASK|UCGNEW_MASK); + h_x(i,0) = buf[m++]; h_x(i,1) = buf[m++]; h_x(i,2) = buf[m++]; @@ -1198,6 +1226,10 @@ void AtomVecDPDKokkos::unpack_border_vel(int n, int first, double *buf) for (int iextra = 0; iextra < atom->nextra_border; iextra++) m += modify->fix[atom->extra_border[iextra]]-> unpack_border(n,first,&buf[m]); + + modified(Host,X_MASK|V_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK|DVECTOR_MASK); } /* ---------------------------------------------------------------------- */ @@ -1216,6 +1248,10 @@ int AtomVecDPDKokkos::unpack_comm_hybrid(int n, int first, double *buf) h_uCG(i) = buf[m++]; h_uCGnew(i) = buf[m++]; } + + modified(Host,DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + return m; } @@ -1235,6 +1271,10 @@ int AtomVecDPDKokkos::unpack_border_hybrid(int n, int first, double *buf) h_uCG(i) = buf[m++]; h_uCGnew(i) = buf[m++]; } + + modified(Host,DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + return m; } @@ -1356,23 +1396,31 @@ int AtomVecDPDKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d int newsize = nsend*17/k_buf.view().dimension_1()+1; k_buf.resize(newsize,k_buf.view().dimension_1()); } + sync(space,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK | + DVECTOR_MASK); if(space == Host) { AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); LMPHostType::fence(); - return nsend*17; } else { AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); LMPDeviceType::fence(); - return nsend*17; } + return nsend*17; } /* ---------------------------------------------------------------------- */ int AtomVecDPDKokkos::pack_exchange(int i, double *buf) { + sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK | + DVECTOR_MASK); + int m = 1; buf[m++] = h_x(i,0); buf[m++] = h_x(i,1); @@ -1475,7 +1523,6 @@ int AtomVecDPDKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nre AtomVecDPDKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/17,f); LMPHostType::fence(); - return k_count.h_view(0); } else { k_count.h_view(0) = nlocal; k_count.modify(); @@ -1485,9 +1532,14 @@ int AtomVecDPDKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nre LMPDeviceType::fence(); k_count.modify(); k_count.sync(); - - return k_count.h_view(0); } + + modified(space,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK | + DVECTOR_MASK); + + return k_count.h_view(0); } /* ---------------------------------------------------------------------- */ @@ -1496,9 +1548,6 @@ int AtomVecDPDKokkos::unpack_exchange(double *buf) { int nlocal = atom->nlocal; if (nlocal == nmax) grow(0); - modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | - MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | - UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); int m = 1; h_x(nlocal,0) = buf[m++]; @@ -1523,6 +1572,11 @@ int AtomVecDPDKokkos::unpack_exchange(double *buf) m += modify->fix[atom->extra_grow[iextra]]-> unpack_exchange(nlocal,&buf[m]); + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK | + DVECTOR_MASK); + atom->nlocal++; return m; } @@ -1595,9 +1649,6 @@ int AtomVecDPDKokkos::unpack_restart(double *buf) if (atom->nextra_store) memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); } - modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | - MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | - UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); int m = 1; h_x(nlocal,0) = buf[m++]; @@ -1621,6 +1672,10 @@ int AtomVecDPDKokkos::unpack_restart(double *buf) for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; } + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | + UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); + atom->nlocal++; return m; } @@ -1661,6 +1716,10 @@ void AtomVecDPDKokkos::create_atom(int itype, double *coord) h_uCGnew[nlocal] = 0.0; h_duChem[nlocal] = 0.0; + //atomKK->modified(Host,TAG_MASK|TYPE_MASK|DPDTHETA_MASK|X_MASK|IMAGE_MASK| + // MASK_MASK|V_MASK|DPDRHO_MASK|UCOND_MASK|UMECH_MASK| + // UCHEM_MASK|UCG_MASK|UCGNEW_MASK); + atom->nlocal++; } @@ -1716,6 +1775,8 @@ int AtomVecDPDKokkos::data_atom_hybrid(int nlocal, char **values) { h_dpdTheta(nlocal) = atof(values[0]); + atomKK->modified(Host,DPDTHETA_MASK); + return 1; } @@ -1725,6 +1786,8 @@ int AtomVecDPDKokkos::data_atom_hybrid(int nlocal, char **values) void AtomVecDPDKokkos::pack_data(double **buf) { + atomKK->sync(Host,TAG_MASK|TYPE_MASK|DPDTHETA_MASK|X_MASK|IMAGE_MASK); + int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { buf[i][0] = ubuf(h_tag(i)).d; @@ -1745,6 +1808,8 @@ void AtomVecDPDKokkos::pack_data(double **buf) int AtomVecDPDKokkos::pack_data_hybrid(int i, double *buf) { + atomKK->sync(Host,DPDTHETA_MASK); + buf[0] = h_dpdTheta(i); return 1; } -- GitLab From 43d61f313f566b53fd00112b594395a3c40b2145 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Sun, 22 Jan 2017 15:03:45 -0500 Subject: [PATCH 108/337] Initial bare-bones port of FixRX to Kokkos. Initial port of USER-DPD/fix_rx.cpp to KOKKOS/fix_rx_kokkos.cpp. Using parallel_reduce(...) but still using host-only data. TODO: 1. Switch to KOKKOS datatypes for sparse-kinetics data; dense is finished. 2. Switch to using KOKKOS data for dvector. 3. Remove dependencies in rhs(...) on atom. Store those consts in UserData{} or as member constants. 4. Port ComputeLocalTemp(...) to Kokkos (needs pairing algorithm). --- src/KOKKOS/fix_rx_kokkos.cpp | 887 +++++++++++++++++++++++++++++++++++ src/KOKKOS/fix_rx_kokkos.h | 124 +++++ 2 files changed, 1011 insertions(+) create mode 100644 src/KOKKOS/fix_rx_kokkos.cpp create mode 100644 src/KOKKOS/fix_rx_kokkos.h diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp new file mode 100644 index 0000000000..f8a10dff93 --- /dev/null +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -0,0 +1,887 @@ +/* ---------------------------------------------------------------------- + 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_rx_kokkos.h" +#include "atom_masks.h" +#include "atom_kokkos.h" +#include "force.h" +#include "memory.h" +#include "update.h" +#include "respa.h" +#include "modify.h" +#include "error.h" +#include "math_special.h" + +#include // DBL_EPSILON + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathSpecial; + +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + +#define SparseKinetics_enableIntegralReactions (true) +#define SparseKinetics_invalidIndex (-1) + +namespace /* anonymous */ +{ + +typedef double TimerType; +TimerType getTimeStamp(void) { return MPI_Wtime(); } +double getElapsedTime( const TimerType &t0, const TimerType &t1) { return t1-t0; } + +} // end namespace + +/* ---------------------------------------------------------------------- */ + +template +FixRxKokkos::FixRxKokkos(LAMMPS *lmp, int narg, char **arg) : + FixRX(lmp, narg, arg), + pairDPDEKK(NULL), + update_kinetics_data(true) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + printf("Inside FixRxKokkos::FixRxKokkos\n"); +} + +template +FixRxKokkos::~FixRxKokkos() +{ + printf("Inside FixRxKokkos::~FixRxKokkos\n"); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::init() +{ + printf("Inside FixRxKokkos::init\n"); + + // Call the parent's version. + FixRX::init(); + + pairDPDEKK = dynamic_cast(pairDPDE); + if (pairDPDEKK == NULL) + error->all(FLERR,"Must use pair_style dpd/fdt/energy/kk with fix rx/kk"); + + if (update_kinetics_data) + create_kinetics_data(); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::rk4(const double t_stop, double *y, double *rwork, void* v_params) const +{ + double *k1 = rwork; + double *k2 = k1 + nspecies; + double *k3 = k2 + nspecies; + double *k4 = k3 + nspecies; + double *yp = k4 + nspecies; + + const int numSteps = minSteps; + + const double h = t_stop / double(numSteps); + + // Run the requested steps with h. + for (int step = 0; step < numSteps; step++) + { + // k1 + rhs(0.0,y,k1,v_params); + + // k2 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + 0.5*h*k1[ispecies]; + + rhs(0.0,yp,k2,v_params); + + // k3 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + 0.5*h*k2[ispecies]; + + rhs(0.0,yp,k3,v_params); + + // k4 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + h*k3[ispecies]; + + rhs(0.0,yp,k4,v_params); + + for (int ispecies = 0; ispecies < nspecies; ispecies++) + y[ispecies] += h*(k1[ispecies]/6.0 + k2[ispecies]/3.0 + k3[ispecies]/3.0 + k4[ispecies]/6.0); + + } // end for (int step... + +} + +/* ---------------------------------------------------------------------- */ + +// f1 = dt*f(t,x) +// f2 = dt*f(t+ c20*dt,x + c21*f1) +// f3 = dt*f(t+ c30*dt,x + c31*f1 + c32*f2) +// f4 = dt*f(t+ c40*dt,x + c41*f1 + c42*f2 + c43*f3) +// f5 = dt*f(t+dt,x + c51*f1 + c52*f2 + c53*f3 + c54*f4) +// f6 = dt*f(t+ c60*dt,x + c61*f1 + c62*f2 + c63*f3 + c64*f4 + c65*f5) +// +// fifth-order runge-kutta integration +// x5 = x + b1*f1 + b3*f3 + b4*f4 + b5*f5 + b6*f6 +// fourth-order runge-kutta integration +// x = x + a1*f1 + a3*f3 + a4*f4 + a5*f5 + +template +void FixRxKokkos::rkf45_step (const int neq, const double h, double y[], double y_out[], double rwk[], void* v_param) const +{ + const double c21=0.25; + const double c31=0.09375; + const double c32=0.28125; + const double c41=0.87938097405553; + const double c42=-3.2771961766045; + const double c43=3.3208921256258; + const double c51=2.0324074074074; + const double c52=-8.0; + const double c53=7.1734892787524; + const double c54=-0.20589668615984; + const double c61=-0.2962962962963; + const double c62=2.0; + const double c63=-1.3816764132554; + const double c64=0.45297270955166; + const double c65=-0.275; + const double a1=0.11574074074074; + const double a3=0.54892787524366; + const double a4=0.5353313840156; + const double a5=-0.2; + const double b1=0.11851851851852; + const double b3=0.51898635477583; + const double b4=0.50613149034201; + const double b5=-0.18; + const double b6=0.036363636363636; + + // local dependent variables (5 total) + double* f1 = &rwk[ 0]; + double* f2 = &rwk[ neq]; + double* f3 = &rwk[2*neq]; + double* f4 = &rwk[3*neq]; + double* f5 = &rwk[4*neq]; + double* f6 = &rwk[5*neq]; + + // scratch for the intermediate solution. + //double* ytmp = &rwk[6*neq]; + double* ytmp = y_out; + + // 1) + rhs (0.0, y, f1, v_param); + + for (int k = 0; k < neq; k++){ + f1[k] *= h; + ytmp[k] = y[k] + c21 * f1[k]; + } + + // 2) + rhs(0.0, ytmp, f2, v_param); + + for (int k = 0; k < neq; k++){ + f2[k] *= h; + ytmp[k] = y[k] + c31 * f1[k] + c32 * f2[k]; + } + + // 3) + rhs(0.0, ytmp, f3, v_param); + + for (int k = 0; k < neq; k++) { + f3[k] *= h; + ytmp[k] = y[k] + c41 * f1[k] + c42 * f2[k] + c43 * f3[k]; + } + + // 4) + rhs(0.0, ytmp, f4, v_param); + + for (int k = 0; k < neq; k++) { + f4[k] *= h; + ytmp[k] = y[k] + c51 * f1[k] + c52 * f2[k] + c53 * f3[k] + c54 * f4[k]; + } + + // 5) + rhs(0.0, ytmp, f5, v_param); + + for (int k = 0; k < neq; k++) { + f5[k] *= h; + ytmp[k] = y[k] + c61*f1[k] + c62*f2[k] + c63*f3[k] + c64*f4[k] + c65*f5[k]; + } + + // 6) + rhs(0.0, ytmp, f6, v_param); + + for (int k = 0; k < neq; k++) + { + //const double f6 = h * ydot[k]; + f6[k] *= h; + + // 5th-order solution. + const double r5 = b1*f1[k] + b3*f3[k] + b4*f4[k] + b5*f5[k] + b6*f6[k]; + + // 4th-order solution. + const double r4 = a1*f1[k] + a3*f3[k] + a4*f4[k] + a5*f5[k]; + + // Truncation error: difference between 4th and 5th-order solutions. + rwk[k] = fabs(r5 - r4); + + // Update solution. + //y_out[k] = y[k] + r5; // Local extrapolation + y_out[k] = y[k] + r4; + } + + return; +} + +template +int FixRxKokkos::rkf45_h0 + (const int neq, const double t, const double t_stop, + const double hmin, const double hmax, + double& h0, double y[], double rwk[], void* v_params) const +{ + // Set lower and upper bounds on h0, and take geometric mean as first trial value. + // Exit with this value if the bounds cross each other. + + // Adjust upper bound based on ydot ... + double hg = sqrt(hmin*hmax); + + //if (hmax < hmin) + //{ + // h0 = hg; + // return; + //} + + // Start iteration to find solution to ... {WRMS norm of (h0^2 y'' / 2)} = 1 + + double *ydot = rwk; + double *y1 = ydot + neq; + double *ydot1 = y1 + neq; + + const int max_iters = 10; + bool hnew_is_ok = false; + double hnew = hg; + int iter = 0; + + // compute ydot at t=t0 + rhs (t, y, ydot, v_params); + + while(1) + { + // Estimate y'' with finite-difference ... + + for (int k = 0; k < neq; k++) + y1[k] = y[k] + hg * ydot[k]; + + // compute y' at t1 + rhs (t + hg, y1, ydot1, v_params); + + // Compute WRMS norm of y'' + double yddnrm = 0.0; + for (int k = 0; k < neq; k++){ + double ydd = (ydot1[k] - ydot[k]) / hg; + double wterr = ydd / (relTol * fabs( y[k] ) + absTol); + yddnrm += wterr * wterr; + } + + yddnrm = sqrt( yddnrm / double(neq) ); + + //std::cout << "iter " << _iter << " hg " << hg << " y'' " << yddnrm << std::endl; + //std::cout << "ydot " << ydot[neq-1] << std::endl; + + // should we accept this? + if (hnew_is_ok || iter == max_iters){ + hnew = hg; + if (iter == max_iters) + fprintf(stderr, "ERROR_HIN_MAX_ITERS\n"); + break; + } + + // Get the new value of h ... + hnew = (yddnrm*hmax*hmax > 2.0) ? sqrt(2.0 / yddnrm) : sqrt(hg * hmax); + + // test the stopping conditions. + double hrat = hnew / hg; + + // Accept this value ... the bias factor should bring it within range. + if ( (hrat > 0.5) && (hrat < 2.0) ) + hnew_is_ok = true; + + // If y'' is still bad after a few iterations, just accept h and give up. + if ( (iter > 1) && hrat > 2.0 ) { + hnew = hg; + hnew_is_ok = true; + } + + //printf("iter=%d, yddnrw=%e, hnew=%e, hmin=%e, hmax=%e\n", iter, yddnrm, hnew, hmin, hmax); + + hg = hnew; + iter ++; + } + + // bound and bias estimate + h0 = hnew * 0.5; + h0 = fmax(h0, hmin); + h0 = fmin(h0, hmax); + //printf("h0=%e, hmin=%e, hmax=%e\n", h0, hmin, hmax); + + return (iter + 1); +} + +template +void FixRxKokkos::rkf45(const int neq, const double t_stop, double *y, double *rwork, void *v_param, CounterType& counter) const +{ + // Rounding coefficient. + const double uround = DBL_EPSILON; + + // Adaption limit (shrink or grow) + const double adaption_limit = 4.0; + + // Safety factor on the adaption. very specific but not necessary .. 0.9 is common. + const double hsafe = 0.840896415; + + // Time rounding factor. + const double tround = t_stop * uround; + + // Counters for diagnostics. + int nst = 0; // # of steps (accepted) + int nit = 0; // # of iterations total + int nfe = 0; // # of RHS evaluations + + // Min/Max step-size limits. + const double h_min = 100.0 * tround; + const double h_max = (minSteps > 0) ? t_stop / double(minSteps) : t_stop; + + // Set the initial step-size. 0 forces an internal estimate ... stable Euler step size. + double h = (minSteps > 0) ? t_stop / double(minSteps) : 0.0; + + double t = 0.0; + + if (h < h_min){ + //fprintf(stderr,"hin not implemented yet\n"); + //exit(-1); + nfe = rkf45_h0 (neq, t, t_stop, h_min, h_max, h, y, rwork, v_param); + } + + //printf("t= %e t_stop= %e h= %e\n", t, t_stop, h); + + // Integrate until we reach the end time. + while (fabs(t - t_stop) > tround){ + double *yout = rwork; + double *eout = yout + neq; + + // Take a trial step. + rkf45_step (neq, h, y, yout, eout, v_param); + + // Estimate the solution error. + // ... weighted 2-norm of the error. + double err2 = 0.0; + for (int k = 0; k < neq; k++){ + const double wterr = eout[k] / (relTol * fabs( y[k] ) + absTol); + err2 += wterr * wterr; + } + + double err = fmax( uround, sqrt( err2 / double(nspecies) )); + + // Accept the solution? + if (err <= 1.0 || h <= h_min){ + t += h; + nst++; + + for (int k = 0; k < neq; k++) + y[k] = yout[k]; + } + + // Adjust h for the next step. + double hfac = hsafe * sqrt( sqrt( 1.0 / err ) ); + + // Limit the adaption. + hfac = fmax( hfac, 1.0 / adaption_limit ); + hfac = fmin( hfac, adaption_limit ); + + // Apply the adaption factor... + h *= hfac; + + // Limit h. + h = fmin( h, h_max ); + h = fmax( h, h_min ); + + // Stretch h if we're within 5% ... and we didn't just fail. + if (err <= 1.0 && (t + 1.05*h) > t_stop) + h = t_stop - t; + + // And don't overshoot the end. + if (t + h > t_stop) + h = t_stop - t; + + nit++; + nfe += 6; + + if (maxIters && nit > maxIters){ + //fprintf(stderr,"atom[%d] took too many iterations in rkf45 %d %e %e\n", id, nit, t, t_stop); + counter.nFails ++; + break; + // We should set an error here so that the solution is not used! + } + + } // end while + + counter.nSteps += nst; + counter.nIters += nit; + counter.nFuncs += nfe; + + //printf("id= %d nst= %d nit= %d\n", id, nst, nit); +} + +/* ---------------------------------------------------------------------- */ + +template +int FixRxKokkos::rhs(double t, const double *y, double *dydt, void *params) const +{ + // Use the sparse format instead. + if (useSparseKinetics) + return this->rhs_sparse( t, y, dydt, params); + else + return this->rhs_dense ( t, y, dydt, params); +} + +/* ---------------------------------------------------------------------- */ + +template +int FixRxKokkos::rhs_dense(double t, const double *y, double *dydt, void *params) const +{ + UserRHSData *userData = (UserRHSData *) params; + + double *rxnRateLaw = userData->rxnRateLaw; + double *kFor = userData->kFor; + + const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + const int nspecies = atom->nspecies_dpd; + + for(int ispecies=0; ispecies +int FixRxKokkos::rhs_sparse(double t, const double *y, double *dydt, void *v_params) const +{ + UserRHSData *userData = (UserRHSData *) v_params; + + const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + + #define kFor (userData->kFor) + #define kRev (NULL) + #define rxnRateLaw (userData->rxnRateLaw) + #define conc (dydt) + #define maxReactants (this->sparseKinetics_maxReactants) + #define maxSpecies (this->sparseKinetics_maxSpecies) + #define nuk (this->sparseKinetics_nuk) + #define nu (this->sparseKinetics_nu) + #define inu (this->sparseKinetics_inu) + #define isIntegral(idx) (SparseKinetics_enableIntegralReactions \ + && this->sparseKinetics_isIntegralReaction[idx]) + + for (int k = 0; k < nspecies; ++k) + conc[k] = y[k] / VDPD; + + // Construct the reaction rate laws + for (int i = 0; i < nreactions; ++i) + { + double rxnRateLawForward; + if (isIntegral(i)){ + rxnRateLawForward = kFor[i] * powint( conc[ nuk[i][0] ], inu[i][0]); + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk[i][kk]; + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + rxnRateLawForward *= powint( conc[k], inu[i][kk] ); + } + } else { + rxnRateLawForward = kFor[i] * pow( conc[ nuk[i][0] ], nu[i][0]); + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk[i][kk]; + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + rxnRateLawForward *= pow( conc[k], nu[i][kk] ); + } + } + + rxnRateLaw[i] = rxnRateLawForward; + } + + // Construct the reaction rates for each species from the + // Stoichiometric matrix and ROP vector. + for (int k = 0; k < nspecies; ++k) + dydt[k] = 0.0; + + for (int i = 0; i < nreactions; ++i){ + // Reactants ... + dydt[ nuk[i][0] ] -= nu[i][0] * rxnRateLaw[i]; + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk[i][kk]; + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + dydt[k] -= nu[i][kk] * rxnRateLaw[i]; + } + + // Products ... + dydt[ nuk[i][maxReactants] ] += nu[i][maxReactants] * rxnRateLaw[i]; + for (int kk = maxReactants+1; kk < maxSpecies; ++kk){ + const int k = nuk[i][kk]; + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + dydt[k] += nu[i][kk] * rxnRateLaw[i]; + } + } + + // Add in the volume factor to convert to the proper units. + for (int k = 0; k < nspecies; ++k) + dydt[k] *= VDPD; + + #undef kFor + #undef kRev + #undef rxnRateLaw + #undef conc + #undef maxReactants + #undef maxSpecies + #undef nuk + #undef nu + #undef inu + #undef isIntegral + //#undef invalidIndex + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +/*template + template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(SolverType, const int &i) const +{ + if (atom->mask[i] & groupbit) + { + double *rwork = new double[8*nspecies]; + + UserRHSData userData; + userData.kFor = new double[nreactions]; + userData.rxnRateLaw = new double[nreactions]; + + int ode_counter[4] = { 0 }; + + const double theta = (localTempFlag) ? dpdThetaLocal[i] : atom->dpdTheta[i]; + + //Compute the reaction rate constants + for (int irxn = 0; irxn < nreactions; irxn++) + { + if (SolverType::setToZero) + userData.kFor[irxn] = 0.0; + else + userData.kFor[irxn] = Arr[irxn]*pow(theta,nArr[irxn])*exp(-Ea[irxn]/force->boltz/theta); + } + + if (odeIntegrationFlag == ODE_LAMMPS_RK4) + rk4(i, rwork, &userData); + else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) + rkf45(i, rwork, &userData, ode_counter); + + delete [] rwork; + delete [] userData.kFor; + delete [] userData.rxnRateLaw; + } +} */ + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::solve_reactions(void) +{ +/* int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + using AT = ArrayTypes; + + atomKK->sync(execution_space, UCOND_MASK); + typename AT::t_efloat_1d uCond = atomKK->k_uCond.view(); + atomKK->sync(execution_space, UMECH_MASK); + typename AT::t_efloat_1d uMech = atomKK->k_uMech.view(); + + pairDPDEKK->k_duCond.template sync(); + typename AT::t_efloat_1d_const duCond = pairDPDEKK->k_duCond.template view(); + pairDPDEKK->k_duMech.template sync(); + typename AT::t_efloat_1d_const duMech = pairDPDEKK->k_duMech.template view(); + + auto dt = update->dt; + + Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { + uCond(i) += 0.5*dt*duCond(i); + uMech(i) += 0.5*dt*duMech(i); + }); + + atomKK->modified(execution_space, UCOND_MASK); + atomKK->modified(execution_space, UMECH_MASK); */ +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::create_kinetics_data(void) +{ + printf("Inside FixRxKokkos::create_kinetics_data\n"); + + memory->create_kokkos( d_kinetics_data.Arr, h_kinetics_data.Arr, nreactions, "KineticsType::Arr"); + memory->create_kokkos( d_kinetics_data.nArr, h_kinetics_data.nArr, nreactions, "KineticsType::nArr"); + memory->create_kokkos( d_kinetics_data.Ea, h_kinetics_data.Ea, nreactions, "KineticsType::Ea"); + + memory->create_kokkos( d_kinetics_data.stoich, h_kinetics_data.stoich, nreactions, nspecies, "KineticsType::stoich"); + memory->create_kokkos( d_kinetics_data.stoichReactants, h_kinetics_data.stoichReactants, nreactions, nspecies, "KineticsType::stoichReactants"); + memory->create_kokkos( d_kinetics_data.stoichProducts, h_kinetics_data.stoichProducts, nreactions, nspecies, "KineticsType::stoichProducts"); + + for (int i = 0; i < nreactions; ++i) + { + h_kinetics_data.Arr[i] = Arr[i]; + h_kinetics_data.nArr[i] = nArr[i]; + h_kinetics_data.Ea[i] = Ea[i]; + + for (int k = 0; k < nspecies; ++k) + { + h_kinetics_data.stoich(i,k) = stoich[i][k]; + h_kinetics_data.stoichReactants(i,k) = stoichReactants[i][k]; + h_kinetics_data.stoichProducts(i,k) = stoichProducts[i][k]; + } + } + + Kokkos::deep_copy( d_kinetics_data.Arr, h_kinetics_data.Arr ); + Kokkos::deep_copy( d_kinetics_data.nArr, h_kinetics_data.nArr ); + Kokkos::deep_copy( d_kinetics_data.Ea, h_kinetics_data.Ea ); + Kokkos::deep_copy( d_kinetics_data.stoich, h_kinetics_data.stoich ); + Kokkos::deep_copy( d_kinetics_data.stoichReactants, h_kinetics_data.stoichReactants ); + Kokkos::deep_copy( d_kinetics_data.stoichProducts, h_kinetics_data.stoichProducts ); + + update_kinetics_data = false; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::pre_force(int vflag) +{ + printf("Inside FixRxKokkos::pre_force localTempFlag= %d\n", localTempFlag); + + if (update_kinetics_data) + create_kinetics_data(); + + TimerType timer_start = getTimeStamp(); + + int nlocal = atom->nlocal; + int nghost = atom->nghost; + int newton_pair = force->newton_pair; + + const bool setToZero = false; // don't set the forward rates to zero. + + if(localTempFlag){ + int count = nlocal + (newton_pair ? nghost : 0); + dpdThetaLocal = new double[count]; + memset(dpdThetaLocal, 0, sizeof(double)*count); + computeLocalTemperature(); + } + + TimerType timer_localTemperature = getTimeStamp(); + + // Total counters from the ODE solvers. + CounterType Counters; + + // Set data needed in the operators. + int *mask = atom->mask; + double *dpdTheta = atom->dpdTheta; + + const double boltz = force->boltz; + const double t_stop = update->dt; // DPD time-step and integration length. + + /*if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency == 1) + { + memory->create( diagnosticCounterPerODE[StepSum], nlocal, "FixRX::diagnosticCounterPerODE"); + memory->create( diagnosticCounterPerODE[FuncSum], nlocal, "FixRX::diagnosticCounterPerODE"); + }*/ + + Kokkos::parallel_reduce( nlocal, LAMMPS_LAMBDA(int i, CounterType &counter) + { + if (mask[i] & groupbit) + { + double *y = new double[8*nspecies]; + double *rwork = y + nspecies; + + UserRHSData userData; + userData.kFor = new double[nreactions]; + userData.rxnRateLaw = new double[nreactions]; + + CounterType counter_i; + + const double theta = (localTempFlag) ? dpdThetaLocal[i] : dpdTheta[i]; + + //Compute the reaction rate constants + for (int irxn = 0; irxn < nreactions; irxn++) + { + if (setToZero) + userData.kFor[irxn] = 0.0; + else + { + userData.kFor[irxn] = d_kinetics_data.Arr(irxn) * + pow(theta, d_kinetics_data.nArr(irxn)) * + exp(-d_kinetics_data.Ea(irxn) / boltz / theta); + //userData.kFor[irxn] = Arr[irxn]*pow(theta,nArr[irxn])*exp(-Ea[irxn]/boltz/theta); + } + } + + // Update ConcOld and initialize the ODE solution vector y[]. + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + const double tmp = atom->dvector[ispecies][i]; + atom->dvector[ispecies+nspecies][i] = tmp; + y[ispecies] = tmp; + } + + // Solver the ODE system. + if (odeIntegrationFlag == ODE_LAMMPS_RK4) + { + rk4(t_stop, y, rwork, &userData); + + /* This should be a duplicate of the copy-out in the + rkf45 block but for the MY_EPSILON v. -1e-10 (literal) + difference. Can these be merged? */ + + // Store the solution back in atom->dvector. + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + if(y[ispecies] < -MY_EPSILON) + error->one(FLERR,"Computed concentration in RK4 solver is < -10*DBL_EPSILON"); + else if(y[ispecies] < MY_EPSILON) + y[ispecies] = 0.0; + atom->dvector[ispecies][i] = y[ispecies]; + } + } + else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) + { + rkf45(nspecies, t_stop, y, rwork, &userData, counter_i); + + // Store the solution back in atom->dvector. + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + if(y[ispecies] < -1.0e-10) + error->one(FLERR,"Computed concentration in RKF45 solver is < -1.0e-10"); + else if(y[ispecies] < MY_EPSILON) + y[ispecies] = 0.0; + atom->dvector[ispecies][i] = y[ispecies]; + } + + //if (diagnosticFrequency == 1 && diagnosticCounterPerODE[StepSum] != NULL) + if (diagnosticCounterPerODE[StepSum] != NULL) + { + diagnosticCounterPerODE[StepSum][i] = counter_i.nSteps; + diagnosticCounterPerODE[FuncSum][i] = counter_i.nFuncs; + } + } + + delete [] y; + delete [] userData.kFor; + delete [] userData.rxnRateLaw; + + counter += counter_i; + } // if + } // parallel_for lambda-body + + , Counters // reduction value + ); + + TimerType timer_ODE = getTimeStamp(); + + // Communicate the updated momenta and velocities to all nodes + comm->forward_comm_fix(this); + if(localTempFlag) delete [] dpdThetaLocal; + + TimerType timer_stop = getTimeStamp(); + + double time_ODE = getElapsedTime(timer_localTemperature, timer_ODE); + + printf("me= %d kokkos total= %g temp= %g ode= %g comm= %g nlocal= %d nfc= %d %d\n", comm->me, + getElapsedTime(timer_start, timer_stop), + getElapsedTime(timer_start, timer_localTemperature), + getElapsedTime(timer_localTemperature, timer_ODE), + getElapsedTime(timer_ODE, timer_stop), nlocal, Counters.nFuncs, Counters.nSteps); + + // Warn the user if a failure was detected in the ODE solver. + if (Counters.nFails > 0){ + char sbuf[128]; + sprintf(sbuf,"in FixRX::pre_force, ODE solver failed for %d atoms.", Counters.nFails); + error->warning(FLERR, sbuf); + } + +/* + // Compute and report ODE diagnostics, if requested. + if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency != 0){ + // Update the counters. + diagnosticCounter[StepSum] += nSteps; + diagnosticCounter[FuncSum] += nFuncs; + diagnosticCounter[TimeSum] += time_ODE; + diagnosticCounter[AtomSum] += nlocal; + diagnosticCounter[numDiagnosticCounters-1] ++; + + if ( (diagnosticFrequency > 0 && + ((update->ntimestep - update->firststep) % diagnosticFrequency) == 0) || + (diagnosticFrequency < 0 && update->ntimestep == update->laststep) ) + this->odeDiagnostics(); + + for (int i = 0; i < numDiagnosticCounters; ++i) + if (diagnosticCounterPerODE[i]) + memory->destroy( diagnosticCounterPerODE[i] ); + } */ +} + +namespace LAMMPS_NS { +template class FixRxKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixRxKokkos; +#endif +} diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h new file mode 100644 index 0000000000..4a41644257 --- /dev/null +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------- + 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(rx/kk,FixRxKokkos) +FixStyle(rx/kk/device,FixRxKokkos) +FixStyle(rx/kk/host,FixRxKokkos) + +#else + +#ifndef LMP_FIX_RX_KOKKOS_H +#define LMP_FIX_RX_KOKKOS_H + +#include "fix_rx.h" +#include "pair_dpd_fdt_energy_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +struct TagFixRxKokkosSolver +{ + enum { setToZero = (_setToZero == true) ? 1 : 0 }; +}; + +template +class FixRxKokkos : public FixRX { + public: + FixRxKokkos(class LAMMPS *, int, char **); + virtual ~FixRxKokkos(); + virtual void init(); + virtual void pre_force(int); + + //template + // KOKKOS_INLINE_FUNCTION + //void operator()(SolverTag, const int&) const; + + struct CounterType + { + int nSteps, nIters, nFuncs, nFails; + + CounterType() : nSteps(0), nIters(0), nFuncs(0), nFails(0) {}; + + KOKKOS_INLINE_FUNCTION + CounterType& operator+=(const CounterType &rhs) + { + nSteps += rhs.nSteps; + nIters += rhs.nIters; + nFuncs += rhs.nFuncs; + nFails += rhs.nFails; + return *this; + } + + KOKKOS_INLINE_FUNCTION + volatile CounterType& operator+=(const volatile CounterType &rhs) volatile + { + nSteps += rhs.nSteps; + nIters += rhs.nIters; + nFuncs += rhs.nFuncs; + nFails += rhs.nFails; + return *this; + } + }; + + protected: + PairDPDfdtEnergyKokkos* pairDPDEKK; + + void solve_reactions(void); + + int rhs(double, const double *, double *, void *) const; + int rhs_dense (double, const double *, double *, void *) const; + int rhs_sparse(double, const double *, double *, void *) const; + + //!< Classic Runge-Kutta 4th-order stepper. + void rk4(const double t_stop, double *y, double *rwork, void *v_params) const; + + //!< Runge-Kutta-Fehlberg ODE Solver. + void rkf45(const int neq, const double t_stop, double *y, double *rwork, void *v_params, CounterType& counter) const; + + //!< Runge-Kutta-Fehlberg ODE stepper function. + void rkf45_step (const int neq, const double h, double y[], double y_out[], + double rwk[], void *) const; + + //!< Initial step size estimation for the Runge-Kutta-Fehlberg ODE solver. + int rkf45_h0 (const int neq, const double t, const double t_stop, + const double hmin, const double hmax, + double& h0, double y[], double rwk[], void *v_params) const; + + template + struct KineticsType + { + typename ArrayTypes::t_float_1d Arr, nArr, Ea; + typename ArrayTypes::t_float_2d stoich, stoichReactants, stoichProducts; + }; + + //!< Kokkos versions of the kinetics data. + KineticsType h_kinetics_data; + KineticsType d_kinetics_data; + + bool update_kinetics_data; + + void create_kinetics_data(void); + +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ -- GitLab From 41d3903f5a7226ef4b30d3fd6b818123354300d9 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Sun, 22 Jan 2017 22:49:21 -0500 Subject: [PATCH 109/337] Added kokkos-managed parameters for FixRxKokkos. - Added kokkos-managed parameter data for the kinetics equations. - Removed dependencies in rhs() on atom and domain objects. TODO: 1. Switch to using KOKKOS data for dvector. 2. Port ComputeLocalTemp(...) to Kokkos (needs pairing algorithm). --- src/KOKKOS/fix_rx_kokkos.cpp | 135 +++++++++++++++++++++++------------ src/KOKKOS/fix_rx_kokkos.h | 13 +++- 2 files changed, 101 insertions(+), 47 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index f8a10dff93..b989d6b2d4 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -475,8 +475,8 @@ int FixRxKokkos::rhs_dense(double t, const double *y, double *dydt, double *rxnRateLaw = userData->rxnRateLaw; double *kFor = userData->kFor; - const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; - const int nspecies = atom->nspecies_dpd; + //const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + //const int nspecies = atom->nspecies_dpd; for(int ispecies=0; ispecies::rhs_dense(double t, const double *y, double *dydt, for(int ispecies=0; ispecies::rhs_dense(double t, const double *y, double *dydt, for(int ispecies=0; ispecies::rhs_sparse(double t, const double *y, double *dydt, { UserRHSData *userData = (UserRHSData *) v_params; - const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + //const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; #define kFor (userData->kFor) #define kRev (NULL) @@ -519,11 +519,11 @@ int FixRxKokkos::rhs_sparse(double t, const double *y, double *dydt, #define conc (dydt) #define maxReactants (this->sparseKinetics_maxReactants) #define maxSpecies (this->sparseKinetics_maxSpecies) - #define nuk (this->sparseKinetics_nuk) - #define nu (this->sparseKinetics_nu) - #define inu (this->sparseKinetics_inu) - #define isIntegral(idx) (SparseKinetics_enableIntegralReactions \ - && this->sparseKinetics_isIntegralReaction[idx]) + #define nuk (this->d_kineticsData.nuk) + #define nu (this->d_kineticsData.nu) + #define inu (this->d_kineticsData.inu) + #define isIntegral(idx) ( SparseKinetics_enableIntegralReactions \ + && this->d_kineticsData.isIntegral(idx) ) for (int k = 0; k < nspecies; ++k) conc[k] = y[k] / VDPD; @@ -533,20 +533,20 @@ int FixRxKokkos::rhs_sparse(double t, const double *y, double *dydt, { double rxnRateLawForward; if (isIntegral(i)){ - rxnRateLawForward = kFor[i] * powint( conc[ nuk[i][0] ], inu[i][0]); + rxnRateLawForward = kFor[i] * powint( conc[ nuk(i,0) ], inu(i,0) ); for (int kk = 1; kk < maxReactants; ++kk){ - const int k = nuk[i][kk]; + const int k = nuk(i,kk); if (k == SparseKinetics_invalidIndex) break; //if (k != SparseKinetics_invalidIndex) - rxnRateLawForward *= powint( conc[k], inu[i][kk] ); + rxnRateLawForward *= powint( conc[k], inu(i,kk) ); } } else { - rxnRateLawForward = kFor[i] * pow( conc[ nuk[i][0] ], nu[i][0]); + rxnRateLawForward = kFor[i] * pow( conc[ nuk(i,0) ], nu(i,0) ); for (int kk = 1; kk < maxReactants; ++kk){ - const int k = nuk[i][kk]; + const int k = nuk(i,kk); if (k == SparseKinetics_invalidIndex) break; //if (k != SparseKinetics_invalidIndex) - rxnRateLawForward *= pow( conc[k], nu[i][kk] ); + rxnRateLawForward *= pow( conc[k], nu(i,kk) ); } } @@ -560,21 +560,21 @@ int FixRxKokkos::rhs_sparse(double t, const double *y, double *dydt, for (int i = 0; i < nreactions; ++i){ // Reactants ... - dydt[ nuk[i][0] ] -= nu[i][0] * rxnRateLaw[i]; + dydt[ nuk(i,0) ] -= nu(i,0) * rxnRateLaw[i]; for (int kk = 1; kk < maxReactants; ++kk){ - const int k = nuk[i][kk]; + const int k = nuk(i,kk); if (k == SparseKinetics_invalidIndex) break; //if (k != SparseKinetics_invalidIndex) - dydt[k] -= nu[i][kk] * rxnRateLaw[i]; + dydt[k] -= nu(i,kk) * rxnRateLaw[i]; } // Products ... - dydt[ nuk[i][maxReactants] ] += nu[i][maxReactants] * rxnRateLaw[i]; + dydt[ nuk(i,maxReactants) ] += nu(i,maxReactants) * rxnRateLaw[i]; for (int kk = maxReactants+1; kk < maxSpecies; ++kk){ - const int k = nuk[i][kk]; + const int k = nuk(i,kk); if (k == SparseKinetics_invalidIndex) break; //if (k != SparseKinetics_invalidIndex) - dydt[k] += nu[i][kk] * rxnRateLaw[i]; + dydt[k] += nu(i,kk) * rxnRateLaw[i]; } } @@ -674,34 +674,76 @@ void FixRxKokkos::create_kinetics_data(void) { printf("Inside FixRxKokkos::create_kinetics_data\n"); - memory->create_kokkos( d_kinetics_data.Arr, h_kinetics_data.Arr, nreactions, "KineticsType::Arr"); - memory->create_kokkos( d_kinetics_data.nArr, h_kinetics_data.nArr, nreactions, "KineticsType::nArr"); - memory->create_kokkos( d_kinetics_data.Ea, h_kinetics_data.Ea, nreactions, "KineticsType::Ea"); - - memory->create_kokkos( d_kinetics_data.stoich, h_kinetics_data.stoich, nreactions, nspecies, "KineticsType::stoich"); - memory->create_kokkos( d_kinetics_data.stoichReactants, h_kinetics_data.stoichReactants, nreactions, nspecies, "KineticsType::stoichReactants"); - memory->create_kokkos( d_kinetics_data.stoichProducts, h_kinetics_data.stoichProducts, nreactions, nspecies, "KineticsType::stoichProducts"); + memory->create_kokkos( d_kineticsData.Arr, h_kineticsData.Arr, nreactions, "KineticsType::Arr"); + memory->create_kokkos( d_kineticsData.nArr, h_kineticsData.nArr, nreactions, "KineticsType::nArr"); + memory->create_kokkos( d_kineticsData.Ea, h_kineticsData.Ea, nreactions, "KineticsType::Ea"); for (int i = 0; i < nreactions; ++i) { - h_kinetics_data.Arr[i] = Arr[i]; - h_kinetics_data.nArr[i] = nArr[i]; - h_kinetics_data.Ea[i] = Ea[i]; + h_kineticsData.Arr[i] = Arr[i]; + h_kineticsData.nArr[i] = nArr[i]; + h_kineticsData.Ea[i] = Ea[i]; + } + + Kokkos::deep_copy( d_kineticsData.Arr, h_kineticsData.Arr ); + Kokkos::deep_copy( d_kineticsData.nArr, h_kineticsData.nArr ); + Kokkos::deep_copy( d_kineticsData.Ea, h_kineticsData.Ea ); + + if (useSparseKinetics) + { - for (int k = 0; k < nspecies; ++k) + memory->create_kokkos( d_kineticsData.nu , h_kineticsData.nu , nreactions, sparseKinetics_maxSpecies, "KineticsType::nu"); + memory->create_kokkos( d_kineticsData.nuk, h_kineticsData.nuk, nreactions, sparseKinetics_maxSpecies, "KineticsType::nuk"); + + for (int i = 0; i < nreactions; ++i) + for (int k = 0; k < sparseKinetics_maxSpecies; ++k) + { + h_kineticsData.nu (i,k) = sparseKinetics_nu [i][k]; + h_kineticsData.nuk(i,k) = sparseKinetics_nuk[i][k]; + } + + Kokkos::deep_copy( d_kineticsData.nu, h_kineticsData.nu ); + Kokkos::deep_copy( d_kineticsData.nuk, h_kineticsData.nuk ); + + if (SparseKinetics_enableIntegralReactions) { - h_kinetics_data.stoich(i,k) = stoich[i][k]; - h_kinetics_data.stoichReactants(i,k) = stoichReactants[i][k]; - h_kinetics_data.stoichProducts(i,k) = stoichProducts[i][k]; + memory->create_kokkos( d_kineticsData.inu, h_kineticsData.inu, nreactions, sparseKinetics_maxSpecies, "KineticsType::inu"); + memory->create_kokkos( d_kineticsData.isIntegral, h_kineticsData.isIntegral, nreactions, "KineticsType::isIntegral"); + + for (int i = 0; i < nreactions; ++i) + { + h_kineticsData.isIntegral(i) = sparseKinetics_isIntegralReaction[i]; + + for (int k = 0; k < sparseKinetics_maxSpecies; ++k) + h_kineticsData.inu(i,k) = sparseKinetics_inu[i][k]; + } + + Kokkos::deep_copy( d_kineticsData.inu, h_kineticsData.inu ); + Kokkos::deep_copy( d_kineticsData.isIntegral, h_kineticsData.isIntegral ); } } - Kokkos::deep_copy( d_kinetics_data.Arr, h_kinetics_data.Arr ); - Kokkos::deep_copy( d_kinetics_data.nArr, h_kinetics_data.nArr ); - Kokkos::deep_copy( d_kinetics_data.Ea, h_kinetics_data.Ea ); - Kokkos::deep_copy( d_kinetics_data.stoich, h_kinetics_data.stoich ); - Kokkos::deep_copy( d_kinetics_data.stoichReactants, h_kinetics_data.stoichReactants ); - Kokkos::deep_copy( d_kinetics_data.stoichProducts, h_kinetics_data.stoichProducts ); + //else + //{ + + // Dense option + memory->create_kokkos( d_kineticsData.stoich, h_kineticsData.stoich, nreactions, nspecies, "KineticsType::stoich"); + memory->create_kokkos( d_kineticsData.stoichReactants, h_kineticsData.stoichReactants, nreactions, nspecies, "KineticsType::stoichReactants"); + memory->create_kokkos( d_kineticsData.stoichProducts, h_kineticsData.stoichProducts, nreactions, nspecies, "KineticsType::stoichProducts"); + + for (int i = 0; i < nreactions; ++i) + for (int k = 0; k < nspecies; ++k) + { + h_kineticsData.stoich(i,k) = stoich[i][k]; + h_kineticsData.stoichReactants(i,k) = stoichReactants[i][k]; + h_kineticsData.stoichProducts(i,k) = stoichProducts[i][k]; + } + + Kokkos::deep_copy( d_kineticsData.stoich, h_kineticsData.stoich ); + Kokkos::deep_copy( d_kineticsData.stoichReactants, h_kineticsData.stoichReactants ); + Kokkos::deep_copy( d_kineticsData.stoichProducts, h_kineticsData.stoichProducts ); + + //} update_kinetics_data = false; } @@ -743,6 +785,9 @@ void FixRxKokkos::pre_force(int vflag) const double boltz = force->boltz; const double t_stop = update->dt; // DPD time-step and integration length. + // Average DPD volume. Used in the RHS function. + this->VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + /*if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency == 1) { memory->create( diagnosticCounterPerODE[StepSum], nlocal, "FixRX::diagnosticCounterPerODE"); @@ -771,9 +816,9 @@ void FixRxKokkos::pre_force(int vflag) userData.kFor[irxn] = 0.0; else { - userData.kFor[irxn] = d_kinetics_data.Arr(irxn) * - pow(theta, d_kinetics_data.nArr(irxn)) * - exp(-d_kinetics_data.Ea(irxn) / boltz / theta); + userData.kFor[irxn] = d_kineticsData.Arr(irxn) * + pow(theta, d_kineticsData.nArr(irxn)) * + exp(-d_kineticsData.Ea(irxn) / boltz / theta); //userData.kFor[irxn] = Arr[irxn]*pow(theta,nArr[irxn])*exp(-Ea[irxn]/boltz/theta); } } diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index 4a41644257..95872c67e9 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -75,6 +75,7 @@ class FixRxKokkos : public FixRX { protected: PairDPDfdtEnergyKokkos* pairDPDEKK; + double VDPD; void solve_reactions(void); @@ -100,13 +101,21 @@ class FixRxKokkos : public FixRX { template struct KineticsType { + // Arrhenius rate coefficients. typename ArrayTypes::t_float_1d Arr, nArr, Ea; + + // Dense versions. typename ArrayTypes::t_float_2d stoich, stoichReactants, stoichProducts; + + // Sparse versions. + typename ArrayTypes::t_int_2d nuk, inu; + typename ArrayTypes::t_float_2d nu; + typename ArrayTypes::t_int_1d isIntegral; }; //!< Kokkos versions of the kinetics data. - KineticsType h_kinetics_data; - KineticsType d_kinetics_data; + KineticsType h_kineticsData; + KineticsType d_kineticsData; bool update_kinetics_data; -- GitLab From 70fa9189a8c8d74ac1dc09084c15260aaa204612 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Tue, 24 Jan 2017 21:49:16 -0500 Subject: [PATCH 110/337] Updated KOKKOS installer and updated USER-DPD FixRx to match KOKKOS version. - Updated the KOKKOS installer to include the fix_rx_kokkos.[cpp,h]. - Updated the USER-DPD version of fix_rx.[cpp,h] to sync with the Kokkos version. Solves child->parent class dependencies. --- src/KOKKOS/Install.sh | 2 + src/USER-DPD/fix_rx.cpp | 244 +++++++++++++++++++++++++++++----------- src/USER-DPD/fix_rx.h | 23 ++-- 3 files changed, 193 insertions(+), 76 deletions(-) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index f53f8624c4..db4fcf8ddc 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -103,6 +103,8 @@ action fix_wall_reflect_kokkos.cpp action fix_wall_reflect_kokkos.h action fix_dpd_energy_kokkos.cpp fix_dpd_energy.cpp action fix_dpd_energy_kokkos.h fix_dpd_energy.h +action fix_rx_kokkos.cpp fix_rx.cpp +action fix_rx_kokkos.h fix_rx.h action gridcomm_kokkos.cpp gridcomm.cpp action gridcomm_kokkos.h gridcomm.h action improper_harmonic_kokkos.cpp improper_harmonic.cpp diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index a55ae78110..28321dbecf 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -673,7 +673,17 @@ void FixRX::setup_pre_force(int vflag) if(restartFlag){ restartFlag = 0; - } else { + } + else + { + int ode_counter[4] = {0}; + + UserRHSData userData; + userData.kFor = new double[nreactions]; + userData.rxnRateLaw = new double[nreactions]; + + double *rwork = new double[8*nspecies]; + if(localTempFlag){ int count = nlocal + (newton_pair ? nghost : 0); dpdThetaLocal = new double[count]; @@ -686,22 +696,27 @@ void FixRX::setup_pre_force(int vflag) tmp = atom->dvector[ispecies][id]; atom->dvector[ispecies+nspecies][id] = tmp; } + for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit){ // Set the reaction rate constants to zero: no reactions occur at step 0 for(int irxn=0;irxnforward_comm_fix(this); if(localTempFlag) delete [] dpdThetaLocal; + + delete [] userData.kFor; + delete [] userData.rxnRateLaw; + delete [] rwork; } } @@ -709,12 +724,13 @@ void FixRX::setup_pre_force(int vflag) void FixRX::pre_force(int vflag) { + TimerType timer_start = getTimeStamp(); + int nlocal = atom->nlocal; int nghost = atom->nghost; int *mask = atom->mask; double *dpdTheta = atom->dpdTheta; int newton_pair = force->newton_pair; - double theta; if(localTempFlag){ int count = nlocal + (newton_pair ? nghost : 0); @@ -726,7 +742,10 @@ void FixRX::pre_force(int vflag) TimerType timer_localTemperature = getTimeStamp(); // Zero the counters for the ODE solvers. - this->nSteps = this->nIters = this->nFuncs = this->nFails = 0; + int nSteps = 0; + int nIters = 0; + int nFuncs = 0; + int nFails = 0; if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency == 1) { @@ -734,35 +753,66 @@ void FixRX::pre_force(int vflag) memory->create( diagnosticCounterPerODE[FuncSum], nlocal, "FixRX::diagnosticCounterPerODE"); } - double *rwork = new double[8*nspecies + nreactions]; + #pragma omp parallel \ + reduction(+: nSteps, nIters, nFuncs, nFails ) + { + double *rwork = new double[8*nspecies]; - for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit){ - if (localTempFlag) - theta = dpdThetaLocal[i]; - else - theta = dpdTheta[i]; + UserRHSData userData; + userData.kFor = new double[nreactions]; + userData.rxnRateLaw = new double[nreactions]; - //Compute the reaction rate constants - for (int irxn = 0; irxn < nreactions; irxn++) - kR[irxn] = Arr[irxn]*pow(theta,nArr[irxn])*exp(-Ea[irxn]/force->boltz/theta); + int ode_counter[4] = { 0 }; - if (odeIntegrationFlag == ODE_LAMMPS_RK4) - rk4(i,rwork); - else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) - rkf45(i,rwork); + #pragma omp for schedule(runtime) + for (int i = 0; i < nlocal; i++) + { + if (mask[i] & groupbit) + { + double theta; + if (localTempFlag) + theta = dpdThetaLocal[i]; + else + theta = dpdTheta[i]; + + //Compute the reaction rate constants + for (int irxn = 0; irxn < nreactions; irxn++) + userData.kFor[irxn] = Arr[irxn]*pow(theta,nArr[irxn])*exp(-Ea[irxn]/force->boltz/theta); + + if (odeIntegrationFlag == ODE_LAMMPS_RK4) + rk4(i, rwork, &userData); + else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) + rkf45(i, rwork, &userData, ode_counter); + } } - TimerType timer_ODE = getTimeStamp(); + nSteps += ode_counter[0]; + nIters += ode_counter[1]; + nFuncs += ode_counter[2]; + nFails += ode_counter[3]; - delete [] rwork; + delete [] rwork; + delete [] userData.kFor; + delete [] userData.rxnRateLaw; + + } // end parallel region + + TimerType timer_ODE = getTimeStamp(); // Communicate the updated momenta and velocities to all nodes comm->forward_comm_fix(this); if(localTempFlag) delete [] dpdThetaLocal; + TimerType timer_stop = getTimeStamp(); + double time_ODE = getElapsedTime(timer_localTemperature, timer_ODE); + printf("me= %d total= %g temp= %g ode= %g comm= %g nlocal= %d nfc= %d %d\n", comm->me, + getElapsedTime(timer_start, timer_stop), + getElapsedTime(timer_start, timer_localTemperature), + getElapsedTime(timer_localTemperature, timer_ODE), + getElapsedTime(timer_ODE, timer_stop), nlocal, nFuncs, nSteps); + // Warn the user if a failure was detected in the ODE solver. if (nFails > 0){ char sbuf[128]; @@ -958,21 +1008,15 @@ void FixRX::setupParams() /* ---------------------------------------------------------------------- */ -void FixRX::rk4(int id, double *rwork) +void FixRX::rk4(int id, double *rwork, void* v_params) { - double *k1 = NULL; - if (rwork == NULL) - k1 = new double[6*nspecies + nreactions]; - else - k1 = rwork; + double *k1 = rwork; double *k2 = k1 + nspecies; double *k3 = k2 + nspecies; double *k4 = k3 + nspecies; double *y = k4 + nspecies; double *yp = y + nspecies; - double *dummyArray = yp + nspecies; // Passed to the rhs function. - const int numSteps = minSteps; const double h = update->dt / double(numSteps); @@ -989,25 +1033,25 @@ void FixRX::rk4(int id, double *rwork) for (int step = 0; step < numSteps; step++) { // k1 - rhs(0.0,y,k1,dummyArray); + rhs(0.0,y,k1,v_params); // k2 for (int ispecies = 0; ispecies < nspecies; ispecies++) yp[ispecies] = y[ispecies] + 0.5*h*k1[ispecies]; - rhs(0.0,yp,k2,dummyArray); + rhs(0.0,yp,k2,v_params); // k3 for (int ispecies = 0; ispecies < nspecies; ispecies++) yp[ispecies] = y[ispecies] + 0.5*h*k2[ispecies]; - rhs(0.0,yp,k3,dummyArray); + rhs(0.0,yp,k3,v_params); // k4 for (int ispecies = 0; ispecies < nspecies; ispecies++) yp[ispecies] = y[ispecies] + h*k3[ispecies]; - rhs(0.0,yp,k4,dummyArray); + rhs(0.0,yp,k4,v_params); for (int ispecies = 0; ispecies < nspecies; ispecies++) y[ispecies] += h*(k1[ispecies]/6.0 + k2[ispecies]/3.0 + k3[ispecies]/3.0 + k4[ispecies]/6.0); @@ -1022,9 +1066,6 @@ void FixRX::rk4(int id, double *rwork) y[ispecies] = 0.0; atom->dvector[ispecies][id] = y[ispecies]; } - - if (rwork == NULL) - delete [] k1; } /* ---------------------------------------------------------------------- */ @@ -1274,6 +1315,78 @@ void FixRX::odeDiagnostics(void) double max_per_proc[numCounters]; double min_per_proc[numCounters]; + if(1) + { + static bool firstStep = true; + + static TimerType oldTimeStamp (-1); + + TimerType now = getTimeStamp(); + + // Query the fix database and look for rx_weight for the balance fix. + int type_flag = -1; + int rx_weight_index = atom->find_custom( "rx_weight", /*0:int, 1:float*/ type_flag ); + + // Compute the average # of neighbors. + double averageNumNeighbors = 0; + { + const int inum = pairDPDE->list->inum; + const int* ilist = pairDPDE->list->ilist; + const int* numneigh = pairDPDE->list->numneigh; + + for (int ii = 0; ii < inum; ++ii) + { + const int i = ilist[ii]; + averageNumNeighbors += numneigh[i]; + } + + averageNumNeighbors /= inum; + } + + printf("me= %d nst= %g nfc= %g time= %g nlocal= %g lmpnst= %g weight_idx= %d 1st= %d aveNeigh= %g\n", comm->me, this->diagnosticCounter[0], this->diagnosticCounter[1], this->diagnosticCounter[2], this->diagnosticCounter[3], this->diagnosticCounter[4], rx_weight_index, firstStep, averageNumNeighbors); + + if (rx_weight_index != -1 && !firstStep && 0) + { + double *rx_weight = atom->dvector[rx_weight_index]; + + const int nlocal = atom->nlocal; + const int *mask = atom->mask; + + if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency == 1) + { + const double total_time = getElapsedTime( oldTimeStamp, now ); + const double fixrx_time = this->diagnosticCounter[TimeSum]; + const double time_ratio = fixrx_time / total_time; + + double tsum = 0.0; + double tmin = 100000, tmax = 0; + for (int i = 0; i < nlocal; ++i) + if (mask[i] & groupbit) + { + double nfunc_ratio = double( diagnosticCounterPerODE[FuncSum][i] ) / diagnosticCounter[FuncSum]; + rx_weight[i] = nfunc_ratio * fixrx_time + (total_time - fixrx_time) / nlocal; + tmin = fmin( tmin, rx_weight[i] ); + tmax = fmax( tmax, rx_weight[i] ); + tsum += rx_weight[i]; + //rx_weight[i] = (double) diagnosticCounterPerODE[FuncSum][i]; + } + + printf("me= %d total= %g fixrx= %g ratio= %g tsum= %g %g %g %g\n", comm->me, total_time, fixrx_time, time_ratio, tsum, (total_time - fixrx_time) / nlocal, tmin, tmax); + } + else + { + error->warning(FLERR, "Dynamic load balancing enabled but per-atom weights not available."); + + for (int i = 0; i < nlocal; ++i) + if (mask[i] & groupbit) + rx_weight[i] = 1.0; + } + } + + firstStep = false; + oldTimeStamp = now; + } + // Compute counters per dpd time-step. for (int i = 0; i < numCounters; ++i){ my_vals[i] = this->diagnosticCounter[i] / nTimes; @@ -1347,7 +1460,7 @@ void FixRX::odeDiagnostics(void) if (screen) fprintf(screen,"%s\n", smesg); \ if (logfile) fprintf(logfile,"%s\n", smesg); } - sprintf(smesg, "FixRX::ODE Diagnostics: # of steps |# of rhs evals| run-time (sec)"); + sprintf(smesg, "FixRX::ODE Diagnostics: # of iters |# of rhs evals| run-time (sec) | # atoms"); print_mesg(smesg); sprintf(smesg, " AVG per ODE : %-12.5g | %-12.5g | %-12.5g", avg_per_atom[0], avg_per_atom[1], avg_per_atom[2]); @@ -1369,7 +1482,7 @@ void FixRX::odeDiagnostics(void) print_mesg(smesg); } - sprintf(smesg, " AVG per Proc : %-12.5g | %-12.5g | %-12.5g", avg_per_proc[0], avg_per_proc[1], avg_per_proc[2]); + sprintf(smesg, " AVG per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", avg_per_proc[StepSum], avg_per_proc[FuncSum], avg_per_proc[TimeSum], avg_per_proc[AtomSum]); print_mesg(smesg); if (comm->nprocs > 1){ @@ -1377,13 +1490,13 @@ void FixRX::odeDiagnostics(void) for (int i = 0; i < numCounters; ++i) rms_per_proc[i] = sqrt( sum_sq[i] / comm->nprocs ); - sprintf(smesg, " RMS per Proc : %-12.5g | %-12.5g | %-12.5g", rms_per_proc[0], rms_per_proc[1], rms_per_proc[2]); + sprintf(smesg, " RMS per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", rms_per_proc[0], rms_per_proc[1], rms_per_proc[2], rms_per_proc[AtomSum]); print_mesg(smesg); - sprintf(smesg, " MAX per Proc : %-12.5g | %-12.5g | %-12.5g", max_per_proc[0], max_per_proc[1], max_per_proc[2]); + sprintf(smesg, " MAX per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", max_per_proc[0], max_per_proc[1], max_per_proc[2], max_per_proc[AtomSum]); print_mesg(smesg); - sprintf(smesg, " MIN per Proc : %-12.5g | %-12.5g | %-12.5g", min_per_proc[0], min_per_proc[1], min_per_proc[2]); + sprintf(smesg, " MIN per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", min_per_proc[0], min_per_proc[1], min_per_proc[2], min_per_proc[AtomSum]); print_mesg(smesg); } @@ -1403,7 +1516,7 @@ void FixRX::odeDiagnostics(void) return; } -void FixRX::rkf45(int id, double *rwork) +void FixRX::rkf45(int id, double *rwork, void *v_param, int ode_counter[]) { // Rounding coefficient. const double uround = DBL_EPSILON; @@ -1412,12 +1525,7 @@ void FixRX::rkf45(int id, double *rwork) const double adaption_limit = 4.0; //double *y = new double[8*nspecies + nreactions]; - double *y = NULL; - if (rwork == NULL) - y = new double[8*nspecies + nreactions]; - else - y = rwork; - double *rhstmp = y + 8*nspecies; + double *y = rwork; const int neq = nspecies; @@ -1454,7 +1562,7 @@ void FixRX::rkf45(int id, double *rwork) if (h < h_min){ //fprintf(stderr,"hin not implemented yet\n"); //exit(-1); - nfe = rkf45_h0 (neq, t, t_stop, h_min, h_max, h, y, y + neq, rhstmp); + nfe = rkf45_h0 (neq, t, t_stop, h_min, h_max, h, y, y + neq, v_param); } //printf("t= %e t_stop= %e h= %e\n", t, t_stop, h); @@ -1465,7 +1573,7 @@ void FixRX::rkf45(int id, double *rwork) double *eout = yout + neq; // Take a trial step. - rkf45_step (neq, h, y, yout, eout, rhstmp); + rkf45_step (neq, h, y, yout, eout, v_param); // Estimate the solution error. // ... weighted 2-norm of the error. @@ -1513,16 +1621,17 @@ void FixRX::rkf45(int id, double *rwork) if (maxIters && nit > maxIters){ //fprintf(stderr,"atom[%d] took too many iterations in rkf45 %d %e %e\n", id, nit, t, t_stop); - nFails ++; + //nFails ++; + ode_counter[3] ++; break; // We should set an error here so that the solution is not used! } } // end while - nSteps += nst; - nIters += nit; - nFuncs += nfe; + ode_counter[0] += nst; + ode_counter[1] += nit; + ode_counter[2] += nfe; //if (diagnosticFrequency == 1 && diagnosticCounterPerODE[StepSum] != NULL) if (diagnosticCounterPerODE[StepSum] != NULL){ @@ -1539,9 +1648,6 @@ void FixRX::rkf45(int id, double *rwork) y[ispecies] = 0.0; atom->dvector[ispecies][id] = y[ispecies]; } - - if (rwork == NULL) - delete [] y; } /* ---------------------------------------------------------------------- */ @@ -1559,21 +1665,23 @@ int FixRX::rhs(double t, const double *y, double *dydt, void *params) int FixRX::rhs_dense(double t, const double *y, double *dydt, void *params) { - double rxnRateLawForward; - double *rxnRateLaw = (double *) params; - double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; - double concentration; - int nspecies = atom->nspecies_dpd; + UserRHSData *userData = (UserRHSData *) params; + + double *rxnRateLaw = userData->rxnRateLaw; + double *kFor = userData->kFor; + + const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + const int nspecies = atom->nspecies_dpd; for(int ispecies=0; ispeciesxprd * domain->yprd * domain->zprd / atom->natoms; - #define kFor (this->kR) + #define kFor (userData->kFor) #define kRev (NULL) - #define rxnRateLaw (_rxnRateLaw) + #define rxnRateLaw (userData->rxnRateLaw) #define conc (dydt) #define maxReactants (this->sparseKinetics_maxReactants) #define maxSpecies (this->sparseKinetics_maxSpecies) diff --git a/src/USER-DPD/fix_rx.h b/src/USER-DPD/fix_rx.h index c35c9afabf..5e226aec73 100644 --- a/src/USER-DPD/fix_rx.h +++ b/src/USER-DPD/fix_rx.h @@ -66,19 +66,19 @@ class FixRX : public Fix { double *kR; //!< Classic Runge-Kutta 4th-order stepper. - void rk4(int,double*); + void rk4(int, double*, void*); //!< Runge-Kutta-Fehlberg ODE Solver. - void rkf45(int,double*); + void rkf45(int, double*, void*, int ode_counter[]); //!< Runge-Kutta-Fehlberg ODE stepper function. void rkf45_step (const int neq, const double h, double y[], double y_out[], - double rwk[], void* v_param); + double rwk[], void *); //!< Initial step size estimation for the Runge-Kutta-Fehlberg ODE solver. int rkf45_h0 (const int neq, const double t, const double t_stop, const double hmin, const double hmax, - double& h0, double y[], double rwk[], void* v_params); + double& h0, double y[], double rwk[], void *v_params); class PairDPDfdtEnergy *pairDPDE; double *dpdThetaLocal; @@ -90,6 +90,13 @@ class FixRX : public Fix { int rhs(double, const double *, double *, void *); int rhs_dense (double, const double *, double *, void *); + // User-defined data container needed in rhs. + struct UserRHSData + { + double *kFor; + double *rxnRateLaw; + }; + // Sparse stoichiometric matrix storage format and methods. bool useSparseKinetics; //SparseKinetics sparseKinetics; @@ -116,10 +123,10 @@ class FixRX : public Fix { double relTol, absTol; //!< Relative and absolute tolerances for the ODE solver(s). // ODE Diagnostics - int nSteps; //!< # of accepted steps taken over all atoms. - int nIters; //!< # of attemped steps for all atoms. - int nFuncs; //!< # of RHS evaluations for all atoms. - int nFails; //!< # of ODE systems that failed (for some reason). + //int nSteps; //!< # of accepted steps taken over all atoms. + //int nIters; //!< # of attemped steps for all atoms. + //int nFuncs; //!< # of RHS evaluations for all atoms. + //int nFails; //!< # of ODE systems that failed (for some reason). int diagnosticFrequency; //!< Frequency (LMP steps) that run-time diagnostics will be printed to the log. enum { numDiagnosticCounters = 5 }; -- GitLab From 2ea900df007e59905720503adbc4955c5c45b574 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Sat, 28 Jan 2017 10:41:16 -0500 Subject: [PATCH 111/337] Updated FixRxKokkos to use kokkos-managed data objects. - Switched to use kokkos dvector, mask, and dpdTheta views from atomKK. --- src/KOKKOS/fix_rx_kokkos.cpp | 54 ++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index b989d6b2d4..19da344db8 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -760,9 +760,9 @@ void FixRxKokkos::pre_force(int vflag) TimerType timer_start = getTimeStamp(); - int nlocal = atom->nlocal; - int nghost = atom->nghost; - int newton_pair = force->newton_pair; + const int nlocal = atom->nlocal; + const int nghost = atom->nghost; + const int newton_pair = force->newton_pair; const bool setToZero = false; // don't set the forward rates to zero. @@ -776,12 +776,23 @@ void FixRxKokkos::pre_force(int vflag) TimerType timer_localTemperature = getTimeStamp(); // Total counters from the ODE solvers. - CounterType Counters; + CounterType TotalCounters; // Set data needed in the operators. - int *mask = atom->mask; - double *dpdTheta = atom->dpdTheta; + // ... + //int *mask = atom->mask; + //double *dpdTheta = atom->dpdTheta; + + // Local references to the atomKK objects. + typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); + typename ArrayTypes::t_float_2d d_dvector = atomKK->k_dvector.view(); + typename ArrayTypes::t_int_1d d_mask = atomKK->k_mask.view(); + + // Get up-to-date data. + atomKK->sync( execution_space, MASK_MASK | DVECTOR_MASK | DPDTHETA_MASK ); + + // Set some constants outside of the parallel_for const double boltz = force->boltz; const double t_stop = update->dt; // DPD time-step and integration length. @@ -796,7 +807,7 @@ void FixRxKokkos::pre_force(int vflag) Kokkos::parallel_reduce( nlocal, LAMMPS_LAMBDA(int i, CounterType &counter) { - if (mask[i] & groupbit) + if (d_mask(i) & groupbit) { double *y = new double[8*nspecies]; double *rwork = y + nspecies; @@ -807,7 +818,7 @@ void FixRxKokkos::pre_force(int vflag) CounterType counter_i; - const double theta = (localTempFlag) ? dpdThetaLocal[i] : dpdTheta[i]; + const double theta = (localTempFlag) ? dpdThetaLocal[i] : d_dpdTheta(i); //Compute the reaction rate constants for (int irxn = 0; irxn < nreactions; irxn++) @@ -819,14 +830,13 @@ void FixRxKokkos::pre_force(int vflag) userData.kFor[irxn] = d_kineticsData.Arr(irxn) * pow(theta, d_kineticsData.nArr(irxn)) * exp(-d_kineticsData.Ea(irxn) / boltz / theta); - //userData.kFor[irxn] = Arr[irxn]*pow(theta,nArr[irxn])*exp(-Ea[irxn]/boltz/theta); } } // Update ConcOld and initialize the ODE solution vector y[]. for (int ispecies = 0; ispecies < nspecies; ispecies++){ - const double tmp = atom->dvector[ispecies][i]; - atom->dvector[ispecies+nspecies][i] = tmp; + const double tmp = d_dvector(ispecies, i); + d_dvector(ispecies+nspecies, i) = tmp; y[ispecies] = tmp; } @@ -845,7 +855,7 @@ void FixRxKokkos::pre_force(int vflag) error->one(FLERR,"Computed concentration in RK4 solver is < -10*DBL_EPSILON"); else if(y[ispecies] < MY_EPSILON) y[ispecies] = 0.0; - atom->dvector[ispecies][i] = y[ispecies]; + d_dvector(ispecies,i) = y[ispecies]; } } else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) @@ -858,7 +868,7 @@ void FixRxKokkos::pre_force(int vflag) error->one(FLERR,"Computed concentration in RKF45 solver is < -1.0e-10"); else if(y[ispecies] < MY_EPSILON) y[ispecies] = 0.0; - atom->dvector[ispecies][i] = y[ispecies]; + d_dvector(ispecies,i) = y[ispecies]; } //if (diagnosticFrequency == 1 && diagnosticCounterPerODE[StepSum] != NULL) @@ -877,13 +887,21 @@ void FixRxKokkos::pre_force(int vflag) } // if } // parallel_for lambda-body - , Counters // reduction value + , TotalCounters // reduction value ); TimerType timer_ODE = getTimeStamp(); - // Communicate the updated momenta and velocities to all nodes + // Signal that dvector has been modified on this execution space. + atomKK->modified( execution_space, DVECTOR_MASK ); + + // Communicate the updated species data to all nodes + atomKK->sync ( Host, DVECTOR_MASK ); + comm->forward_comm_fix(this); + + atomKK->modified ( Host, DVECTOR_MASK ); + if(localTempFlag) delete [] dpdThetaLocal; TimerType timer_stop = getTimeStamp(); @@ -894,12 +912,12 @@ void FixRxKokkos::pre_force(int vflag) getElapsedTime(timer_start, timer_stop), getElapsedTime(timer_start, timer_localTemperature), getElapsedTime(timer_localTemperature, timer_ODE), - getElapsedTime(timer_ODE, timer_stop), nlocal, Counters.nFuncs, Counters.nSteps); + getElapsedTime(timer_ODE, timer_stop), nlocal, TotalCounters.nFuncs, TotalCounters.nSteps); // Warn the user if a failure was detected in the ODE solver. - if (Counters.nFails > 0){ + if (TotalCounters.nFails > 0){ char sbuf[128]; - sprintf(sbuf,"in FixRX::pre_force, ODE solver failed for %d atoms.", Counters.nFails); + sprintf(sbuf,"in FixRX::pre_force, ODE solver failed for %d atoms.", TotalCounters.nFails); error->warning(FLERR, sbuf); } -- GitLab From 843f3a9192564bc863d739636453598f046a8555 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Sat, 28 Jan 2017 12:02:49 -0500 Subject: [PATCH 112/337] Updates to FixRxKokkos ... - Added templated computeLocalTemp<>() to FixRxKokkos but still using the original host data pointers. - Updated the copy-back to dvector operation to be the same with RK4 and RKF45 per discussion with J. Larentzos. TODO: - Add kokkos data for computeLocalTemp and parallel_for loop. --- src/KOKKOS/fix_rx_kokkos.cpp | 163 ++++++++++++++++++++++++++++------- src/KOKKOS/fix_rx_kokkos.h | 3 + 2 files changed, 136 insertions(+), 30 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 19da344db8..45af816810 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -39,6 +39,10 @@ using namespace MathSpecial; #define SparseKinetics_enableIntegralReactions (true) #define SparseKinetics_invalidIndex (-1) +// From fix_rx.cpp ... this should be lifted into fix_rx.h or fix_rx_kokkos.h? +enum{NONE,HARMONIC}; +enum{LUCY}; + namespace /* anonymous */ { @@ -770,7 +774,19 @@ void FixRxKokkos::pre_force(int vflag) int count = nlocal + (newton_pair ? nghost : 0); dpdThetaLocal = new double[count]; memset(dpdThetaLocal, 0, sizeof(double)*count); - computeLocalTemperature(); + //FixRx::computeLocalTemperature(); + + // Are there is no other options than wtFlag = (0)LUCY and localTempFlag = NONE : HARMONIC? + if (localTempFlag == HARMONIC) + if (newton_pair) + computeLocalTemperature (); + else + computeLocalTemperature (); + else + if (newton_pair) + computeLocalTemperature (); + else + computeLocalTemperature (); } TimerType timer_localTemperature = getTimeStamp(); @@ -834,7 +850,8 @@ void FixRxKokkos::pre_force(int vflag) } // Update ConcOld and initialize the ODE solution vector y[]. - for (int ispecies = 0; ispecies < nspecies; ispecies++){ + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { const double tmp = d_dvector(ispecies, i); d_dvector(ispecies+nspecies, i) = tmp; y[ispecies] = tmp; @@ -844,50 +861,41 @@ void FixRxKokkos::pre_force(int vflag) if (odeIntegrationFlag == ODE_LAMMPS_RK4) { rk4(t_stop, y, rwork, &userData); - - /* This should be a duplicate of the copy-out in the - rkf45 block but for the MY_EPSILON v. -1e-10 (literal) - difference. Can these be merged? */ - - // Store the solution back in atom->dvector. - for (int ispecies = 0; ispecies < nspecies; ispecies++){ - if(y[ispecies] < -MY_EPSILON) - error->one(FLERR,"Computed concentration in RK4 solver is < -10*DBL_EPSILON"); - else if(y[ispecies] < MY_EPSILON) - y[ispecies] = 0.0; - d_dvector(ispecies,i) = y[ispecies]; - } } else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) { rkf45(nspecies, t_stop, y, rwork, &userData, counter_i); - // Store the solution back in atom->dvector. - for (int ispecies = 0; ispecies < nspecies; ispecies++){ - if(y[ispecies] < -1.0e-10) - error->one(FLERR,"Computed concentration in RKF45 solver is < -1.0e-10"); - else if(y[ispecies] < MY_EPSILON) - y[ispecies] = 0.0; - d_dvector(ispecies,i) = y[ispecies]; - } - //if (diagnosticFrequency == 1 && diagnosticCounterPerODE[StepSum] != NULL) - if (diagnosticCounterPerODE[StepSum] != NULL) - { - diagnosticCounterPerODE[StepSum][i] = counter_i.nSteps; - diagnosticCounterPerODE[FuncSum][i] = counter_i.nFuncs; - } + //if (diagnosticCounterPerODE[StepSum] != NULL) + //{ + // diagnosticCounterPerODE[StepSum][i] = counter_i.nSteps; + // diagnosticCounterPerODE[FuncSum][i] = counter_i.nFuncs; + //} + } + + // Store the solution back in dvector. + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { + if (y[ispecies] < -MY_EPSILON) + error->one(FLERR,"Computed concentration in RK solver is < -10*DBL_EPSILON"); + else if (y[ispecies] < MY_EPSILON) + y[ispecies] = 0.0; + + d_dvector(ispecies,i) = y[ispecies]; } delete [] y; delete [] userData.kFor; delete [] userData.rxnRateLaw; + // Update the iteration statistics counter. Is this unique for each iteration? counter += counter_i; + } // if } // parallel_for lambda-body - , TotalCounters // reduction value + , TotalCounters // reduction value for all iterations. ); TimerType timer_ODE = getTimeStamp(); @@ -942,6 +950,101 @@ void FixRxKokkos::pre_force(int vflag) } */ } +/* ---------------------------------------------------------------------- */ + +template + template +void FixRxKokkos::computeLocalTemperature() +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz; + double rsq; + int *ilist,*jlist,*numneigh,**firstneigh; + + double **x = atom->x; + int *type = atom->type; + int nlocal = atom->nlocal; + int nghost = atom->nghost; + //int newton_pair = force->newton_pair; + + // local temperature variables + double wij=0.0; + double *dpdTheta = atom->dpdTheta; + + // Initialize the local temperature weight array + int sumWeightsCt = nlocal + (IS_NEWTON_PAIR ? nghost : 0); + sumWeights = new double[sumWeightsCt]; + memset(sumWeights, 0, sizeof(double)*sumWeightsCt); + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < pairDPDE->cutsq[itype][jtype]) { + double rcut = sqrt(pairDPDE->cutsq[itype][jtype]); + double rij = sqrt(rsq); + double ratio = rij/rcut; + + // Lucy's Weight Function + if (WT_FLAG == LUCY) + { + wij = (1.0+3.0*ratio) * (1.0-ratio)*(1.0-ratio)*(1.0-ratio); + dpdThetaLocal[i] += wij/dpdTheta[j]; + if (IS_NEWTON_PAIR || j < nlocal) + dpdThetaLocal[j] += wij/dpdTheta[i]; + } + + sumWeights[i] += wij; + if (IS_NEWTON_PAIR || j < nlocal) + sumWeights[j] += wij; + } + } + } + if (IS_NEWTON_PAIR) comm->reverse_comm_fix(this); + + // self-interaction for local temperature + for (i = 0; i < nlocal; i++){ + + // Lucy Weight Function + if (WT_FLAG == LUCY) + { + wij = 1.0; + dpdThetaLocal[i] += wij / dpdTheta[i]; + } + sumWeights[i] += wij; + + // Normalized local temperature + dpdThetaLocal[i] = dpdThetaLocal[i] / sumWeights[i]; + + if (LOCAL_TEMP_FLAG == HARMONIC) + dpdThetaLocal[i] = 1.0 / dpdThetaLocal[i]; + + } + + delete [] sumWeights; +} + namespace LAMMPS_NS { template class FixRxKokkos; #ifdef KOKKOS_HAVE_CUDA diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index 95872c67e9..ec9a8fa976 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -121,6 +121,9 @@ class FixRxKokkos : public FixRX { void create_kinetics_data(void); + template + void computeLocalTemperature(); + }; } -- GitLab From acba25c3831249f54353f1a0a76b63f42881da6f Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Sat, 28 Jan 2017 15:58:21 -0500 Subject: [PATCH 113/337] Added kokkos datatypes to FixRxKokkos::computeLocalTemperature(...) Added kokkos dual-view datatypes used in computeLocalTemperature and pre_force (e.g., dpdThetaLocal) but still using the original host pointers for the pack/unpack operations. TODO: - The Kokkos neighbor list is not working. Need to request a Kokkos neighbor list in ::init(). Then, replace objects like list->ilist[] with k_list->d_ilist(). - Add another template parameter for HALFTHREAD and create (automatic) atomic view of dpdThetaLocal and sumWeights. - Add modify/sync comments and replace the host-only pointers in the pack/unpack methods. --- src/KOKKOS/fix_rx_kokkos.cpp | 226 +++++++++++++++++++++++++---------- src/KOKKOS/fix_rx_kokkos.h | 6 +- 2 files changed, 169 insertions(+), 63 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 45af816810..491b32e01d 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -95,6 +95,15 @@ void FixRxKokkos::init() /* ---------------------------------------------------------------------- */ +//template +//void FixRXKokkos::init_list(int, class NeighList* ptr) +//{ +// printf("Inside FixRxKokkos::init_list\n"); +// this->list = ptr; +//} + +/* ---------------------------------------------------------------------- */ + template void FixRxKokkos::rk4(const double t_stop, double *y, double *rwork, void* v_params) const { @@ -770,12 +779,17 @@ void FixRxKokkos::pre_force(int vflag) const bool setToZero = false; // don't set the forward rates to zero. - if(localTempFlag){ - int count = nlocal + (newton_pair ? nghost : 0); - dpdThetaLocal = new double[count]; - memset(dpdThetaLocal, 0, sizeof(double)*count); + if (localTempFlag) + { + const int count = nlocal + (newton_pair ? nghost : 0); + + //dpdThetaLocal = new double[count]; + //memset(dpdThetaLocal, 0, sizeof(double)*count); //FixRx::computeLocalTemperature(); + memory->create_kokkos (k_dpdThetaLocal, dpdThetaLocal, count, "FixRxKokkos::dpdThetaLocal"); + d_dpdThetaLocal = k_dpdThetaLocal.d_view; + // Are there is no other options than wtFlag = (0)LUCY and localTempFlag = NONE : HARMONIC? if (localTempFlag == HARMONIC) if (newton_pair) @@ -802,8 +816,8 @@ void FixRxKokkos::pre_force(int vflag) // Local references to the atomKK objects. typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); - typename ArrayTypes::t_float_2d d_dvector = atomKK->k_dvector.view(); - typename ArrayTypes::t_int_1d d_mask = atomKK->k_mask.view(); + typename ArrayTypes::t_float_2d d_dvector = atomKK->k_dvector.view(); + typename ArrayTypes::t_int_1d d_mask = atomKK->k_mask.view(); // Get up-to-date data. atomKK->sync( execution_space, MASK_MASK | DVECTOR_MASK | DPDTHETA_MASK ); @@ -834,7 +848,8 @@ void FixRxKokkos::pre_force(int vflag) CounterType counter_i; - const double theta = (localTempFlag) ? dpdThetaLocal[i] : d_dpdTheta(i); + //const double theta = (localTempFlag) ? dpdThetaLocal[i] : d_dpdTheta(i); + const double theta = (localTempFlag) ? d_dpdThetaLocal(i) : d_dpdTheta(i); //Compute the reaction rate constants for (int irxn = 0; irxn < nreactions; irxn++) @@ -910,7 +925,11 @@ void FixRxKokkos::pre_force(int vflag) atomKK->modified ( Host, DVECTOR_MASK ); - if(localTempFlag) delete [] dpdThetaLocal; + if (localTempFlag) + { + //delete [] dpdThetaLocal; + memory->destroy_kokkos(k_dpdThetaLocal, dpdThetaLocal); + } TimerType timer_stop = getTimeStamp(); @@ -953,96 +972,179 @@ void FixRxKokkos::pre_force(int vflag) /* ---------------------------------------------------------------------- */ template - template + template void FixRxKokkos::computeLocalTemperature() { - int i,j,ii,jj,inum,jnum,itype,jtype; - double xtmp,ytmp,ztmp,delx,dely,delz; - double rsq; - int *ilist,*jlist,*numneigh,**firstneigh; + printf("Inside FixRxKokkos::computeLocalTemperature: %d %d %d %d\n", WT_FLAG, LOCAL_TEMP_FLAG, NEWTON_PAIR, (int)lmp->kokkos->neighflag); + + //int inum,jnum,itype,jtype; + //double xtmp,ytmp,ztmp,delx,dely,delz; + //double rsq; + //int *ilist,*jlist,*numneigh,**firstneigh; - double **x = atom->x; - int *type = atom->type; - int nlocal = atom->nlocal; - int nghost = atom->nghost; - //int newton_pair = force->newton_pair; + //double **x = atom->x; + //int *type = atom->type; + //double *dpdTheta = atom->dpdTheta; + + typename ArrayTypes::t_x_array_randomread d_x = atomKK->k_x.view(); + typename ArrayTypes::t_int_1d_randomread d_type = atomKK->k_type.view(); + typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); + + atomKK->sync(execution_space, X_MASK | TYPE_MASK | DPDTHETA_MASK ); + + const int nlocal = atom->nlocal; + const int nghost = atom->nghost; + //const int newton_pair = force->newton_pair; // local temperature variables - double wij=0.0; - double *dpdTheta = atom->dpdTheta; + //double wij=0.0; + + // Pull from pairDPDE. The pairDPDEKK objects are producted so recreate here for now. + //pairDPDEKK->k_cutsq.template sync(); + //typename ArrayTypes::t_ffloat_2d d_cutsq = pairDPDEKK->k_cutsq.template view::tdual_ffloat_2d k_cutsq; + typename ArrayTypes::t_ffloat_2d d_cutsq; + double **h_cutsq; + + { + const int ntypes = atom->ntypes; + + memory->create_kokkos (k_cutsq, h_cutsq, ntypes+1, ntypes+1, "pair:cutsq"); + d_cutsq = k_cutsq.template view(); + + for (int i = 1; i <= ntypes; ++i) + for (int j = i; j <= ntypes; ++j) + { + k_cutsq.h_view(i,j) = pairDPDE->cutsq[i][j]; + k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j); + } + + k_cutsq.template modify(); + k_cutsq.template sync(); + } // Initialize the local temperature weight array - int sumWeightsCt = nlocal + (IS_NEWTON_PAIR ? nghost : 0); - sumWeights = new double[sumWeightsCt]; - memset(sumWeights, 0, sizeof(double)*sumWeightsCt); + int sumWeightsCt = nlocal + (NEWTON_PAIR ? nghost : 0); + //sumWeights = new double[sumWeightsCt]; + //memset(sumWeights, 0, sizeof(double)*sumWeightsCt); + + memory->create_kokkos (k_sumWeights, sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); + d_sumWeights = k_sumWeights.d_view; + + // Initialize the accumulator to zero ... + Kokkos::parallel_for(nlocal, + LAMMPS_LAMBDA(int i) + { + d_sumWeights(i) = 0.0; + } + ); + + const int inum = list->inum; + + // Local list views. (This isn't working!) + //NeighListKokkos* k_list = static_cast*>(list); + //if (not(list->kokkos)) + //{ + // error->one(FLERR,"list is not a Kokkos list\n"); + //} - inum = list->inum; - ilist = list->ilist; - numneigh = list->numneigh; - firstneigh = list->firstneigh; + //typename ArrayTypes::t_neighbors_2d d_neighbors = k_list->d_neighbors; + //typename ArrayTypes::t_int_1d d_ilist = k_list->d_ilist; + //typename ArrayTypes::t_int_1d d_numneigh = k_list->d_numneigh; + + int* ilist = list->ilist; + int* numneigh = list->numneigh; + int** firstneigh = list->firstneigh; // loop over neighbors of my atoms - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - itype = type[i]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; - jtype = type[j]; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq < pairDPDE->cutsq[itype][jtype]) { - double rcut = sqrt(pairDPDE->cutsq[itype][jtype]); + for (int ii = 0; ii < inum; ii++) + { + const int i = ilist[ii]; + //const int i = d_ilist(ii); + + //const double xtmp = x[i][0]; + //const double ytmp = x[i][1]; + //const double ztmp = x[i][2]; + //const int itype = type[i]; + const double xtmp = d_x(i,0); + const double ytmp = d_x(i,1); + const double ztmp = d_x(i,2); + const int itype = d_type(i); + + int *jlist = firstneigh[i]; + const int jnum = numneigh[i]; + //const int jnum = d_numneigh(i); + + for (int jj = 0; jj < jnum; jj++) + { + const int j = (jlist[jj] & NEIGHMASK); + //const int j = (d_neighbors(i,jj) & NEIGHMASK); + //const int jtype = type[j]; + const int jtype = d_type(j); + + //const double delx = xtmp - x[j][0]; + //const double dely = ytmp - x[j][1]; + //const double delz = ztmp - x[j][2]; + const double delx = xtmp - d_x(j,0); + const double dely = ytmp - d_x(j,1); + const double delz = ztmp - d_x(j,2); + const double rsq = delx*delx + dely*dely + delz*delz; + + const double cutsq_ij = d_cutsq(itype,jtype); + + if (rsq < cutsq_ij) + { + const double rcut = sqrt( cutsq_ij ); double rij = sqrt(rsq); double ratio = rij/rcut; + double wij = 0.0; + // Lucy's Weight Function if (WT_FLAG == LUCY) { wij = (1.0+3.0*ratio) * (1.0-ratio)*(1.0-ratio)*(1.0-ratio); - dpdThetaLocal[i] += wij/dpdTheta[j]; - if (IS_NEWTON_PAIR || j < nlocal) - dpdThetaLocal[j] += wij/dpdTheta[i]; + d_dpdThetaLocal(i) += wij / d_dpdTheta(j); + if (NEWTON_PAIR || j < nlocal) + d_dpdThetaLocal(j) += wij / d_dpdTheta(i); } - sumWeights[i] += wij; - if (IS_NEWTON_PAIR || j < nlocal) - sumWeights[j] += wij; + d_sumWeights(i) += wij; + if (NEWTON_PAIR || j < nlocal) + d_sumWeights(j) += wij; } } } - if (IS_NEWTON_PAIR) comm->reverse_comm_fix(this); + + if (NEWTON_PAIR) comm->reverse_comm_fix(this); // self-interaction for local temperature - for (i = 0; i < nlocal; i++){ + for (int i = 0; i < nlocal; i++) + { + double wij = 0.0; // Lucy Weight Function if (WT_FLAG == LUCY) { wij = 1.0; - dpdThetaLocal[i] += wij / dpdTheta[i]; + d_dpdThetaLocal(i) += wij / d_dpdTheta(i); } - sumWeights[i] += wij; + d_sumWeights(i) += wij; // Normalized local temperature - dpdThetaLocal[i] = dpdThetaLocal[i] / sumWeights[i]; + d_dpdThetaLocal(i) = d_dpdThetaLocal(i) / d_sumWeights(i); if (LOCAL_TEMP_FLAG == HARMONIC) - dpdThetaLocal[i] = 1.0 / dpdThetaLocal[i]; - + d_dpdThetaLocal(i) = 1.0 / d_dpdThetaLocal(i); } - delete [] sumWeights; + // Clean up the local kokkos data. + memory->destroy_kokkos(k_cutsq, h_cutsq); + memory->destroy_kokkos(k_sumWeights, sumWeights); + + //delete [] sumWeights; } namespace LAMMPS_NS { diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index ec9a8fa976..9d60f2b99e 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -121,7 +121,11 @@ class FixRxKokkos : public FixRX { void create_kinetics_data(void); - template + // Need a dual-view and device-view for dpdThetaLocal and sumWeights since they're used in several callbacks. + DAT::tdual_efloat_1d k_dpdThetaLocal, k_sumWeights; + typename ArrayTypes::t_efloat_1d d_dpdThetaLocal, d_sumWeights; + + template void computeLocalTemperature(); }; -- GitLab From 0d57a1d831e6a73e55491adb982c44175be4c76f Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Fri, 3 Feb 2017 16:09:06 -0500 Subject: [PATCH 114/337] Added setup_pre_force, pack/unpack methods to FixRxKokkos. - Added a kokkos version of setup_pre_force that only sets dvector and then communicates that. - Converted all for loops to parallel_for's in computeLocalTemperator() and setup_pre_force. - Added pack/unpack forward/reverse methods with Kokkos host views. TODO: - The Kokkos neighbor list is not working. Need to request a Kokkos neighbor list in ::init(). Then, replace objects like list->ilist[] with k_list->d_ilist(). --- src/KOKKOS/fix_rx_kokkos.cpp | 357 ++++++++++++++++++++++++++--------- src/KOKKOS/fix_rx_kokkos.h | 12 +- 2 files changed, 279 insertions(+), 90 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 491b32e01d..167f2713ea 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -77,6 +77,18 @@ FixRxKokkos::~FixRxKokkos() /* ---------------------------------------------------------------------- */ +template +void FixRxKokkos::post_constructor() +{ + // Run the parents and then reset one value. + FixRX::post_constructor(); + + // Need a copy of this + this->my_restartFlag = modify->fix[modify->nfix-1]->restart_reset; +} + +/* ---------------------------------------------------------------------- */ + template void FixRxKokkos::init() { @@ -763,6 +775,51 @@ void FixRxKokkos::create_kinetics_data(void) /* ---------------------------------------------------------------------- */ +template +void FixRxKokkos::setup_pre_force(int vflag) +{ + printf("Inside FixRxKokkos::setup_pre_force restartFlag= %d\n", my_restartFlag); + + if (my_restartFlag) + my_restartFlag = 0; + else + { + const int nlocal = atom->nlocal; + //const int nghost = atom->nghost; + //const int *mask = atom->mask; + //const int newton_pair = force->newton_pair; + + typename ArrayTypes::t_float_2d d_dvector = atomKK->k_dvector.view(); + + // Get up-to-date data. + atomKK->sync( execution_space, DVECTOR_MASK ); + + // The only net effect from fix_rx.cpp is to set dvector[nspecies:2*nspecies] + // since the reactions are set to zero for step 0. + Kokkos::parallel_for ( nlocal, + LAMMPS_LAMBDA(const int i) + { + for (int ispecies = 0; ispecies < nspecies; ispecies++) + d_dvector(ispecies+nspecies,i) = d_dvector(ispecies,i); + } + ); + + // Signal that dvector has been modified on this execution space. + atomKK->modified( execution_space, DVECTOR_MASK ); + + // Communicate the updated species data to all nodes + atomKK->sync ( Host, DVECTOR_MASK ); + + // Communicate the dvector to all nodes + comm->forward_comm_fix(this); + + // Flag that dvector was updated on the host in the comm. + atomKK->modified ( Host, DVECTOR_MASK ); + } +} + +/* ---------------------------------------------------------------------- */ + template void FixRxKokkos::pre_force(int vflag) { @@ -789,18 +846,31 @@ void FixRxKokkos::pre_force(int vflag) memory->create_kokkos (k_dpdThetaLocal, dpdThetaLocal, count, "FixRxKokkos::dpdThetaLocal"); d_dpdThetaLocal = k_dpdThetaLocal.d_view; + h_dpdThetaLocal = k_dpdThetaLocal.h_view; + + const int neighflag = lmp->kokkos->neighflag; + +#define _template_switch(_wtflag, _localTempFlag) { \ + if (neighflag == HALF) \ + if (newton_pair) \ + computeLocalTemperature<_wtflag, _localTempFlag, true , HALF> (); \ + else \ + computeLocalTemperature<_wtflag, _localTempFlag, false, HALF> (); \ + else if (neighflag == HALFTHREAD) \ + if (newton_pair) \ + computeLocalTemperature<_wtflag, _localTempFlag, true , HALFTHREAD> (); \ + else \ + computeLocalTemperature<_wtflag, _localTempFlag, false, HALFTHREAD> (); \ + } // Are there is no other options than wtFlag = (0)LUCY and localTempFlag = NONE : HARMONIC? - if (localTempFlag == HARMONIC) - if (newton_pair) - computeLocalTemperature (); - else - computeLocalTemperature (); - else - if (newton_pair) - computeLocalTemperature (); - else - computeLocalTemperature (); + if (localTempFlag == HARMONIC) { + _template_switch(LUCY, HARMONIC) + } + else { + _template_switch(LUCY, NONE) + } +#undef _template_switch } TimerType timer_localTemperature = getTimeStamp(); @@ -972,10 +1042,9 @@ void FixRxKokkos::pre_force(int vflag) /* ---------------------------------------------------------------------- */ template - template + template void FixRxKokkos::computeLocalTemperature() { - printf("Inside FixRxKokkos::computeLocalTemperature: %d %d %d %d\n", WT_FLAG, LOCAL_TEMP_FLAG, NEWTON_PAIR, (int)lmp->kokkos->neighflag); //int inum,jnum,itype,jtype; //double xtmp,ytmp,ztmp,delx,dely,delz; @@ -996,10 +1065,12 @@ void FixRxKokkos::computeLocalTemperature() const int nghost = atom->nghost; //const int newton_pair = force->newton_pair; + printf("Inside FixRxKokkos::computeLocalTemperature: %d %d %d %d %d\n", WT_FLAG, LOCAL_TEMP_FLAG, NEWTON_PAIR, (int)lmp->kokkos->neighflag, NEIGHFLAG, nlocal, nghost); + // local temperature variables //double wij=0.0; - // Pull from pairDPDE. The pairDPDEKK objects are producted so recreate here for now. + // Pull from pairDPDE. The pairDPDEKK objects are protected so recreate here for now. //pairDPDEKK->k_cutsq.template sync(); //typename ArrayTypes::t_ffloat_2d d_cutsq = pairDPDEKK->k_cutsq.template view::computeLocalTemperature() memory->create_kokkos (k_sumWeights, sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); d_sumWeights = k_sumWeights.d_view; + h_sumWeights = k_sumWeights.h_view; // Initialize the accumulator to zero ... - Kokkos::parallel_for(nlocal, - LAMMPS_LAMBDA(int i) - { - d_sumWeights(i) = 0.0; - } - ); + Kokkos::parallel_for (sumWeightsCt, + LAMMPS_LAMBDA(const int i) + { + d_sumWeights(i) = 0.0; + } + ); const int inum = list->inum; @@ -1059,86 +1131,106 @@ void FixRxKokkos::computeLocalTemperature() int** firstneigh = list->firstneigh; // loop over neighbors of my atoms - for (int ii = 0; ii < inum; ii++) - { - const int i = ilist[ii]; - //const int i = d_ilist(ii); + Kokkos::parallel_for ( inum, + LAMMPS_LAMBDA(const int ii) + { + // Create an atomic view of sumWeights and dpdThetaLocal. Only needed + // for Half/thread scenarios. + typedef Kokkos::View< E_FLOAT*, typename DAT::t_efloat_1d::array_layout, DeviceType, Kokkos::MemoryTraits< AtomicF< NEIGHFLAG >::value> > AtomicViewType; + + AtomicViewType a_dpdThetaLocal = d_dpdThetaLocal; + AtomicViewType a_sumWeights = d_sumWeights; + + // Local scalar accumulators. + double i_dpdThetaLocal = 0.0; + double i_sumWeights = 0.0; + + const int i = ilist[ii]; + //const int i = d_ilist(ii); - //const double xtmp = x[i][0]; - //const double ytmp = x[i][1]; - //const double ztmp = x[i][2]; - //const int itype = type[i]; - const double xtmp = d_x(i,0); - const double ytmp = d_x(i,1); - const double ztmp = d_x(i,2); - const int itype = d_type(i); - - int *jlist = firstneigh[i]; - const int jnum = numneigh[i]; - //const int jnum = d_numneigh(i); - - for (int jj = 0; jj < jnum; jj++) - { - const int j = (jlist[jj] & NEIGHMASK); - //const int j = (d_neighbors(i,jj) & NEIGHMASK); - //const int jtype = type[j]; - const int jtype = d_type(j); - - //const double delx = xtmp - x[j][0]; - //const double dely = ytmp - x[j][1]; - //const double delz = ztmp - x[j][2]; - const double delx = xtmp - d_x(j,0); - const double dely = ytmp - d_x(j,1); - const double delz = ztmp - d_x(j,2); - const double rsq = delx*delx + dely*dely + delz*delz; - - const double cutsq_ij = d_cutsq(itype,jtype); - - if (rsq < cutsq_ij) - { - const double rcut = sqrt( cutsq_ij ); - double rij = sqrt(rsq); - double ratio = rij/rcut; - - double wij = 0.0; - - // Lucy's Weight Function - if (WT_FLAG == LUCY) - { - wij = (1.0+3.0*ratio) * (1.0-ratio)*(1.0-ratio)*(1.0-ratio); - d_dpdThetaLocal(i) += wij / d_dpdTheta(j); - if (NEWTON_PAIR || j < nlocal) - d_dpdThetaLocal(j) += wij / d_dpdTheta(i); + const double xtmp = d_x(i,0); + const double ytmp = d_x(i,1); + const double ztmp = d_x(i,2); + const int itype = d_type(i); + + int *jlist = firstneigh[i]; + const int jnum = numneigh[i]; + //const int jnum = d_numneigh(i); + + for (int jj = 0; jj < jnum; jj++) + { + const int j = (jlist[jj] & NEIGHMASK); + //const int j = (d_neighbors(i,jj) & NEIGHMASK); + const int jtype = d_type(j); + + const double delx = xtmp - d_x(j,0); + const double dely = ytmp - d_x(j,1); + const double delz = ztmp - d_x(j,2); + const double rsq = delx*delx + dely*dely + delz*delz; + + const double cutsq_ij = d_cutsq(itype,jtype); + + if (rsq < cutsq_ij) + { + const double rcut = sqrt( cutsq_ij ); + double rij = sqrt(rsq); + double ratio = rij/rcut; + + double wij = 0.0; + + // Lucy's Weight Function + if (WT_FLAG == LUCY) + { + wij = (1.0+3.0*ratio) * (1.0-ratio)*(1.0-ratio)*(1.0-ratio); + i_dpdThetaLocal += wij / d_dpdTheta(j); + if (NEWTON_PAIR || j < nlocal) + a_dpdThetaLocal(j) += wij / d_dpdTheta(i); + } + + i_sumWeights += wij; + if (NEWTON_PAIR || j < nlocal) + a_sumWeights(j) += wij; + } + } + + // Update, don't assign, the array value (because another iteration may have hit it). + a_dpdThetaLocal(i) += i_dpdThetaLocal; + a_sumWeights(i) += i_sumWeights; } + ); - d_sumWeights(i) += wij; - if (NEWTON_PAIR || j < nlocal) - d_sumWeights(j) += wij; - } - } - } + // Signal that dpdThetaLocal and sumWeights have been modified. + k_dpdThetaLocal.template modify(); + k_sumWeights. template modify(); + // Communicate the sum dpdTheta and the weights on the host. if (NEWTON_PAIR) comm->reverse_comm_fix(this); + // Update the device view in case they got changed. + k_dpdThetaLocal.template sync(); + k_sumWeights. template sync(); + // self-interaction for local temperature - for (int i = 0; i < nlocal; i++) - { - double wij = 0.0; + Kokkos::parallel_for ( nlocal, + LAMMPS_LAMBDA(const int i) + { + double wij = 0.0; - // Lucy Weight Function - if (WT_FLAG == LUCY) - { - wij = 1.0; - d_dpdThetaLocal(i) += wij / d_dpdTheta(i); - } - d_sumWeights(i) += wij; + // Lucy Weight Function + if (WT_FLAG == LUCY) + { + wij = 1.0; + d_dpdThetaLocal(i) += wij / d_dpdTheta(i); + } + d_sumWeights(i) += wij; - // Normalized local temperature - d_dpdThetaLocal(i) = d_dpdThetaLocal(i) / d_sumWeights(i); + // Normalized local temperature + d_dpdThetaLocal(i) = d_dpdThetaLocal(i) / d_sumWeights(i); - if (LOCAL_TEMP_FLAG == HARMONIC) - d_dpdThetaLocal(i) = 1.0 / d_dpdThetaLocal(i); - } + if (LOCAL_TEMP_FLAG == HARMONIC) + d_dpdThetaLocal(i) = 1.0 / d_dpdThetaLocal(i); + } + ); // Clean up the local kokkos data. memory->destroy_kokkos(k_cutsq, h_cutsq); @@ -1147,6 +1239,93 @@ void FixRxKokkos::computeLocalTemperature() //delete [] sumWeights; } +/* ---------------------------------------------------------------------- */ + +template +int FixRxKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + //printf("inside FixRxKokkos::pack_forward_comm %d\n", comm->me); + + HAT::t_float_2d h_dvector = atomKK->k_dvector.h_view; + + int m = 0; + for (int ii = 0; ii < n; ii++) { + const int jj = list[ii]; + for(int ispecies = 0; ispecies < nspecies; ispecies++){ + buf[m++] = h_dvector(ispecies,jj); + buf[m++] = h_dvector(ispecies+nspecies,jj); + } + } + + //printf("done with FixRxKokkos::pack_forward_comm %d\n", comm->me); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::unpack_forward_comm(int n, int first, double *buf) +{ + //printf("inside FixRxKokkos::unpack_forward_comm %d\n", comm->me); + + HAT::t_float_2d h_dvector = atomKK->k_dvector.h_view; + + const int last = first + n ; + int m = 0; + for (int ii = first; ii < last; ii++){ + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + h_dvector(ispecies,ii) = buf[m++]; + h_dvector(ispecies+nspecies,ii) = buf[m++]; + } + } + + //printf("done with FixRxKokkos::unpack_forward_comm %d\n", comm->me); +} + +/* ---------------------------------------------------------------------- */ + +template +int FixRxKokkos::pack_reverse_comm(int n, int first, double *buf) +{ + //printf("inside FixRxKokkos::pack_reverse_comm %d %d %d\n", comm->me, first, n); + // Sync the host view. + k_dpdThetaLocal.template sync(); + k_sumWeights. template sync(); + + const int last = first + n; + int m = 0; + for (int i = first; i < last; ++i) + { + buf[m++] = h_dpdThetaLocal(i); + buf[m++] = h_sumWeights(i); + } + //printf("done with FixRxKokkos::pack_reverse_comm %d\n", comm->me); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::unpack_reverse_comm(int n, int *list, double *buf) +{ + // printf("inside FixRxKokkos::unpack_reverse_comm %d\n", comm->me); + int m = 0; + for (int i = 0; i < n; i++) { + const int j = list[i]; + + h_dpdThetaLocal(j) += buf[m++]; + h_sumWeights(j) += buf[m++]; + } + + // Signal that the host view has been modified. + k_dpdThetaLocal.template modify(); + k_sumWeights. template modify(); + + // printf("done with FixRxKokkos::unpack_reverse_comm %d\n", comm->me); +} + namespace LAMMPS_NS { template class FixRxKokkos; #ifdef KOKKOS_HAVE_CUDA diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index 9d60f2b99e..d397d91499 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -40,6 +40,8 @@ class FixRxKokkos : public FixRX { FixRxKokkos(class LAMMPS *, int, char **); virtual ~FixRxKokkos(); virtual void init(); + void post_constructor(); + virtual void setup_pre_force(int); virtual void pre_force(int); //template @@ -124,10 +126,18 @@ class FixRxKokkos : public FixRX { // Need a dual-view and device-view for dpdThetaLocal and sumWeights since they're used in several callbacks. DAT::tdual_efloat_1d k_dpdThetaLocal, k_sumWeights; typename ArrayTypes::t_efloat_1d d_dpdThetaLocal, d_sumWeights; + typename HAT::t_efloat_1d h_dpdThetaLocal, h_sumWeights; - template + template void computeLocalTemperature(); + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + int pack_forward_comm(int , int *, double *, int, int *); + void unpack_forward_comm(int , int , double *); + + private: // replicate a few from FixRX + int my_restartFlag; }; } -- GitLab From f2d005fb8db00fa90a151c2237985a77c7473b2a Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Tue, 7 Feb 2017 16:24:59 -0500 Subject: [PATCH 115/337] Fixed errors in FixRxKokkos kokkos neighbor lists initialization and usage and calls to computeLocalTemperature. - Created request for kokkos neighbor list for fix and switched to that neighbor list datatype in computeLocalTemperature. - Reconfigured pre_force and setup_pre_force to call a common solve_reactions() method to avoid duplicate code. TODO: - Clean-up - Provide per-problem scratch data within kokkos framework (instead of C++ new/delete data). --- src/KOKKOS/fix_rx_kokkos.cpp | 193 ++++++++++++++++++++++++++--------- src/KOKKOS/fix_rx_kokkos.h | 11 +- 2 files changed, 147 insertions(+), 57 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 167f2713ea..1497fea6c1 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -21,6 +21,9 @@ #include "update.h" #include "respa.h" #include "modify.h" +#include "neighbor.h" +#include "neigh_list_kokkos.h" +#include "neigh_request.h" #include "error.h" #include "math_special.h" @@ -95,24 +98,61 @@ void FixRxKokkos::init() printf("Inside FixRxKokkos::init\n"); // Call the parent's version. - FixRX::init(); + //FixRX::init(); + + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1); + if (pairDPDE == NULL) + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy/kk",1); + + if (pairDPDE == NULL) + error->all(FLERR,"Must use pair_style dpd/fdt/energy with fix rx"); pairDPDEKK = dynamic_cast(pairDPDE); if (pairDPDEKK == NULL) error->all(FLERR,"Must use pair_style dpd/fdt/energy/kk with fix rx/kk"); + bool eos_flag = false; + for (int i = 0; i < modify->nfix; i++) + if (strcmp(modify->fix[i]->style,"eos/table/rx") == 0) eos_flag = true; + if(!eos_flag) error->all(FLERR,"fix rx requires fix eos/table/rx to be specified"); + if (update_kinetics_data) create_kinetics_data(); + + // From FixRX::init() + // need a half neighbor list + // built whenever re-neighboring occurs + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; + + // Update the neighbor data for Kokkos. + int neighflag = lmp->kokkos->neighflag; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else { //if (neighflag == HALF || neighflag == HALFTHREAD) + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + } } /* ---------------------------------------------------------------------- */ -//template -//void FixRXKokkos::init_list(int, class NeighList* ptr) -//{ -// printf("Inside FixRxKokkos::init_list\n"); -// this->list = ptr; -//} +template +void FixRxKokkos::init_list(int, class NeighList* ptr) +{ + printf("Inside FixRxKokkos::init_list\n"); + this->list = ptr; +} /* ---------------------------------------------------------------------- */ @@ -663,37 +703,6 @@ void FixRxKokkos::operator()(SolverType, const int &i) const /* ---------------------------------------------------------------------- */ -template -void FixRxKokkos::solve_reactions(void) -{ -/* int nlocal = atom->nlocal; - if (igroup == atom->firstgroup) nlocal = atom->nfirst; - - using AT = ArrayTypes; - - atomKK->sync(execution_space, UCOND_MASK); - typename AT::t_efloat_1d uCond = atomKK->k_uCond.view(); - atomKK->sync(execution_space, UMECH_MASK); - typename AT::t_efloat_1d uMech = atomKK->k_uMech.view(); - - pairDPDEKK->k_duCond.template sync(); - typename AT::t_efloat_1d_const duCond = pairDPDEKK->k_duCond.template view(); - pairDPDEKK->k_duMech.template sync(); - typename AT::t_efloat_1d_const duMech = pairDPDEKK->k_duMech.template view(); - - auto dt = update->dt; - - Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { - uCond(i) += 0.5*dt*duCond(i); - uMech(i) += 0.5*dt*duMech(i); - }); - - atomKK->modified(execution_space, UCOND_MASK); - atomKK->modified(execution_space, UMECH_MASK); */ -} - -/* ---------------------------------------------------------------------- */ - template void FixRxKokkos::create_kinetics_data(void) { @@ -784,6 +793,9 @@ void FixRxKokkos::setup_pre_force(int vflag) my_restartFlag = 0; else { +#if 1 + this->solve_reactions( vflag, false ); +#else const int nlocal = atom->nlocal; //const int nghost = atom->nghost; //const int *mask = atom->mask; @@ -815,6 +827,7 @@ void FixRxKokkos::setup_pre_force(int vflag) // Flag that dvector was updated on the host in the comm. atomKK->modified ( Host, DVECTOR_MASK ); +#endif } } @@ -825,6 +838,15 @@ void FixRxKokkos::pre_force(int vflag) { printf("Inside FixRxKokkos::pre_force localTempFlag= %d\n", localTempFlag); + this->solve_reactions( vflag, true ); +} +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::solve_reactions(const int vflag, const bool isPreForce) +{ + printf("Inside FixRxKokkos::solve_reactions localTempFlag= %d isPreForce= %s\n", localTempFlag, isPreForce ? "True" : "false"); + if (update_kinetics_data) create_kinetics_data(); @@ -834,7 +856,8 @@ void FixRxKokkos::pre_force(int vflag) const int nghost = atom->nghost; const int newton_pair = force->newton_pair; - const bool setToZero = false; // don't set the forward rates to zero. + //const bool setToZero = false; // don't set the forward rates to zero. + const bool setToZero = isPreForce == false; // Set the forward rates to zero if acting as setup_pre_force. if (localTempFlag) { @@ -1115,16 +1138,71 @@ void FixRxKokkos::computeLocalTemperature() const int inum = list->inum; + bool useKokkosLists = false; + // Local list views. (This isn't working!) - //NeighListKokkos* k_list = static_cast*>(list); - //if (not(list->kokkos)) - //{ - // error->one(FLERR,"list is not a Kokkos list\n"); - //} + NeighListKokkos* k_list = static_cast*>(list); + if (not(list->kokkos)) + { + //error->one(FLERR,"list is not a Kokkos list\n"); + printf("list is NOT a Kokkos list\n"); + + int* ilist = list->ilist; + int* numneigh = list->numneigh; + int** firstneigh = list->firstneigh; + printf("inum= %d ilist= %x\n", inum, ilist); + for (int ii = 0; ii < std::min(inum,10); ++ii) + { + const int i = ilist[ii]; + int *jlist = firstneigh[i]; + const int jnum = numneigh[i]; + const int j = (jlist[0] & NEIGHMASK); + printf(" ilist[%d]= %d j= %d jnum= %d\n", ii, i, j, jnum); + } + } + else + { + printf("It's a kokkos list\n"); + + useKokkosLists = true; + + typename ArrayTypes::t_neighbors_2d d_neighbors = k_list->d_neighbors; + typename ArrayTypes::t_int_1d d_ilist = k_list->d_ilist; + typename ArrayTypes::t_int_1d d_numneigh = k_list->d_numneigh; + + static FILE *fp1 = NULL; - //typename ArrayTypes::t_neighbors_2d d_neighbors = k_list->d_neighbors; - //typename ArrayTypes::t_int_1d d_ilist = k_list->d_ilist; - //typename ArrayTypes::t_int_1d d_numneigh = k_list->d_numneigh; + //if (fp1 == NULL) + // fp1 = fopen("kokkos_list.txt","w"); + + if (fp1 != NULL) + { + const int inum = list->inum; + fprintf(fp1, "inum= %d\n", inum); + for (int ii = 0; ii < inum; ++ii) + { + const int i = d_ilist[ii]; + const int jnum = d_numneigh[i]; + fprintf(fp1, " %d %d %d\n", ii, i, jnum); + for (int jj = 0; jj < jnum; ++jj) + { + const int j = (d_neighbors(i,jj) & NEIGHMASK); + fprintf(fp1, " %d %d\n", jj, j); + } + } + } + } + + typename ArrayTypes::t_neighbors_2d d_neighbors; + typename ArrayTypes::t_int_1d d_ilist; + typename ArrayTypes::t_int_1d d_numneigh; + + if (useKokkosLists) + { + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + d_numneigh = k_list->d_numneigh; + } int* ilist = list->ilist; int* numneigh = list->numneigh; @@ -1145,8 +1223,9 @@ void FixRxKokkos::computeLocalTemperature() double i_dpdThetaLocal = 0.0; double i_sumWeights = 0.0; - const int i = ilist[ii]; + //const int i = ilist[ii]; //const int i = d_ilist(ii); + const int i = (useKokkosLists) ? d_ilist(ii) : ilist[ii]; const double xtmp = d_x(i,0); const double ytmp = d_x(i,1); @@ -1154,13 +1233,15 @@ void FixRxKokkos::computeLocalTemperature() const int itype = d_type(i); int *jlist = firstneigh[i]; - const int jnum = numneigh[i]; + //const int jnum = numneigh[i]; //const int jnum = d_numneigh(i); + const int jnum = (useKokkosLists) ? d_numneigh(i) : numneigh[i]; for (int jj = 0; jj < jnum; jj++) { - const int j = (jlist[jj] & NEIGHMASK); + //const int j = (jlist[jj] & NEIGHMASK); //const int j = (d_neighbors(i,jj) & NEIGHMASK); + const int j = (useKokkosLists) ? (d_neighbors(i,jj) & NEIGHMASK) : (jlist[jj] & NEIGHMASK); const int jtype = d_type(j); const double delx = xtmp - d_x(j,0); @@ -1232,6 +1313,18 @@ void FixRxKokkos::computeLocalTemperature() } ); + if (false) + { + static FILE *fp = NULL; + + if (fp == NULL) + fp = fopen("kokkos_temp.txt","w"); + + fprintf(fp, "nlocal= %d %d\n", nlocal, nghost); + for (int i = 0; i < nlocal; ++i) + fprintf(fp, "%d %15.9e %15.9e\n", i, d_dpdThetaLocal[i], d_sumWeights[i]); + } + // Clean up the local kokkos data. memory->destroy_kokkos(k_cutsq, h_cutsq); memory->destroy_kokkos(k_sumWeights, sumWeights); diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index d397d91499..36b05cb210 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -25,21 +25,18 @@ FixStyle(rx/kk/host,FixRxKokkos) #include "fix_rx.h" #include "pair_dpd_fdt_energy_kokkos.h" #include "kokkos_type.h" +#include "neigh_list.h" +#include "neigh_list_kokkos.h" namespace LAMMPS_NS { -template -struct TagFixRxKokkosSolver -{ - enum { setToZero = (_setToZero == true) ? 1 : 0 }; -}; - template class FixRxKokkos : public FixRX { public: FixRxKokkos(class LAMMPS *, int, char **); virtual ~FixRxKokkos(); virtual void init(); + void init_list(int, class NeighList *); void post_constructor(); virtual void setup_pre_force(int); virtual void pre_force(int); @@ -79,7 +76,7 @@ class FixRxKokkos : public FixRX { PairDPDfdtEnergyKokkos* pairDPDEKK; double VDPD; - void solve_reactions(void); + void solve_reactions(const int vflag, const bool isPreForce = true); int rhs(double, const double *, double *, void *) const; int rhs_dense (double, const double *, double *, void *) const; -- GitLab From 4e8351d9c8cb26328b667882290742029d5bbdfe Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Tue, 7 Feb 2017 17:53:36 -0500 Subject: [PATCH 116/337] Code clean-up for FixRxKokkos. - Removed dead code and old errors. TODO: - Per-thread scratch data in kokkos. - ODE Diagnostics in kokkos. --- src/KOKKOS/fix_rx_kokkos.cpp | 166 +++-------------------------------- 1 file changed, 12 insertions(+), 154 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 1497fea6c1..b5055191c4 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -792,43 +792,7 @@ void FixRxKokkos::setup_pre_force(int vflag) if (my_restartFlag) my_restartFlag = 0; else - { -#if 1 this->solve_reactions( vflag, false ); -#else - const int nlocal = atom->nlocal; - //const int nghost = atom->nghost; - //const int *mask = atom->mask; - //const int newton_pair = force->newton_pair; - - typename ArrayTypes::t_float_2d d_dvector = atomKK->k_dvector.view(); - - // Get up-to-date data. - atomKK->sync( execution_space, DVECTOR_MASK ); - - // The only net effect from fix_rx.cpp is to set dvector[nspecies:2*nspecies] - // since the reactions are set to zero for step 0. - Kokkos::parallel_for ( nlocal, - LAMMPS_LAMBDA(const int i) - { - for (int ispecies = 0; ispecies < nspecies; ispecies++) - d_dvector(ispecies+nspecies,i) = d_dvector(ispecies,i); - } - ); - - // Signal that dvector has been modified on this execution space. - atomKK->modified( execution_space, DVECTOR_MASK ); - - // Communicate the updated species data to all nodes - atomKK->sync ( Host, DVECTOR_MASK ); - - // Communicate the dvector to all nodes - comm->forward_comm_fix(this); - - // Flag that dvector was updated on the host in the comm. - atomKK->modified ( Host, DVECTOR_MASK ); -#endif - } } /* ---------------------------------------------------------------------- */ @@ -856,17 +820,13 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF const int nghost = atom->nghost; const int newton_pair = force->newton_pair; - //const bool setToZero = false; // don't set the forward rates to zero. - const bool setToZero = isPreForce == false; // Set the forward rates to zero if acting as setup_pre_force. + // Set the forward rates to zero if acting as setup_pre_force. + const bool setRatesToZero = (isPreForce == false); if (localTempFlag) { const int count = nlocal + (newton_pair ? nghost : 0); - //dpdThetaLocal = new double[count]; - //memset(dpdThetaLocal, 0, sizeof(double)*count); - //FixRx::computeLocalTemperature(); - memory->create_kokkos (k_dpdThetaLocal, dpdThetaLocal, count, "FixRxKokkos::dpdThetaLocal"); d_dpdThetaLocal = k_dpdThetaLocal.d_view; h_dpdThetaLocal = k_dpdThetaLocal.h_view; @@ -904,9 +864,6 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF // Set data needed in the operators. // ... - //int *mask = atom->mask; - //double *dpdTheta = atom->dpdTheta; - // Local references to the atomKK objects. typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); typename ArrayTypes::t_float_2d d_dvector = atomKK->k_dvector.view(); @@ -941,13 +898,12 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF CounterType counter_i; - //const double theta = (localTempFlag) ? dpdThetaLocal[i] : d_dpdTheta(i); const double theta = (localTempFlag) ? d_dpdThetaLocal(i) : d_dpdTheta(i); //Compute the reaction rate constants for (int irxn = 0; irxn < nreactions; irxn++) { - if (setToZero) + if (setRatesToZero) userData.kFor[irxn] = 0.0; else { @@ -1068,16 +1024,6 @@ template template void FixRxKokkos::computeLocalTemperature() { - - //int inum,jnum,itype,jtype; - //double xtmp,ytmp,ztmp,delx,dely,delz; - //double rsq; - //int *ilist,*jlist,*numneigh,**firstneigh; - - //double **x = atom->x; - //int *type = atom->type; - //double *dpdTheta = atom->dpdTheta; - typename ArrayTypes::t_x_array_randomread d_x = atomKK->k_x.view(); typename ArrayTypes::t_int_1d_randomread d_type = atomKK->k_type.view(); typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); @@ -1086,12 +1032,8 @@ void FixRxKokkos::computeLocalTemperature() const int nlocal = atom->nlocal; const int nghost = atom->nghost; - //const int newton_pair = force->newton_pair; - - printf("Inside FixRxKokkos::computeLocalTemperature: %d %d %d %d %d\n", WT_FLAG, LOCAL_TEMP_FLAG, NEWTON_PAIR, (int)lmp->kokkos->neighflag, NEIGHFLAG, nlocal, nghost); - // local temperature variables - //double wij=0.0; + printf("Inside FixRxKokkos::computeLocalTemperature: %d %d %d %d %d %d %d\n", WT_FLAG, LOCAL_TEMP_FLAG, NEWTON_PAIR, (int)lmp->kokkos->neighflag, NEIGHFLAG, nlocal, nghost); // Pull from pairDPDE. The pairDPDEKK objects are protected so recreate here for now. //pairDPDEKK->k_cutsq.template sync(); @@ -1121,8 +1063,6 @@ void FixRxKokkos::computeLocalTemperature() // Initialize the local temperature weight array int sumWeightsCt = nlocal + (NEWTON_PAIR ? nghost : 0); - //sumWeights = new double[sumWeightsCt]; - //memset(sumWeights, 0, sizeof(double)*sumWeightsCt); memory->create_kokkos (k_sumWeights, sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); d_sumWeights = k_sumWeights.d_view; @@ -1136,77 +1076,16 @@ void FixRxKokkos::computeLocalTemperature() } ); - const int inum = list->inum; - - bool useKokkosLists = false; - // Local list views. (This isn't working!) NeighListKokkos* k_list = static_cast*>(list); if (not(list->kokkos)) - { - //error->one(FLERR,"list is not a Kokkos list\n"); - printf("list is NOT a Kokkos list\n"); - - int* ilist = list->ilist; - int* numneigh = list->numneigh; - int** firstneigh = list->firstneigh; - printf("inum= %d ilist= %x\n", inum, ilist); - for (int ii = 0; ii < std::min(inum,10); ++ii) - { - const int i = ilist[ii]; - int *jlist = firstneigh[i]; - const int jnum = numneigh[i]; - const int j = (jlist[0] & NEIGHMASK); - printf(" ilist[%d]= %d j= %d jnum= %d\n", ii, i, j, jnum); - } - } - else - { - printf("It's a kokkos list\n"); - - useKokkosLists = true; - - typename ArrayTypes::t_neighbors_2d d_neighbors = k_list->d_neighbors; - typename ArrayTypes::t_int_1d d_ilist = k_list->d_ilist; - typename ArrayTypes::t_int_1d d_numneigh = k_list->d_numneigh; - - static FILE *fp1 = NULL; - - //if (fp1 == NULL) - // fp1 = fopen("kokkos_list.txt","w"); - - if (fp1 != NULL) - { - const int inum = list->inum; - fprintf(fp1, "inum= %d\n", inum); - for (int ii = 0; ii < inum; ++ii) - { - const int i = d_ilist[ii]; - const int jnum = d_numneigh[i]; - fprintf(fp1, " %d %d %d\n", ii, i, jnum); - for (int jj = 0; jj < jnum; ++jj) - { - const int j = (d_neighbors(i,jj) & NEIGHMASK); - fprintf(fp1, " %d %d\n", jj, j); - } - } - } - } - - typename ArrayTypes::t_neighbors_2d d_neighbors; - typename ArrayTypes::t_int_1d d_ilist; - typename ArrayTypes::t_int_1d d_numneigh; + error->one(FLERR,"list is not a Kokkos list\n"); - if (useKokkosLists) - { - d_neighbors = k_list->d_neighbors; - d_ilist = k_list->d_ilist; - d_numneigh = k_list->d_numneigh; - } + typename ArrayTypes::t_neighbors_2d d_neighbors = k_list->d_neighbors; + typename ArrayTypes::t_int_1d d_ilist = k_list->d_ilist; + typename ArrayTypes::t_int_1d d_numneigh = k_list->d_numneigh; - int* ilist = list->ilist; - int* numneigh = list->numneigh; - int** firstneigh = list->firstneigh; + const int inum = list->inum; // loop over neighbors of my atoms Kokkos::parallel_for ( inum, @@ -1223,25 +1102,18 @@ void FixRxKokkos::computeLocalTemperature() double i_dpdThetaLocal = 0.0; double i_sumWeights = 0.0; - //const int i = ilist[ii]; - //const int i = d_ilist(ii); - const int i = (useKokkosLists) ? d_ilist(ii) : ilist[ii]; + const int i = d_ilist(ii); const double xtmp = d_x(i,0); const double ytmp = d_x(i,1); const double ztmp = d_x(i,2); const int itype = d_type(i); - int *jlist = firstneigh[i]; - //const int jnum = numneigh[i]; - //const int jnum = d_numneigh(i); - const int jnum = (useKokkosLists) ? d_numneigh(i) : numneigh[i]; + const int jnum = d_numneigh(i); for (int jj = 0; jj < jnum; jj++) { - //const int j = (jlist[jj] & NEIGHMASK); - //const int j = (d_neighbors(i,jj) & NEIGHMASK); - const int j = (useKokkosLists) ? (d_neighbors(i,jj) & NEIGHMASK) : (jlist[jj] & NEIGHMASK); + const int j = (d_neighbors(i,jj) & NEIGHMASK); const int jtype = d_type(j); const double delx = xtmp - d_x(j,0); @@ -1313,23 +1185,9 @@ void FixRxKokkos::computeLocalTemperature() } ); - if (false) - { - static FILE *fp = NULL; - - if (fp == NULL) - fp = fopen("kokkos_temp.txt","w"); - - fprintf(fp, "nlocal= %d %d\n", nlocal, nghost); - for (int i = 0; i < nlocal; ++i) - fprintf(fp, "%d %15.9e %15.9e\n", i, d_dpdThetaLocal[i], d_sumWeights[i]); - } - // Clean up the local kokkos data. memory->destroy_kokkos(k_cutsq, h_cutsq); memory->destroy_kokkos(k_sumWeights, sumWeights); - - //delete [] sumWeights; } /* ---------------------------------------------------------------------- */ -- GitLab From 93d99ec8d0576aebebbc7658a891013326de6f6c Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Thu, 9 Feb 2017 22:38:58 -0500 Subject: [PATCH 117/337] Added ODE diagnostics to FixRxKokkos using Kokkos managed data. - Added the diagnostics performance analysis routine to FixRxKokkos using Kokkos views. TODO: - Switch to using Kokkos data for the per-iteration scratch data. How to allocate only enouch for each work-unit and not all iterations? Can the shared-memory scratch memory work for this, even for large sizes? --- src/KOKKOS/fix_rx_kokkos.cpp | 231 +++++++++++++++++++++++++++++++---- src/KOKKOS/fix_rx_kokkos.h | 13 ++ 2 files changed, 223 insertions(+), 21 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index b5055191c4..2a3fc7547a 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -879,11 +879,22 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF // Average DPD volume. Used in the RHS function. this->VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; - /*if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency == 1) + if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency == 1) { - memory->create( diagnosticCounterPerODE[StepSum], nlocal, "FixRX::diagnosticCounterPerODE"); - memory->create( diagnosticCounterPerODE[FuncSum], nlocal, "FixRX::diagnosticCounterPerODE"); - }*/ + memory->create_kokkos (k_diagnosticCounterPerODEnSteps, diagnosticCounterPerODEnSteps, nlocal, "FixRxKokkos::diagnosticCounterPerODEnSteps"); + memory->create_kokkos (k_diagnosticCounterPerODEnFuncs, diagnosticCounterPerODEnFuncs, nlocal, "FixRxKokkos::diagnosticCounterPerODEnFuncs"); + + d_diagnosticCounterPerODEnSteps = k_diagnosticCounterPerODEnSteps.d_view; + d_diagnosticCounterPerODEnFuncs = k_diagnosticCounterPerODEnFuncs.d_view; + + Kokkos::parallel_for ( nlocal, + LAMMPS_LAMBDA(const int i) + { + d_diagnosticCounterPerODEnSteps(i) = 0; + d_diagnosticCounterPerODEnFuncs(i) = 0; + } + ); + } Kokkos::parallel_reduce( nlocal, LAMMPS_LAMBDA(int i, CounterType &counter) { @@ -930,12 +941,11 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF { rkf45(nspecies, t_stop, y, rwork, &userData, counter_i); - //if (diagnosticFrequency == 1 && diagnosticCounterPerODE[StepSum] != NULL) - //if (diagnosticCounterPerODE[StepSum] != NULL) - //{ - // diagnosticCounterPerODE[StepSum][i] = counter_i.nSteps; - // diagnosticCounterPerODE[FuncSum][i] = counter_i.nFuncs; - //} + if (diagnosticFrequency == 1) + { + d_diagnosticCounterPerODEnSteps(i) = counter_i.nSteps; + d_diagnosticCounterPerODEnFuncs(i) = counter_i.nFuncs; + } } // Store the solution back in dvector. @@ -975,10 +985,7 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF atomKK->modified ( Host, DVECTOR_MASK ); if (localTempFlag) - { - //delete [] dpdThetaLocal; memory->destroy_kokkos(k_dpdThetaLocal, dpdThetaLocal); - } TimerType timer_stop = getTimeStamp(); @@ -997,12 +1004,12 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF error->warning(FLERR, sbuf); } -/* // Compute and report ODE diagnostics, if requested. - if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency != 0){ + if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency != 0) + { // Update the counters. - diagnosticCounter[StepSum] += nSteps; - diagnosticCounter[FuncSum] += nFuncs; + diagnosticCounter[StepSum] += TotalCounters.nSteps; + diagnosticCounter[FuncSum] += TotalCounters.nFuncs; diagnosticCounter[TimeSum] += time_ODE; diagnosticCounter[AtomSum] += nlocal; diagnosticCounter[numDiagnosticCounters-1] ++; @@ -1011,11 +1018,193 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF ((update->ntimestep - update->firststep) % diagnosticFrequency) == 0) || (diagnosticFrequency < 0 && update->ntimestep == update->laststep) ) this->odeDiagnostics(); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::odeDiagnostics(void) +{ + TimerType timer_start = getTimeStamp(); + + // Compute: + // 1) Average # of ODE integrator steps and RHS evaluations per atom globally. + // 2) RMS # of ... + // 3) Average # of ODE steps and RHS evaluations per MPI task. + // 4) RMS # of ODE steps and RHS evaluations per MPI task. + // 5) MAX # of ODE steps and RHS evaluations per MPI task. + // + // ... 1,2 are for ODE control diagnostics. + // ... 3-5 are for load balancing diagnostics. + // + // To do this, we'll need to + // a) Allreduce (sum) the sum of nSteps / nFuncs. Dividing by atom->natoms + // gives the avg # of steps/funcs per atom globally. + // b) Reduce (sum) to root the sum of squares of the differences. + // i) Sum_i (steps_i - avg_steps_global)^2 + // ii) Sum_i (funcs_i - avg_funcs_global)^2 + // iii) (avg_steps_local - avg_steps_global)^2 + // iv) (avg_funcs_local - avg_funcs_global)^2 + + const int numCounters = numDiagnosticCounters-1; + + // # of time-steps for averaging. + const int nTimes = this->diagnosticCounter[numDiagnosticCounters-1]; + + // # of ODE's per time-step (on average). + //const int nODEs = this->diagnosticCounter[AtomSum] / nTimes; + + // Sum up the sums from each task. + double sums[numCounters]; + double my_vals[numCounters]; + double max_per_proc[numCounters]; + double min_per_proc[numCounters]; + + // Compute counters per dpd time-step. + for (int i = 0; i < numCounters; ++i){ + my_vals[i] = this->diagnosticCounter[i] / nTimes; + //printf("my sum[%d] = %f %d\n", i, my_vals[i], comm->me); + } + + MPI_Allreduce (my_vals, sums, numCounters, MPI_DOUBLE, MPI_SUM, world); + + MPI_Reduce (my_vals, max_per_proc, numCounters, MPI_DOUBLE, MPI_MAX, 0, world); + MPI_Reduce (my_vals, min_per_proc, numCounters, MPI_DOUBLE, MPI_MIN, 0, world); + + const double nODEs = sums[numCounters-1]; + + double avg_per_atom[numCounters], avg_per_proc[numCounters]; + + // Averages per-ODE and per-proc per time-step. + for (int i = 0; i < numCounters; ++i){ + avg_per_atom[i] = sums[i] / nODEs; + avg_per_proc[i] = sums[i] / comm->nprocs; + } + + // Sum up the differences from each task. + double sum_sq[2*numCounters]; + double my_sum_sq[2*numCounters]; + for (int i = 0; i < numCounters; ++i){ + double diff_i = my_vals[i] - avg_per_proc[i]; + my_sum_sq[i] = diff_i * diff_i; + } + + double max_per_ODE[numCounters], min_per_ODE[numCounters]; + + // Process the per-ODE RMS of the # of steps/funcs + if (diagnosticFrequency == 1) + { + h_diagnosticCounterPerODEnSteps = k_diagnosticCounterPerODEnSteps.h_view; + h_diagnosticCounterPerODEnFuncs = k_diagnosticCounterPerODEnFuncs.h_view; + + Kokkos::deep_copy( h_diagnosticCounterPerODEnSteps, d_diagnosticCounterPerODEnSteps ); + Kokkos::deep_copy( h_diagnosticCounterPerODEnFuncs, d_diagnosticCounterPerODEnFuncs ); + + double my_max[numCounters], my_min[numCounters]; + + const int nlocal = atom->nlocal; + HAT::t_int_1d h_mask = atomKK->k_mask.h_view; + + for (int i = 0; i < numCounters; ++i) + { + my_sum_sq[i+numCounters] = 0; + my_max[i] = 0; + my_min[i] = DBL_MAX; + } + + for (int j = 0; j < nlocal; ++j) + if (h_mask(j) & groupbit) + { + int nSteps = h_diagnosticCounterPerODEnSteps(j); + double diff_nSteps = double( nSteps ) - avg_per_atom[StepSum]; + my_sum_sq[StepSum+numCounters] += diff_nSteps*diff_nSteps; + my_max[StepSum] = std::max( my_max[StepSum], (double)nSteps ); + my_min[StepSum] = std::min( my_min[StepSum], (double)nSteps ); + + int nFuncs = h_diagnosticCounterPerODEnFuncs(j); + double diff_nFuncs = double( nFuncs ) - avg_per_atom[FuncSum]; + my_sum_sq[FuncSum+numCounters] += diff_nFuncs*diff_nFuncs; + + my_max[FuncSum] = std::max( my_max[FuncSum], (double)nFuncs ); + my_min[FuncSum] = std::min( my_min[FuncSum], (double)nFuncs ); + } + + memory->destroy_kokkos( k_diagnosticCounterPerODEnSteps, diagnosticCounterPerODEnSteps ); + memory->destroy_kokkos( k_diagnosticCounterPerODEnFuncs, diagnosticCounterPerODEnFuncs ); + + MPI_Reduce (my_sum_sq, sum_sq, 2*numCounters, MPI_DOUBLE, MPI_SUM, 0, world); + + MPI_Reduce (my_max, max_per_ODE, numCounters, MPI_DOUBLE, MPI_MAX, 0, world); + MPI_Reduce (my_min, min_per_ODE, numCounters, MPI_DOUBLE, MPI_MIN, 0, world); + } + else + MPI_Reduce (my_sum_sq, sum_sq, numCounters, MPI_DOUBLE, MPI_SUM, 0, world); + + TimerType timer_stop = getTimeStamp(); + double time_local = getElapsedTime( timer_start, timer_stop ); + + if (comm->me == 0){ + char smesg[128]; + +#define print_mesg(smesg) {\ + if (screen) fprintf(screen,"%s\n", smesg); \ + if (logfile) fprintf(logfile,"%s\n", smesg); } + + sprintf(smesg, "FixRX::ODE Diagnostics: # of iters |# of rhs evals| run-time (sec) | # atoms"); + print_mesg(smesg); + + sprintf(smesg, " AVG per ODE : %-12.5g | %-12.5g | %-12.5g", avg_per_atom[0], avg_per_atom[1], avg_per_atom[2]); + print_mesg(smesg); + + // only valid for single time-step! + if (diagnosticFrequency == 1){ + double rms_per_ODE[numCounters]; + for (int i = 0; i < numCounters; ++i) + rms_per_ODE[i] = sqrt( sum_sq[i+numCounters] / nODEs ); + + sprintf(smesg, " RMS per ODE : %-12.5g | %-12.5g ", rms_per_ODE[0], rms_per_ODE[1]); + print_mesg(smesg); + + sprintf(smesg, " MAX per ODE : %-12.5g | %-12.5g ", max_per_ODE[0], max_per_ODE[1]); + print_mesg(smesg); + + sprintf(smesg, " MIN per ODE : %-12.5g | %-12.5g ", min_per_ODE[0], min_per_ODE[1]); + print_mesg(smesg); + } + + sprintf(smesg, " AVG per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", avg_per_proc[StepSum], avg_per_proc[FuncSum], avg_per_proc[TimeSum], avg_per_proc[AtomSum]); + print_mesg(smesg); + + if (comm->nprocs > 1){ + double rms_per_proc[numCounters]; + for (int i = 0; i < numCounters; ++i) + rms_per_proc[i] = sqrt( sum_sq[i] / comm->nprocs ); + + sprintf(smesg, " RMS per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", rms_per_proc[0], rms_per_proc[1], rms_per_proc[2], rms_per_proc[AtomSum]); + print_mesg(smesg); + + sprintf(smesg, " MAX per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", max_per_proc[0], max_per_proc[1], max_per_proc[2], max_per_proc[AtomSum]); + print_mesg(smesg); + + sprintf(smesg, " MIN per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", min_per_proc[0], min_per_proc[1], min_per_proc[2], min_per_proc[AtomSum]); + print_mesg(smesg); + } + + sprintf(smesg, " AVG'd over %d time-steps", nTimes); + print_mesg(smesg); + sprintf(smesg, " AVG'ing took %g sec", time_local); + print_mesg(smesg); + +#undef print_mesg + + } + + // Reset the counters. + for (int i = 0; i < numDiagnosticCounters; ++i) + diagnosticCounter[i] = 0; - for (int i = 0; i < numDiagnosticCounters; ++i) - if (diagnosticCounterPerODE[i]) - memory->destroy( diagnosticCounterPerODE[i] ); - } */ + return; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index 36b05cb210..4a11ac9fb9 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -97,6 +97,19 @@ class FixRxKokkos : public FixRX { const double hmin, const double hmax, double& h0, double y[], double rwk[], void *v_params) const; + //!< ODE Solver diagnostics. + void odeDiagnostics(void); + + //!< Special counters per-ode. + int *diagnosticCounterPerODEnSteps; + int *diagnosticCounterPerODEnFuncs; + DAT::tdual_int_1d k_diagnosticCounterPerODEnSteps; + DAT::tdual_int_1d k_diagnosticCounterPerODEnFuncs; + typename ArrayTypes::t_int_1d d_diagnosticCounterPerODEnSteps; + typename ArrayTypes::t_int_1d d_diagnosticCounterPerODEnFuncs; + typename HAT::t_int_1d h_diagnosticCounterPerODEnSteps; + typename HAT::t_int_1d h_diagnosticCounterPerODEnFuncs; + template struct KineticsType { -- GitLab From 4ac7a5d1f2e6132595c8999090e7b4159aa6971a Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Sun, 12 Feb 2017 21:21:11 -0500 Subject: [PATCH 118/337] Added Kokkos-like array datatype into RK4 and RHS in FixRXKokkos. - Created an Array class that provides stride access for operator[] w/o needing Kokkos views. This was designed to avoid the performance issues encountered with Views and sub-views throughout the RHS and ODE solver functions. --- src/KOKKOS/fix_rx_kokkos.cpp | 520 ++++++++++++++++++++++++++++++++++- src/KOKKOS/fix_rx_kokkos.h | 52 +++- 2 files changed, 570 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 2a3fc7547a..a6da0306bb 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -202,6 +202,373 @@ void FixRxKokkos::rk4(const double t_stop, double *y, double *rwork, /* ---------------------------------------------------------------------- */ +template + template +void FixRxKokkos::k_rk4(const double t_stop, double *y, double *rwork, UserDataType& userData) const +{ + double *k1 = rwork; + double *k2 = k1 + nspecies; + double *k3 = k2 + nspecies; + double *k4 = k3 + nspecies; + double *yp = k4 + nspecies; + + const int numSteps = minSteps; + + const double h = t_stop / double(numSteps); + + // Run the requested steps with h. + for (int step = 0; step < numSteps; step++) + { + // k1 + k_rhs(0.0,y,k1, userData); + + // k2 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + 0.5*h*k1[ispecies]; + + k_rhs(0.0,yp,k2, userData); + + // k3 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + 0.5*h*k2[ispecies]; + + k_rhs(0.0,yp,k3, userData); + + // k4 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + h*k3[ispecies]; + + k_rhs(0.0,yp,k4, userData); + + for (int ispecies = 0; ispecies < nspecies; ispecies++) + y[ispecies] += h*(k1[ispecies]/6.0 + k2[ispecies]/3.0 + k3[ispecies]/3.0 + k4[ispecies]/6.0); + + } // end for (int step... + +} + +/* ---------------------------------------------------------------------- */ + +// f1 = dt*f(t,x) +// f2 = dt*f(t+ c20*dt,x + c21*f1) +// f3 = dt*f(t+ c30*dt,x + c31*f1 + c32*f2) +// f4 = dt*f(t+ c40*dt,x + c41*f1 + c42*f2 + c43*f3) +// f5 = dt*f(t+dt,x + c51*f1 + c52*f2 + c53*f3 + c54*f4) +// f6 = dt*f(t+ c60*dt,x + c61*f1 + c62*f2 + c63*f3 + c64*f4 + c65*f5) +// +// fifth-order runge-kutta integration +// x5 = x + b1*f1 + b3*f3 + b4*f4 + b5*f5 + b6*f6 +// fourth-order runge-kutta integration +// x = x + a1*f1 + a3*f3 + a4*f4 + a5*f5 + +template + template +void FixRxKokkos::k_rkf45_step (const int neq, const double h, double y[], double y_out[], double rwk[], UserDataType& userData) const +{ + const double c21=0.25; + const double c31=0.09375; + const double c32=0.28125; + const double c41=0.87938097405553; + const double c42=-3.2771961766045; + const double c43=3.3208921256258; + const double c51=2.0324074074074; + const double c52=-8.0; + const double c53=7.1734892787524; + const double c54=-0.20589668615984; + const double c61=-0.2962962962963; + const double c62=2.0; + const double c63=-1.3816764132554; + const double c64=0.45297270955166; + const double c65=-0.275; + const double a1=0.11574074074074; + const double a3=0.54892787524366; + const double a4=0.5353313840156; + const double a5=-0.2; + const double b1=0.11851851851852; + const double b3=0.51898635477583; + const double b4=0.50613149034201; + const double b5=-0.18; + const double b6=0.036363636363636; + + // local dependent variables (5 total) + double* f1 = &rwk[ 0]; + double* f2 = &rwk[ neq]; + double* f3 = &rwk[2*neq]; + double* f4 = &rwk[3*neq]; + double* f5 = &rwk[4*neq]; + double* f6 = &rwk[5*neq]; + + // scratch for the intermediate solution. + //double* ytmp = &rwk[6*neq]; + double* ytmp = y_out; + + // 1) + k_rhs (0.0, y, f1, userData); + + for (int k = 0; k < neq; k++){ + f1[k] *= h; + ytmp[k] = y[k] + c21 * f1[k]; + } + + // 2) + k_rhs(0.0, ytmp, f2, userData); + + for (int k = 0; k < neq; k++){ + f2[k] *= h; + ytmp[k] = y[k] + c31 * f1[k] + c32 * f2[k]; + } + + // 3) + k_rhs(0.0, ytmp, f3, userData); + + for (int k = 0; k < neq; k++) { + f3[k] *= h; + ytmp[k] = y[k] + c41 * f1[k] + c42 * f2[k] + c43 * f3[k]; + } + + // 4) + k_rhs(0.0, ytmp, f4, userData); + + for (int k = 0; k < neq; k++) { + f4[k] *= h; + ytmp[k] = y[k] + c51 * f1[k] + c52 * f2[k] + c53 * f3[k] + c54 * f4[k]; + } + + // 5) + k_rhs(0.0, ytmp, f5, userData); + + for (int k = 0; k < neq; k++) { + f5[k] *= h; + ytmp[k] = y[k] + c61*f1[k] + c62*f2[k] + c63*f3[k] + c64*f4[k] + c65*f5[k]; + } + + // 6) + k_rhs(0.0, ytmp, f6, userData); + + for (int k = 0; k < neq; k++) + { + //const double f6 = h * ydot[k]; + f6[k] *= h; + + // 5th-order solution. + const double r5 = b1*f1[k] + b3*f3[k] + b4*f4[k] + b5*f5[k] + b6*f6[k]; + + // 4th-order solution. + const double r4 = a1*f1[k] + a3*f3[k] + a4*f4[k] + a5*f5[k]; + + // Truncation error: difference between 4th and 5th-order solutions. + rwk[k] = fabs(r5 - r4); + + // Update solution. + //y_out[k] = y[k] + r5; // Local extrapolation + y_out[k] = y[k] + r4; + } + + return; +} + +template + template +int FixRxKokkos::k_rkf45_h0 + (const int neq, const double t, const double t_stop, + const double hmin, const double hmax, + double& h0, double y[], double rwk[], UserDataType& userData) const +{ + // Set lower and upper bounds on h0, and take geometric mean as first trial value. + // Exit with this value if the bounds cross each other. + + // Adjust upper bound based on ydot ... + double hg = sqrt(hmin*hmax); + + //if (hmax < hmin) + //{ + // h0 = hg; + // return; + //} + + // Start iteration to find solution to ... {WRMS norm of (h0^2 y'' / 2)} = 1 + + double *ydot = rwk; + double *y1 = ydot + neq; + double *ydot1 = y1 + neq; + + const int max_iters = 10; + bool hnew_is_ok = false; + double hnew = hg; + int iter = 0; + + // compute ydot at t=t0 + k_rhs (t, y, ydot, userData); + + while(1) + { + // Estimate y'' with finite-difference ... + + for (int k = 0; k < neq; k++) + y1[k] = y[k] + hg * ydot[k]; + + // compute y' at t1 + k_rhs (t + hg, y1, ydot1, userData); + + // Compute WRMS norm of y'' + double yddnrm = 0.0; + for (int k = 0; k < neq; k++){ + double ydd = (ydot1[k] - ydot[k]) / hg; + double wterr = ydd / (relTol * fabs( y[k] ) + absTol); + yddnrm += wterr * wterr; + } + + yddnrm = sqrt( yddnrm / double(neq) ); + + //std::cout << "iter " << _iter << " hg " << hg << " y'' " << yddnrm << std::endl; + //std::cout << "ydot " << ydot[neq-1] << std::endl; + + // should we accept this? + if (hnew_is_ok || iter == max_iters){ + hnew = hg; + if (iter == max_iters) + fprintf(stderr, "ERROR_HIN_MAX_ITERS\n"); + break; + } + + // Get the new value of h ... + hnew = (yddnrm*hmax*hmax > 2.0) ? sqrt(2.0 / yddnrm) : sqrt(hg * hmax); + + // test the stopping conditions. + double hrat = hnew / hg; + + // Accept this value ... the bias factor should bring it within range. + if ( (hrat > 0.5) && (hrat < 2.0) ) + hnew_is_ok = true; + + // If y'' is still bad after a few iterations, just accept h and give up. + if ( (iter > 1) && hrat > 2.0 ) { + hnew = hg; + hnew_is_ok = true; + } + + //printf("iter=%d, yddnrw=%e, hnew=%e, hmin=%e, hmax=%e\n", iter, yddnrm, hnew, hmin, hmax); + + hg = hnew; + iter ++; + } + + // bound and bias estimate + h0 = hnew * 0.5; + h0 = fmax(h0, hmin); + h0 = fmin(h0, hmax); + //printf("h0=%e, hmin=%e, hmax=%e\n", h0, hmin, hmax); + + return (iter + 1); +} + +template + template +void FixRxKokkos::k_rkf45(const int neq, const double t_stop, double *y, double *rwork, UserDataType& userData, CounterType& counter) const +{ + // Rounding coefficient. + const double uround = DBL_EPSILON; + + // Adaption limit (shrink or grow) + const double adaption_limit = 4.0; + + // Safety factor on the adaption. very specific but not necessary .. 0.9 is common. + const double hsafe = 0.840896415; + + // Time rounding factor. + const double tround = t_stop * uround; + + // Counters for diagnostics. + int nst = 0; // # of steps (accepted) + int nit = 0; // # of iterations total + int nfe = 0; // # of RHS evaluations + + // Min/Max step-size limits. + const double h_min = 100.0 * tround; + const double h_max = (minSteps > 0) ? t_stop / double(minSteps) : t_stop; + + // Set the initial step-size. 0 forces an internal estimate ... stable Euler step size. + double h = (minSteps > 0) ? t_stop / double(minSteps) : 0.0; + + double t = 0.0; + + if (h < h_min){ + //fprintf(stderr,"hin not implemented yet\n"); + //exit(-1); + nfe = k_rkf45_h0 (neq, t, t_stop, h_min, h_max, h, y, rwork, userData); + } + + //printf("t= %e t_stop= %e h= %e\n", t, t_stop, h); + + // Integrate until we reach the end time. + while (fabs(t - t_stop) > tround){ + double *yout = rwork; + double *eout = yout + neq; + + // Take a trial step. + k_rkf45_step (neq, h, y, yout, eout, userData); + + // Estimate the solution error. + // ... weighted 2-norm of the error. + double err2 = 0.0; + for (int k = 0; k < neq; k++){ + const double wterr = eout[k] / (relTol * fabs( y[k] ) + absTol); + err2 += wterr * wterr; + } + + double err = fmax( uround, sqrt( err2 / double(nspecies) )); + + // Accept the solution? + if (err <= 1.0 || h <= h_min){ + t += h; + nst++; + + for (int k = 0; k < neq; k++) + y[k] = yout[k]; + } + + // Adjust h for the next step. + double hfac = hsafe * sqrt( sqrt( 1.0 / err ) ); + + // Limit the adaption. + hfac = fmax( hfac, 1.0 / adaption_limit ); + hfac = fmin( hfac, adaption_limit ); + + // Apply the adaption factor... + h *= hfac; + + // Limit h. + h = fmin( h, h_max ); + h = fmax( h, h_min ); + + // Stretch h if we're within 5% ... and we didn't just fail. + if (err <= 1.0 && (t + 1.05*h) > t_stop) + h = t_stop - t; + + // And don't overshoot the end. + if (t + h > t_stop) + h = t_stop - t; + + nit++; + nfe += 6; + + if (maxIters && nit > maxIters){ + //fprintf(stderr,"atom[%d] took too many iterations in rkf45 %d %e %e\n", id, nit, t, t_stop); + counter.nFails ++; + break; + // We should set an error here so that the solution is not used! + } + + } // end while + + counter.nSteps += nst; + counter.nIters += nit; + counter.nFuncs += nfe; + + //printf("id= %d nst= %d nit= %d\n", id, nst, nit); +} +/* ---------------------------------------------------------------------- */ + // f1 = dt*f(t,x) // f2 = dt*f(t+ c20*dt,x + c21*f1) // f3 = dt*f(t+ c30*dt,x + c31*f1 + c32*f2) @@ -664,6 +1031,152 @@ int FixRxKokkos::rhs_sparse(double t, const double *y, double *dydt, /* ---------------------------------------------------------------------- */ +template + template +int FixRxKokkos::k_rhs(double t, const VectorType& y, VectorType& dydt, UserDataType& userData) const +{ + //StridedArrayType _y( const_cast( y ) ), _dydt( dydt ); + + // Use the sparse format instead. + if (useSparseKinetics) + return this->k_rhs_sparse( t, y, dydt, userData); + else + return this->k_rhs_dense ( t, y, dydt, userData); +} + +/* ---------------------------------------------------------------------- */ + +template + template +int FixRxKokkos::k_rhs_dense(double t, const VectorType& y, VectorType& dydt, UserDataType& userData) const +{ + #define rxnRateLaw (userData.rxnRateLaw) + #define kFor (userData.kFor ) + + //const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + //const int nspecies = atom->nspecies_dpd; + + for(int ispecies=0; ispecies + template +int FixRxKokkos::k_rhs_sparse(double t, const VectorType& y, VectorType& dydt, UserDataType& userData) const +{ + #define kFor (userData.kFor) + #define kRev (NULL) + #define rxnRateLaw (userData.rxnRateLaw) + #define conc (dydt) + #define maxReactants (this->sparseKinetics_maxReactants) + #define maxSpecies (this->sparseKinetics_maxSpecies) + #define nuk (this->d_kineticsData.nuk) + #define nu (this->d_kineticsData.nu) + #define inu (this->d_kineticsData.inu) + #define isIntegral(idx) ( SparseKinetics_enableIntegralReactions \ + && this->d_kineticsData.isIntegral(idx) ) + + for (int k = 0; k < nspecies; ++k) + conc[k] = y[k] / VDPD; + + // Construct the reaction rate laws + for (int i = 0; i < nreactions; ++i) + { + double rxnRateLawForward; + if (isIntegral(i)){ + rxnRateLawForward = kFor[i] * powint( conc[ nuk(i,0) ], inu(i,0) ); + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + rxnRateLawForward *= powint( conc[k], inu(i,kk) ); + } + } else { + rxnRateLawForward = kFor[i] * pow( conc[ nuk(i,0) ], nu(i,0) ); + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + rxnRateLawForward *= pow( conc[k], nu(i,kk) ); + } + } + + rxnRateLaw[i] = rxnRateLawForward; + } + + // Construct the reaction rates for each species from the + // Stoichiometric matrix and ROP vector. + for (int k = 0; k < nspecies; ++k) + dydt[k] = 0.0; + + for (int i = 0; i < nreactions; ++i){ + // Reactants ... + dydt[ nuk(i,0) ] -= nu(i,0) * rxnRateLaw[i]; + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + dydt[k] -= nu(i,kk) * rxnRateLaw[i]; + } + + // Products ... + dydt[ nuk(i,maxReactants) ] += nu(i,maxReactants) * rxnRateLaw[i]; + for (int kk = maxReactants+1; kk < maxSpecies; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + dydt[k] += nu(i,kk) * rxnRateLaw[i]; + } + } + + // Add in the volume factor to convert to the proper units. + for (int k = 0; k < nspecies; ++k) + dydt[k] *= VDPD; + + #undef kFor + #undef kRev + #undef rxnRateLaw + #undef conc + #undef maxReactants + #undef maxSpecies + #undef nuk + #undef nu + #undef inu + #undef isIntegral + //#undef invalidIndex + + return 0; +} + +/* ---------------------------------------------------------------------- */ + /*template template KOKKOS_INLINE_FUNCTION @@ -907,6 +1420,10 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF userData.kFor = new double[nreactions]; userData.rxnRateLaw = new double[nreactions]; + UserRHSDataKokkos<1> userDataKokkos; + userDataKokkos.kFor.m_data = userData.kFor; + userDataKokkos.rxnRateLaw.m_data = userData.rxnRateLaw; + CounterType counter_i; const double theta = (localTempFlag) ? d_dpdThetaLocal(i) : d_dpdTheta(i); @@ -935,7 +1452,8 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF // Solver the ODE system. if (odeIntegrationFlag == ODE_LAMMPS_RK4) { - rk4(t_stop, y, rwork, &userData); + //rk4(t_stop, y, rwork, &userData); + k_rk4(t_stop, y, rwork, userDataKokkos); } else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) { diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index 4a11ac9fb9..e36d606525 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -76,12 +76,43 @@ class FixRxKokkos : public FixRX { PairDPDfdtEnergyKokkos* pairDPDEKK; double VDPD; + template + struct StridedArrayType + { + typedef T value_type; + enum { Stride = stride }; + + value_type *m_data; + + StridedArrayType() : m_data(NULL) {} + StridedArrayType(value_type *ptr) : m_data(ptr) {} + + inline value_type& operator()(const int idx) { return m_data[Stride*idx]; } + inline const value_type& operator()(const int idx) const { return m_data[Stride*idx]; } + inline value_type& operator[](const int idx) { return m_data[Stride*idx]; } + inline const value_type& operator[](const int idx) const { return m_data[Stride*idx]; } + }; + + template + struct UserRHSDataKokkos + { + StridedArrayType kFor; + StridedArrayType rxnRateLaw; + }; + void solve_reactions(const int vflag, const bool isPreForce = true); - int rhs(double, const double *, double *, void *) const; + int rhs (double, const double *, double *, void *) const; int rhs_dense (double, const double *, double *, void *) const; int rhs_sparse(double, const double *, double *, void *) const; + template + int k_rhs (double, const VectorType&, VectorType&, UserDataType& ) const; + template + int k_rhs_dense (double, const VectorType&, VectorType&, UserDataType& ) const; + template + int k_rhs_sparse(double, const VectorType&, VectorType&, UserDataType& ) const; + //!< Classic Runge-Kutta 4th-order stepper. void rk4(const double t_stop, double *y, double *rwork, void *v_params) const; @@ -97,6 +128,25 @@ class FixRxKokkos : public FixRX { const double hmin, const double hmax, double& h0, double y[], double rwk[], void *v_params) const; + //!< Classic Runge-Kutta 4th-order stepper. + template + void k_rk4(const double t_stop, double *y, double *rwork, UserDataType& userData) const; + + //!< Runge-Kutta-Fehlberg ODE Solver. + template + void k_rkf45(const int neq, const double t_stop, double *y, double *rwork, UserDataType& userData, CounterType& counter) const; + + //!< Runge-Kutta-Fehlberg ODE stepper function. + template + void k_rkf45_step (const int neq, const double h, double y[], double y_out[], + double rwk[], UserDataType& userData) const; + + //!< Initial step size estimation for the Runge-Kutta-Fehlberg ODE solver. + template + int k_rkf45_h0 (const int neq, const double t, const double t_stop, + const double hmin, const double hmax, + double& h0, double y[], double rwk[], UserDataType& userData) const; + //!< ODE Solver diagnostics. void odeDiagnostics(void); -- GitLab From 2f32c1a9af6f8a8bb39c69f051552263dc313572 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Sun, 12 Feb 2017 22:48:02 -0500 Subject: [PATCH 119/337] Switched to using Kokkos device data for ODE scratch data. - Finished porting all scratch arrays to using the StridedArrayType template. - Created a single, large Kokkos device array and using that for all scratch data passed into the StridedArrayType objects. --- src/KOKKOS/fix_rx_kokkos.cpp | 101 ++++++++++++++++++++--------------- src/KOKKOS/fix_rx_kokkos.h | 18 +++---- 2 files changed, 67 insertions(+), 52 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index a6da0306bb..09a122a108 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -203,14 +203,14 @@ void FixRxKokkos::rk4(const double t_stop, double *y, double *rwork, /* ---------------------------------------------------------------------- */ template - template -void FixRxKokkos::k_rk4(const double t_stop, double *y, double *rwork, UserDataType& userData) const + template +void FixRxKokkos::k_rk4(const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData) const { - double *k1 = rwork; - double *k2 = k1 + nspecies; - double *k3 = k2 + nspecies; - double *k4 = k3 + nspecies; - double *yp = k4 + nspecies; + VectorType k1( rwork ); + VectorType k2( &k1[nspecies] ); + VectorType k3( &k2[nspecies] ); + VectorType k4( &k3[nspecies] ); + VectorType yp( &k4[nspecies] ); const int numSteps = minSteps; @@ -262,8 +262,8 @@ void FixRxKokkos::k_rk4(const double t_stop, double *y, double *rwor // x = x + a1*f1 + a3*f3 + a4*f4 + a5*f5 template - template -void FixRxKokkos::k_rkf45_step (const int neq, const double h, double y[], double y_out[], double rwk[], UserDataType& userData) const + template +void FixRxKokkos::k_rkf45_step (const int neq, const double h, VectorType& y, VectorType& y_out, VectorType& rwk, UserDataType& userData) const { const double c21=0.25; const double c31=0.09375; @@ -291,16 +291,15 @@ void FixRxKokkos::k_rkf45_step (const int neq, const double h, doubl const double b6=0.036363636363636; // local dependent variables (5 total) - double* f1 = &rwk[ 0]; - double* f2 = &rwk[ neq]; - double* f3 = &rwk[2*neq]; - double* f4 = &rwk[3*neq]; - double* f5 = &rwk[4*neq]; - double* f6 = &rwk[5*neq]; + VectorType& f1 = rwk; + VectorType f2( &rwk[ neq] ); + VectorType f3( &rwk[2*neq] ); + VectorType f4( &rwk[3*neq] ); + VectorType f5( &rwk[4*neq] ); + VectorType f6( &rwk[5*neq] ); // scratch for the intermediate solution. - //double* ytmp = &rwk[6*neq]; - double* ytmp = y_out; + VectorType& ytmp = y_out; // 1) k_rhs (0.0, y, f1, userData); @@ -368,11 +367,11 @@ void FixRxKokkos::k_rkf45_step (const int neq, const double h, doubl } template - template + template int FixRxKokkos::k_rkf45_h0 (const int neq, const double t, const double t_stop, const double hmin, const double hmax, - double& h0, double y[], double rwk[], UserDataType& userData) const + double& h0, VectorType& y, VectorType& rwk, UserDataType& userData) const { // Set lower and upper bounds on h0, and take geometric mean as first trial value. // Exit with this value if the bounds cross each other. @@ -388,9 +387,9 @@ int FixRxKokkos::k_rkf45_h0 // Start iteration to find solution to ... {WRMS norm of (h0^2 y'' / 2)} = 1 - double *ydot = rwk; - double *y1 = ydot + neq; - double *ydot1 = y1 + neq; + VectorType& ydot = rwk; + VectorType y1 ( &ydot[ neq] ); + VectorType ydot1 ( &ydot[2*neq] ); const int max_iters = 10; bool hnew_is_ok = false; @@ -463,8 +462,8 @@ int FixRxKokkos::k_rkf45_h0 } template - template -void FixRxKokkos::k_rkf45(const int neq, const double t_stop, double *y, double *rwork, UserDataType& userData, CounterType& counter) const + template +void FixRxKokkos::k_rkf45(const int neq, const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData, CounterType& counter) const { // Rounding coefficient. const double uround = DBL_EPSILON; @@ -501,9 +500,10 @@ void FixRxKokkos::k_rkf45(const int neq, const double t_stop, double //printf("t= %e t_stop= %e h= %e\n", t, t_stop, h); // Integrate until we reach the end time. - while (fabs(t - t_stop) > tround){ - double *yout = rwork; - double *eout = yout + neq; + while (fabs(t - t_stop) > tround) + { + VectorType& yout = rwork; + VectorType eout ( &yout[neq] ); // Take a trial step. k_rkf45_step (neq, h, y, yout, eout, userData); @@ -1035,8 +1035,6 @@ template template int FixRxKokkos::k_rhs(double t, const VectorType& y, VectorType& dydt, UserDataType& userData) const { - //StridedArrayType _y( const_cast( y ) ), _dydt( dydt ); - // Use the sparse format instead. if (useSparseKinetics) return this->k_rhs_sparse( t, y, dydt, userData); @@ -1409,20 +1407,36 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF ); } + // Create scratch array space. + const size_t scratchSpaceSize = (8*nspecies + 2*nreactions); + //double *scratchSpace = new double[ scratchSpaceSize * nlocal ]; + + typename ArrayTypes::t_double_1d d_scratchSpace("d_scratchSpace", scratchSpaceSize * nlocal); + Kokkos::parallel_reduce( nlocal, LAMMPS_LAMBDA(int i, CounterType &counter) { if (d_mask(i) & groupbit) { - double *y = new double[8*nspecies]; - double *rwork = y + nspecies; + //double *y = new double[8*nspecies]; + //double *rwork = y + nspecies; + + //StridedArrayType _y( y ); + //StridedArrayType _rwork( rwork ); - UserRHSData userData; - userData.kFor = new double[nreactions]; - userData.rxnRateLaw = new double[nreactions]; + StridedArrayType y( d_scratchSpace.ptr_on_device() + scratchSpaceSize * i ); + StridedArrayType rwork( &y[nspecies] ); - UserRHSDataKokkos<1> userDataKokkos; - userDataKokkos.kFor.m_data = userData.kFor; - userDataKokkos.rxnRateLaw.m_data = userData.rxnRateLaw; + //UserRHSData userData; + //userData.kFor = new double[nreactions]; + //userData.rxnRateLaw = new double[nreactions]; + + //UserRHSDataKokkos<1> userDataKokkos; + //userDataKokkos.kFor.m_data = userData.kFor; + //userDataKokkos.rxnRateLaw.m_data = userData.rxnRateLaw; + + UserRHSDataKokkos<1> userData; + userData.kFor.m_data = &( rwork[7*nspecies] ); + userData.rxnRateLaw.m_data = &( userData.kFor[ nreactions ] ); CounterType counter_i; @@ -1452,12 +1466,11 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF // Solver the ODE system. if (odeIntegrationFlag == ODE_LAMMPS_RK4) { - //rk4(t_stop, y, rwork, &userData); - k_rk4(t_stop, y, rwork, userDataKokkos); + k_rk4(t_stop, y, rwork, userData); } else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) { - rkf45(nspecies, t_stop, y, rwork, &userData, counter_i); + k_rkf45(nspecies, t_stop, y, rwork, userData, counter_i); if (diagnosticFrequency == 1) { @@ -1477,9 +1490,9 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF d_dvector(ispecies,i) = y[ispecies]; } - delete [] y; - delete [] userData.kFor; - delete [] userData.rxnRateLaw; + //delete [] y; + //delete [] userData.kFor; + //delete [] userData.rxnRateLaw; // Update the iteration statistics counter. Is this unique for each iteration? counter += counter_i; @@ -1490,6 +1503,8 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF , TotalCounters // reduction value for all iterations. ); + //delete [] scratchSpace; + TimerType timer_ODE = getTimeStamp(); // Signal that dvector has been modified on this execution space. diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index e36d606525..9ac944c6a5 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -129,23 +129,23 @@ class FixRxKokkos : public FixRX { double& h0, double y[], double rwk[], void *v_params) const; //!< Classic Runge-Kutta 4th-order stepper. - template - void k_rk4(const double t_stop, double *y, double *rwork, UserDataType& userData) const; + template + void k_rk4(const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData) const; //!< Runge-Kutta-Fehlberg ODE Solver. - template - void k_rkf45(const int neq, const double t_stop, double *y, double *rwork, UserDataType& userData, CounterType& counter) const; + template + void k_rkf45(const int neq, const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData, CounterType& counter) const; //!< Runge-Kutta-Fehlberg ODE stepper function. - template - void k_rkf45_step (const int neq, const double h, double y[], double y_out[], - double rwk[], UserDataType& userData) const; + template + void k_rkf45_step (const int neq, const double h, VectorType& y, VectorType& y_out, + VectorType& rwk, UserDataType& userData) const; //!< Initial step size estimation for the Runge-Kutta-Fehlberg ODE solver. - template + template int k_rkf45_h0 (const int neq, const double t, const double t_stop, const double hmin, const double hmax, - double& h0, double y[], double rwk[], UserDataType& userData) const; + double& h0, VectorType& y, VectorType& rwk, UserDataType& userData) const; //!< ODE Solver diagnostics. void odeDiagnostics(void); -- GitLab From 4e9c8f496235016a5277a43e22f7bca5b85b4f10 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Mon, 13 Feb 2017 10:48:30 -0500 Subject: [PATCH 120/337] Update FixRXKokkos for Cuda build. Added inline and other KOKKOS macros. - Updated the function prototypes to include the necessary KOKKOS macros for __host__ and __device__ functions and inlined functions. - Changed several View definitions to match the disjoint memory spaces that only come up with Cuda builds. --- src/KOKKOS/fix_rx_kokkos.cpp | 31 +++++++++++++++++++++++++------ src/KOKKOS/fix_rx_kokkos.h | 35 +++++++++++++++++++++++++---------- 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 09a122a108..71897157f3 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -25,13 +25,13 @@ #include "neigh_list_kokkos.h" #include "neigh_request.h" #include "error.h" -#include "math_special.h" +#include "math_special_kokkos.h" #include // DBL_EPSILON using namespace LAMMPS_NS; using namespace FixConst; -using namespace MathSpecial; +using namespace MathSpecialKokkos; #ifdef DBL_EPSILON #define MY_EPSILON (10.0*DBL_EPSILON) @@ -425,8 +425,8 @@ int FixRxKokkos::k_rkf45_h0 // should we accept this? if (hnew_is_ok || iter == max_iters){ hnew = hg; - if (iter == max_iters) - fprintf(stderr, "ERROR_HIN_MAX_ITERS\n"); + //if (iter == max_iters) + // fprintf(stderr, "ERROR_HIN_MAX_ITERS\n"); break; } @@ -1407,6 +1407,14 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF ); } + // Error flag for any failures. + DAT::tdual_int_scalar k_error_flag("pair:error_flag"); + + // Initialize and sync the device flag. + k_error_flag.h_view() = 0; + k_error_flag.template modify(); + k_error_flag.template sync(); + // Create scratch array space. const size_t scratchSpaceSize = (8*nspecies + 2*nreactions); //double *scratchSpace = new double[ scratchSpaceSize * nlocal ]; @@ -1483,7 +1491,11 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF for (int ispecies = 0; ispecies < nspecies; ispecies++) { if (y[ispecies] < -MY_EPSILON) - error->one(FLERR,"Computed concentration in RK solver is < -10*DBL_EPSILON"); + { + //error->one(FLERR,"Computed concentration in RK solver is < -10*DBL_EPSILON"); + k_error_flag.d_view() = 2; + // This should be an atomic update. + } else if (y[ispecies] < MY_EPSILON) y[ispecies] = 0.0; @@ -1507,6 +1519,12 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF TimerType timer_ODE = getTimeStamp(); + // Check the error flag for any failures. + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view() == 2) + error->one(FLERR,"Computed concentration in RK solver is < -10*DBL_EPSILON"); + // Signal that dvector has been modified on this execution space. atomKK->modified( execution_space, DVECTOR_MASK ); @@ -1815,7 +1833,8 @@ void FixRxKokkos::computeLocalTemperature() { // Create an atomic view of sumWeights and dpdThetaLocal. Only needed // for Half/thread scenarios. - typedef Kokkos::View< E_FLOAT*, typename DAT::t_efloat_1d::array_layout, DeviceType, Kokkos::MemoryTraits< AtomicF< NEIGHFLAG >::value> > AtomicViewType; + //typedef Kokkos::View< E_FLOAT*, typename DAT::t_efloat_1d::array_layout, DeviceType, Kokkos::MemoryTraits< AtomicF< NEIGHFLAG >::value> > AtomicViewType; + typedef Kokkos::View< E_FLOAT*, typename DAT::t_efloat_1d::array_layout, typename DAT::t_efloat_1d::device_type, Kokkos::MemoryTraits< AtomicF< NEIGHFLAG >::value> > AtomicViewType; AtomicViewType a_dpdThetaLocal = d_dpdThetaLocal; AtomicViewType a_sumWeights = d_sumWeights; diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index 9ac944c6a5..c18ce6f151 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -49,6 +49,7 @@ class FixRxKokkos : public FixRX { { int nSteps, nIters, nFuncs, nFails; + KOKKOS_INLINE_FUNCTION CounterType() : nSteps(0), nIters(0), nFuncs(0), nFails(0) {}; KOKKOS_INLINE_FUNCTION @@ -72,7 +73,7 @@ class FixRxKokkos : public FixRX { } }; - protected: + //protected: PairDPDfdtEnergyKokkos* pairDPDEKK; double VDPD; @@ -84,13 +85,15 @@ class FixRxKokkos : public FixRX { value_type *m_data; + KOKKOS_INLINE_FUNCTION StridedArrayType() : m_data(NULL) {} + KOKKOS_INLINE_FUNCTION StridedArrayType(value_type *ptr) : m_data(ptr) {} - inline value_type& operator()(const int idx) { return m_data[Stride*idx]; } - inline const value_type& operator()(const int idx) const { return m_data[Stride*idx]; } - inline value_type& operator[](const int idx) { return m_data[Stride*idx]; } - inline const value_type& operator[](const int idx) const { return m_data[Stride*idx]; } + KOKKOS_INLINE_FUNCTION value_type& operator()(const int idx) { return m_data[Stride*idx]; } + KOKKOS_INLINE_FUNCTION const value_type& operator()(const int idx) const { return m_data[Stride*idx]; } + KOKKOS_INLINE_FUNCTION value_type& operator[](const int idx) { return m_data[Stride*idx]; } + KOKKOS_INLINE_FUNCTION const value_type& operator[](const int idx) const { return m_data[Stride*idx]; } }; template @@ -100,17 +103,22 @@ class FixRxKokkos : public FixRX { StridedArrayType rxnRateLaw; }; - void solve_reactions(const int vflag, const bool isPreForce = true); + void solve_reactions(const int vflag, const bool isPreForce); int rhs (double, const double *, double *, void *) const; int rhs_dense (double, const double *, double *, void *) const; int rhs_sparse(double, const double *, double *, void *) const; template + KOKKOS_INLINE_FUNCTION int k_rhs (double, const VectorType&, VectorType&, UserDataType& ) const; + template + KOKKOS_INLINE_FUNCTION int k_rhs_dense (double, const VectorType&, VectorType&, UserDataType& ) const; + template + KOKKOS_INLINE_FUNCTION int k_rhs_sparse(double, const VectorType&, VectorType&, UserDataType& ) const; //!< Classic Runge-Kutta 4th-order stepper. @@ -130,19 +138,23 @@ class FixRxKokkos : public FixRX { //!< Classic Runge-Kutta 4th-order stepper. template + KOKKOS_INLINE_FUNCTION void k_rk4(const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData) const; //!< Runge-Kutta-Fehlberg ODE Solver. template + KOKKOS_INLINE_FUNCTION void k_rkf45(const int neq, const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData, CounterType& counter) const; //!< Runge-Kutta-Fehlberg ODE stepper function. template + KOKKOS_INLINE_FUNCTION void k_rkf45_step (const int neq, const double h, VectorType& y, VectorType& y_out, VectorType& rwk, UserDataType& userData) const; //!< Initial step size estimation for the Runge-Kutta-Fehlberg ODE solver. template + KOKKOS_INLINE_FUNCTION int k_rkf45_h0 (const int neq, const double t, const double t_stop, const double hmin, const double hmax, double& h0, VectorType& y, VectorType& rwk, UserDataType& userData) const; @@ -155,8 +167,10 @@ class FixRxKokkos : public FixRX { int *diagnosticCounterPerODEnFuncs; DAT::tdual_int_1d k_diagnosticCounterPerODEnSteps; DAT::tdual_int_1d k_diagnosticCounterPerODEnFuncs; - typename ArrayTypes::t_int_1d d_diagnosticCounterPerODEnSteps; - typename ArrayTypes::t_int_1d d_diagnosticCounterPerODEnFuncs; + //typename ArrayTypes::t_int_1d d_diagnosticCounterPerODEnSteps; + //typename ArrayTypes::t_int_1d d_diagnosticCounterPerODEnFuncs; + typename DAT::t_int_1d d_diagnosticCounterPerODEnSteps; + typename DAT::t_int_1d d_diagnosticCounterPerODEnFuncs; typename HAT::t_int_1d h_diagnosticCounterPerODEnSteps; typename HAT::t_int_1d h_diagnosticCounterPerODEnFuncs; @@ -185,7 +199,8 @@ class FixRxKokkos : public FixRX { // Need a dual-view and device-view for dpdThetaLocal and sumWeights since they're used in several callbacks. DAT::tdual_efloat_1d k_dpdThetaLocal, k_sumWeights; - typename ArrayTypes::t_efloat_1d d_dpdThetaLocal, d_sumWeights; + //typename ArrayTypes::t_efloat_1d d_dpdThetaLocal, d_sumWeights; + typename DAT::t_efloat_1d d_dpdThetaLocal, d_sumWeights; typename HAT::t_efloat_1d h_dpdThetaLocal, h_sumWeights; template @@ -196,7 +211,7 @@ class FixRxKokkos : public FixRX { int pack_forward_comm(int , int *, double *, int, int *); void unpack_forward_comm(int , int , double *); - private: // replicate a few from FixRX + //private: // replicate a few from FixRX int my_restartFlag; }; -- GitLab From 799d55e0971331c6b54527b38ec991b2f1a08212 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Mon, 13 Feb 2017 14:24:51 -0500 Subject: [PATCH 121/337] Switched to operator()'s and Tag's for the Kokkos launch objects. - Switched from using lambda functions to operator()'s with type tags in FixRxKokkos. The lambda's were giving big problems in Cuda with the memory objects. This required that all referenced views be members of the FixRXKokkos class. - Add copymode controls to solve_reactions() to avoid the destructor freeing pointers carried forward from the copy constructor. Added the same to FixRX since its called, too. --- src/KOKKOS/fix_rx_kokkos.cpp | 316 ++++++++++++++++++++++++++++++----- src/KOKKOS/fix_rx_kokkos.h | 109 +++++++++--- src/USER-DPD/fix_rx.cpp | 3 + 3 files changed, 361 insertions(+), 67 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 71897157f3..77e948be35 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -69,13 +69,16 @@ FixRxKokkos::FixRxKokkos(LAMMPS *lmp, int narg, char **arg) : datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; + k_error_flag = DAT::tdual_int_scalar("FixRxKokkos::k_error_flag"); + printf("Inside FixRxKokkos::FixRxKokkos\n"); } template FixRxKokkos::~FixRxKokkos() { - printf("Inside FixRxKokkos::~FixRxKokkos\n"); + printf("Inside FixRxKokkos::~FixRxKokkos copymode= %d\n", copymode); + if (copymode) return; } /* ---------------------------------------------------------------------- */ @@ -1315,6 +1318,95 @@ void FixRxKokkos::pre_force(int vflag) this->solve_reactions( vflag, true ); } + +/* ---------------------------------------------------------------------- */ + +template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_zeroCounterViews, const int& i) const +{ + d_diagnosticCounterPerODEnSteps(i) = 0; + d_diagnosticCounterPerODEnFuncs(i) = 0; +} + +/* ---------------------------------------------------------------------- */ + +template + template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_solveSystems, const int& i, CounterType& counter) const +{ + if (d_mask(i) & groupbit) + { + StridedArrayType y( d_scratchSpace.ptr_on_device() + scratchSpaceSize * i ); + StridedArrayType rwork( &y[nspecies] ); + + UserRHSDataKokkos<1> userData; + userData.kFor.m_data = &( rwork[7*nspecies] ); + userData.rxnRateLaw.m_data = &( userData.kFor[ nreactions ] ); + + CounterType counter_i; + + const double theta = (localTempFlag) ? d_dpdThetaLocal(i) : d_dpdTheta(i); + + //Compute the reaction rate constants + for (int irxn = 0; irxn < nreactions; irxn++) + { + if (ZERO_RATES) + userData.kFor[irxn] = 0.0; + else + { + userData.kFor[irxn] = d_kineticsData.Arr(irxn) * + pow(theta, d_kineticsData.nArr(irxn)) * + exp(-d_kineticsData.Ea(irxn) / boltz / theta); + } + } + + // Update ConcOld and initialize the ODE solution vector y[]. + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { + const double tmp = d_dvector(ispecies, i); + d_dvector(ispecies+nspecies, i) = tmp; + y[ispecies] = tmp; + } + + // Solver the ODE system. + if (odeIntegrationFlag == ODE_LAMMPS_RK4) + { + k_rk4(t_stop, y, rwork, userData); + } + else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) + { + k_rkf45(nspecies, t_stop, y, rwork, userData, counter_i); + + if (diagnosticFrequency == 1) + { + d_diagnosticCounterPerODEnSteps(i) = counter_i.nSteps; + d_diagnosticCounterPerODEnFuncs(i) = counter_i.nFuncs; + } + } + + // Store the solution back in dvector. + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { + if (y[ispecies] < -MY_EPSILON) + { + //error->one(FLERR,"Computed concentration in RK solver is < -10*DBL_EPSILON"); + k_error_flag.d_view() = 2; + // This should be an atomic update. + } + else if (y[ispecies] < MY_EPSILON) + y[ispecies] = 0.0; + + d_dvector(ispecies,i) = y[ispecies]; + } + + // Update the iteration statistics counter. Is this unique for each iteration? + counter += counter_i; + + } // if +} + /* ---------------------------------------------------------------------- */ template @@ -1322,12 +1414,15 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF { printf("Inside FixRxKokkos::solve_reactions localTempFlag= %d isPreForce= %s\n", localTempFlag, isPreForce ? "True" : "false"); + copymode = 1; + if (update_kinetics_data) create_kinetics_data(); TimerType timer_start = getTimeStamp(); - const int nlocal = atom->nlocal; + //const int nlocal = atom->nlocal; + this->nlocal = atom->nlocal; const int nghost = atom->nghost; const int newton_pair = force->newton_pair; @@ -1339,8 +1434,8 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF const int count = nlocal + (newton_pair ? nghost : 0); memory->create_kokkos (k_dpdThetaLocal, dpdThetaLocal, count, "FixRxKokkos::dpdThetaLocal"); - d_dpdThetaLocal = k_dpdThetaLocal.d_view; - h_dpdThetaLocal = k_dpdThetaLocal.h_view; + this->d_dpdThetaLocal = k_dpdThetaLocal.d_view; + this->h_dpdThetaLocal = k_dpdThetaLocal.h_view; const int neighflag = lmp->kokkos->neighflag; @@ -1376,16 +1471,21 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF // ... // Local references to the atomKK objects. - typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); - typename ArrayTypes::t_float_2d d_dvector = atomKK->k_dvector.view(); - typename ArrayTypes::t_int_1d d_mask = atomKK->k_mask.view(); + //typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); + //typename ArrayTypes::t_float_2d d_dvector = atomKK->k_dvector.view(); + //typename ArrayTypes::t_int_1d d_mask = atomKK->k_mask.view(); + this->d_dpdTheta = atomKK->k_dpdTheta.view(); + this->d_dvector = atomKK->k_dvector.view(); + this->d_mask = atomKK->k_mask.view(); // Get up-to-date data. atomKK->sync( execution_space, MASK_MASK | DVECTOR_MASK | DPDTHETA_MASK ); // Set some constants outside of the parallel_for - const double boltz = force->boltz; - const double t_stop = update->dt; // DPD time-step and integration length. + //const double boltz = force->boltz; + //const double t_stop = update->dt; // DPD time-step and integration length. + this->boltz = force->boltz; + this->t_stop = update->dt; // DPD time-step and integration length. // Average DPD volume. Used in the RHS function. this->VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; @@ -1398,17 +1498,18 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF d_diagnosticCounterPerODEnSteps = k_diagnosticCounterPerODEnSteps.d_view; d_diagnosticCounterPerODEnFuncs = k_diagnosticCounterPerODEnFuncs.d_view; - Kokkos::parallel_for ( nlocal, - LAMMPS_LAMBDA(const int i) - { - d_diagnosticCounterPerODEnSteps(i) = 0; - d_diagnosticCounterPerODEnFuncs(i) = 0; - } - ); + Kokkos::parallel_for ( Kokkos::RangePolicy(0,nlocal), *this); + //Kokkos::parallel_for ( nlocal, + // LAMMPS_LAMBDA(const int i) + // { + // d_diagnosticCounterPerODEnSteps(i) = 0; + // d_diagnosticCounterPerODEnFuncs(i) = 0; + // } + // ); } // Error flag for any failures. - DAT::tdual_int_scalar k_error_flag("pair:error_flag"); + //DAT::tdual_int_scalar k_error_flag("pair:error_flag"); // Initialize and sync the device flag. k_error_flag.h_view() = 0; @@ -1416,11 +1517,14 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF k_error_flag.template sync(); // Create scratch array space. - const size_t scratchSpaceSize = (8*nspecies + 2*nreactions); + //const size_t scratchSpaceSize = (8*nspecies + 2*nreactions); + this->scratchSpaceSize = (8*nspecies + 2*nreactions); //double *scratchSpace = new double[ scratchSpaceSize * nlocal ]; - typename ArrayTypes::t_double_1d d_scratchSpace("d_scratchSpace", scratchSpaceSize * nlocal); + //typename ArrayTypes::t_double_1d d_scratchSpace("d_scratchSpace", scratchSpaceSize * nlocal); + memory->create_kokkos (d_scratchSpace, nlocal*scratchSpaceSize, "FixRxKokkos::d_scratchSpace"); +#if 0 Kokkos::parallel_reduce( nlocal, LAMMPS_LAMBDA(int i, CounterType &counter) { if (d_mask(i) & groupbit) @@ -1514,8 +1618,15 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF , TotalCounters // reduction value for all iterations. ); +#else + if (setRatesToZero) + Kokkos::parallel_reduce( Kokkos::RangePolicy >(0,nlocal), *this, TotalCounters); + else + Kokkos::parallel_reduce( Kokkos::RangePolicy >(0,nlocal), *this, TotalCounters); +#endif //delete [] scratchSpace; + memory->destroy_kokkos (d_scratchSpace); TimerType timer_ODE = getTimeStamp(); @@ -1570,6 +1681,8 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF (diagnosticFrequency < 0 && update->ntimestep == update->laststep) ) this->odeDiagnostics(); } + + copymode = 0; } /* ---------------------------------------------------------------------- */ @@ -1654,7 +1767,8 @@ void FixRxKokkos::odeDiagnostics(void) double my_max[numCounters], my_min[numCounters]; - const int nlocal = atom->nlocal; + //const int nlocal = atom->nlocal; + nlocal = atom->nlocal; HAT::t_int_1d h_mask = atomKK->k_mask.h_view; for (int i = 0; i < numCounters; ++i) @@ -1760,17 +1874,122 @@ void FixRxKokkos::odeDiagnostics(void) /* ---------------------------------------------------------------------- */ +template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_zeroTemperatureViews, const int& i) const +{ + d_sumWeights(i) = 0.0; + d_dpdThetaLocal(i) = 0.0; +} + +/* ---------------------------------------------------------------------- */ + +template + template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_firstPairOperator, const int& ii) const +{ + // Create an atomic view of sumWeights and dpdThetaLocal. Only needed + // for Half/thread scenarios. + typedef Kokkos::View< E_FLOAT*, typename DAT::t_efloat_1d::array_layout, typename DAT::t_efloat_1d::device_type, Kokkos::MemoryTraits< AtomicF< NEIGHFLAG >::value> > AtomicViewType; + + AtomicViewType a_dpdThetaLocal = d_dpdThetaLocal; + AtomicViewType a_sumWeights = d_sumWeights; + + // Local scalar accumulators. + double i_dpdThetaLocal = 0.0; + double i_sumWeights = 0.0; + + const int i = d_ilist(ii); + + const double xtmp = d_x(i,0); + const double ytmp = d_x(i,1); + const double ztmp = d_x(i,2); + const int itype = d_type(i); + + const int jnum = d_numneigh(i); + + for (int jj = 0; jj < jnum; jj++) + { + const int j = (d_neighbors(i,jj) & NEIGHMASK); + const int jtype = d_type(j); + + const double delx = xtmp - d_x(j,0); + const double dely = ytmp - d_x(j,1); + const double delz = ztmp - d_x(j,2); + const double rsq = delx*delx + dely*dely + delz*delz; + + const double cutsq_ij = d_cutsq(itype,jtype); + + if (rsq < cutsq_ij) + { + const double rcut = sqrt( cutsq_ij ); + double rij = sqrt(rsq); + double ratio = rij/rcut; + + double wij = 0.0; + + // Lucy's Weight Function + if (WT_FLAG == LUCY) + { + wij = (1.0+3.0*ratio) * (1.0-ratio)*(1.0-ratio)*(1.0-ratio); + i_dpdThetaLocal += wij / d_dpdTheta(j); + if (NEWTON_PAIR || j < nlocal) + a_dpdThetaLocal(j) += wij / d_dpdTheta(i); + } + + i_sumWeights += wij; + if (NEWTON_PAIR || j < nlocal) + a_sumWeights(j) += wij; + } + } + + // Update, don't assign, the array value (because another iteration may have hit it). + a_dpdThetaLocal(i) += i_dpdThetaLocal; + a_sumWeights(i) += i_sumWeights; +} + +/* ---------------------------------------------------------------------- */ + +template + template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_2ndPairOperator, const int& i) const +{ + double wij = 0.0; + + // Lucy Weight Function + if (WT_FLAG == LUCY) + { + wij = 1.0; + d_dpdThetaLocal(i) += wij / d_dpdTheta(i); + } + d_sumWeights(i) += wij; + + // Normalized local temperature + d_dpdThetaLocal(i) = d_dpdThetaLocal(i) / d_sumWeights(i); + + if (LOCAL_TEMP_FLAG == HARMONIC) + d_dpdThetaLocal(i) = 1.0 / d_dpdThetaLocal(i); +} + +/* ---------------------------------------------------------------------- */ + template template void FixRxKokkos::computeLocalTemperature() { - typename ArrayTypes::t_x_array_randomread d_x = atomKK->k_x.view(); - typename ArrayTypes::t_int_1d_randomread d_type = atomKK->k_type.view(); - typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); + //typename ArrayTypes::t_x_array_randomread d_x = atomKK->k_x.view(); + //typename ArrayTypes::t_int_1d_randomread d_type = atomKK->k_type.view(); + //typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); + d_x = atomKK->k_x.view(); + d_type = atomKK->k_type.view(); + d_dpdTheta = atomKK->k_dpdTheta.view(); atomKK->sync(execution_space, X_MASK | TYPE_MASK | DPDTHETA_MASK ); - const int nlocal = atom->nlocal; + //const int nlocal = atom->nlocal; + nlocal = atom->nlocal; const int nghost = atom->nghost; printf("Inside FixRxKokkos::computeLocalTemperature: %d %d %d %d %d %d %d\n", WT_FLAG, LOCAL_TEMP_FLAG, NEWTON_PAIR, (int)lmp->kokkos->neighflag, NEIGHFLAG, nlocal, nghost); @@ -1780,14 +1999,15 @@ void FixRxKokkos::computeLocalTemperature() //typename ArrayTypes::t_ffloat_2d d_cutsq = pairDPDEKK->k_cutsq.template view::tdual_ffloat_2d k_cutsq; - typename ArrayTypes::t_ffloat_2d d_cutsq; - double **h_cutsq; + //typename ArrayTypes::tdual_ffloat_2d k_cutsq; + //typename ArrayTypes::t_ffloat_2d d_cutsq; + //double **h_cutsq; { const int ntypes = atom->ntypes; - memory->create_kokkos (k_cutsq, h_cutsq, ntypes+1, ntypes+1, "pair:cutsq"); + //memory->create_kokkos (k_cutsq, h_cutsq, ntypes+1, ntypes+1, "pair:cutsq"); + memory->create_kokkos (k_cutsq, ntypes+1, ntypes+1, "FixRxKokkos::k_cutsq"); d_cutsq = k_cutsq.template view(); for (int i = 1; i <= ntypes; ++i) @@ -1804,30 +2024,37 @@ void FixRxKokkos::computeLocalTemperature() // Initialize the local temperature weight array int sumWeightsCt = nlocal + (NEWTON_PAIR ? nghost : 0); - memory->create_kokkos (k_sumWeights, sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); + //memory->create_kokkos (k_sumWeights, sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); + memory->create_kokkos (k_sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); d_sumWeights = k_sumWeights.d_view; h_sumWeights = k_sumWeights.h_view; // Initialize the accumulator to zero ... - Kokkos::parallel_for (sumWeightsCt, - LAMMPS_LAMBDA(const int i) - { - d_sumWeights(i) = 0.0; - } - ); + //Kokkos::parallel_for (sumWeightsCt, + // LAMMPS_LAMBDA(const int i) + // { + // d_sumWeights(i) = 0.0; + // } + // ); + + Kokkos::parallel_for (Kokkos::RangePolicy(0, sumWeightsCt), *this); // Local list views. (This isn't working!) NeighListKokkos* k_list = static_cast*>(list); if (not(list->kokkos)) error->one(FLERR,"list is not a Kokkos list\n"); - typename ArrayTypes::t_neighbors_2d d_neighbors = k_list->d_neighbors; - typename ArrayTypes::t_int_1d d_ilist = k_list->d_ilist; - typename ArrayTypes::t_int_1d d_numneigh = k_list->d_numneigh; + //typename ArrayTypes::t_neighbors_2d d_neighbors = k_list->d_neighbors; + //typename ArrayTypes::t_int_1d d_ilist = k_list->d_ilist; + //typename ArrayTypes::t_int_1d d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + d_numneigh = k_list->d_numneigh; const int inum = list->inum; // loop over neighbors of my atoms +#if 0 Kokkos::parallel_for ( inum, LAMMPS_LAMBDA(const int ii) { @@ -1892,6 +2119,9 @@ void FixRxKokkos::computeLocalTemperature() a_sumWeights(i) += i_sumWeights; } ); +#else + Kokkos::parallel_for (Kokkos::RangePolicy >(0, inum), *this); +#endif // Signal that dpdThetaLocal and sumWeights have been modified. k_dpdThetaLocal.template modify(); @@ -1905,6 +2135,7 @@ void FixRxKokkos::computeLocalTemperature() k_sumWeights. template sync(); // self-interaction for local temperature +#if 0 Kokkos::parallel_for ( nlocal, LAMMPS_LAMBDA(const int i) { @@ -1925,10 +2156,15 @@ void FixRxKokkos::computeLocalTemperature() d_dpdThetaLocal(i) = 1.0 / d_dpdThetaLocal(i); } ); +#else + Kokkos::parallel_for (Kokkos::RangePolicy >(0, nlocal), *this); +#endif // Clean up the local kokkos data. - memory->destroy_kokkos(k_cutsq, h_cutsq); - memory->destroy_kokkos(k_sumWeights, sumWeights); + //memory->destroy_kokkos(k_cutsq, h_cutsq); + memory->destroy_kokkos(k_cutsq); + //memory->destroy_kokkos(k_sumWeights, sumWeights); + memory->destroy_kokkos(k_sumWeights); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h index c18ce6f151..169a87a2f9 100644 --- a/src/KOKKOS/fix_rx_kokkos.h +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -30,6 +30,47 @@ FixStyle(rx/kk/host,FixRxKokkos) namespace LAMMPS_NS { +struct Tag_FixRxKokkos_zeroTemperatureViews {}; +struct Tag_FixRxKokkos_zeroCounterViews {}; + +template +struct Tag_FixRxKokkos_firstPairOperator {}; + +template +struct Tag_FixRxKokkos_2ndPairOperator {}; + +template +struct Tag_FixRxKokkos_solveSystems {}; + +struct s_CounterType +{ + int nSteps, nIters, nFuncs, nFails; + + KOKKOS_INLINE_FUNCTION + s_CounterType() : nSteps(0), nIters(0), nFuncs(0), nFails(0) {}; + + KOKKOS_INLINE_FUNCTION + s_CounterType& operator+=(const s_CounterType &rhs) + { + nSteps += rhs.nSteps; + nIters += rhs.nIters; + nFuncs += rhs.nFuncs; + nFails += rhs.nFails; + return *this; + } + + KOKKOS_INLINE_FUNCTION + volatile s_CounterType& operator+=(const volatile s_CounterType &rhs) volatile + { + nSteps += rhs.nSteps; + nIters += rhs.nIters; + nFuncs += rhs.nFuncs; + nFails += rhs.nFails; + return *this; + } +}; +typedef struct s_CounterType CounterType; + template class FixRxKokkos : public FixRX { public: @@ -41,42 +82,34 @@ class FixRxKokkos : public FixRX { virtual void setup_pre_force(int); virtual void pre_force(int); - //template - // KOKKOS_INLINE_FUNCTION - //void operator()(SolverTag, const int&) const; + // Define a value_type here for the reduction operator on CounterType. + typedef CounterType value_type; - struct CounterType - { - int nSteps, nIters, nFuncs, nFails; + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_zeroCounterViews, const int&) const; - KOKKOS_INLINE_FUNCTION - CounterType() : nSteps(0), nIters(0), nFuncs(0), nFails(0) {}; + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_zeroTemperatureViews, const int&) const; - KOKKOS_INLINE_FUNCTION - CounterType& operator+=(const CounterType &rhs) - { - nSteps += rhs.nSteps; - nIters += rhs.nIters; - nFuncs += rhs.nFuncs; - nFails += rhs.nFails; - return *this; - } + template + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_firstPairOperator, const int&) const; - KOKKOS_INLINE_FUNCTION - volatile CounterType& operator+=(const volatile CounterType &rhs) volatile - { - nSteps += rhs.nSteps; - nIters += rhs.nIters; - nFuncs += rhs.nFuncs; - nFails += rhs.nFails; - return *this; - } - }; + template + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_2ndPairOperator, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_solveSystems, const int&, CounterType&) const; //protected: PairDPDfdtEnergyKokkos* pairDPDEKK; double VDPD; + double boltz; + double t_stop; + template struct StridedArrayType { @@ -203,6 +236,27 @@ class FixRxKokkos : public FixRX { typename DAT::t_efloat_1d d_dpdThetaLocal, d_sumWeights; typename HAT::t_efloat_1d h_dpdThetaLocal, h_sumWeights; + typename ArrayTypes::t_x_array_randomread d_x ; + typename ArrayTypes::t_int_1d_randomread d_type ; + typename ArrayTypes::t_efloat_1d d_dpdTheta; + + typename ArrayTypes::tdual_ffloat_2d k_cutsq; + typename ArrayTypes::t_ffloat_2d d_cutsq; + //double **h_cutsq; + + typename ArrayTypes::t_neighbors_2d d_neighbors; + typename ArrayTypes::t_int_1d d_ilist ; + typename ArrayTypes::t_int_1d d_numneigh ; + + typename ArrayTypes::t_float_2d d_dvector; + typename ArrayTypes::t_int_1d d_mask ; + + typename ArrayTypes::t_double_1d d_scratchSpace; + size_t scratchSpaceSize; + + // Error flag for any failures. + DAT::tdual_int_scalar k_error_flag; + template void computeLocalTemperature(); @@ -213,6 +267,7 @@ class FixRxKokkos : public FixRX { //private: // replicate a few from FixRX int my_restartFlag; + int nlocal; }; } diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 28321dbecf..8a8195da19 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -220,6 +220,9 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : FixRX::~FixRX() { + printf("Inside FixRX::~FixRX copymode= %d\n", copymode); + if (copymode) return; + // De-Allocate memory to prevent memory leak for (int ii = 0; ii < nreactions; ii++){ delete [] stoich[ii]; -- GitLab From acc5bde0fe53a2e9052ee7a27ceafb42acbea114 Mon Sep 17 00:00:00 2001 From: Christopher Stone Date: Mon, 13 Feb 2017 16:36:30 -0500 Subject: [PATCH 122/337] Removed printf's from FixRXKokkos and FixRX. - Commented out the printf's in FixRXKokkos and FixRX used for active debugging. --- src/KOKKOS/fix_rx_kokkos.cpp | 28 ++++++++++++++-------------- src/USER-DPD/fix_rx.cpp | 18 +++++++++--------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 77e948be35..08a20ac9a7 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -71,13 +71,13 @@ FixRxKokkos::FixRxKokkos(LAMMPS *lmp, int narg, char **arg) : k_error_flag = DAT::tdual_int_scalar("FixRxKokkos::k_error_flag"); - printf("Inside FixRxKokkos::FixRxKokkos\n"); + //printf("Inside FixRxKokkos::FixRxKokkos\n"); } template FixRxKokkos::~FixRxKokkos() { - printf("Inside FixRxKokkos::~FixRxKokkos copymode= %d\n", copymode); + //printf("Inside FixRxKokkos::~FixRxKokkos copymode= %d\n", copymode); if (copymode) return; } @@ -98,7 +98,7 @@ void FixRxKokkos::post_constructor() template void FixRxKokkos::init() { - printf("Inside FixRxKokkos::init\n"); + //printf("Inside FixRxKokkos::init\n"); // Call the parent's version. //FixRX::init(); @@ -153,7 +153,7 @@ void FixRxKokkos::init() template void FixRxKokkos::init_list(int, class NeighList* ptr) { - printf("Inside FixRxKokkos::init_list\n"); + //printf("Inside FixRxKokkos::init_list\n"); this->list = ptr; } @@ -1220,7 +1220,7 @@ void FixRxKokkos::operator()(SolverType, const int &i) const template void FixRxKokkos::create_kinetics_data(void) { - printf("Inside FixRxKokkos::create_kinetics_data\n"); + //printf("Inside FixRxKokkos::create_kinetics_data\n"); memory->create_kokkos( d_kineticsData.Arr, h_kineticsData.Arr, nreactions, "KineticsType::Arr"); memory->create_kokkos( d_kineticsData.nArr, h_kineticsData.nArr, nreactions, "KineticsType::nArr"); @@ -1301,7 +1301,7 @@ void FixRxKokkos::create_kinetics_data(void) template void FixRxKokkos::setup_pre_force(int vflag) { - printf("Inside FixRxKokkos::setup_pre_force restartFlag= %d\n", my_restartFlag); + //printf("Inside FixRxKokkos::setup_pre_force restartFlag= %d\n", my_restartFlag); if (my_restartFlag) my_restartFlag = 0; @@ -1314,7 +1314,7 @@ void FixRxKokkos::setup_pre_force(int vflag) template void FixRxKokkos::pre_force(int vflag) { - printf("Inside FixRxKokkos::pre_force localTempFlag= %d\n", localTempFlag); + //printf("Inside FixRxKokkos::pre_force localTempFlag= %d\n", localTempFlag); this->solve_reactions( vflag, true ); } @@ -1412,7 +1412,7 @@ void FixRxKokkos::operator()(Tag_FixRxKokkos_solveSystems void FixRxKokkos::solve_reactions(const int vflag, const bool isPreForce) { - printf("Inside FixRxKokkos::solve_reactions localTempFlag= %d isPreForce= %s\n", localTempFlag, isPreForce ? "True" : "false"); + //printf("Inside FixRxKokkos::solve_reactions localTempFlag= %d isPreForce= %s\n", localTempFlag, isPreForce ? "True" : "false"); copymode = 1; @@ -1653,11 +1653,11 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF double time_ODE = getElapsedTime(timer_localTemperature, timer_ODE); - printf("me= %d kokkos total= %g temp= %g ode= %g comm= %g nlocal= %d nfc= %d %d\n", comm->me, - getElapsedTime(timer_start, timer_stop), - getElapsedTime(timer_start, timer_localTemperature), - getElapsedTime(timer_localTemperature, timer_ODE), - getElapsedTime(timer_ODE, timer_stop), nlocal, TotalCounters.nFuncs, TotalCounters.nSteps); + //printf("me= %d kokkos total= %g temp= %g ode= %g comm= %g nlocal= %d nfc= %d %d\n", comm->me, + // getElapsedTime(timer_start, timer_stop), + // getElapsedTime(timer_start, timer_localTemperature), + // getElapsedTime(timer_localTemperature, timer_ODE), + // getElapsedTime(timer_ODE, timer_stop), nlocal, TotalCounters.nFuncs, TotalCounters.nSteps); // Warn the user if a failure was detected in the ODE solver. if (TotalCounters.nFails > 0){ @@ -1992,7 +1992,7 @@ void FixRxKokkos::computeLocalTemperature() nlocal = atom->nlocal; const int nghost = atom->nghost; - printf("Inside FixRxKokkos::computeLocalTemperature: %d %d %d %d %d %d %d\n", WT_FLAG, LOCAL_TEMP_FLAG, NEWTON_PAIR, (int)lmp->kokkos->neighflag, NEIGHFLAG, nlocal, nghost); + //printf("Inside FixRxKokkos::computeLocalTemperature: %d %d %d %d %d %d %d\n", WT_FLAG, LOCAL_TEMP_FLAG, NEWTON_PAIR, (int)lmp->kokkos->neighflag, NEIGHFLAG, nlocal, nghost); // Pull from pairDPDE. The pairDPDEKK objects are protected so recreate here for now. //pairDPDEKK->k_cutsq.template sync(); diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 8a8195da19..a8939e27f2 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -220,7 +220,7 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : FixRX::~FixRX() { - printf("Inside FixRX::~FixRX copymode= %d\n", copymode); + //printf("Inside FixRX::~FixRX copymode= %d\n", copymode); if (copymode) return; // De-Allocate memory to prevent memory leak @@ -756,8 +756,8 @@ void FixRX::pre_force(int vflag) memory->create( diagnosticCounterPerODE[FuncSum], nlocal, "FixRX::diagnosticCounterPerODE"); } - #pragma omp parallel \ - reduction(+: nSteps, nIters, nFuncs, nFails ) + //#pragma omp parallel \ + // reduction(+: nSteps, nIters, nFuncs, nFails ) { double *rwork = new double[8*nspecies]; @@ -767,7 +767,7 @@ void FixRX::pre_force(int vflag) int ode_counter[4] = { 0 }; - #pragma omp for schedule(runtime) + //#pragma omp for schedule(runtime) for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) @@ -810,11 +810,11 @@ void FixRX::pre_force(int vflag) double time_ODE = getElapsedTime(timer_localTemperature, timer_ODE); - printf("me= %d total= %g temp= %g ode= %g comm= %g nlocal= %d nfc= %d %d\n", comm->me, - getElapsedTime(timer_start, timer_stop), - getElapsedTime(timer_start, timer_localTemperature), - getElapsedTime(timer_localTemperature, timer_ODE), - getElapsedTime(timer_ODE, timer_stop), nlocal, nFuncs, nSteps); + //printf("me= %d total= %g temp= %g ode= %g comm= %g nlocal= %d nfc= %d %d\n", comm->me, + // getElapsedTime(timer_start, timer_stop), + // getElapsedTime(timer_start, timer_localTemperature), + // getElapsedTime(timer_localTemperature, timer_ODE), + // getElapsedTime(timer_ODE, timer_stop), nlocal, nFuncs, nSteps); // Warn the user if a failure was detected in the ODE solver. if (nFails > 0){ -- GitLab From 0a751c59012ec2ef97d5d5313512983ef77f2c0f Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Wed, 22 Feb 2017 11:52:20 -0500 Subject: [PATCH 123/337] KOKKOS: fix a compile-time error caused by merge of patch 21Feb17 Remove the unused PairHybridOverlayKokkos::modify_requests() method The patch removed the parent PairHybridOverlay::modify_requests() --- src/KOKKOS/pair_hybrid_overlay_kokkos.cpp | 35 ----------------------- src/KOKKOS/pair_hybrid_overlay_kokkos.h | 3 -- 2 files changed, 38 deletions(-) diff --git a/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp b/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp index 79d9c63221..aa5d895155 100644 --- a/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp +++ b/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp @@ -105,38 +105,3 @@ void PairHybridOverlayKokkos::coeff(int narg, char **arg) if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } - -/* ---------------------------------------------------------------------- - combine sub-style neigh list requests and create new ones if needed -------------------------------------------------------------------------- */ - -void PairHybridOverlayKokkos::modify_requests() -{ - int i,j; - NeighRequest *irq,*jrq; - - // loop over pair requests only - // if a previous list is same kind with same skip attributes - // then make this one a copy list of that one - // works whether both lists are no-skip or yes-skip - // will not point a list at a copy list, but at copy list's parent - - for (i = 0; i < neighbor->nrequest; i++) { - if (!neighbor->requests[i]->pair) continue; - - irq = neighbor->requests[i]; - for (j = 0; j < i; j++) { - if (!neighbor->requests[j]->pair) continue; - jrq = neighbor->requests[j]; - if (irq->same_kind(jrq) && irq->same_skip(jrq)) { - irq->copy = 1; - irq->otherlist = j; - break; - } - } - } - - // perform same operations on skip lists as pair style = hybrid - - PairHybrid::modify_requests(); -} diff --git a/src/KOKKOS/pair_hybrid_overlay_kokkos.h b/src/KOKKOS/pair_hybrid_overlay_kokkos.h index 2e4899a1f3..6bec57c453 100644 --- a/src/KOKKOS/pair_hybrid_overlay_kokkos.h +++ b/src/KOKKOS/pair_hybrid_overlay_kokkos.h @@ -29,9 +29,6 @@ class PairHybridOverlayKokkos : public PairHybridKokkos { PairHybridOverlayKokkos(class LAMMPS *); virtual ~PairHybridOverlayKokkos() {} void coeff(int, char **); - - private: - void modify_requests(); }; } -- GitLab From 2db66e49b444c829a27e7a874d0fba49faf0387b Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 30 Dec 2016 12:16:54 -0500 Subject: [PATCH 124/337] USER-DPD: make pair_dpd_fdt* check more generically for use of fix_shardlow Allows easier experimentation of alternative shardlow implementations. --- src/USER-DPD/pair_dpd_fdt.cpp | 2 +- src/USER-DPD/pair_dpd_fdt_energy.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/USER-DPD/pair_dpd_fdt.cpp b/src/USER-DPD/pair_dpd_fdt.cpp index e7e9febd82..90aa4f1eaf 100644 --- a/src/USER-DPD/pair_dpd_fdt.cpp +++ b/src/USER-DPD/pair_dpd_fdt.cpp @@ -325,7 +325,7 @@ void PairDPDfdt::init_style() splitFDT_flag = false; int irequest = neighbor->request(this,instance_me); for (int i = 0; i < modify->nfix; i++) - if (strcmp(modify->fix[i]->style,"shardlow") == 0){ + if (strncmp(modify->fix[i]->style,"shardlow", 8) == 0){ splitFDT_flag = true; } } diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp index 9d08393b9d..ad6310a283 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.cpp +++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp @@ -414,7 +414,7 @@ void PairDPDfdtEnergy::init_style() splitFDT_flag = false; int irequest = neighbor->request(this,instance_me); for (int i = 0; i < modify->nfix; i++) - if (strcmp(modify->fix[i]->style,"shardlow") == 0){ + if (strncmp(modify->fix[i]->style,"shardlow", 8) == 0){ splitFDT_flag = true; } -- GitLab From 0512e7886067fbed5d9178654ffe74b16020e258 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 30 Dec 2016 14:42:21 -0500 Subject: [PATCH 125/337] USER-DPD: new neighbor list code for SSA that gives neighbors to ghosts. This simplifies the processing of the neighbor list in fix_shardlow. NOTE: pair evaluation order changes, causing numerical differences! --- src/USER-DPD/fix_shardlow.cpp | 18 ++- src/USER-DPD/nbin_ssa.cpp | 27 ++-- src/USER-DPD/nbin_ssa.h | 2 +- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 147 ++++++++---------- src/USER-DPD/npair_half_bin_newton_ssa.h | 2 +- src/USER-DPD/npair_halffull_newton_ssa.cpp | 4 + .../nstencil_half_bin_2d_newton_ssa.cpp | 12 +- .../nstencil_half_bin_2d_newton_ssa.h | 2 +- .../nstencil_half_bin_3d_newton_ssa.cpp | 18 ++- .../nstencil_half_bin_3d_newton_ssa.h | 2 +- src/USER-DPD/nstencil_ssa.h | 2 +- 11 files changed, 126 insertions(+), 110 deletions(-) diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index bf8959fa9f..56597697f7 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -148,6 +148,7 @@ void FixShardlow::init() int irequest = neighbor->request(this,instance_me); neighbor->requests[irequest]->pair = 0; neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->ghost= 1; neighbor->requests[irequest]->ssa = 1; } @@ -498,7 +499,7 @@ void FixShardlow::ssa_update_dpde( void FixShardlow::initial_integrate(int vflag) { - int i,ii,inum; + int i,ii,inum,anum; int *ilist; int nlocal = atom->nlocal; @@ -531,10 +532,12 @@ void FixShardlow::initial_integrate(int vflag) v_t0 = (double (*)[3]) memory->smalloc(sizeof(double)*3*nghost, "FixShardlow:v_t0"); inum = list->inum; + anum = inum + list->gnum; ilist = list->ilist; dtsqrt = sqrt(update->dt); + ii = 0; //Loop over all 14 directions (8 stages) for (airnum = 1; airnum <=8; airnum++){ @@ -549,15 +552,16 @@ void FixShardlow::initial_integrate(int vflag) } } - // Loop over neighbors of my atoms - for (ii = 0; ii < inum; ii++) { + // process neighbors in this AIR + while (ii < anum) { i = ilist[ii]; - int start = (airnum < 2) ? 0 : list->ndxAIR_ssa[i][airnum - 2]; - int len = list->ndxAIR_ssa[i][airnum - 1] - start; + if (atom->ssaAIR[i] > airnum) break; /* done with curent AIR */ + int len = list->numneigh[i]; if (len > 0) { - if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][start]), len); - else ssa_update_dpd(i, &(list->firstneigh[i][start]), len); + if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][0]), len); + else ssa_update_dpd(i, &(list->firstneigh[i][0]), len); } + ii++; } // Communicate the ghost deltas to the atom owners diff --git a/src/USER-DPD/nbin_ssa.cpp b/src/USER-DPD/nbin_ssa.cpp index 73da5e0df3..c2d780bac6 100644 --- a/src/USER-DPD/nbin_ssa.cpp +++ b/src/USER-DPD/nbin_ssa.cpp @@ -33,14 +33,13 @@ NBinSSA::NBinSSA(LAMMPS *lmp) : NBinStandard(lmp) bins_ssa = NULL; maxhead_ssa = 0; binhead_ssa = NULL; - gbinhead_ssa = NULL; + for (int i = 0; i < 9; i++) gairhead_ssa[i] = -1; } NBinSSA::~NBinSSA() { memory->destroy(bins_ssa); memory->destroy(binhead_ssa); - memory->destroy(gbinhead_ssa); } /* ---------------------------------------------------------------------- @@ -62,8 +61,11 @@ void NBinSSA::bin_atoms() last_bin = update->ntimestep; + for (i = 0; i < 9; i++) { + gairhead_ssa[i] = -1; + } + for (i = 0; i < mbins; i++) { - gbinhead_ssa[i] = -1; binhead_ssa[i] = -1; } @@ -73,19 +75,19 @@ void NBinSSA::bin_atoms() int bitmask = group->bitmask[includegroup]; int nowned = atom->nlocal; // NOTE: nlocal was set to atom->nfirst above for (i = nall-1; i >= nowned; i--) { - if (ssaAIR[i] < 2) continue; // skip ghost atoms not in AIR + ibin = ssaAIR[i]; + if (ibin < 2) continue; // skip ghost atoms not in AIR if (mask[i] & bitmask) { - ibin = coord2bin(x[i]); - bins_ssa[i] = gbinhead_ssa[ibin]; - gbinhead_ssa[ibin] = i; + bins_ssa[i] = gairhead_ssa[ibin]; + gairhead_ssa[ibin] = i; } } } else { for (i = nall-1; i >= nlocal; i--) { - if (ssaAIR[i] < 2) continue; // skip ghost atoms not in AIR - ibin = coord2bin(x[i]); - bins_ssa[i] = gbinhead_ssa[ibin]; - gbinhead_ssa[ibin] = i; + ibin = ssaAIR[i]; + if (ibin < 2) continue; // skip ghost atoms not in AIR + bins_ssa[i] = gairhead_ssa[ibin]; + gairhead_ssa[ibin] = i; } } for (i = nlocal-1; i >= 0; i--) { @@ -103,10 +105,8 @@ void NBinSSA::bin_atoms_setup(int nall) if (mbins > maxhead_ssa) { maxhead_ssa = mbins; - memory->destroy(gbinhead_ssa); memory->destroy(binhead_ssa); memory->create(binhead_ssa,maxhead_ssa,"binhead_ssa"); - memory->create(gbinhead_ssa,maxhead_ssa,"gbinhead_ssa"); } if (nall > maxbin_ssa) { @@ -125,7 +125,6 @@ bigint NBinSSA::memory_usage() if (maxbin_ssa) bytes += memory->usage(bins_ssa,maxbin_ssa); if (maxhead_ssa) { bytes += memory->usage(binhead_ssa,maxhead_ssa); - bytes += memory->usage(gbinhead_ssa,maxhead_ssa); } return bytes; } diff --git a/src/USER-DPD/nbin_ssa.h b/src/USER-DPD/nbin_ssa.h index f0699b3a7a..5a2562d305 100644 --- a/src/USER-DPD/nbin_ssa.h +++ b/src/USER-DPD/nbin_ssa.h @@ -32,7 +32,7 @@ class NBinSSA : public NBinStandard { int *bins_ssa; // index of next atom in each bin int maxbin_ssa; // size of bins_ssa array int *binhead_ssa; // index of 1st local atom in each bin - int *gbinhead_ssa; // index of 1st ghost atom in each bin + int gairhead_ssa[9]; // index of 1st ghost atom in each AIR int maxhead_ssa; // size of binhead_ssa and gbinhead_ssa arrays NBinSSA(class LAMMPS *); diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index fd67b66e9b..4c9dc95308 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -32,12 +32,6 @@ using namespace LAMMPS_NS; -// allocate space for static class variable -// prototype for non-class function - -static int *ssaAIRptr; -static int cmp_ssaAIR(const void *, const void *); - /* ---------------------------------------------------------------------- */ NPairHalfBinNewtonSSA::NPairHalfBinNewtonSSA(LAMMPS *lmp) : NPair(lmp) {} @@ -64,9 +58,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) tagint **special = atom->special; int **nspecial = atom->nspecial; int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; if (includegroup) nlocal = atom->nfirst; - int *ssaAIR = atom->ssaAIR; int *molindex = atom->molindex; int *molatom = atom->molatom; @@ -89,16 +81,18 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) if (!nb_ssa) error->one(FLERR, "NBin wasn't a NBinSSA object"); int *bins_ssa = nb_ssa->bins_ssa; int *binhead_ssa = nb_ssa->binhead_ssa; - int *gbinhead_ssa = nb_ssa->gbinhead_ssa; + int *gairhead_ssa = &(nb_ssa->gairhead_ssa[0]); int inum = 0; + int gnum = 0; + int xbin,ybin,zbin,xbin2,ybin2,zbin2; + int **stencilxyz = ns_ssa->stencilxyz; ipage->reset(); // loop over owned atoms, storing half of the neighbors for (i = 0; i < nlocal; i++) { - int AIRct[8] = { 0 }; n = 0; neighptr = ipage->vget(); @@ -175,51 +169,6 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) } } } - AIRct[0] = n; - - // loop over AIR ghost atoms in all bins in "full" stencil - // Note: the non-AIR ghost atoms have already been filtered out - // That is a significant time savings because of the "full" stencil - // Note2: only non-pure locals can have ghosts as neighbors - - if (ssaAIR[i] == 1) for (k = 0; k < nstencil_full; k++) { - for (j = gbinhead_ssa[ibin+stencil[k]]; j >= 0; - j = bins_ssa[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) { - neighptr[n++] = j; - ++(AIRct[ssaAIR[j] - 1]); - } else if (domain->minimum_image_check(delx,dely,delz)) { - neighptr[n++] = j; - ++(AIRct[ssaAIR[j] - 1]); - } else if (which > 0) { - neighptr[n++] = j ^ (which << SBBITS); - ++(AIRct[ssaAIR[j] - 1]); - } - } else { - neighptr[n++] = j; - ++(AIRct[ssaAIR[j] - 1]); - } - } - } - } ilist[inum++] = i; firstneigh[i] = neighptr; @@ -227,34 +176,74 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) ipage->vgot(n); if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } - // sort the ghosts in the neighbor list by their ssaAIR number + list->inum = inum; - ssaAIRptr = atom->ssaAIR; - qsort(&(neighptr[AIRct[0]]), n - AIRct[0], sizeof(int), cmp_ssaAIR); + // loop over AIR ghost atoms, storing their local neighbors + // since these are ghosts, must check if stencil bin is out of bounds + for (int airnum = 2; airnum <= 8; airnum++) { + for (i = gairhead_ssa[airnum]; i >= 0; i = bins_ssa[i]) { + n = 0; + neighptr = ipage->vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } - // do a prefix sum on the counts to turn them into indexes + ibin = coord2bin(x[i],xbin,ybin,zbin); + + // loop over AIR ghost atoms in all bins in "full" stencil + // Note: the non-AIR ghost atoms have already been filtered out + for (k = 0; k < nstencil_full; k++) { + xbin2 = xbin + stencilxyz[k][0]; + ybin2 = ybin + stencilxyz[k][1]; + zbin2 = zbin + stencilxyz[k][2]; + // since we only care about ghost to local neighbors, these "bounds" could be inset + if (xbin2 < 0 || xbin2 >= mbinx || + ybin2 < 0 || ybin2 >= mbiny || + zbin2 < 0 || zbin2 >= mbinz) continue; + for (j = binhead_ssa[ibin+stencil[k]]; j >= 0; j = bins_ssa[j]) { + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } - list->ndxAIR_ssa[i][0] = AIRct[0]; - for (int ndx = 1; ndx < 8; ++ndx) { - list->ndxAIR_ssa[i][ndx] = AIRct[ndx] + list->ndxAIR_ssa[i][ndx - 1]; + if (n > 0) ilist[inum + (gnum++)] = i; + firstneigh[i] = neighptr; + numneigh[i] = n; + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor (ghost) list overflow, boost neigh_modify one"); } } - - list->inum = inum; + list->gnum = gnum; } - -/* ---------------------------------------------------------------------- - comparison function invoked by qsort() - accesses static class member ssaAIRptr, set before call to qsort() -------------------------------------------------------------------------- */ - -static int cmp_ssaAIR(const void *iptr, const void *jptr) -{ - int i = NEIGHMASK & *((int *) iptr); - int j = NEIGHMASK & *((int *) jptr); - if (ssaAIRptr[i] < ssaAIRptr[j]) return -1; - if (ssaAIRptr[i] > ssaAIRptr[j]) return 1; - return 0; -} - diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.h b/src/USER-DPD/npair_half_bin_newton_ssa.h index 13347b33b0..c9ccbc4bd9 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.h +++ b/src/USER-DPD/npair_half_bin_newton_ssa.h @@ -15,7 +15,7 @@ NPairStyle(half/bin/newton/ssa, NPairHalfBinNewtonSSA, - NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_SSA) + NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_SSA | NP_GHOST) #else diff --git a/src/USER-DPD/npair_halffull_newton_ssa.cpp b/src/USER-DPD/npair_halffull_newton_ssa.cpp index 2c9de3e50f..d0be1685b6 100644 --- a/src/USER-DPD/npair_halffull_newton_ssa.cpp +++ b/src/USER-DPD/npair_halffull_newton_ssa.cpp @@ -64,6 +64,10 @@ void NPairHalffullNewtonSSA::build(NeighList *list) int inum_full = list->listfull->inum; int inum = 0; + + error->one(FLERR,"NPairHalffullNewtonSSA not yet implemented for ghosts with neighbors."); + return; + ipage->reset(); // loop over parent full list diff --git a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp index df379a109a..254339bffc 100644 --- a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp @@ -46,8 +46,12 @@ void NStencilHalfBin2dNewtonSSA::create() for (j = 0; j <= sy; j++) for (i = -sx; i <= sx; i++) if (j > 0 || (j == 0 && i > 0)) - if (bin_distance(i,j,0) < cutneighmaxsq) + if (bin_distance(i,j,0) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; + } nstencil_half = pos; // record where normal half stencil ends @@ -56,8 +60,12 @@ void NStencilHalfBin2dNewtonSSA::create() for (j = -sy; j <= 0; j++) for (i = -sx; i <= sx; i++) { if (j == 0 && i > 0) continue; - if (bin_distance(i,j,0) < cutneighmaxsq) + if (bin_distance(i,j,0) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; + } } nstencil = pos; // record where full stencil ends diff --git a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.h b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.h index 30901bb3e2..1d5cc3f6b2 100644 --- a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.h +++ b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.h @@ -15,7 +15,7 @@ NStencilStyle(half/bin/2d/newton/ssa, NStencilHalfBin2dNewtonSSA, - NS_HALF | NS_BIN | NS_2D | NS_NEWTON | NS_SSA | NS_ORTHO) + NS_HALF | NS_BIN | NS_2D | NS_NEWTON | NS_SSA | NS_ORTHO | NS_GHOST) #else diff --git a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp index 76c9931ab2..1e2c18c66a 100644 --- a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp @@ -47,8 +47,12 @@ void NStencilHalfBin3dNewtonSSA::create() for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) if (k > 0 || j > 0 || (j == 0 && i > 0)) - if (bin_distance(i,j,k) < cutneighmaxsq) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } nstencil_half = pos; // record where normal half stencil ends @@ -57,8 +61,12 @@ void NStencilHalfBin3dNewtonSSA::create() for (k = -sz; k < 0; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutneighmaxsq) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } // For k==0, make sure to skip already included bins @@ -66,8 +74,12 @@ void NStencilHalfBin3dNewtonSSA::create() for (j = -sy; j <= 0; j++) for (i = -sx; i <= sx; i++) { if (j == 0 && i > 0) continue; - if (bin_distance(i,j,k) < cutneighmaxsq) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } } nstencil = pos; // record where full stencil ends diff --git a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.h b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.h index 7765b256d3..450a696e46 100644 --- a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.h +++ b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.h @@ -15,7 +15,7 @@ NStencilStyle(half/bin/3d/newton/ssa, NStencilHalfBin3dNewtonSSA, - NS_HALF | NS_BIN | NS_3D | NS_NEWTON | NS_SSA | NS_ORTHO) + NS_HALF | NS_BIN | NS_3D | NS_NEWTON | NS_SSA | NS_ORTHO | NS_GHOST) #else diff --git a/src/USER-DPD/nstencil_ssa.h b/src/USER-DPD/nstencil_ssa.h index 9fcd19ee26..e6dfce60f4 100644 --- a/src/USER-DPD/nstencil_ssa.h +++ b/src/USER-DPD/nstencil_ssa.h @@ -20,7 +20,7 @@ namespace LAMMPS_NS { class NStencilSSA : public NStencil { public: - NStencilSSA(class LAMMPS *lmp) : NStencil(lmp) { } + NStencilSSA(class LAMMPS *lmp) : NStencil(lmp) { xyzflag = 1; } ~NStencilSSA() {} virtual void create() = 0; -- GitLab From 638448676404468bda5253124d27ccf3c13a043e Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Thu, 26 Jan 2017 13:12:28 -0500 Subject: [PATCH 126/337] USER-DPD: Copy inline coord2bin() functions from nbin_kokkos into nbin_ssa --- src/USER-DPD/nbin_ssa.cpp | 5 ++- src/USER-DPD/nbin_ssa.h | 72 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) diff --git a/src/USER-DPD/nbin_ssa.cpp b/src/USER-DPD/nbin_ssa.cpp index c2d780bac6..82cf6e7cac 100644 --- a/src/USER-DPD/nbin_ssa.cpp +++ b/src/USER-DPD/nbin_ssa.cpp @@ -61,6 +61,9 @@ void NBinSSA::bin_atoms() last_bin = update->ntimestep; + bboxlo_[0] = bboxlo[0]; bboxlo_[1] = bboxlo[1]; bboxlo_[2] = bboxlo[2]; + bboxhi_[0] = bboxhi[0]; bboxhi_[1] = bboxhi[1]; bboxhi_[2] = bboxhi[2]; + for (i = 0; i < 9; i++) { gairhead_ssa[i] = -1; } @@ -91,7 +94,7 @@ void NBinSSA::bin_atoms() } } for (i = nlocal-1; i >= 0; i--) { - ibin = coord2bin(x[i]); + ibin = coord2bin(x[i][0], x[i][1], x[i][2]); bins_ssa[i] = binhead_ssa[ibin]; binhead_ssa[ibin] = i; } diff --git a/src/USER-DPD/nbin_ssa.h b/src/USER-DPD/nbin_ssa.h index 5a2562d305..c39d7c7bce 100644 --- a/src/USER-DPD/nbin_ssa.h +++ b/src/USER-DPD/nbin_ssa.h @@ -42,6 +42,78 @@ class NBinSSA : public NBinStandard { void bin_atoms(); bigint memory_usage(); + + inline + int coord2bin(const double & x,const double & y,const double & z) const + { + int ix,iy,iz; + + if (x >= bboxhi_[0]) + ix = static_cast ((x-bboxhi_[0])*bininvx) + nbinx; + else if (x >= bboxlo_[0]) { + ix = static_cast ((x-bboxlo_[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo_[0])*bininvx) - 1; + + if (y >= bboxhi_[1]) + iy = static_cast ((y-bboxhi_[1])*bininvy) + nbiny; + else if (y >= bboxlo_[1]) { + iy = static_cast ((y-bboxlo_[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo_[1])*bininvy) - 1; + + if (z >= bboxhi_[2]) + iz = static_cast ((z-bboxhi_[2])*bininvz) + nbinz; + else if (z >= bboxlo_[2]) { + iz = static_cast ((z-bboxlo_[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo_[2])*bininvz) - 1; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + + inline + int coord2bin(const double & x,const double & y,const double & z, int* i) const + { + int ix,iy,iz; + + if (x >= bboxhi_[0]) + ix = static_cast ((x-bboxhi_[0])*bininvx) + nbinx; + else if (x >= bboxlo_[0]) { + ix = static_cast ((x-bboxlo_[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo_[0])*bininvx) - 1; + + if (y >= bboxhi_[1]) + iy = static_cast ((y-bboxhi_[1])*bininvy) + nbiny; + else if (y >= bboxlo_[1]) { + iy = static_cast ((y-bboxlo_[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo_[1])*bininvy) - 1; + + if (z >= bboxhi_[2]) + iz = static_cast ((z-bboxhi_[2])*bininvz) + nbinz; + else if (z >= bboxlo_[2]) { + iz = static_cast ((z-bboxlo_[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo_[2])*bininvz) - 1; + + i[0] = ix - mbinxlo; + i[1] = iy - mbinylo; + i[2] = iz - mbinzlo; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + + private: + double bboxlo_[3],bboxhi_[3]; + }; } -- GitLab From ff2786c86c4c3c1e103fefeccd0bdaeee826a4d4 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Thu, 26 Jan 2017 14:28:54 -0500 Subject: [PATCH 127/337] USER-DPD: Make another version of coord2bin() for nbin_ssa --- src/USER-DPD/nbin_ssa.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/USER-DPD/nbin_ssa.h b/src/USER-DPD/nbin_ssa.h index c39d7c7bce..75766ebcd2 100644 --- a/src/USER-DPD/nbin_ssa.h +++ b/src/USER-DPD/nbin_ssa.h @@ -111,6 +111,42 @@ class NBinSSA : public NBinStandard { return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); } + inline + int coord2bin(const double & x,const double & y,const double & z, int &ixo, int &iyo, int &izo) const + { + int ix,iy,iz; + + if (x >= bboxhi_[0]) + ix = static_cast ((x-bboxhi_[0])*bininvx) + nbinx; + else if (x >= bboxlo_[0]) { + ix = static_cast ((x-bboxlo_[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo_[0])*bininvx) - 1; + + if (y >= bboxhi_[1]) + iy = static_cast ((y-bboxhi_[1])*bininvy) + nbiny; + else if (y >= bboxlo_[1]) { + iy = static_cast ((y-bboxlo_[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo_[1])*bininvy) - 1; + + if (z >= bboxhi_[2]) + iz = static_cast ((z-bboxhi_[2])*bininvz) + nbinz; + else if (z >= bboxlo_[2]) { + iz = static_cast ((z-bboxlo_[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo_[2])*bininvz) - 1; + + ixo = ix - mbinxlo; + iyo = iy - mbinylo; + izo = iz - mbinzlo; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + private: double bboxlo_[3],bboxhi_[3]; -- GitLab From e42678ed517d8bc95f16da08329a2ae63bffe7bb Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Thu, 26 Jan 2017 16:20:12 -0500 Subject: [PATCH 128/337] USER-DPD: track & use the extent of the local atoms in the bins --- src/USER-DPD/nbin_ssa.cpp | 73 ++++++++++++++-------- src/USER-DPD/nbin_ssa.h | 16 +++-- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 49 ++++++++++----- src/neigh_list.h | 1 + 4 files changed, 93 insertions(+), 46 deletions(-) diff --git a/src/USER-DPD/nbin_ssa.cpp b/src/USER-DPD/nbin_ssa.cpp index 82cf6e7cac..321baf771a 100644 --- a/src/USER-DPD/nbin_ssa.cpp +++ b/src/USER-DPD/nbin_ssa.cpp @@ -30,22 +30,24 @@ using namespace LAMMPS_NS; NBinSSA::NBinSSA(LAMMPS *lmp) : NBinStandard(lmp) { maxbin_ssa = 0; - bins_ssa = NULL; - maxhead_ssa = 0; - binhead_ssa = NULL; - for (int i = 0; i < 9; i++) gairhead_ssa[i] = -1; + binlist_ssa = NULL; + binct_ssa = NULL; + for (int i = 0; i < 9; i++) { + gairhead_ssa[i] = -1; + gairct_ssa[i] = 0; + } } NBinSSA::~NBinSSA() { - memory->destroy(bins_ssa); - memory->destroy(binhead_ssa); + memory->destroy(binlist_ssa); + memory->destroy(binct_ssa); } /* ---------------------------------------------------------------------- bin owned and ghost atoms for the Shardlow Splitting Algorithm (SSA) - local atoms are in distinct bins (binhead_ssa) from the ghosts - ghost atoms are in distinct bins (gbinhead_ssa) from the locals + local atoms are in distinct bins (binhead[]) from the ghosts + ghost atoms are "binned" in gairhead_ssa[] instead ghosts which are not in an Active Interaction Region (AIR) are skipped ------------------------------------------------------------------------- */ @@ -58,6 +60,7 @@ void NBinSSA::bin_atoms() double **x = atom->x; int *mask = atom->mask; int *ssaAIR = atom->ssaAIR; + int xbin,ybin,zbin; last_bin = update->ntimestep; @@ -66,10 +69,13 @@ void NBinSSA::bin_atoms() for (i = 0; i < 9; i++) { gairhead_ssa[i] = -1; + gairct_ssa[i] = 0; } for (i = 0; i < mbins; i++) { - binhead_ssa[i] = -1; + binhead[i] = -1; + binlist_ssa[i] = -1; + binct_ssa[i] = 0; } // bin in reverse order so linked list will be in forward order @@ -81,23 +87,34 @@ void NBinSSA::bin_atoms() ibin = ssaAIR[i]; if (ibin < 2) continue; // skip ghost atoms not in AIR if (mask[i] & bitmask) { - bins_ssa[i] = gairhead_ssa[ibin]; + bins[i] = gairhead_ssa[ibin]; gairhead_ssa[ibin] = i; + ++(gairct_ssa[ibin]); } } } else { for (i = nall-1; i >= nlocal; i--) { ibin = ssaAIR[i]; if (ibin < 2) continue; // skip ghost atoms not in AIR - bins_ssa[i] = gairhead_ssa[ibin]; + bins[i] = gairhead_ssa[ibin]; gairhead_ssa[ibin] = i; + ++(gairct_ssa[ibin]); } } for (i = nlocal-1; i >= 0; i--) { - ibin = coord2bin(x[i][0], x[i][1], x[i][2]); - bins_ssa[i] = binhead_ssa[ibin]; - binhead_ssa[ibin] = i; + ibin = coord2bin(x[i][0], x[i][1], x[i][2], xbin, ybin, zbin); + // Find the bounding box of the local atoms in the bins + if (xbin < lbinxlo) lbinxlo = xbin; + if (xbin >= lbinxhi) lbinxhi = xbin + 1; + if (ybin < lbinylo) lbinylo = ybin; + if (ybin >= lbinyhi) lbinyhi = ybin + 1; + if (zbin < lbinzlo) lbinzlo = zbin; + if (zbin >= lbinzhi) lbinzhi = zbin + 1; + bins[i] = binhead[ibin]; + binhead[ibin] = i; + ++(binct_ssa[ibin]); } + } /* ---------------------------------------------------------------------- */ @@ -106,17 +123,21 @@ void NBinSSA::bin_atoms_setup(int nall) { NBinStandard::bin_atoms_setup(nall); // Setup the parent class's data too - if (mbins > maxhead_ssa) { - maxhead_ssa = mbins; - memory->destroy(binhead_ssa); - memory->create(binhead_ssa,maxhead_ssa,"binhead_ssa"); + if (mbins > maxbin_ssa) { + maxbin_ssa = mbins; + memory->destroy(binlist_ssa); + memory->destroy(binct_ssa); + memory->create(binlist_ssa,maxbin_ssa,"binlist_ssa"); + memory->create(binct_ssa,maxbin_ssa,"binct_ssa"); } - if (nall > maxbin_ssa) { - maxbin_ssa = nall; - memory->destroy(bins_ssa); - memory->create(bins_ssa,maxbin_ssa,"bins_ssa"); - } + // Clear the local bin extent bounding box. + lbinxlo = mbinx - 1; // Safe to = stencil->sx + 1 + lbinylo = mbiny - 1; // Safe to = stencil->sy + 1 + lbinzlo = mbinz - 1; // Safe to = stencil->sz + 1 + lbinxhi = 0; // Safe to = mbinx - stencil->sx - 1 + lbinyhi = 0; // Safe to = mbiny - stencil->sy - 1 + lbinzhi = 0; // Safe to = mbinz - stencil->sz - 1 } /* ---------------------------------------------------------------------- */ @@ -125,9 +146,9 @@ bigint NBinSSA::memory_usage() { bigint bytes = NBinStandard::memory_usage(); // Count the parent's usage too - if (maxbin_ssa) bytes += memory->usage(bins_ssa,maxbin_ssa); - if (maxhead_ssa) { - bytes += memory->usage(binhead_ssa,maxhead_ssa); + if (maxbin_ssa) { + bytes += memory->usage(binlist_ssa,maxbin_ssa); + bytes += memory->usage(binct_ssa,maxbin_ssa); } return bytes; } diff --git a/src/USER-DPD/nbin_ssa.h b/src/USER-DPD/nbin_ssa.h index 75766ebcd2..48694370b9 100644 --- a/src/USER-DPD/nbin_ssa.h +++ b/src/USER-DPD/nbin_ssa.h @@ -29,11 +29,19 @@ namespace LAMMPS_NS { class NBinSSA : public NBinStandard { public: - int *bins_ssa; // index of next atom in each bin - int maxbin_ssa; // size of bins_ssa array - int *binhead_ssa; // index of 1st local atom in each bin + int *binlist_ssa; // index in neighlist of 1st local atom in each bin + int *binct_ssa; // count of local atoms in each bin int gairhead_ssa[9]; // index of 1st ghost atom in each AIR - int maxhead_ssa; // size of binhead_ssa and gbinhead_ssa arrays + int gairct_ssa[9]; // count of ghost atoms in each AIR + int maxbin_ssa; // size of binlist_ssa and binct_ssa arrays + + // Bounds of the local atoms in the binhead array + int lbinxlo; // lowest local bin x-dim coordinate + int lbinylo; // lowest local bin y-dim coordinate + int lbinzlo; // lowest local bin z-dim coordinate + int lbinxhi; // highest local bin x-dim coordinate + int lbinyhi; // highest local bin y-dim coordinate + int lbinzhi; // highest local bin z-dim coordinate NBinSSA(class LAMMPS *); ~NBinSSA(); diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index 4c9dc95308..f0860cba4b 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -79,20 +79,32 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) NBinSSA *nb_ssa = dynamic_cast(nb); if (!nb_ssa) error->one(FLERR, "NBin wasn't a NBinSSA object"); - int *bins_ssa = nb_ssa->bins_ssa; - int *binhead_ssa = nb_ssa->binhead_ssa; + int *bins = nb_ssa->bins; + int *binhead = nb_ssa->binhead; + int *binlist_ssa = nb_ssa->binlist_ssa; + int *binct_ssa = nb_ssa->binct_ssa; int *gairhead_ssa = &(nb_ssa->gairhead_ssa[0]); int inum = 0; int gnum = 0; int xbin,ybin,zbin,xbin2,ybin2,zbin2; int **stencilxyz = ns_ssa->stencilxyz; + int lbinxlo = nb_ssa->lbinxlo; + int lbinxhi = nb_ssa->lbinxhi; + int lbinylo = nb_ssa->lbinylo; + int lbinyhi = nb_ssa->lbinyhi; + int lbinzlo = nb_ssa->lbinzlo; + int lbinzhi = nb_ssa->lbinzhi; ipage->reset(); - // loop over owned atoms, storing half of the neighbors - - for (i = 0; i < nlocal; i++) { + // loop over bins with local atoms, storing half of the neighbors + for (zbin = lbinzlo; zbin < lbinzhi; zbin++) { + for (ybin = lbinylo; ybin < lbinyhi; ybin++) { + for (xbin = lbinxlo; xbin < lbinxhi; xbin++) { + ibin = zbin*mbiny*mbinx + ybin*mbinx + xbin; + binlist_ssa[ibin] = inum; // record where ibin starts in ilist + for (i = binhead[ibin]; i >= 0; i = bins[i]) { n = 0; neighptr = ipage->vget(); @@ -109,7 +121,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) // loop over rest of local atoms in i's bin // just store them, since j is beyond i in linked list - for (j = bins_ssa[i]; j >= 0; j = bins_ssa[j]) { + for (j = bins[i]; j >= 0; j = bins[j]) { jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -136,13 +148,11 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) } } - ibin = coord2bin(x[i]); - // loop over all local atoms in other bins in "half" stencil for (k = 0; k < nstencil_half; k++) { - for (j = binhead_ssa[ibin+stencil[k]]; j >= 0; - j = bins_ssa[j]) { + for (j = binhead[ibin+stencil[k]]; j >= 0; + j = bins[j]) { jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; @@ -177,13 +187,20 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); } + // verify count of atoms in ibin + if (binct_ssa[ibin] != (inum - binlist_ssa[ibin])) + error->one(FLERR,"binct_ssa didn't agree with lenght in ilist"); + } + } + } list->inum = inum; // loop over AIR ghost atoms, storing their local neighbors // since these are ghosts, must check if stencil bin is out of bounds for (int airnum = 2; airnum <= 8; airnum++) { - for (i = gairhead_ssa[airnum]; i >= 0; i = bins_ssa[i]) { + list->AIRct_ssa[airnum - 1] = nb_ssa->gairct_ssa[airnum]; + for (i = gairhead_ssa[airnum]; i >= 0; i = bins[i]) { n = 0; neighptr = ipage->vget(); @@ -205,11 +222,11 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) xbin2 = xbin + stencilxyz[k][0]; ybin2 = ybin + stencilxyz[k][1]; zbin2 = zbin + stencilxyz[k][2]; - // since we only care about ghost to local neighbors, these "bounds" could be inset - if (xbin2 < 0 || xbin2 >= mbinx || - ybin2 < 0 || ybin2 >= mbiny || - zbin2 < 0 || zbin2 >= mbinz) continue; - for (j = binhead_ssa[ibin+stencil[k]]; j >= 0; j = bins_ssa[j]) { + // Skip it if this bin is outside the extent of local bins + if (xbin2 < lbinxlo || xbin2 >= lbinxhi || + ybin2 < lbinylo || ybin2 >= lbinyhi || + zbin2 < lbinzlo || zbin2 >= lbinzhi) continue; + for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/neigh_list.h b/src/neigh_list.h index 9a77a0311d..7649245e99 100644 --- a/src/neigh_list.h +++ b/src/neigh_list.h @@ -80,6 +80,7 @@ class NeighList : protected Pointers { // USER-DPD package and Shardlow Splitting Algorithm (SSA) support + int AIRct_ssa[8]; // count of how many atoms in each AIR uint16_t (*ndxAIR_ssa)[8]; // for each atom, last neighbor index of each AIR // methods -- GitLab From e9d46f4e7acb79d57c982f59cbcd335e96beb10e Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 27 Jan 2017 12:31:13 -0500 Subject: [PATCH 129/337] USER-DPD: Correct an error message typo. --- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index f0860cba4b..b9306ee3b1 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -189,7 +189,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) } // verify count of atoms in ibin if (binct_ssa[ibin] != (inum - binlist_ssa[ibin])) - error->one(FLERR,"binct_ssa didn't agree with lenght in ilist"); + error->one(FLERR,"binct_ssa didn't agree with length in ilist"); } } } -- GitLab From fb279a87f5eac44e02319e4464a05fa62aa87794 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 27 Jan 2017 13:24:46 -0500 Subject: [PATCH 130/337] USER-DPD: properly compute AIRct_ssa values, and use them in fix_shardlow. Eliminates last use of per-atom ssaAIR values within initial_integrate() --- src/USER-DPD/fix_shardlow.cpp | 36 ++++++++++++++-------- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 8 +++-- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 56597697f7..9253d17317 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -538,24 +538,34 @@ void FixShardlow::initial_integrate(int vflag) dtsqrt = sqrt(update->dt); ii = 0; - //Loop over all 14 directions (8 stages) - for (airnum = 1; airnum <=8; airnum++){ + // process neighbors in the local AIR + while (ii < inum) { + i = ilist[ii]; + int len = list->numneigh[i]; + if (len > 0) { + if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][0]), len); + else ssa_update_dpd(i, &(list->firstneigh[i][0]), len); + } + ii++; + } - if (airnum > 1) { - // Communicate the updated velocities to all nodes - comm->forward_comm_fix(this); + ii = inum; + //Loop over all 13 outward directions (7 stages) + for (airnum = 1; airnum <=7; airnum++){ + int ct = list->AIRct_ssa[airnum]; - if(useDPDE){ - // Zero out the ghosts' uCond & uMech to be used as delta accumulators - memset(&(atom->uCond[nlocal]), 0, sizeof(double)*nghost); - memset(&(atom->uMech[nlocal]), 0, sizeof(double)*nghost); - } + // Communicate the updated velocities to all nodes + comm->forward_comm_fix(this); + + if(useDPDE){ + // Zero out the ghosts' uCond & uMech to be used as delta accumulators + memset(&(atom->uCond[nlocal]), 0, sizeof(double)*nghost); + memset(&(atom->uMech[nlocal]), 0, sizeof(double)*nghost); } // process neighbors in this AIR - while (ii < anum) { + while (ct-- > 0) { i = ilist[ii]; - if (atom->ssaAIR[i] > airnum) break; /* done with curent AIR */ int len = list->numneigh[i]; if (len > 0) { if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][0]), len); @@ -565,7 +575,7 @@ void FixShardlow::initial_integrate(int vflag) } // Communicate the ghost deltas to the atom owners - if (airnum > 1) comm->reverse_comm_fix(this); + comm->reverse_comm_fix(this); } //End Loop over all directions For airnum = Top, Top-Right, Right, Bottom-Right, Back diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index b9306ee3b1..cc107a55c4 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -199,7 +199,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) // loop over AIR ghost atoms, storing their local neighbors // since these are ghosts, must check if stencil bin is out of bounds for (int airnum = 2; airnum <= 8; airnum++) { - list->AIRct_ssa[airnum - 1] = nb_ssa->gairct_ssa[airnum]; + int locAIRct = 0; for (i = gairhead_ssa[airnum]; i >= 0; i = bins[i]) { n = 0; neighptr = ipage->vget(); @@ -254,13 +254,17 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) } } - if (n > 0) ilist[inum + (gnum++)] = i; + if (n > 0) { + ilist[inum + (gnum++)] = i; + ++locAIRct; + } firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); if (ipage->status()) error->one(FLERR,"Neighbor (ghost) list overflow, boost neigh_modify one"); } + list->AIRct_ssa[airnum - 1] = locAIRct; } list->gnum = gnum; } -- GitLab From 3dddeef365cfcab63e909d8388cc0f674419f6cd Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 27 Jan 2017 14:02:56 -0500 Subject: [PATCH 131/337] USER-DPD: remove unneeded gairct_ssa[] & anum vars, and some > 0 guards --- src/USER-DPD/fix_shardlow.cpp | 15 +++++---------- src/USER-DPD/nbin_ssa.cpp | 4 ---- src/USER-DPD/nbin_ssa.h | 1 - src/USER-DPD/npair_half_bin_newton_ssa.cpp | 9 ++++----- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 9253d17317..4fa323a9d8 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -499,7 +499,7 @@ void FixShardlow::ssa_update_dpde( void FixShardlow::initial_integrate(int vflag) { - int i,ii,inum,anum; + int i,ii,inum; int *ilist; int nlocal = atom->nlocal; @@ -532,7 +532,6 @@ void FixShardlow::initial_integrate(int vflag) v_t0 = (double (*)[3]) memory->smalloc(sizeof(double)*3*nghost, "FixShardlow:v_t0"); inum = list->inum; - anum = inum + list->gnum; ilist = list->ilist; dtsqrt = sqrt(update->dt); @@ -542,10 +541,8 @@ void FixShardlow::initial_integrate(int vflag) while (ii < inum) { i = ilist[ii]; int len = list->numneigh[i]; - if (len > 0) { - if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][0]), len); - else ssa_update_dpd(i, &(list->firstneigh[i][0]), len); - } + if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][0]), len); + else ssa_update_dpd(i, &(list->firstneigh[i][0]), len); ii++; } @@ -567,10 +564,8 @@ void FixShardlow::initial_integrate(int vflag) while (ct-- > 0) { i = ilist[ii]; int len = list->numneigh[i]; - if (len > 0) { - if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][0]), len); - else ssa_update_dpd(i, &(list->firstneigh[i][0]), len); - } + if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][0]), len); + else ssa_update_dpd(i, &(list->firstneigh[i][0]), len); ii++; } diff --git a/src/USER-DPD/nbin_ssa.cpp b/src/USER-DPD/nbin_ssa.cpp index 321baf771a..7ea2117300 100644 --- a/src/USER-DPD/nbin_ssa.cpp +++ b/src/USER-DPD/nbin_ssa.cpp @@ -34,7 +34,6 @@ NBinSSA::NBinSSA(LAMMPS *lmp) : NBinStandard(lmp) binct_ssa = NULL; for (int i = 0; i < 9; i++) { gairhead_ssa[i] = -1; - gairct_ssa[i] = 0; } } @@ -69,7 +68,6 @@ void NBinSSA::bin_atoms() for (i = 0; i < 9; i++) { gairhead_ssa[i] = -1; - gairct_ssa[i] = 0; } for (i = 0; i < mbins; i++) { @@ -89,7 +87,6 @@ void NBinSSA::bin_atoms() if (mask[i] & bitmask) { bins[i] = gairhead_ssa[ibin]; gairhead_ssa[ibin] = i; - ++(gairct_ssa[ibin]); } } } else { @@ -98,7 +95,6 @@ void NBinSSA::bin_atoms() if (ibin < 2) continue; // skip ghost atoms not in AIR bins[i] = gairhead_ssa[ibin]; gairhead_ssa[ibin] = i; - ++(gairct_ssa[ibin]); } } for (i = nlocal-1; i >= 0; i--) { diff --git a/src/USER-DPD/nbin_ssa.h b/src/USER-DPD/nbin_ssa.h index 48694370b9..4ec376200c 100644 --- a/src/USER-DPD/nbin_ssa.h +++ b/src/USER-DPD/nbin_ssa.h @@ -32,7 +32,6 @@ class NBinSSA : public NBinStandard { int *binlist_ssa; // index in neighlist of 1st local atom in each bin int *binct_ssa; // count of local atoms in each bin int gairhead_ssa[9]; // index of 1st ghost atom in each AIR - int gairct_ssa[9]; // count of ghost atoms in each AIR int maxbin_ssa; // size of binlist_ssa and binct_ssa arrays // Bounds of the local atoms in the binhead array diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index cc107a55c4..ccc41d1fc4 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -180,21 +180,20 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) } } - ilist[inum++] = i; + if (n > 0) { + ilist[inum++] = i; + } firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); if (ipage->status()) error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); } - // verify count of atoms in ibin - if (binct_ssa[ibin] != (inum - binlist_ssa[ibin])) - error->one(FLERR,"binct_ssa didn't agree with length in ilist"); } } } - list->inum = inum; + list->AIRct_ssa[0] = list->inum = inum; // loop over AIR ghost atoms, storing their local neighbors // since these are ghosts, must check if stencil bin is out of bounds -- GitLab From f73c9a43aba9b5ff0837360ea7c3d4925906e5f6 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 27 Jan 2017 16:45:15 -0500 Subject: [PATCH 132/337] USER-DPD: remove broken code for building SSA half neighbor list from full --- src/USER-DPD/npair_halffull_newton_ssa.cpp | 136 --------------------- src/USER-DPD/npair_halffull_newton_ssa.h | 44 ------- 2 files changed, 180 deletions(-) delete mode 100644 src/USER-DPD/npair_halffull_newton_ssa.cpp delete mode 100644 src/USER-DPD/npair_halffull_newton_ssa.h diff --git a/src/USER-DPD/npair_halffull_newton_ssa.cpp b/src/USER-DPD/npair_halffull_newton_ssa.cpp deleted file mode 100644 index d0be1685b6..0000000000 --- a/src/USER-DPD/npair_halffull_newton_ssa.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing authors: - James Larentzos and Timothy I. Mattox (Engility Corporation) -------------------------------------------------------------------------- */ - -#include "npair_halffull_newton_ssa.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -// allocate space for static class variable -// prototype for non-class function - -static int *ssaAIRptr; -static int cmp_ssaAIR(const void *, const void *); - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtonSSA::NPairHalffullNewtonSSA(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list for use by Shardlow Spliting Algorithm - pair stored once if i,j are both owned and i < j - if j is ghost, only store if j coords are "above and to the right" of i - works if full list is a skip list -------------------------------------------------------------------------- */ - -void NPairHalffullNewtonSSA::build(NeighList *list) -{ - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - - int nlocal = atom->nlocal; - int *ssaAIR = atom->ssaAIR; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - int inum_full = list->listfull->inum; - - int inum = 0; - - error->one(FLERR,"NPairHalffullNewtonSSA not yet implemented for ghosts with neighbors."); - return; - - ipage->reset(); - - // loop over parent full list - - for (ii = 0; ii < inum_full; ii++) { - int AIRct[8] = { 0 }; - n = 0; - neighptr = ipage->vget(); - - i = ilist_full[ii]; - - // loop over full neighbor list - - jlist = firstneigh_full[i]; - jnum = numneigh_full[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (j < nlocal) { - if (i > j) continue; - ++(AIRct[0]); - } else { - if (ssaAIR[j] < 2) continue; // skip ghost atoms not in AIR - ++(AIRct[ssaAIR[j] - 1]); - } - neighptr[n++] = joriginal; - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - // sort the locals+ghosts in the neighbor list by their ssaAIR number - - ssaAIRptr = atom->ssaAIR; - qsort(&(neighptr[0]), n, sizeof(int), cmp_ssaAIR); - - // do a prefix sum on the counts to turn them into indexes - - list->ndxAIR_ssa[i][0] = AIRct[0]; - for (int ndx = 1; ndx < 8; ++ndx) { - list->ndxAIR_ssa[i][ndx] = AIRct[ndx] + list->ndxAIR_ssa[i][ndx - 1]; - } - } - - list->inum = inum; -} - -/* ---------------------------------------------------------------------- - comparison function invoked by qsort() - accesses static class member ssaAIRptr, set before call to qsort() -------------------------------------------------------------------------- */ - -static int cmp_ssaAIR(const void *iptr, const void *jptr) -{ - int i = NEIGHMASK & *((int *) iptr); - int j = NEIGHMASK & *((int *) jptr); - if (ssaAIRptr[i] < ssaAIRptr[j]) return -1; - if (ssaAIRptr[i] > ssaAIRptr[j]) return 1; - return 0; -} - diff --git a/src/USER-DPD/npair_halffull_newton_ssa.h b/src/USER-DPD/npair_halffull_newton_ssa.h deleted file mode 100644 index 03903815b1..0000000000 --- a/src/USER-DPD/npair_halffull_newton_ssa.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- 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 NPAIR_CLASS - -NPairStyle(halffull/newton/ssa, - NPairHalffullNewtonSSA, - NP_HALF_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_NEWTON | - NP_ORTHO | NP_TRI | NP_SSA) - -#else - -#ifndef LMP_NPAIR_HALFFULL_NEWTON_SSA_H -#define LMP_NPAIR_HALFFULL_NEWTON_SSA_H - -#include "npair.h" - -namespace LAMMPS_NS { - -class NPairHalffullNewtonSSA : public NPair { - public: - NPairHalffullNewtonSSA(class LAMMPS *); - ~NPairHalffullNewtonSSA() {} - void build(class NeighList *); -}; - -} - -#endif -#endif - -/* ERROR/WARNING messages: - -*/ -- GitLab From 641bb4bb16c8f852af189ba1e71cd7b035e0c8e2 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 27 Jan 2017 16:47:19 -0500 Subject: [PATCH 133/337] USER-DPD: remove use of ssaAIR[], move coord2ssaAIR() to nbin_ssa.cpp Saves an int per atom and ghost, also simplifies and reduces code size. --- src/USER-DPD/fix_shardlow.cpp | 116 ---------------------------------- src/USER-DPD/fix_shardlow.h | 13 ---- src/USER-DPD/nbin_ssa.cpp | 40 +++++++++++- src/USER-DPD/nbin_ssa.h | 1 + 4 files changed, 38 insertions(+), 132 deletions(-) diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 4fa323a9d8..05bf1602f9 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -109,26 +109,12 @@ FixShardlow::FixShardlow(LAMMPS *lmp, int narg, char **arg) : if(pairDPD == NULL && pairDPDE == NULL) error->all(FLERR,"Must use pair_style dpd/fdt or dpd/fdt/energy with fix shardlow"); - // Setup the ssaAIR array - atom->ssaAIR = NULL; - grow_arrays(atom->nmax); - memset(atom->ssaAIR, 0, sizeof(int)*atom->nlocal); - - // Setup callbacks for maintaining atom->ssaAIR[] - atom->add_callback(0); // grow (aka exchange) - atom->add_callback(1); // restart - atom->add_callback(2); // border } /* ---------------------------------------------------------------------- */ FixShardlow::~FixShardlow() { - atom->delete_callback(id, 0); - atom->delete_callback(id, 1); - atom->delete_callback(id, 2); - - memory->destroy(atom->ssaAIR); } /* ---------------------------------------------------------------------- */ @@ -137,7 +123,6 @@ int FixShardlow::setmask() { int mask = 0; mask |= INITIAL_INTEGRATE; - mask |= PRE_EXCHANGE | MIN_PRE_EXCHANGE; return mask; } @@ -161,27 +146,6 @@ void FixShardlow::init_list(int id, NeighList *ptr) /* ---------------------------------------------------------------------- */ -void FixShardlow::pre_exchange() -{ - memset(atom->ssaAIR, 0, sizeof(int)*atom->nlocal); -} - -/* ---------------------------------------------------------------------- */ - -void FixShardlow::setup_pre_exchange() -{ - memset(atom->ssaAIR, 0, sizeof(int)*atom->nlocal); -} - -/* ---------------------------------------------------------------------- */ - -void FixShardlow::min_pre_exchange() -{ - memset(atom->ssaAIR, 0, sizeof(int)*atom->nlocal); -} - -/* ---------------------------------------------------------------------- */ - void FixShardlow::setup(int vflag) { bool fixShardlow = false; @@ -659,91 +623,11 @@ void FixShardlow::unpack_reverse_comm(int n, int *list, double *buf) } } -/* ---------------------------------------------------------------------- - convert atom coords into the ssa active interaction region number -------------------------------------------------------------------------- */ - -int FixShardlow::coord2ssaAIR(double *x) -{ - int ix, iy, iz; - - ix = iy = iz = 0; - if (x[2] < domain->sublo[2]) iz = -1; - if (x[2] >= domain->subhi[2]) iz = 1; - if (x[1] < domain->sublo[1]) iy = -1; - if (x[1] >= domain->subhi[1]) iy = 1; - if (x[0] < domain->sublo[0]) ix = -1; - if (x[0] >= domain->subhi[0]) ix = 1; - - if(iz < 0){ - return -1; - } else if(iz == 0){ - if( iy<0 ) return -1; // bottom left/middle/right - if( (iy==0) && (ix<0) ) return -1; // left atoms - if( (iy==0) && (ix==0) ) return 0; // Locally owned atoms - if( (iy==0) && (ix>0) ) return 3; // Right atoms - if( (iy>0) && (ix==0) ) return 2; // Top-middle atoms - if( (iy>0) && (ix!=0) ) return 4; // Top-right and top-left atoms - } else { // iz > 0 - if((ix==0) && (iy==0)) return 5; // Back atoms - if((ix==0) && (iy!=0)) return 6; // Top-back and bottom-back atoms - if((ix!=0) && (iy==0)) return 7; // Left-back and right-back atoms - if((ix!=0) && (iy!=0)) return 8; // Back corner atoms - } - - return -2; -} - /* ---------------------------------------------------------------------- */ -void FixShardlow::grow_arrays(int nmax) -{ - memory->grow(atom->ssaAIR,nmax,"fix_shardlow:ssaAIR"); -} - -void FixShardlow::copy_arrays(int i, int j, int delflag) -{ - atom->ssaAIR[j] = atom->ssaAIR[i]; -} - -void FixShardlow::set_arrays(int i) -{ - atom->ssaAIR[i] = 0; /* coord2ssaAIR(x[i]) */ -} - -int FixShardlow::pack_border(int n, int *list, double *buf) -{ - for (int i = 0; i < n; i++) { - int j = list[i]; - if (atom->ssaAIR[j] == 0) atom->ssaAIR[j] = 1; // not purely local anymore - } - return 0; -} - -int FixShardlow::unpack_border(int n, int first, double *buf) -{ - int i,last = first + n; - for (i = first; i < last; i++) { - atom->ssaAIR[i] = coord2ssaAIR(atom->x[i]); - } - return 0; -} - -int FixShardlow::unpack_exchange(int i, double *buf) -{ - atom->ssaAIR[i] = 0; /* coord2ssaAIR(x[i]) */ - return 0; -} - -void FixShardlow::unpack_restart(int i, int nth) -{ - atom->ssaAIR[i] = 0; /* coord2ssaAIR(x[i]) */ -} - double FixShardlow::memory_usage() { double bytes = 0.0; - bytes += memory->usage(atom->ssaAIR,atom->nmax); bytes += sizeof(double)*3*atom->nghost; // v_t0[] return bytes; } diff --git a/src/USER-DPD/fix_shardlow.h b/src/USER-DPD/fix_shardlow.h index 2ffb96ae7c..6fd438b8f0 100644 --- a/src/USER-DPD/fix_shardlow.h +++ b/src/USER-DPD/fix_shardlow.h @@ -35,18 +35,6 @@ class FixShardlow : public Fix { virtual void init_list(int, class NeighList *); virtual void setup(int); virtual void initial_integrate(int); - void setup_pre_exchange(); - void pre_exchange(); - void min_pre_exchange(); - - void grow_arrays(int); - void copy_arrays(int, int, int); - void set_arrays(int); - - int pack_border(int, int *, double *); - int unpack_border(int, int, double *); - int unpack_exchange(int, double *); - void unpack_restart(int, int); double memory_usage(); @@ -63,7 +51,6 @@ class FixShardlow : public Fix { private: double dtsqrt; // = sqrt(update->dt); - int coord2ssaAIR(double *); // map atom coord to an AIR number void ssa_update_dpd(int, int *, int); // Constant Temperature void ssa_update_dpde(int, int *, int); // Constant Energy diff --git a/src/USER-DPD/nbin_ssa.cpp b/src/USER-DPD/nbin_ssa.cpp index 7ea2117300..25a2fb3b35 100644 --- a/src/USER-DPD/nbin_ssa.cpp +++ b/src/USER-DPD/nbin_ssa.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "update.h" #include "group.h" +#include "domain.h" #include "memory.h" #include "error.h" @@ -58,7 +59,6 @@ void NBinSSA::bin_atoms() if (includegroup) nlocal = atom->nfirst; double **x = atom->x; int *mask = atom->mask; - int *ssaAIR = atom->ssaAIR; int xbin,ybin,zbin; last_bin = update->ntimestep; @@ -82,7 +82,7 @@ void NBinSSA::bin_atoms() int bitmask = group->bitmask[includegroup]; int nowned = atom->nlocal; // NOTE: nlocal was set to atom->nfirst above for (i = nall-1; i >= nowned; i--) { - ibin = ssaAIR[i]; + ibin = coord2ssaAIR(x[i]); if (ibin < 2) continue; // skip ghost atoms not in AIR if (mask[i] & bitmask) { bins[i] = gairhead_ssa[ibin]; @@ -91,7 +91,7 @@ void NBinSSA::bin_atoms() } } else { for (i = nall-1; i >= nlocal; i--) { - ibin = ssaAIR[i]; + ibin = coord2ssaAIR(x[i]); if (ibin < 2) continue; // skip ghost atoms not in AIR bins[i] = gairhead_ssa[ibin]; gairhead_ssa[ibin] = i; @@ -148,3 +148,37 @@ bigint NBinSSA::memory_usage() } return bytes; } + +/* ---------------------------------------------------------------------- + convert atom coords into the ssa active interaction region number +------------------------------------------------------------------------- */ +int NBinSSA::coord2ssaAIR(const double *x) +{ + int ix, iy, iz; + + ix = iy = iz = 0; + if (x[2] < domain->sublo[2]) iz = -1; + if (x[2] >= domain->subhi[2]) iz = 1; + if (x[1] < domain->sublo[1]) iy = -1; + if (x[1] >= domain->subhi[1]) iy = 1; + if (x[0] < domain->sublo[0]) ix = -1; + if (x[0] >= domain->subhi[0]) ix = 1; + + if(iz < 0){ + return -1; + } else if(iz == 0){ + if( iy<0 ) return -1; // bottom left/middle/right + if( (iy==0) && (ix<0) ) return -1; // left atoms + if( (iy==0) && (ix==0) ) return 0; // Locally owned atoms + if( (iy==0) && (ix>0) ) return 3; // Right atoms + if( (iy>0) && (ix==0) ) return 2; // Top-middle atoms + if( (iy>0) && (ix!=0) ) return 4; // Top-right and top-left atoms + } else { // iz > 0 + if((ix==0) && (iy==0)) return 5; // Back atoms + if((ix==0) && (iy!=0)) return 6; // Top-back and bottom-back atoms + if((ix!=0) && (iy==0)) return 7; // Left-back and right-back atoms + if((ix!=0) && (iy!=0)) return 8; // Back corner atoms + } + + return -2; +} diff --git a/src/USER-DPD/nbin_ssa.h b/src/USER-DPD/nbin_ssa.h index 4ec376200c..5db5a0fa41 100644 --- a/src/USER-DPD/nbin_ssa.h +++ b/src/USER-DPD/nbin_ssa.h @@ -155,6 +155,7 @@ class NBinSSA : public NBinStandard { } private: + int coord2ssaAIR(const double *); // map atom coord to an AIR number double bboxlo_[3],bboxhi_[3]; }; -- GitLab From ce2da5068b6e77c5a508e554ab824dc54328bd21 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 30 Jan 2017 13:01:28 -0500 Subject: [PATCH 134/337] USER-DPD: renumber AIRs back to 1-7 for ghosts, and just 0 for locals. This removes the the distinction between pure and impure locals. Pure and impure locals messed up the directionality of half neighbor lists, which turns out is crucial to the approach for SSA with kokkos. --- src/USER-DPD/nbin_ssa.cpp | 22 +++++++++++----------- src/USER-DPD/nbin_ssa.h | 2 +- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/USER-DPD/nbin_ssa.cpp b/src/USER-DPD/nbin_ssa.cpp index 25a2fb3b35..7e603af714 100644 --- a/src/USER-DPD/nbin_ssa.cpp +++ b/src/USER-DPD/nbin_ssa.cpp @@ -33,7 +33,7 @@ NBinSSA::NBinSSA(LAMMPS *lmp) : NBinStandard(lmp) maxbin_ssa = 0; binlist_ssa = NULL; binct_ssa = NULL; - for (int i = 0; i < 9; i++) { + for (int i = 0; i < 8; i++) { gairhead_ssa[i] = -1; } } @@ -66,7 +66,7 @@ void NBinSSA::bin_atoms() bboxlo_[0] = bboxlo[0]; bboxlo_[1] = bboxlo[1]; bboxlo_[2] = bboxlo[2]; bboxhi_[0] = bboxhi[0]; bboxhi_[1] = bboxhi[1]; bboxhi_[2] = bboxhi[2]; - for (i = 0; i < 9; i++) { + for (i = 0; i < 8; i++) { gairhead_ssa[i] = -1; } @@ -83,7 +83,7 @@ void NBinSSA::bin_atoms() int nowned = atom->nlocal; // NOTE: nlocal was set to atom->nfirst above for (i = nall-1; i >= nowned; i--) { ibin = coord2ssaAIR(x[i]); - if (ibin < 2) continue; // skip ghost atoms not in AIR + if (ibin < 1) continue; // skip ghost atoms not in AIR if (mask[i] & bitmask) { bins[i] = gairhead_ssa[ibin]; gairhead_ssa[ibin] = i; @@ -92,7 +92,7 @@ void NBinSSA::bin_atoms() } else { for (i = nall-1; i >= nlocal; i--) { ibin = coord2ssaAIR(x[i]); - if (ibin < 2) continue; // skip ghost atoms not in AIR + if (ibin < 1) continue; // skip ghost atoms not in AIR bins[i] = gairhead_ssa[ibin]; gairhead_ssa[ibin] = i; } @@ -170,14 +170,14 @@ int NBinSSA::coord2ssaAIR(const double *x) if( iy<0 ) return -1; // bottom left/middle/right if( (iy==0) && (ix<0) ) return -1; // left atoms if( (iy==0) && (ix==0) ) return 0; // Locally owned atoms - if( (iy==0) && (ix>0) ) return 3; // Right atoms - if( (iy>0) && (ix==0) ) return 2; // Top-middle atoms - if( (iy>0) && (ix!=0) ) return 4; // Top-right and top-left atoms + if( (iy==0) && (ix>0) ) return 2; // Right atoms + if( (iy>0) && (ix==0) ) return 1; // Top-middle atoms + if( (iy>0) && (ix!=0) ) return 3; // Top-right and top-left atoms } else { // iz > 0 - if((ix==0) && (iy==0)) return 5; // Back atoms - if((ix==0) && (iy!=0)) return 6; // Top-back and bottom-back atoms - if((ix!=0) && (iy==0)) return 7; // Left-back and right-back atoms - if((ix!=0) && (iy!=0)) return 8; // Back corner atoms + if((ix==0) && (iy==0)) return 4; // Back atoms + if((ix==0) && (iy!=0)) return 5; // Top-back and bottom-back atoms + if((ix!=0) && (iy==0)) return 6; // Left-back and right-back atoms + if((ix!=0) && (iy!=0)) return 7; // Back corner atoms } return -2; diff --git a/src/USER-DPD/nbin_ssa.h b/src/USER-DPD/nbin_ssa.h index 5db5a0fa41..f26f8c77f0 100644 --- a/src/USER-DPD/nbin_ssa.h +++ b/src/USER-DPD/nbin_ssa.h @@ -31,7 +31,7 @@ class NBinSSA : public NBinStandard { int *binlist_ssa; // index in neighlist of 1st local atom in each bin int *binct_ssa; // count of local atoms in each bin - int gairhead_ssa[9]; // index of 1st ghost atom in each AIR + int gairhead_ssa[8]; // index of 1st ghost atom in each AIR int maxbin_ssa; // size of binlist_ssa and binct_ssa arrays // Bounds of the local atoms in the binhead array diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index ccc41d1fc4..f3b7094bd8 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -197,7 +197,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) // loop over AIR ghost atoms, storing their local neighbors // since these are ghosts, must check if stencil bin is out of bounds - for (int airnum = 2; airnum <= 8; airnum++) { + for (int airnum = 1; airnum <= 7; airnum++) { int locAIRct = 0; for (i = gairhead_ssa[airnum]; i >= 0; i = bins[i]) { n = 0; @@ -263,7 +263,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) if (ipage->status()) error->one(FLERR,"Neighbor (ghost) list overflow, boost neigh_modify one"); } - list->AIRct_ssa[airnum - 1] = locAIRct; + list->AIRct_ssa[airnum] = locAIRct; } list->gnum = gnum; } -- GitLab From ee83b755eae4f3167fd2ab8b50bbf86cab3407ee Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 30 Jan 2017 14:32:18 -0500 Subject: [PATCH 135/337] USER-DPD: Split the SSA stencil and neighbor list into subphases. NOTE: pair evaluation order changes, causing numerical differences! This enables processing neighbors in subphase groups that enforce a geometrical seperation of pairs, allowing greater parallelism once fix_shardlow (SSA) is converted to Kokkos. --- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 58 +++++----- .../nstencil_half_bin_2d_newton_ssa.cpp | 54 +++++++-- .../nstencil_half_bin_3d_newton_ssa.cpp | 106 ++++++++++++++---- src/USER-DPD/nstencil_ssa.h | 2 +- 4 files changed, 163 insertions(+), 57 deletions(-) diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index f3b7094bd8..77b20966b0 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -74,7 +74,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) NStencilSSA *ns_ssa = dynamic_cast(ns); if (!ns_ssa) error->one(FLERR, "NStencil wasn't a NStencilSSA object"); - int nstencil_half = ns_ssa->nstencil_half; + int *nstencil_ssa = &(ns_ssa->nstencil_ssa[0]); int nstencil_full = ns_ssa->nstencil; NBinSSA *nb_ssa = dynamic_cast(nb); @@ -150,34 +150,38 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) // loop over all local atoms in other bins in "half" stencil - for (k = 0; k < nstencil_half; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; - j = bins[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; + k = 0; + for (int subphase = 0; subphase < 4; subphase++) { + for (; k < nstencil_ssa[subphase]; k++) { + for (j = binhead[ibin+stencil[k]]; j >= 0; + j = bins[j]) { + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } } } + list->ndxAIR_ssa[i][subphase] = n; // record end of this subphase } if (n > 0) { diff --git a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp index 254339bffc..af337a38c6 100644 --- a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp @@ -42,31 +42,69 @@ NStencilHalfBin2dNewtonSSA::NStencilHalfBin2dNewtonSSA(LAMMPS *lmp) : void NStencilHalfBin2dNewtonSSA::create() { int i,j,pos = 0; - + // Subphase 0: upper right front bins (red) for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (j > 0 || (j == 0 && i > 0)) + for (i = 0; i <= sx; i++) + if (j > 0 || i > 0) // skip the centroid if (bin_distance(i,j,0) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } + nstencil_ssa[0] = pos; + + // Subphase 1: upper left front bins (light blue) + for (j = 1; j <= sy; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,0) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = 0; + stencil[pos++] = j*mbinx + i; + } + nstencil_ssa[1] = pos; + + // Subphase 2: lower left front bins (blue) + nstencil_ssa[2] = pos; - nstencil_half = pos; // record where normal half stencil ends + // Subphase 3: lower right front bins (yellow) + nstencil_ssa[3] = pos; - // include additional bins for AIR ghosts only + // Now include additional bins for AIR ghosts, and impure-to-pure locals + // Subphase 4: upper right back bins (pink) + nstencil_ssa[4] = pos; + // Subphase 5: upper left back bins (light green) + nstencil_ssa[5] = pos; + + // Subphase 6: lower left back bins (purple) for (j = -sy; j <= 0; j++) - for (i = -sx; i <= sx; i++) { - if (j == 0 && i > 0) continue; + for (i = -sx; i < 0; i++) if (bin_distance(i,j,0) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } - } + nstencil_ssa[6] = pos; + + // Subphase 7: lower right back bins (white) + for (j = -sy; j < 0; j++) + for (i = 0; i <= sx; i++) + if (bin_distance(i,j,0) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = 0; + stencil[pos++] = j*mbinx + i; + } + nstencil_ssa[7] = pos; + + // Also, include the centroid for the AIR ghosts. + stencilxyz[pos][0] = 0; + stencilxyz[pos][1] = 0; + stencilxyz[pos][2] = 0; + stencil[pos++] = 0; nstencil = pos; // record where full stencil ends } diff --git a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp index 1e2c18c66a..a2911a6d7b 100644 --- a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp @@ -42,45 +42,109 @@ NStencilHalfBin3dNewtonSSA::NStencilHalfBin3dNewtonSSA(LAMMPS *lmp) : void NStencilHalfBin3dNewtonSSA::create() { int i,j,k,pos = 0; - + // Subphase 0: upper right front bins (red) for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (k > 0 || j > 0 || (j == 0 && i > 0)) + for (j = 0; j <= sy; j++) + for (i = 0; i <= sx; i++) + if (k > 0 || j > 0 || i > 0) // skip the centroid if (bin_distance(i,j,k) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } + nstencil_ssa[0] = pos; - nstencil_half = pos; // record where normal half stencil ends + // Subphase 1: upper left front bins (light blue) + for (k = 0; k <= sz; k++) + for (j = 1; j <= sy; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + nstencil_ssa[1] = pos; + + // Subphase 2: lower left front bins (blue) + for (k = 1; k <= sz; k++) + for (j = -sy; j <= 0; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + nstencil_ssa[2] = pos; - // include additional bins for AIR ghosts only + // Subphase 3: lower right front bins (yellow) + for (k = 1; k <= sz; k++) + for (j = -sy; j < 0; j++) + for (i = 0; i <= sx; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + nstencil_ssa[3] = pos; + // Now include additional bins for AIR ghosts, and impure-to-pure locals + // Subphase 4: upper right back bins (pink) for (k = -sz; k < 0; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) + for (j = 0; j <= sy; j++) + for (i = 0; i <= sx; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + nstencil_ssa[4] = pos; + + // Subphase 5: upper left back bins (light green) + for (k = -sz; k < 0; k++) + for (j = 1; j <= sy; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + nstencil_ssa[5] = pos; + + // Subphase 6: lower left back bins (purple) + for (k = -sz; k <= 0; k++) + for (j = -sy; j <= 0; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + nstencil_ssa[6] = pos; + + // Subphase 7: lower right back bins (white) + for (k = -sz; k <= 0; k++) + for (j = -sy; j < 0; j++) + for (i = 0; i <= sx; i++) if (bin_distance(i,j,k) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } + nstencil_ssa[7] = pos; - // For k==0, make sure to skip already included bins - - k = 0; - for (j = -sy; j <= 0; j++) - for (i = -sx; i <= sx; i++) { - if (j == 0 && i > 0) continue; - if (bin_distance(i,j,k) < cutneighmaxsq) { - stencilxyz[pos][0] = i; - stencilxyz[pos][1] = j; - stencilxyz[pos][2] = k; - stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; - } - } + // Also, include the centroid for the AIR ghosts. + stencilxyz[pos][0] = 0; + stencilxyz[pos][1] = 0; + stencilxyz[pos][2] = 0; + stencil[pos++] = 0; nstencil = pos; // record where full stencil ends } diff --git a/src/USER-DPD/nstencil_ssa.h b/src/USER-DPD/nstencil_ssa.h index e6dfce60f4..a5e3723271 100644 --- a/src/USER-DPD/nstencil_ssa.h +++ b/src/USER-DPD/nstencil_ssa.h @@ -24,7 +24,7 @@ class NStencilSSA : public NStencil { ~NStencilSSA() {} virtual void create() = 0; - int nstencil_half; // where the half stencil ends + int nstencil_ssa[8]; // last stencil index for each subphase }; } -- GitLab From be166cb5bf3743b0598009570d44cfe96b327979 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 30 Jan 2017 15:03:43 -0500 Subject: [PATCH 136/337] USER-DPD: Use subphases when processing AIR zero (locals) in SSA. NOTE: pair ordering was NOT changed, but tiny differences could occur. --- src/USER-DPD/fix_shardlow.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 05bf1602f9..4220760a9b 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -504,9 +504,14 @@ void FixShardlow::initial_integrate(int vflag) // process neighbors in the local AIR while (ii < inum) { i = ilist[ii]; - int len = list->numneigh[i]; - if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][0]), len); - else ssa_update_dpd(i, &(list->firstneigh[i][0]), len); + for (int subphase = 0; subphase < 4; subphase++) { + int start = (subphase > 0) ? list->ndxAIR_ssa[i][subphase - 1] : 0; + int len = list->ndxAIR_ssa[i][subphase] - start; + if (len > 0) { + if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][start]), len); + else ssa_update_dpd(i, &(list->firstneigh[i][start]), len); + } + } ii++; } -- GitLab From 52aaad907f356e6ab1e553512d343fcf641a547a Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Tue, 7 Feb 2017 12:18:27 -0500 Subject: [PATCH 137/337] USER-DPD: SSA with Kokkos: Reorder stencil subphases to make things easier. --- .../nstencil_half_bin_2d_newton_ssa.cpp | 16 ++++++------- .../nstencil_half_bin_3d_newton_ssa.cpp | 24 +++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp index af337a38c6..084d5b0602 100644 --- a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp @@ -65,10 +65,10 @@ void NStencilHalfBin2dNewtonSSA::create() } nstencil_ssa[1] = pos; - // Subphase 2: lower left front bins (blue) + // Subphase 2: lower right front bins (yellow) nstencil_ssa[2] = pos; - // Subphase 3: lower right front bins (yellow) + // Subphase 3: lower left front bins (blue) nstencil_ssa[3] = pos; // Now include additional bins for AIR ghosts, and impure-to-pure locals @@ -78,9 +78,9 @@ void NStencilHalfBin2dNewtonSSA::create() // Subphase 5: upper left back bins (light green) nstencil_ssa[5] = pos; - // Subphase 6: lower left back bins (purple) - for (j = -sy; j <= 0; j++) - for (i = -sx; i < 0; i++) + // Subphase 6: lower right back bins (white) + for (j = -sy; j < 0; j++) + for (i = 0; i <= sx; i++) if (bin_distance(i,j,0) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; @@ -89,9 +89,9 @@ void NStencilHalfBin2dNewtonSSA::create() } nstencil_ssa[6] = pos; - // Subphase 7: lower right back bins (white) - for (j = -sy; j < 0; j++) - for (i = 0; i <= sx; i++) + // Subphase 7: lower left back bins (purple) + for (j = -sy; j <= 0; j++) + for (i = -sx; i < 0; i++) if (bin_distance(i,j,0) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; diff --git a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp index a2911a6d7b..1741a1e847 100644 --- a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp @@ -67,10 +67,10 @@ void NStencilHalfBin3dNewtonSSA::create() } nstencil_ssa[1] = pos; - // Subphase 2: lower left front bins (blue) + // Subphase 2: lower right front bins (yellow) for (k = 1; k <= sz; k++) - for (j = -sy; j <= 0; j++) - for (i = -sx; i < 0; i++) + for (j = -sy; j < 0; j++) + for (i = 0; i <= sx; i++) if (bin_distance(i,j,k) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; @@ -79,10 +79,10 @@ void NStencilHalfBin3dNewtonSSA::create() } nstencil_ssa[2] = pos; - // Subphase 3: lower right front bins (yellow) + // Subphase 3: lower left front bins (blue) for (k = 1; k <= sz; k++) - for (j = -sy; j < 0; j++) - for (i = 0; i <= sx; i++) + for (j = -sy; j <= 0; j++) + for (i = -sx; i < 0; i++) if (bin_distance(i,j,k) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; @@ -116,10 +116,10 @@ void NStencilHalfBin3dNewtonSSA::create() } nstencil_ssa[5] = pos; - // Subphase 6: lower left back bins (purple) + // Subphase 6: lower right back bins (white) for (k = -sz; k <= 0; k++) - for (j = -sy; j <= 0; j++) - for (i = -sx; i < 0; i++) + for (j = -sy; j < 0; j++) + for (i = 0; i <= sx; i++) if (bin_distance(i,j,k) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; @@ -128,10 +128,10 @@ void NStencilHalfBin3dNewtonSSA::create() } nstencil_ssa[6] = pos; - // Subphase 7: lower right back bins (white) + // Subphase 7: lower left back bins (purple) for (k = -sz; k <= 0; k++) - for (j = -sy; j < 0; j++) - for (i = 0; i <= sx; i++) + for (j = -sy; j <= 0; j++) + for (i = -sx; i < 0; i++) if (bin_distance(i,j,k) < cutneighmaxsq) { stencilxyz[pos][0] = i; stencilxyz[pos][1] = j; -- GitLab From 151b3f552bfdfcc915a4ed429b210342a3e1837f Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Tue, 7 Feb 2017 12:53:45 -0500 Subject: [PATCH 138/337] USER-DPD: Save pointer to the NPair used to create the NeighList Gives a user of NeighList access to data stored in a custom NPair --- src/neigh_list.cpp | 1 + src/neigh_list.h | 1 + src/neighbor.cpp | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/neigh_list.cpp b/src/neigh_list.cpp index edc8634373..e8fd4130fc 100644 --- a/src/neigh_list.cpp +++ b/src/neigh_list.cpp @@ -79,6 +79,7 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp) // USER-DPD package ndxAIR_ssa = NULL; + np = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/neigh_list.h b/src/neigh_list.h index 7649245e99..ea88e9b28b 100644 --- a/src/neigh_list.h +++ b/src/neigh_list.h @@ -82,6 +82,7 @@ class NeighList : protected Pointers { int AIRct_ssa[8]; // count of how many atoms in each AIR uint16_t (*ndxAIR_ssa)[8]; // for each atom, last neighbor index of each AIR + class NPair *np; // ptr to NPair instance I depend on // methods diff --git a/src/neighbor.cpp b/src/neighbor.cpp index e0b84cc410..148dcbd7e9 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -785,7 +785,7 @@ int Neighbor::init_pair() } PairCreator pair_creator = pairclass[flag-1]; - neigh_pair[i] = pair_creator(lmp); + lists[i]->np = neigh_pair[i] = pair_creator(lmp); neigh_pair[i]->post_constructor(requests[i]); neigh_pair[i]->istyle = flag; -- GitLab From ab32d136b97e0f83e4a8e21e60251394623f1787 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Tue, 7 Feb 2017 13:03:07 -0500 Subject: [PATCH 139/337] USER-DPD: SSA with Kokkos: make stencil's sx, sy, sz variables public --- src/nstencil.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nstencil.h b/src/nstencil.h index 7985d23202..a4c6a4af66 100644 --- a/src/nstencil.h +++ b/src/nstencil.h @@ -30,6 +30,7 @@ class NStencil : protected Pointers { int *nstencil_multi; // # bins in each type-based multi stencil int **stencil_multi; // list of bin offsets in each stencil double **distsq_multi; // sq distances to bins in each stencil + int sx,sy,sz; // extent of stencil in each dim double cutoff_custom; // cutoff set by requestor @@ -64,7 +65,6 @@ class NStencil : protected Pointers { int xyzflag; // 1 if stencilxyz is allocated int maxstencil; // max size of stencil int maxstencil_multi; // max sizes of stencils - int sx,sy,sz; // extent of stencil in each dim int dimension; -- GitLab From 4b3197202ba2fc56f946376719bce24f1452897f Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Tue, 7 Feb 2017 13:38:49 -0500 Subject: [PATCH 140/337] USER-DPD: Rework SSA to use a new neighbor list structure, ready for Kokkos NOTE: pair evaluation order changes, causing numerical differences! Atom pair processing order is fully planned out in npair_half_bin_newton_ssa Makes the SSA neighbor list structure very different. Do not use by others! Each local is in ilist, numneigh, and firstneigh four times instead of once. Changes LAMMPS core code that had been previously changed for USER-DPD/SSA: Removes ssaAIR[] from class Atom as it is now unused. Removes ndxAIR_ssa[] from class NeighList as it is now unused. Increases length of ilist[], numneigh[], and firstneigh[] if SSA flag set. --- src/USER-DPD/fix_shardlow.cpp | 39 ++-- src/USER-DPD/nbin_ssa.cpp | 20 -- src/USER-DPD/nbin_ssa.h | 3 - src/USER-DPD/npair_half_bin_newton_ssa.cpp | 206 ++++++++++++++------- src/USER-DPD/npair_half_bin_newton_ssa.h | 11 +- src/atom.cpp | 2 - src/atom.h | 1 - src/neigh_list.cpp | 22 +-- src/neigh_list.h | 1 - 9 files changed, 175 insertions(+), 130 deletions(-) diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 4220760a9b..4a7fff66cf 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -55,6 +55,7 @@ #include "pair_dpd_fdt.h" #include "pair_dpd_fdt_energy.h" #include "pair.h" +#include "npair_half_bin_newton_ssa.h" #include "citeme.h" using namespace LAMMPS_NS; @@ -500,19 +501,30 @@ void FixShardlow::initial_integrate(int vflag) dtsqrt = sqrt(update->dt); - ii = 0; + NPairHalfBinNewtonSSA *np_ssa = dynamic_cast(list->np); + if (!np_ssa) error->one(FLERR, "NPair wasn't a NPairHalfBinNewtonSSA object"); + int ssa_phaseCt = np_ssa->ssa_phaseCt; + int *ssa_phaseLen = np_ssa->ssa_phaseLen; + int **ssa_itemLoc = np_ssa->ssa_itemLoc; + int **ssa_itemLen = np_ssa->ssa_itemLen; + // process neighbors in the local AIR - while (ii < inum) { - i = ilist[ii]; - for (int subphase = 0; subphase < 4; subphase++) { - int start = (subphase > 0) ? list->ndxAIR_ssa[i][subphase - 1] : 0; - int len = list->ndxAIR_ssa[i][subphase] - start; - if (len > 0) { - if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][start]), len); - else ssa_update_dpd(i, &(list->firstneigh[i][start]), len); + for (int workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { + int workItemCt = ssa_phaseLen[workPhase]; + + for (int workItem = 0; workItem < workItemCt; ++workItem) { + int ct = ssa_itemLen[workPhase][workItem]; + ii = ssa_itemLoc[workPhase][workItem]; + + while (ct-- > 0) { + int len = list->numneigh[ii]; + if (len > 0) { + if (useDPDE) ssa_update_dpde(ilist[ii], list->firstneigh[ii], len); + else ssa_update_dpd(ilist[ii], list->firstneigh[ii], len); + } + ii++; } } - ii++; } ii = inum; @@ -531,10 +543,9 @@ void FixShardlow::initial_integrate(int vflag) // process neighbors in this AIR while (ct-- > 0) { - i = ilist[ii]; - int len = list->numneigh[i]; - if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][0]), len); - else ssa_update_dpd(i, &(list->firstneigh[i][0]), len); + int len = list->numneigh[ii]; + if (useDPDE) ssa_update_dpde(ilist[ii], list->firstneigh[ii], len); + else ssa_update_dpd(ilist[ii], list->firstneigh[ii], len); ii++; } diff --git a/src/USER-DPD/nbin_ssa.cpp b/src/USER-DPD/nbin_ssa.cpp index 7e603af714..4c57a8e70f 100644 --- a/src/USER-DPD/nbin_ssa.cpp +++ b/src/USER-DPD/nbin_ssa.cpp @@ -30,9 +30,6 @@ using namespace LAMMPS_NS; NBinSSA::NBinSSA(LAMMPS *lmp) : NBinStandard(lmp) { - maxbin_ssa = 0; - binlist_ssa = NULL; - binct_ssa = NULL; for (int i = 0; i < 8; i++) { gairhead_ssa[i] = -1; } @@ -40,8 +37,6 @@ NBinSSA::NBinSSA(LAMMPS *lmp) : NBinStandard(lmp) NBinSSA::~NBinSSA() { - memory->destroy(binlist_ssa); - memory->destroy(binct_ssa); } /* ---------------------------------------------------------------------- @@ -72,8 +67,6 @@ void NBinSSA::bin_atoms() for (i = 0; i < mbins; i++) { binhead[i] = -1; - binlist_ssa[i] = -1; - binct_ssa[i] = 0; } // bin in reverse order so linked list will be in forward order @@ -108,7 +101,6 @@ void NBinSSA::bin_atoms() if (zbin >= lbinzhi) lbinzhi = zbin + 1; bins[i] = binhead[ibin]; binhead[ibin] = i; - ++(binct_ssa[ibin]); } } @@ -119,14 +111,6 @@ void NBinSSA::bin_atoms_setup(int nall) { NBinStandard::bin_atoms_setup(nall); // Setup the parent class's data too - if (mbins > maxbin_ssa) { - maxbin_ssa = mbins; - memory->destroy(binlist_ssa); - memory->destroy(binct_ssa); - memory->create(binlist_ssa,maxbin_ssa,"binlist_ssa"); - memory->create(binct_ssa,maxbin_ssa,"binct_ssa"); - } - // Clear the local bin extent bounding box. lbinxlo = mbinx - 1; // Safe to = stencil->sx + 1 lbinylo = mbiny - 1; // Safe to = stencil->sy + 1 @@ -142,10 +126,6 @@ bigint NBinSSA::memory_usage() { bigint bytes = NBinStandard::memory_usage(); // Count the parent's usage too - if (maxbin_ssa) { - bytes += memory->usage(binlist_ssa,maxbin_ssa); - bytes += memory->usage(binct_ssa,maxbin_ssa); - } return bytes; } diff --git a/src/USER-DPD/nbin_ssa.h b/src/USER-DPD/nbin_ssa.h index f26f8c77f0..2a0175081e 100644 --- a/src/USER-DPD/nbin_ssa.h +++ b/src/USER-DPD/nbin_ssa.h @@ -29,10 +29,7 @@ namespace LAMMPS_NS { class NBinSSA : public NBinStandard { public: - int *binlist_ssa; // index in neighlist of 1st local atom in each bin - int *binct_ssa; // count of local atoms in each bin int gairhead_ssa[8]; // index of 1st ghost atom in each AIR - int maxbin_ssa; // size of binlist_ssa and binct_ssa arrays // Bounds of the local atoms in the binhead array int lbinxlo; // lowest local bin x-dim coordinate diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index 77b20966b0..2c787d6398 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -34,7 +34,27 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NPairHalfBinNewtonSSA::NPairHalfBinNewtonSSA(LAMMPS *lmp) : NPair(lmp) {} +NPairHalfBinNewtonSSA::NPairHalfBinNewtonSSA(LAMMPS *lmp) : NPair(lmp) +{ + ssa_maxPhaseCt = 0; + ssa_maxPhaseLen = 0; + ssa_phaseCt = 0; + ssa_phaseLen = NULL; + ssa_itemLoc = NULL; + ssa_itemLen = NULL; +} + +/* ---------------------------------------------------------------------- */ + +NPairHalfBinNewtonSSA::~NPairHalfBinNewtonSSA() +{ + ssa_maxPhaseCt = 0; + ssa_maxPhaseLen = 0; + ssa_phaseCt = 0; + memory->destroy(ssa_phaseLen); + memory->destroy(ssa_itemLoc); + memory->destroy(ssa_itemLen); +} /* ---------------------------------------------------------------------- binned neighbor list construction with full Newton's 3rd law @@ -81,8 +101,6 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) if (!nb_ssa) error->one(FLERR, "NBin wasn't a NBinSSA object"); int *bins = nb_ssa->bins; int *binhead = nb_ssa->binhead; - int *binlist_ssa = nb_ssa->binlist_ssa; - int *binct_ssa = nb_ssa->binct_ssa; int *gairhead_ssa = &(nb_ssa->gairhead_ssa[0]); int inum = 0; @@ -96,74 +114,81 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) int lbinzlo = nb_ssa->lbinzlo; int lbinzhi = nb_ssa->lbinzhi; - ipage->reset(); + int sx1 = ns_ssa->sx + 1; + int sy1 = ns_ssa->sy + 1; + int sz1 = ns_ssa->sz + 1; - // loop over bins with local atoms, storing half of the neighbors - for (zbin = lbinzlo; zbin < lbinzhi; zbin++) { - for (ybin = lbinylo; ybin < lbinyhi; ybin++) { - for (xbin = lbinxlo; xbin < lbinxhi; xbin++) { - ibin = zbin*mbiny*mbinx + ybin*mbinx + xbin; - binlist_ssa[ibin] = inum; // record where ibin starts in ilist - for (i = binhead[ibin]; i >= 0; i = bins[i]) { - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } + ssa_phaseCt = sz1*sy1*sx1; - // loop over rest of local atoms in i's bin - // just store them, since j is beyond i in linked list - - for (j = bins[i]; j >= 0; j = bins[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } + xbin = (lbinxhi - lbinxlo + sx1 - 1) / sx1 + 1; + ybin = (lbinyhi - lbinylo + sy1 - 1) / sy1 + 1; + zbin = (lbinzhi - lbinzlo + sz1 - 1) / sz1 + 1; - // loop over all local atoms in other bins in "half" stencil + int phaseLenEstimate = xbin*ybin*zbin; - k = 0; - for (int subphase = 0; subphase < 4; subphase++) { - for (; k < nstencil_ssa[subphase]; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; - j = bins[j]) { + if (ssa_phaseCt > ssa_maxPhaseCt) { + ssa_maxPhaseCt = ssa_phaseCt; + ssa_maxPhaseLen = 0; + memory->destroy(ssa_phaseLen); + memory->destroy(ssa_itemLoc); + memory->destroy(ssa_itemLen); + memory->create(ssa_phaseLen,ssa_maxPhaseCt,"NPairHalfBinNewtonSSA:ssa_phaseLen"); + } + + if (phaseLenEstimate > ssa_maxPhaseLen) { + ssa_maxPhaseLen = phaseLenEstimate; + memory->destroy(ssa_itemLoc); + memory->destroy(ssa_itemLen); + memory->create(ssa_itemLoc,ssa_maxPhaseCt,ssa_maxPhaseLen,"NPairHalfBinNewtonSSA:ssa_itemLoc"); + memory->create(ssa_itemLen,ssa_maxPhaseCt,ssa_maxPhaseLen,"NPairHalfBinNewtonSSA:ssa_itemLen"); + } + + ipage->reset(); + int workPhase = 0; + // loop over bins with local atoms, storing half of the neighbors + for (int zoff = ns_ssa->sz; zoff >= 0; --zoff) { + for (int yoff = ns_ssa->sy; yoff >= 0; --yoff) { + for (int xoff = ns_ssa->sx; xoff >= 0; --xoff) { + int workItem = 0; + for (zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { + for (ybin = lbinylo + yoff - ns_ssa->sy; ybin < lbinyhi; ybin += sy1) { + for (xbin = lbinxlo + xoff - ns_ssa->sx; xbin < lbinxhi; xbin += sz1) { + if (workItem >= phaseLenEstimate) error->one(FLERR,"phaseLenEstimate was too small"); + ssa_itemLoc[workPhase][workItem] = inum; // record where workItem starts in ilist + + for (int subphase = 0; subphase < 4; subphase++) { + int s_ybin = ybin + ((subphase & 0x2) ? ns_ssa->sy : 0); + int s_xbin = xbin + ((subphase & 0x1) ? ns_ssa->sx : 0); + int ibin, ct; + + if ((s_ybin < lbinylo) || (s_ybin >= lbinyhi)) continue; + if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; + ibin = zbin*nb_ssa->mbiny*nb_ssa->mbinx + + s_ybin*nb_ssa->mbinx + + s_xbin; + + for (i = binhead[ibin]; i >= 0; i = bins[i]) { + n = 0; + neighptr = ipage->vget(); + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; + } + // loop over rest of local atoms in i's bin if this is subphase 0 + // just store them, since j is beyond i in linked list + if (subphase == 0) for (j = bins[i]; j >= 0; j = bins[j]) { jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) { if (molecular) { if (!moltemplate) @@ -180,22 +205,59 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) } else neighptr[n++] = j; } } - } - list->ndxAIR_ssa[i][subphase] = n; // record end of this subphase - } - if (n > 0) { - ilist[inum++] = i; + // loop over all local atoms in other bins in "subphase" of stencil + k = (subphase > 0) ? nstencil_ssa[subphase - 1] : 0; + for (; k < nstencil_ssa[subphase]; k++) { + for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + if (rsq <= cutneighsq[itype][jtype]) { + if (molecular) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } + + if (n > 0) { + firstneigh[inum] = neighptr; + numneigh[inum] = n; + ilist[inum++] = i; + } + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } } - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + // record where workItem ends in ilist + ssa_itemLen[workPhase][workItem] = inum - ssa_itemLoc[workPhase][workItem]; + if (ssa_itemLen[workPhase][workItem] > 0) workItem++; } } + } + + // record where workPhase ends + ssa_phaseLen[workPhase++] = workItem; } } + } + + if (ssa_phaseCt != workPhase) error->one(FLERR,"ssa_phaseCt was wrong"); list->AIRct_ssa[0] = list->inum = inum; @@ -258,11 +320,11 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) } if (n > 0) { + firstneigh[inum + gnum] = neighptr; + numneigh[inum + gnum] = n; ilist[inum + (gnum++)] = i; ++locAIRct; } - firstneigh[i] = neighptr; - numneigh[i] = n; ipage->vgot(n); if (ipage->status()) error->one(FLERR,"Neighbor (ghost) list overflow, boost neigh_modify one"); diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.h b/src/USER-DPD/npair_half_bin_newton_ssa.h index c9ccbc4bd9..ea292316ca 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.h +++ b/src/USER-DPD/npair_half_bin_newton_ssa.h @@ -28,9 +28,18 @@ namespace LAMMPS_NS { class NPairHalfBinNewtonSSA : public NPair { public: + // SSA Work plan data structures + int ssa_phaseCt; + int *ssa_phaseLen; + int **ssa_itemLoc; + int **ssa_itemLen; + NPairHalfBinNewtonSSA(class LAMMPS *); - ~NPairHalfBinNewtonSSA() {} + ~NPairHalfBinNewtonSSA(); void build(class NeighList *); + private: + int ssa_maxPhaseCt; + int ssa_maxPhaseLen; }; } diff --git a/src/atom.cpp b/src/atom.cpp index 0920dc3a02..de98b65470 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -99,7 +99,6 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) uCond = uMech = uChem = uCG = uCGnew = NULL; duChem = NULL; dpdTheta = NULL; - ssaAIR = NULL; // USER-SMD @@ -296,7 +295,6 @@ Atom::~Atom() memory->destroy(uCG); memory->destroy(uCGnew); memory->destroy(duChem); - memory->destroy(ssaAIR); memory->destroy(nspecial); memory->destroy(special); diff --git a/src/atom.h b/src/atom.h index de7cda06ac..745377cee1 100644 --- a/src/atom.h +++ b/src/atom.h @@ -93,7 +93,6 @@ class Atom : protected Pointers { double *duChem; double *dpdTheta; int nspecies_dpd; - int *ssaAIR; // Shardlow Splitting Algorithm Active Interaction Region number // molecular info diff --git a/src/neigh_list.cpp b/src/neigh_list.cpp index e8fd4130fc..6376637832 100644 --- a/src/neigh_list.cpp +++ b/src/neigh_list.cpp @@ -78,7 +78,7 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp) // USER-DPD package - ndxAIR_ssa = NULL; + for (int i = 0; i < 8; i++) AIRct_ssa[i] = 0; np = NULL; } @@ -98,10 +98,6 @@ NeighList::~NeighList() delete [] iskip; memory->destroy(ijskip); - - if (ssa) { - memory->sfree(ndxAIR_ssa); - } } /* ---------------------------------------------------------------------- @@ -202,14 +198,16 @@ void NeighList::grow(int nlocal, int nall) if (listmiddle) listmiddle->grow(nlocal,nall); // skip if data structs are already big enough - - if (ghost) { + if (ssa) { + if ((nlocal * 3) + nall <= maxatom) return; + } else if (ghost) { if (nall <= maxatom) return; } else { if (nlocal <= maxatom) return; } - maxatom = atom->nmax; + if (ssa) maxatom = (nlocal * 3) + nall; + else maxatom = atom->nmax; memory->destroy(ilist); memory->destroy(numneigh); @@ -223,12 +221,6 @@ void NeighList::grow(int nlocal, int nall) firstdouble = (double **) memory->smalloc(maxatom*sizeof(double *), "neighlist:firstdouble"); } - - if (ssa) { - if (ndxAIR_ssa) memory->sfree(ndxAIR_ssa); - ndxAIR_ssa = (uint16_t (*)[8]) memory->smalloc(sizeof(uint16_t)*8*maxatom, - "neighlist:ndxAIR_ssa"); - } } /* ---------------------------------------------------------------------- @@ -305,7 +297,5 @@ bigint NeighList::memory_usage() } } - if (ndxAIR_ssa) bytes += sizeof(uint16_t) * 8 * maxatom; - return bytes; } diff --git a/src/neigh_list.h b/src/neigh_list.h index ea88e9b28b..bef512512c 100644 --- a/src/neigh_list.h +++ b/src/neigh_list.h @@ -81,7 +81,6 @@ class NeighList : protected Pointers { // USER-DPD package and Shardlow Splitting Algorithm (SSA) support int AIRct_ssa[8]; // count of how many atoms in each AIR - uint16_t (*ndxAIR_ssa)[8]; // for each atom, last neighbor index of each AIR class NPair *np; // ptr to NPair instance I depend on // methods -- GitLab From e0bafa499d55d0f273b23adf87cbaf824d5f9f11 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Wed, 15 Feb 2017 15:03:40 -0500 Subject: [PATCH 141/337] indentation fixes in npair_kokkos.cpp, plus a comment question --- src/KOKKOS/npair_kokkos.cpp | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index f49e44c352..4f17835717 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -170,7 +170,7 @@ void NPairKokkos::build(NeighList *list_) data.special_flag[2] = special_flag[2]; data.special_flag[3] = special_flag[3]; - if(list->d_neighbors.dimension_0()d_neighbors.dimension_0()d_neighbors = typename ArrayTypes::t_neighbors_2d("neighbors", nall*1.1, list->maxneighs); list->d_numneigh = typename ArrayTypes::t_int_1d("numneigh", nall*1.1); data.neigh_list.d_neighbors = list->d_neighbors; @@ -179,10 +179,10 @@ void NPairKokkos::build(NeighList *list_) data.h_resize()=1; while(data.h_resize()) { data.h_new_maxneighs() = list->maxneighs; - data.h_resize() = 0; + data.h_resize() = 0; - Kokkos::deep_copy(data.resize, data.h_resize); - Kokkos::deep_copy(data.new_maxneighs, data.h_new_maxneighs); + Kokkos::deep_copy(data.resize, data.h_resize); + Kokkos::deep_copy(data.new_maxneighs, data.h_new_maxneighs); #ifdef KOKKOS_HAVE_CUDA #define BINS_PER_BLOCK 2 const int factor = atoms_per_bin<64?2:1; @@ -191,27 +191,27 @@ void NPairKokkos::build(NeighList *list_) const int factor = 1; #endif -if (GHOST) { - NPairKokkosBuildFunctorGhost f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); - Kokkos::parallel_for(nall, f); -} else { - if (newton_pair) { - NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + if (GHOST) { + NPairKokkosBuildFunctorGhost f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + Kokkos::parallel_for(nall, f); + } else { + if (newton_pair) { + NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_HAVE_CUDA - Kokkos::parallel_for(config, f); + Kokkos::parallel_for(config, f); #else - Kokkos::parallel_for(nall, f); + Kokkos::parallel_for(nall, f); #endif - } else { - NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + } else { + NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_HAVE_CUDA - Kokkos::parallel_for(config, f); + Kokkos::parallel_for(config, f); #else - Kokkos::parallel_for(nall, f); + Kokkos::parallel_for(nall, f); #endif - } -} - DeviceType::fence(); + } + } + DeviceType::fence(); deep_copy(data.h_resize, data.resize); if(data.h_resize()) { -- GitLab From 5289ec0b39f2c6600da1c246bcb59c2a668e5b56 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 17 Feb 2017 18:39:04 -0500 Subject: [PATCH 142/337] cleanup: remove unused binatomsItem() declaration in npair_kokkos.h --- src/KOKKOS/npair_kokkos.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index 54726cb971..87fa0b8aee 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -277,9 +277,6 @@ class NeighborKokkosExecute void build_ItemCuda(typename Kokkos::TeamPolicy::member_type dev) const; #endif - KOKKOS_INLINE_FUNCTION - void binatomsItem(const int &i) const; - KOKKOS_INLINE_FUNCTION int coord2bin(const X_FLOAT & x,const X_FLOAT & y,const X_FLOAT & z) const { -- GitLab From c2ee3285fc79729d03e458ca2d5118699bd40c7a Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 17 Feb 2017 21:54:41 -0500 Subject: [PATCH 143/337] USER-DPD: change nstencil_ssa[] to eliminate a corner case Saves a conditional inside an NPairHalfBinNewtonSSA::build() inner loop --- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 3 +-- .../nstencil_half_bin_2d_newton_ssa.cpp | 17 +++++++++-------- .../nstencil_half_bin_3d_newton_ssa.cpp | 17 +++++++++-------- src/USER-DPD/nstencil_ssa.h | 3 ++- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index 2c787d6398..8d260dd2be 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -207,8 +207,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) } // loop over all local atoms in other bins in "subphase" of stencil - k = (subphase > 0) ? nstencil_ssa[subphase - 1] : 0; - for (; k < nstencil_ssa[subphase]; k++) { + for (k = nstencil_ssa[subphase]; k < nstencil_ssa[subphase+1]; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp index 084d5b0602..5df65918d3 100644 --- a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp @@ -42,6 +42,7 @@ NStencilHalfBin2dNewtonSSA::NStencilHalfBin2dNewtonSSA(LAMMPS *lmp) : void NStencilHalfBin2dNewtonSSA::create() { int i,j,pos = 0; + nstencil_ssa[0] = 0; // redundant info, but saves a conditional // Subphase 0: upper right front bins (red) for (j = 0; j <= sy; j++) for (i = 0; i <= sx; i++) @@ -52,8 +53,8 @@ void NStencilHalfBin2dNewtonSSA::create() stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } - nstencil_ssa[0] = pos; + nstencil_ssa[1] = pos; // Subphase 1: upper left front bins (light blue) for (j = 1; j <= sy; j++) for (i = -sx; i < 0; i++) @@ -63,21 +64,21 @@ void NStencilHalfBin2dNewtonSSA::create() stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } - nstencil_ssa[1] = pos; - // Subphase 2: lower right front bins (yellow) nstencil_ssa[2] = pos; + // Subphase 2: lower right front bins (yellow) - // Subphase 3: lower left front bins (blue) nstencil_ssa[3] = pos; + // Subphase 3: lower left front bins (blue) + nstencil_ssa[4] = pos; // record end of half stencil // Now include additional bins for AIR ghosts, and impure-to-pure locals // Subphase 4: upper right back bins (pink) - nstencil_ssa[4] = pos; + // nstencil_ssa[5] = pos; // Subphase 5: upper left back bins (light green) - nstencil_ssa[5] = pos; + // nstencil_ssa[6] = pos; // Subphase 6: lower right back bins (white) for (j = -sy; j < 0; j++) for (i = 0; i <= sx; i++) @@ -87,8 +88,8 @@ void NStencilHalfBin2dNewtonSSA::create() stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } - nstencil_ssa[6] = pos; + // nstencil_ssa[7] = pos; // Subphase 7: lower left back bins (purple) for (j = -sy; j <= 0; j++) for (i = -sx; i < 0; i++) @@ -98,7 +99,7 @@ void NStencilHalfBin2dNewtonSSA::create() stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } - nstencil_ssa[7] = pos; + // nstencil_ssa[8] = pos; // Also, include the centroid for the AIR ghosts. stencilxyz[pos][0] = 0; diff --git a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp index 1741a1e847..3b1c85bdc1 100644 --- a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp @@ -42,6 +42,7 @@ NStencilHalfBin3dNewtonSSA::NStencilHalfBin3dNewtonSSA(LAMMPS *lmp) : void NStencilHalfBin3dNewtonSSA::create() { int i,j,k,pos = 0; + nstencil_ssa[0] = 0; // redundant info, but saves a conditional // Subphase 0: upper right front bins (red) for (k = 0; k <= sz; k++) for (j = 0; j <= sy; j++) @@ -53,8 +54,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[0] = pos; + nstencil_ssa[1] = pos; // Subphase 1: upper left front bins (light blue) for (k = 0; k <= sz; k++) for (j = 1; j <= sy; j++) @@ -65,8 +66,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[1] = pos; + nstencil_ssa[2] = pos; // Subphase 2: lower right front bins (yellow) for (k = 1; k <= sz; k++) for (j = -sy; j < 0; j++) @@ -77,8 +78,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[2] = pos; + nstencil_ssa[3] = pos; // Subphase 3: lower left front bins (blue) for (k = 1; k <= sz; k++) for (j = -sy; j <= 0; j++) @@ -89,8 +90,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[3] = pos; + nstencil_ssa[4] = pos; // record end of half stencil // Now include additional bins for AIR ghosts, and impure-to-pure locals // Subphase 4: upper right back bins (pink) for (k = -sz; k < 0; k++) @@ -102,8 +103,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[4] = pos; + // nstencil_ssa[5] = pos; // Subphase 5: upper left back bins (light green) for (k = -sz; k < 0; k++) for (j = 1; j <= sy; j++) @@ -114,8 +115,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[5] = pos; + // nstencil_ssa[6] = pos; // Subphase 6: lower right back bins (white) for (k = -sz; k <= 0; k++) for (j = -sy; j < 0; j++) @@ -126,8 +127,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[6] = pos; + // nstencil_ssa[7] = pos; // Subphase 7: lower left back bins (purple) for (k = -sz; k <= 0; k++) for (j = -sy; j <= 0; j++) @@ -138,7 +139,7 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[7] = pos; + //nstencil_ssa[8] = pos; // Also, include the centroid for the AIR ghosts. stencilxyz[pos][0] = 0; diff --git a/src/USER-DPD/nstencil_ssa.h b/src/USER-DPD/nstencil_ssa.h index a5e3723271..f6f91fefde 100644 --- a/src/USER-DPD/nstencil_ssa.h +++ b/src/USER-DPD/nstencil_ssa.h @@ -24,7 +24,8 @@ class NStencilSSA : public NStencil { ~NStencilSSA() {} virtual void create() = 0; - int nstencil_ssa[8]; // last stencil index for each subphase + // first stencil index for each subphase, with last index at end + int nstencil_ssa[5]; }; } -- GitLab From d1a0a3e1c369254f173845ca6c4200f956eed0f5 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 17 Feb 2017 22:00:56 -0500 Subject: [PATCH 144/337] USER-DPD: first attempt at nbin_ssa_kokkos... It compiles! --- src/KOKKOS/nbin_ssa_kokkos.cpp | 233 +++++++++++++++++++++++++++++++++ src/KOKKOS/nbin_ssa_kokkos.h | 193 +++++++++++++++++++++++++++ 2 files changed, 426 insertions(+) create mode 100644 src/KOKKOS/nbin_ssa_kokkos.cpp create mode 100644 src/KOKKOS/nbin_ssa_kokkos.h diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp new file mode 100644 index 0000000000..6ed8e9f3e4 --- /dev/null +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -0,0 +1,233 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: + James Larentzos (ARL) and Timothy I. Mattox (Engility Corporation) +------------------------------------------------------------------------- */ + +#include "nbin_ssa_kokkos.h" +#include "neighbor.h" +#include "atom_kokkos.h" +#include "group.h" +#include "domain.h" +#include "comm.h" +#include "update.h" +#include "error.h" +#include "atom_masks.h" + +// #include "memory.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NBinSSAKokkos::NBinSSAKokkos(LAMMPS *lmp) : NBinStandard(lmp) +{ + atoms_per_bin = ghosts_per_gbin = 16; + + d_resize = typename AT::t_int_scalar("NBinSSAKokkos::d_resize"); +#ifndef KOKKOS_USE_CUDA_UVM + h_resize = Kokkos::create_mirror_view(d_resize); +#else + h_resize = d_resize; +#endif + h_resize() = 1; + + k_gbincount = DAT::tdual_int_1d("NBinSSAKokkos::gbincount",8); + gbincount = k_gbincount.view(); +} + +/* ---------------------------------------------------------------------- */ + +template +void NBinSSAKokkos::bin_atoms_setup(int nall) +{ + if (mbins > (int) k_bins.d_view.dimension_0()) { + k_bins = DAT::tdual_int_2d("NBinSSAKokkos::bins",mbins,atoms_per_bin); + bins = k_bins.view(); + + k_bincount = DAT::tdual_int_1d("NBinSSAKokkos::bincount",mbins); + bincount = k_bincount.view(); + } + + ghosts_per_gbin = atom->nghost / 7; // estimate needed size + + if (ghosts_per_gbin > (int) k_gbins.d_view.dimension_1()) { + k_gbins = DAT::tdual_int_2d("NBinSSAKokkos::gbins",8,ghosts_per_gbin); + gbins = k_gbins.view(); + } + + // Clear the local bin extent bounding box. + h_lbinxlo() = mbinx - 1; // Safe to = stencil->sx + 1 + h_lbinylo() = mbiny - 1; // Safe to = stencil->sy + 1 + h_lbinzlo() = mbinz - 1; // Safe to = stencil->sz + 1 + h_lbinxhi() = 0; // Safe to = mbinx - stencil->sx - 1 + h_lbinyhi() = 0; // Safe to = mbiny - stencil->sy - 1 + h_lbinzhi() = 0; // Safe to = mbinz - stencil->sz - 1 + deep_copy(d_lbinxlo, h_lbinxlo); + deep_copy(d_lbinylo, h_lbinylo); + deep_copy(d_lbinzlo, h_lbinzlo); + deep_copy(d_lbinxhi, h_lbinxhi); + deep_copy(d_lbinyhi, h_lbinyhi); + deep_copy(d_lbinzhi, h_lbinzhi); +} + +/* ---------------------------------------------------------------------- + bin owned and ghost atoms for the Shardlow Splitting Algorithm (SSA) + local atoms are in distinct bins (binhead[]) from the ghosts + ghost atoms are "binned" in gairhead_ssa[] instead + ghosts which are not in an Active Interaction Region (AIR) are skipped +------------------------------------------------------------------------- */ + +template +void NBinSSAKokkos::bin_atoms() +{ + last_bin = update->ntimestep; + + int i; + + // bin the ghost atoms + h_resize() = 1; + while(h_resize() > 0) { + h_resize() = 0; + deep_copy(d_resize, h_resize); + + for (int i = 0; i < 8; i++) { + k_gbincount.h_view(i) = 0; + } + k_gbincount.modify(); + k_gbincount.sync(); + DeviceType::fence(); // FIXME? + + atomKK->sync(ExecutionSpaceFromDevice::space,X_MASK); + x = atomKK->k_x.view(); + + // I don't think these two lines need to be repeated here... - TIM 20170216 + sublo_[0] = domain->sublo[0]; + sublo_[1] = domain->sublo[1]; + sublo_[2] = domain->sublo[2]; + subhi_[0] = domain->subhi[0]; + subhi_[1] = domain->subhi[1]; + subhi_[2] = domain->subhi[2]; + + NPairSSAKokkosBinGhostsFunctor f(*this); + + Kokkos::parallel_for(atom->nghost, f); + DeviceType::fence(); + + deep_copy(h_resize, d_resize); + if(h_resize()) { + k_gbincount.modify(); + k_gbincount.sync(); + for (i = 1; i < 8; i++) { + if (k_gbincount.h_view(i) > ghosts_per_gbin) { + ghosts_per_gbin = k_gbincount.h_view(i); + } + } + k_gbins = DAT::tdual_int_2d("gbins", 8, ghosts_per_gbin); + gbins = k_gbins.view(); + } + } + c_gbins = gbins; // gbins won't change until the next bin_atoms + + // bin the local atoms + h_resize() = 1; + while(h_resize() > 0) { + h_resize() = 0; + deep_copy(d_resize, h_resize); + + MemsetZeroFunctor f_zero; + f_zero.ptr = (void*) k_bincount.view().ptr_on_device(); + Kokkos::parallel_for(mbins, f_zero); + DeviceType::fence(); + + atomKK->sync(ExecutionSpaceFromDevice::space,X_MASK); + x = atomKK->k_x.view(); + + // I don't think these two lines need to be repeated here... - TIM 20170216 + bboxlo_[0] = bboxlo[0]; bboxlo_[1] = bboxlo[1]; bboxlo_[2] = bboxlo[2]; + bboxhi_[0] = bboxhi[0]; bboxhi_[1] = bboxhi[1]; bboxhi_[2] = bboxhi[2]; + + NPairSSAKokkosBinAtomsFunctor f(*this); + + Kokkos::parallel_for(atom->nlocal, f); + DeviceType::fence(); + + deep_copy(h_resize, d_resize); + if(h_resize()) { + + atoms_per_bin += 16; + k_bins = DAT::tdual_int_2d("bins", mbins, atoms_per_bin); + bins = k_bins.view(); + } + } + deep_copy(h_lbinxlo, d_lbinxlo); + deep_copy(h_lbinylo, d_lbinylo); + deep_copy(h_lbinzlo, d_lbinzlo); + deep_copy(h_lbinxhi, d_lbinxhi); + deep_copy(h_lbinyhi, d_lbinyhi); + deep_copy(h_lbinzhi, d_lbinzhi); + c_bins = bins; // bins won't change until the next bin_atoms +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::binGhostsItem(const int &i_) const +{ + const int i = i_ + atom->nlocal; + const int iAIR = coord2ssaAIR(x(i, 0), x(i, 1), x(i, 2)); + if (iAIR > 0) { // include only ghost atoms in an AIR + const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); + if(ac < (int) gbins.dimension_1()) { + gbins(iAIR, ac) = i; + } else { + d_resize() = 1; + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::binAtomsItem(const int &i) const +{ + int loc[3]; + const int ibin = coord2bin(x(i, 0), x(i, 1), x(i, 2), &(loc[0])); + + // Find the bounding box of the local atoms in the bins + if (loc[0] < d_lbinxlo()) Kokkos::atomic_fetch_min(&d_lbinxlo(),loc[0]); + if (loc[0] >= d_lbinxhi()) Kokkos::atomic_fetch_max(&d_lbinxhi(),loc[0] + 1); + if (loc[1] < d_lbinylo()) Kokkos::atomic_fetch_min(&d_lbinylo(),loc[1]); + if (loc[1] >= d_lbinyhi()) Kokkos::atomic_fetch_max(&d_lbinyhi(),loc[1] + 1); + if (loc[2] < d_lbinzlo()) Kokkos::atomic_fetch_min(&d_lbinzlo(),loc[2]); + if (loc[2] >= d_lbinzhi()) Kokkos::atomic_fetch_max(&d_lbinzhi(),loc[2] + 1); + + const int ac = Kokkos::atomic_fetch_add(&(bincount[ibin]), (int)1); + if(ac < (int) bins.dimension_1()) { + bins(ibin, ac) = i; + } else { + d_resize() = 1; + } +} + +namespace LAMMPS_NS { +template class NBinSSAKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class NBinSSAKokkos; +#endif +} diff --git a/src/KOKKOS/nbin_ssa_kokkos.h b/src/KOKKOS/nbin_ssa_kokkos.h new file mode 100644 index 0000000000..a16cb2d0b7 --- /dev/null +++ b/src/KOKKOS/nbin_ssa_kokkos.h @@ -0,0 +1,193 @@ +/* -*- 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 NBIN_CLASS + +NBinStyle(ssa/kk/host, + NBinSSAKokkos, + NB_SSA | NB_KOKKOS_HOST) + +NBinStyle(ssa/kk/device, + NBinSSAKokkos, + NB_SSA | NB_KOKKOS_DEVICE) + +#else + +#ifndef LMP_NBIN_SSA_KOKKOS_H +#define LMP_NBIN_SSA_KOKKOS_H + +#include "nbin_standard.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class NBinSSAKokkos : public NBinStandard { + public: + typedef ArrayTypes AT; + + NBinSSAKokkos(class LAMMPS *); + ~NBinSSAKokkos() {} + void bin_atoms_setup(int); + void bin_atoms(); + + int atoms_per_bin; + DAT::tdual_int_1d k_bincount; + DAT::tdual_int_2d k_bins; + typename AT::t_int_1d bincount; + typename AT::t_int_2d bins; + typename AT::t_int_2d_const c_bins; + + int ghosts_per_gbin; + DAT::tdual_int_1d k_gbincount; + DAT::tdual_int_2d k_gbins; + typename AT::t_int_1d gbincount; + typename AT::t_int_2d gbins; + typename AT::t_int_2d_const c_gbins; + + typename AT::t_int_scalar d_resize; + typename ArrayTypes::t_int_scalar h_resize; + typename AT::t_x_array_randomread x; + + // Bounds of the local atoms in the bins array + typename AT::t_int_scalar d_lbinxlo; // lowest local bin x-dim coordinate + typename AT::t_int_scalar d_lbinylo; // lowest local bin y-dim coordinate + typename AT::t_int_scalar d_lbinzlo; // lowest local bin z-dim coordinate + typename AT::t_int_scalar d_lbinxhi; // highest local bin x-dim coordinate + typename AT::t_int_scalar d_lbinyhi; // highest local bin y-dim coordinate + typename AT::t_int_scalar d_lbinzhi; // highest local bin z-dim coordinate + typename ArrayTypes::t_int_scalar h_lbinxlo; + typename ArrayTypes::t_int_scalar h_lbinylo; + typename ArrayTypes::t_int_scalar h_lbinzlo; + typename ArrayTypes::t_int_scalar h_lbinxhi; + typename ArrayTypes::t_int_scalar h_lbinyhi; + typename ArrayTypes::t_int_scalar h_lbinzhi; + + + KOKKOS_INLINE_FUNCTION + void binAtomsItem(const int &i) const; + + KOKKOS_INLINE_FUNCTION + void binGhostsItem(const int &i) const; + +/* ---------------------------------------------------------------------- + convert atom coords into the ssa active interaction region number +------------------------------------------------------------------------- */ + KOKKOS_INLINE_FUNCTION + int coord2ssaAIR(const X_FLOAT & x,const X_FLOAT & y,const X_FLOAT & z) const + { + int ix, iy, iz; + ix = iy = iz = 0; + if (z < sublo_[2]) iz = -1; + if (z >= subhi_[2]) iz = 1; + if (y < sublo_[1]) iy = -1; + if (y >= subhi_[1]) iy = 1; + if (x < sublo_[0]) ix = -1; + if (x >= subhi_[0]) ix = 1; + if(iz < 0){ + return -1; + } else if(iz == 0){ + if( iy<0 ) return -1; // bottom left/middle/right + if( (iy==0) && (ix<0) ) return -1; // left atoms + if( (iy==0) && (ix==0) ) return 0; // Locally owned atoms + if( (iy==0) && (ix>0) ) return 2; // Right atoms + if( (iy>0) && (ix==0) ) return 1; // Top-middle atoms + if( (iy>0) && (ix!=0) ) return 3; // Top-right and top-left atoms + } else { // iz > 0 + if((ix==0) && (iy==0)) return 4; // Back atoms + if((ix==0) && (iy!=0)) return 5; // Top-back and bottom-back atoms + if((ix!=0) && (iy==0)) return 6; // Left-back and right-back atoms + if((ix!=0) && (iy!=0)) return 7; // Back corner atoms + } + return -2; + } + + KOKKOS_INLINE_FUNCTION + int coord2bin(const X_FLOAT & x,const X_FLOAT & y,const X_FLOAT & z, int* i) const + { + int ix,iy,iz; + + if (x >= bboxhi_[0]) + ix = static_cast ((x-bboxhi_[0])*bininvx) + nbinx; + else if (x >= bboxlo_[0]) { + ix = static_cast ((x-bboxlo_[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo_[0])*bininvx) - 1; + + if (y >= bboxhi_[1]) + iy = static_cast ((y-bboxhi_[1])*bininvy) + nbiny; + else if (y >= bboxlo_[1]) { + iy = static_cast ((y-bboxlo_[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo_[1])*bininvy) - 1; + + if (z >= bboxhi_[2]) + iz = static_cast ((z-bboxhi_[2])*bininvz) + nbinz; + else if (z >= bboxlo_[2]) { + iz = static_cast ((z-bboxlo_[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo_[2])*bininvz) - 1; + + i[0] = ix - mbinxlo; + i[1] = iy - mbinylo; + i[2] = iz - mbinzlo; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + + private: + double bboxlo_[3],bboxhi_[3]; + double sublo_[3], subhi_[3]; +}; + +template +struct NPairSSAKokkosBinGhostsFunctor { + typedef DeviceType device_type; + + const NBinSSAKokkos c; + + NPairSSAKokkosBinGhostsFunctor(const NBinSSAKokkos &_c): + c(_c) {}; + ~NPairSSAKokkosBinGhostsFunctor() {} + KOKKOS_INLINE_FUNCTION + void operator() (const int & i) const { + c.binGhostsItem(i); + } +}; + +template +struct NPairSSAKokkosBinAtomsFunctor { + typedef DeviceType device_type; + + const NBinSSAKokkos c; + + NPairSSAKokkosBinAtomsFunctor(const NBinSSAKokkos &_c): + c(_c) {}; + ~NPairSSAKokkosBinAtomsFunctor() {} + KOKKOS_INLINE_FUNCTION + void operator() (const int & i) const { + c.binAtomsItem(i); + } +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ -- GitLab From 7feb6c2853b6f2b8f67f84bda07cd9d0ab287e8b Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 17 Feb 2017 22:41:32 -0500 Subject: [PATCH 145/337] USER-DPD: fix a bug in AtomVecDPDKokkos::unpack_restart() --- src/KOKKOS/atom_vec_dpd_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index 820f11c215..f46f284f14 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -1668,7 +1668,7 @@ int AtomVecDPDKokkos::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++]; } -- GitLab From 37810bdc530209dc776f79bdbadf41c232919d04 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 17 Feb 2017 23:06:53 -0500 Subject: [PATCH 146/337] USER-DPD: move centroid bin of stencil_ssa to the first slot. Eliminates a special case version of a loop just for Subphase 0. NOTE: pair evaluation order changes, causing numerical differences! This changed the order that close neighbors of ghosts are processed. --- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 32 +++---------------- .../nstencil_half_bin_2d_newton_ssa.cpp | 14 ++++---- .../nstencil_half_bin_3d_newton_ssa.cpp | 14 ++++---- 3 files changed, 21 insertions(+), 39 deletions(-) diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index 8d260dd2be..14095bf349 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -180,35 +180,13 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) iatom = molatom[i]; tagprev = tag[i] - iatom - 1; } - // loop over rest of local atoms in i's bin if this is subphase 0 - // just store them, since j is beyond i in linked list - if (subphase == 0) for (j = bins[i]; j >= 0; j = bins[j]) { - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= cutneighsq[itype][jtype]) { - if (molecular) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } - // loop over all local atoms in other bins in "subphase" of stencil + // loop over all local atoms in the current stencil "subphase" for (k = nstencil_ssa[subphase]; k < nstencil_ssa[subphase+1]; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + const int jbin = ibin+stencil[k]; + if (jbin != ibin) j = binhead[jbin]; + else j = bins[i]; // same bin as i, so start just past i in the bin + for (; j >= 0; j = bins[j]) { jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; delx = xtmp - x[j][0]; diff --git a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp index 5df65918d3..451381c104 100644 --- a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp @@ -43,6 +43,14 @@ void NStencilHalfBin2dNewtonSSA::create() { int i,j,pos = 0; nstencil_ssa[0] = 0; // redundant info, but saves a conditional + + // Include the centroid at the start. + // It will be handled as part of Subphase 0. + stencilxyz[pos][0] = 0; + stencilxyz[pos][1] = 0; + stencilxyz[pos][2] = 0; + stencil[pos++] = 0; + // Subphase 0: upper right front bins (red) for (j = 0; j <= sy; j++) for (i = 0; i <= sx; i++) @@ -101,11 +109,5 @@ void NStencilHalfBin2dNewtonSSA::create() } // nstencil_ssa[8] = pos; - // Also, include the centroid for the AIR ghosts. - stencilxyz[pos][0] = 0; - stencilxyz[pos][1] = 0; - stencilxyz[pos][2] = 0; - stencil[pos++] = 0; - nstencil = pos; // record where full stencil ends } diff --git a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp index 3b1c85bdc1..cdd3b8856f 100644 --- a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp @@ -43,6 +43,14 @@ void NStencilHalfBin3dNewtonSSA::create() { int i,j,k,pos = 0; nstencil_ssa[0] = 0; // redundant info, but saves a conditional + + // Include the centroid at the start. + // It will be handled as part of Subphase 0. + stencilxyz[pos][0] = 0; + stencilxyz[pos][1] = 0; + stencilxyz[pos][2] = 0; + stencil[pos++] = 0; + // Subphase 0: upper right front bins (red) for (k = 0; k <= sz; k++) for (j = 0; j <= sy; j++) @@ -141,11 +149,5 @@ void NStencilHalfBin3dNewtonSSA::create() } //nstencil_ssa[8] = pos; - // Also, include the centroid for the AIR ghosts. - stencilxyz[pos][0] = 0; - stencilxyz[pos][1] = 0; - stencilxyz[pos][2] = 0; - stencil[pos++] = 0; - nstencil = pos; // record where full stencil ends } -- GitLab From 19ffe5931529b9c49cf9bc656c2e9fa01248aa3c Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sat, 18 Feb 2017 00:32:14 -0500 Subject: [PATCH 147/337] USER-DPD: fix typo in NPairHalfBinNewtonSSA::build(): sz1 instead of sx1 Luckily, no real change, since sz1 and sx1 are normally identical. --- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index 14095bf349..ab439d3731 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -153,7 +153,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) int workItem = 0; for (zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { for (ybin = lbinylo + yoff - ns_ssa->sy; ybin < lbinyhi; ybin += sy1) { - for (xbin = lbinxlo + xoff - ns_ssa->sx; xbin < lbinxhi; xbin += sz1) { + for (xbin = lbinxlo + xoff - ns_ssa->sx; xbin < lbinxhi; xbin += sx1) { if (workItem >= phaseLenEstimate) error->one(FLERR,"phaseLenEstimate was too small"); ssa_itemLoc[workPhase][workItem] = inum; // record where workItem starts in ilist -- GitLab From 5c6e7b12c647a21d45e8d6460e53a5ff64f277d6 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sat, 18 Feb 2017 01:09:02 -0500 Subject: [PATCH 148/337] BUGFIX: fix a copy-o in build_Item_Ghost(): xbin2, etc. should be an int xbin2, ybin2, and zbin2 are temporary integer bin coordinates, not floats! --- src/KOKKOS/npair_kokkos.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index 4f17835717..c750918695 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -724,9 +724,9 @@ void NeighborKokkosExecute:: const int ybin = binxyz[1]; const int zbin = binxyz[2]; for (int k = 0; k < nstencil; k++) { - const X_FLOAT xbin2 = xbin + stencilxyz(k,0); - const X_FLOAT ybin2 = ybin + stencilxyz(k,1); - const X_FLOAT zbin2 = zbin + stencilxyz(k,2); + const int xbin2 = xbin + stencilxyz(k,0); + const int ybin2 = ybin + stencilxyz(k,1); + const int zbin2 = zbin + stencilxyz(k,2); if (xbin2 < 0 || xbin2 >= mbinx || ybin2 < 0 || ybin2 >= mbiny || zbin2 < 0 || zbin2 >= mbinz) continue; -- GitLab From 01d0a5c4a210617fb47b9aa85a79eeccd715fa5f Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sat, 18 Feb 2017 01:38:55 -0500 Subject: [PATCH 149/337] BUGFIX: use Kokkos::atomic_fetch_max() to avoid a race on new_maxneighs --- src/KOKKOS/npair_kokkos.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index c750918695..5bfa147def 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -422,10 +422,10 @@ void NeighborKokkosExecute:: neigh_list.d_numneigh(i) = n; - if(n >= neigh_list.maxneighs) { + if(n > neigh_list.maxneighs) { resize() = 1; - if(n >= new_maxneighs()) new_maxneighs() = n; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); } neigh_list.d_ilist(i) = i; @@ -632,10 +632,10 @@ void NeighborKokkosExecute::build_ItemCuda(typename Kokkos::TeamPoli neigh_list.d_ilist(i) = i; } - if(n >= neigh_list.maxneighs) { + if(n > neigh_list.maxneighs) { resize() = 1; - if(n >= new_maxneighs()) new_maxneighs() = n; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); } } } @@ -755,10 +755,10 @@ void NeighborKokkosExecute:: neigh_list.d_numneigh(i) = n; - if(n >= neigh_list.maxneighs) { + if(n > neigh_list.maxneighs) { resize() = 1; - if(n >= new_maxneighs()) new_maxneighs() = n; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); } neigh_list.d_ilist(i) = i; } -- GitLab From 8065d967612a04ce0f6e3f8286d7c66fe1e48f0d Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sat, 18 Feb 2017 03:14:32 -0500 Subject: [PATCH 150/337] USER-DPD: first attempt at npair_ssa_kokkos... It compiles! --- src/KOKKOS/npair_ssa_kokkos.cpp | 539 ++++++++++++++++++++++++++++++++ src/KOKKOS/npair_ssa_kokkos.h | 334 ++++++++++++++++++++ 2 files changed, 873 insertions(+) create mode 100644 src/KOKKOS/npair_ssa_kokkos.cpp create mode 100644 src/KOKKOS/npair_ssa_kokkos.h diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp new file mode 100644 index 0000000000..752fc0c938 --- /dev/null +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -0,0 +1,539 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: + James Larentzos and Timothy I. Mattox (Engility Corporation) +------------------------------------------------------------------------- */ + +#include "npair_ssa_kokkos.h" +#include "neigh_list.h" +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "domain_kokkos.h" +#include "neighbor_kokkos.h" +#include "nbin_ssa_kokkos.h" +#include "nstencil_ssa.h" +#include "error.h" + +namespace LAMMPS_NS { + +/* ---------------------------------------------------------------------- */ + +template +NPairSSAKokkos::NPairSSAKokkos(LAMMPS *lmp) : NPair(lmp), ssa_phaseCt(27) +{ +} + +/* ---------------------------------------------------------------------- + copy needed info from Neighbor class to this build class + ------------------------------------------------------------------------- */ + +template +void NPairSSAKokkos::copy_neighbor_info() +{ + NPair::copy_neighbor_info(); + + NeighborKokkos* neighborKK = (NeighborKokkos*) neighbor; + + // general params + + k_cutneighsq = neighborKK->k_cutneighsq; + + // exclusion info + + k_ex1_type = neighborKK->k_ex1_type; + k_ex2_type = neighborKK->k_ex2_type; + k_ex_type = neighborKK->k_ex_type; + k_ex1_group = neighborKK->k_ex1_group; + k_ex2_group = neighborKK->k_ex2_group; + k_ex1_bit = neighborKK->k_ex1_bit; + k_ex2_bit = neighborKK->k_ex2_bit; + k_ex_mol_group = neighborKK->k_ex_mol_group; + k_ex_mol_bit = neighborKK->k_ex_mol_bit; +} + +/* ---------------------------------------------------------------------- + copy per-atom and per-bin vectors from NBinSSAKokkos class to this build class + ------------------------------------------------------------------------- */ + +template +void NPairSSAKokkos::copy_bin_info() +{ + NPair::copy_bin_info(); + + NBinSSAKokkos* nbKK = dynamic_cast*>(nb); + if (!nbKK) error->one(FLERR, "NBin wasn't a NBinSSAKokkos object"); + + atoms_per_bin = nbKK->atoms_per_bin; + k_bincount = nbKK->k_bincount; + k_bins = nbKK->k_bins; + + ghosts_per_gbin = nbKK->ghosts_per_gbin; + k_gbincount = nbKK->k_gbincount; + k_gbins = nbKK->k_gbins; + + lbinxlo = nbKK->d_lbinxlo(); + lbinxhi = nbKK->d_lbinxhi(); + lbinylo = nbKK->d_lbinylo(); + lbinyhi = nbKK->d_lbinyhi(); + lbinzlo = nbKK->d_lbinzlo(); + lbinzhi = nbKK->d_lbinzhi(); +} + +/* ---------------------------------------------------------------------- + copy needed info from NStencil class to this build class + ------------------------------------------------------------------------- */ + +template +void NPairSSAKokkos::copy_stencil_info() +{ + NPair::copy_stencil_info(); + + nstencil = ns->nstencil; + + int maxstencil = ns->get_maxstencil(); + + k_stencil = DAT::tdual_int_1d("NPairSSAKokkos:stencil",maxstencil); + for (int k = 0; k < maxstencil; k++) { + k_stencil.h_view(k) = ns->stencil[k]; + } + k_stencil.modify(); + k_stencil.sync(); + k_stencilxyz = DAT::tdual_int_1d_3("NPairSSAKokkos:stencilxyz",maxstencil); + for (int k = 0; k < maxstencil; k++) { + k_stencilxyz.h_view(k,0) = ns->stencilxyz[k][0]; + k_stencilxyz.h_view(k,1) = ns->stencilxyz[k][1]; + k_stencilxyz.h_view(k,2) = ns->stencilxyz[k][2]; + } + k_stencilxyz.modify(); + k_stencilxyz.sync(); + + NStencilSSA *ns_ssa = dynamic_cast(ns); + if (!ns_ssa) error->one(FLERR, "NStencil wasn't a NStencilSSA object"); + + k_nstencil_ssa = DAT::tdual_int_1d("NPairSSAKokkos:nstencil_ssa",8); + for (int k = 0; k < 8; ++k) { + k_nstencil_ssa.h_view(k) = ns_ssa->nstencil_ssa[k]; + } + k_nstencil_ssa.modify(); + k_nstencil_ssa.sync(); + sx1 = ns_ssa->sx + 1; + sy1 = ns_ssa->sy + 1; + sz1 = ns_ssa->sz + 1; +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +int NPairSSAKokkosExecute::find_special(const int &i, const int &j) const +{ + const int n1 = nspecial(i,0); + const int n2 = nspecial(i,1); + const int n3 = nspecial(i,2); + + for (int k = 0; k < n3; k++) { + if (special(i,k) == tag(j)) { + if (k < n1) { + if (special_flag[1] == 0) return -1; + else if (special_flag[1] == 1) return 0; + else return 1; + } else if (k < n2) { + if (special_flag[2] == 0) return -1; + else if (special_flag[2] == 1) return 0; + else return 2; + } else { + if (special_flag[3] == 0) return -1; + else if (special_flag[3] == 1) return 0; + else return 3; + } + } + } + return 0; +}; + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +int NPairSSAKokkosExecute::exclusion(const int &i,const int &j, + const int &itype,const int &jtype) const +{ + int m; + + if (nex_type && ex_type(itype,jtype)) return 1; + + if (nex_group) { + for (m = 0; m < nex_group; m++) { + if (mask(i) & ex1_bit(m) && mask(j) & ex2_bit(m)) return 1; + if (mask(i) & ex2_bit(m) && mask(j) & ex1_bit(m)) return 1; + } + } + + if (nex_mol) { + for (m = 0; m < nex_mol; m++) + if (mask(i) & ex_mol_bit(m) && mask(j) & ex_mol_bit(m) && + molecule(i) == molecule(j)) return 1; + } + + return 0; +} + +/* ---------------------------------------------------------------------- */ + + +/* ---------------------------------------------------------------------- + binned neighbor list construction with full Newton's 3rd law + for use by Shardlow Spliting Algorithm + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairSSAKokkos::build(NeighList *list_) +{ + NeighListKokkos* list = (NeighListKokkos*) list_; + const int nlocal = includegroup?atom->nfirst:atom->nlocal; + const int nl_size = (nlocal + atom->nghost) * 4; + list->grow(nl_size); // Make special larger SSA neighbor list + + ssa_phaseCt = sz1*sy1*sx1; + + int xbin = (lbinxhi - lbinxlo + sx1 - 1) / sx1 + 1; + int ybin = (lbinyhi - lbinylo + sy1 - 1) / sy1 + 1; + int zbin = (lbinzhi - lbinzlo + sz1 - 1) / sz1 + 1; + int phaseLenEstimate = xbin*ybin*zbin; + + if (ssa_phaseCt > (int) k_ssa_phaseLen.dimension_0()) { + k_ssa_phaseLen = DAT::tdual_int_1d("NPairSSAKokkos:ssa_phaseLen",ssa_phaseCt); + ssa_phaseLen = k_ssa_phaseLen.view(); + } + if ((ssa_phaseCt > (int) k_ssa_itemLoc.dimension_0()) || + (phaseLenEstimate > (int) k_ssa_itemLoc.dimension_1())) { + k_ssa_itemLoc = DAT::tdual_int_2d("NPairSSAKokkos::ssa_itemLoc",ssa_phaseCt,phaseLenEstimate); + ssa_itemLoc = k_ssa_itemLoc.view(); + k_ssa_itemLen = DAT::tdual_int_2d("NPairSSAKokkos::ssa_itemLen",ssa_phaseCt,phaseLenEstimate); + ssa_itemLen = k_ssa_itemLen.view(); + } + + NPairSSAKokkosExecute + data(*list, + k_cutneighsq.view(), + k_bincount.view(), + k_bins.view(), + k_gbincount.view(), + k_gbins.view(), + lbinxlo, lbinxhi, lbinylo, lbinyhi, lbinzlo, lbinzhi, + nstencil, sx1, sy1, sz1, + k_stencil.view(), + k_stencilxyz.view(), + k_nstencil_ssa.view(), + ssa_phaseCt, + k_ssa_phaseLen.view(), + k_ssa_itemLoc.view(), + k_ssa_itemLen.view(), + nlocal, + atomKK->k_x.view(), + atomKK->k_type.view(), + atomKK->k_mask.view(), + atomKK->k_molecule.view(), + atomKK->k_tag.view(), + atomKK->k_special.view(), + atomKK->k_nspecial.view(), + atomKK->molecular, + nbinx,nbiny,nbinz,mbinx,mbiny,mbinz,mbinxlo,mbinylo,mbinzlo, + bininvx,bininvy,bininvz, + exclude, nex_type, + k_ex1_type.view(), + k_ex2_type.view(), + k_ex_type.view(), + nex_group, + k_ex1_group.view(), + k_ex2_group.view(), + k_ex1_bit.view(), + k_ex2_bit.view(), + nex_mol, + k_ex_mol_group.view(), + k_ex_mol_bit.view(), + bboxhi,bboxlo, + domain->xperiodic,domain->yperiodic,domain->zperiodic, + domain->xprd_half,domain->yprd_half,domain->zprd_half); + + k_cutneighsq.sync(); + k_ex1_type.sync(); + k_ex2_type.sync(); + k_ex_type.sync(); + k_ex1_group.sync(); + k_ex2_group.sync(); + k_ex1_bit.sync(); + k_ex2_bit.sync(); + k_ex_mol_group.sync(); + k_ex_mol_bit.sync(); + k_bincount.sync(); + k_bins.sync(); + k_gbincount.sync(); + k_gbins.sync(); + atomKK->sync(Device,X_MASK|TYPE_MASK|MASK_MASK|MOLECULE_MASK|TAG_MASK|SPECIAL_MASK); + + data.special_flag[0] = special_flag[0]; + data.special_flag[1] = special_flag[1]; + data.special_flag[2] = special_flag[2]; + data.special_flag[3] = special_flag[3]; + + data.h_resize()=1; + while(data.h_resize()) { + data.h_new_maxneighs() = list->maxneighs; + data.h_resize() = 0; + + Kokkos::deep_copy(data.resize, data.h_resize); + Kokkos::deep_copy(data.new_maxneighs, data.h_new_maxneighs); + +#ifdef NOTYET + NPairSSAKokkosBuildFunctor f(data,atoms_per_bin*5*sizeof(X_FLOAT)); + Kokkos::parallel_for(nall, f); +#endif + data.build_locals(); + data.build_ghosts(); + + DeviceType::fence(); + deep_copy(data.h_resize, data.resize); + + if(data.h_resize()) { + deep_copy(data.h_new_maxneighs, data.new_maxneighs); + list->maxneighs = data.h_new_maxneighs() * 1.2; + list->d_neighbors = typename ArrayTypes::t_neighbors_2d("neighbors", list->d_neighbors.dimension_0(), list->maxneighs); + data.neigh_list.d_neighbors = list->d_neighbors; + data.neigh_list.maxneighs = list->maxneighs; + } + } + + k_ssa_phaseLen.modify(); + k_ssa_itemLoc.modify(); + k_ssa_itemLen.modify(); + + list->k_ilist.template modify(); +} + + +template +void NPairSSAKokkosExecute::build_locals() +{ + int n = 0; + int which = 0; + int inum = 0; + + int workPhase = 0; + // loop over bins with local atoms, storing half of the neighbors + for (int zoff = sz1 - 1; zoff >= 0; --zoff) { + for (int yoff = sy1 - 1; yoff >= 0; --yoff) { + for (int xoff = sx1 - 1; xoff >= 0; --xoff) { + int workItem = 0; + for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { + for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { + for (int xbin = lbinxlo + xoff - sx1 + 1; xbin < lbinxhi; xbin += sx1) { +// if (workItem >= phaseLenEstimate) error->one(FLERR,"phaseLenEstimate was too small"); + d_ssa_itemLoc(workPhase, workItem) = inum; // record where workItem starts in ilist + + for (int subphase = 0; subphase < 4; subphase++) { + int s_ybin = ybin + ((subphase & 0x2) ? sy1 - 1 : 0); + int s_xbin = xbin + ((subphase & 0x1) ? sx1 - 1 : 0); + if ((s_ybin < lbinylo) || (s_ybin >= lbinyhi)) continue; + if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; + + int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; + for (int il = 0; il < c_bincount(ibin); ++il) { + const int i = c_bins(ibin, il); + n = 0; + + const AtomNeighbors neighbors_i = neigh_list.get_neighbors(inum); + const X_FLOAT xtmp = x(i, 0); + const X_FLOAT ytmp = x(i, 1); + const X_FLOAT ztmp = x(i, 2); + const int itype = type(i); + + const typename ArrayTypes::t_int_1d_const_um stencil + = d_stencil; + + // loop over all local atoms in the current stencil "subphase" + for (int k = d_nstencil_ssa(subphase); k < d_nstencil_ssa(subphase+1); k++) { + const int jbin = ibin+stencil(k); + int jl; + if (jbin != ibin) jl = 0; + else jl = il + 1; // same bin as i, so start just past i in the bin + for (; jl < c_bincount(jbin); ++jl) { + const int j = c_bins(jbin, jl); + const int jtype = type(j); + if(exclude && exclusion(i,j,itype,jtype)) continue; + + const X_FLOAT delx = xtmp - x(j, 0); + const X_FLOAT dely = ytmp - x(j, 1); + const X_FLOAT delz = ztmp - x(j, 2); + const X_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if(rsq <= cutneighsq(itype,jtype)) { + if (molecular) { + if (!moltemplate) + which = find_special(i,j); + /* else if (imol >= 0) */ + /* which = find_special(onemols[imol]->special[iatom], */ + /* onemols[imol]->nspecial[iatom], */ + /* tag[j]-tagprev); */ + /* else which = 0; */ + if (which == 0){ + if(n 0) { + if(n 0) { + neigh_list.d_numneigh(inum) = n; + neigh_list.d_ilist(inum++) = i; + if(n > neigh_list.maxneighs) { + resize() = 1; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); + } + } + } + } + // record where workItem ends in ilist + d_ssa_itemLen(workPhase,workItem) = inum - d_ssa_itemLoc(workPhase,workItem); + if (d_ssa_itemLen(workPhase,workItem) > 0) workItem++; + } + } + } + + // record where workPhase ends + d_ssa_phaseLen(workPhase++) = workItem; + } + } + } + +//FIXME if (ssa_phaseCt != workPhase) error->one(FLERR,"ssa_phaseCt was wrong"); + + neigh_list.inum = inum; //FIXME +} + + +template +void NPairSSAKokkosExecute::build_ghosts() +{ + int n = 0; + int which = 0; + int inum = neigh_list.inum; + int gnum = 0; + neigh_list.AIRct_ssa[0] = inum; //FIXME + + // loop over AIR ghost atoms, storing their local neighbors + // since these are ghosts, must check if stencil bin is out of bounds + for (int airnum = 1; airnum <= 7; airnum++) { + int locAIRct = 0; + for (int il = 0; il < c_gbincount(airnum); ++il) { + const int i = c_gbins(airnum, il); + n = 0; + + const AtomNeighbors neighbors_i = neigh_list.get_neighbors(inum + gnum); + const X_FLOAT xtmp = x(i, 0); + const X_FLOAT ytmp = x(i, 1); + const X_FLOAT ztmp = x(i, 2); + const int itype = type(i); + + const typename ArrayTypes::t_int_1d_const_um stencil + = d_stencil; + + int loc[3]; + const int ibin = coord2bin(x(i, 0), x(i, 1), x(i, 2), &(loc[0])); + + // loop over AIR ghost atoms in all bins in "full" stencil + // Note: the non-AIR ghost atoms have already been filtered out + for (int k = 0; k < nstencil; k++) { + int xbin2 = loc[0] + d_stencilxyz(k,0); + int ybin2 = loc[1] + d_stencilxyz(k,1); + int zbin2 = loc[2] + d_stencilxyz(k,2); + // Skip it if this bin is outside the extent of local bins + if (xbin2 < lbinxlo || xbin2 >= lbinxhi || + ybin2 < lbinylo || ybin2 >= lbinyhi || + zbin2 < lbinzlo || zbin2 >= lbinzhi) continue; + const int jbin = ibin+stencil(k); + for (int jl = 0; jl < c_bincount(jbin); ++jl) { + const int j = c_bins(jbin, jl); + const int jtype = type(j); + if(exclude && exclusion(i,j,itype,jtype)) continue; + + const X_FLOAT delx = xtmp - x(j, 0); + const X_FLOAT dely = ytmp - x(j, 1); + const X_FLOAT delz = ztmp - x(j, 2); + const X_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if(rsq <= cutneighsq(itype,jtype)) { + if (molecular) { + if (!moltemplate) + which = find_special(i,j); + /* else if (imol >= 0) */ + /* which = find_special(onemols[imol]->special[iatom], */ + /* onemols[imol]->nspecial[iatom], */ + /* tag[j]-tagprev); */ + /* else which = 0; */ + if (which == 0){ + if(n 0) { + if(n 0) { + neigh_list.d_numneigh(inum + gnum) = n; + neigh_list.d_ilist(inum + (gnum++)) = i; + if(n > neigh_list.maxneighs) { + resize() = 1; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); + } + ++locAIRct; + } + } + neigh_list.AIRct_ssa[airnum] = locAIRct; //FIXME + } + neigh_list.gnum = gnum; //FIXME +} + +} + +namespace LAMMPS_NS { +template class NPairSSAKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class NPairSSAKokkos; +#endif +} diff --git a/src/KOKKOS/npair_ssa_kokkos.h b/src/KOKKOS/npair_ssa_kokkos.h new file mode 100644 index 0000000000..a656fe32ba --- /dev/null +++ b/src/KOKKOS/npair_ssa_kokkos.h @@ -0,0 +1,334 @@ +/* -*- 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 NPAIR_CLASS + +typedef NPairSSAKokkos NPairSSAKokkosHost; +NPairStyle(half/bin/newton/ssa/kk/host, + NPairSSAKokkosHost, + NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_SSA | NP_GHOST | NP_KOKKOS_HOST) + +typedef NPairSSAKokkos NPairSSAKokkosDevice; +NPairStyle(half/bin/newton/ssa/kk/device, + NPairSSAKokkosDevice, + NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_SSA | NP_GHOST | NP_KOKKOS_DEVICE) + +#else + +#ifndef LMP_NPAIR_SSA_KOKKOS_H +#define LMP_NPAIR_SSA_KOKKOS_H + +#include "npair.h" +#include "neigh_list_kokkos.h" + +namespace LAMMPS_NS { + +template +class NPairSSAKokkos : public NPair { + public: + typedef ArrayTypes AT; + + // SSA Work plan data structures + int ssa_phaseCt; + DAT::tdual_int_1d k_ssa_phaseLen; + DAT::tdual_int_2d k_ssa_itemLoc; + DAT::tdual_int_2d k_ssa_itemLen; + typename AT::t_int_1d ssa_phaseLen; + typename AT::t_int_2d ssa_itemLoc; + typename AT::t_int_2d ssa_itemLen; + + NPairSSAKokkos(class LAMMPS *); + ~NPairSSAKokkos() {} + void copy_neighbor_info(); + void copy_bin_info(); + void copy_stencil_info(); + void build(class NeighList *); + private: + // data from Neighbor class + + DAT::tdual_xfloat_2d k_cutneighsq; + + // exclusion data from Neighbor class + + DAT::tdual_int_1d k_ex1_type,k_ex2_type; + DAT::tdual_int_2d k_ex_type; + DAT::tdual_int_1d k_ex1_group,k_ex2_group; + DAT::tdual_int_1d k_ex1_bit,k_ex2_bit; + DAT::tdual_int_1d k_ex_mol_group; + DAT::tdual_int_1d k_ex_mol_bit; + + // data from NBinSSA class + + int atoms_per_bin; + DAT::tdual_int_1d k_bincount; + DAT::tdual_int_2d k_bins; + int ghosts_per_gbin; + DAT::tdual_int_1d k_gbincount; + DAT::tdual_int_2d k_gbins; + int lbinxlo, lbinxhi, lbinylo, lbinyhi, lbinzlo, lbinzhi; + + // data from NStencilSSA class + + int nstencil; + DAT::tdual_int_1d k_stencil; // # of J neighs for each I + DAT::tdual_int_1d_3 k_stencilxyz; + DAT::tdual_int_1d k_nstencil_ssa; + int sx1, sy1, sz1; +}; + +template +class NPairSSAKokkosExecute +{ + typedef ArrayTypes AT; + + public: + NeighListKokkos neigh_list; + + // data from Neighbor class + + const typename AT::t_xfloat_2d_randomread cutneighsq; + + // exclusion data from Neighbor class + + const int exclude; + + const int nex_type; + const typename AT::t_int_1d_const ex1_type,ex2_type; + const typename AT::t_int_2d_const ex_type; + + const int nex_group; + const typename AT::t_int_1d_const ex1_group,ex2_group; + const typename AT::t_int_1d_const ex1_bit,ex2_bit; + + const int nex_mol; + const typename AT::t_int_1d_const ex_mol_group; + const typename AT::t_int_1d_const ex_mol_bit; + + // data from NBinSSA class + + const typename AT::t_int_1d bincount; + const typename AT::t_int_1d_const c_bincount; + typename AT::t_int_2d bins; + typename AT::t_int_2d_const c_bins; + const typename AT::t_int_1d gbincount; + const typename AT::t_int_1d_const c_gbincount; + typename AT::t_int_2d gbins; + typename AT::t_int_2d_const c_gbins; + const int lbinxlo, lbinxhi, lbinylo, lbinyhi, lbinzlo, lbinzhi; + + + // data from NStencil class + + const int nstencil; + const int sx1, sy1, sz1; + typename AT::t_int_1d d_stencil; // # of J neighs for each I + typename AT::t_int_1d_3 d_stencilxyz; + typename AT::t_int_1d d_nstencil_ssa; + + // data from Atom class + + const typename AT::t_x_array_randomread x; + const typename AT::t_int_1d_const type,mask; + const typename AT::t_tagint_1d_const molecule; + const typename AT::t_tagint_1d_const tag; + const typename AT::t_tagint_2d_const special; + const typename AT::t_int_2d_const nspecial; + const int molecular; + int moltemplate; + + int special_flag[4]; + + const int nbinx,nbiny,nbinz; + const int mbinx,mbiny,mbinz; + const int mbinxlo,mbinylo,mbinzlo; + const X_FLOAT bininvx,bininvy,bininvz; + X_FLOAT bboxhi[3],bboxlo[3]; + + const int nlocal; + + typename AT::t_int_scalar resize; + typename AT::t_int_scalar new_maxneighs; + typename ArrayTypes::t_int_scalar h_resize; + typename ArrayTypes::t_int_scalar h_new_maxneighs; + + const int xperiodic, yperiodic, zperiodic; + const int xprd_half, yprd_half, zprd_half; + + // SSA Work plan data structures + int ssa_phaseCt; + typename AT::t_int_1d d_ssa_phaseLen; + typename AT::t_int_2d d_ssa_itemLoc; + typename AT::t_int_2d d_ssa_itemLen; + + NPairSSAKokkosExecute( + const NeighListKokkos &_neigh_list, + const typename AT::t_xfloat_2d_randomread &_cutneighsq, + const typename AT::t_int_1d &_bincount, + const typename AT::t_int_2d &_bins, + const typename AT::t_int_1d &_gbincount, + const typename AT::t_int_2d &_gbins, + const int _lbinxlo, const int _lbinxhi, + const int _lbinylo, const int _lbinyhi, + const int _lbinzlo, const int _lbinzhi, + const int _nstencil, const int _sx1, const int _sy1, const int _sz1, + const typename AT::t_int_1d &_d_stencil, + const typename AT::t_int_1d_3 &_d_stencilxyz, + const typename AT::t_int_1d &_d_nstencil_ssa, + const int _ssa_phaseCt, + const typename AT::t_int_1d &_d_ssa_phaseLen, + const typename AT::t_int_2d &_d_ssa_itemLoc, + const typename AT::t_int_2d &_d_ssa_itemLen, + const int _nlocal, + const typename AT::t_x_array_randomread &_x, + const typename AT::t_int_1d_const &_type, + const typename AT::t_int_1d_const &_mask, + const typename AT::t_tagint_1d_const &_molecule, + const typename AT::t_tagint_1d_const &_tag, + const typename AT::t_tagint_2d_const &_special, + const typename AT::t_int_2d_const &_nspecial, + const int &_molecular, + const int & _nbinx,const int & _nbiny,const int & _nbinz, + const int & _mbinx,const int & _mbiny,const int & _mbinz, + const int & _mbinxlo,const int & _mbinylo,const int & _mbinzlo, + const X_FLOAT &_bininvx,const X_FLOAT &_bininvy,const X_FLOAT &_bininvz, + const int & _exclude,const int & _nex_type, + const typename AT::t_int_1d_const & _ex1_type, + const typename AT::t_int_1d_const & _ex2_type, + const typename AT::t_int_2d_const & _ex_type, + const int & _nex_group, + const typename AT::t_int_1d_const & _ex1_group, + const typename AT::t_int_1d_const & _ex2_group, + const typename AT::t_int_1d_const & _ex1_bit, + const typename AT::t_int_1d_const & _ex2_bit, + const int & _nex_mol, + const typename AT::t_int_1d_const & _ex_mol_group, + const typename AT::t_int_1d_const & _ex_mol_bit, + const X_FLOAT *_bboxhi, const X_FLOAT* _bboxlo, + const int & _xperiodic, const int & _yperiodic, const int & _zperiodic, + const int & _xprd_half, const int & _yprd_half, const int & _zprd_half): + neigh_list(_neigh_list), cutneighsq(_cutneighsq), + bincount(_bincount),c_bincount(_bincount),bins(_bins),c_bins(_bins), + gbincount(_gbincount),c_gbincount(_gbincount),gbins(_gbins),c_gbins(_gbins), + lbinxlo(_lbinxlo),lbinxhi(_lbinxhi), + lbinylo(_lbinylo),lbinyhi(_lbinyhi), + lbinzlo(_lbinzlo),lbinzhi(_lbinzhi), + nstencil(_nstencil),sx1(_sx1),sy1(_sy1),sz1(_sz1), + d_stencil(_d_stencil),d_stencilxyz(_d_stencilxyz),d_nstencil_ssa(_d_nstencil_ssa), + ssa_phaseCt(_ssa_phaseCt), + d_ssa_phaseLen(_d_ssa_phaseLen), + d_ssa_itemLoc(_d_ssa_itemLoc), + d_ssa_itemLen(_d_ssa_itemLen), + nlocal(_nlocal), + x(_x),type(_type),mask(_mask),molecule(_molecule), + tag(_tag),special(_special),nspecial(_nspecial),molecular(_molecular), + nbinx(_nbinx),nbiny(_nbiny),nbinz(_nbinz), + mbinx(_mbinx),mbiny(_mbiny),mbinz(_mbinz), + mbinxlo(_mbinxlo),mbinylo(_mbinylo),mbinzlo(_mbinzlo), + bininvx(_bininvx),bininvy(_bininvy),bininvz(_bininvz), + exclude(_exclude),nex_type(_nex_type), + ex1_type(_ex1_type),ex2_type(_ex2_type),ex_type(_ex_type), + nex_group(_nex_group), + ex1_group(_ex1_group),ex2_group(_ex2_group), + ex1_bit(_ex1_bit),ex2_bit(_ex2_bit),nex_mol(_nex_mol), + ex_mol_group(_ex_mol_group),ex_mol_bit(_ex_mol_bit), + xperiodic(_xperiodic),yperiodic(_yperiodic),zperiodic(_zperiodic), + xprd_half(_xprd_half),yprd_half(_yprd_half),zprd_half(_zprd_half) { + + if (molecular == 2) moltemplate = 1; + else moltemplate = 0; + + bboxlo[0] = _bboxlo[0]; bboxlo[1] = _bboxlo[1]; bboxlo[2] = _bboxlo[2]; + bboxhi[0] = _bboxhi[0]; bboxhi[1] = _bboxhi[1]; bboxhi[2] = _bboxhi[2]; + + resize = typename AT::t_int_scalar("NeighborKokkosFunctor::resize"); +#ifndef KOKKOS_USE_CUDA_UVM + h_resize = Kokkos::create_mirror_view(resize); +#else + h_resize = resize; +#endif + h_resize() = 1; + new_maxneighs = typename AT:: + t_int_scalar("NeighborKokkosFunctor::new_maxneighs"); +#ifndef KOKKOS_USE_CUDA_UVM + h_new_maxneighs = Kokkos::create_mirror_view(new_maxneighs); +#else + h_new_maxneighs = new_maxneighs; +#endif + h_new_maxneighs() = neigh_list.maxneighs; + }; + + ~NPairSSAKokkosExecute() {neigh_list.clean_copy();}; + + void build_locals(); + void build_ghosts(); + + KOKKOS_INLINE_FUNCTION + int coord2bin(const X_FLOAT & x,const X_FLOAT & y,const X_FLOAT & z, int* i) const + { + int ix,iy,iz; + + if (x >= bboxhi[0]) + ix = static_cast ((x-bboxhi[0])*bininvx) + nbinx; + else if (x >= bboxlo[0]) { + ix = static_cast ((x-bboxlo[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo[0])*bininvx) - 1; + + if (y >= bboxhi[1]) + iy = static_cast ((y-bboxhi[1])*bininvy) + nbiny; + else if (y >= bboxlo[1]) { + iy = static_cast ((y-bboxlo[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo[1])*bininvy) - 1; + + if (z >= bboxhi[2]) + iz = static_cast ((z-bboxhi[2])*bininvz) + nbinz; + else if (z >= bboxlo[2]) { + iz = static_cast ((z-bboxlo[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo[2])*bininvz) - 1; + + i[0] = ix - mbinxlo; + i[1] = iy - mbinylo; + i[2] = iz - mbinzlo; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + + KOKKOS_INLINE_FUNCTION + int exclusion(const int &i,const int &j, const int &itype,const int &jtype) const; + + KOKKOS_INLINE_FUNCTION + int find_special(const int &i, const int &j) const; + + KOKKOS_INLINE_FUNCTION + int minimum_image_check(double dx, double dy, double dz) const { + if (xperiodic && fabs(dx) > xprd_half) return 1; + if (yperiodic && fabs(dy) > yprd_half) return 1; + if (zperiodic && fabs(dz) > zprd_half) return 1; + return 0; + } + +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ -- GitLab From b27cc8f474e1a1284d242d209e5fa3ba0e77c5f7 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 20 Feb 2017 14:09:11 -0500 Subject: [PATCH 151/337] USER-DPD: use LAMBDA instead of functor for ghost binning in nbin_ssa_kokkos --- src/KOKKOS/nbin_ssa_kokkos.cpp | 32 +++++++++++--------------------- src/KOKKOS/nbin_ssa_kokkos.h | 18 ------------------ 2 files changed, 11 insertions(+), 39 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index 6ed8e9f3e4..32a77119de 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -122,9 +122,17 @@ void NBinSSAKokkos::bin_atoms() subhi_[1] = domain->subhi[1]; subhi_[2] = domain->subhi[2]; - NPairSSAKokkosBinGhostsFunctor f(*this); - - Kokkos::parallel_for(atom->nghost, f); + Kokkos::parallel_for(Kokkos::RangePolicy(atom->nlocal,atom->nlocal+atom->nghost), KOKKOS_LAMBDA (const int i) { + const int iAIR = coord2ssaAIR(x(i, 0), x(i, 1), x(i, 2)); + if (iAIR > 0) { // include only ghost atoms in an AIR + const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); + if(ac < (int) gbins.dimension_1()) { + gbins(iAIR, ac) = i; + } else { + d_resize() = 1; + } + } + }); DeviceType::fence(); deep_copy(h_resize, d_resize); @@ -184,24 +192,6 @@ void NBinSSAKokkos::bin_atoms() /* ---------------------------------------------------------------------- */ -template -KOKKOS_INLINE_FUNCTION -void NBinSSAKokkos::binGhostsItem(const int &i_) const -{ - const int i = i_ + atom->nlocal; - const int iAIR = coord2ssaAIR(x(i, 0), x(i, 1), x(i, 2)); - if (iAIR > 0) { // include only ghost atoms in an AIR - const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); - if(ac < (int) gbins.dimension_1()) { - gbins(iAIR, ac) = i; - } else { - d_resize() = 1; - } - } -} - -/* ---------------------------------------------------------------------- */ - template KOKKOS_INLINE_FUNCTION void NBinSSAKokkos::binAtomsItem(const int &i) const diff --git a/src/KOKKOS/nbin_ssa_kokkos.h b/src/KOKKOS/nbin_ssa_kokkos.h index a16cb2d0b7..488c1034f5 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.h +++ b/src/KOKKOS/nbin_ssa_kokkos.h @@ -77,9 +77,6 @@ class NBinSSAKokkos : public NBinStandard { KOKKOS_INLINE_FUNCTION void binAtomsItem(const int &i) const; - KOKKOS_INLINE_FUNCTION - void binGhostsItem(const int &i) const; - /* ---------------------------------------------------------------------- convert atom coords into the ssa active interaction region number ------------------------------------------------------------------------- */ @@ -153,21 +150,6 @@ class NBinSSAKokkos : public NBinStandard { double sublo_[3], subhi_[3]; }; -template -struct NPairSSAKokkosBinGhostsFunctor { - typedef DeviceType device_type; - - const NBinSSAKokkos c; - - NPairSSAKokkosBinGhostsFunctor(const NBinSSAKokkos &_c): - c(_c) {}; - ~NPairSSAKokkosBinGhostsFunctor() {} - KOKKOS_INLINE_FUNCTION - void operator() (const int & i) const { - c.binGhostsItem(i); - } -}; - template struct NPairSSAKokkosBinAtomsFunctor { typedef DeviceType device_type; -- GitLab From 1db62a57b5ddbd579f1040d977ee659b2c377f89 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 13:17:49 -0500 Subject: [PATCH 152/337] USER-DPD: pair_dpd_fdt_energy_kokkos: enable STACKPARAMS specialization --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 117 ++++++++++++++-------- src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 24 ++--- 2 files changed, 89 insertions(+), 52 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index 84a489bcc3..aaf638fac3 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -49,7 +49,6 @@ PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : execution_space = ExecutionSpaceFromDevice::space; datamask_read = EMPTY_MASK; datamask_modify = EMPTY_MASK; - STACKPARAMS = 0; } /* ---------------------------------------------------------------------- */ @@ -171,21 +170,41 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) if (splitFDT_flag) { if (!a0_is_zero) { - if (neighflag == HALF) { - if (newton_pair) { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); - } else { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + if(atom->ntypes > MAX_TYPES_STACKPARAMS) { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } - } else if (neighflag == HALFTHREAD) { - if (newton_pair) { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); - } else { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } } } @@ -209,21 +228,41 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) // loop over neighbors of my atoms - if (neighflag == HALF) { - if (newton_pair) { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); - } else { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + if(atom->ntypes > MAX_TYPES_STACKPARAMS) { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } - } else if (neighflag == HALFTHREAD) { - if (newton_pair) { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); - } else { - if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); - else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } } @@ -270,9 +309,9 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyZero, con } template -template +template KOKKOS_INLINE_FUNCTION -void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSplit, const int &ii, EV_FLOAT& ev) const { +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSplit, const int &ii, EV_FLOAT& ev) const { // The f array is atomic for Half/Thread neighbor style Kokkos::View::value> > a_f = f; @@ -346,17 +385,17 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSp } template -template +template KOKKOS_INLINE_FUNCTION -void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSplit, const int &ii) const { +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSplit, const int &ii) const { EV_FLOAT ev; - this->template operator()(TagPairDPDfdtEnergyComputeSplit(), ii, ev); + this->template operator()(TagPairDPDfdtEnergyComputeSplit(), ii, ev); } template -template +template KOKKOS_INLINE_FUNCTION -void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNoSplit, const int &ii, EV_FLOAT& ev) const { +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNoSplit, const int &ii, EV_FLOAT& ev) const { // These array are atomic for Half/Thread neighbor style Kokkos::View::value> > a_f = f; @@ -503,11 +542,11 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNo } template -template +template KOKKOS_INLINE_FUNCTION -void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNoSplit, const int &ii) const { +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNoSplit, const int &ii) const { EV_FLOAT ev; - this->template operator()(TagPairDPDfdtEnergyComputeNoSplit(), ii, ev); + this->template operator()(TagPairDPDfdtEnergyComputeNoSplit(), ii, ev); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index 7d1749eb94..9689712273 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -32,10 +32,10 @@ namespace LAMMPS_NS { struct TagPairDPDfdtEnergyZero{}; -template +template struct TagPairDPDfdtEnergyComputeSplit{}; -template +template struct TagPairDPDfdtEnergyComputeNoSplit{}; template @@ -54,21 +54,21 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { KOKKOS_INLINE_FUNCTION void operator()(TagPairDPDfdtEnergyZero, const int&) const; - template + template KOKKOS_INLINE_FUNCTION - void operator()(TagPairDPDfdtEnergyComputeSplit, const int&, EV_FLOAT&) const; + void operator()(TagPairDPDfdtEnergyComputeSplit, const int&, EV_FLOAT&) const; - template + template KOKKOS_INLINE_FUNCTION - void operator()(TagPairDPDfdtEnergyComputeSplit, const int&) const; + void operator()(TagPairDPDfdtEnergyComputeSplit, const int&) const; - template + template KOKKOS_INLINE_FUNCTION - void operator()(TagPairDPDfdtEnergyComputeNoSplit, const int&, EV_FLOAT&) const; + void operator()(TagPairDPDfdtEnergyComputeNoSplit, const int&, EV_FLOAT&) const; - template + template KOKKOS_INLINE_FUNCTION - void operator()(TagPairDPDfdtEnergyComputeNoSplit, const int&) const; + void operator()(TagPairDPDfdtEnergyComputeNoSplit, const int&) const; template KOKKOS_INLINE_FUNCTION @@ -92,7 +92,6 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { protected: int eflag,vflag; int nlocal,neighflag; - int STACKPARAMS; double dtinvsqrt; double boltz,ftm2v; double special_lj[4]; @@ -102,11 +101,10 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for MAX_TYPES_STACKPARAMS (12) atom types params_dpd m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; - F_FLOAT m_cut[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array c_x; typename ArrayTypes::t_v_array_randomread v; -- GitLab From aecafecaa2f89f6db8c90ec5af0db429e736b82e Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 13:21:26 -0500 Subject: [PATCH 153/337] USER-DPD: fix missing host prefixes in AtomVecDPDKokkos::pack_comm --- src/KOKKOS/atom_vec_dpd_kokkos.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index f46f284f14..18f63599e4 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -563,10 +563,10 @@ int AtomVecDPDKokkos::pack_comm(int n, int *list, double *buf, buf[m++] = h_x(j,0); buf[m++] = h_x(j,1); buf[m++] = h_x(j,2); - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; } } else { if (domain->triclinic == 0) { -- GitLab From 2f04e87d0794c66e9fbe0073690e64f7353cfcec Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 13:24:18 -0500 Subject: [PATCH 154/337] USER-DPD: make PairDPDfdtEnergyKokkos's rand_pool public so it can be reused --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index 9689712273..deb264c37e 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -89,6 +89,15 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { DAT::tdual_efloat_1d k_duCond,k_duMech; + Kokkos::Random_XorShift64_Pool rand_pool; + typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; + + // RandPoolWrap rand_pool; + // typedef RandWrap rand_type; + + typename ArrayTypes::tdual_ffloat_2d k_cutsq; + typename ArrayTypes::t_ffloat_2d d_cutsq; + protected: int eflag,vflag; int nlocal,neighflag; @@ -125,15 +134,6 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { typename AT::t_int_1d_randomread d_ilist; typename AT::t_int_1d_randomread d_numneigh; - typename ArrayTypes::tdual_ffloat_2d k_cutsq; - typename ArrayTypes::t_ffloat_2d d_cutsq; - - /**/Kokkos::Random_XorShift64_Pool rand_pool; - typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type;/**/ - - /**RandPoolWrap rand_pool; - typedef RandWrap rand_type;/**/ - friend void pair_virial_fdotr_compute(PairDPDfdtEnergyKokkos*); }; -- GitLab From a341a6bca927e84a9fc947e402459466ceded503 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 13:27:27 -0500 Subject: [PATCH 155/337] USER-DPD: make locals & ghosts use similar SSA work plan data structure Kokkos SSA won't use AIRct_ssa[], but still used for non-Kokkos for now. --- src/KOKKOS/npair_ssa_kokkos.cpp | 31 +++++++++++++++++++++++++------ src/KOKKOS/npair_ssa_kokkos.h | 20 ++++++++++++++++++++ 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 752fc0c938..c70fd0087e 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -31,7 +31,7 @@ namespace LAMMPS_NS { /* ---------------------------------------------------------------------- */ template -NPairSSAKokkos::NPairSSAKokkos(LAMMPS *lmp) : NPair(lmp), ssa_phaseCt(27) +NPairSSAKokkos::NPairSSAKokkos(LAMMPS *lmp) : NPair(lmp), ssa_phaseCt(27), ssa_gphaseCt(7) { } @@ -214,6 +214,7 @@ void NPairSSAKokkos::build(NeighList *list_) int ybin = (lbinyhi - lbinylo + sy1 - 1) / sy1 + 1; int zbin = (lbinzhi - lbinzlo + sz1 - 1) / sz1 + 1; int phaseLenEstimate = xbin*ybin*zbin; + int gphaseLenEstimate = 1; //FIXME make this 4 eventually if (ssa_phaseCt > (int) k_ssa_phaseLen.dimension_0()) { k_ssa_phaseLen = DAT::tdual_int_1d("NPairSSAKokkos:ssa_phaseLen",ssa_phaseCt); @@ -227,6 +228,18 @@ void NPairSSAKokkos::build(NeighList *list_) ssa_itemLen = k_ssa_itemLen.view(); } + if (ssa_gphaseCt > (int) k_ssa_gphaseLen.dimension_0()) { + k_ssa_gphaseLen = DAT::tdual_int_1d("NPairSSAKokkos:ssa_gphaseLen",ssa_gphaseCt); + ssa_gphaseLen = k_ssa_gphaseLen.view(); + } + if ((ssa_gphaseCt > (int) k_ssa_gitemLoc.dimension_0()) || + (gphaseLenEstimate > (int) k_ssa_gitemLoc.dimension_1())) { + k_ssa_gitemLoc = DAT::tdual_int_2d("NPairSSAKokkos::ssa_gitemLoc",ssa_gphaseCt,gphaseLenEstimate); + ssa_gitemLoc = k_ssa_gitemLoc.view(); + k_ssa_gitemLen = DAT::tdual_int_2d("NPairSSAKokkos::ssa_gitemLen",ssa_gphaseCt,gphaseLenEstimate); + ssa_gitemLen = k_ssa_gitemLen.view(); + } + NPairSSAKokkosExecute data(*list, k_cutneighsq.view(), @@ -243,6 +256,10 @@ void NPairSSAKokkos::build(NeighList *list_) k_ssa_phaseLen.view(), k_ssa_itemLoc.view(), k_ssa_itemLen.view(), + ssa_gphaseCt, + k_ssa_gphaseLen.view(), + k_ssa_gitemLoc.view(), + k_ssa_gitemLen.view(), nlocal, atomKK->k_x.view(), atomKK->k_type.view(), @@ -444,12 +461,13 @@ void NPairSSAKokkosExecute::build_ghosts() int which = 0; int inum = neigh_list.inum; int gnum = 0; - neigh_list.AIRct_ssa[0] = inum; //FIXME // loop over AIR ghost atoms, storing their local neighbors // since these are ghosts, must check if stencil bin is out of bounds - for (int airnum = 1; airnum <= 7; airnum++) { - int locAIRct = 0; + for (int workPhase = 0; workPhase < ssa_gphaseCt; workPhase++) { + int airnum = workPhase + 1; + int workItem = 0; //FIXME for now, there is only 1 workItem for each ghost AIR + d_ssa_gitemLoc(workPhase, workItem) = inum + gnum; // record where workItem starts in ilist for (int il = 0; il < c_gbincount(airnum); ++il) { const int i = c_gbins(airnum, il); n = 0; @@ -521,10 +539,11 @@ void NPairSSAKokkosExecute::build_ghosts() resize() = 1; if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); } - ++locAIRct; } } - neigh_list.AIRct_ssa[airnum] = locAIRct; //FIXME + // record where workItem ends in ilist + d_ssa_gitemLen(workPhase,workItem) = inum + gnum - d_ssa_gitemLoc(workPhase,workItem); + if (d_ssa_gitemLen(workPhase,workItem) > 0) workItem++; } neigh_list.gnum = gnum; //FIXME } diff --git a/src/KOKKOS/npair_ssa_kokkos.h b/src/KOKKOS/npair_ssa_kokkos.h index a656fe32ba..e38d648984 100644 --- a/src/KOKKOS/npair_ssa_kokkos.h +++ b/src/KOKKOS/npair_ssa_kokkos.h @@ -47,6 +47,14 @@ class NPairSSAKokkos : public NPair { typename AT::t_int_2d ssa_itemLoc; typename AT::t_int_2d ssa_itemLen; + const int ssa_gphaseCt; + DAT::tdual_int_1d k_ssa_gphaseLen; + DAT::tdual_int_2d k_ssa_gitemLoc; + DAT::tdual_int_2d k_ssa_gitemLen; + typename AT::t_int_1d ssa_gphaseLen; + typename AT::t_int_2d ssa_gitemLoc; + typename AT::t_int_2d ssa_gitemLen; + NPairSSAKokkos(class LAMMPS *); ~NPairSSAKokkos() {} void copy_neighbor_info(); @@ -169,6 +177,10 @@ class NPairSSAKokkosExecute typename AT::t_int_1d d_ssa_phaseLen; typename AT::t_int_2d d_ssa_itemLoc; typename AT::t_int_2d d_ssa_itemLen; + int ssa_gphaseCt; + typename AT::t_int_1d d_ssa_gphaseLen; + typename AT::t_int_2d d_ssa_gitemLoc; + typename AT::t_int_2d d_ssa_gitemLen; NPairSSAKokkosExecute( const NeighListKokkos &_neigh_list, @@ -188,6 +200,10 @@ class NPairSSAKokkosExecute const typename AT::t_int_1d &_d_ssa_phaseLen, const typename AT::t_int_2d &_d_ssa_itemLoc, const typename AT::t_int_2d &_d_ssa_itemLen, + const int _ssa_gphaseCt, + const typename AT::t_int_1d &_d_ssa_gphaseLen, + const typename AT::t_int_2d &_d_ssa_gitemLoc, + const typename AT::t_int_2d &_d_ssa_gitemLen, const int _nlocal, const typename AT::t_x_array_randomread &_x, const typename AT::t_int_1d_const &_type, @@ -228,6 +244,10 @@ class NPairSSAKokkosExecute d_ssa_phaseLen(_d_ssa_phaseLen), d_ssa_itemLoc(_d_ssa_itemLoc), d_ssa_itemLen(_d_ssa_itemLen), + ssa_gphaseCt(_ssa_gphaseCt), + d_ssa_gphaseLen(_d_ssa_gphaseLen), + d_ssa_gitemLoc(_d_ssa_gitemLoc), + d_ssa_gitemLen(_d_ssa_gitemLen), nlocal(_nlocal), x(_x),type(_type),mask(_mask),molecule(_molecule), tag(_tag),special(_special),nspecial(_nspecial),molecular(_molecular), -- GitLab From f7a48719adba859eede3808e69556f1e33e4dbf0 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 13:35:48 -0500 Subject: [PATCH 156/337] USER-DPD: first attempt at fix_shardlow_kokkos... It compiles! --- src/KOKKOS/fix_shardlow_kokkos.cpp | 718 +++++++++++++++++++++++++++++ src/KOKKOS/fix_shardlow_kokkos.h | 154 +++++++ 2 files changed, 872 insertions(+) create mode 100644 src/KOKKOS/fix_shardlow_kokkos.cpp create mode 100644 src/KOKKOS/fix_shardlow_kokkos.h diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp new file mode 100644 index 0000000000..7b2810bb4c --- /dev/null +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -0,0 +1,718 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: + James Larentzos (U.S. Army Research Laboratory) + and Timothy I. Mattox (Engility Corporation) + + Martin Lisal (Institute of Chemical Process Fundamentals + of the Czech Academy of Sciences and J. E. Purkinje University) + + John Brennan, Joshua Moore and William Mattson (Army Research Lab) + + Please cite the related publications: + J. P. Larentzos, J. K. Brennan, J. D. Moore, M. Lisal, W. D. Mattson, + "Parallel implementation of isothermal and isoenergetic Dissipative + Particle Dynamics using Shardlow-like splitting algorithms", + Computer Physics Communications, 2014, 185, pp 1987--1998. + + M. Lisal, J. K. Brennan, J. Bonet Avalos, "Dissipative particle dynamics + at isothermal, isobaric, isoenergetic, and isoenthalpic conditions using + Shardlow-like splitting algorithms", Journal of Chemical Physics, 2011, + 135, 204105. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "fix_shardlow_kokkos.h" +#include "atom.h" +#include "atom_masks.h" +#include "atom_kokkos.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "error.h" +#include +#include "atom_vec.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_list_kokkos.h" +#include "neigh_request.h" +#include "random_mars.h" +#include "memory.h" +#include "domain.h" +#include "modify.h" +// #include "pair_dpd_fdt.h" +#include "pair_dpd_fdt_energy_kokkos.h" +#include "pair.h" +#include "npair_ssa_kokkos.h" +#include "citeme.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +#define EPSILON 1.0e-10 +#define EPSILON_SQUARED ((EPSILON) * (EPSILON)) + + +/* ---------------------------------------------------------------------- */ + +template +FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **arg) : + FixShardlow(lmp, narg, arg), k_pairDPDE(NULL), ghostmax(0), nlocal(0) , nghost(0) +{ + kokkosable = 1; +// atomKK = (AtomKokkos *) atom; +// execution_space = ExecutionSpaceFromDevice::space; + +// datamask_read = X_MASK | V_MASK | F_MASK | MASK_MASK | Q_MASK | TYPE_MASK; +// datamask_modify = Q_MASK | X_MASK; + + if (narg != 3) error->all(FLERR,"Illegal fix shardlow command"); + +// k_pairDPD = NULL; + k_pairDPDE = NULL; +// k_pairDPD = (PairDPDfdtKokkos *) force->pair_match("dpd/fdt",1); + k_pairDPDE = (PairDPDfdtEnergyKokkos *) force->pair_match("dpd/fdt/energy/kk",1); + +// if(k_pairDPDE){ + comm_forward = 3; + comm_reverse = 5; + p_rand_pool = &(k_pairDPDE->rand_pool); +// } else { +// comm_forward = 3; +// comm_reverse = 3; +// p_rand_pool = &(k_pairDPD->rand_pool); +// } + + + if(/* k_pairDPD == NULL &&*/ k_pairDPDE == NULL) + error->all(FLERR,"Must use pair_style "/*"dpd/fdt/kk or "*/"dpd/fdt/energy/kk with fix shardlow/kk"); + +} + +/* ---------------------------------------------------------------------- */ + +template +FixShardlowKokkos::~FixShardlowKokkos() +{ + ghostmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +template +int FixShardlowKokkos::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE | PRE_NEIGHBOR; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::init() +{ + FixShardlow::init(); + + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + +// neighbor->requests[irequest]->pair = 0; +// neighbor->requests[irequest]->fix = 1; +// neighbor->requests[irequest]->ghost= 1; +// neighbor->requests[irequest]->ssa = 1; + + int ntypes = atom->ntypes; + k_params = Kokkos::DualView + ("FixShardlowKokkos::params",ntypes+1,ntypes+1); + params = k_params.template view(); +//FIXME either create cutsq and fill it in, or just point to pairDPD's... +// memory->destroy(cutsq); //FIXME +// memory->create_kokkos(k_cutsq,cutsq,ntypes+1,ntypes+1,"FixShardlowKokkos:cutsq"); + d_cutsq = k_pairDPDE->k_cutsq.template view(); //FIXME + + const double boltz2 = 2.0*force->boltz; + for (int i = 1; i <= ntypes; i++) { + for (int j = i; j <= ntypes; j++) { + F_FLOAT cutone = k_pairDPDE->cut[i][j]; +// k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; //FIXME + if (cutone > EPSILON) k_params.h_view(i,j).cutinv = 1.0/cutone; + else k_params.h_view(i,j).cutinv = FLT_MAX; + k_params.h_view(i,j).halfsigma = 0.5*k_pairDPDE->sigma[i][j]; + k_params.h_view(i,j).kappa = k_pairDPDE->kappa[i][j]; + k_params.h_view(i,j).alpha = sqrt(boltz2*k_pairDPDE->kappa[i][j]); + + k_params.h_view(j,i) = k_params.h_view(i,j); + + if(ik_cutsq.h_view(i,j); + } + } + } + + // k_cutsq.template modify(); + k_params.template modify(); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::init_list(int id, NeighList *ptr) +{ + k_list = static_cast*>(ptr); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::pre_neighbor() +{ + // NOTE: this logic is specific to orthogonal boxes, not triclinic + + // Enforce the constraint that ghosts must be contained in the nearest sub-domains + double bbx = domain->subhi[0] - domain->sublo[0]; + double bby = domain->subhi[1] - domain->sublo[1]; + double bbz = domain->subhi[2] - domain->sublo[2]; + + double rcut = 2.0*neighbor->cutneighmax; + + if (domain->triclinic) + error->all(FLERR,"Fix shardlow does not yet support triclinic geometries"); + + if(rcut >= bbx || rcut >= bby || rcut>= bbz ) + { + char fmt[] = {"Shardlow algorithm requires sub-domain length > 2*(rcut+skin). Either reduce the number of processors requested, or change the cutoff/skin: rcut= %e bbx= %e bby= %e bbz= %e\n"}; + char *msg = (char *) malloc(sizeof(fmt) + 4*15); + sprintf(msg, fmt, rcut, bbx, bby, bbz); + error->one(FLERR, msg); + } + + nlocal = atomKK->nlocal; + nghost = atomKK->nghost; + + // Allocate memory for h_v_t0 to hold the initial velocities for the ghosts + if (nghost > ghostmax) { + ghostmax = nghost; + k_v_t0 = DAT::tdual_v_array("FixShardlowKokkos:v_t0", ghostmax); + // d_v_t0 = k_v_t0.template view(); + h_v_t0 = k_v_t0.h_view; + } + + // Setup views of relevant data + x = atomKK->k_x.template view(); + v = atomKK->k_v.template view(); + h_v = atomKK->k_v.h_view; + uCond = atomKK->k_uCond.template view(); + h_uCond = atomKK->k_uCond.h_view; + uMech = atomKK->k_uMech.template view(); + h_uMech = atomKK->k_uMech.h_view; + type = atomKK->k_type.view(); + if (atomKK->rmass) { + massPerI = true; + masses = atomKK->k_rmass.view(); + } else { + massPerI = false; + masses = atomKK->k_mass.view(); + } +// if(k_pairDPDE){ + dpdTheta = atomKK->k_dpdTheta.view(); + +//} else { +//} +} + +template +void FixShardlowKokkos::setup_pre_neighbor() +{ + pre_neighbor(); +} + +/* ---------------------------------------------------------------------- */ + +#ifdef NOTNOW +/* ---------------------------------------------------------------------- + Perform the stochastic integration and Shardlow update for constant temperature + Allow for both per-type and per-atom mass + + NOTE: only implemented for orthogonal boxes, not triclinic +------------------------------------------------------------------------- */ +template +template +void FixShardlowKokkos::ssa_update_dpd( + int start_ii, int count +) +{ + rand_type rand_gen = p_rand_pool->get_state(); + + const double theta_ij_inv = 1.0/k_pairDPD->temperature; // independent of i,j + const double boltz_inv = 1.0/force->boltz; + const double ftm2v = force->ftm2v; + const double dt = update->dt; + int ct = count; + int ii = start_ii; + + while (ct-- > 0) { + const int i = d_ilist(ii); + const int jlen = d_numneigh(ii); + + const double xtmp = x(i, 0); + const double ytmp = x(i, 1); + const double ztmp = x(i, 2); + + // load velocity for i from memory + double vxi = v(i, 0); + double vyi = v(i, 1); + double vzi = v(i, 2); + + const int itype = type(i); + + const double mass_i = masses(massPerI ? i : itype); + const double massinv_i = 1.0 / mass_i; + + // Loop over Directional Neighbors only + for (int jj = 0; jj < jlen; jj++) { + const int j = d_neighbors(ii,jj) & NEIGHMASK; + int jtype = type[j]; + + const X_FLOAT delx = xtmp - x(j, 0); + const X_FLOAT dely = ytmp - x(j, 1); + const X_FLOAT delz = ztmp - x(j, 2); + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + + // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test + if ((rsq < STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype)) + && (rsq >= EPSILON_SQUARED)) { + double r = sqrt(rsq); + double rinv = 1.0/r; + double delx_rinv = delx*rinv; + double dely_rinv = dely*rinv; + double delz_rinv = delz*rinv; + + double wr = 1.0 - r*(STACKPARAMS?m_params[itype][jtype].cutinv:params(itype,jtype).cutinv); + double wdt = wr*wr*dt; + + double halfsigma_ij = STACKPARAMS?m_params[itype][jtype].halfsigma:params(itype,jtype).halfsigma; + double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; + + double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * pRNG->gaussian(); + + const double mass_j = masses(massPerI ? j : jtype); + double massinv_j = 1.0 / mass_j; + + double gammaFactor = halfgamma_ij*wdt*ftm2v; + double inv_1p_mu_gammaFactor = 1.0/(1.0 + (massinv_i + massinv_j)*gammaFactor); + + double vxj = v(j, 0); + double vyj = v(j, 1); + double vzj = v(j, 2); + + // Compute the initial velocity difference between atom i and atom j + double delvx = vxi - vxj; + double delvy = vyi - vyj; + double delvz = vzi - vzj; + double dot_rinv = (delx_rinv*delvx + dely_rinv*delvy + delz_rinv*delvz); + + // Compute momentum change between t and t+dt + double factorA = sigmaRand - gammaFactor*dot_rinv; + + // Update the velocity on i + vxi += delx_rinv*factorA*massinv_i; + vyi += dely_rinv*factorA*massinv_i; + vzi += delz_rinv*factorA*massinv_i; + + // Update the velocity on j + vxj -= delx_rinv*factorA*massinv_j; + vyj -= dely_rinv*factorA*massinv_j; + vzj -= delz_rinv*factorA*massinv_j; + + //ii. Compute the new velocity diff + delvx = vxi - vxj; + delvy = vyi - vyj; + delvz = vzi - vzj; + dot_rinv = delx_rinv*delvx + dely_rinv*delvy + delz_rinv*delvz; + + // Compute the new momentum change between t and t+dt + double factorB = (sigmaRand - gammaFactor*dot_rinv)*inv_1p_mu_gammaFactor; + + // Update the velocity on i + vxi += delx_rinv*factorB*massinv_i; + vyi += dely_rinv*factorB*massinv_i; + vzi += delz_rinv*factorB*massinv_i; + + // Update the velocity on j + vxj -= delx_rinv*factorB*massinv_j; + vyj -= dely_rinv*factorB*massinv_j; + vzj -= delz_rinv*factorB*massinv_j; + + // Store updated velocity for j + v(j, 0) = vxj; + v(j, 1) = vyj; + v(j, 2) = vzj; + } + } + // store updated velocity for i + v(i, 0) = vxi; + v(i, 1) = vyi; + v(i, 2) = vzi; + } + + p_rand_pool->free_state(rand_gen); +} +#endif + +/* ---------------------------------------------------------------------- + Perform the stochastic integration and Shardlow update for constant energy + Allow for both per-type and per-atom mass + + NOTE: only implemented for orthogonal boxes, not triclinic +------------------------------------------------------------------------- */ +template +template +void FixShardlowKokkos::ssa_update_dpde( + int start_ii, int count +) +{ + rand_type rand_gen = p_rand_pool->get_state(); + + const double boltz_inv = 1.0/force->boltz; + const double ftm2v = force->ftm2v; + const double dt = update->dt; + int ct = count; + int ii = start_ii; + + while (ct-- > 0) { + const int i = d_ilist(ii); + const int jlen = d_numneigh(ii); + + const double xtmp = x(i, 0); + const double ytmp = x(i, 1); + const double ztmp = x(i, 2); + + // load velocity for i from memory + double vxi = v(i, 0); + double vyi = v(i, 1); + double vzi = v(i, 2); + + double uMech_i = uMech(i); + double uCond_i = uCond(i); + const int itype = type(i); + + const double theta_i_inv = 1.0/dpdTheta(i); + const double mass_i = masses(massPerI ? i : itype); + const double massinv_i = 1.0 / mass_i; + const double mass_i_div_neg4_ftm2v = mass_i*(-0.25)/ftm2v; + + // Loop over Directional Neighbors only + for (int jj = 0; jj < jlen; jj++) { + const int j = d_neighbors(ii,jj) & NEIGHMASK; + const int jtype = type(j); + + const X_FLOAT delx = xtmp - x(j, 0); + const X_FLOAT dely = ytmp - x(j, 1); + const X_FLOAT delz = ztmp - x(j, 2); + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + + // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test + if ((rsq < STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype)) + && (rsq >= EPSILON_SQUARED)) { + double r = sqrt(rsq); + double rinv = 1.0/r; + double delx_rinv = delx*rinv; + double dely_rinv = dely*rinv; + double delz_rinv = delz*rinv; + + double wr = 1.0 - r*(STACKPARAMS?m_params[itype][jtype].cutinv:params(itype,jtype).cutinv); + double wdt = wr*wr*dt; + + // Compute the current temperature + double theta_j_inv = 1.0/dpdTheta(j); + double theta_ij_inv = 0.5*(theta_i_inv + theta_j_inv); + + double halfsigma_ij = STACKPARAMS?m_params[itype][jtype].halfsigma:params(itype,jtype).halfsigma; + double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; + + double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * rand_gen.normal(); + + const double mass_j = masses(massPerI ? j : jtype); + double mass_ij_div_neg4_ftm2v = mass_j*mass_i_div_neg4_ftm2v; + double massinv_j = 1.0 / mass_j; + + // Compute uCond + double kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa; + double alpha_ij = STACKPARAMS?m_params[itype][jtype].alpha:params(itype,jtype).alpha; + double del_uCond = alpha_ij*wr*dtsqrt * rand_gen.normal(); + + del_uCond += kappa_ij*(theta_i_inv - theta_j_inv)*wdt; + uCond[j] -= del_uCond; + uCond_i += del_uCond; + + double gammaFactor = halfgamma_ij*wdt*ftm2v; + double inv_1p_mu_gammaFactor = 1.0/(1.0 + (massinv_i + massinv_j)*gammaFactor); + + double vxj = v(j, 0); + double vyj = v(j, 1); + double vzj = v(j, 2); + double dot4 = vxj*vxj + vyj*vyj + vzj*vzj; + double dot3 = vxi*vxi + vyi*vyi + vzi*vzi; + + // Compute the initial velocity difference between atom i and atom j + double delvx = vxi - vxj; + double delvy = vyi - vyj; + double delvz = vzi - vzj; + double dot_rinv = (delx_rinv*delvx + dely_rinv*delvy + delz_rinv*delvz); + + // Compute momentum change between t and t+dt + double factorA = sigmaRand - gammaFactor*dot_rinv; + + // Update the velocity on i + vxi += delx_rinv*factorA*massinv_i; + vyi += dely_rinv*factorA*massinv_i; + vzi += delz_rinv*factorA*massinv_i; + + // Update the velocity on j + vxj -= delx_rinv*factorA*massinv_j; + vyj -= dely_rinv*factorA*massinv_j; + vzj -= delz_rinv*factorA*massinv_j; + + //ii. Compute the new velocity diff + delvx = vxi - vxj; + delvy = vyi - vyj; + delvz = vzi - vzj; + dot_rinv = delx_rinv*delvx + dely_rinv*delvy + delz_rinv*delvz; + + // Compute the new momentum change between t and t+dt + double factorB = (sigmaRand - gammaFactor*dot_rinv)*inv_1p_mu_gammaFactor; + + // Update the velocity on i + vxi += delx_rinv*factorB*massinv_i; + vyi += dely_rinv*factorB*massinv_i; + vzi += delz_rinv*factorB*massinv_i; + double partial_uMech = (vxi*vxi + vyi*vyi + vzi*vzi - dot3)*massinv_j; + + // Update the velocity on j + vxj -= delx_rinv*factorB*massinv_j; + vyj -= dely_rinv*factorB*massinv_j; + vzj -= delz_rinv*factorB*massinv_j; + partial_uMech += (vxj*vxj + vyj*vyj + vzj*vzj - dot4)*massinv_i; + + // Store updated velocity for j + v(j, 0) = vxj; + v(j, 1) = vyj; + v(j, 2) = vzj; + + // Compute uMech + double del_uMech = partial_uMech*mass_ij_div_neg4_ftm2v; + uMech_i += del_uMech; + uMech(j) += del_uMech; + } + } + // store updated velocity for i + v(i, 0) = vxi; + v(i, 1) = vyi; + v(i, 2) = vzi; + // store updated uMech and uCond for i + uMech(i) = uMech_i; + uCond(i) = uCond_i; + ii++; + } + + p_rand_pool->free_state(rand_gen); +} + + +template +void FixShardlowKokkos::initial_integrate(int vflag) +{ + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + k_list->clean_copy(); + //cleanup_copy(); + copymode = 1; + + dtsqrt = sqrt(update->dt); + + NPairSSAKokkos *np_ssa = dynamic_cast*>(list->np); + if (!np_ssa) error->one(FLERR, "NPair wasn't a NPairSSAKokkos object"); + ssa_phaseCt = np_ssa->ssa_phaseCt; + ssa_phaseLen = np_ssa->ssa_phaseLen; + ssa_itemLoc = np_ssa->ssa_itemLoc; + ssa_itemLen = np_ssa->ssa_itemLen; + ssa_gphaseCt = np_ssa->ssa_gphaseCt; + ssa_gphaseLen = np_ssa->ssa_gphaseLen; + ssa_gitemLoc = np_ssa->ssa_gitemLoc; + ssa_gitemLen = np_ssa->ssa_gitemLen; + + // process neighbors in the local AIR + for (int workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { + int workItemCt = ssa_phaseLen[workPhase]; + + if(atom->ntypes > MAX_TYPES_STACKPARAMS) { + Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { + int ct = ssa_itemLen(workPhase, workItem); + int ii = ssa_itemLoc(workPhase, workItem); + ssa_update_dpde(ii, ct); + }); + } else { + Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { + int ct = ssa_itemLen(workPhase, workItem); + int ii = ssa_itemLoc(workPhase, workItem); + ssa_update_dpde(ii, ct); + }); + } + } + + //Loop over all 13 outward directions (7 stages) + for (int workPhase = 0; workPhase < ssa_gphaseCt; ++workPhase) { + // int airnum = workPhase + 1; + int workItemCt = ssa_gphaseLen[workPhase]; + + // Communicate the updated velocities to all nodes + comm->forward_comm_fix(this); + + if(k_pairDPDE){ + // Zero out the ghosts' uCond & uMech to be used as delta accumulators +// memset(&(atom->uCond[nlocal]), 0, sizeof(double)*nghost); +// memset(&(atom->uMech[nlocal]), 0, sizeof(double)*nghost); + + Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nlocal+nghost), KOKKOS_LAMBDA (const int i) { + uCond(i) = 0.0; + uMech(i) = 0.0; + }); + DeviceType::fence(); + } + + // process neighbors in this AIR + if(atom->ntypes > MAX_TYPES_STACKPARAMS) { + Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { + int ct = ssa_gitemLen(workPhase, workItem); + int ii = ssa_gitemLoc(workPhase, workItem); + ssa_update_dpde(ii, ct); + }); + } else { + Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { + int ct = ssa_gitemLen(workPhase, workItem); + int ii = ssa_gitemLoc(workPhase, workItem); + ssa_update_dpde(ii, ct); + }); + } + + // Communicate the ghost deltas to the atom owners + comm->reverse_comm_fix(this); + + } //End Loop over all directions For airnum = Top, Top-Right, Right, Bottom-Right, Back + +} + +/* ---------------------------------------------------------------------- */ + +template +int FixShardlowKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + int ii,jj,m; + + m = 0; + for (ii = 0; ii < n; ii++) { + jj = list[ii]; + buf[m++] = h_v(jj, 0); + buf[m++] = h_v(jj, 1); + buf[m++] = h_v(jj, 2); + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::unpack_forward_comm(int n, int first, double *buf) +{ + int ii,m,last; + + m = 0; + last = first + n ; + for (ii = first; ii < last; ii++) { + h_v_t0(ii - nlocal, 0) = h_v(ii, 0) = buf[m++]; + h_v_t0(ii - nlocal, 1) = h_v(ii, 1) = buf[m++]; + h_v_t0(ii - nlocal, 2) = h_v(ii, 2) = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +int FixShardlowKokkos::pack_reverse_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = h_v(i, 0) - h_v_t0(i - nlocal, 0); + buf[m++] = h_v(i, 1) - h_v_t0(i - nlocal, 1); + buf[m++] = h_v(i, 2) - h_v_t0(i - nlocal, 2); + if(k_pairDPDE){ + buf[m++] = h_uCond(i); // for ghosts, this is an accumulated delta + buf[m++] = h_uMech(i); // for ghosts, this is an accumulated delta + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + + h_v(j, 0) += buf[m++]; + h_v(j, 1) += buf[m++]; + h_v(j, 2) += buf[m++]; + if(k_pairDPDE){ + h_uCond(j) += buf[m++]; // add in the accumulated delta + h_uMech(j) += buf[m++]; // add in the accumulated delta + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +double FixShardlowKokkos::memory_usage() +{ + double bytes = 0.0; + bytes += sizeof(double)*3*ghostmax; // v_t0[] + return bytes; +} + +namespace LAMMPS_NS { +template class FixShardlowKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixShardlowKokkos; +#endif +} diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h new file mode 100644 index 0000000000..08d9034fdf --- /dev/null +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -0,0 +1,154 @@ +/* -*- 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(shardlow/kk,FixShardlowKokkos) +FixStyle(shardlow/kk/device,FixShardlowKokkos) +FixStyle(shardlow/kk/host,FixShardlowKokkos) + +#else + +#ifndef LMP_FIX_SHARDLOW_KOKKOS_H +#define LMP_FIX_SHARDLOW_KOKKOS_H + +#include "float.h" +#include "fix_shardlow.h" +#include "kokkos_type.h" +#include "neigh_list_kokkos.h" +#include "pair_dpd_fdt_energy_kokkos.h" + +namespace LAMMPS_NS { + +template +class FixShardlowKokkos : public FixShardlow { + public: + typedef ArrayTypes AT; + NeighListKokkos *k_list; // The SSA specific neighbor list + + FixShardlowKokkos(class LAMMPS *, int, char **); + ~FixShardlowKokkos(); + int setmask(); + virtual void init(); + virtual void init_list(int, class NeighList *); + virtual void initial_integrate(int); + void setup_pre_neighbor(); + void pre_neighbor(); + + double memory_usage(); + + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + int pack_forward_comm(int , int *, double *, int, int *); + void unpack_forward_comm(int , int , double *); + + struct params_ssa { + KOKKOS_INLINE_FUNCTION + params_ssa(){cutinv=FLT_MAX;halfsigma=0;kappa=0;alpha=0;}; + KOKKOS_INLINE_FUNCTION + params_ssa(int i){cutinv=FLT_MAX;halfsigma=0;kappa=0;alpha=0;}; + F_FLOAT cutinv,halfsigma,kappa,alpha; + }; + + protected: +// class PairDPDfdt *pairDPD; + PairDPDfdtEnergyKokkos *k_pairDPDE; + Kokkos::Random_XorShift64_Pool *p_rand_pool; + typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; + + Kokkos::DualView k_params; + typename Kokkos::DualView::t_dev_const_um params; + // hardwired to space for MAX_TYPES_STACKPARAMS (12) atom types + params_ssa m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + + F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + typename ArrayTypes::t_ffloat_2d d_cutsq; + + typename DAT::tdual_v_array k_v_t0; + // typename AT::t_v_array d_v_t0; v_t0 only used in comm routines (on host) + typename HAT::t_v_array h_v_t0; + + typename AT::t_x_array x; + typename AT::t_v_array v; + typename HAT::t_v_array h_v; + typename AT::t_efloat_1d uCond, uMech; + typename HAT::t_efloat_1d h_uCond, h_uMech; + typename AT::t_int_1d type; + bool massPerI; + typename AT::t_float_1d_randomread masses; + typename AT::t_efloat_1d dpdTheta; + + double dtsqrt; // = sqrt(update->dt); + int ghostmax; + int nlocal, nghost; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist, d_numneigh; + + int ssa_phaseCt; + typename AT::t_int_1d ssa_phaseLen; + typename AT::t_int_2d ssa_itemLoc, ssa_itemLen; + + int ssa_gphaseCt; + typename AT::t_int_1d ssa_gphaseLen; + typename AT::t_int_2d ssa_gitemLoc, ssa_gitemLen; + + +// template +// void ssa_update_dpd(int, int); // Constant Temperature + template + void ssa_update_dpde(int, int); // Constant Energy + +}; + +} + +#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: Must use dpd/fdt pair_style with fix shardlow + +Self-explanatory. + +E: Must use pair_style dpd/fdt or dpd/fdt/energy with fix shardlow + +E: A deterministic integrator must be specified after fix shardlow in input +file (e.g. fix nve or fix nph). + +Self-explanatory. + +E: Cannot use constant temperature integration routines with DPD + +Self-explanatory. Must use deterministic integrators such as nve or nph + +E: Fix shardlow does not yet support triclinic geometries + +Self-explanatory. + +E: Shardlow algorithm requires sub-domain length > 2*(rcut+skin). Either +reduce the number of processors requested, or change the cutoff/skin + +The Shardlow splitting algorithm requires the size of the sub-domain lengths +to be are larger than twice the cutoff+skin. Generally, the domain decomposition +is dependant on the number of processors requested. + +*/ -- GitLab From 71379487abc7062a698e960c68a97766829bffdf Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 17:35:58 -0500 Subject: [PATCH 157/337] USER-DPD: variety of fixes for new SSA Kokkos code. Still not functional. --- src/KOKKOS/fix_shardlow_kokkos.cpp | 1 + src/KOKKOS/nbin_ssa_kokkos.cpp | 18 ++++++++++++++++++ src/KOKKOS/npair_ssa_kokkos.cpp | 10 ++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 7b2810bb4c..a01cc36c3e 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -179,6 +179,7 @@ void FixShardlowKokkos::init() template void FixShardlowKokkos::init_list(int id, NeighList *ptr) { + FixShardlow::init_list(id, ptr); k_list = static_cast*>(ptr); } diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index 32a77119de..ebd07752b0 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -38,10 +38,28 @@ NBinSSAKokkos::NBinSSAKokkos(LAMMPS *lmp) : NBinStandard(lmp) atoms_per_bin = ghosts_per_gbin = 16; d_resize = typename AT::t_int_scalar("NBinSSAKokkos::d_resize"); + d_lbinxlo = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinxlo"); + d_lbinylo = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinylo"); + d_lbinzlo = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinzlo"); + d_lbinxhi = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinxhi"); + d_lbinyhi = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinyhi"); + d_lbinzhi = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinzhi"); #ifndef KOKKOS_USE_CUDA_UVM h_resize = Kokkos::create_mirror_view(d_resize); + h_lbinxlo = Kokkos::create_mirror_view(d_lbinxlo); + h_lbinylo = Kokkos::create_mirror_view(d_lbinylo); + h_lbinzlo = Kokkos::create_mirror_view(d_lbinzlo); + h_lbinxhi = Kokkos::create_mirror_view(d_lbinxhi); + h_lbinyhi = Kokkos::create_mirror_view(d_lbinyhi); + h_lbinzhi = Kokkos::create_mirror_view(d_lbinzhi); #else h_resize = d_resize; + h_lbinxlo = d_lbinxlo; + h_lbinylo = d_lbinylo; + h_lbinzlo = d_lbinzlo; + h_lbinxhi = d_lbinxhi; + h_lbinyhi = d_lbinyhi; + h_lbinzhi = d_lbinzhi; #endif h_resize() = 1; diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index c70fd0087e..f94d51197a 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -338,6 +338,12 @@ void NPairSSAKokkos::build(NeighList *list_) k_ssa_phaseLen.modify(); k_ssa_itemLoc.modify(); k_ssa_itemLen.modify(); + k_ssa_gphaseLen.modify(); + k_ssa_gitemLoc.modify(); + k_ssa_gitemLen.modify(); + + list->inum = data.neigh_list.inum; //FIXME once the above is in a parallel_for + list->gnum = data.neigh_list.gnum; // it will need a deep_copy or something list->k_ilist.template modify(); } @@ -450,7 +456,7 @@ void NPairSSAKokkosExecute::build_locals() //FIXME if (ssa_phaseCt != workPhase) error->one(FLERR,"ssa_phaseCt was wrong"); - neigh_list.inum = inum; //FIXME + neigh_list.inum = inum; } @@ -545,7 +551,7 @@ void NPairSSAKokkosExecute::build_ghosts() d_ssa_gitemLen(workPhase,workItem) = inum + gnum - d_ssa_gitemLoc(workPhase,workItem); if (d_ssa_gitemLen(workPhase,workItem) > 0) workItem++; } - neigh_list.gnum = gnum; //FIXME + neigh_list.gnum = gnum; } } -- GitLab From c56e0692b9141d1f4442b61f95a7e47d998a44dc Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 17:38:46 -0500 Subject: [PATCH 158/337] USER-DPD Kokkos: enable install of SSA Kokkos code --- src/KOKKOS/Install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index ea70ae4ca1..dda1ba011b 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -103,6 +103,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_shardlow_kokkos.cpp fix_shardlow.cpp +action fix_shardlow_kokkos.h fix_shardlow.h action fix_momentum_kokkos.cpp action fix_momentum_kokkos.h action fix_wall_reflect_kokkos.cpp @@ -134,8 +136,12 @@ action npair_copy_kokkos.cpp action npair_copy_kokkos.h action npair_kokkos.cpp action npair_kokkos.h +action npair_ssa_kokkos.cpp npair_half_bin_newton_ssa.cpp +action npair_ssa_kokkos.h npair_half_bin_newton_ssa.h action nbin_kokkos.cpp action nbin_kokkos.h +action nbin_ssa_kokkos.cpp nbin_ssa.cpp +action nbin_ssa_kokkos.h nbin_ssa.h action math_special_kokkos.cpp action math_special_kokkos.h action pair_buck_coul_cut_kokkos.cpp -- GitLab From 6ea290a69963a9e6619c51e81f004906194870fe Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 17:41:57 -0500 Subject: [PATCH 159/337] DEBUG: make FixShardlowKokkos have it's own rand_pool, plus debug code. ssa_update_dpde() hangs on first use of rand_gen.normal() Switching to not using a pointer to PairDPDfdtEnergyKokkos's rand_pool had no noticble effect. --- src/KOKKOS/fix_shardlow_kokkos.cpp | 37 ++++++++++++++++++++---------- src/KOKKOS/fix_shardlow_kokkos.h | 5 ++-- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index a01cc36c3e..fe05db6d33 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -71,7 +71,7 @@ using namespace FixConst; template FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **arg) : - FixShardlow(lmp, narg, arg), k_pairDPDE(NULL), ghostmax(0), nlocal(0) , nghost(0) + FixShardlow(lmp, narg, arg), k_pairDPDE(NULL), ghostmax(0), nlocal(0) , nghost(0), rand_pool(comm->me) { kokkosable = 1; // atomKK = (AtomKokkos *) atom; @@ -85,12 +85,12 @@ FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **a // k_pairDPD = NULL; k_pairDPDE = NULL; // k_pairDPD = (PairDPDfdtKokkos *) force->pair_match("dpd/fdt",1); - k_pairDPDE = (PairDPDfdtEnergyKokkos *) force->pair_match("dpd/fdt/energy/kk",1); + k_pairDPDE = dynamic_cast *>(force->pair_match("dpd/fdt/energy",0)); // if(k_pairDPDE){ comm_forward = 3; comm_reverse = 5; - p_rand_pool = &(k_pairDPDE->rand_pool); +// p_rand_pool = &(k_pairDPDE->rand_pool); // } else { // comm_forward = 3; // comm_reverse = 3; @@ -263,7 +263,8 @@ void FixShardlowKokkos::ssa_update_dpd( int start_ii, int count ) { - rand_type rand_gen = p_rand_pool->get_state(); + rand_type rand_gen = rand_pool.get_state(); +// rand_type rand_gen = p_rand_pool->get_state(); const double theta_ij_inv = 1.0/k_pairDPD->temperature; // independent of i,j const double boltz_inv = 1.0/force->boltz; @@ -377,7 +378,8 @@ void FixShardlowKokkos::ssa_update_dpd( v(i, 2) = vzi; } - p_rand_pool->free_state(rand_gen); +// p_rand_pool->free_state(rand_gen); + rand_pool.free_state(rand_gen); } #endif @@ -390,10 +392,13 @@ void FixShardlowKokkos::ssa_update_dpd( template template void FixShardlowKokkos::ssa_update_dpde( - int start_ii, int count + int start_ii, int count, int id ) { - rand_type rand_gen = p_rand_pool->get_state(); + rand_type rand_gen = rand_pool.get_state(); +// rand_type rand_gen = p_rand_pool->get_state(); + +//fprintf(stderr, "ssa_update_dpde(%d,%d,%d)\n", start_ii, count, id); const double boltz_inv = 1.0/force->boltz; const double ftm2v = force->ftm2v; @@ -401,6 +406,11 @@ void FixShardlowKokkos::ssa_update_dpde( int ct = count; int ii = start_ii; +// double randnum1 = rand_gen.normal(); +//fprintf(stderr, "randnum1 = %g\n", randnum1); +// double randnum2 = rand_gen.normal(); +//fprintf(stderr, "randnum2 = %g\n", randnum2); + while (ct-- > 0) { const int i = d_ilist(ii); const int jlen = d_numneigh(ii); @@ -453,6 +463,7 @@ void FixShardlowKokkos::ssa_update_dpde( double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * rand_gen.normal(); +// double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * randnum1;//rand_gen.normal(); const double mass_j = masses(massPerI ? j : jtype); double mass_ij_div_neg4_ftm2v = mass_j*mass_i_div_neg4_ftm2v; @@ -462,6 +473,7 @@ void FixShardlowKokkos::ssa_update_dpde( double kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa; double alpha_ij = STACKPARAMS?m_params[itype][jtype].alpha:params(itype,jtype).alpha; double del_uCond = alpha_ij*wr*dtsqrt * rand_gen.normal(); +// double del_uCond = alpha_ij*wr*dtsqrt * randnum2;//rand_gen.normal(); del_uCond += kappa_ij*(theta_i_inv - theta_j_inv)*wdt; uCond[j] -= del_uCond; @@ -537,7 +549,8 @@ void FixShardlowKokkos::ssa_update_dpde( ii++; } - p_rand_pool->free_state(rand_gen); + rand_pool.free_state(rand_gen); +// p_rand_pool->free_state(rand_gen); } @@ -573,13 +586,13 @@ void FixShardlowKokkos::initial_integrate(int vflag) Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { int ct = ssa_itemLen(workPhase, workItem); int ii = ssa_itemLoc(workPhase, workItem); - ssa_update_dpde(ii, ct); + ssa_update_dpde(ii, ct, workItem); }); } else { Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { int ct = ssa_itemLen(workPhase, workItem); int ii = ssa_itemLoc(workPhase, workItem); - ssa_update_dpde(ii, ct); + ssa_update_dpde(ii, ct, workItem); }); } } @@ -609,13 +622,13 @@ void FixShardlowKokkos::initial_integrate(int vflag) Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { int ct = ssa_gitemLen(workPhase, workItem); int ii = ssa_gitemLoc(workPhase, workItem); - ssa_update_dpde(ii, ct); + ssa_update_dpde(ii, ct, workItem); }); } else { Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { int ct = ssa_gitemLen(workPhase, workItem); int ii = ssa_gitemLoc(workPhase, workItem); - ssa_update_dpde(ii, ct); + ssa_update_dpde(ii, ct, workItem); }); } diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index 08d9034fdf..b4267226e6 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -63,7 +63,8 @@ class FixShardlowKokkos : public FixShardlow { protected: // class PairDPDfdt *pairDPD; PairDPDfdtEnergyKokkos *k_pairDPDE; - Kokkos::Random_XorShift64_Pool *p_rand_pool; + Kokkos::Random_XorShift64_Pool rand_pool; +// Kokkos::Random_XorShift64_Pool *p_rand_pool; typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; Kokkos::DualView k_params; @@ -108,7 +109,7 @@ class FixShardlowKokkos : public FixShardlow { // template // void ssa_update_dpd(int, int); // Constant Temperature template - void ssa_update_dpde(int, int); // Constant Energy + void ssa_update_dpde(int, int, int); // Constant Energy }; -- GitLab From c2e3a76225f421bee13b7256b8be8f1730049214 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 19:07:55 -0500 Subject: [PATCH 160/337] USER-DPD Kokkos: rand seed can't be zero, so add some salt. --- src/KOKKOS/fix_shardlow_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index fe05db6d33..65bb7033bb 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -71,7 +71,7 @@ using namespace FixConst; template FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **arg) : - FixShardlow(lmp, narg, arg), k_pairDPDE(NULL), ghostmax(0), nlocal(0) , nghost(0), rand_pool(comm->me) + FixShardlow(lmp, narg, arg), k_pairDPDE(NULL), ghostmax(0), nlocal(0) , nghost(0), rand_pool(1234567 + comm->me) { kokkosable = 1; // atomKK = (AtomKokkos *) atom; -- GitLab From b053c367ea1edd00138e68f673a8928dd9d42151 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 19:09:07 -0500 Subject: [PATCH 161/337] USER-DPD Kokkos: remove extranious debugging code --- src/KOKKOS/fix_shardlow_kokkos.cpp | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 65bb7033bb..1ec1455b23 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -90,11 +90,9 @@ FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **a // if(k_pairDPDE){ comm_forward = 3; comm_reverse = 5; -// p_rand_pool = &(k_pairDPDE->rand_pool); // } else { // comm_forward = 3; // comm_reverse = 3; -// p_rand_pool = &(k_pairDPD->rand_pool); // } @@ -264,7 +262,6 @@ void FixShardlowKokkos::ssa_update_dpd( ) { rand_type rand_gen = rand_pool.get_state(); -// rand_type rand_gen = p_rand_pool->get_state(); const double theta_ij_inv = 1.0/k_pairDPD->temperature; // independent of i,j const double boltz_inv = 1.0/force->boltz; @@ -378,7 +375,6 @@ void FixShardlowKokkos::ssa_update_dpd( v(i, 2) = vzi; } -// p_rand_pool->free_state(rand_gen); rand_pool.free_state(rand_gen); } #endif @@ -396,9 +392,6 @@ void FixShardlowKokkos::ssa_update_dpde( ) { rand_type rand_gen = rand_pool.get_state(); -// rand_type rand_gen = p_rand_pool->get_state(); - -//fprintf(stderr, "ssa_update_dpde(%d,%d,%d)\n", start_ii, count, id); const double boltz_inv = 1.0/force->boltz; const double ftm2v = force->ftm2v; @@ -406,11 +399,6 @@ void FixShardlowKokkos::ssa_update_dpde( int ct = count; int ii = start_ii; -// double randnum1 = rand_gen.normal(); -//fprintf(stderr, "randnum1 = %g\n", randnum1); -// double randnum2 = rand_gen.normal(); -//fprintf(stderr, "randnum2 = %g\n", randnum2); - while (ct-- > 0) { const int i = d_ilist(ii); const int jlen = d_numneigh(ii); @@ -463,7 +451,6 @@ void FixShardlowKokkos::ssa_update_dpde( double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * rand_gen.normal(); -// double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * randnum1;//rand_gen.normal(); const double mass_j = masses(massPerI ? j : jtype); double mass_ij_div_neg4_ftm2v = mass_j*mass_i_div_neg4_ftm2v; @@ -473,7 +460,6 @@ void FixShardlowKokkos::ssa_update_dpde( double kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa; double alpha_ij = STACKPARAMS?m_params[itype][jtype].alpha:params(itype,jtype).alpha; double del_uCond = alpha_ij*wr*dtsqrt * rand_gen.normal(); -// double del_uCond = alpha_ij*wr*dtsqrt * randnum2;//rand_gen.normal(); del_uCond += kappa_ij*(theta_i_inv - theta_j_inv)*wdt; uCond[j] -= del_uCond; @@ -550,7 +536,6 @@ void FixShardlowKokkos::ssa_update_dpde( } rand_pool.free_state(rand_gen); -// p_rand_pool->free_state(rand_gen); } -- GitLab From 21619b29768553bfcf9d31347c00904973e155d4 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 22:16:33 -0500 Subject: [PATCH 162/337] USER-DPD Kokkos: correct the setup of the ghost SSA workplan --- src/KOKKOS/npair_ssa_kokkos.cpp | 140 ++++++++++++++++---------------- 1 file changed, 72 insertions(+), 68 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index f94d51197a..7eea57d492 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -472,84 +472,88 @@ void NPairSSAKokkosExecute::build_ghosts() // since these are ghosts, must check if stencil bin is out of bounds for (int workPhase = 0; workPhase < ssa_gphaseCt; workPhase++) { int airnum = workPhase + 1; - int workItem = 0; //FIXME for now, there is only 1 workItem for each ghost AIR - d_ssa_gitemLoc(workPhase, workItem) = inum + gnum; // record where workItem starts in ilist - for (int il = 0; il < c_gbincount(airnum); ++il) { - const int i = c_gbins(airnum, il); - n = 0; - - const AtomNeighbors neighbors_i = neigh_list.get_neighbors(inum + gnum); - const X_FLOAT xtmp = x(i, 0); - const X_FLOAT ytmp = x(i, 1); - const X_FLOAT ztmp = x(i, 2); - const int itype = type(i); - - const typename ArrayTypes::t_int_1d_const_um stencil - = d_stencil; - - int loc[3]; - const int ibin = coord2bin(x(i, 0), x(i, 1), x(i, 2), &(loc[0])); - - // loop over AIR ghost atoms in all bins in "full" stencil - // Note: the non-AIR ghost atoms have already been filtered out - for (int k = 0; k < nstencil; k++) { - int xbin2 = loc[0] + d_stencilxyz(k,0); - int ybin2 = loc[1] + d_stencilxyz(k,1); - int zbin2 = loc[2] + d_stencilxyz(k,2); - // Skip it if this bin is outside the extent of local bins - if (xbin2 < lbinxlo || xbin2 >= lbinxhi || - ybin2 < lbinylo || ybin2 >= lbinyhi || - zbin2 < lbinzlo || zbin2 >= lbinzhi) continue; - const int jbin = ibin+stencil(k); - for (int jl = 0; jl < c_bincount(jbin); ++jl) { - const int j = c_bins(jbin, jl); - const int jtype = type(j); - if(exclude && exclusion(i,j,itype,jtype)) continue; - - const X_FLOAT delx = xtmp - x(j, 0); - const X_FLOAT dely = ytmp - x(j, 1); - const X_FLOAT delz = ztmp - x(j, 2); - const X_FLOAT rsq = delx*delx + dely*dely + delz*delz; - if(rsq <= cutneighsq(itype,jtype)) { - if (molecular) { - if (!moltemplate) - which = find_special(i,j); - /* else if (imol >= 0) */ - /* which = find_special(onemols[imol]->special[iatom], */ - /* onemols[imol]->nspecial[iatom], */ - /* tag[j]-tagprev); */ - /* else which = 0; */ - if (which == 0){ - if(n::t_int_1d_const_um stencil + = d_stencil; + + int loc[3]; + const int ibin = coord2bin(x(i, 0), x(i, 1), x(i, 2), &(loc[0])); + + // loop over AIR ghost atoms in all bins in "full" stencil + // Note: the non-AIR ghost atoms have already been filtered out + for (int k = 0; k < nstencil; k++) { + int xbin2 = loc[0] + d_stencilxyz(k,0); + int ybin2 = loc[1] + d_stencilxyz(k,1); + int zbin2 = loc[2] + d_stencilxyz(k,2); + // Skip it if this bin is outside the extent of local bins + if (xbin2 < lbinxlo || xbin2 >= lbinxhi || + ybin2 < lbinylo || ybin2 >= lbinyhi || + zbin2 < lbinzlo || zbin2 >= lbinzhi) continue; + const int jbin = ibin+stencil(k); + for (int jl = 0; jl < c_bincount(jbin); ++jl) { + const int j = c_bins(jbin, jl); + const int jtype = type(j); + if(exclude && exclusion(i,j,itype,jtype)) continue; + + const X_FLOAT delx = xtmp - x(j, 0); + const X_FLOAT dely = ytmp - x(j, 1); + const X_FLOAT delz = ztmp - x(j, 2); + const X_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if(rsq <= cutneighsq(itype,jtype)) { + if (molecular) { + if (!moltemplate) + which = find_special(i,j); + /* else if (imol >= 0) */ + /* which = find_special(onemols[imol]->special[iatom], */ + /* onemols[imol]->nspecial[iatom], */ + /* tag[j]-tagprev); */ + /* else which = 0; */ + if (which == 0){ + if(n 0) { + if(n 0) { - if(n 0) { - neigh_list.d_numneigh(inum + gnum) = n; - neigh_list.d_ilist(inum + (gnum++)) = i; - if(n > neigh_list.maxneighs) { - resize() = 1; - if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); + if (n > 0) { + neigh_list.d_numneigh(inum + gnum) = n; + neigh_list.d_ilist(inum + (gnum++)) = i; + if(n > neigh_list.maxneighs) { + resize() = 1; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); + } } } + // record where workItem ends in ilist + d_ssa_gitemLen(workPhase,workItem) = inum + gnum - d_ssa_gitemLoc(workPhase,workItem); + // if (d_ssa_gitemLen(workPhase,workItem) > 0) workItem++; } - // record where workItem ends in ilist - d_ssa_gitemLen(workPhase,workItem) = inum + gnum - d_ssa_gitemLoc(workPhase,workItem); - if (d_ssa_gitemLen(workPhase,workItem) > 0) workItem++; + d_ssa_gphaseLen(workPhase) = workItem; } neigh_list.gnum = gnum; } -- GitLab From fd1523c7561e98d61b02c55f74939f5dda97cfe5 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 22:19:53 -0500 Subject: [PATCH 163/337] USER-DPD Kokkos: add missing () in STACKPARAMS check in ssa_update_* --- src/KOKKOS/fix_shardlow_kokkos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 1ec1455b23..79e40dee98 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -299,7 +299,7 @@ void FixShardlowKokkos::ssa_update_dpd( const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test - if ((rsq < STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype)) + if ((rsq < (STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype))) && (rsq >= EPSILON_SQUARED)) { double r = sqrt(rsq); double rinv = 1.0/r; @@ -432,7 +432,7 @@ void FixShardlowKokkos::ssa_update_dpde( const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test - if ((rsq < STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype)) + if ((rsq < (STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype))) && (rsq >= EPSILON_SQUARED)) { double r = sqrt(rsq); double rinv = 1.0/r; -- GitLab From e4500859a3e2388a2b3275ae1491f28589781e00 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 24 Feb 2017 22:24:29 -0500 Subject: [PATCH 164/337] USER-DPD: add "#ifdef DEBUG_PAIR_CT" debugging code to fix_shardlow* --- src/KOKKOS/fix_shardlow_kokkos.cpp | 61 ++++++++++++++++++++++++++++++ src/KOKKOS/fix_shardlow_kokkos.h | 7 ++++ src/USER-DPD/fix_shardlow.cpp | 53 ++++++++++++++++++++++++++ src/USER-DPD/fix_shardlow.h | 5 +++ 4 files changed, 126 insertions(+) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 79e40dee98..1459819430 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -99,6 +99,17 @@ FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **a if(/* k_pairDPD == NULL &&*/ k_pairDPDE == NULL) error->all(FLERR,"Must use pair_style "/*"dpd/fdt/kk or "*/"dpd/fdt/energy/kk with fix shardlow/kk"); +#ifdef DEBUG_PAIR_CT + d_counters = typename AT::t_int_2d("FixShardlowKokkos::d_counters", 2, 3); + d_hist = typename AT::t_int_1d("FixShardlowKokkos::d_hist", 32); +#ifndef KOKKOS_USE_CUDA_UVM + h_counters = Kokkos::create_mirror_view(d_counters); + h_hist = Kokkos::create_mirror_view(d_hist); +#else + h_counters = d_counters; + h_hist = d_hist; +#endif +#endif } /* ---------------------------------------------------------------------- */ @@ -297,10 +308,24 @@ void FixShardlowKokkos::ssa_update_dpd( const X_FLOAT dely = ytmp - x(j, 1); const X_FLOAT delz = ztmp - x(j, 2); const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; +#ifdef DEBUG_PAIR_CT + if ((i < nlocal) && (j < nlocal)) Kokkos::atomic_increment(&(d_counters(0, 0))); + else Kokkos::atomic_increment(&(d_counters(0, 1))); + Kokkos::atomic_increment(&(d_counters(0, 2))); + int rsqi = rsq / 8; + if (rsqi < 0) rsqi = 0; + else if (rsqi > 31) rsqi = 31; + Kokkos::atomic_increment(&(d_hist(rsqi))); +#endif // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test if ((rsq < (STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype))) && (rsq >= EPSILON_SQUARED)) { +#ifdef DEBUG_PAIR_CT + if ((i < nlocal) && (j < nlocal)) Kokkos::atomic_increment(&(d_counters(1, 0))); + else Kokkos::atomic_increment(&(d_counters(1, 1))); + Kokkos::atomic_increment(&(d_counters(1, 2))); +#endif double r = sqrt(rsq); double rinv = 1.0/r; double delx_rinv = delx*rinv; @@ -430,10 +455,25 @@ void FixShardlowKokkos::ssa_update_dpde( const X_FLOAT dely = ytmp - x(j, 1); const X_FLOAT delz = ztmp - x(j, 2); const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; +#ifdef DEBUG_PAIR_CT + if ((i < nlocal) && (j < nlocal)) Kokkos::atomic_increment(&(d_counters(0, 0))); + else Kokkos::atomic_increment(&(d_counters(0, 1))); + Kokkos::atomic_increment(&(d_counters(0, 2))); + int rsqi = rsq / 8; + if (rsqi < 0) rsqi = 0; + else if (rsqi > 31) rsqi = 31; + Kokkos::atomic_increment(&(d_hist(rsqi))); +#endif // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test if ((rsq < (STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype))) && (rsq >= EPSILON_SQUARED)) { +#ifdef DEBUG_PAIR_CT + if ((i < nlocal) && (j < nlocal)) Kokkos::atomic_increment(&(d_counters(1, 0))); + else Kokkos::atomic_increment(&(d_counters(1, 1))); + Kokkos::atomic_increment(&(d_counters(1, 2))); +#endif + double r = sqrt(rsq); double rinv = 1.0/r; double delx_rinv = delx*rinv; @@ -563,6 +603,15 @@ void FixShardlowKokkos::initial_integrate(int vflag) ssa_gitemLoc = np_ssa->ssa_gitemLoc; ssa_gitemLen = np_ssa->ssa_gitemLen; +#ifdef DEBUG_PAIR_CT + for (int i = 0; i < 2; ++i) + for (int j = 0; j < 3; ++j) + h_counters(i,j) = 0; + for (int i = 0; i < 32; ++i) h_hist[i] = 0; + deep_copy(d_counters, h_counters); + deep_copy(d_hist, h_hist); +#endif + // process neighbors in the local AIR for (int workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { int workItemCt = ssa_phaseLen[workPhase]; @@ -622,6 +671,18 @@ void FixShardlowKokkos::initial_integrate(int vflag) } //End Loop over all directions For airnum = Top, Top-Right, Right, Bottom-Right, Back +#ifdef DEBUG_PAIR_CT +deep_copy(h_counters, d_counters); +deep_copy(h_hist, d_hist); +for (int i = 0; i < 32; ++i) fprintf(stdout, "%8d", h_hist[i]); +fprintf(stdout, "\n%6d %6d,%6d %6d: " + ,h_counters(0, 2) + ,h_counters(1, 2) + ,h_counters(0, 1) + ,h_counters(1, 1) +); +#endif + } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index b4267226e6..ddd4f5b1ba 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -60,6 +60,13 @@ class FixShardlowKokkos : public FixShardlow { F_FLOAT cutinv,halfsigma,kappa,alpha; }; +#ifdef DEBUG_PAIR_CT + typename AT::t_int_2d d_counters; + typename HAT::t_int_2d h_counters; + typename AT::t_int_1d d_hist; + typename HAT::t_int_1d h_hist; +#endif + protected: // class PairDPDfdt *pairDPD; PairDPDfdtEnergyKokkos *k_pairDPDE; diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 4a7fff66cf..5132d937ea 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -211,6 +211,10 @@ void FixShardlow::ssa_update_dpd( const double mass_i = (rmass) ? rmass[i] : mass[itype]; const double massinv_i = 1.0 / mass_i; +#ifdef DEBUG_PAIR_CT + const int nlocal = atom->nlocal; +#endif + // Loop over Directional Neighbors only for (int jj = 0; jj < jlen; jj++) { int j = jlist[jj] & NEIGHMASK; @@ -220,9 +224,23 @@ void FixShardlow::ssa_update_dpd( double dely = ytmp - x[j][1]; double delz = ztmp - x[j][2]; double rsq = delx*delx + dely*dely + delz*delz; +#ifdef DEBUG_PAIR_CT + if ((i < nlocal) && (j < nlocal)) ++(counters[0][0]); + else ++(counters[0][1]); + ++(counters[0][2]); + int rsqi = rsq / 8; + if (rsqi < 0) rsqi = 0; + else if (rsqi > 31) rsqi = 31; + ++(hist[rsqi]); +#endif // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test if ((rsq < cut2_i[jtype]) && (rsq >= EPSILON_SQUARED)) { +#ifdef DEBUG_PAIR_CT + if ((i < nlocal) && (j < nlocal)) ++(counters[1][0]); + else ++(counters[1][1]); + ++(counters[1][2]); +#endif double r = sqrt(rsq); double rinv = 1.0/r; double delx_rinv = delx*rinv; @@ -350,6 +368,10 @@ void FixShardlow::ssa_update_dpde( const double massinv_i = 1.0 / mass_i; const double mass_i_div_neg4_ftm2v = mass_i*(-0.25)/ftm2v; +#ifdef DEBUG_PAIR_CT + const int nlocal = atom->nlocal; +#endif + // Loop over Directional Neighbors only for (int jj = 0; jj < jlen; jj++) { int j = jlist[jj] & NEIGHMASK; @@ -359,9 +381,23 @@ void FixShardlow::ssa_update_dpde( double dely = ytmp - x[j][1]; double delz = ztmp - x[j][2]; double rsq = delx*delx + dely*dely + delz*delz; +#ifdef DEBUG_PAIR_CT + if ((i < nlocal) && (j < nlocal)) ++(counters[0][0]); + else ++(counters[0][1]); + ++(counters[0][2]); + int rsqi = rsq / 8; + if (rsqi < 0) rsqi = 0; + else if (rsqi > 31) rsqi = 31; + ++(hist[rsqi]); +#endif // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test if ((rsq < cut2_i[jtype]) && (rsq >= EPSILON_SQUARED)) { +#ifdef DEBUG_PAIR_CT + if ((i < nlocal) && (j < nlocal)) ++(counters[1][0]); + else ++(counters[1][1]); + ++(counters[1][2]); +#endif double r = sqrt(rsq); double rinv = 1.0/r; double delx_rinv = delx*rinv; @@ -493,6 +529,13 @@ void FixShardlow::initial_integrate(int vflag) error->one(FLERR, msg); } +#ifdef DEBUG_PAIR_CT + for (int i = 0; i < 2; ++i) + for (int j = 0; j < 3; ++j) + counters[i][j] = 0; + for (int i = 0; i < 32; ++i) hist[i] = 0; +#endif + // Allocate memory for v_t0 to hold the initial velocities for the ghosts v_t0 = (double (*)[3]) memory->smalloc(sizeof(double)*3*nghost, "FixShardlow:v_t0"); @@ -554,6 +597,16 @@ void FixShardlow::initial_integrate(int vflag) } //End Loop over all directions For airnum = Top, Top-Right, Right, Bottom-Right, Back +#ifdef DEBUG_PAIR_CT +for (int i = 0; i < 32; ++i) fprintf(stdout, "%8d", hist[i]); +fprintf(stdout, "\n%6d %6d,%6d %6d: " + ,counters[0][2] + ,counters[1][2] + ,counters[0][1] + ,counters[1][1] +); +#endif + memory->sfree(v_t0); v_t0 = NULL; } diff --git a/src/USER-DPD/fix_shardlow.h b/src/USER-DPD/fix_shardlow.h index 6fd438b8f0..e87ae3c9cf 100644 --- a/src/USER-DPD/fix_shardlow.h +++ b/src/USER-DPD/fix_shardlow.h @@ -38,6 +38,11 @@ class FixShardlow : public Fix { double memory_usage(); +#ifdef DEBUG_PAIR_CT + int counters[2][3]; + int hist[32]; +#endif + protected: int pack_reverse_comm(int, int, double *); void unpack_reverse_comm(int, int *, double *); -- GitLab From 35ee24cfad501b694ceba49b7104100101d0a5cb Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sun, 26 Feb 2017 14:50:58 -0500 Subject: [PATCH 165/337] use RandWrap in pair_dpd_fdt_energy_kokkos and fix_shardlow_kokkos --- src/KOKKOS/fix_shardlow_kokkos.cpp | 25 ++++++++++++++++++----- src/KOKKOS/fix_shardlow_kokkos.h | 8 ++++++-- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 6 +++--- src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 8 ++++---- 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 1459819430..e82991bcba 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -71,7 +71,7 @@ using namespace FixConst; template FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **arg) : - FixShardlow(lmp, narg, arg), k_pairDPDE(NULL), ghostmax(0), nlocal(0) , nghost(0), rand_pool(1234567 + comm->me) + FixShardlow(lmp, narg, arg), k_pairDPDE(NULL), ghostmax(0), nlocal(0) , nghost(0) { kokkosable = 1; // atomKK = (AtomKokkos *) atom; @@ -90,6 +90,7 @@ FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **a // if(k_pairDPDE){ comm_forward = 3; comm_reverse = 5; + p_rand_pool = &(k_pairDPDE->rand_pool); // } else { // comm_forward = 3; // comm_reverse = 3; @@ -272,7 +273,7 @@ void FixShardlowKokkos::ssa_update_dpd( int start_ii, int count ) { - rand_type rand_gen = rand_pool.get_state(); + rand_type rand_gen = p_rand_pool->get_state(); const double theta_ij_inv = 1.0/k_pairDPD->temperature; // independent of i,j const double boltz_inv = 1.0/force->boltz; @@ -400,7 +401,7 @@ void FixShardlowKokkos::ssa_update_dpd( v(i, 2) = vzi; } - rand_pool.free_state(rand_gen); + p_rand_pool->free_state(rand_gen); } #endif @@ -416,7 +417,11 @@ void FixShardlowKokkos::ssa_update_dpde( int start_ii, int count, int id ) { - rand_type rand_gen = rand_pool.get_state(); +#ifdef USE_RAND_MARS + class RanMars *pRNG = k_pairDPDE->random; +#else + rand_type rand_gen = p_rand_pool->get_state(); +#endif const double boltz_inv = 1.0/force->boltz; const double ftm2v = force->ftm2v; @@ -490,7 +495,11 @@ void FixShardlowKokkos::ssa_update_dpde( double halfsigma_ij = STACKPARAMS?m_params[itype][jtype].halfsigma:params(itype,jtype).halfsigma; double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; +#ifdef USE_RAND_MARS + double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * pRNG->gaussian(); +#else double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * rand_gen.normal(); +#endif const double mass_j = masses(massPerI ? j : jtype); double mass_ij_div_neg4_ftm2v = mass_j*mass_i_div_neg4_ftm2v; @@ -499,7 +508,11 @@ void FixShardlowKokkos::ssa_update_dpde( // Compute uCond double kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa; double alpha_ij = STACKPARAMS?m_params[itype][jtype].alpha:params(itype,jtype).alpha; +#ifdef USE_RAND_MARS + double del_uCond = alpha_ij*wr*dtsqrt * pRNG->gaussian(); +#else double del_uCond = alpha_ij*wr*dtsqrt * rand_gen.normal(); +#endif del_uCond += kappa_ij*(theta_i_inv - theta_j_inv)*wdt; uCond[j] -= del_uCond; @@ -575,7 +588,9 @@ void FixShardlowKokkos::ssa_update_dpde( ii++; } - rand_pool.free_state(rand_gen); +#ifndef USE_RAND_MARS + p_rand_pool->free_state(rand_gen); +#endif } diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index ddd4f5b1ba..f71ca1ce11 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -70,9 +70,13 @@ class FixShardlowKokkos : public FixShardlow { protected: // class PairDPDfdt *pairDPD; PairDPDfdtEnergyKokkos *k_pairDPDE; - Kokkos::Random_XorShift64_Pool rand_pool; // Kokkos::Random_XorShift64_Pool *p_rand_pool; - typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; + +// Kokkos::Random_XorShift64_Pool rand_pool; +// typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; + + RandPoolWrap *p_rand_pool; + typedef RandWrap rand_type; Kokkos::DualView k_params; typename Kokkos::DualView PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : - PairDPDfdtEnergy(lmp),rand_pool(seed + comm->me /** , lmp/**/) + PairDPDfdtEnergy(lmp),rand_pool(12345 /* not actually used, seed + comm->me */, lmp) { atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; @@ -68,7 +68,7 @@ PairDPDfdtEnergyKokkos::~PairDPDfdtEnergyKokkos() memory->destroy_kokkos(k_cutsq,cutsq); - /** rand_pool.destroy();/**/ + rand_pool.destroy(); } /* ---------------------------------------------------------------------- @@ -101,7 +101,7 @@ void PairDPDfdtEnergyKokkos::init_style() error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); } - /** rand_pool.init(random,seed);/**/ + rand_pool.init(random,seed); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index deb264c37e..e065d71d3e 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -89,11 +89,11 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { DAT::tdual_efloat_1d k_duCond,k_duMech; - Kokkos::Random_XorShift64_Pool rand_pool; - typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; + // Kokkos::Random_XorShift64_Pool rand_pool; + // typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; - // RandPoolWrap rand_pool; - // typedef RandWrap rand_type; + RandPoolWrap rand_pool; + typedef RandWrap rand_type; typename ArrayTypes::tdual_ffloat_2d k_cutsq; typename ArrayTypes::t_ffloat_2d d_cutsq; -- GitLab From e4b544f934bd816a31759b654f3c26c9ecf36ebd Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sun, 26 Feb 2017 17:53:45 -0500 Subject: [PATCH 166/337] Make pair_dpd_fdt_energy's random seed public so fix_shardlow can use it. --- src/USER-DPD/pair_dpd_fdt_energy.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-DPD/pair_dpd_fdt_energy.h b/src/USER-DPD/pair_dpd_fdt_energy.h index f8303d4854..dce39f83f0 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.h +++ b/src/USER-DPD/pair_dpd_fdt_energy.h @@ -46,11 +46,11 @@ class PairDPDfdtEnergy : public Pair { double **sigma,**kappa; double *duCond,*duMech; + int seed; class RanMars *random; protected: double cut_global; - int seed; bool splitFDT_flag; bool a0_is_zero; -- GitLab From 3eba3e5a1b756e4a125e0f88201a2c54399e42ce Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sun, 26 Feb 2017 17:57:13 -0500 Subject: [PATCH 167/337] USER-DPD Kokkos: for deterministic results, serialize bin_atoms() for now. --- src/KOKKOS/nbin_ssa_kokkos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index ebd07752b0..98ec638be9 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -140,7 +140,7 @@ void NBinSSAKokkos::bin_atoms() subhi_[1] = domain->subhi[1]; subhi_[2] = domain->subhi[2]; - Kokkos::parallel_for(Kokkos::RangePolicy(atom->nlocal,atom->nlocal+atom->nghost), KOKKOS_LAMBDA (const int i) { + Kokkos::parallel_for(Kokkos::RangePolicy(atom->nlocal,atom->nlocal+atom->nghost), KOKKOS_LAMBDA (const int i) { const int iAIR = coord2ssaAIR(x(i, 0), x(i, 1), x(i, 2)); if (iAIR > 0) { // include only ghost atoms in an AIR const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); @@ -188,7 +188,7 @@ void NBinSSAKokkos::bin_atoms() NPairSSAKokkosBinAtomsFunctor f(*this); - Kokkos::parallel_for(atom->nlocal, f); + Kokkos::parallel_for(Kokkos::RangePolicy(0, atom->nlocal), f); DeviceType::fence(); deep_copy(h_resize, d_resize); -- GitLab From a5507b291d3d78d93136053d530f8be51d57728c Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sun, 26 Feb 2017 18:00:20 -0500 Subject: [PATCH 168/337] USER-DPD Kokkos: give each workItem index a unique instance of RanMars Makes fix_shardlow_kokkos deterministic across runs and thread count. --- src/KOKKOS/fix_shardlow_kokkos.cpp | 27 ++++++++++++++++++++++++++- src/KOKKOS/fix_shardlow_kokkos.h | 6 ++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index e82991bcba..a5e02f3dd8 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -90,7 +90,12 @@ FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **a // if(k_pairDPDE){ comm_forward = 3; comm_reverse = 5; +#ifdef USE_RAND_MARS + maxRNG = 0; + pp_random = NULL; +#else p_rand_pool = &(k_pairDPDE->rand_pool); +#endif // } else { // comm_forward = 3; // comm_reverse = 3; @@ -119,6 +124,11 @@ template FixShardlowKokkos::~FixShardlowKokkos() { ghostmax = 0; + if (pp_random) { + for (int i = 1; i < maxRNG; ++i) delete pp_random[i]; + delete[] pp_random; + pp_random = NULL; + } } /* ---------------------------------------------------------------------- */ @@ -418,7 +428,7 @@ void FixShardlowKokkos::ssa_update_dpde( ) { #ifdef USE_RAND_MARS - class RanMars *pRNG = k_pairDPDE->random; + class RanMars *pRNG = pp_random[id]; #else rand_type rand_gen = p_rand_pool->get_state(); #endif @@ -618,6 +628,21 @@ void FixShardlowKokkos::initial_integrate(int vflag) ssa_gitemLoc = np_ssa->ssa_gitemLoc; ssa_gitemLen = np_ssa->ssa_gitemLen; + int maxWorkItemCt = (int) ssa_itemLoc.dimension_1(); + if (maxWorkItemCt > maxRNG) { + if (pp_random) { + for (int i = 1; i < maxRNG; ++i) delete pp_random[i]; + delete[] pp_random; + pp_random = NULL; + } + maxRNG = maxWorkItemCt; + pp_random = new RanMars*[maxRNG]; + for (int i = 1; i < maxRNG; ++i) { + pp_random[i] = new RanMars(lmp, k_pairDPDE->seed + comm->me + comm->nprocs*i); + } + pp_random[0] = k_pairDPDE->random; + } + #ifdef DEBUG_PAIR_CT for (int i = 0; i < 2; ++i) for (int j = 0; j < 3; ++j) diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index f71ca1ce11..95e8add64a 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -75,8 +75,10 @@ class FixShardlowKokkos : public FixShardlow { // Kokkos::Random_XorShift64_Pool rand_pool; // typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; - RandPoolWrap *p_rand_pool; - typedef RandWrap rand_type; +// RandPoolWrap *p_rand_pool; +// typedef RandWrap rand_type; + int maxRNG; + class RanMars **pp_random; Kokkos::DualView k_params; typename Kokkos::DualView Date: Tue, 28 Feb 2017 12:49:11 -0500 Subject: [PATCH 169/337] USER-DPD Kokkos: Add "#ifdef DPD_USE_RAN_MARS" toggle Also, initialize the rand_pool with a seed in init_style() --- src/KOKKOS/fix_shardlow_kokkos.cpp | 14 ++++++++----- src/KOKKOS/fix_shardlow_kokkos.h | 11 +++++------ src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 13 +++++++++++- src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 24 +++++++++++++++++++---- 4 files changed, 46 insertions(+), 16 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index a5e02f3dd8..9bac6250da 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -90,7 +90,7 @@ FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **a // if(k_pairDPDE){ comm_forward = 3; comm_reverse = 5; -#ifdef USE_RAND_MARS +#ifdef DPD_USE_RAN_MARS maxRNG = 0; pp_random = NULL; #else @@ -124,11 +124,13 @@ template FixShardlowKokkos::~FixShardlowKokkos() { ghostmax = 0; +#ifdef DPD_USE_RAN_MARS if (pp_random) { for (int i = 1; i < maxRNG; ++i) delete pp_random[i]; delete[] pp_random; pp_random = NULL; } +#endif } /* ---------------------------------------------------------------------- */ @@ -427,7 +429,7 @@ void FixShardlowKokkos::ssa_update_dpde( int start_ii, int count, int id ) { -#ifdef USE_RAND_MARS +#ifdef DPD_USE_RAN_MARS class RanMars *pRNG = pp_random[id]; #else rand_type rand_gen = p_rand_pool->get_state(); @@ -505,7 +507,7 @@ void FixShardlowKokkos::ssa_update_dpde( double halfsigma_ij = STACKPARAMS?m_params[itype][jtype].halfsigma:params(itype,jtype).halfsigma; double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; -#ifdef USE_RAND_MARS +#ifdef DPD_USE_RAN_MARS double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * pRNG->gaussian(); #else double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * rand_gen.normal(); @@ -518,7 +520,7 @@ void FixShardlowKokkos::ssa_update_dpde( // Compute uCond double kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa; double alpha_ij = STACKPARAMS?m_params[itype][jtype].alpha:params(itype,jtype).alpha; -#ifdef USE_RAND_MARS +#ifdef DPD_USE_RAN_MARS double del_uCond = alpha_ij*wr*dtsqrt * pRNG->gaussian(); #else double del_uCond = alpha_ij*wr*dtsqrt * rand_gen.normal(); @@ -598,7 +600,7 @@ void FixShardlowKokkos::ssa_update_dpde( ii++; } -#ifndef USE_RAND_MARS +#ifndef DPD_USE_RAN_MARS p_rand_pool->free_state(rand_gen); #endif } @@ -628,6 +630,7 @@ void FixShardlowKokkos::initial_integrate(int vflag) ssa_gitemLoc = np_ssa->ssa_gitemLoc; ssa_gitemLen = np_ssa->ssa_gitemLen; +#ifdef DPD_USE_RAN_MARS int maxWorkItemCt = (int) ssa_itemLoc.dimension_1(); if (maxWorkItemCt > maxRNG) { if (pp_random) { @@ -642,6 +645,7 @@ void FixShardlowKokkos::initial_integrate(int vflag) } pp_random[0] = k_pairDPDE->random; } +#endif #ifdef DEBUG_PAIR_CT for (int i = 0; i < 2; ++i) diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index 95e8add64a..011c16dc60 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -70,15 +70,14 @@ class FixShardlowKokkos : public FixShardlow { protected: // class PairDPDfdt *pairDPD; PairDPDfdtEnergyKokkos *k_pairDPDE; -// Kokkos::Random_XorShift64_Pool *p_rand_pool; -// Kokkos::Random_XorShift64_Pool rand_pool; -// typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; - -// RandPoolWrap *p_rand_pool; -// typedef RandWrap rand_type; +#ifdef DPD_USE_RAN_MARS int maxRNG; class RanMars **pp_random; +#else + Kokkos::Random_XorShift64_Pool *p_rand_pool; + typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; +#endif Kokkos::DualView k_params; typename Kokkos::DualView PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : - PairDPDfdtEnergy(lmp),rand_pool(12345 /* not actually used, seed + comm->me */, lmp) + PairDPDfdtEnergy(lmp), +#ifdef DPD_USE_RAN_MARS + rand_pool(0 /* unused */, lmp) +#else + rand_pool() +#endif { atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; @@ -68,7 +73,9 @@ PairDPDfdtEnergyKokkos::~PairDPDfdtEnergyKokkos() memory->destroy_kokkos(k_cutsq,cutsq); +#ifdef DPD_USE_RAN_MARS rand_pool.destroy(); +#endif } /* ---------------------------------------------------------------------- @@ -101,7 +108,11 @@ void PairDPDfdtEnergyKokkos::init_style() error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); } +#ifdef DPD_USE_RAN_MARS rand_pool.init(random,seed); +#else + rand_pool.init(seed + comm->me,DeviceType::max_hardware_threads()); +#endif } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index e065d71d3e..a32539242a 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -22,11 +22,25 @@ PairStyle(dpd/fdt/energy/kk/host,PairDPDfdtEnergyKokkos) #ifndef LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H #define LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H + +#ifndef ALLOW_NON_DETERMINISTIC_DPD +#ifdef KOKKOS_HAVE_CUDA +//FIXME print some warning +#endif +#ifndef DPD_USE_RAN_MARS +#define DPD_USE_RAN_MARS +#endif +#endif + + #include "pair_dpd_fdt_energy.h" #include "pair_kokkos.h" #include "kokkos_type.h" -#include "Kokkos_Random.hpp" +#ifdef DPD_USE_RAN_MARS #include "rand_pool_wrap_kokkos.h" +#else +#include "Kokkos_Random.hpp" +#endif namespace LAMMPS_NS { @@ -89,11 +103,13 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { DAT::tdual_efloat_1d k_duCond,k_duMech; - // Kokkos::Random_XorShift64_Pool rand_pool; - // typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; - +#ifdef DPD_USE_RAN_MARS RandPoolWrap rand_pool; typedef RandWrap rand_type; +#else + Kokkos::Random_XorShift64_Pool rand_pool; + typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; +#endif typename ArrayTypes::tdual_ffloat_2d k_cutsq; typename ArrayTypes::t_ffloat_2d d_cutsq; -- GitLab From b26a434a502d953b3b7fd2772a4bbc5a5091f468 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Tue, 28 Feb 2017 12:53:56 -0500 Subject: [PATCH 170/337] USER-DPD Kokkos: Add "#ifdef ALLOW_NON_DETERMINISTIC_SSA" toggle SSA atom binning algorithm was adjusted to do as much work in parallel while preserving deterministic behavior. The final step is done serially to preserve deterministic behavior. An alternative would be to sort the contents of the bins so that they are always in the same order. --- src/KOKKOS/nbin_ssa_kokkos.cpp | 165 +++++++++++++++++++-------------- src/KOKKOS/nbin_ssa_kokkos.h | 65 +++++++++++++ 2 files changed, 160 insertions(+), 70 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index 98ec638be9..53f3f2fc80 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -115,97 +115,104 @@ void NBinSSAKokkos::bin_atoms() last_bin = update->ntimestep; int i; + int nlocal = atom->nlocal; + int nghost = atom->nghost; + int nall = nlocal + nghost; + + atomKK->sync(ExecutionSpaceFromDevice::space,X_MASK); + x = atomKK->k_x.view(); + + sublo_[0] = domain->sublo[0]; + sublo_[1] = domain->sublo[1]; + sublo_[2] = domain->sublo[2]; + subhi_[0] = domain->subhi[0]; + subhi_[1] = domain->subhi[1]; + subhi_[2] = domain->subhi[2]; + + bboxlo_[0] = bboxlo[0]; bboxlo_[1] = bboxlo[1]; bboxlo_[2] = bboxlo[2]; + bboxhi_[0] = bboxhi[0]; bboxhi_[1] = bboxhi[1]; bboxhi_[2] = bboxhi[2]; + + k_binID = DAT::tdual_int_1d("NBinSSAKokkos::binID",nall); + binID = k_binID.view(); + + // find each local atom's binID + { + atoms_per_bin = 0; + NPairSSAKokkosBinIDAtomsFunctor f(*this); + Kokkos::parallel_reduce(nlocal, f, atoms_per_bin); + } + deep_copy(h_lbinxlo, d_lbinxlo); + deep_copy(h_lbinylo, d_lbinylo); + deep_copy(h_lbinzlo, d_lbinzlo); + deep_copy(h_lbinxhi, d_lbinxhi); + deep_copy(h_lbinyhi, d_lbinyhi); + deep_copy(h_lbinzhi, d_lbinzhi); - // bin the ghost atoms - h_resize() = 1; - while(h_resize() > 0) { - h_resize() = 0; - deep_copy(d_resize, h_resize); + // find each ghost's binID (AIR number) + { + for (int i = 0; i < 8; i++) k_gbincount.h_view(i) = 0; + k_gbincount.modify(); + k_gbincount.sync(); + DeviceType::fence(); // FIXME? + ghosts_per_gbin = 0; + NPairSSAKokkosBinIDGhostsFunctor f(*this); + Kokkos::parallel_reduce(Kokkos::RangePolicy(nlocal,nall), f, ghosts_per_gbin); + } - for (int i = 0; i < 8; i++) { - k_gbincount.h_view(i) = 0; + // actually bin the ghost atoms + { + if(ghosts_per_gbin > (int) gbins.dimension_1()) { + k_gbins = DAT::tdual_int_2d("gbins", 8, ghosts_per_gbin); + gbins = k_gbins.view(); } + for (int i = 0; i < 8; i++) k_gbincount.h_view(i) = 0; k_gbincount.modify(); k_gbincount.sync(); DeviceType::fence(); // FIXME? - atomKK->sync(ExecutionSpaceFromDevice::space,X_MASK); - x = atomKK->k_x.view(); - - // I don't think these two lines need to be repeated here... - TIM 20170216 - sublo_[0] = domain->sublo[0]; - sublo_[1] = domain->sublo[1]; - sublo_[2] = domain->sublo[2]; - subhi_[0] = domain->subhi[0]; - subhi_[1] = domain->subhi[1]; - subhi_[2] = domain->subhi[2]; - - Kokkos::parallel_for(Kokkos::RangePolicy(atom->nlocal,atom->nlocal+atom->nghost), KOKKOS_LAMBDA (const int i) { - const int iAIR = coord2ssaAIR(x(i, 0), x(i, 1), x(i, 2)); + Kokkos::parallel_for( +#ifdef ALLOW_NON_DETERMINISTIC_SSA + Kokkos::RangePolicy(nlocal,nall) +#else + Kokkos::RangePolicy(nlocal,nall) +#endif + , KOKKOS_LAMBDA (const int i) { + const int iAIR = binID(i); if (iAIR > 0) { // include only ghost atoms in an AIR const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); - if(ac < (int) gbins.dimension_1()) { - gbins(iAIR, ac) = i; - } else { - d_resize() = 1; - } + gbins(iAIR, ac) = i; } }); DeviceType::fence(); - - deep_copy(h_resize, d_resize); - if(h_resize()) { - k_gbincount.modify(); - k_gbincount.sync(); - for (i = 1; i < 8; i++) { - if (k_gbincount.h_view(i) > ghosts_per_gbin) { - ghosts_per_gbin = k_gbincount.h_view(i); - } - } - k_gbins = DAT::tdual_int_2d("gbins", 8, ghosts_per_gbin); - gbins = k_gbins.view(); - } } c_gbins = gbins; // gbins won't change until the next bin_atoms - // bin the local atoms - h_resize() = 1; - while(h_resize() > 0) { - h_resize() = 0; - deep_copy(d_resize, h_resize); - + // actually bin the local atoms + { + if ((mbins > (int) bins.dimension_0()) || + (atoms_per_bin > (int) bins.dimension_1())) { + k_bins = DAT::tdual_int_2d("bins", mbins, atoms_per_bin); + bins = k_bins.view(); + } MemsetZeroFunctor f_zero; f_zero.ptr = (void*) k_bincount.view().ptr_on_device(); Kokkos::parallel_for(mbins, f_zero); DeviceType::fence(); - atomKK->sync(ExecutionSpaceFromDevice::space,X_MASK); - x = atomKK->k_x.view(); - - // I don't think these two lines need to be repeated here... - TIM 20170216 - bboxlo_[0] = bboxlo[0]; bboxlo_[1] = bboxlo[1]; bboxlo_[2] = bboxlo[2]; - bboxhi_[0] = bboxhi[0]; bboxhi_[1] = bboxhi[1]; bboxhi_[2] = bboxhi[2]; - NPairSSAKokkosBinAtomsFunctor f(*this); - - Kokkos::parallel_for(Kokkos::RangePolicy(0, atom->nlocal), f); +#ifdef ALLOW_NON_DETERMINISTIC_SSA + Kokkos::parallel_for(nlocal, f); +#else + Kokkos::parallel_for(Kokkos::RangePolicy(0, nlocal), f); +#endif DeviceType::fence(); - deep_copy(h_resize, d_resize); - if(h_resize()) { - - atoms_per_bin += 16; - k_bins = DAT::tdual_int_2d("bins", mbins, atoms_per_bin); - bins = k_bins.view(); - } } - deep_copy(h_lbinxlo, d_lbinxlo); - deep_copy(h_lbinylo, d_lbinylo); - deep_copy(h_lbinzlo, d_lbinzlo); - deep_copy(h_lbinxhi, d_lbinxhi); - deep_copy(h_lbinyhi, d_lbinyhi); - deep_copy(h_lbinzhi, d_lbinzhi); c_bins = bins; // bins won't change until the next bin_atoms + +//now dispose of the k_binID array + k_binID = DAT::tdual_int_1d("NBinSSAKokkos::binID",0); + binID = k_binID.view(); } /* ---------------------------------------------------------------------- */ @@ -213,9 +220,19 @@ void NBinSSAKokkos::bin_atoms() template KOKKOS_INLINE_FUNCTION void NBinSSAKokkos::binAtomsItem(const int &i) const +{ + const int ibin = binID(i); + const int ac = Kokkos::atomic_fetch_add(&(bincount[ibin]), (int)1); + bins(ibin, ac) = i; +} + +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::binIDAtomsItem(const int &i, int &update) const { int loc[3]; const int ibin = coord2bin(x(i, 0), x(i, 1), x(i, 2), &(loc[0])); + binID(i) = ibin; // Find the bounding box of the local atoms in the bins if (loc[0] < d_lbinxlo()) Kokkos::atomic_fetch_min(&d_lbinxlo(),loc[0]); @@ -226,10 +243,18 @@ void NBinSSAKokkos::binAtomsItem(const int &i) const if (loc[2] >= d_lbinzhi()) Kokkos::atomic_fetch_max(&d_lbinzhi(),loc[2] + 1); const int ac = Kokkos::atomic_fetch_add(&(bincount[ibin]), (int)1); - if(ac < (int) bins.dimension_1()) { - bins(ibin, ac) = i; - } else { - d_resize() = 1; + if (update <= ac) update = ac + 1; +} + +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::binIDGhostsItem(const int &i, int &update) const +{ + const int iAIR = coord2ssaAIR(x(i, 0), x(i, 1), x(i, 2)); + binID(i) = iAIR; + if (iAIR > 0) { // include only ghost atoms in an AIR + const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); + if (update <= ac) update = ac + 1; } } diff --git a/src/KOKKOS/nbin_ssa_kokkos.h b/src/KOKKOS/nbin_ssa_kokkos.h index 488c1034f5..69f05c9304 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.h +++ b/src/KOKKOS/nbin_ssa_kokkos.h @@ -41,6 +41,11 @@ class NBinSSAKokkos : public NBinStandard { void bin_atoms_setup(int); void bin_atoms(); + // temporary array to hold the binID for each atom + DAT::tdual_int_1d k_binID; + typename AT::t_int_1d binID; + typename AT::t_int_1d_const c_binID; + int atoms_per_bin; DAT::tdual_int_1d k_bincount; DAT::tdual_int_2d k_bins; @@ -77,6 +82,12 @@ class NBinSSAKokkos : public NBinStandard { KOKKOS_INLINE_FUNCTION void binAtomsItem(const int &i) const; + KOKKOS_INLINE_FUNCTION + void binIDAtomsItem(const int &i, int &update) const; + + KOKKOS_INLINE_FUNCTION + void binIDGhostsItem(const int &i, int &update) const; + /* ---------------------------------------------------------------------- convert atom coords into the ssa active interaction region number ------------------------------------------------------------------------- */ @@ -165,6 +176,60 @@ struct NPairSSAKokkosBinAtomsFunctor { } }; +template +struct NPairSSAKokkosBinIDAtomsFunctor { + typedef DeviceType device_type; + typedef int value_type; + + const NBinSSAKokkos c; + + NPairSSAKokkosBinIDAtomsFunctor(const NBinSSAKokkos &_c): + c(_c) {}; + ~NPairSSAKokkosBinIDAtomsFunctor() {} + KOKKOS_INLINE_FUNCTION + void operator() (const int & i, value_type& update) const { + c.binIDAtomsItem(i, update); + } + + KOKKOS_INLINE_FUNCTION + void join (volatile value_type& dst, + const volatile value_type& src) const { + if (dst < src) dst = src; + } + + KOKKOS_INLINE_FUNCTION + void init (value_type& dst) const { + dst = INT_MIN; + } +}; + +template +struct NPairSSAKokkosBinIDGhostsFunctor { + typedef DeviceType device_type; + typedef int value_type; + + const NBinSSAKokkos c; + + NPairSSAKokkosBinIDGhostsFunctor(const NBinSSAKokkos &_c): + c(_c) {}; + ~NPairSSAKokkosBinIDGhostsFunctor() {} + KOKKOS_INLINE_FUNCTION + void operator() (const int & i, value_type& update) const { + c.binIDGhostsItem(i, update); + } + + KOKKOS_INLINE_FUNCTION + void join (volatile value_type& dst, + const volatile value_type& src) const { + if (dst < src) dst = src; + } + + KOKKOS_INLINE_FUNCTION + void init (value_type& dst) const { + dst = INT_MIN; + } +}; + } #endif -- GitLab From 0982331c71fbb9d9420e26c47dfad1a0392fd028 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Wed, 1 Mar 2017 09:49:24 -0500 Subject: [PATCH 171/337] USER-DPD Kokkos: replicate 7a593c2f bugfix to pair_table_rx_kokkos.cpp --- src/KOKKOS/pair_table_rx_kokkos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 58108c9308..2a1ee2c0b1 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -984,7 +984,7 @@ void PairTableRXKokkos::coeff(int narg, char **arg) nspecies = atom->nspecies_dpd; if(nspecies==0) error->all(FLERR,"There are no rx species specified."); int n; - n = strlen(arg[3]) + 1; + n = strlen(arg[4]) + 1; site1 = new char[n]; strcpy(site1,arg[4]); @@ -995,7 +995,7 @@ void PairTableRXKokkos::coeff(int narg, char **arg) if (ispecies == nspecies && strcmp(site1,"1fluid") != 0) error->all(FLERR,"Site1 name not recognized in pair coefficients"); - n = strlen(arg[4]) + 1; + n = strlen(arg[5]) + 1; site2 = new char[n]; strcpy(site2,arg[5]); -- GitLab From 6e26358ec3eade9bb35f4dc1ad48b5374cec417d Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Wed, 1 Mar 2017 11:46:26 -0500 Subject: [PATCH 172/337] lib kokkos bugfix: on a CUDA host, the random state wasn't preserved. Random_XorShift*_Pool::free_state() has two purposes: 1) update the state value kept in the pool 2) unlock the state For a CUDA host thread, ONLY skip step 2, not both. --- lib/kokkos/algorithms/src/Kokkos_Random.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index d376173bf1..2fb6b553c2 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -1204,8 +1204,8 @@ Random_XorShift64 Random_XorShift64_Pool::get_state( template<> KOKKOS_INLINE_FUNCTION void Random_XorShift64_Pool::free_state(const Random_XorShift64 &state) const { -#ifdef __CUDA_ARCH__ state_(state.state_idx_) = state.state_; +#ifdef __CUDA_ARCH__ locks_(state.state_idx_) = 0; return; #endif @@ -1240,9 +1240,9 @@ Random_XorShift1024 Random_XorShift1024_Pool::get_st template<> KOKKOS_INLINE_FUNCTION void Random_XorShift1024_Pool::free_state(const Random_XorShift1024 &state) const { -#ifdef __CUDA_ARCH__ for(int i=0; i<16; i++) state_(state.state_idx_,i) = state.state_[i]; +#ifdef __CUDA_ARCH__ locks_(state.state_idx_) = 0; return; #endif -- GitLab From 641bf72f2030f78d1ecfbbedc60704f4215d9662 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Wed, 1 Mar 2017 11:52:33 -0500 Subject: [PATCH 173/337] lib kokkos: Enable deterministic use of Random_XorShift*_Pool. Add support for lock-free and deterministic use of Random_XorShift*_Pool by giving state_idx selection and lock responsibility up to the application. Done by an overload of get_state() to take sate_idx as an argument that the appplication guarantees is concurrently unique and within the range of num_states that the application passed to init(). In other words, this allows the RNG state to be associated with some application specific index, rather than a runtime arbitrary thread ID, and thus the application can control which work is performed using which RNG in a deterministic manner, regardless of which thread performs the work. --- lib/kokkos/algorithms/src/Kokkos_Random.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index 2fb6b553c2..a0d666183c 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -752,6 +752,12 @@ namespace Kokkos { return Random_XorShift64(state_(i),i); } + // NOTE: state_idx MUST be unique and less than num_states + KOKKOS_INLINE_FUNCTION + Random_XorShift64 get_state(const int state_idx) const { + return Random_XorShift64(state_(state_idx),state_idx); + } + KOKKOS_INLINE_FUNCTION void free_state(const Random_XorShift64& state) const { state_(state.state_idx_) = state.state_; @@ -1006,6 +1012,12 @@ namespace Kokkos { return Random_XorShift1024(state_,p_(i),i); }; + // NOTE: state_idx MUST be unique and less than num_states + KOKKOS_INLINE_FUNCTION + Random_XorShift1024 get_state(const int state_idx) const { + return Random_XorShift1024(state_,p_(state_idx),state_idx); + } + KOKKOS_INLINE_FUNCTION void free_state(const Random_XorShift1024& state) const { for(int i = 0; i<16; i++) -- GitLab From 268e855a151360861f7b6059414356af1323e997 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Wed, 1 Mar 2017 14:14:29 -0500 Subject: [PATCH 174/337] USER-DPD Kokkos: bugfix for the rare case were the SSA ghost processing has more parallelism than for the locals. --- src/KOKKOS/fix_shardlow_kokkos.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 9bac6250da..8b6432e2dc 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -50,7 +50,6 @@ #include "neighbor.h" #include "neigh_list_kokkos.h" #include "neigh_request.h" -#include "random_mars.h" #include "memory.h" #include "domain.h" #include "modify.h" @@ -632,6 +631,9 @@ void FixShardlowKokkos::initial_integrate(int vflag) #ifdef DPD_USE_RAN_MARS int maxWorkItemCt = (int) ssa_itemLoc.dimension_1(); + if (maxWorkItemCt < (int) ssa_gitemLoc.dimension_1()) { + maxWorkItemCt = (int) ssa_gitemLoc.dimension_1(); + } if (maxWorkItemCt > maxRNG) { if (pp_random) { for (int i = 1; i < maxRNG; ++i) delete pp_random[i]; -- GitLab From ed089c34cfda77885d235ade1a285d30109ce157 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Wed, 1 Mar 2017 14:18:14 -0500 Subject: [PATCH 175/337] USER-DPD Kokkos: Now use the deterministic Random_XorShift64() for SSA --- src/KOKKOS/fix_shardlow_kokkos.cpp | 49 ++++++++++++++--------- src/KOKKOS/fix_shardlow_kokkos.h | 7 +++- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 1 - src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 17 ++++---- 4 files changed, 44 insertions(+), 30 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 8b6432e2dc..996f37257d 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -89,11 +89,9 @@ FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **a // if(k_pairDPDE){ comm_forward = 3; comm_reverse = 5; -#ifdef DPD_USE_RAN_MARS maxRNG = 0; +#ifdef DPD_USE_RAN_MARS pp_random = NULL; -#else - p_rand_pool = &(k_pairDPDE->rand_pool); #endif // } else { // comm_forward = 3; @@ -281,10 +279,14 @@ void FixShardlowKokkos::setup_pre_neighbor() template template void FixShardlowKokkos::ssa_update_dpd( - int start_ii, int count + int start_ii, int count, int id ) { - rand_type rand_gen = p_rand_pool->get_state(); +#ifdef DPD_USE_RAN_MARS + class RanMars *pRNG = pp_random[id]; +#else + rand_type rand_gen = rand_pool.get_state(id); +#endif const double theta_ij_inv = 1.0/k_pairDPD->temperature; // independent of i,j const double boltz_inv = 1.0/force->boltz; @@ -350,7 +352,12 @@ void FixShardlowKokkos::ssa_update_dpd( double halfsigma_ij = STACKPARAMS?m_params[itype][jtype].halfsigma:params(itype,jtype).halfsigma; double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; - double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * pRNG->gaussian(); + double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * +#ifdef DPD_USE_RAN_MARS + pRNG->gaussian(); +#else + rand_gen.normal(); +#endif const double mass_j = masses(massPerI ? j : jtype); double massinv_j = 1.0 / mass_j; @@ -412,7 +419,9 @@ void FixShardlowKokkos::ssa_update_dpd( v(i, 2) = vzi; } - p_rand_pool->free_state(rand_gen); +#ifndef DPD_USE_RAN_MARS + rand_pool.free_state(rand_gen); +#endif } #endif @@ -431,7 +440,7 @@ void FixShardlowKokkos::ssa_update_dpde( #ifdef DPD_USE_RAN_MARS class RanMars *pRNG = pp_random[id]; #else - rand_type rand_gen = p_rand_pool->get_state(); + rand_type rand_gen = rand_pool.get_state(id); #endif const double boltz_inv = 1.0/force->boltz; @@ -506,10 +515,11 @@ void FixShardlowKokkos::ssa_update_dpde( double halfsigma_ij = STACKPARAMS?m_params[itype][jtype].halfsigma:params(itype,jtype).halfsigma; double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; + double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * #ifdef DPD_USE_RAN_MARS - double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * pRNG->gaussian(); + pRNG->gaussian(); #else - double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * rand_gen.normal(); + rand_gen.normal(); #endif const double mass_j = masses(massPerI ? j : jtype); @@ -519,10 +529,11 @@ void FixShardlowKokkos::ssa_update_dpde( // Compute uCond double kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa; double alpha_ij = STACKPARAMS?m_params[itype][jtype].alpha:params(itype,jtype).alpha; + double del_uCond = alpha_ij*wr*dtsqrt * #ifdef DPD_USE_RAN_MARS - double del_uCond = alpha_ij*wr*dtsqrt * pRNG->gaussian(); + pRNG->gaussian(); #else - double del_uCond = alpha_ij*wr*dtsqrt * rand_gen.normal(); + rand_gen.normal(); #endif del_uCond += kappa_ij*(theta_i_inv - theta_j_inv)*wdt; @@ -600,7 +611,7 @@ void FixShardlowKokkos::ssa_update_dpde( } #ifndef DPD_USE_RAN_MARS - p_rand_pool->free_state(rand_gen); + rand_pool.free_state(rand_gen); #endif } @@ -629,25 +640,27 @@ void FixShardlowKokkos::initial_integrate(int vflag) ssa_gitemLoc = np_ssa->ssa_gitemLoc; ssa_gitemLen = np_ssa->ssa_gitemLen; -#ifdef DPD_USE_RAN_MARS int maxWorkItemCt = (int) ssa_itemLoc.dimension_1(); if (maxWorkItemCt < (int) ssa_gitemLoc.dimension_1()) { maxWorkItemCt = (int) ssa_gitemLoc.dimension_1(); } if (maxWorkItemCt > maxRNG) { +#ifdef DPD_USE_RAN_MARS if (pp_random) { for (int i = 1; i < maxRNG; ++i) delete pp_random[i]; delete[] pp_random; pp_random = NULL; } - maxRNG = maxWorkItemCt; - pp_random = new RanMars*[maxRNG]; - for (int i = 1; i < maxRNG; ++i) { + pp_random = new RanMars*[maxWorkItemCt]; + for (int i = 1; i < maxWorkItemCt; ++i) { pp_random[i] = new RanMars(lmp, k_pairDPDE->seed + comm->me + comm->nprocs*i); } pp_random[0] = k_pairDPDE->random; - } +#else + rand_pool.init(k_pairDPDE->seed + comm->me, maxWorkItemCt); #endif + maxRNG = maxWorkItemCt; + } #ifdef DEBUG_PAIR_CT for (int i = 0; i < 2; ++i) diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index 011c16dc60..c4711f5b8b 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -71,11 +71,14 @@ class FixShardlowKokkos : public FixShardlow { // class PairDPDfdt *pairDPD; PairDPDfdtEnergyKokkos *k_pairDPDE; -#ifdef DPD_USE_RAN_MARS int maxRNG; +#ifdef DPD_USE_RAN_MARS class RanMars **pp_random; +#elif defined(DPD_USE_Random_XorShift1024) + Kokkos::Random_XorShift1024_Pool rand_pool; + typedef typename Kokkos::Random_XorShift1024_Pool::generator_type rand_type; #else - Kokkos::Random_XorShift64_Pool *p_rand_pool; + Kokkos::Random_XorShift64_Pool rand_pool; typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; #endif diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index e534f97391..ba61185a57 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -28,7 +28,6 @@ #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" -#include "random_mars.h" #include "memory.h" #include "modify.h" #include "pair_dpd_fdt_energy_kokkos.h" diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index a32539242a..74fe5a63b8 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -22,17 +22,13 @@ PairStyle(dpd/fdt/energy/kk/host,PairDPDfdtEnergyKokkos) #ifndef LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H #define LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H +//#define DPD_USE_RAN_MARS +#define DPD_USE_Random_XorShift64 -#ifndef ALLOW_NON_DETERMINISTIC_DPD -#ifdef KOKKOS_HAVE_CUDA -//FIXME print some warning -#endif -#ifndef DPD_USE_RAN_MARS -#define DPD_USE_RAN_MARS -#endif +#if !defined(DPD_USE_RAN_MARS) && !defined(DPD_USE_Random_XorShift64) && !defined(Random_XorShift1024) +#define DPD_USE_Random_XorShift64 #endif - #include "pair_dpd_fdt_energy.h" #include "pair_kokkos.h" #include "kokkos_type.h" @@ -106,9 +102,12 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { #ifdef DPD_USE_RAN_MARS RandPoolWrap rand_pool; typedef RandWrap rand_type; -#else +#elif defined(DPD_USE_Random_XorShift64) Kokkos::Random_XorShift64_Pool rand_pool; typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; +#elif defined(DPD_USE_Random_XorShift1024) + Kokkos::Random_XorShift1024_Pool rand_pool; + typedef typename Kokkos::Random_XorShift1024_Pool::generator_type rand_type; #endif typename ArrayTypes::tdual_ffloat_2d k_cutsq; -- GitLab From 8210b25fb848c15484a2dd4dd46af2c933e28bd1 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Wed, 1 Mar 2017 15:34:24 -0500 Subject: [PATCH 176/337] USER-DPD Kokkos: replicate 9a560b90 bugfix to atom_vec_dpd_kokkos.cpp --- src/KOKKOS/atom_vec_dpd_kokkos.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index 820f11c215..146ae8f7dd 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -1048,8 +1048,6 @@ int AtomVecDPDKokkos::pack_comm_hybrid(int n, int *list, double *buf) buf[m++] = h_uCond[j]; buf[m++] = h_uMech[j]; buf[m++] = h_uChem[j]; - buf[m++] = h_uCG[j]; - buf[m++] = h_uCGnew[j]; } return m; } @@ -1245,8 +1243,6 @@ int AtomVecDPDKokkos::unpack_comm_hybrid(int n, int first, double *buf) h_uCond(i) = buf[m++]; h_uMech(i) = buf[m++]; h_uChem(i) = buf[m++]; - h_uCG(i) = buf[m++]; - h_uCGnew(i) = buf[m++]; } modified(Host,DPDTHETA_MASK | UCOND_MASK | -- GitLab From d95fbf3a5e4afb3aaef5d9d931893a06dd609d94 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Thu, 2 Mar 2017 15:01:41 -0500 Subject: [PATCH 177/337] USER-DPD Kokkos: use Random_XorShift64() by default, but allow overrides --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h index 74fe5a63b8..fcf4b33a7a 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -22,9 +22,6 @@ PairStyle(dpd/fdt/energy/kk/host,PairDPDfdtEnergyKokkos) #ifndef LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H #define LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H -//#define DPD_USE_RAN_MARS -#define DPD_USE_Random_XorShift64 - #if !defined(DPD_USE_RAN_MARS) && !defined(DPD_USE_Random_XorShift64) && !defined(Random_XorShift1024) #define DPD_USE_Random_XorShift64 #endif -- GitLab From 27d2e9bf56f04fbb598443b84fb1c8f18f53a9aa Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Thu, 2 Mar 2017 15:03:33 -0500 Subject: [PATCH 178/337] USER-DPD: add npair_halffull_newton_ssa to Purge.list With the new SSA neighbor list, half from full can't work, and will break compiles if the old files are in the src directory --- src/Purge.list | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Purge.list b/src/Purge.list index 554c5df824..772961bbdf 100644 --- a/src/Purge.list +++ b/src/Purge.list @@ -16,6 +16,9 @@ style_region.h style_neigh_bin.h style_neigh_pair.h style_neigh_stencil.h +# deleted on 01 Mar 2017 +npair_halffull_newton_ssa.cpp +npair_halffull_newton_ssa.h # deleted on ## XXX 2016 accelerator_intel.h neigh_bond.cpp -- GitLab From 3820c5881d5c8af44baa45c12771a7971fb668ca Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 2 Mar 2017 14:02:49 -0700 Subject: [PATCH 179/337] Adding fix_wall_lj93_kokkos --- src/KOKKOS/Install.sh | 2 + src/KOKKOS/fix_wall_lj93_kokkos.cpp | 104 ++++++++++++++++++++++++++++ src/KOKKOS/fix_wall_lj93_kokkos.h | 83 ++++++++++++++++++++++ src/fix_wall.cpp | 2 + src/fix_wall_lj93.h | 4 +- 5 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 src/KOKKOS/fix_wall_lj93_kokkos.cpp create mode 100644 src/KOKKOS/fix_wall_lj93_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index ea70ae4ca1..10245631ab 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -105,6 +105,8 @@ action fix_setforce_kokkos.cpp action fix_setforce_kokkos.h action fix_momentum_kokkos.cpp action fix_momentum_kokkos.h +action fix_wall_lj93_kokkos.cpp +action fix_wall_lj93_kokkos.h action fix_wall_reflect_kokkos.cpp action fix_wall_reflect_kokkos.h action fix_dpd_energy_kokkos.cpp fix_dpd_energy.cpp diff --git a/src/KOKKOS/fix_wall_lj93_kokkos.cpp b/src/KOKKOS/fix_wall_lj93_kokkos.cpp new file mode 100644 index 0000000000..38c7347e97 --- /dev/null +++ b/src/KOKKOS/fix_wall_lj93_kokkos.cpp @@ -0,0 +1,104 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include "fix_wall_lj93_kokkos.h" +#include "atom_kokkos.h" +#include "error.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +template +FixWallLJ93Kokkos::FixWallLJ93Kokkos(LAMMPS *lmp, int narg, char **arg) : + FixWallLJ93(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- + interaction of all particles in group with a wall + m = index of wall coeffs + which = xlo,xhi,ylo,yhi,zlo,zhi + error if any particle is on or behind wall +------------------------------------------------------------------------- */ + +template +void FixWallLJ93Kokkos::wall_particle(int m_in, int which, double coord_in) +{ + m = m_in; + coord = coord_in; + + atomKK->sync(execution_space, X_MASK|F_MASK|MASK_MASK); + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + mask = atomKK->k_mask.view(); + DAT::tdual_int_scalar k_oneflag = DAT::tdual_int_scalar("fix:oneflag"); + d_oneflag = k_oneflag.view(); + + int nlocal = atom->nlocal; + + dim = which / 2; + side = which % 2; + if (side == 0) side = -1; + + copymode = 1; + FixWallLJ93KokkosFunctor wp_functor(this); + Kokkos::parallel_reduce(nlocal,wp_functor,ewall); + DeviceType::fence(); + copymode = 0; + + atomKK->modified(execution_space, F_MASK); + + k_oneflag.template modify(); + k_oneflag.template sync(); + if (k_oneflag.h_view()) error->one(FLERR,"Particle on or inside fix wall surface"); +} + +template +KOKKOS_INLINE_FUNCTION +void FixWallLJ93Kokkos::wall_particle_item(int i, value_type ewall) const { + if (mask(i) & groupbit) { + double delta; + if (side < 0) delta = x(i,dim) - coord; + else delta = coord - x(i,dim); + if (delta >= cutoff[m]) return; + if (delta <= 0.0) { + d_oneflag() = 1; + return; + } + double rinv = 1.0/delta; + double r2inv = rinv*rinv; + double r4inv = r2inv*r2inv; + double r10inv = r4inv*r4inv*r2inv; + double fwall = side * (coeff1[m]*r10inv - coeff2[m]*r4inv); + f(i,dim) -= fwall; + ewall[0] += coeff3[m]*r4inv*r4inv*rinv - + coeff4[m]*r2inv*rinv - offset[m]; + ewall[m+1] += fwall; + } +} + +namespace LAMMPS_NS { +template class FixWallLJ93Kokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixWallLJ93Kokkos; +#endif +} diff --git a/src/KOKKOS/fix_wall_lj93_kokkos.h b/src/KOKKOS/fix_wall_lj93_kokkos.h new file mode 100644 index 0000000000..3cb0a2d44c --- /dev/null +++ b/src/KOKKOS/fix_wall_lj93_kokkos.h @@ -0,0 +1,83 @@ +/* -*- 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(wall/lj93/kk,FixWallLJ93Kokkos) +FixStyle(wall/lj93/kk/device,FixWallLJ93Kokkos) +FixStyle(wall/lj93/kk/host,FixWallLJ93Kokkos) + +#else + +#ifndef LMP_FIX_WALL_LJ93_KOKKOS_H +#define LMP_FIX_WALL_LJ93_KOKKOS_H + +#include "fix_wall_lj93.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class FixWallLJ93Kokkos : public FixWallLJ93 { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef double value_type[]; + + FixWallLJ93Kokkos(class LAMMPS *, int, char **); + void wall_particle(int, int, double); + + int m; + + KOKKOS_INLINE_FUNCTION + void wall_particle_item(int, value_type) const; + + private: + int dim,side; + double coord; + + typename AT::t_x_array x; + typename AT::t_f_array f; + typename AT::t_int_1d mask; + typename AT::t_int_scalar d_oneflag; +}; + +template +struct FixWallLJ93KokkosFunctor { + typedef DeviceType device_type ; + typedef double value_type[]; + const int value_count; + + FixWallLJ93Kokkos c; + FixWallLJ93KokkosFunctor(FixWallLJ93Kokkos* c_ptr): + c(*c_ptr), + value_count(c.m) {} + KOKKOS_INLINE_FUNCTION + void operator()(const int i, value_type ewall) const { + c.wall_particle_item(i,ewall); + } +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Particle on or inside fix wall surface + +Particles must be "exterior" to the wall in order for energy/force to +be calculated. + +*/ diff --git a/src/fix_wall.cpp b/src/fix_wall.cpp index 503b87f4a7..8b569cafc6 100644 --- a/src/fix_wall.cpp +++ b/src/fix_wall.cpp @@ -201,6 +201,8 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) : FixWall::~FixWall() { + if (copymode) return; + for (int m = 0; m < nwall; m++) { delete [] xstr[m]; delete [] estr[m]; diff --git a/src/fix_wall_lj93.h b/src/fix_wall_lj93.h index 40337a5176..3763a02910 100644 --- a/src/fix_wall_lj93.h +++ b/src/fix_wall_lj93.h @@ -28,9 +28,9 @@ class FixWallLJ93 : public FixWall { public: FixWallLJ93(class LAMMPS *, int, char **); void precompute(int); - void wall_particle(int, int, double); + virtual void wall_particle(int, int, double); - private: + protected: double coeff1[6],coeff2[6],coeff3[6],coeff4[6],offset[6]; }; -- GitLab From 7e78921c96a5f822dd5c8942bc1fb204a3c747f3 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 3 Mar 2017 10:12:44 -0500 Subject: [PATCH 180/337] USER-DPD Kokkos: propagate 763a00e8 bugfix to pair_multi_lucy_rx_kokkos.cpp --- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 30b49a8e8d..d087546619 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -538,15 +538,15 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLoca rho_i_contrib += factor; if (NEWTON_PAIR || j < nlocal) a_rho[j] += factor; - } else if (rsq < d_cutsq(itype,jtype)) { - const double rcut = sqrt(d_cutsq(itype,jtype)); - const double tmpFactor = 1.0-sqrt(rsq)/rcut; - const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; - const double factor = (84.0/(5.0*pi*rcut*rcut*rcut))*(1.0+3.0*sqrt(rsq)/(2.0*rcut))*tmpFactor4; - rho_i_contrib += factor; - if (NEWTON_PAIR || j < nlocal) - a_rho[j] += factor; } + } else if (rsq < d_cutsq(itype,jtype)) { + const double rcut = sqrt(d_cutsq(itype,jtype)); + const double tmpFactor = 1.0-sqrt(rsq)/rcut; + const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; + const double factor = (84.0/(5.0*pi*rcut*rcut*rcut))*(1.0+3.0*sqrt(rsq)/(2.0*rcut))*tmpFactor4; + rho_i_contrib += factor; + if (NEWTON_PAIR || j < nlocal) + a_rho[j] += factor; } } -- GitLab From a7e855096215b5204b39bc7e54b080095909d6c4 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 3 Mar 2017 10:38:45 -0500 Subject: [PATCH 181/337] USER-DPD Kokkos: turn one_type optimization into a template specialization --- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 28 +++++++++++++++++------- src/KOKKOS/pair_multi_lucy_rx_kokkos.h | 7 +++--- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index d087546619..11dbfabf3a 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -454,7 +454,7 @@ void PairMultiLucyRXKokkos::computeLocalDensity() const double pi = MathConst::MY_PI; const bool newton_pair = force->newton_pair; - one_type = (atom->ntypes == 1); + const bool one_type = (atom->ntypes == 1); // Special cut-off values for when there's only one type. cutsq_type11 = cutsq[1][1]; @@ -471,14 +471,26 @@ void PairMultiLucyRXKokkos::computeLocalDensity() if (neighflag == HALF) { if (newton_pair) - Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); else - Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } else if (neighflag == HALFTHREAD) { if (newton_pair) - Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); else - Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } atomKK->modified(execution_space,DPDRHO_MASK); @@ -498,9 +510,9 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXZero, const } template -template +template KOKKOS_INLINE_FUNCTION -void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLocalDensity, const int &ii) const { +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLocalDensity, const int &ii) const { // The rho array is atomic for Half/Thread neighbor style @@ -528,7 +540,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLoca const double delz = ztmp - x(j,2); const double rsq = delx*delx + dely*dely + delz*delz; - if (one_type) { + if (ONE_TYPE) { if (rsq < cutsq_type11) { const double rcut = rcut_type11; const double r_over_rcut = sqrt(rsq) / rcut; diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h index 1e84e3efd8..8556319531 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h @@ -39,7 +39,7 @@ struct TagPairMultiLucyRXCompute{}; struct TagPairMultiLucyRXZero{}; -template +template struct TagPairMultiLucyRXComputeLocalDensity{}; template @@ -88,9 +88,9 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { KOKKOS_INLINE_FUNCTION void operator()(TagPairMultiLucyRXZero, const int&) const; - template + template KOKKOS_INLINE_FUNCTION - void operator()(TagPairMultiLucyRXComputeLocalDensity, const int&) const; + void operator()(TagPairMultiLucyRXComputeLocalDensity, const int&) const; template KOKKOS_INLINE_FUNCTION @@ -103,7 +103,6 @@ class PairMultiLucyRXKokkos : public PairMultiLucyRX { int neighflag; int eflag,vflag; - bool one_type; double cutsq_type11; double rcut_type11; double factor_type11; -- GitLab From c468727db0927c45c25a43d0285265ed01a5a765 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 3 Mar 2017 10:49:15 -0700 Subject: [PATCH 182/337] Fixing issue in fix_wall_lj93_kokkos --- src/KOKKOS/fix_wall_lj93_kokkos.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/fix_wall_lj93_kokkos.h b/src/KOKKOS/fix_wall_lj93_kokkos.h index 3cb0a2d44c..64f3c59a62 100644 --- a/src/KOKKOS/fix_wall_lj93_kokkos.h +++ b/src/KOKKOS/fix_wall_lj93_kokkos.h @@ -61,7 +61,7 @@ struct FixWallLJ93KokkosFunctor { FixWallLJ93Kokkos c; FixWallLJ93KokkosFunctor(FixWallLJ93Kokkos* c_ptr): c(*c_ptr), - value_count(c.m) {} + value_count(c_ptr->m+1) {} KOKKOS_INLINE_FUNCTION void operator()(const int i, value_type ewall) const { c.wall_particle_item(i,ewall); -- GitLab From 0651ea7f69c33ed026199928476297f9a485e00b Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 3 Mar 2017 12:50:13 -0500 Subject: [PATCH 183/337] USER-DPD Kokkos: work around CUDA not having max_hardware_threads() --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 36 +++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index ba61185a57..99a364eb86 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -114,6 +114,42 @@ void PairDPDfdtEnergyKokkos::init_style() #endif } +#if defined(KOKKOS_ENABLE_CUDA) && defined(__CUDACC__) +// CUDA specialization of init_style to properly call rand_pool.init() +template<> +void PairDPDfdtEnergyKokkos::init_style() +{ + PairDPDfdtEnergy::init_style(); + + // irequest = neigh request made by parent class + + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); + } + +#ifdef DPD_USE_RAN_MARS + rand_pool.init(random,seed); +#else + rand_pool.init(seed + comm->me,4*32768 /*fake max_hardware_threads()*/); +#endif +} +#endif + /* ---------------------------------------------------------------------- */ template -- GitLab From 635c448b61bd0279c567ee4426fff6c6ee1ef88d Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 3 Mar 2017 14:57:35 -0500 Subject: [PATCH 184/337] USER-DPD: sort bins for deterministic SSA instead of using Kokkos::Serial --- src/KOKKOS/nbin_ssa_kokkos.cpp | 85 +++++++++++++++++++++++++++++----- src/KOKKOS/nbin_ssa_kokkos.h | 6 +++ 2 files changed, 79 insertions(+), 12 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index 53f3f2fc80..afe016c3f7 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -114,7 +114,6 @@ void NBinSSAKokkos::bin_atoms() { last_bin = update->ntimestep; - int i; int nlocal = atom->nlocal; int nghost = atom->nghost; int nall = nlocal + nghost; @@ -170,19 +169,17 @@ void NBinSSAKokkos::bin_atoms() k_gbincount.sync(); DeviceType::fence(); // FIXME? - Kokkos::parallel_for( -#ifdef ALLOW_NON_DETERMINISTIC_SSA - Kokkos::RangePolicy(nlocal,nall) -#else - Kokkos::RangePolicy(nlocal,nall) -#endif - , KOKKOS_LAMBDA (const int i) { + Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nall), + KOKKOS_LAMBDA (const int i) { const int iAIR = binID(i); if (iAIR > 0) { // include only ghost atoms in an AIR const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); gbins(iAIR, ac) = i; } }); +#ifndef ALLOW_NON_DETERMINISTIC_DPD + Kokkos::parallel_for(Kokkos::RangePolicy(1,8), KOKKOS_LAMBDA (const int i) { sortGhostBin(i); }); +#endif DeviceType::fence(); } c_gbins = gbins; // gbins won't change until the next bin_atoms @@ -200,13 +197,11 @@ void NBinSSAKokkos::bin_atoms() DeviceType::fence(); NPairSSAKokkosBinAtomsFunctor f(*this); -#ifdef ALLOW_NON_DETERMINISTIC_SSA Kokkos::parallel_for(nlocal, f); -#else - Kokkos::parallel_for(Kokkos::RangePolicy(0, nlocal), f); +#ifndef ALLOW_NON_DETERMINISTIC_DPD + Kokkos::parallel_for(mbins, KOKKOS_LAMBDA (const int i) { sortAtomBin(i); }); #endif DeviceType::fence(); - } c_bins = bins; // bins won't change until the next bin_atoms @@ -258,6 +253,72 @@ void NBinSSAKokkos::binIDGhostsItem(const int &i, int &update) const } } +// An implementation of heapsort without recursion +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::sortAtomBin(const int &ibin) const +{ + int n = bincount(ibin); + int i = n/2; + int t; + + do { /* Loops until bin is sorted */ + if (i > 0) { /* First stage - Sorting the heap */ + i--; /* Save its index to i */ + t = bins(ibin, i); /* Save parent value to t */ + } else { /* Second stage - Extracting elements in-place */ + if ((--n) <= 0) return; /* When the heap is empty, we are done */ + t = bins(ibin, n); /* Save last value (it will be overwritten) */ + bins(ibin, n) = bins(ibin, 0); /* Save largest value at the end of the bin */ + } + int parent = i; /* We will start pushing down t from parent */ + int child = i*2 + 1; /* parent's left child */ + /* Sift operation - pushing the value of t down the heap */ + while (child < n) { + /* Choose the largest child */ + if ((child + 1 < n) && (bins(ibin, child + 1) > bins(ibin, child))) ++child; + if (bins(ibin, child) <= t) break; /* t's place is found */ + bins(ibin, parent) = bins(ibin, child); /* Move the largest child up */ + parent = child; /* Move parent pointer to this child */ + child = parent*2+1; /* Find the next child */ + } + bins(ibin, parent) = t; /* We save t in the heap */ + } while(1); +} + +// An implementation of heapsort without recursion +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::sortGhostBin(const int &ibin) const +{ + int n = gbincount(ibin); + int i = n/2; + int t; + + do { /* Loops until bin is sorted */ + if (i > 0) { /* First stage - Sorting the heap */ + i--; /* Save its index to i */ + t = gbins(ibin, i); /* Save parent value to t */ + } else { /* Second stage - Extracting elements in-place */ + if (--n <= 0) return; /* When the heap is empty, we are done */ + t = gbins(ibin, n); /* Save last value (it will be overwritten) */ + gbins(ibin, n) = gbins(ibin, 0); /* Save largest value at the end of the bin */ + } + int parent = i; /* We will start pushing down t from parent */ + int child = i*2 + 1; /* parent's left child */ + /* Sift operation - pushing the value of t down the heap */ + while (child < n) { + /* Choose the largest child */ + if ((child + 1 < n) && (gbins(ibin, child + 1) > gbins(ibin, child))) ++child; + if (gbins(ibin, child) <= t) break; /* t's place is found */ + gbins(ibin, parent) = gbins(ibin, child); /* Move the largest child up */ + parent = child; /* Move parent pointer to this child */ + child = parent*2+1; /* Find the next child */ + } + gbins(ibin, parent) = t; /* We save t in the heap */ + } while(1); +} + namespace LAMMPS_NS { template class NBinSSAKokkos; #ifdef KOKKOS_HAVE_CUDA diff --git a/src/KOKKOS/nbin_ssa_kokkos.h b/src/KOKKOS/nbin_ssa_kokkos.h index 69f05c9304..add400c573 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.h +++ b/src/KOKKOS/nbin_ssa_kokkos.h @@ -88,6 +88,12 @@ class NBinSSAKokkos : public NBinStandard { KOKKOS_INLINE_FUNCTION void binIDGhostsItem(const int &i, int &update) const; + KOKKOS_INLINE_FUNCTION + void sortAtomBin(const int &ibin) const; + + KOKKOS_INLINE_FUNCTION + void sortGhostBin(const int &ibin) const; + /* ---------------------------------------------------------------------- convert atom coords into the ssa active interaction region number ------------------------------------------------------------------------- */ -- GitLab From b35895ca128b375595d3da401a88f842b8ad63bf Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 3 Mar 2017 15:21:09 -0500 Subject: [PATCH 185/337] USER-DPD Kokkos: Remove the SSA's ALLOW_NON_DETERMINISTIC_DPD option. There was no measurable performance benefit to turning it on. --- src/KOKKOS/nbin_ssa_kokkos.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index afe016c3f7..0f4a3b8d4f 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -177,9 +177,7 @@ void NBinSSAKokkos::bin_atoms() gbins(iAIR, ac) = i; } }); -#ifndef ALLOW_NON_DETERMINISTIC_DPD Kokkos::parallel_for(Kokkos::RangePolicy(1,8), KOKKOS_LAMBDA (const int i) { sortGhostBin(i); }); -#endif DeviceType::fence(); } c_gbins = gbins; // gbins won't change until the next bin_atoms @@ -198,9 +196,7 @@ void NBinSSAKokkos::bin_atoms() NPairSSAKokkosBinAtomsFunctor f(*this); Kokkos::parallel_for(nlocal, f); -#ifndef ALLOW_NON_DETERMINISTIC_DPD Kokkos::parallel_for(mbins, KOKKOS_LAMBDA (const int i) { sortAtomBin(i); }); -#endif DeviceType::fence(); } c_bins = bins; // bins won't change until the next bin_atoms -- GitLab From c2c22fc2ede651fe5b9da1f7c45a4c05ab543951 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 6 Mar 2017 10:57:19 -0700 Subject: [PATCH 186/337] add missing KOKKOS_INLINE_FUNCTION to fix_shardlow --- src/KOKKOS/Install.sh | 4 ++-- src/KOKKOS/fix_shardlow_kokkos.cpp | 1 + src/KOKKOS/fix_shardlow_kokkos.h | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 68bd8d2ea8..5707a4e53c 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -28,8 +28,8 @@ action () { # force rebuild of files with LMP_KOKKOS switch -touch ../accelerator_kokkos.h -touch ../memory.h +#touch ../accelerator_kokkos.h +#touch ../memory.h # list of files with optional dependcies diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 996f37257d..0dfbce5033 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -433,6 +433,7 @@ void FixShardlowKokkos::ssa_update_dpd( ------------------------------------------------------------------------- */ template template +KOKKOS_INLINE_FUNCTION void FixShardlowKokkos::ssa_update_dpde( int start_ii, int count, int id ) diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index c4711f5b8b..4dc47709e1 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -124,6 +124,7 @@ class FixShardlowKokkos : public FixShardlow { // template // void ssa_update_dpd(int, int); // Constant Temperature template + KOKKOS_INLINE_FUNCTION void ssa_update_dpde(int, int, int); // Constant Energy }; -- GitLab From 3e8cfb8247fdf7bb19ac21edfd971b3188f4881c Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 6 Mar 2017 11:04:47 -0700 Subject: [PATCH 187/337] The wonders of git commit -a --- src/KOKKOS/Install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 5707a4e53c..68bd8d2ea8 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -28,8 +28,8 @@ action () { # force rebuild of files with LMP_KOKKOS switch -#touch ../accelerator_kokkos.h -#touch ../memory.h +touch ../accelerator_kokkos.h +touch ../memory.h # list of files with optional dependcies -- GitLab From 4a6f27935d26567203c595fdf8214c89f4e94643 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 6 Mar 2017 14:58:40 -0700 Subject: [PATCH 188/337] fix lambda syntax for CUDA KOKKOS_LAMBDA doesn't quite work on CUDA, you have to use LAMMPS_LAMBDA. Also, if you do use LAMMPS_LAMBDA, you need to run on the default device type, i.e. no using lambdas to run on OpenMP when LAMMPS has been compiled for CUDA. --- src/KOKKOS/fix_shardlow_kokkos.cpp | 10 +++++----- src/KOKKOS/nbin_ssa_kokkos.cpp | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 0dfbce5033..bf026552fa 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -677,13 +677,13 @@ void FixShardlowKokkos::initial_integrate(int vflag) int workItemCt = ssa_phaseLen[workPhase]; if(atom->ntypes > MAX_TYPES_STACKPARAMS) { - Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { + Kokkos::parallel_for(workItemCt, LAMMPS_LAMBDA (const int workItem ) { int ct = ssa_itemLen(workPhase, workItem); int ii = ssa_itemLoc(workPhase, workItem); ssa_update_dpde(ii, ct, workItem); }); } else { - Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { + Kokkos::parallel_for(workItemCt, LAMMPS_LAMBDA (const int workItem ) { int ct = ssa_itemLen(workPhase, workItem); int ii = ssa_itemLoc(workPhase, workItem); ssa_update_dpde(ii, ct, workItem); @@ -704,7 +704,7 @@ void FixShardlowKokkos::initial_integrate(int vflag) // memset(&(atom->uCond[nlocal]), 0, sizeof(double)*nghost); // memset(&(atom->uMech[nlocal]), 0, sizeof(double)*nghost); - Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nlocal+nghost), KOKKOS_LAMBDA (const int i) { + Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nlocal+nghost), LAMMPS_LAMBDA (const int i) { uCond(i) = 0.0; uMech(i) = 0.0; }); @@ -713,13 +713,13 @@ void FixShardlowKokkos::initial_integrate(int vflag) // process neighbors in this AIR if(atom->ntypes > MAX_TYPES_STACKPARAMS) { - Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { + Kokkos::parallel_for(workItemCt, LAMMPS_LAMBDA (const int workItem ) { int ct = ssa_gitemLen(workPhase, workItem); int ii = ssa_gitemLoc(workPhase, workItem); ssa_update_dpde(ii, ct, workItem); }); } else { - Kokkos::parallel_for(workItemCt, KOKKOS_LAMBDA (const int workItem ) { + Kokkos::parallel_for(workItemCt, LAMMPS_LAMBDA (const int workItem ) { int ct = ssa_gitemLen(workPhase, workItem); int ii = ssa_gitemLoc(workPhase, workItem); ssa_update_dpde(ii, ct, workItem); diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index 0f4a3b8d4f..b0e2d5be88 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -155,7 +155,7 @@ void NBinSSAKokkos::bin_atoms() DeviceType::fence(); // FIXME? ghosts_per_gbin = 0; NPairSSAKokkosBinIDGhostsFunctor f(*this); - Kokkos::parallel_reduce(Kokkos::RangePolicy(nlocal,nall), f, ghosts_per_gbin); + Kokkos::parallel_reduce(Kokkos::RangePolicy(nlocal,nall), f, ghosts_per_gbin); } // actually bin the ghost atoms @@ -169,15 +169,15 @@ void NBinSSAKokkos::bin_atoms() k_gbincount.sync(); DeviceType::fence(); // FIXME? - Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nall), - KOKKOS_LAMBDA (const int i) { + Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nall), + LAMMPS_LAMBDA (const int i) { const int iAIR = binID(i); if (iAIR > 0) { // include only ghost atoms in an AIR const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); gbins(iAIR, ac) = i; } }); - Kokkos::parallel_for(Kokkos::RangePolicy(1,8), KOKKOS_LAMBDA (const int i) { sortGhostBin(i); }); + Kokkos::parallel_for(Kokkos::RangePolicy(1,8), LAMMPS_LAMBDA (const int i) { sortGhostBin(i); }); DeviceType::fence(); } c_gbins = gbins; // gbins won't change until the next bin_atoms @@ -196,7 +196,7 @@ void NBinSSAKokkos::bin_atoms() NPairSSAKokkosBinAtomsFunctor f(*this); Kokkos::parallel_for(nlocal, f); - Kokkos::parallel_for(mbins, KOKKOS_LAMBDA (const int i) { sortAtomBin(i); }); + Kokkos::parallel_for(mbins, LAMMPS_LAMBDA (const int i) { sortAtomBin(i); }); DeviceType::fence(); } c_bins = bins; // bins won't change until the next bin_atoms -- GitLab From a7d1b571be0ae8969911cba9cf4b4d5a9b879948 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 6 Mar 2017 15:07:07 -0700 Subject: [PATCH 189/337] don't capture "this" in lambdas CUDA lambdas can't capture the calling object very well. make local shallow copies of variables needed. --- src/KOKKOS/nbin_ssa_kokkos.cpp | 21 +++++++++++++++------ src/KOKKOS/nbin_ssa_kokkos.h | 7 +++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index b0e2d5be88..8c991cc0c2 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -169,16 +169,22 @@ void NBinSSAKokkos::bin_atoms() k_gbincount.sync(); DeviceType::fence(); // FIXME? + auto binID_ = binID; + auto gbincount_ = gbincount; + auto gbins_ = gbins; + Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nall), LAMMPS_LAMBDA (const int i) { - const int iAIR = binID(i); + const int iAIR = binID_(i); if (iAIR > 0) { // include only ghost atoms in an AIR - const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); - gbins(iAIR, ac) = i; + const int ac = Kokkos::atomic_fetch_add(&gbincount_[iAIR], (int)1); + gbins_(iAIR, ac) = i; } }); - Kokkos::parallel_for(Kokkos::RangePolicy(1,8), LAMMPS_LAMBDA (const int i) { sortGhostBin(i); }); - DeviceType::fence(); + Kokkos::parallel_for(Kokkos::RangePolicy(1,8), + LAMMPS_LAMBDA (const int i) { + sortGhostBin(gbincount_, gbins_, i); + }); } c_gbins = gbins; // gbins won't change until the next bin_atoms @@ -285,7 +291,10 @@ void NBinSSAKokkos::sortAtomBin(const int &ibin) const // An implementation of heapsort without recursion template KOKKOS_INLINE_FUNCTION -void NBinSSAKokkos::sortGhostBin(const int &ibin) const +void NBinSSAKokkos::sortGhostBin( + typename AT::t_int_1d gbincount, + typename AT::t_int_2d gbins, + const int &ibin) { int n = gbincount(ibin); int i = n/2; diff --git a/src/KOKKOS/nbin_ssa_kokkos.h b/src/KOKKOS/nbin_ssa_kokkos.h index add400c573..ca1f81953f 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.h +++ b/src/KOKKOS/nbin_ssa_kokkos.h @@ -91,8 +91,11 @@ class NBinSSAKokkos : public NBinStandard { KOKKOS_INLINE_FUNCTION void sortAtomBin(const int &ibin) const; - KOKKOS_INLINE_FUNCTION - void sortGhostBin(const int &ibin) const; + static KOKKOS_INLINE_FUNCTION + void sortGhostBin( + typename AT::t_int_1d gbincount, + typename AT::t_int_2d gbins, + const int &ibin); /* ---------------------------------------------------------------------- convert atom coords into the ssa active interaction region number -- GitLab From 3e3a24da48d41227f5bfc12f3337a0a39ce7e948 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 6 Mar 2017 15:28:25 -0700 Subject: [PATCH 190/337] consolidate sorting functions two sort functions with different names but identical functionality. making them the same function until we descide to use a different algorithm for atoms and ghosts --- src/KOKKOS/nbin_ssa_kokkos.cpp | 48 ++++++++-------------------------- src/KOKKOS/nbin_ssa_kokkos.h | 5 +--- 2 files changed, 12 insertions(+), 41 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index 8c991cc0c2..1fcbbed601 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -183,7 +183,7 @@ void NBinSSAKokkos::bin_atoms() }); Kokkos::parallel_for(Kokkos::RangePolicy(1,8), LAMMPS_LAMBDA (const int i) { - sortGhostBin(gbincount_, gbins_, i); + sortBin(gbincount_, gbins_, i); }); } c_gbins = gbins; // gbins won't change until the next bin_atoms @@ -200,9 +200,16 @@ void NBinSSAKokkos::bin_atoms() Kokkos::parallel_for(mbins, f_zero); DeviceType::fence(); + auto bincount_ = bincount; + auto bins_ = bins; + NPairSSAKokkosBinAtomsFunctor f(*this); Kokkos::parallel_for(nlocal, f); - Kokkos::parallel_for(mbins, LAMMPS_LAMBDA (const int i) { sortAtomBin(i); }); + + Kokkos::parallel_for(mbins, + LAMMPS_LAMBDA (const int i) { + sortBin(bincount_, bins_, i); + }); DeviceType::fence(); } c_bins = bins; // bins won't change until the next bin_atoms @@ -258,40 +265,7 @@ void NBinSSAKokkos::binIDGhostsItem(const int &i, int &update) const // An implementation of heapsort without recursion template KOKKOS_INLINE_FUNCTION -void NBinSSAKokkos::sortAtomBin(const int &ibin) const -{ - int n = bincount(ibin); - int i = n/2; - int t; - - do { /* Loops until bin is sorted */ - if (i > 0) { /* First stage - Sorting the heap */ - i--; /* Save its index to i */ - t = bins(ibin, i); /* Save parent value to t */ - } else { /* Second stage - Extracting elements in-place */ - if ((--n) <= 0) return; /* When the heap is empty, we are done */ - t = bins(ibin, n); /* Save last value (it will be overwritten) */ - bins(ibin, n) = bins(ibin, 0); /* Save largest value at the end of the bin */ - } - int parent = i; /* We will start pushing down t from parent */ - int child = i*2 + 1; /* parent's left child */ - /* Sift operation - pushing the value of t down the heap */ - while (child < n) { - /* Choose the largest child */ - if ((child + 1 < n) && (bins(ibin, child + 1) > bins(ibin, child))) ++child; - if (bins(ibin, child) <= t) break; /* t's place is found */ - bins(ibin, parent) = bins(ibin, child); /* Move the largest child up */ - parent = child; /* Move parent pointer to this child */ - child = parent*2+1; /* Find the next child */ - } - bins(ibin, parent) = t; /* We save t in the heap */ - } while(1); -} - -// An implementation of heapsort without recursion -template -KOKKOS_INLINE_FUNCTION -void NBinSSAKokkos::sortGhostBin( +void NBinSSAKokkos::sortBin( typename AT::t_int_1d gbincount, typename AT::t_int_2d gbins, const int &ibin) @@ -305,7 +279,7 @@ void NBinSSAKokkos::sortGhostBin( i--; /* Save its index to i */ t = gbins(ibin, i); /* Save parent value to t */ } else { /* Second stage - Extracting elements in-place */ - if (--n <= 0) return; /* When the heap is empty, we are done */ + if ((--n) <= 0) return; /* When the heap is empty, we are done */ t = gbins(ibin, n); /* Save last value (it will be overwritten) */ gbins(ibin, n) = gbins(ibin, 0); /* Save largest value at the end of the bin */ } diff --git a/src/KOKKOS/nbin_ssa_kokkos.h b/src/KOKKOS/nbin_ssa_kokkos.h index ca1f81953f..cc98859913 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.h +++ b/src/KOKKOS/nbin_ssa_kokkos.h @@ -88,11 +88,8 @@ class NBinSSAKokkos : public NBinStandard { KOKKOS_INLINE_FUNCTION void binIDGhostsItem(const int &i, int &update) const; - KOKKOS_INLINE_FUNCTION - void sortAtomBin(const int &ibin) const; - static KOKKOS_INLINE_FUNCTION - void sortGhostBin( + void sortBin( typename AT::t_int_1d gbincount, typename AT::t_int_2d gbins, const int &ibin); -- GitLab From 527a573026d14fc068f0e44e8b676d98cd1816d6 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 6 Mar 2017 15:42:26 -0700 Subject: [PATCH 191/337] don't use device views to measure dimensions --- src/KOKKOS/nbin_ssa_kokkos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index 1fcbbed601..6c9e3a3446 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -72,7 +72,7 @@ NBinSSAKokkos::NBinSSAKokkos(LAMMPS *lmp) : NBinStandard(lmp) template void NBinSSAKokkos::bin_atoms_setup(int nall) { - if (mbins > (int) k_bins.d_view.dimension_0()) { + if (mbins > (int) k_bins.h_view.dimension_0()) { k_bins = DAT::tdual_int_2d("NBinSSAKokkos::bins",mbins,atoms_per_bin); bins = k_bins.view(); @@ -82,7 +82,7 @@ void NBinSSAKokkos::bin_atoms_setup(int nall) ghosts_per_gbin = atom->nghost / 7; // estimate needed size - if (ghosts_per_gbin > (int) k_gbins.d_view.dimension_1()) { + if (ghosts_per_gbin > (int) k_gbins.h_view.dimension_1()) { k_gbins = DAT::tdual_int_2d("NBinSSAKokkos::gbins",8,ghosts_per_gbin); gbins = k_gbins.view(); } -- GitLab From b8c72c7bdb547c75c3fc4077353b8f15e4b7b240 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 6 Mar 2017 15:51:09 -0700 Subject: [PATCH 192/337] don't query device variables from the host --- src/KOKKOS/npair_ssa_kokkos.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 7eea57d492..a9b59bfc96 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -83,12 +83,12 @@ void NPairSSAKokkos::copy_bin_info() k_gbincount = nbKK->k_gbincount; k_gbins = nbKK->k_gbins; - lbinxlo = nbKK->d_lbinxlo(); - lbinxhi = nbKK->d_lbinxhi(); - lbinylo = nbKK->d_lbinylo(); - lbinyhi = nbKK->d_lbinyhi(); - lbinzlo = nbKK->d_lbinzlo(); - lbinzhi = nbKK->d_lbinzhi(); + lbinxlo = nbKK->h_lbinxlo(); + lbinxhi = nbKK->h_lbinxhi(); + lbinylo = nbKK->h_lbinylo(); + lbinyhi = nbKK->h_lbinyhi(); + lbinzlo = nbKK->h_lbinzlo(); + lbinzhi = nbKK->h_lbinzhi(); } /* ---------------------------------------------------------------------- -- GitLab From d01f09dce237dabe50e22d78881380676db3451a Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Tue, 7 Mar 2017 15:23:17 -0500 Subject: [PATCH 193/337] Turn off use of OpenMP in MPIIO/dump_custom_mpiio.cpp if Kokkos is in use. The convert_string_omp() method breaks when Kokkos is also using OpenMP. --- src/MPIIO/dump_custom_mpiio.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MPIIO/dump_custom_mpiio.cpp b/src/MPIIO/dump_custom_mpiio.cpp index 6e48bfa146..0b282b77ef 100644 --- a/src/MPIIO/dump_custom_mpiio.cpp +++ b/src/MPIIO/dump_custom_mpiio.cpp @@ -542,8 +542,8 @@ void DumpCustomMPIIO::write_string(int n, double *mybuf) #if defined(_OPENMP) int nthreads = omp_get_max_threads(); - if (nthreads > 1) - nsme = convert_string_omp(n,mybuf); + if ((nthreads > 1) && !(lmp->kokkos)) + nsme = convert_string_omp(n,mybuf); // not (yet) compatible with Kokkos else nsme = convert_string(n,mybuf); #else -- GitLab From fc23f9cfe897f383db0fa48ce28ea7a2dceb34e8 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 8 Mar 2017 13:07:52 -0700 Subject: [PATCH 194/337] Disable allocation of per-atom arrays in ev_setup for USER-DPD Kokkos styles --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 2 +- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 2 +- src/KOKKOS/pair_hybrid_kokkos.cpp | 2 +- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 2 +- src/KOKKOS/pair_table_rx_kokkos.cpp | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index 99a364eb86..bd0f08efa6 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -161,7 +161,7 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) vflag = vflag_in; if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag); + if (eflag || vflag) ev_setup(eflag,vflag,0); else evflag = vflag_fdotr = 0; // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 962dcfd031..4b0748721c 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -127,7 +127,7 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) vflag = vflag_in; if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag); + if (eflag || vflag) ev_setup(eflag,vflag,0); else evflag = vflag_fdotr = 0; // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_hybrid_kokkos.cpp b/src/KOKKOS/pair_hybrid_kokkos.cpp index 337b56c6ce..629eee156a 100644 --- a/src/KOKKOS/pair_hybrid_kokkos.cpp +++ b/src/KOKKOS/pair_hybrid_kokkos.cpp @@ -77,7 +77,7 @@ void PairHybridKokkos::compute(int eflag, int vflag) if (no_virial_fdotr_compute && vflag % 4 == 2) vflag = 1 + vflag/4 * 4; - if (eflag || vflag) ev_setup(eflag,vflag); + if (eflag || vflag) ev_setup(eflag,vflag,0); else evflag = vflag_fdotr = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 11dbfabf3a..4379cc4001 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -147,7 +147,7 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in vflag = vflag_in; if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag); + if (eflag || vflag) ev_setup(eflag,vflag,0); else evflag = vflag_fdotr = 0; // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 2a1ee2c0b1..cbb1096712 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -627,7 +627,7 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag); + if (eflag || vflag) ev_setup(eflag,vflag,0); else evflag = vflag_fdotr = 0; if (eflag_atom) { -- GitLab From 35e1cf1d6e006b4c4508c9eb34caa8563a0418e3 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 8 Mar 2017 20:02:02 -0700 Subject: [PATCH 195/337] Fixing issue with ev_setup in pair_hybrid_kokkos --- src/KOKKOS/pair_hybrid_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_hybrid_kokkos.cpp b/src/KOKKOS/pair_hybrid_kokkos.cpp index 629eee156a..337b56c6ce 100644 --- a/src/KOKKOS/pair_hybrid_kokkos.cpp +++ b/src/KOKKOS/pair_hybrid_kokkos.cpp @@ -77,7 +77,7 @@ void PairHybridKokkos::compute(int eflag, int vflag) if (no_virial_fdotr_compute && vflag % 4 == 2) vflag = 1 + vflag/4 * 4; - if (eflag || vflag) ev_setup(eflag,vflag,0); + if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; -- GitLab From 6f71275db30fcea912d9fb37fb13ab0608cc9d1b Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 9 Mar 2017 15:35:07 -0700 Subject: [PATCH 196/337] Add Kokkos version of atom_vec_hybrid_kokkos, without CUDA support --- src/KOKKOS/Install.sh | 2 + src/KOKKOS/atom_kokkos.cpp | 1 + src/KOKKOS/atom_kokkos.h | 1 + src/KOKKOS/atom_vec_hybrid_kokkos.cpp | 1191 +++++++++++++++++++++++++ src/KOKKOS/atom_vec_hybrid_kokkos.h | 161 ++++ 5 files changed, 1356 insertions(+) create mode 100644 src/KOKKOS/atom_vec_hybrid_kokkos.cpp create mode 100644 src/KOKKOS/atom_vec_hybrid_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 68bd8d2ea8..9c11e9321b 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -53,6 +53,8 @@ action atom_vec_dpd_kokkos.cpp atom_vec_dpd.cpp action atom_vec_dpd_kokkos.h atom_vec_dpd.h action atom_vec_full_kokkos.cpp atom_vec_full.cpp action atom_vec_full_kokkos.h atom_vec_full.h +action atom_vec_hybrid_kokkos.cpp +action atom_vec_hybrid_kokkos.h action atom_vec_kokkos.cpp action atom_vec_kokkos.h action atom_vec_molecular_kokkos.cpp atom_vec_molecular.cpp diff --git a/src/KOKKOS/atom_kokkos.cpp b/src/KOKKOS/atom_kokkos.cpp index 97b76ba67c..31b33dbdc9 100644 --- a/src/KOKKOS/atom_kokkos.cpp +++ b/src/KOKKOS/atom_kokkos.cpp @@ -49,6 +49,7 @@ AtomKokkos::~AtomKokkos() memory->destroy_kokkos(k_radius, radius); memory->destroy_kokkos(k_rmass, rmass); memory->destroy_kokkos(k_omega, omega); + memory->destroy_kokkos(k_angmom, angmom); memory->destroy_kokkos(k_torque, torque); memory->destroy_kokkos(k_nspecial, nspecial); diff --git a/src/KOKKOS/atom_kokkos.h b/src/KOKKOS/atom_kokkos.h index cf454bcd0c..2245023189 100644 --- a/src/KOKKOS/atom_kokkos.h +++ b/src/KOKKOS/atom_kokkos.h @@ -34,6 +34,7 @@ class AtomKokkos : public Atom { DAT::tdual_float_1d k_radius; DAT::tdual_float_1d k_rmass; DAT::tdual_v_array k_omega; + DAT::tdual_v_array k_angmom; DAT::tdual_f_array k_torque; DAT::tdual_tagint_1d k_molecule; DAT::tdual_int_2d k_nspecial; diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp new file mode 100644 index 0000000000..0c9d261be5 --- /dev/null +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp @@ -0,0 +1,1191 @@ +/* ---------------------------------------------------------------------- + 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 "atom_vec_kokkos.h" +#include "atom_vec_hybrid_kokkos.h" +#include "atom_kokkos.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecHybridKokkos::AtomVecHybridKokkos(LAMMPS *lmp) : AtomVecKokkos(lmp) {} + +/* ---------------------------------------------------------------------- */ + +AtomVecHybridKokkos::~AtomVecHybridKokkos() +{ + for (int k = 0; k < nstyles; k++) delete styles[k]; + delete [] styles; + for (int k = 0; k < nstyles; k++) delete [] keywords[k]; + delete [] keywords; +} + +/* ---------------------------------------------------------------------- + process sub-style args +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::process_args(int narg, char **arg) +{ + // build list of all known atom styles + + build_styles(); + + // allocate list of sub-styles as big as possibly needed if no extra args + + styles = new AtomVec*[narg]; + keywords = new char*[narg]; + + // allocate each sub-style + // call process_args() with set of args that are not atom style names + // use known_style() to determine which args these are + + int i,jarg,dummy; + + int iarg = 0; + nstyles = 0; + while (iarg < narg) { + if (strcmp(arg[iarg],"hybrid") == 0) + error->all(FLERR,"Atom style hybrid cannot have hybrid as an argument"); + for (i = 0; i < nstyles; i++) + if (strcmp(arg[iarg],keywords[i]) == 0) + error->all(FLERR,"Atom style hybrid cannot use same atom style twice"); + styles[nstyles] = atom->new_avec(arg[iarg],1,dummy); + keywords[nstyles] = new char[strlen(arg[iarg])+1]; + strcpy(keywords[nstyles],arg[iarg]); + jarg = iarg + 1; + while (jarg < narg && !known_style(arg[jarg])) jarg++; + styles[nstyles]->process_args(jarg-iarg-1,&arg[iarg+1]); + iarg = jarg; + nstyles++; + } + + // free allstyles created by build_styles() + + for (int i = 0; i < nallstyles; i++) delete [] allstyles[i]; + delete [] allstyles; + + // hybrid settings are MAX or MIN of sub-style settings + // hybrid sizes are minimal values plus extra values for each sub-style + + molecular = 0; + comm_x_only = comm_f_only = 1; + + size_forward = 3; + size_reverse = 3; + size_border = 6; + size_data_atom = 5; + size_data_vel = 4; + xcol_data = 3; + + for (int k = 0; k < nstyles; k++) { + if ((styles[k]->molecular == 1 && molecular == 2) || + (styles[k]->molecular == 2 && molecular == 1)) + error->all(FLERR,"Cannot mix molecular and molecule template " + "atom styles"); + molecular = MAX(molecular,styles[k]->molecular); + + bonds_allow = MAX(bonds_allow,styles[k]->bonds_allow); + angles_allow = MAX(angles_allow,styles[k]->angles_allow); + dihedrals_allow = MAX(dihedrals_allow,styles[k]->dihedrals_allow); + impropers_allow = MAX(impropers_allow,styles[k]->impropers_allow); + mass_type = MAX(mass_type,styles[k]->mass_type); + dipole_type = MAX(dipole_type,styles[k]->dipole_type); + forceclearflag = MAX(forceclearflag,styles[k]->forceclearflag); + + if (styles[k]->molecular == 2) onemols = styles[k]->onemols; + + comm_x_only = MIN(comm_x_only,styles[k]->comm_x_only); + comm_f_only = MIN(comm_f_only,styles[k]->comm_f_only); + size_forward += styles[k]->size_forward - 3; + size_reverse += styles[k]->size_reverse - 3; + size_border += styles[k]->size_border - 6; + size_data_atom += styles[k]->size_data_atom - 5; + size_data_vel += styles[k]->size_data_vel - 4; + } + + size_velocity = 3; + if (atom->omega_flag) size_velocity += 3; + if (atom->angmom_flag) size_velocity += 3; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::init() +{ + AtomVec::init(); + for (int k = 0; k < nstyles; k++) styles[k]->init(); + +#ifdef KOKKOS_HAVE_CUDA + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support CUDA"); +#endif +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::grow(int n) +{ + if (n == 0) grow_nmax(); + else nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + // sub-styles perform all reallocation + // turn off nextra_grow so hybrid can do that once below + + int tmp = atom->nextra_grow; + atom->nextra_grow = 0; + for (int k = 0; k < nstyles; k++) styles[k]->grow(nmax); + atom->nextra_grow = tmp; + + // insure hybrid local ptrs and sub-style ptrs are up to date + // for sub-styles, do this in case + // multiple sub-style reallocs of same array occurred + + grow_reset(); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::grow_reset() +{ + tag = atomKK->tag; + d_tag = atomKK->k_tag.d_view; + h_tag = atomKK->k_tag.h_view; + + type = atomKK->type; + d_type = atomKK->k_type.d_view; + h_type = atomKK->k_type.h_view; + + mask = atomKK->mask; + d_mask = atomKK->k_mask.d_view; + h_mask = atomKK->k_mask.h_view; + + image = atomKK->image; + d_image = atomKK->k_image.d_view; + h_image = atomKK->k_image.h_view; + + x = atomKK->x; + d_x = atomKK->k_x.d_view; + h_x = atomKK->k_x.h_view; + + v = atomKK->v; + d_v = atomKK->k_v.d_view; + h_v = atomKK->k_v.h_view; + + f = atomKK->f; + d_f = atomKK->k_f.d_view; + h_f = atomKK->k_f.h_view; + + v = atomKK->v; + d_v = atomKK->k_v.d_view; + h_v = atomKK->k_v.h_view; + + omega = atomKK->omega; + d_omega = atomKK->k_omega.d_view; + h_omega = atomKK->k_omega.h_view; + + angmom = atomKK->angmom; + d_angmom = atomKK->k_angmom.d_view; + h_angmom = atomKK->k_angmom.h_view; + + for (int k = 0; k < nstyles; k++) styles[k]->grow_reset(); +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J for all sub-styles +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::copy(int i, int j, int delflag) +{ + int tmp = atom->nextra_grow; + atom->nextra_grow = 0; + for (int k = 0; k < nstyles; k++) styles[k]->copy(i,j,delflag); + atom->nextra_grow = tmp; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::clear_bonus() +{ + for (int k = 0; k < nstyles; k++) styles[k]->clear_bonus(); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::force_clear(int n, size_t nbytes) +{ + for (int k = 0; k < nstyles; k++) + if (styles[k]->forceclearflag) styles[k]->force_clear(n,nbytes); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, const int pbc[]) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +void AtomVecHybridKokkos::unpack_comm_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +int AtomVecHybridKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, + const int & iswap, const int nfirst, + const int &pbc_flag, const int pbc[]) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +int AtomVecHybridKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, + DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +void AtomVecHybridKokkos::unpack_border_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf, + ExecutionSpace space) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +int AtomVecHybridKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space, int dim, + X_FLOAT lo, X_FLOAT hi) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +int AtomVecHybridKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, + int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, + ExecutionSpace space) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + } + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,m; + double dx,dy,dz,dvx,dvy,dvz; + int omega_flag = atom->omega_flag; + int angmom_flag = atom->angmom_flag; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_angmom(j,2); + } + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_angmom(j,2); + } + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + if (h_mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_angmom(j,2); + } + } + } + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_comm(int n, int first, double *buf) +{ + int i,k,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_comm_vel(int n, int first, double *buf) +{ + int i,k,m,last; + int omega_flag = atom->omega_flag; + int angmom_flag = atom->angmom_flag; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + if (omega_flag) { + h_omega(i,0) = buf[m++]; + h_omega(i,1) = buf[m++]; + h_omega(i,2) = buf[m++]; + } + if (angmom_flag) { + h_angmom(i,0) = buf[m++]; + h_angmom(i,1) = buf[m++]; + h_angmom(i,2) = buf[m++]; + } + } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_reverse(int n, int first, double *buf) +{ + int i,k,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = h_f(i,0); + buf[m++] = h_f(i,1); + buf[m++] = h_f(i,2); + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_reverse_hybrid(n,first,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_reverse(int n, int *list, double *buf) +{ + int i,j,k,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + h_f(j,0) += buf[m++]; + h_f(j,1) += buf[m++]; + h_f(j,2) += buf[m++]; + } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_reverse_hybrid(n,list,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + } + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_border_hybrid(n,list,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,m; + double dx,dy,dz,dvx,dvy,dvz; + int omega_flag = atom->omega_flag; + int angmom_flag = atom->angmom_flag; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_angmom(j,2); + } + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_angmom(j,2); + } + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + if (h_mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_angmom(j,2); + } + } + } + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_border_hybrid(n,list,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_border(int n, int first, double *buf) +{ + int i,k,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag[i] = (tagint) ubuf(buf[m++]).i; + h_type[i] = (int) ubuf(buf[m++]).i; + h_mask[i] = (int) ubuf(buf[m++]).i; + } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_border_vel(int n, int first, double *buf) +{ + int i,k,m,last; + int omega_flag = atom->omega_flag; + int angmom_flag = atom->angmom_flag; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag[i] = (tagint) ubuf(buf[m++]).i; + h_type[i] = (int) ubuf(buf[m++]).i; + h_mask[i] = (int) ubuf(buf[m++]).i; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + if (omega_flag) { + h_omega(i,0) = buf[m++]; + h_omega(i,1) = buf[m++]; + h_omega(i,2) = buf[m++]; + } + if (angmom_flag) { + h_angmom(i,0) = buf[m++]; + h_angmom(i,1) = buf[m++]; + h_angmom(i,2) = buf[m++]; + } + } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + pack each sub-style one after the other +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_exchange(int i, double *buf) +{ + int k,m; + + int tmp = atom->nextra_grow; + atom->nextra_grow = 0; + + m = 0; + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_exchange(i,&buf[m]); + + atom->nextra_grow = tmp; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for single atom received from another proc + unpack each sub-style one after the other + grow() occurs here so arrays for all sub-styles are grown +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::unpack_exchange(double *buf) +{ + int k,m; + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + int tmp = atom->nextra_grow; + atom->nextra_grow = 0; + + m = 0; + for (k = 0; k < nstyles; k++) { + m += styles[k]->unpack_exchange(&buf[m]); + atom->nlocal--; + } + + atom->nextra_grow = tmp; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> + unpack_exchange(nlocal,&buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::size_restart() +{ + int tmp = atom->nextra_restart; + atom->nextra_restart = 0; + + int n = 0; + for (int k = 0; k < nstyles; k++) + n += styles[k]->size_restart(); + + atom->nextra_restart = tmp; + + int nlocal = atom->nlocal; + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (int i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + + return n; +} + +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + pack each sub-style one after the other +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_restart(int i, double *buf) +{ + int tmp = atom->nextra_restart; + atom->nextra_restart = 0; + + int m = 0; + for (int k = 0; k < nstyles; k++) + m += styles[k]->pack_restart(i,&buf[m]); + + atom->nextra_restart = tmp; + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities + unpack each sub-style one after the other + grow() occurs here so arrays for all sub-styles are grown +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::unpack_restart(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); + } + + int tmp = atom->nextra_store; + atom->nextra_store = 0; + + int m = 0; + for (int k = 0; k < nstyles; k++) { + m += styles[k]->unpack_restart(&buf[m]); + atom->nlocal--; + } + atom->nextra_store = tmp; + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (buf[0]) - m; + for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + create each sub-style one after the other + grow() occurs here so arrays for all sub-styles are grown +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + for (int k = 0; k < nstyles; k++) { + styles[k]->create_atom(itype,coord); + atom->nlocal--; + } + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + grow() occurs here so arrays for all sub-styles are grown +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::data_atom(double *coord, imageint imagetmp, char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + h_tag[nlocal] = ATOTAGINT(values[0]); + h_type[nlocal] = atoi(values[1]); + if (h_type[nlocal] <= 0 || h_type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom h_type in Atoms section of data file"); + + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + + h_image[nlocal] = imagetmp; + h_mask[nlocal] = 1; + + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + if (atom->omega_flag) { + h_omega(nlocal,0) = 0.0; + h_omega(nlocal,1) = 0.0; + h_omega(nlocal,2) = 0.0; + } + if (atom->angmom_flag) { + h_angmom(nlocal,0) = 0.0; + h_angmom(nlocal,1) = 0.0; + h_angmom(nlocal,2) = 0.0; + } + + // each sub-style parses sub-style specific values + + int m = 5; + for (int k = 0; k < nstyles; k++) + m += styles[k]->data_atom_hybrid(nlocal,&values[m]); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Velocities section of data file +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::data_vel(int m, char **values) +{ + h_v(m,0) = atof(values[0]); + h_v(m,1) = atof(values[1]); + h_v(m,2) = atof(values[2]); + + // each sub-style parses sub-style specific values + + int n = 3; + for (int k = 0; k < nstyles; k++) + n += styles[k]->data_vel_hybrid(m,&values[n]); +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::pack_data(double **buf) +{ + int k,m; + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(h_tag[i]).d; + buf[i][1] = ubuf(h_type[i]).d; + buf[i][2] = h_x(i,0); + buf[i][3] = h_x(i,1); + buf[i][4] = h_x(i,2); + + m = 5; + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_data_hybrid(i,&buf[i][m]); + + buf[i][m] = ubuf((h_image[i] & IMGMASK) - IMGMAX).d; + buf[i][m+1] = ubuf((h_image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][m+2] = ubuf((h_image[i] >> IMG2BITS) - IMGMAX).d; + } +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 h_image flags +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::write_data(FILE *fp, int n, double **buf) +{ + int k,m; + + for (int i = 0; i < n; i++) { + fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4]); + + m = 5; + for (k = 0; k < nstyles; k++) + m += styles[k]->write_data_hybrid(fp,&buf[i][m]); + + fprintf(fp," %d %d %d\n", + (int) ubuf(buf[i][m]).i,(int) ubuf(buf[i][m+1]).i, + (int) ubuf(buf[i][m+2]).i); + } +} + +/* ---------------------------------------------------------------------- + pack velocity info for data file +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::pack_vel(double **buf) +{ + int k,m; + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(h_tag[i]).d; + buf[i][1] = h_v(i,0); + buf[i][2] = h_v(i,1); + buf[i][3] = h_v(i,2); + + m = 4; + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_vel_hybrid(i,&buf[i][m]); + } +} + +/* ---------------------------------------------------------------------- + write velocity info to data file +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::write_vel(FILE *fp, int n, double **buf) +{ + int k,m; + + for (int i = 0; i < n; i++) { + fprintf(fp,TAGINT_FORMAT " %g %g %g", + (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3]); + + m = 4; + for (k = 0; k < nstyles; k++) + m += styles[k]->write_vel_hybrid(fp,&buf[i][m]); + + fprintf(fp,"\n"); + } +} + +/* ---------------------------------------------------------------------- + assign an index to named atom property and return index + returned value encodes which sub-style and index returned by sub-style + return -1 if name is unknown to any sub-styles +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::property_atom(char *name) +{ + for (int k = 0; k < nstyles; k++) { + int index = styles[k]->property_atom(name); + if (index >= 0) return index*nstyles + k; + } + return -1; +} + +/* ---------------------------------------------------------------------- + pack per-atom data into buf for ComputePropertyAtom + index maps to data specific to this atom style +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::pack_property_atom(int multiindex, double *buf, + int nvalues, int groupbit) +{ + int k = multiindex % nstyles; + int index = multiindex/nstyles; + styles[k]->pack_property_atom(index,buf,nvalues,groupbit); +} + +/* ---------------------------------------------------------------------- + allstyles = list of all atom styles in this LAMMPS executable +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::build_styles() +{ + nallstyles = 0; +#define ATOM_CLASS +#define AtomStyle(key,Class) nallstyles++; +#include "style_atom.h" +#undef AtomStyle +#undef ATOM_CLASS + + allstyles = new char*[nallstyles]; + + int n; + nallstyles = 0; +#define ATOM_CLASS +#define AtomStyle(key,Class) \ + n = strlen(#key) + 1; \ + allstyles[nallstyles] = new char[n]; \ + strcpy(allstyles[nallstyles],#key); \ + nallstyles++; +#include "style_atom.h" +#undef AtomStyle +#undef ATOM_CLASS +} + +/* ---------------------------------------------------------------------- + allstyles = list of all known atom styles +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::known_style(char *str) +{ + for (int i = 0; i < nallstyles; i++) + if (strcmp(str,allstyles[i]) == 0) return 1; + return 0; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecHybridKokkos::memory_usage() +{ + bigint bytes = 0; + for (int k = 0; k < nstyles; k++) bytes += styles[k]->memory_usage(); + return bytes; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::sync(ExecutionSpace space, unsigned int h_mask) +{ + for (int k = 0; k < nstyles; k++) ((AtomVecKokkos*) styles[k])->sync(space,h_mask); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::sync_overlapping_device(ExecutionSpace space, unsigned int h_mask) +{ + for (int k = 0; k < nstyles; k++) ((AtomVecKokkos*) styles[k])->sync_overlapping_device(space,h_mask); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::modified(ExecutionSpace space, unsigned int h_mask) +{ + for (int k = 0; k < nstyles; k++) ((AtomVecKokkos*) styles[k])->modified(space,h_mask); +} diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.h b/src/KOKKOS/atom_vec_hybrid_kokkos.h new file mode 100644 index 0000000000..802314bfa6 --- /dev/null +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.h @@ -0,0 +1,161 @@ +/* -*- 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 ATOM_CLASS + +AtomStyle(hybrid/kk,AtomVecHybridKokkos) + +#else + +#ifndef LMP_ATOM_VEC_HYBRID_KOKKOS_H +#define LMP_ATOM_VEC_HYBRID_KOKKOS_H + +#include +#include "atom_vec.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +class AtomVecHybridKokkos : public AtomVecKokkos { + public: + int nstyles; + class AtomVec **styles; + char **keywords; + + AtomVecHybridKokkos(class LAMMPS *); + ~AtomVecHybridKokkos(); + void process_args(int, char **); + void init(); + void grow(int); + void grow_reset(); + void copy(int, int, int); + void clear_bonus(); + void force_clear(int, size_t); + int pack_comm(int, int *, double *, int, int *); + int pack_comm_vel(int, int *, double *, int, int *); + void unpack_comm(int, int, double *); + void unpack_comm_vel(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + int pack_border(int, int *, double *, int, int *); + int pack_border_vel(int, int *, double *, int, int *); + void unpack_border(int, int, double *); + void unpack_border_vel(int, int, double *); + int pack_exchange(int, double *); + int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, imageint, char **); + int data_atom_hybrid(int, char **) {return 0;} + void data_vel(int, char **); + void pack_data(double **); + void write_data(FILE *, int, double **); + void pack_vel(double **); + void write_vel(FILE *, int, double **); + int property_atom(char *); + void pack_property_atom(int, double *, int, int); + bigint memory_usage(); + + int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, const int pbc[]); + void unpack_comm_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf); + int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, + const int & iswap, const int nfirst, + const int &pbc_flag, const int pbc[]); + int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, + DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space); + void unpack_border_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf, + ExecutionSpace space); + int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space, int dim, + X_FLOAT lo, X_FLOAT hi); + int unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, + int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, + ExecutionSpace space); + + void sync(ExecutionSpace space, unsigned int mask); + void modified(ExecutionSpace space, unsigned int mask); + void sync_overlapping_device(ExecutionSpace space, unsigned int mask); + + private: + tagint *tag; + int *type,*mask; + imageint *image; + double **x,**v,**f; + double **omega,**angmom; + + DAT::t_tagint_1d d_tag; + DAT::t_int_1d d_type, d_mask; + HAT::t_tagint_1d h_tag; + HAT::t_int_1d h_type, h_mask; + + DAT::t_imageint_1d d_image; + HAT::t_imageint_1d h_image; + + DAT::t_x_array d_x; + DAT::t_v_array d_v; + DAT::t_f_array d_f; + HAT::t_x_array h_x; + HAT::t_v_array h_v; + HAT::t_f_array h_f; + + DAT::t_v_array d_omega, d_angmom; + HAT::t_v_array h_omega, h_angmom; + + DAT::tdual_int_1d k_count; + + int nallstyles; + char **allstyles; + + void build_styles(); + int known_style(char *); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Atom style hybrid cannot have hybrid as an argument + +Self-explanatory. + +E: Atom style hybrid cannot use same atom style twice + +Self-explanatory. + +E: Cannot mix molecular and molecule template atom styles + +Self-explanatory. + +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + +*/ -- GitLab From d6f6c6faf1ecd6b25b1297b2f546632f3864fa45 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sun, 12 Mar 2017 16:05:28 -0400 Subject: [PATCH 197/337] USER-DPD: Make newton-off warning in pair_dpd_fdt* be more selective. If using fix_shardlow, the pair_dpd_fdt* styles are okay with newton off, because the stocastic forces are thus only done in fix_shardlow. --- src/USER-DPD/pair_dpd_fdt.cpp | 11 +++++------ src/USER-DPD/pair_dpd_fdt_energy.cpp | 11 +++++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/USER-DPD/pair_dpd_fdt.cpp b/src/USER-DPD/pair_dpd_fdt.cpp index 90aa4f1eaf..987755db8a 100644 --- a/src/USER-DPD/pair_dpd_fdt.cpp +++ b/src/USER-DPD/pair_dpd_fdt.cpp @@ -316,18 +316,17 @@ void PairDPDfdt::init_style() if (comm->ghost_velocity == 0) error->all(FLERR,"Pair dpd/fdt requires ghost atoms store velocity"); - // if newton off, forces between atoms ij will be double computed - // using different random numbers - - if (force->newton_pair == 0 && comm->me == 0) error->warning(FLERR, - "Pair dpd/fdt requires newton pair on"); - splitFDT_flag = false; int irequest = neighbor->request(this,instance_me); for (int i = 0; i < modify->nfix; i++) if (strncmp(modify->fix[i]->style,"shardlow", 8) == 0){ splitFDT_flag = true; } + + // if newton off, forces between atoms ij will be double computed + // using different random numbers if splitFDT_flag is false + if (!splitFDT_flag && (force->newton_pair == 0) && (comm->me == 0)) error->warning(FLERR, + "Pair dpd/fdt requires newton pair on if not also using fix shardlow"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp index ad6310a283..bf86f95b5f 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.cpp +++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp @@ -405,12 +405,6 @@ void PairDPDfdtEnergy::init_style() if (comm->ghost_velocity == 0) error->all(FLERR,"Pair dpd/fdt/energy requires ghost atoms store velocity"); - // if newton off, forces between atoms ij will be double computed - // using different random numbers - - if (force->newton_pair == 0 && comm->me == 0) error->warning(FLERR, - "Pair dpd/fdt/energy requires newton pair on"); - splitFDT_flag = false; int irequest = neighbor->request(this,instance_me); for (int i = 0; i < modify->nfix; i++) @@ -418,6 +412,11 @@ void PairDPDfdtEnergy::init_style() splitFDT_flag = true; } + // if newton off, forces between atoms ij will be double computed + // using different random numbers if splitFDT_flag is false + if (!splitFDT_flag && (force->newton_pair == 0) && (comm->me == 0)) error->warning(FLERR, + "Pair dpd/fdt/energy requires newton pair on if not also using fix shardlow"); + bool eos_flag = false; for (int i = 0; i < modify->nfix; i++) if (strncmp(modify->fix[i]->style,"eos",3) == 0) eos_flag = true; -- GitLab From e908b8dbea0284460ea070cd98862dc4abd5d4c1 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sun, 12 Mar 2017 16:20:09 -0400 Subject: [PATCH 198/337] USER-DPD Kokkos: correct some error messages --- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 4 ++-- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index bd0f08efa6..1c63b9af95 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -104,7 +104,7 @@ void PairDPDfdtEnergyKokkos::init_style() neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 1; } else { - error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); + error->all(FLERR,"Cannot use chosen neighbor list style with dpd/fdt/energy/kk"); } #ifdef DPD_USE_RAN_MARS @@ -139,7 +139,7 @@ void PairDPDfdtEnergyKokkos::init_style() neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 1; } else { - error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); + error->all(FLERR,"Cannot use chosen neighbor list style with dpd/fdt/energy/kk"); } #ifdef DPD_USE_RAN_MARS diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 4b0748721c..e22a4bff22 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -112,7 +112,7 @@ void PairExp6rxKokkos::init_style() neighbor->requests[irequest]->full = 0; neighbor->requests[irequest]->half = 1; } else { - error->all(FLERR,"Cannot use chosen neighbor list style with reax/c/kk"); + error->all(FLERR,"Cannot use chosen neighbor list style with exp6/rx/kk"); } } @@ -1242,4 +1242,4 @@ template class PairExp6rxKokkos; #ifdef KOKKOS_HAVE_CUDA template class PairExp6rxKokkos; #endif -} \ No newline at end of file +} -- GitLab From b1b377cb594738d35b31ba33ea2d125e78483ee3 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sun, 12 Mar 2017 17:48:51 -0400 Subject: [PATCH 199/337] USER-DPD: fix_shardlow's neighbor request needs "newton on" override. Even if other stuff is doing newton off, SSA must have it turned on. --- src/USER-DPD/fix_shardlow.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 5132d937ea..2b7ef9314b 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -132,10 +132,11 @@ int FixShardlow::setmask() void FixShardlow::init() { int irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->pair = 0; - neighbor->requests[irequest]->fix = 1; - neighbor->requests[irequest]->ghost= 1; - neighbor->requests[irequest]->ssa = 1; + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->ghost = 1; + neighbor->requests[irequest]->ssa = 1; + neighbor->requests[irequest]->newton = 1; // SSA requires newton on } /* ---------------------------------------------------------------------- */ -- GitLab From d5eceebf3283cd460a4230672c582b952bef36f0 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 13 Mar 2017 01:56:00 -0400 Subject: [PATCH 200/337] USER-DPD Kokkos: add support for full neighbor lists. Note: "newton on" still required if using non-kokkos pair styles or fixes. Non-kokkos pairs/fixes don't expect their half lists with newton off, which happens if newton is turned off globally by kokkos via commandline. Note2: Regardless, fix_shardlow* will still use half lists and newton on. --- src/KOKKOS/fix_rx_kokkos.cpp | 9 +++-- src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp | 44 +++++++++++++++++++---- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 16 ++++++--- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 27 +++++++++++--- src/KOKKOS/pair_table_rx_kokkos.cpp | 16 +++++++++ 5 files changed, 96 insertions(+), 16 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 08a20ac9a7..ac81e5c2a7 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -1450,6 +1450,11 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF computeLocalTemperature<_wtflag, _localTempFlag, true , HALFTHREAD> (); \ else \ computeLocalTemperature<_wtflag, _localTempFlag, false, HALFTHREAD> (); \ + else if (neighflag == FULL) \ + if (newton_pair) \ + computeLocalTemperature<_wtflag, _localTempFlag, true , FULL> (); \ + else \ + computeLocalTemperature<_wtflag, _localTempFlag, false, FULL> (); \ } // Are there is no other options than wtFlag = (0)LUCY and localTempFlag = NONE : HARMONIC? @@ -1934,12 +1939,12 @@ void FixRxKokkos::operator()(Tag_FixRxKokkos_firstPairOperator::compute(int eflag_in, int vflag_in) if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } } else { if (neighflag == HALF) { @@ -251,6 +259,14 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } } } @@ -291,6 +307,14 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } } else { if (neighflag == HALF) { @@ -309,6 +333,14 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } } @@ -405,7 +437,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSp fx_i += delx*fpair; fy_i += dely*fpair; fz_i += delz*fpair; - if (NEWTON_PAIR || j < nlocal) { + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { a_f(j,0) -= delx*fpair; a_f(j,1) -= dely*fpair; a_f(j,2) -= delz*fpair; @@ -418,7 +450,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSp evdwl = 0.5*a0_ij*cut_ij * wd; evdwl *= factor_dpd; if (EVFLAG) - ev.evdwl += ((NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); @@ -522,7 +554,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNo fx_i += delx*fpair; fy_i += dely*fpair; fz_i += delz*fpair; - if (NEWTON_PAIR || j < nlocal) { + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { a_f(j,0) -= delx*fpair; a_f(j,1) -= dely*fpair; a_f(j,2) -= delz*fpair; @@ -548,7 +580,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNo uTmp *= 0.5; a_duMech[i] += uTmp; - if (NEWTON_PAIR || j < nlocal) { + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { a_duMech[j] += uTmp; } @@ -562,7 +594,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNo uTmp += randPair; a_duCond[i] += uTmp; - if (NEWTON_PAIR || j < nlocal) { + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { a_duCond[j] -= uTmp; } @@ -573,7 +605,7 @@ void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNo evdwl = 0.5*a0_ij*cut_ij * wd; evdwl *= factor_dpd; if (EVFLAG) - ev.evdwl += ((NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index e22a4bff22..abc158d72c 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -221,6 +221,14 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } k_error_flag.template modify(); @@ -509,7 +517,7 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxCompute::operator()(TagPairExp6rxComputetemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); } diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 4379cc4001..ef30fdc6f6 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -216,6 +216,14 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } } if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK); @@ -378,7 +386,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute::operator()(TagPairMultiLucyRXCompute @@ -491,6 +499,17 @@ void PairMultiLucyRXKokkos::computeLocalDensity() Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else if (neighflag == FULL) { + if (newton_pair) + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); } atomKK->modified(execution_space,DPDRHO_MASK); @@ -548,7 +567,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLoca const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; const double factor = factor_type11*(1.0 + 1.5*r_over_rcut)*tmpFactor4; rho_i_contrib += factor; - if (NEWTON_PAIR || j < nlocal) + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) a_rho[j] += factor; } } else if (rsq < d_cutsq(itype,jtype)) { @@ -557,7 +576,7 @@ void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLoca const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; const double factor = (84.0/(5.0*pi*rcut*rcut*rcut))*(1.0+3.0*sqrt(rsq)/(2.0*rcut))*tmpFactor4; rho_i_contrib += factor; - if (NEWTON_PAIR || j < nlocal) + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) a_rho[j] += factor; } } diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index cbb1096712..e3d416f293 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -693,6 +693,14 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else if (neighflag == FULL) { + compute_all_items( + newton_pair, ev, nlocal, + l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); } } else { if (neighflag == HALFTHREAD) { @@ -711,6 +719,14 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else if (neighflag == FULL) { + compute_all_items( + newton_pair, ev, nlocal, + l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); } } -- GitLab From 4b4bc7dc3bd11d52e6ad49e99749f80405d7dbbb Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 13 Mar 2017 03:03:27 -0400 Subject: [PATCH 201/337] USER-DPD: specialize PairTableRXKokkos's compute_all_items() on NEWTON_PAIR No noticable performance change, but it does eliminate a deep conditional. --- src/KOKKOS/pair_table_rx_kokkos.cpp | 110 +++++++++++++++++----------- 1 file changed, 69 insertions(+), 41 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index e3d416f293..e93ea53fa4 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -514,9 +514,8 @@ compute_item( return ev; } -template +template static void compute_all_items( - int newton_pair, EV_FLOAT& ev, int nlocal, int inum, @@ -560,42 +559,23 @@ static void compute_all_items( if (eflag || vflag) { Kokkos::parallel_reduce(inum, LAMMPS_LAMBDA(int i, EV_FLOAT& energy_virial) { - if (newton_pair) { - energy_virial += - compute_item( - i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, - mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, - special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, eflag, eflag_atom, - vflag, vflag_global, vflag_atom, v_vatom, v_eatom); - } else { energy_virial += - compute_item( + compute_item( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, v_vatom, v_eatom); - } }, ev); } else { Kokkos::parallel_for(inum, LAMMPS_LAMBDA(int i) { - if (newton_pair) { - compute_item( - i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, - mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, - special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, - d_table_const, eflag, eflag_atom, - vflag, vflag_global, vflag_atom, v_vatom, v_eatom); - } else { - compute_item( + compute_item( i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, v_vatom, v_eatom); - } }); } } @@ -678,55 +658,103 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) EV_FLOAT ev; if(atom->ntypes > MAX_TYPES_STACKPARAMS) { if (neighflag == HALFTHREAD) { - compute_all_items( - newton_pair, ev, nlocal, - l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } } else if (neighflag == HALF) { - compute_all_items( - newton_pair, ev, nlocal, - l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } } else if (neighflag == FULL) { - compute_all_items( - newton_pair, ev, nlocal, - l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } } } else { if (neighflag == HALFTHREAD) { - compute_all_items( - newton_pair, ev, nlocal, - l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } } else if (neighflag == HALF) { - compute_all_items( - newton_pair, ev, nlocal, - l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } } else if (neighflag == FULL) { - compute_all_items( - newton_pair, ev, nlocal, - l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, d_table_const, eflag, eflag_atom, vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } } } -- GitLab From d2cbfef13bac634b99459f3f4f78465ed03e712d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 13 Mar 2017 09:01:35 -0600 Subject: [PATCH 202/337] Add CUDA support to atom_vec_hybrid_kokkos --- src/KOKKOS/atom_vec_hybrid_kokkos.cpp | 37 +++++++++++++++++++++++---- src/KOKKOS/atom_vec_hybrid_kokkos.h | 2 +- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp index 0c9d261be5..e5e361e70a 100644 --- a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp @@ -13,7 +13,6 @@ #include #include -#include "atom_vec_kokkos.h" #include "atom_vec_hybrid_kokkos.h" #include "atom_kokkos.h" #include "domain.h" @@ -21,6 +20,7 @@ #include "fix.h" #include "memory.h" #include "error.h" +#include "atom_masks.h" using namespace LAMMPS_NS; @@ -132,10 +132,6 @@ void AtomVecHybridKokkos::init() { AtomVec::init(); for (int k = 0; k < nstyles; k++) styles[k]->init(); - -#ifdef KOKKOS_HAVE_CUDA - error->all(FLERR,"AtomVecHybridKokkos doesn't yet support CUDA"); -#endif } /* ---------------------------------------------------------------------- @@ -303,6 +299,8 @@ int AtomVecHybridKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int int AtomVecHybridKokkos::pack_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { + sync(Host,X_MASK); + int i,j,k,m; double dx,dy,dz; @@ -345,6 +343,8 @@ int AtomVecHybridKokkos::pack_comm(int n, int *list, double *buf, int AtomVecHybridKokkos::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, int *pbc) { + sync(Host,X_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + int i,j,k,m; double dx,dy,dz,dvx,dvy,dvz; int omega_flag = atom->omega_flag; @@ -455,6 +455,8 @@ void AtomVecHybridKokkos::unpack_comm(int n, int first, double *buf) h_x(i,2) = buf[m++]; } + modified(Host,X_MASK); + // unpack sub-style contributions as contiguous chunks for (k = 0; k < nstyles; k++) @@ -490,6 +492,8 @@ void AtomVecHybridKokkos::unpack_comm_vel(int n, int first, double *buf) } } + modified(Host,X_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + // unpack sub-style contributions as contiguous chunks for (k = 0; k < nstyles; k++) @@ -500,6 +504,8 @@ void AtomVecHybridKokkos::unpack_comm_vel(int n, int first, double *buf) int AtomVecHybridKokkos::pack_reverse(int n, int first, double *buf) { + sync(Host,F_MASK); + int i,k,m,last; m = 0; @@ -532,6 +538,8 @@ void AtomVecHybridKokkos::unpack_reverse(int n, int *list, double *buf) h_f(j,2) += buf[m++]; } + modified(Host,F_MASK); + // unpack sub-style contributions as contiguous chunks for (k = 0; k < nstyles; k++) @@ -543,6 +551,8 @@ void AtomVecHybridKokkos::unpack_reverse(int n, int *list, double *buf) int AtomVecHybridKokkos::pack_border(int n, int *list, double *buf, int pbc_flag, int *pbc) { + sync(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + int i,j,k,m; double dx,dy,dz; @@ -595,6 +605,7 @@ int AtomVecHybridKokkos::pack_border(int n, int *list, double *buf, int AtomVecHybridKokkos::pack_border_vel(int n, int *list, double *buf, int pbc_flag, int *pbc) { + sync(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); int i,j,k,m; double dx,dy,dz,dvx,dvy,dvz; int omega_flag = atom->omega_flag; @@ -722,6 +733,8 @@ void AtomVecHybridKokkos::unpack_border(int n, int first, double *buf) h_mask[i] = (int) ubuf(buf[m++]).i; } + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + // unpack sub-style contributions as contiguous chunks for (k = 0; k < nstyles; k++) @@ -766,6 +779,8 @@ void AtomVecHybridKokkos::unpack_border_vel(int n, int first, double *buf) } } + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + // unpack sub-style contributions as contiguous chunks for (k = 0; k < nstyles; k++) @@ -946,6 +961,8 @@ void AtomVecHybridKokkos::create_atom(int itype, double *coord) void AtomVecHybridKokkos::data_atom(double *coord, imageint imagetmp, char **values) { + sync(Host,X_MASK|TAG_MASK|TYPE_MASK|IMAGE_MASK|MASK_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + int nlocal = atom->nlocal; if (nlocal == nmax) grow(0); @@ -975,6 +992,8 @@ void AtomVecHybridKokkos::data_atom(double *coord, imageint imagetmp, char **val h_angmom(nlocal,2) = 0.0; } + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|IMAGE_MASK|MASK_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + // each sub-style parses sub-style specific values int m = 5; @@ -990,10 +1009,14 @@ void AtomVecHybridKokkos::data_atom(double *coord, imageint imagetmp, char **val void AtomVecHybridKokkos::data_vel(int m, char **values) { + sync(Host,V_MASK); + h_v(m,0) = atof(values[0]); h_v(m,1) = atof(values[1]); h_v(m,2) = atof(values[2]); + modified(Host,V_MASK); + // each sub-style parses sub-style specific values int n = 3; @@ -1007,6 +1030,8 @@ void AtomVecHybridKokkos::data_vel(int m, char **values) void AtomVecHybridKokkos::pack_data(double **buf) { + sync(Host,TAG_MASK|TYPE_MASK|X_MASK); + int k,m; int nlocal = atom->nlocal; @@ -1056,6 +1081,8 @@ void AtomVecHybridKokkos::write_data(FILE *fp, int n, double **buf) void AtomVecHybridKokkos::pack_vel(double **buf) { + sync(Host,V_MASK); + int k,m; int nlocal = atom->nlocal; diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.h b/src/KOKKOS/atom_vec_hybrid_kokkos.h index 802314bfa6..fcf48f6c74 100644 --- a/src/KOKKOS/atom_vec_hybrid_kokkos.h +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.h @@ -21,7 +21,7 @@ AtomStyle(hybrid/kk,AtomVecHybridKokkos) #define LMP_ATOM_VEC_HYBRID_KOKKOS_H #include -#include "atom_vec.h" +#include "atom_vec_kokkos.h" #include "kokkos_type.h" namespace LAMMPS_NS { -- GitLab From 5925460a275fe4cf588e86eab45242351f5e86cf Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Tue, 14 Mar 2017 14:27:23 -0500 Subject: [PATCH 203/337] Improve the performance of read_data of gzip'ed files using taskset. Normally, the gzip process would be pinned to the same core as the MPI rank 0 process, which makes the pipe stay in one core's cache, but forces the two process to fight for that core, slowing things down. --- src/read_data.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/read_data.cpp b/src/read_data.cpp index d6a33d6e9d..3e180b7aeb 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -50,7 +50,7 @@ using namespace LAMMPS_NS; #define MAXLINE 256 #define LB_FACTOR 1.1 -#define CHUNK 1024 +#define CHUNK 4096 #define DELTA 4 // must be 2 or larger #define MAXBODY 32 // max # of lines in one body @@ -1856,8 +1856,12 @@ void ReadData::open(char *file) if (!compressed) fp = fopen(file,"r"); else { #ifdef LAMMPS_GZIP - char gunzip[128]; - sprintf(gunzip,"gzip -c -d %s",file); + char gunzip[2048]; + // Use taskset to force the gzip process to NOT run on the 0th "CPU", which should + // keep it from thrashing with the MPI rank zero process (the one reading the pipe). + // This is Linux specific, and the 1023 upper range might also be system specific. + // Use of something like hwloc would be more portable... but more complicated. + sprintf(gunzip,"taskset -c 1-1023 gzip -c -d %s",file); #ifdef _WIN32 fp = _popen(gunzip,"rb"); -- GitLab From f4a08ba4fcaed73f5bc9660266a75ddc868c9c3d Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 15 Mar 2017 09:25:16 -0600 Subject: [PATCH 204/337] pass Views by reference for pair_table_rx_kokkos this greatly speeds up pair_table_rx_kokkos, and should put it on par with pair_table_rx in the Serial case --- src/KOKKOS/neigh_list_kokkos.h | 4 +-- src/KOKKOS/pair_table_rx_kokkos.cpp | 44 ++++++++++++++--------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/KOKKOS/neigh_list_kokkos.h b/src/KOKKOS/neigh_list_kokkos.h index b43e1106f2..cece97197d 100644 --- a/src/KOKKOS/neigh_list_kokkos.h +++ b/src/KOKKOS/neigh_list_kokkos.h @@ -89,8 +89,8 @@ public: KOKKOS_INLINE_FUNCTION static AtomNeighborsConst static_neighbors_const(int i, - typename ArrayTypes::t_neighbors_2d_const d_neighbors, - typename ArrayTypes::t_int_1d_const d_numneigh) { + typename ArrayTypes::t_neighbors_2d_const const& d_neighbors, + typename ArrayTypes::t_int_1d_const const& d_numneigh) { return AtomNeighborsConst(&d_neighbors(i,0),d_numneigh(i), &d_neighbors(i,1)-&d_neighbors(i,0)); } diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index e93ea53fa4..044f303bf5 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -193,7 +193,7 @@ KOKKOS_INLINE_FUNCTION static F_FLOAT compute_fpair(F_FLOAT rsq, int itype, int jtype, - typename PairTableRXKokkos::TableDeviceConst d_table_const + typename PairTableRXKokkos::TableDeviceConst const& d_table_const ) { Pair::union_int_float_t rsq_lookup; double fpair; @@ -228,7 +228,7 @@ static F_FLOAT compute_evdwl( F_FLOAT rsq, int itype, int jtype, - typename PairTableRXKokkos::TableDeviceConst d_table_const + typename PairTableRXKokkos::TableDeviceConst const& d_table_const ) { double evdwl; Pair::union_int_float_t rsq_lookup; @@ -274,11 +274,11 @@ ev_tally( Kokkos::View::t_virial_array::array_layout, DeviceType, - Kokkos::MemoryTraits::value> > v_vatom, + Kokkos::MemoryTraits::value> > const& v_vatom, Kokkos::View::t_efloat_1d::array_layout, DeviceType, - Kokkos::MemoryTraits::value> > v_eatom) + Kokkos::MemoryTraits::value> > const& v_eatom) { if (eflag) { if (eflag_atom) { @@ -374,32 +374,32 @@ static EV_FLOAT compute_item( int ii, int nlocal, - typename ArrayTypes::t_int_1d_const d_ilist, - typename ArrayTypes::t_neighbors_2d_const d_neighbors, - typename ArrayTypes::t_int_1d_const d_numneigh, - typename ArrayTypes::t_x_array_randomread x, - typename ArrayTypes::t_int_1d_randomread type, - Kokkos::View mixWtSite1old, - Kokkos::View mixWtSite2old, - Kokkos::View mixWtSite1, - Kokkos::View mixWtSite2, - Few special_lj, - Few, MAX_TYPES_STACKPARAMS+1> m_cutsq, - typename ArrayTypes::t_ffloat_2d d_cutsq, + typename ArrayTypes::t_int_1d_const const& d_ilist, + typename ArrayTypes::t_neighbors_2d_const const& d_neighbors, + typename ArrayTypes::t_int_1d_const const& d_numneigh, + typename ArrayTypes::t_x_array_randomread const& x, + typename ArrayTypes::t_int_1d_randomread const& type, + Kokkos::View const& mixWtSite1old, + Kokkos::View const& mixWtSite2old, + Kokkos::View const& mixWtSite1, + Kokkos::View const& mixWtSite2, + Few const& special_lj, + Few, MAX_TYPES_STACKPARAMS+1> const& m_cutsq, + typename ArrayTypes::t_ffloat_2d const& d_cutsq, Kokkos::View::t_f_array::array_layout, DeviceType, - Kokkos::MemoryTraits::value> > f, + Kokkos::MemoryTraits::value> > const& f, Kokkos::View::t_efloat_1d::array_layout, DeviceType, - Kokkos::MemoryTraits::value> > uCG, + Kokkos::MemoryTraits::value> > const& uCG, Kokkos::View::t_efloat_1d::array_layout, DeviceType, - Kokkos::MemoryTraits::value> > uCGnew, + Kokkos::MemoryTraits::value> > const& uCGnew, int isite1, int isite2, - typename PairTableRXKokkos::TableDeviceConst d_table_const, + typename PairTableRXKokkos::TableDeviceConst const& d_table_const, int eflag, int eflag_atom, int vflag, @@ -408,11 +408,11 @@ compute_item( Kokkos::View::t_virial_array::array_layout, DeviceType, - Kokkos::MemoryTraits::value> > v_vatom, + Kokkos::MemoryTraits::value> > const& v_vatom, Kokkos::View::t_efloat_1d::array_layout, DeviceType, - Kokkos::MemoryTraits::value> > v_eatom) { + Kokkos::MemoryTraits::value> > const& v_eatom) { EV_FLOAT ev; auto i = d_ilist(ii); auto xtmp = x(i,0); -- GitLab From 7ebed717de983c351208b8e2080b37fbf761d522 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 15 Mar 2017 16:05:51 -0600 Subject: [PATCH 205/337] Adding gb_test --- src/KOKKOS/kokkos.cpp | 10 +- src/KOKKOS/kokkos.h | 1 + src/KOKKOS/pair_exp6_rx_kokkos.cpp | 425 +++++++++++++++++++++++++++++ src/KOKKOS/pair_exp6_rx_kokkos.h | 27 ++ 4 files changed, 462 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp index b8be74ac1e..a000ad5550 100644 --- a/src/KOKKOS/kokkos.cpp +++ b/src/KOKKOS/kokkos.cpp @@ -34,6 +34,7 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) lmp->kokkos = this; auto_sync = 1; + gb_test = 0; int me = 0; MPI_Comm_rank(world,&me); @@ -156,6 +157,7 @@ void KokkosLMP::accelerator(int narg, char **arg) neighflag = FULL; neighflag_qeq = FULL; neighflag_qeq_set = 0; + gb_test = 0; int newtonflag = 0; double binsize = 0.0; exchange_comm_classic = forward_comm_classic = 0; @@ -197,6 +199,12 @@ void KokkosLMP::accelerator(int narg, char **arg) else if (strcmp(arg[iarg+1],"on") == 0) newtonflag = 1; else error->all(FLERR,"Illegal package kokkos command"); iarg += 2; + } else if (strcmp(arg[iarg],"gb/test") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal package kokkos command"); + if (strcmp(arg[iarg+1],"off") == 0) gb_test = 0; + else if (strcmp(arg[iarg+1],"on") == 0) gb_test = 1; + else error->all(FLERR,"Illegal package kokkos command"); + iarg += 2; } else if (strcmp(arg[iarg],"comm") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal package kokkos command"); if (strcmp(arg[iarg+1],"no") == 0) { @@ -293,4 +301,4 @@ void KokkosLMP::my_signal_handler(int sig) if (sig == SIGSEGV) { kill(getpid(),SIGABRT); } -} \ No newline at end of file +} diff --git a/src/KOKKOS/kokkos.h b/src/KOKKOS/kokkos.h index 8e28b38cbf..3784d806bf 100644 --- a/src/KOKKOS/kokkos.h +++ b/src/KOKKOS/kokkos.h @@ -32,6 +32,7 @@ class KokkosLMP : protected Pointers { int num_threads,ngpu; int numa; int auto_sync; + int gb_test; KokkosLMP(class LAMMPS *, int, char **); ~KokkosLMP(); diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index abc158d72c..8cf235964c 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -205,6 +205,8 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) EV_FLOAT ev; + if (!lmp->kokkos->gb_test) { + if (neighflag == HALF) { if (newton_pair) { if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); @@ -231,6 +233,48 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) } } + } else { // No atomics + + num_threads = lmp->kokkos->num_threads; + int nmax = f.dimension_1(); + if (nmax > t_f.dimension_1()) { + t_f = t_f_array_thread("pair_exp6_rx:t_f",num_threads,nmax); + t_uCG = t_efloat_1d_thread("pair_exp6_rx:t_uCG",num_threads,nmax); + t_uCGnew = t_efloat_1d_thread("pair_exp6_rx:t_UCGnew",num_threads,nmax); + } + + Kokkos::parallel_for(Kokkos::RangePolicy(0,nmax),*this); + + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + + Kokkos::parallel_for(Kokkos::RangePolicy(0,nmax),*this); + + } + k_error_flag.template modify(); k_error_flag.template sync(); if (k_error_flag.h_view()) @@ -636,6 +680,387 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxComputetemplate operator()(TagPairExp6rxCompute(), ii, ev); } +// Experimental thread-safety using duplicated data instead of atomics + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxComputeNoAtomics, const int &ii, EV_FLOAT& ev) const { + + int tid = 0; +#ifndef KOKKOS_HAVE_CUDA + tid = DeviceType::hardware_thread_id(); +#endif + + int i,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; + double rsq,r2inv,r6inv,forceExp6,factor_lj; + double rCut,rCutInv,rCut2inv,rCut6inv,rCutExp,urc,durc; + double rm2ij,rm6ij; + double r,rexp; + + double alphaOld12_ij, rmOld12_ij, epsilonOld12_ij; + double alphaOld21_ij, rmOld21_ij, epsilonOld21_ij; + double alpha12_ij, rm12_ij, epsilon12_ij; + double alpha21_ij, rm21_ij, epsilon21_ij; + double rminv, buck1, buck2; + double epsilonOld1_i,alphaOld1_i,rmOld1_i; + double epsilonOld1_j,alphaOld1_j,rmOld1_j; + double epsilonOld2_i,alphaOld2_i,rmOld2_i; + double epsilonOld2_j,alphaOld2_j,rmOld2_j; + double epsilon1_i,alpha1_i,rm1_i; + double epsilon1_j,alpha1_j,rm1_j; + double epsilon2_i,alpha2_i,rm2_i; + double epsilon2_j,alpha2_j,rm2_j; + double evdwlOldEXP6_12, evdwlOldEXP6_21, fpairOldEXP6_12, fpairOldEXP6_21; + double evdwlEXP6_12, evdwlEXP6_21; + double mixWtSite1old_i, mixWtSite1old_j; + double mixWtSite2old_i, mixWtSite2old_j; + double mixWtSite1_i, mixWtSite1_j; + double mixWtSite2_i, mixWtSite2_j; + + const int nRep = 12; + const double shift = 1.05; + double rin1, aRep, uin1, win1, uin1rep, rin1exp, rin6, rin6inv; + + evdwlOld = 0.0; + evdwl = 0.0; + + i = d_ilist[ii]; + xtmp = x(i,0); + ytmp = x(i,1); + ztmp = x(i,2); + itype = type[i]; + jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + double uCG_i = 0.0; + double uCGnew_i = 0.0; + + { + epsilon1_i = PairExp6ParamData.epsilon1[i]; + alpha1_i = PairExp6ParamData.alpha1[i]; + rm1_i = PairExp6ParamData.rm1[i]; + mixWtSite1_i = PairExp6ParamData.mixWtSite1[i]; + epsilon2_i = PairExp6ParamData.epsilon2[i]; + alpha2_i = PairExp6ParamData.alpha2[i]; + rm2_i = PairExp6ParamData.rm2[i]; + mixWtSite2_i = PairExp6ParamData.mixWtSite2[i]; + epsilonOld1_i = PairExp6ParamData.epsilonOld1[i]; + alphaOld1_i = PairExp6ParamData.alphaOld1[i]; + rmOld1_i = PairExp6ParamData.rmOld1[i]; + mixWtSite1old_i = PairExp6ParamData.mixWtSite1old[i]; + epsilonOld2_i = PairExp6ParamData.epsilonOld2[i]; + alphaOld2_i = PairExp6ParamData.alphaOld2[i]; + rmOld2_i = PairExp6ParamData.rmOld2[i]; + mixWtSite2old_i = PairExp6ParamData.mixWtSite2old[i]; + } + + for (jj = 0; jj < jnum; jj++) { + int j = d_neighbors(i,jj); + factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x(j,0); + dely = ytmp - x(j,1); + delz = ztmp - x(j,2); + + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < d_cutsq(itype,jtype)) { // optimize + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + + r = sqrt(rsq); + rCut2inv = 1.0/d_cutsq(itype,jtype); + rCut6inv = rCut2inv*rCut2inv*rCut2inv; + rCut = sqrt(d_cutsq(itype,jtype)); + rCutInv = 1.0/rCut; + + // + // A. Compute the exp-6 potential + // + + // A1. Get alpha, epsilon and rm for particle j + + { + epsilon1_j = PairExp6ParamData.epsilon1[j]; + alpha1_j = PairExp6ParamData.alpha1[j]; + rm1_j = PairExp6ParamData.rm1[j]; + mixWtSite1_j = PairExp6ParamData.mixWtSite1[j]; + epsilon2_j = PairExp6ParamData.epsilon2[j]; + alpha2_j = PairExp6ParamData.alpha2[j]; + rm2_j = PairExp6ParamData.rm2[j]; + mixWtSite2_j = PairExp6ParamData.mixWtSite2[j]; + epsilonOld1_j = PairExp6ParamData.epsilonOld1[j]; + alphaOld1_j = PairExp6ParamData.alphaOld1[j]; + rmOld1_j = PairExp6ParamData.rmOld1[j]; + mixWtSite1old_j = PairExp6ParamData.mixWtSite1old[j]; + epsilonOld2_j = PairExp6ParamData.epsilonOld2[j]; + alphaOld2_j = PairExp6ParamData.alphaOld2[j]; + rmOld2_j = PairExp6ParamData.rmOld2[j]; + mixWtSite2old_j = PairExp6ParamData.mixWtSite2old[j]; + } + + // A2. Apply Lorentz-Berthelot mixing rules for the i-j pair + alphaOld12_ij = sqrt(alphaOld1_i*alphaOld2_j); + rmOld12_ij = 0.5*(rmOld1_i + rmOld2_j); + epsilonOld12_ij = sqrt(epsilonOld1_i*epsilonOld2_j); + alphaOld21_ij = sqrt(alphaOld2_i*alphaOld1_j); + rmOld21_ij = 0.5*(rmOld2_i + rmOld1_j); + epsilonOld21_ij = sqrt(epsilonOld2_i*epsilonOld1_j); + + alpha12_ij = sqrt(alpha1_i*alpha2_j); + rm12_ij = 0.5*(rm1_i + rm2_j); + epsilon12_ij = sqrt(epsilon1_i*epsilon2_j); + alpha21_ij = sqrt(alpha2_i*alpha1_j); + rm21_ij = 0.5*(rm2_i + rm1_j); + epsilon21_ij = sqrt(epsilon2_i*epsilon1_j); + + evdwlOldEXP6_12 = 0.0; + evdwlOldEXP6_21 = 0.0; + evdwlEXP6_12 = 0.0; + evdwlEXP6_21 = 0.0; + fpairOldEXP6_12 = 0.0; + fpairOldEXP6_21 = 0.0; + + if(rmOld12_ij!=0.0 && rmOld21_ij!=0.0){ + if(alphaOld21_ij == 6.0 || alphaOld12_ij == 6.0) + k_error_flag.d_view() = 1; + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld12_ij; + buck1 = epsilonOld12_ij / (alphaOld12_ij - 6.0); + rexp = expValue(alphaOld12_ij*(1.0-r*rminv)); + rm2ij = rmOld12_ij*rmOld12_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld12_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld12_ij; + urc = buck1*(6.0*rCutExp - alphaOld12_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld12_ij*func_rin(alphaOld12_ij); + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alphaOld12_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alphaOld12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + forceExp6 = double(nRep)*aRep/powint(r,nRep); + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = buck1*(6.0*rexp - alphaOld12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld21_ij; + buck1 = epsilonOld21_ij / (alphaOld21_ij - 6.0); + buck2 = 6.0*alphaOld21_ij; + rexp = expValue(alphaOld21_ij*(1.0-r*rminv)); + rm2ij = rmOld21_ij*rmOld21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld21_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld21_ij; + urc = buck1*(6.0*rCutExp - alphaOld21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld21_ij*func_rin(alphaOld21_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alphaOld21_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alphaOld21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + forceExp6 = double(nRep)*aRep/powint(r,nRep); + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = buck1*(6.0*rexp - alphaOld21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + if (isite1 == isite2) + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12; + else + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*evdwlOldEXP6_21; + + evdwlOld *= factor_lj; + + uCG_i += 0.5*evdwlOld; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + t_uCG(tid,j) += 0.5*evdwlOld; + } + + if(rm12_ij!=0.0 && rm21_ij!=0.0){ + if(alpha21_ij == 6.0 || alpha12_ij == 6.0) + k_error_flag.d_view() = 1; + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rm12_ij; + buck1 = epsilon12_ij / (alpha12_ij - 6.0); + buck2 = 6.0*alpha12_ij; + rexp = expValue(alpha12_ij*(1.0-r*rminv)); + rm2ij = rm12_ij*rm12_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha12_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha12_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm12_ij*func_rin(alpha12_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alpha12_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alpha12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + evdwlEXP6_12 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + evdwlEXP6_12 = buck1*(6.0*rexp - alpha12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + rminv = 1.0/rm21_ij; + buck1 = epsilon21_ij / (alpha21_ij - 6.0); + buck2 = 6.0*alpha21_ij; + rexp = expValue(alpha21_ij*(1.0-r*rminv)); + rm2ij = rm21_ij*rm21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha21_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm21_ij*func_rin(alpha21_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alpha21_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alpha21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + evdwlEXP6_21 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + evdwlEXP6_21 = buck1*(6.0*rexp - alpha21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + } + + // + // Apply Mixing Rule to get the overall force for the CG pair + // + if (isite1 == isite2) fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12; + else fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*fpairOldEXP6_21; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + t_f(tid,j,0) -= delx*fpair; + t_f(tid,j,1) -= dely*fpair; + t_f(tid,j,2) -= delz*fpair; + } + + if (isite1 == isite2) evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12; + else evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12 + sqrt(mixWtSite2_i*mixWtSite1_j)*evdwlEXP6_21; + evdwl *= factor_lj; + + uCGnew_i += 0.5*evdwl; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + t_uCGnew(tid,j) += 0.5*evdwl; + evdwl = evdwlOld; + if (EVFLAG) + ev.evdwl += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + } + } + + t_f(tid,i,0) += fx_i; + t_f(tid,i,1) += fy_i; + t_f(tid,i,2) += fz_i; + t_uCG(tid,i) += uCG_i; + t_uCGnew(tid,i) += uCGnew_i; +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxComputeNoAtomics, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairExp6rxComputeNoAtomics(), ii, ev); +} + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxCollapseDupViews, const int &i) const { + for (int n = 0; n < num_threads; n++) { + f(i,0) += t_f(n,i,0); + f(i,1) += t_f(n,i,1); + f(i,2) += t_f(n,i,2); + uCG(i) += t_uCG(n,i); + uCGnew(i) += t_uCGnew(n,i); + } +} + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxZeroDupViews, const int &i) const { + for (int n = 0; n < num_threads; n++) { + t_f(n,i,0) = 0.0; + t_f(n,i,1) = 0.0; + t_f(n,i,2) = 0.0; + t_uCG(n,i) = 0.0; + t_uCGnew(n,i) = 0.0; + } +} + + /* ---------------------------------------------------------------------- allocate all arrays ------------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 488c9d0039..8754a73c96 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -57,6 +57,12 @@ struct TagPairExp6rxgetMixingWeights{}; template struct TagPairExp6rxCompute{}; +template +struct TagPairExp6rxComputeNoAtomics{}; + +struct TagPairExp6rxCollapseDupViews{}; +struct TagPairExp6rxZeroDupViews{}; + template class PairExp6rxKokkos : public PairExp6rx { public: @@ -81,6 +87,20 @@ class PairExp6rxKokkos : public PairExp6rx { KOKKOS_INLINE_FUNCTION void operator()(TagPairExp6rxCompute, const int&) const; + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxComputeNoAtomics, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxComputeNoAtomics, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxCollapseDupViews, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxZeroDupViews, const int&) const; + template KOKKOS_INLINE_FUNCTION void ev_tally(EV_FLOAT &ev, const int &i, const int &j, @@ -94,6 +114,7 @@ class PairExp6rxKokkos : public PairExp6rx { int eflag,vflag; int nlocal,newton_pair,neighflag; double special_lj[4]; + int num_threads; typename AT::t_x_array_randomread x; typename AT::t_f_array f; @@ -101,6 +122,12 @@ class PairExp6rxKokkos : public PairExp6rx { typename AT::t_efloat_1d uCG, uCGnew; typename AT::t_float_2d dvector; + typedef Kokkos::View t_f_array_thread; + typedef Kokkos::View t_efloat_1d_thread; + + t_f_array_thread t_f; + t_efloat_1d_thread t_uCG, t_uCGnew; + DAT::tdual_efloat_1d k_eatom; DAT::tdual_virial_array k_vatom; DAT::t_efloat_1d d_eatom; -- GitLab From acdb932c4ec56b2ce56a71280dab5c17b39f2c03 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 16 Mar 2017 09:28:27 -0600 Subject: [PATCH 206/337] Fixing index issue in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 8cf235964c..577d5261a3 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -236,7 +236,7 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) } else { // No atomics num_threads = lmp->kokkos->num_threads; - int nmax = f.dimension_1(); + int nmax = f.dimension_0(); if (nmax > t_f.dimension_1()) { t_f = t_f_array_thread("pair_exp6_rx:t_f",num_threads,nmax); t_uCG = t_efloat_1d_thread("pair_exp6_rx:t_uCG",num_threads,nmax); -- GitLab From f5b7361ef6b6dbeedb2ad2181a44db64943001bb Mon Sep 17 00:00:00 2001 From: "Christopher P. Stone" Date: Thu, 16 Mar 2017 21:31:30 -0400 Subject: [PATCH 207/337] Non-kokkos candidate of PairExp6rxKokkos::getMixingWeights to improve vectorization on the KNL. - Moved the particle loop inside a replica of getMixingWeights, getMixingWeightsVect, and refactored to improve vectorization. - Added OMP SIMD and OMP threading directly inside that function but will replace with kokkos parallel_for and parallel_reduce methods later. --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 473 ++++++++++++++++++++++++++++- src/KOKKOS/pair_exp6_rx_kokkos.h | 3 + 2 files changed, 475 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index abc158d72c..df663c9df9 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -53,6 +53,22 @@ using namespace MathSpecialKokkos; #define exp6PotentialType (1) #define isExp6PotentialType(_type) ( (_type) == exp6PotentialType ) +namespace /* anonymous */ +{ + +//typedef double TimerType; +//TimerType getTimeStamp(void) { return MPI_Wtime(); } +//double getElapsedTime( const TimerType &t0, const TimerType &t1) { return t1-t0; } + +typedef struct timespec TimerType; +TimerType getTimeStamp(void) { TimerType tick; clock_gettime( CLOCK_MONOTONIC, &tick); return tick; } +double getElapsedTime( const TimerType &t0, const TimerType &t1) +{ + return (t1.tv_sec - t0.tv_sec) + 1e-9*(t1.tv_nsec - t0.tv_nsec); +} + +} // end namespace + /* ---------------------------------------------------------------------- */ template @@ -121,6 +137,8 @@ void PairExp6rxKokkos::init_style() template void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) { + TimerType t_start = getTimeStamp(); + copymode = 1; eflag = eflag_in; @@ -165,6 +183,7 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) // and ghost atoms. Make the parameter data persistent // and exchange like any other atom property later. + TimerType t_mix_start = getTimeStamp(); { const int np_total = nlocal + atom->nghost; @@ -185,8 +204,77 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); PairExp6ParamData.mixWtSite2old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2old",np_total); - Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); + //Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); + + //typename AT::t_float_1d epsilon1 ("epsilon1" ,np_total); + //typename AT::t_float_1d alpha1 ("alpha1" ,np_total); + //typename AT::t_float_1d rm1 ("rm1" ,np_total); + //typename AT::t_float_1d mixWtSite1 ("mixWtSite1" ,np_total); + //typename AT::t_float_1d epsilon2 ("epsilon2" ,np_total); + //typename AT::t_float_1d alpha2 ("alpha2" ,np_total); + //typename AT::t_float_1d rm2 ("rm2" ,np_total); + //typename AT::t_float_1d mixWtSite2 ("mixWtSite2" ,np_total); + //typename AT::t_float_1d epsilonOld1 ("epsilonOld1" ,np_total); + //typename AT::t_float_1d alphaOld1 ("alphaOld1" ,np_total); + //typename AT::t_float_1d rmOld1 ("rmOld1" ,np_total); + //typename AT::t_float_1d mixWtSite1old("mixWtSite1old",np_total); + //typename AT::t_float_1d epsilonOld2 ("epsilonOld2" ,np_total); + //typename AT::t_float_1d alphaOld2 ("alphaOld2" ,np_total); + //typename AT::t_float_1d rmOld2 ("rmOld2" ,np_total); + //typename AT::t_float_1d mixWtSite2old("mixWtSite2old",np_total); + + int errorFlag = 0; + getMixingWeightsVect (np_total, errorFlag, PairExp6ParamData.epsilon1, + PairExp6ParamData.alpha1, + PairExp6ParamData.rm1, + PairExp6ParamData.mixWtSite1, + PairExp6ParamData.epsilon2, + PairExp6ParamData.alpha2, + PairExp6ParamData.rm2, + PairExp6ParamData.mixWtSite2, + PairExp6ParamData.epsilonOld1, + PairExp6ParamData.alphaOld1, + PairExp6ParamData.rmOld1, + PairExp6ParamData.mixWtSite1old, + PairExp6ParamData.epsilonOld2, + PairExp6ParamData.alphaOld2, + PairExp6ParamData.rmOld2, + PairExp6ParamData.mixWtSite2old); + if (errorFlag == 1) + error->all(FLERR,"The number of molecules in CG particle is less than 10*DBL_EPSILON."); + else if (errorFlag == 2) + error->all(FLERR,"Computed fraction less than -10*DBL_EPSILON"); + + //#define _test_var(var) { \ + // double ref2 = 0, err2 = 0; \ + // for (int id = 0; id < np_total; ++id) \ + // { \ + // double ref = PairExp6ParamData. var [id]; \ + // double diff = ref - var[id]; \ + // ref2 += ref*ref; \ + // err2 += diff*diff; \ + // } \ + // if (ref2 < 1e-20) ref2 = 1.0; \ + // if (sqrt(err2)/sqrt(ref2) > 1e-12) \ + // printf("%s: %e %e %e\n", # var, sqrt(ref2), sqrt(err2), sqrt(err2)/sqrt(ref2)); \ + //} + //_test_var( epsilon1); + //_test_var( alpha1); + //_test_var( rm1); + //_test_var( epsilon2); + //_test_var( alpha2); + //_test_var( rm2); + //_test_var( mixWtSite2); + //_test_var( epsilonOld1); + //_test_var( alphaOld1); + //_test_var( rmOld1); + //_test_var( mixWtSite1old); + //_test_var( epsilonOld2); + //_test_var( alphaOld2); + //_test_var( rmOld2); + //_test_var( mixWtSite2old); } + TimerType t_mix_stop = getTimeStamp(); k_error_flag.template modify(); k_error_flag.template sync(); @@ -259,6 +347,9 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) } copymode = 0; + + TimerType t_stop = getTimeStamp(); + printf("PairExp6rxKokkos::compute %f %f\n", getElapsedTime(t_start, t_stop), getElapsedTime(t_mix_start, t_mix_stop)); } template @@ -917,6 +1008,7 @@ void PairExp6rxKokkos::getMixingWeights(int id,double &epsilon1,doub nMoleculesOld2 = dvector(ispecies+nspecies,id); nMolecules2 = dvector(ispecies,id); fractionOld2 = dvector(ispecies+nspecies,id)/nTotalold; + fraction2 = nMolecules2/nTotal; } // If Site1 or Site2 matches is a fluid, then compute the paramters @@ -1072,6 +1164,385 @@ void PairExp6rxKokkos::getMixingWeights(int id,double &epsilon1,doub } } +#ifdef _OPENMP +void partition_range( const int begin, const int end, int &thread_begin, int &thread_end, const int chunkSize = 1) +{ + int threadId = omp_get_thread_num(); + int nThreads = omp_get_num_threads(); + + const int len = end - begin; + const int nBlocks = (len + (chunkSize - 1)) / chunkSize; + const int nBlocksPerThread = nBlocks / nThreads; + const int nRemaining = nBlocks - nBlocksPerThread * nThreads; + int block_lo, block_hi; + if (threadId < nRemaining) + { + block_lo = threadId * nBlocksPerThread + threadId; + block_hi = block_lo + nBlocksPerThread + 1; + } + else + { + block_lo = threadId * nBlocksPerThread + nRemaining; + block_hi = block_lo + nBlocksPerThread; + } + + thread_begin = std::min(begin + block_lo * chunkSize, end); + thread_end = std::min(begin + block_hi * chunkSize, end); + //printf("tid: %d %d %d %d %d\n", threadId, block_lo, block_hi, thread_begin, thread_end); +} +#endif + +/* ---------------------------------------------------------------------- */ + +template + template +void PairExp6rxKokkos::getMixingWeightsVect(const int np_total, int errorFlag, + ArrayT &epsilon1, ArrayT &alpha1, ArrayT &rm1, ArrayT &mixWtSite1, ArrayT &epsilon2, ArrayT &alpha2, ArrayT &rm2, ArrayT &mixWtSite2, ArrayT &epsilon1_old, ArrayT &alpha1_old, ArrayT &rm1_old, ArrayT &mixWtSite1old, ArrayT &epsilon2_old, ArrayT &alpha2_old, ArrayT &rm2_old, ArrayT &mixWtSite2old) const +{ + ArrayT epsilon("PairExp6ParamData.epsilon", np_total); + ArrayT rm3("PairExp6ParamData.rm3", np_total); + ArrayT alpha("PairExp6ParamData.alpha", np_total); + ArrayT xMolei("PairExp6ParamData.xMolei", np_total); + + ArrayT epsilon_old("PairExp6ParamData.epsilon_old", np_total); + ArrayT rm3_old("PairExp6ParamData.rm3_old", np_total); + ArrayT alpha_old("PairExp6ParamData.alpha_old", np_total); + ArrayT xMolei_old("PairExp6ParamData.xMolei_old", np_total); + + ArrayT fractionOFA("PairExp6ParamData.fractionOFA", np_total); + ArrayT fraction1("PairExp6ParamData.fraction1", np_total); + ArrayT fraction2("PairExp6ParamData.fraction2", np_total); + ArrayT nMoleculesOFA("PairExp6ParamData.nMoleculesOFA", np_total); + ArrayT nMolecules1("PairExp6ParamData.nMolecules1", np_total); + ArrayT nMolecules2("PairExp6ParamData.nMolecules2", np_total); + ArrayT nTotal("PairExp6ParamData.nTotal", np_total); + + ArrayT fractionOFAold("PairExp6ParamData.fractionOFAold", np_total); + ArrayT fractionOld1("PairExp6ParamData.fractionOld1", np_total); + ArrayT fractionOld2("PairExp6ParamData.fractionOld2", np_total); + ArrayT nMoleculesOFAold("PairExp6ParamData.nMoleculesOFAold", np_total); + ArrayT nMoleculesOld1("PairExp6ParamData.nMoleculesOld1", np_total); + ArrayT nMoleculesOld2("PairExp6ParamData.nMoleculesOld2", np_total); + ArrayT nTotalold("PairExp6ParamData.nTotalold", np_total); + + int errorFlag1 = 0, errorFlag2 = 0; + +#ifdef _OPENMP + #pragma omp parallel reduction(+: errorFlag1, errorFlag2) +#endif + { + int idx_begin = 0, idx_end = np_total; +#ifdef _OPENMP + partition_range( 0, np_total, idx_begin, idx_end, 16 ); +#endif + + // Zero out all of the terms first. + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm3[id] = 0.0; + epsilon[id] = 0.0; + alpha[id] = 0.0; + epsilon_old[id] = 0.0; + rm3_old[id] = 0.0; + alpha_old[id] = 0.0; + fractionOFA[id] = 0.0; + fractionOFAold[id] = 0.0; + nMoleculesOFA[id] = 0.0; + nMoleculesOFAold[id] = 0.0; + nTotal[id] = 0.0; + nTotalold[id] = 0.0; + } + + // Compute the total number of molecules in the old and new CG particle as well as the total number of molecules in the fluid portion of the old and new CG particle + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + nTotal[id] += dvector(ispecies,id); + nTotalold[id] += dvector(ispecies+nspecies,id); + } + + const int iparam = d_mol2param[ispecies]; + + if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; + if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { + if (isite1 == d_params[iparam].ispecies || isite2 == d_params[iparam].ispecies) continue; + + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + nMoleculesOFAold[id] += dvector(ispecies+nspecies,id); + nMoleculesOFA[id] += dvector(ispecies,id); + } + } + } + + // Make a reduction. + #pragma omp simd reduction(+:errorFlag1) + for (int id = idx_begin; id < idx_end; ++id) + { + if ( nTotal[id] < MY_EPSILON || nTotalold[id] < MY_EPSILON ) + errorFlag1 = 1; + + // Compute the mole fraction of molecules within the fluid portion of the particle (One Fluid Approximation) + fractionOFAold[id] = nMoleculesOFAold[id] / nTotalold[id]; + fractionOFA[id] = nMoleculesOFA[id] / nTotal[id]; + } + + for (int ispecies = 0; ispecies < nspecies; ispecies++) { + const int iparam = d_mol2param[ispecies]; + if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; + + // If Site1 matches a pure species, then grab the parameters + if (isite1 == d_params[iparam].ispecies) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm1_old[id] = d_params[iparam].rm; + rm1[id] = d_params[iparam].rm; + epsilon1_old[id] = d_params[iparam].epsilon; + epsilon1[id] = d_params[iparam].epsilon; + alpha1_old[id] = d_params[iparam].alpha; + alpha1[id] = d_params[iparam].alpha; + + // Compute the mole fraction of Site1 + nMoleculesOld1[id] = dvector(ispecies+nspecies,id); + nMolecules1[id] = dvector(ispecies,id); + fractionOld1[id] = nMoleculesOld1[id]/nTotalold[id]; + fraction1[id] = nMolecules1[id]/nTotal[id]; + } + } + + // If Site2 matches a pure species, then grab the parameters + if (isite2 == d_params[iparam].ispecies) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm2_old[id] = d_params[iparam].rm; + rm2[id] = d_params[iparam].rm; + epsilon2_old[id] = d_params[iparam].epsilon; + epsilon2[id] = d_params[iparam].epsilon; + alpha2_old[id] = d_params[iparam].alpha; + alpha2[id] = d_params[iparam].alpha; + + // Compute the mole fraction of Site2 + nMoleculesOld2[id] = dvector(ispecies+nspecies,id); + nMolecules2[id] = dvector(ispecies,id); + fractionOld2[id] = nMoleculesOld2[id]/nTotalold[id]; + fraction2[id] = nMolecules2[id]/nTotal[id]; + } + } + + // If Site1 or Site2 matches is a fluid, then compute the paramters + if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { + if (isite1 == d_params[iparam].ispecies || isite2 == d_params[iparam].ispecies) continue; + + const double rmi = d_params[iparam].rm; + const double epsiloni = d_params[iparam].epsilon; + const double alphai = d_params[iparam].alpha; + + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + if(nMoleculesOFA[id] 0.0){ + rm3_old[id] += xMolei_old[id]*xMolej_old*rm3ij; + epsilon_old[id] += xMolei_old[id]*xMolej_old*rm3ij*epsilonij; + alpha_old[id] += xMolei_old[id]*xMolej_old*rm3ij*epsilonij*alphaij; + } + if(fractionOFA[id] > 0.0){ + rm3[id] += xMolei[id]*xMolej*rm3ij; + epsilon[id] += xMolei[id]*xMolej*rm3ij*epsilonij; + alpha[id] += xMolei[id]*xMolej*rm3ij*epsilonij*alphaij; + } + } + } + } + } + + if (isOneFluidApprox(isite1)) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm1[id] = cbrt(rm3[id]); + if(rm1[id] < MY_EPSILON) { + rm1[id] = 0.0; + epsilon1[id] = 0.0; + alpha1[id] = 0.0; + } else { + epsilon1[id] = epsilon[id] / rm3[id]; + alpha1[id] = alpha[id] / epsilon1[id] / rm3[id]; + } + nMolecules1[id] = 1.0-(nTotal[id]-nMoleculesOFA[id]); + fraction1[id] = fractionOFA[id]; + + rm1_old[id] = cbrt(rm3_old[id]); + if(rm1_old[id] < MY_EPSILON) { + rm1_old[id] = 0.0; + epsilon1_old[id] = 0.0; + alpha1_old[id] = 0.0; + } else { + epsilon1_old[id] = epsilon_old[id] / rm3_old[id]; + alpha1_old[id] = alpha_old[id] / epsilon1_old[id] / rm3_old[id]; + } + nMoleculesOld1[id] = 1.0-(nTotalold[id]-nMoleculesOFAold[id]); + fractionOld1[id] = fractionOFAold[id]; + } + + if(scalingFlag == EXPONENT) { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + exponentScaling(nMoleculesOFA[id],epsilon1[id],rm1[id]); + exponentScaling(nMoleculesOFAold[id],epsilon1_old[id],rm1_old[id]); + } + } + else if(scalingFlag == POLYNOMIAL){ + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + polynomialScaling(nMoleculesOFA[id],alpha1[id],epsilon1[id],rm1[id]); + polynomialScaling(nMoleculesOFAold[id],alpha1_old[id],epsilon1_old[id],rm1_old[id]); + } + } + } + + if (isOneFluidApprox(isite2)) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm2[id] = cbrt(rm3[id]); + if(rm2[id] < MY_EPSILON) { + rm2[id] = 0.0; + epsilon2[id] = 0.0; + alpha2[id] = 0.0; + } else { + epsilon2[id] = epsilon[id] / rm3[id]; + alpha2[id] = alpha[id] / epsilon2[id] / rm3[id]; + } + nMolecules2[id] = 1.0-(nTotal[id]-nMoleculesOFA[id]); + fraction2[id] = fractionOFA[id]; + + rm2_old[id] = cbrt(rm3_old[id]); + if(rm2_old[id] < MY_EPSILON) { + rm2_old[id] = 0.0; + epsilon2_old[id] = 0.0; + alpha2_old[id] = 0.0; + } else { + epsilon2_old[id] = epsilon_old[id] / rm3_old[id]; + alpha2_old[id] = alpha_old[id] / epsilon2_old[id] / rm3_old[id]; + } + nMoleculesOld2[id] = 1.0-(nTotalold[id]-nMoleculesOFAold[id]); + fractionOld2[id] = fractionOFAold[id]; + } + + if(scalingFlag == EXPONENT){ + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + exponentScaling(nMoleculesOFA[id],epsilon2[id],rm2[id]); + exponentScaling(nMoleculesOFAold[id],epsilon2_old[id],rm2_old[id]); + } + } + else if(scalingFlag == POLYNOMIAL){ + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + polynomialScaling(nMoleculesOFA[id],alpha2[id],epsilon2[id],rm2[id]); + polynomialScaling(nMoleculesOFAold[id],alpha2_old[id],epsilon2_old[id],rm2_old[id]); + } + } + } + + // Check that no fractions are less than zero + #pragma omp simd reduction(+:errorFlag2) + for (int id = idx_begin; id < idx_end; ++id) + { + if(fraction1[id] < 0.0 || nMolecules1[id] < 0.0){ + if(fraction1[id] < -MY_EPSILON || nMolecules1[id] < -MY_EPSILON){ + errorFlag2 = 2; + } + nMolecules1[id] = 0.0; + fraction1[id] = 0.0; + } + if(fraction2[id] < 0.0 || nMolecules2[id] < 0.0){ + if(fraction2[id] < -MY_EPSILON || nMolecules2[id] < -MY_EPSILON){ + errorFlag2 = 2; + } + nMolecules2[id] = 0.0; + fraction2[id] = 0.0; + } + if(fractionOld1[id] < 0.0 || nMoleculesOld1[id] < 0.0){ + if(fractionOld1[id] < -MY_EPSILON || nMoleculesOld1[id] < -MY_EPSILON){ + errorFlag2 = 2; + } + nMoleculesOld1[id] = 0.0; + fractionOld1[id] = 0.0; + } + if(fractionOld2[id] < 0.0 || nMoleculesOld2[id] < 0.0){ + if(fractionOld2[id] < -MY_EPSILON || nMoleculesOld2[id] < -MY_EPSILON){ + errorFlag2 = 2; + } + nMoleculesOld2[id] = 0.0; + fractionOld2[id] = 0.0; + } + + if(fractionalWeighting){ + mixWtSite1old[id] = fractionOld1[id]; + mixWtSite1[id] = fraction1[id]; + mixWtSite2old[id] = fractionOld2[id]; + mixWtSite2[id] = fraction2[id]; + } else { + mixWtSite1old[id] = nMoleculesOld1[id]; + mixWtSite1[id] = nMolecules1[id]; + mixWtSite2old[id] = nMoleculesOld2[id]; + mixWtSite2[id] = nMolecules2[id]; + } + } + + } // end parallel region + + if (errorFlag1 > 0) + errorFlag = 1; + + if (errorFlag2 > 0) + errorFlag = 2; +} + /* ---------------------------------------------------------------------- */ template diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 488c9d0039..55b29f559b 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -133,6 +133,9 @@ class PairExp6rxKokkos : public PairExp6rx { KOKKOS_INLINE_FUNCTION void getMixingWeights(int, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &) const; + template + void getMixingWeightsVect(const int, int, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &) const; + KOKKOS_INLINE_FUNCTION void exponentScaling(double, double &, double &) const; -- GitLab From ec192a95cb1465184f29f9f6bae06da9815411dc Mon Sep 17 00:00:00 2001 From: "Christopher P. Stone" Date: Thu, 16 Mar 2017 22:28:19 -0400 Subject: [PATCH 208/337] Cleaned up the non-kokkos part of KOKKOS/pair_exp6_rx_kokkos.cpp --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 78 +++++++----------------------- 1 file changed, 17 insertions(+), 61 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index df663c9df9..d1481e6a44 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -187,42 +187,26 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) { const int np_total = nlocal + atom->nghost; - PairExp6ParamData.epsilon1 = typename AT::t_float_1d("PairExp6ParamData.epsilon1" ,np_total); - PairExp6ParamData.alpha1 = typename AT::t_float_1d("PairExp6ParamData.alpha1" ,np_total); - PairExp6ParamData.rm1 = typename AT::t_float_1d("PairExp6ParamData.rm1" ,np_total); + PairExp6ParamData.epsilon1 = typename AT::t_float_1d("PairExp6ParamData.epsilon1" ,np_total); + PairExp6ParamData.alpha1 = typename AT::t_float_1d("PairExp6ParamData.alpha1" ,np_total); + PairExp6ParamData.rm1 = typename AT::t_float_1d("PairExp6ParamData.rm1" ,np_total); PairExp6ParamData.mixWtSite1 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1" ,np_total); - PairExp6ParamData.epsilon2 = typename AT::t_float_1d("PairExp6ParamData.epsilon2" ,np_total); - PairExp6ParamData.alpha2 = typename AT::t_float_1d("PairExp6ParamData.alpha2" ,np_total); - PairExp6ParamData.rm2 = typename AT::t_float_1d("PairExp6ParamData.rm2" ,np_total); + PairExp6ParamData.epsilon2 = typename AT::t_float_1d("PairExp6ParamData.epsilon2" ,np_total); + PairExp6ParamData.alpha2 = typename AT::t_float_1d("PairExp6ParamData.alpha2" ,np_total); + PairExp6ParamData.rm2 = typename AT::t_float_1d("PairExp6ParamData.rm2" ,np_total); PairExp6ParamData.mixWtSite2 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2" ,np_total); - PairExp6ParamData.epsilonOld1 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld1" ,np_total); - PairExp6ParamData.alphaOld1 = typename AT::t_float_1d("PairExp6ParamData.alphaOld1" ,np_total); - PairExp6ParamData.rmOld1 = typename AT::t_float_1d("PairExp6ParamData.rmOld1" ,np_total); + PairExp6ParamData.epsilonOld1 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld1" ,np_total); + PairExp6ParamData.alphaOld1 = typename AT::t_float_1d("PairExp6ParamData.alphaOld1" ,np_total); + PairExp6ParamData.rmOld1 = typename AT::t_float_1d("PairExp6ParamData.rmOld1" ,np_total); PairExp6ParamData.mixWtSite1old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1old",np_total); - PairExp6ParamData.epsilonOld2 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld2" ,np_total); - PairExp6ParamData.alphaOld2 = typename AT::t_float_1d("PairExp6ParamData.alphaOld2" ,np_total); - PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); + PairExp6ParamData.epsilonOld2 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld2" ,np_total); + PairExp6ParamData.alphaOld2 = typename AT::t_float_1d("PairExp6ParamData.alphaOld2" ,np_total); + PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); PairExp6ParamData.mixWtSite2old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2old",np_total); - //Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); - - //typename AT::t_float_1d epsilon1 ("epsilon1" ,np_total); - //typename AT::t_float_1d alpha1 ("alpha1" ,np_total); - //typename AT::t_float_1d rm1 ("rm1" ,np_total); - //typename AT::t_float_1d mixWtSite1 ("mixWtSite1" ,np_total); - //typename AT::t_float_1d epsilon2 ("epsilon2" ,np_total); - //typename AT::t_float_1d alpha2 ("alpha2" ,np_total); - //typename AT::t_float_1d rm2 ("rm2" ,np_total); - //typename AT::t_float_1d mixWtSite2 ("mixWtSite2" ,np_total); - //typename AT::t_float_1d epsilonOld1 ("epsilonOld1" ,np_total); - //typename AT::t_float_1d alphaOld1 ("alphaOld1" ,np_total); - //typename AT::t_float_1d rmOld1 ("rmOld1" ,np_total); - //typename AT::t_float_1d mixWtSite1old("mixWtSite1old",np_total); - //typename AT::t_float_1d epsilonOld2 ("epsilonOld2" ,np_total); - //typename AT::t_float_1d alphaOld2 ("alphaOld2" ,np_total); - //typename AT::t_float_1d rmOld2 ("rmOld2" ,np_total); - //typename AT::t_float_1d mixWtSite2old("mixWtSite2old",np_total); - +#ifdef KOKKOS_HAVE_CUDA + Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); +#else int errorFlag = 0; getMixingWeightsVect (np_total, errorFlag, PairExp6ParamData.epsilon1, PairExp6ParamData.alpha1, @@ -244,35 +228,7 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) error->all(FLERR,"The number of molecules in CG particle is less than 10*DBL_EPSILON."); else if (errorFlag == 2) error->all(FLERR,"Computed fraction less than -10*DBL_EPSILON"); - - //#define _test_var(var) { \ - // double ref2 = 0, err2 = 0; \ - // for (int id = 0; id < np_total; ++id) \ - // { \ - // double ref = PairExp6ParamData. var [id]; \ - // double diff = ref - var[id]; \ - // ref2 += ref*ref; \ - // err2 += diff*diff; \ - // } \ - // if (ref2 < 1e-20) ref2 = 1.0; \ - // if (sqrt(err2)/sqrt(ref2) > 1e-12) \ - // printf("%s: %e %e %e\n", # var, sqrt(ref2), sqrt(err2), sqrt(err2)/sqrt(ref2)); \ - //} - //_test_var( epsilon1); - //_test_var( alpha1); - //_test_var( rm1); - //_test_var( epsilon2); - //_test_var( alpha2); - //_test_var( rm2); - //_test_var( mixWtSite2); - //_test_var( epsilonOld1); - //_test_var( alphaOld1); - //_test_var( rmOld1); - //_test_var( mixWtSite1old); - //_test_var( epsilonOld2); - //_test_var( alphaOld2); - //_test_var( rmOld2); - //_test_var( mixWtSite2old); +#endif } TimerType t_mix_stop = getTimeStamp(); @@ -349,7 +305,7 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) copymode = 0; TimerType t_stop = getTimeStamp(); - printf("PairExp6rxKokkos::compute %f %f\n", getElapsedTime(t_start, t_stop), getElapsedTime(t_mix_start, t_mix_stop)); + //printf("PairExp6rxKokkos::compute %f %f\n", getElapsedTime(t_start, t_stop), getElapsedTime(t_mix_start, t_mix_stop)); } template -- GitLab From 64fdb1f528bcaacc8c6a7ad1ea1b4824533af838 Mon Sep 17 00:00:00 2001 From: "Christopher P. Stone" Date: Fri, 17 Mar 2017 15:52:40 -0400 Subject: [PATCH 209/337] Kokkos/pair_exp6_rx_kokkos optimized for SIMD on the inner j-loop. --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 518 ++++++++++++++++++++++++++++- src/KOKKOS/pair_exp6_rx_kokkos.h | 4 + 2 files changed, 521 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 64a91c9e65..85d919091f 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -349,7 +349,7 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) copymode = 0; TimerType t_stop = getTimeStamp(); - //printf("PairExp6rxKokkos::compute %f %f\n", getElapsedTime(t_start, t_stop), getElapsedTime(t_mix_start, t_mix_stop)); + printf("PairExp6rxKokkos::compute %f %f\n", getElapsedTime(t_start, t_stop), getElapsedTime(t_mix_start, t_mix_stop)); } template @@ -378,6 +378,14 @@ template KOKKOS_INLINE_FUNCTION void PairExp6rxKokkos::operator()(TagPairExp6rxCompute, const int &ii, EV_FLOAT& ev) const { + { + if (isite1 == isite2) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); + return; + } + // These arrays are atomic for Half/Thread neighbor style Kokkos::View::value> > a_f = f; Kokkos::View::value> > a_uCG = uCG; @@ -734,6 +742,14 @@ template KOKKOS_INLINE_FUNCTION void PairExp6rxKokkos::operator()(TagPairExp6rxComputeNoAtomics, const int &ii, EV_FLOAT& ev) const { + { + if (isite1 == isite2) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); + return; + } + int tid = 0; #ifndef KOKKOS_HAVE_CUDA tid = DeviceType::hardware_thread_id(); @@ -1075,6 +1091,506 @@ void PairExp6rxKokkos::operator()(TagPairExp6rxComputeNoAtomics + KOKKOS_INLINE_FUNCTION +double __powint(const double& x, const int) +{ + static_assert(n == 12, "__powint<> only supports specific integer powers."); + + if (n == 12) + { + // Do x^12 here ... x^12 = (x^3)^4 + double x3 = x*x*x; + return x3*x3*x3*x3; + } +} + +template + template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::vectorized_operator(const int &ii, EV_FLOAT& ev) const +{ + // These arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + Kokkos::View::value> > a_uCG = uCG; + Kokkos::View::value> > a_uCGnew = uCGnew; + + int tid = 0; +#ifndef KOKKOS_HAVE_CUDA + tid = DeviceType::hardware_thread_id(); +#endif + + const int nRep = 12; + const double shift = 1.05; + + const int i = d_ilist[ii]; + const double xtmp = x(i,0); + const double ytmp = x(i,1); + const double ztmp = x(i,2); + const int itype = type[i]; + const int jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + double uCG_i = 0.0; + double uCGnew_i = 0.0; + + // Constant values for this atom. + const double epsilon1_i = PairExp6ParamData.epsilon1[i]; + const double alpha1_i = PairExp6ParamData.alpha1[i]; + const double rm1_i = PairExp6ParamData.rm1[i]; + const double mixWtSite1_i = PairExp6ParamData.mixWtSite1[i]; + const double epsilon2_i = PairExp6ParamData.epsilon2[i]; + const double alpha2_i = PairExp6ParamData.alpha2[i]; + const double rm2_i = PairExp6ParamData.rm2[i]; + const double mixWtSite2_i = PairExp6ParamData.mixWtSite2[i]; + const double epsilonOld1_i = PairExp6ParamData.epsilonOld1[i]; + const double alphaOld1_i = PairExp6ParamData.alphaOld1[i]; + const double rmOld1_i = PairExp6ParamData.rmOld1[i]; + const double mixWtSite1old_i = PairExp6ParamData.mixWtSite1old[i]; + const double epsilonOld2_i = PairExp6ParamData.epsilonOld2[i]; + const double alphaOld2_i = PairExp6ParamData.alphaOld2[i]; + const double rmOld2_i = PairExp6ParamData.rmOld2[i]; + const double mixWtSite2old_i = PairExp6ParamData.mixWtSite2old[i]; + + // Do error testing locally. + bool hasError = false; + + // Process this many neighbors concurrently -- if possible. + const int batchSize = 8; + + int neigh_j[batchSize]; + double evdwlOld_j[batchSize]; + double uCGnew_j[batchSize]; + double fpair_j[batchSize]; + double delx_j[batchSize]; + double dely_j[batchSize]; + double delz_j[batchSize]; + double cutsq_j[batchSize]; + //double j_epsilon1[batchSize] ; + //double j_alpha1[batchSize] ; + //double j_rm1[batchSize] ; + //double j_mixWtSite1[batchSize] ; + //double j_epsilon2[batchSize] ; + //double j_alpha2[batchSize] ; + //double j_rm2[batchSize] ; + //double j_mixWtSite2[batchSize] ; + //double j_epsilonOld1[batchSize] ; + //double j_alphaOld1[batchSize] ; + //double j_rmOld1[batchSize] ; + //double j_mixWtSite1old[batchSize] ; + //double j_epsilonOld2[batchSize] ; + //double j_alphaOld2[batchSize] ; + //double j_rmOld2[batchSize] ; + //double j_mixWtSite2old[batchSize] ; + + for (int jptr = 0; jptr < jnum; ) + { + // The core computation here is very expensive so let's only bother with + // those that pass rsq < cutsq. + + for (int j = 0; j < batchSize; ++j) + { + evdwlOld_j[j] = 0.0; + uCGnew_j[j] = 0.0; + fpair_j[j] = 0.0; + //delx_j[j] = 0.0; + //dely_j[j] = 0.0; + //delz_j[j] = 0.0; + //cutsq_j[j] = 0.0; + } + + int niters = 0; + + for (; (jptr < jnum) && (niters < batchSize); ++jptr) + { + const int j = d_neighbors(i,jptr) & NEIGHMASK; + + const double delx = xtmp - x(j,0); + const double dely = ytmp - x(j,1); + const double delz = ztmp - x(j,2); + + const double rsq = delx*delx + dely*dely + delz*delz; + const int jtype = type[j]; + + if (rsq < d_cutsq(itype,jtype)) + { + delx_j [niters] = delx; + dely_j [niters] = dely; + delz_j [niters] = delz; + cutsq_j[niters] = d_cutsq(itype,jtype); + + neigh_j[niters] = d_neighbors(i,jptr); + + //j_epsilon1[niters] = PairExp6ParamData.epsilon1[j]; + //j_alpha1[niters] = PairExp6ParamData.alpha1[j]; + //j_rm1[niters] = PairExp6ParamData.rm1[j]; + //j_mixWtSite1[niters] = PairExp6ParamData.mixWtSite1[j]; + //j_epsilon2[niters] = PairExp6ParamData.epsilon2[j]; + //j_alpha2[niters] = PairExp6ParamData.alpha2[j]; + //j_rm2[niters] = PairExp6ParamData.rm2[j]; + //j_mixWtSite2[niters] = PairExp6ParamData.mixWtSite2[j]; + //j_epsilonOld1[niters] = PairExp6ParamData.epsilonOld1[j]; + //j_alphaOld1[niters] = PairExp6ParamData.alphaOld1[j]; + //j_rmOld1[niters] = PairExp6ParamData.rmOld1[j]; + //j_mixWtSite1old[niters] = PairExp6ParamData.mixWtSite1old[j]; + //j_epsilonOld2[niters] = PairExp6ParamData.epsilonOld2[j]; + //j_alphaOld2[niters] = PairExp6ParamData.alphaOld2[j]; + //j_rmOld2[niters] = PairExp6ParamData.rmOld2[j]; + //j_mixWtSite2old[niters] = PairExp6ParamData.mixWtSite2old[j]; + + ++niters; + } + } + + // reduction here. + #pragma simd reduction(+: fx_i, fy_i, fz_i, uCG_i, uCGnew_i) reduction(|: hasError) + for (int jlane = 0; jlane < niters; jlane++) + { + int j = neigh_j[jlane]; + const double factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + const double delx = delx_j[jlane]; + const double dely = dely_j[jlane]; + const double delz = delz_j[jlane]; + + const double rsq = delx*delx + dely*dely + delz*delz; + // const int jtype = type[j]; + + // if (rsq < d_cutsq(itype,jtype)) // optimize + { + const double r2inv = 1.0/rsq; + const double r6inv = r2inv*r2inv*r2inv; + + const double r = sqrt(rsq); + const double rCut2inv = 1.0/ cutsq_j[jlane]; + const double rCut6inv = rCut2inv*rCut2inv*rCut2inv; + const double rCut = sqrt( cutsq_j[jlane] ); + const double rCutInv = 1.0/rCut; + + // + // A. Compute the exp-6 potential + // + + // A1. Get alpha, epsilon and rm for particle j + + const double epsilon1_j = PairExp6ParamData.epsilon1[j]; + const double alpha1_j = PairExp6ParamData.alpha1[j]; + const double rm1_j = PairExp6ParamData.rm1[j]; + const double mixWtSite1_j = PairExp6ParamData.mixWtSite1[j]; + const double epsilon2_j = PairExp6ParamData.epsilon2[j]; + const double alpha2_j = PairExp6ParamData.alpha2[j]; + const double rm2_j = PairExp6ParamData.rm2[j]; + const double mixWtSite2_j = PairExp6ParamData.mixWtSite2[j]; + const double epsilonOld1_j = PairExp6ParamData.epsilonOld1[j]; + const double alphaOld1_j = PairExp6ParamData.alphaOld1[j]; + const double rmOld1_j = PairExp6ParamData.rmOld1[j]; + const double mixWtSite1old_j = PairExp6ParamData.mixWtSite1old[j]; + const double epsilonOld2_j = PairExp6ParamData.epsilonOld2[j]; + const double alphaOld2_j = PairExp6ParamData.alphaOld2[j]; + const double rmOld2_j = PairExp6ParamData.rmOld2[j]; + const double mixWtSite2old_j = PairExp6ParamData.mixWtSite2old[j]; + //const double epsilon1_j = j_epsilon1[jlane]; + //const double alpha1_j = j_alpha1[jlane]; + //const double rm1_j = j_rm1[jlane]; + //const double mixWtSite1_j = j_mixWtSite1[jlane]; + //const double epsilon2_j = j_epsilon2[jlane]; + //const double alpha2_j = j_alpha2[jlane]; + //const double rm2_j = j_rm2[jlane]; + //const double mixWtSite2_j = j_mixWtSite2[jlane]; + //const double epsilonOld1_j = j_epsilonOld1[jlane]; + //const double alphaOld1_j = j_alphaOld1[jlane]; + //const double rmOld1_j = j_rmOld1[jlane]; + //const double mixWtSite1old_j = j_mixWtSite1old[jlane]; + //const double epsilonOld2_j = j_epsilonOld2[jlane]; + //const double alphaOld2_j = j_alphaOld2[jlane]; + //const double rmOld2_j = j_rmOld2[jlane]; + //const double mixWtSite2old_j = j_mixWtSite2old[jlane]; + + // A2. Apply Lorentz-Berthelot mixing rules for the i-j pair + const double alphaOld12_ij = sqrt(alphaOld1_i*alphaOld2_j); + const double rmOld12_ij = 0.5*(rmOld1_i + rmOld2_j); + const double epsilonOld12_ij = sqrt(epsilonOld1_i*epsilonOld2_j); + const double alphaOld21_ij = sqrt(alphaOld2_i*alphaOld1_j); + const double rmOld21_ij = 0.5*(rmOld2_i + rmOld1_j); + const double epsilonOld21_ij = sqrt(epsilonOld2_i*epsilonOld1_j); + + const double alpha12_ij = sqrt(alpha1_i*alpha2_j); + const double rm12_ij = 0.5*(rm1_i + rm2_j); + const double epsilon12_ij = sqrt(epsilon1_i*epsilon2_j); + const double alpha21_ij = sqrt(alpha2_i*alpha1_j); + const double rm21_ij = 0.5*(rm2_i + rm1_j); + const double epsilon21_ij = sqrt(epsilon2_i*epsilon1_j); + + double evdwlOldEXP6_12 = 0.0; + double evdwlOldEXP6_21 = 0.0; + double evdwlEXP6_12 = 0.0; + double evdwlEXP6_21 = 0.0; + double fpairOldEXP6_12 = 0.0; + double fpairOldEXP6_21 = 0.0; + + if(rmOld12_ij!=0.0 && rmOld21_ij!=0.0) + { + hasError |= (alphaOld21_ij == 6.0 || alphaOld12_ij == 6.0); + + // A3. Compute some convenient quantities for evaluating the force + double rminv = 1.0/rmOld12_ij; + double buck1 = epsilonOld12_ij / (alphaOld12_ij - 6.0); + double rexp = expValue(alphaOld12_ij*(1.0-r*rminv)); + double rm2ij = rmOld12_ij*rmOld12_ij; + double rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + double rCutExp = expValue(alphaOld12_ij*(1.0-rCut*rminv)); + double buck2 = 6.0*alphaOld12_ij; + double urc = buck1*(6.0*rCutExp - alphaOld12_ij*rm6ij*rCut6inv); + double durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + double rin1 = shift*rmOld12_ij*func_rin(alphaOld12_ij); + + if(r < rin1){ + const double rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + const double rin6inv = 1.0/rin6; + + const double rin1exp = expValue(alphaOld12_ij*(1.0-rin1*rminv)); + + const double uin1 = buck1*(6.0*rin1exp - alphaOld12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + const double win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + const double aRep = win1*__powint<12>(rin1,nRep)/nRep; + + const double uin1rep = aRep/__powint<12>(rin1,nRep); + + const double forceExp6 = double(nRep)*aRep/__powint<12>(r,nRep); + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = uin1 - uin1rep + aRep/__powint<12>(r,nRep); + } else { + const double forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = buck1*(6.0*rexp - alphaOld12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld21_ij; + buck1 = epsilonOld21_ij / (alphaOld21_ij - 6.0); + buck2 = 6.0*alphaOld21_ij; + rexp = expValue(alphaOld21_ij*(1.0-r*rminv)); + rm2ij = rmOld21_ij*rmOld21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld21_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld21_ij; + urc = buck1*(6.0*rCutExp - alphaOld21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld21_ij*func_rin(alphaOld21_ij); + + if(r < rin1){ + const double rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + const double rin6inv = 1.0/rin6; + + const double rin1exp = expValue(alphaOld21_ij*(1.0-rin1*rminv)); + + const double uin1 = buck1*(6.0*rin1exp - alphaOld21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + const double win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + const double aRep = win1*__powint<12>(rin1,nRep)/nRep; + + const double uin1rep = aRep/__powint<12>(rin1,nRep); + + const double forceExp6 = double(nRep)*aRep/__powint<12>(r,nRep); + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = uin1 - uin1rep + aRep/__powint<12>(r,nRep); + } else { + const double forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = buck1*(6.0*rexp - alphaOld21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + double evdwlOld; + if (Site1EqSite2) + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12; + else + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*evdwlOldEXP6_21; + + evdwlOld *= factor_lj; + + uCG_i += 0.5*evdwlOld; + + evdwlOld_j[jlane] = evdwlOld; + } + + if(rm12_ij!=0.0 && rm21_ij!=0.0) + { + hasError |= (alpha21_ij == 6.0 || alpha12_ij == 6.0); + + // A3. Compute some convenient quantities for evaluating the force + double rminv = 1.0/rm12_ij; + double buck1 = epsilon12_ij / (alpha12_ij - 6.0); + double buck2 = 6.0*alpha12_ij; + double rexp = expValue(alpha12_ij*(1.0-r*rminv)); + double rm2ij = rm12_ij*rm12_ij; + double rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + double rCutExp = expValue(alpha12_ij*(1.0-rCut*rminv)); + double urc = buck1*(6.0*rCutExp - alpha12_ij*rm6ij*rCut6inv); + double durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + double rin1 = shift*rm12_ij*func_rin(alpha12_ij); + + if(r < rin1){ + const double rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + const double rin6inv = 1.0/rin6; + + const double rin1exp = expValue(alpha12_ij*(1.0-rin1*rminv)); + + const double uin1 = buck1*(6.0*rin1exp - alpha12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + const double win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + const double aRep = win1*__powint<12>(rin1,nRep)/nRep; + + const double uin1rep = aRep/__powint<12>(rin1,nRep); + + evdwlEXP6_12 = uin1 - uin1rep + aRep/__powint<12>(r,nRep); + } else { + evdwlEXP6_12 = buck1*(6.0*rexp - alpha12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + rminv = 1.0/rm21_ij; + buck1 = epsilon21_ij / (alpha21_ij - 6.0); + buck2 = 6.0*alpha21_ij; + rexp = expValue(alpha21_ij*(1.0-r*rminv)); + rm2ij = rm21_ij*rm21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha21_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm21_ij*func_rin(alpha21_ij); + + if(r < rin1){ + const double rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + const double rin6inv = 1.0/rin6; + + const double rin1exp = expValue(alpha21_ij*(1.0-rin1*rminv)); + + const double uin1 = buck1*(6.0*rin1exp - alpha21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + const double win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + const double aRep = win1*__powint<12>(rin1,nRep)/nRep; + + const double uin1rep = aRep/__powint<12>(rin1,nRep); + + evdwlEXP6_21 = uin1 - uin1rep + aRep/__powint<12>(r,nRep); + } else { + evdwlEXP6_21 = buck1*(6.0*rexp - alpha21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + } + + // + // Apply Mixing Rule to get the overall force for the CG pair + // + double fpair; + if (Site1EqSite2) + fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12; + else + fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*fpairOldEXP6_21; + + double evdwl; + if (Site1EqSite2) + evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12; + else + evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12 + sqrt(mixWtSite2_i*mixWtSite1_j)*evdwlEXP6_21; + + evdwl *= factor_lj; + + fpair_j[jlane] = fpair; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + + uCGnew_i += 0.5*evdwl; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD)) + uCGnew_j[jlane] = 0.5*evdwl; + + } // if rsq < cutsq + + } // end jlane loop. + + for (int jlane = 0; jlane < niters; jlane++) + { + const int j = neigh_j[jlane] & NEIGHMASK; + + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + if (UseAtomics) + a_uCG(j) += 0.5*evdwlOld_j[jlane]; + else + t_uCG(tid,j) += 0.5*evdwlOld_j[jlane]; + + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + if (UseAtomics) + a_uCGnew(j) += uCGnew_j[jlane]; + else + t_uCGnew(tid,j) += uCGnew_j[jlane]; + + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + if (UseAtomics) + { + a_f(j,0) -= delx_j[jlane]*fpair_j[jlane]; + a_f(j,1) -= dely_j[jlane]*fpair_j[jlane]; + a_f(j,2) -= delz_j[jlane]*fpair_j[jlane]; + } + else + { + t_f(tid,j,0) -= delx_j[jlane]*fpair_j[jlane]; + t_f(tid,j,1) -= dely_j[jlane]*fpair_j[jlane]; + t_f(tid,j,2) -= delz_j[jlane]*fpair_j[jlane]; + } + } + + double evdwl = evdwlOld_j[jlane]; + if (EVFLAG) + ev.evdwl += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair_j[jlane],delx_j[jlane],dely_j[jlane],delz_j[jlane]); + } + } + + if (hasError) + k_error_flag.d_view() = 1; + + if (UseAtomics) + { + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; + a_uCG(i) += uCG_i; + a_uCGnew(i) += uCGnew_i; + } + else + { + t_f(tid,i,0) += fx_i; + t_f(tid,i,1) += fy_i; + t_f(tid,i,2) += fz_i; + t_uCG(tid,i) += uCG_i; + t_uCGnew(tid,i) += uCGnew_i; + } +} + template template KOKKOS_INLINE_FUNCTION diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index ebbc26ea20..6899e5ff62 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -91,6 +91,10 @@ class PairExp6rxKokkos : public PairExp6rx { KOKKOS_INLINE_FUNCTION void operator()(TagPairExp6rxComputeNoAtomics, const int&, EV_FLOAT&) const; + template + KOKKOS_INLINE_FUNCTION + void vectorized_operator(const int&, EV_FLOAT&) const; + template KOKKOS_INLINE_FUNCTION void operator()(TagPairExp6rxComputeNoAtomics, const int&) const; -- GitLab From 75670244bb5d30c407e8fc3635f06cf9b08ba817 Mon Sep 17 00:00:00 2001 From: "Christopher P. Stone" Date: Fri, 17 Mar 2017 17:02:47 -0400 Subject: [PATCH 210/337] Added ONE-TYPE template capability to vectorized_operator and cleaned up timers. --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 98 +++++++++++------------------- src/KOKKOS/pair_exp6_rx_kokkos.h | 2 +- 2 files changed, 37 insertions(+), 63 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 85d919091f..5c74cba8c7 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -348,8 +348,8 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) copymode = 0; - TimerType t_stop = getTimeStamp(); - printf("PairExp6rxKokkos::compute %f %f\n", getElapsedTime(t_start, t_stop), getElapsedTime(t_mix_start, t_mix_stop)); + //TimerType t_stop = getTimeStamp(); + //printf("PairExp6rxKokkos::compute %f %f\n", getElapsedTime(t_start, t_stop), getElapsedTime(t_mix_start, t_mix_stop)); } template @@ -379,10 +379,17 @@ KOKKOS_INLINE_FUNCTION void PairExp6rxKokkos::operator()(TagPairExp6rxCompute, const int &ii, EV_FLOAT& ev) const { { + const bool one_type = (atom->ntypes == 1); if (isite1 == isite2) - this->vectorized_operator(ii, ev); + if (one_type) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); else - this->vectorized_operator(ii, ev); + if (one_type) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); return; } @@ -743,10 +750,17 @@ KOKKOS_INLINE_FUNCTION void PairExp6rxKokkos::operator()(TagPairExp6rxComputeNoAtomics, const int &ii, EV_FLOAT& ev) const { { + const bool one_type = (atom->ntypes == 1); if (isite1 == isite2) - this->vectorized_operator(ii, ev); + if (one_type) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); else - this->vectorized_operator(ii, ev); + if (one_type) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); return; } @@ -1109,7 +1123,7 @@ double __powint(const double& x, const int) } template - template + template KOKKOS_INLINE_FUNCTION void PairExp6rxKokkos::vectorized_operator(const int &ii, EV_FLOAT& ev) const { @@ -1157,6 +1171,12 @@ void PairExp6rxKokkos::vectorized_operator(const int &ii, EV_FLOAT& const double rmOld2_i = PairExp6ParamData.rmOld2[i]; const double mixWtSite2old_i = PairExp6ParamData.mixWtSite2old[i]; + const double cutsq_type11 = d_cutsq(1,1); + const double rCut2inv_type11 = 1.0/ cutsq_type11; + const double rCut6inv_type11 = rCut2inv_type11*rCut2inv_type11*rCut2inv_type11; + const double rCut_type11 = sqrt( cutsq_type11 ); + const double rCutInv_type11 = 1.0/rCut_type11; + // Do error testing locally. bool hasError = false; @@ -1171,22 +1191,6 @@ void PairExp6rxKokkos::vectorized_operator(const int &ii, EV_FLOAT& double dely_j[batchSize]; double delz_j[batchSize]; double cutsq_j[batchSize]; - //double j_epsilon1[batchSize] ; - //double j_alpha1[batchSize] ; - //double j_rm1[batchSize] ; - //double j_mixWtSite1[batchSize] ; - //double j_epsilon2[batchSize] ; - //double j_alpha2[batchSize] ; - //double j_rm2[batchSize] ; - //double j_mixWtSite2[batchSize] ; - //double j_epsilonOld1[batchSize] ; - //double j_alphaOld1[batchSize] ; - //double j_rmOld1[batchSize] ; - //double j_mixWtSite1old[batchSize] ; - //double j_epsilonOld2[batchSize] ; - //double j_alphaOld2[batchSize] ; - //double j_rmOld2[batchSize] ; - //double j_mixWtSite2old[batchSize] ; for (int jptr = 0; jptr < jnum; ) { @@ -1217,32 +1221,18 @@ void PairExp6rxKokkos::vectorized_operator(const int &ii, EV_FLOAT& const double rsq = delx*delx + dely*dely + delz*delz; const int jtype = type[j]; - if (rsq < d_cutsq(itype,jtype)) + const double cutsq_ij = (OneType) ? cutsq_type11 : d_cutsq(itype,jtype); + + if (rsq < cutsq_ij) { delx_j [niters] = delx; dely_j [niters] = dely; delz_j [niters] = delz; - cutsq_j[niters] = d_cutsq(itype,jtype); + if (OneType == false) + cutsq_j[niters] = cutsq_ij; neigh_j[niters] = d_neighbors(i,jptr); - //j_epsilon1[niters] = PairExp6ParamData.epsilon1[j]; - //j_alpha1[niters] = PairExp6ParamData.alpha1[j]; - //j_rm1[niters] = PairExp6ParamData.rm1[j]; - //j_mixWtSite1[niters] = PairExp6ParamData.mixWtSite1[j]; - //j_epsilon2[niters] = PairExp6ParamData.epsilon2[j]; - //j_alpha2[niters] = PairExp6ParamData.alpha2[j]; - //j_rm2[niters] = PairExp6ParamData.rm2[j]; - //j_mixWtSite2[niters] = PairExp6ParamData.mixWtSite2[j]; - //j_epsilonOld1[niters] = PairExp6ParamData.epsilonOld1[j]; - //j_alphaOld1[niters] = PairExp6ParamData.alphaOld1[j]; - //j_rmOld1[niters] = PairExp6ParamData.rmOld1[j]; - //j_mixWtSite1old[niters] = PairExp6ParamData.mixWtSite1old[j]; - //j_epsilonOld2[niters] = PairExp6ParamData.epsilonOld2[j]; - //j_alphaOld2[niters] = PairExp6ParamData.alphaOld2[j]; - //j_rmOld2[niters] = PairExp6ParamData.rmOld2[j]; - //j_mixWtSite2old[niters] = PairExp6ParamData.mixWtSite2old[j]; - ++niters; } } @@ -1268,10 +1258,10 @@ void PairExp6rxKokkos::vectorized_operator(const int &ii, EV_FLOAT& const double r6inv = r2inv*r2inv*r2inv; const double r = sqrt(rsq); - const double rCut2inv = 1.0/ cutsq_j[jlane]; - const double rCut6inv = rCut2inv*rCut2inv*rCut2inv; - const double rCut = sqrt( cutsq_j[jlane] ); - const double rCutInv = 1.0/rCut; + const double rCut2inv = (OneType) ? rCut2inv_type11 : (1.0/ cutsq_j[jlane]); + const double rCut6inv = (OneType) ? rCut6inv_type11 : (rCut2inv*rCut2inv*rCut2inv); + const double rCut = (OneType) ? rCut_type11 : (sqrt( cutsq_j[jlane] )); + const double rCutInv = (OneType) ? rCutInv_type11 : (1.0/rCut); // // A. Compute the exp-6 potential @@ -1295,22 +1285,6 @@ void PairExp6rxKokkos::vectorized_operator(const int &ii, EV_FLOAT& const double alphaOld2_j = PairExp6ParamData.alphaOld2[j]; const double rmOld2_j = PairExp6ParamData.rmOld2[j]; const double mixWtSite2old_j = PairExp6ParamData.mixWtSite2old[j]; - //const double epsilon1_j = j_epsilon1[jlane]; - //const double alpha1_j = j_alpha1[jlane]; - //const double rm1_j = j_rm1[jlane]; - //const double mixWtSite1_j = j_mixWtSite1[jlane]; - //const double epsilon2_j = j_epsilon2[jlane]; - //const double alpha2_j = j_alpha2[jlane]; - //const double rm2_j = j_rm2[jlane]; - //const double mixWtSite2_j = j_mixWtSite2[jlane]; - //const double epsilonOld1_j = j_epsilonOld1[jlane]; - //const double alphaOld1_j = j_alphaOld1[jlane]; - //const double rmOld1_j = j_rmOld1[jlane]; - //const double mixWtSite1old_j = j_mixWtSite1old[jlane]; - //const double epsilonOld2_j = j_epsilonOld2[jlane]; - //const double alphaOld2_j = j_alphaOld2[jlane]; - //const double rmOld2_j = j_rmOld2[jlane]; - //const double mixWtSite2old_j = j_mixWtSite2old[jlane]; // A2. Apply Lorentz-Berthelot mixing rules for the i-j pair const double alphaOld12_ij = sqrt(alphaOld1_i*alphaOld2_j); diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 6899e5ff62..9f38732c32 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -91,7 +91,7 @@ class PairExp6rxKokkos : public PairExp6rx { KOKKOS_INLINE_FUNCTION void operator()(TagPairExp6rxComputeNoAtomics, const int&, EV_FLOAT&) const; - template + template KOKKOS_INLINE_FUNCTION void vectorized_operator(const int&, EV_FLOAT&) const; -- GitLab From 0cd3f0cd63f2305d2408bea36a18302ee11d9326 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 17 Mar 2017 19:11:39 -0400 Subject: [PATCH 211/337] USER-DPD: bugfix for npair_half_bin_newton_ssa when bonds are involved. Only locals have valid special[] arrays, so when finding neighbors of ghosts, we have to swap the arguments to find_special(). --- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index ab439d3731..a6479d4c4f 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -250,11 +250,6 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } ibin = coord2bin(x[i],xbin,ybin,zbin); @@ -281,12 +276,16 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) if (rsq <= cutneighsq[itype][jtype]) { if (molecular) { if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; + which = find_special(special[j],nspecial[j],tag[i]); + else { + int jmol = molindex[j]; + if (jmol >= 0) { + int jatom = molatom[j]; + which = find_special(onemols[jmol]->special[jatom], + onemols[jmol]->nspecial[jatom], + tag[i] - (tag[j] - jatom - 1)); + } else which = 0; + } if (which == 0) neighptr[n++] = j; else if (domain->minimum_image_check(delx,dely,delz)) neighptr[n++] = j; -- GitLab From fff43a4604a29de23f23f066027b5f8e41cd33f4 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Fri, 17 Mar 2017 19:33:04 -0400 Subject: [PATCH 212/337] USER-DPD Kokkos: bugfix for npair_ssa_kokkos.cpp corresponding to 0cd3f0cd --- src/KOKKOS/npair_ssa_kokkos.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index a9b59bfc96..7b5a569051 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -515,11 +515,11 @@ void NPairSSAKokkosExecute::build_ghosts() if(rsq <= cutneighsq(itype,jtype)) { if (molecular) { if (!moltemplate) - which = find_special(i,j); - /* else if (imol >= 0) */ - /* which = find_special(onemols[imol]->special[iatom], */ - /* onemols[imol]->nspecial[iatom], */ - /* tag[j]-tagprev); */ + which = find_special(j,i); + /* else if (jmol >= 0) */ + /* which = find_special(onemols[jmol]->special[jatom], */ + /* onemols[jmol]->nspecial[jatom], */ + /* tag[i]-jtagprev); */ /* else which = 0; */ if (which == 0){ if(n Date: Sun, 19 Mar 2017 21:12:52 -0400 Subject: [PATCH 213/337] USER-DPD Kokkos: bugfix, add a misisng line of code in pair_exp6_rx_kokkos.cpp --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index abc158d72c..23fb4f59e5 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -917,6 +917,7 @@ void PairExp6rxKokkos::getMixingWeights(int id,double &epsilon1,doub nMoleculesOld2 = dvector(ispecies+nspecies,id); nMolecules2 = dvector(ispecies,id); fractionOld2 = dvector(ispecies+nspecies,id)/nTotalold; + fraction2 = nMolecules2/nTotal; } // If Site1 or Site2 matches is a fluid, then compute the paramters -- GitLab From 3c91f9734dbb97f293718b0c3f5e5d5d98accc38 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Tue, 21 Mar 2017 17:12:09 -0400 Subject: [PATCH 214/337] make RK solver check in fix_rx_kokkos.cpp be as lenient as in fix_rx.cpp NOTE: the (y < -MY_EPSILON) test was too strict, but don't know by how much This needs to be revisited before merging back to LAMMPS master. --- src/KOKKOS/fix_rx_kokkos.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index ac81e5c2a7..d994b2c5d1 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -1389,9 +1389,9 @@ void FixRxKokkos::operator()(Tag_FixRxKokkos_solveSystemsone(FLERR,"Computed concentration in RK solver is < -10*DBL_EPSILON"); + //error->one(FLERR,"Computed concentration in RK solver is < -1.0e-10"); k_error_flag.d_view() = 2; // This should be an atomic update. } @@ -1599,9 +1599,9 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF // Store the solution back in dvector. for (int ispecies = 0; ispecies < nspecies; ispecies++) { - if (y[ispecies] < -MY_EPSILON) + if (y[ispecies] < -1.0e-10) { - //error->one(FLERR,"Computed concentration in RK solver is < -10*DBL_EPSILON"); + //error->one(FLERR,"Computed concentration in RK solver is < -1.0e-10"); k_error_flag.d_view() = 2; // This should be an atomic update. } @@ -1639,7 +1639,7 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF k_error_flag.template modify(); k_error_flag.template sync(); if (k_error_flag.h_view() == 2) - error->one(FLERR,"Computed concentration in RK solver is < -10*DBL_EPSILON"); + error->one(FLERR,"Computed concentration in RK solver is < -1.0e-10"); // Signal that dvector has been modified on this execution space. atomKK->modified( execution_space, DVECTOR_MASK ); -- GitLab From b418b46a03acf427c5d9eb015d1ea202557caed8 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sun, 26 Mar 2017 23:07:48 -0400 Subject: [PATCH 215/337] USER-DPD: bugfix for an array that changed length in the non-kokkos version. --- src/KOKKOS/npair_ssa_kokkos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 7b5a569051..699c2d3269 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -122,8 +122,8 @@ void NPairSSAKokkos::copy_stencil_info() NStencilSSA *ns_ssa = dynamic_cast(ns); if (!ns_ssa) error->one(FLERR, "NStencil wasn't a NStencilSSA object"); - k_nstencil_ssa = DAT::tdual_int_1d("NPairSSAKokkos:nstencil_ssa",8); - for (int k = 0; k < 8; ++k) { + k_nstencil_ssa = DAT::tdual_int_1d("NPairSSAKokkos:nstencil_ssa",5); + for (int k = 0; k < 5; ++k) { k_nstencil_ssa.h_view(k) = ns_ssa->nstencil_ssa[k]; } k_nstencil_ssa.modify(); -- GitLab From 5f0823172c4a2f76f6385e011e90876a08e7390c Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 27 Mar 2017 06:35:19 -0400 Subject: [PATCH 216/337] Make read_restart properly size the atom_vec_* data when reading via mpiio --- src/read_restart.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/read_restart.cpp b/src/read_restart.cpp index 6a950353ef..92d21a7062 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -208,6 +208,7 @@ void ReadRestart::command(int narg, char **arg) mpiio->read((headerOffset+assignedChunkOffset),assignedChunkSize,buf); mpiio->close(); + if (assignedChunkSize > atom->nmax) avec->grow(assignedChunkSize); m = 0; while (m < assignedChunkSize) m += avec->unpack_restart(&buf[m]); } -- GitLab From 28784a4ce2de90728365717a768c5d0f5b17772a Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 27 Mar 2017 08:38:40 -0500 Subject: [PATCH 217/337] Now with the correct math, make read_restart properly size the atom_vec_* data --- src/read_restart.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/read_restart.cpp b/src/read_restart.cpp index 92d21a7062..f29a603ef6 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -207,8 +207,23 @@ void ReadRestart::command(int narg, char **arg) memory->create(buf,assignedChunkSize,"read_restart:buf"); mpiio->read((headerOffset+assignedChunkOffset),assignedChunkSize,buf); mpiio->close(); - - if (assignedChunkSize > atom->nmax) avec->grow(assignedChunkSize); + if (!nextra) { // We can actually calculate number of atoms from assignedChunkSize + atom->nlocal = 1; // temporarily claim there is one atom... + int perAtomSize = avec->size_restart(); // ...so we can get its size + atom->nlocal = 0; // restore nlocal to zero atoms + int atomCt = (int) (assignedChunkSize / perAtomSize); +#ifdef DEBUG_ME_NOTNOW +fprintf(stdout, "ReadRestart::command %04d: pAS %d, aCt %d, nmax %d, chunckSize %12.0f, %12.0f\n" + ,me + ,perAtomSize + ,atomCt + ,atom->nmax + ,(double) assignedChunkSize + ,((double) perAtomSize) * atomCt +); +#endif + if (atomCt > atom->nmax) avec->grow(atomCt); + } m = 0; while (m < assignedChunkSize) m += avec->unpack_restart(&buf[m]); } -- GitLab From 0463923e330b070e578a38f7a2a0eda2b033c8c4 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 27 Mar 2017 10:41:32 -0500 Subject: [PATCH 218/337] USER-DPD Kokkos: tighten up the SSA data allocation to what is needed. A future version was planned to use more space for a ghost work queue. --- src/KOKKOS/npair_ssa_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 699c2d3269..59470189bc 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -205,7 +205,7 @@ void NPairSSAKokkos::build(NeighList *list_) { NeighListKokkos* list = (NeighListKokkos*) list_; const int nlocal = includegroup?atom->nfirst:atom->nlocal; - const int nl_size = (nlocal + atom->nghost) * 4; + const int nl_size = (nlocal * 4) + atom->nghost; list->grow(nl_size); // Make special larger SSA neighbor list ssa_phaseCt = sz1*sy1*sx1; -- GitLab From 661bd37e15bcb83266dbd28b294889fe0ece9554 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Mon, 27 Mar 2017 14:53:48 -0500 Subject: [PATCH 219/337] Make read_restart evenly divide the work of reading when using mpiio. Currently only affects restart files written without any per-atom fix data. --- src/read_restart.cpp | 92 +++++++++++++++++++++++++++++++++----------- 1 file changed, 70 insertions(+), 22 deletions(-) diff --git a/src/read_restart.cpp b/src/read_restart.cpp index f29a603ef6..331a5d6cda 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -212,7 +212,8 @@ void ReadRestart::command(int narg, char **arg) int perAtomSize = avec->size_restart(); // ...so we can get its size atom->nlocal = 0; // restore nlocal to zero atoms int atomCt = (int) (assignedChunkSize / perAtomSize); -#ifdef DEBUG_ME_NOTNOW +//#define DEBUG_PRE_GROW +#ifdef DEBUG_PRE_GROW fprintf(stdout, "ReadRestart::command %04d: pAS %d, aCt %d, nmax %d, chunckSize %12.0f, %12.0f\n" ,me ,perAtomSize @@ -1026,6 +1027,7 @@ void ReadRestart::file_layout() // if the number of ranks that did the writing is different if (me == 0) { + int ndx; int *all_written_send_sizes; memory->create(all_written_send_sizes,nprocs_file, "write_restart:all_written_send_sizes"); @@ -1035,30 +1037,76 @@ void ReadRestart::file_layout() fread(all_written_send_sizes,sizeof(int),nprocs_file,fp); - int init_chunk_number = nprocs_file/nprocs; - int num_extra_chunks = nprocs_file - (nprocs*init_chunk_number); + if ((nprocs != nprocs_file) && !(atom->nextra_store)) { + // nprocs differ, but atom sizes are fixed length, yeah! + atom->nlocal = 1; // temporarily claim there is one atom... + int perAtomSize = atom->avec->size_restart(); // ...so we can get its size + atom->nlocal = 0; // restore nlocal to zero atoms - for (int i = 0; i < nprocs; i++) { - if (i < num_extra_chunks) - nproc_chunk_number[i] = init_chunk_number+1; - else - nproc_chunk_number[i] = init_chunk_number; - } - - int all_written_send_sizes_index = 0; - bigint current_offset = 0; - for (int i=0;inatoms + ,(double) base_ct + ,(double) leftover_ct + ,nprocs + ,nprocs_file + ,(total_size == (total_ct * perAtomSize)) ? ' ' : 'E' + ,(total_ct == (base_ct * nprocs + leftover_ct)) ? ' ' : 'F' +); +#endif + } else { // Bummer, we have to read in based on how it was written + int init_chunk_number = nprocs_file/nprocs; + int num_extra_chunks = nprocs_file - (nprocs*init_chunk_number); + + for (int i = 0; i < nprocs; i++) { + if (i < num_extra_chunks) + nproc_chunk_number[i] = init_chunk_number+1; + else + nproc_chunk_number[i] = init_chunk_number; } + int all_written_send_sizes_index = 0; + bigint current_offset = 0; + for (int i=0;idestroy(all_written_send_sizes); memory->destroy(nproc_chunk_number); -- GitLab From 20ae05055dbb04054f0c1c6a0b4cda3260d7fbad Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 28 Mar 2017 11:38:26 -0600 Subject: [PATCH 220/337] fix memory leak via NeighListKokkos::clean_copy() There were several clean_copy() calls in pair styles *outside device code*. They seem to have been left over from an abandoned effort to copy the Kokkos neighbor list as a member of the pair style, instead of copying out the individual views needed. These leftover clean_copy() calls were setting pointers to NULL that had not been freed, leading to large memory leaks. I've removed the clean_copy() function entirely, and replaced it with the copymode flag system used in many other Kokkos objects. The copymode flag is only set to one in functors that hold copies of the neighbor list. --- src/KOKKOS/fix_qeq_reax_kokkos.cpp | 2 -- src/KOKKOS/fix_shardlow_kokkos.cpp | 2 -- src/KOKKOS/neigh_list_kokkos.cpp | 19 ++++++------------- src/KOKKOS/neigh_list_kokkos.h | 7 +------ src/KOKKOS/npair_kokkos.h | 2 +- src/KOKKOS/npair_ssa_kokkos.h | 2 +- src/KOKKOS/pair_coul_dsf_kokkos.cpp | 3 --- src/KOKKOS/pair_coul_wolf_kokkos.cpp | 3 --- src/KOKKOS/pair_eam_alloy_kokkos.cpp | 3 --- src/KOKKOS/pair_eam_fs_kokkos.cpp | 3 --- src/KOKKOS/pair_eam_kokkos.cpp | 5 +---- src/KOKKOS/pair_kokkos.h | 4 ++-- src/KOKKOS/pair_reax_c_kokkos.cpp | 3 --- src/KOKKOS/pair_sw_kokkos.cpp | 1 - src/KOKKOS/pair_tersoff_kokkos.cpp | 1 - src/KOKKOS/pair_tersoff_mod_kokkos.cpp | 1 - src/KOKKOS/pair_tersoff_zbl_kokkos.cpp | 1 - src/neigh_list.cpp | 2 ++ src/neigh_list.h | 3 ++- 19 files changed, 16 insertions(+), 51 deletions(-) diff --git a/src/KOKKOS/fix_qeq_reax_kokkos.cpp b/src/KOKKOS/fix_qeq_reax_kokkos.cpp index 3b8d5a85ea..fbc6e0a298 100644 --- a/src/KOKKOS/fix_qeq_reax_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reax_kokkos.cpp @@ -217,8 +217,6 @@ void FixQEqReaxKokkos::pre_force(int vflag) d_ilist = k_list->d_ilist; inum = list->inum; - k_list->clean_copy(); - //cleanup_copy(); copymode = 1; int teamsize = TEAMSIZE; diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index bf026552fa..676df07b61 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -624,8 +624,6 @@ void FixShardlowKokkos::initial_integrate(int vflag) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); - //cleanup_copy(); copymode = 1; dtsqrt = sqrt(update->dt); diff --git a/src/KOKKOS/neigh_list_kokkos.cpp b/src/KOKKOS/neigh_list_kokkos.cpp index b1b4e4467a..caf2dfee56 100644 --- a/src/KOKKOS/neigh_list_kokkos.cpp +++ b/src/KOKKOS/neigh_list_kokkos.cpp @@ -22,21 +22,14 @@ enum{NSQ,BIN,MULTI}; /* ---------------------------------------------------------------------- */ template -void NeighListKokkos::clean_copy() +NeighListKokkos::NeighListKokkos(class LAMMPS *lmp):NeighList(lmp) { - ilist = NULL; - numneigh = NULL; - firstneigh = NULL; - firstdouble = NULL; - dnum = 0; - iskip = NULL; - ijskip = NULL; - - ipage = NULL; - dpage = NULL; - + _stride = 1; + maxneighs = 16; + kokkos = 1; maxatoms = 0; -} + execution_space = ExecutionSpaceFromDevice::space; +}; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/neigh_list_kokkos.h b/src/KOKKOS/neigh_list_kokkos.h index cece97197d..1c433f321c 100644 --- a/src/KOKKOS/neigh_list_kokkos.h +++ b/src/KOKKOS/neigh_list_kokkos.h @@ -68,18 +68,13 @@ class NeighListKokkos: public NeighList { public: int maxneighs; - void clean_copy(); void grow(int nmax); typename ArrayTypes::t_neighbors_2d d_neighbors; typename DAT::tdual_int_1d k_ilist; // local indices of I atoms typename ArrayTypes::t_int_1d d_ilist; typename ArrayTypes::t_int_1d d_numneigh; // # of J neighs for each I - NeighListKokkos(class LAMMPS *lmp): - NeighList(lmp) {_stride = 1; maxneighs = 16; kokkos = 1; maxatoms = 0; - execution_space = ExecutionSpaceFromDevice::space; - }; - ~NeighListKokkos() {numneigh = NULL; ilist = NULL;}; + NeighListKokkos(class LAMMPS *lmp); KOKKOS_INLINE_FUNCTION AtomNeighbors get_neighbors(const int &i) const { diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index b31ef2ebbf..ab094e68eb 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -265,7 +265,7 @@ class NeighborKokkosExecute h_new_maxneighs() = neigh_list.maxneighs; }; - ~NeighborKokkosExecute() {neigh_list.clean_copy();}; + ~NeighborKokkosExecute() {neigh_list.copymode = 1;}; template KOKKOS_FUNCTION diff --git a/src/KOKKOS/npair_ssa_kokkos.h b/src/KOKKOS/npair_ssa_kokkos.h index e38d648984..96efd7404b 100644 --- a/src/KOKKOS/npair_ssa_kokkos.h +++ b/src/KOKKOS/npair_ssa_kokkos.h @@ -287,7 +287,7 @@ class NPairSSAKokkosExecute h_new_maxneighs() = neigh_list.maxneighs; }; - ~NPairSSAKokkosExecute() {neigh_list.clean_copy();}; + ~NPairSSAKokkosExecute() {neigh_list.copymode = 1;}; void build_locals(); void build_ghosts(); diff --git a/src/KOKKOS/pair_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_coul_dsf_kokkos.cpp index f2063bdc08..e6f5407f2d 100644 --- a/src/KOKKOS/pair_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_coul_dsf_kokkos.cpp @@ -120,9 +120,6 @@ void PairCoulDSFKokkos::compute(int eflag_in, int vflag_in) int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // loop over neighbors of my atoms diff --git a/src/KOKKOS/pair_coul_wolf_kokkos.cpp b/src/KOKKOS/pair_coul_wolf_kokkos.cpp index 8049ba0031..75177e2d81 100644 --- a/src/KOKKOS/pair_coul_wolf_kokkos.cpp +++ b/src/KOKKOS/pair_coul_wolf_kokkos.cpp @@ -121,9 +121,6 @@ void PairCoulWolfKokkos::compute(int eflag_in, int vflag_in) int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // loop over neighbors of my atoms diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.cpp b/src/KOKKOS/pair_eam_alloy_kokkos.cpp index 45c320bc51..acf9b27963 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.cpp +++ b/src/KOKKOS/pair_eam_alloy_kokkos.cpp @@ -122,9 +122,6 @@ void PairEAMAlloyKokkos::compute(int eflag_in, int vflag_in) d_ilist = k_list->d_ilist; int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // zero out density diff --git a/src/KOKKOS/pair_eam_fs_kokkos.cpp b/src/KOKKOS/pair_eam_fs_kokkos.cpp index b9fa82740a..a31263dfcd 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.cpp +++ b/src/KOKKOS/pair_eam_fs_kokkos.cpp @@ -122,9 +122,6 @@ void PairEAMFSKokkos::compute(int eflag_in, int vflag_in) d_ilist = k_list->d_ilist; int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // zero out density diff --git a/src/KOKKOS/pair_eam_kokkos.cpp b/src/KOKKOS/pair_eam_kokkos.cpp index e4128de722..006c9582c5 100644 --- a/src/KOKKOS/pair_eam_kokkos.cpp +++ b/src/KOKKOS/pair_eam_kokkos.cpp @@ -117,9 +117,6 @@ void PairEAMKokkos::compute(int eflag_in, int vflag_in) d_ilist = k_list->d_ilist; int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // zero out density @@ -870,4 +867,4 @@ template class PairEAMKokkos; #ifdef KOKKOS_HAVE_CUDA template class PairEAMKokkos; #endif -} \ No newline at end of file +} diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index 1e01b3df15..b0614a934b 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -87,7 +87,7 @@ struct PairComputeFunctor { vatom(c.d_vatom),list(*list_ptr) {}; // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - ~PairComputeFunctor() {c.cleanup_copy();list.clean_copy();}; + ~PairComputeFunctor() {c.cleanup_copy();list.copymode = 1;}; KOKKOS_INLINE_FUNCTION int sbmask(const int& j) const { return j >> SBBITS & 3; @@ -344,7 +344,7 @@ struct PairComputeFunctor { PairComputeFunctor(PairStyle* c_ptr, NeighListKokkos* list_ptr): c(*c_ptr),list(*list_ptr) {}; - ~PairComputeFunctor() {c.cleanup_copy();list.clean_copy();}; + ~PairComputeFunctor() {c.cleanup_copy();list.copymode = 1;}; KOKKOS_INLINE_FUNCTION int sbmask(const int& j) const { return j >> SBBITS & 3; diff --git a/src/KOKKOS/pair_reax_c_kokkos.cpp b/src/KOKKOS/pair_reax_c_kokkos.cpp index acf9c754cd..87915dce3e 100644 --- a/src/KOKKOS/pair_reax_c_kokkos.cpp +++ b/src/KOKKOS/pair_reax_c_kokkos.cpp @@ -709,8 +709,6 @@ void PairReaxCKokkos::compute(int eflag_in, int vflag_in) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); - if (eflag_global) { for (int i = 0; i < 14; i++) pvector[i] = 0.0; @@ -4012,7 +4010,6 @@ void PairReaxCKokkos::FindBond(int &numbonds) const int inum = list->inum; NeighListKokkos* k_list = static_cast*>(list); d_ilist = k_list->d_ilist; - k_list->clean_copy(); numbonds = 0; PairReaxCKokkosFindBondFunctor find_bond_functor(this); diff --git a/src/KOKKOS/pair_sw_kokkos.cpp b/src/KOKKOS/pair_sw_kokkos.cpp index a8950a0c79..e5c947cc8e 100644 --- a/src/KOKKOS/pair_sw_kokkos.cpp +++ b/src/KOKKOS/pair_sw_kokkos.cpp @@ -115,7 +115,6 @@ void PairSWKokkos::compute(int eflag_in, int vflag_in) d_numneigh = k_list->d_numneigh; d_neighbors = k_list->d_neighbors; - k_list->clean_copy(); copymode = 1; EV_FLOAT ev; diff --git a/src/KOKKOS/pair_tersoff_kokkos.cpp b/src/KOKKOS/pair_tersoff_kokkos.cpp index 75280c8f7c..833c815ad9 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_kokkos.cpp @@ -200,7 +200,6 @@ void PairTersoffKokkos::compute(int eflag_in, int vflag_in) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); copymode = 1; EV_FLOAT ev; diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp index d16a7fc4d7..d77ba2f141 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp @@ -200,7 +200,6 @@ void PairTersoffMODKokkos::compute(int eflag_in, int vflag_in) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); copymode = 1; EV_FLOAT ev; diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp index e9bae49fb7..040d8c5230 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp @@ -214,7 +214,6 @@ void PairTersoffZBLKokkos::compute(int eflag_in, int vflag_in) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); copymode = 1; EV_FLOAT ev; diff --git a/src/neigh_list.cpp b/src/neigh_list.cpp index 6376637832..dde544a69f 100644 --- a/src/neigh_list.cpp +++ b/src/neigh_list.cpp @@ -48,6 +48,7 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp) ghost = 0; ssa = 0; copy = 0; + copymode = 0; dnum = 0; // ptrs @@ -86,6 +87,7 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp) NeighList::~NeighList() { + if (copymode) return; if (!copy) { memory->destroy(ilist); memory->destroy(numneigh); diff --git a/src/neigh_list.h b/src/neigh_list.h index bef512512c..4010a68857 100644 --- a/src/neigh_list.h +++ b/src/neigh_list.h @@ -34,7 +34,8 @@ class NeighList : protected Pointers { int occasional; // 0 if build every reneighbor, 1 if not int ghost; // 1 if list stores neighbors of ghosts int ssa; // 1 if list stores Shardlow data - int copy; // 1 if this list copied from another list + int copy; // 1 if this list is (host) copied from another list + int copymode; // 1 if this is a Kokkos on-device copy int dnum; // # of doubles per neighbor, 0 if none // data structs to store neighbor pairs I,J and associated values -- GitLab From b3d6d9f8cf3e66437c7471a214fb668a7601c9fd Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 28 Mar 2017 11:38:26 -0600 Subject: [PATCH 221/337] fix memory leak via NeighListKokkos::clean_copy() There were several clean_copy() calls in pair styles *outside device code*. They seem to have been left over from an abandoned effort to copy the Kokkos neighbor list as a member of the pair style, instead of copying out the individual views needed. These leftover clean_copy() calls were setting pointers to NULL that had not been freed, leading to large memory leaks. I've removed the clean_copy() function entirely, and replaced it with the copymode flag system used in many other Kokkos objects. The copymode flag is only set to one in functors that hold copies of the neighbor list. --- src/KOKKOS/fix_qeq_reax_kokkos.cpp | 2 -- src/KOKKOS/fix_shardlow_kokkos.cpp | 2 -- src/KOKKOS/neigh_list_kokkos.cpp | 19 ++++++------------- src/KOKKOS/neigh_list_kokkos.h | 7 +------ src/KOKKOS/npair_kokkos.h | 2 +- src/KOKKOS/npair_ssa_kokkos.h | 2 +- src/KOKKOS/pair_coul_dsf_kokkos.cpp | 3 --- src/KOKKOS/pair_coul_wolf_kokkos.cpp | 3 --- src/KOKKOS/pair_eam_alloy_kokkos.cpp | 3 --- src/KOKKOS/pair_eam_fs_kokkos.cpp | 3 --- src/KOKKOS/pair_eam_kokkos.cpp | 5 +---- src/KOKKOS/pair_kokkos.h | 4 ++-- src/KOKKOS/pair_reax_c_kokkos.cpp | 3 --- src/KOKKOS/pair_sw_kokkos.cpp | 1 - src/KOKKOS/pair_tersoff_kokkos.cpp | 1 - src/KOKKOS/pair_tersoff_mod_kokkos.cpp | 1 - src/KOKKOS/pair_tersoff_zbl_kokkos.cpp | 1 - src/neigh_list.cpp | 2 ++ src/neigh_list.h | 3 ++- 19 files changed, 16 insertions(+), 51 deletions(-) diff --git a/src/KOKKOS/fix_qeq_reax_kokkos.cpp b/src/KOKKOS/fix_qeq_reax_kokkos.cpp index 3b8d5a85ea..fbc6e0a298 100644 --- a/src/KOKKOS/fix_qeq_reax_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reax_kokkos.cpp @@ -217,8 +217,6 @@ void FixQEqReaxKokkos::pre_force(int vflag) d_ilist = k_list->d_ilist; inum = list->inum; - k_list->clean_copy(); - //cleanup_copy(); copymode = 1; int teamsize = TEAMSIZE; diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index bf026552fa..676df07b61 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -624,8 +624,6 @@ void FixShardlowKokkos::initial_integrate(int vflag) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); - //cleanup_copy(); copymode = 1; dtsqrt = sqrt(update->dt); diff --git a/src/KOKKOS/neigh_list_kokkos.cpp b/src/KOKKOS/neigh_list_kokkos.cpp index b1b4e4467a..caf2dfee56 100644 --- a/src/KOKKOS/neigh_list_kokkos.cpp +++ b/src/KOKKOS/neigh_list_kokkos.cpp @@ -22,21 +22,14 @@ enum{NSQ,BIN,MULTI}; /* ---------------------------------------------------------------------- */ template -void NeighListKokkos::clean_copy() +NeighListKokkos::NeighListKokkos(class LAMMPS *lmp):NeighList(lmp) { - ilist = NULL; - numneigh = NULL; - firstneigh = NULL; - firstdouble = NULL; - dnum = 0; - iskip = NULL; - ijskip = NULL; - - ipage = NULL; - dpage = NULL; - + _stride = 1; + maxneighs = 16; + kokkos = 1; maxatoms = 0; -} + execution_space = ExecutionSpaceFromDevice::space; +}; /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/neigh_list_kokkos.h b/src/KOKKOS/neigh_list_kokkos.h index cece97197d..1c433f321c 100644 --- a/src/KOKKOS/neigh_list_kokkos.h +++ b/src/KOKKOS/neigh_list_kokkos.h @@ -68,18 +68,13 @@ class NeighListKokkos: public NeighList { public: int maxneighs; - void clean_copy(); void grow(int nmax); typename ArrayTypes::t_neighbors_2d d_neighbors; typename DAT::tdual_int_1d k_ilist; // local indices of I atoms typename ArrayTypes::t_int_1d d_ilist; typename ArrayTypes::t_int_1d d_numneigh; // # of J neighs for each I - NeighListKokkos(class LAMMPS *lmp): - NeighList(lmp) {_stride = 1; maxneighs = 16; kokkos = 1; maxatoms = 0; - execution_space = ExecutionSpaceFromDevice::space; - }; - ~NeighListKokkos() {numneigh = NULL; ilist = NULL;}; + NeighListKokkos(class LAMMPS *lmp); KOKKOS_INLINE_FUNCTION AtomNeighbors get_neighbors(const int &i) const { diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index b31ef2ebbf..ab094e68eb 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -265,7 +265,7 @@ class NeighborKokkosExecute h_new_maxneighs() = neigh_list.maxneighs; }; - ~NeighborKokkosExecute() {neigh_list.clean_copy();}; + ~NeighborKokkosExecute() {neigh_list.copymode = 1;}; template KOKKOS_FUNCTION diff --git a/src/KOKKOS/npair_ssa_kokkos.h b/src/KOKKOS/npair_ssa_kokkos.h index e38d648984..96efd7404b 100644 --- a/src/KOKKOS/npair_ssa_kokkos.h +++ b/src/KOKKOS/npair_ssa_kokkos.h @@ -287,7 +287,7 @@ class NPairSSAKokkosExecute h_new_maxneighs() = neigh_list.maxneighs; }; - ~NPairSSAKokkosExecute() {neigh_list.clean_copy();}; + ~NPairSSAKokkosExecute() {neigh_list.copymode = 1;}; void build_locals(); void build_ghosts(); diff --git a/src/KOKKOS/pair_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_coul_dsf_kokkos.cpp index f2063bdc08..e6f5407f2d 100644 --- a/src/KOKKOS/pair_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_coul_dsf_kokkos.cpp @@ -120,9 +120,6 @@ void PairCoulDSFKokkos::compute(int eflag_in, int vflag_in) int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // loop over neighbors of my atoms diff --git a/src/KOKKOS/pair_coul_wolf_kokkos.cpp b/src/KOKKOS/pair_coul_wolf_kokkos.cpp index 8049ba0031..75177e2d81 100644 --- a/src/KOKKOS/pair_coul_wolf_kokkos.cpp +++ b/src/KOKKOS/pair_coul_wolf_kokkos.cpp @@ -121,9 +121,6 @@ void PairCoulWolfKokkos::compute(int eflag_in, int vflag_in) int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // loop over neighbors of my atoms diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.cpp b/src/KOKKOS/pair_eam_alloy_kokkos.cpp index 45c320bc51..acf9b27963 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.cpp +++ b/src/KOKKOS/pair_eam_alloy_kokkos.cpp @@ -122,9 +122,6 @@ void PairEAMAlloyKokkos::compute(int eflag_in, int vflag_in) d_ilist = k_list->d_ilist; int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // zero out density diff --git a/src/KOKKOS/pair_eam_fs_kokkos.cpp b/src/KOKKOS/pair_eam_fs_kokkos.cpp index b9fa82740a..a31263dfcd 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.cpp +++ b/src/KOKKOS/pair_eam_fs_kokkos.cpp @@ -122,9 +122,6 @@ void PairEAMFSKokkos::compute(int eflag_in, int vflag_in) d_ilist = k_list->d_ilist; int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // zero out density diff --git a/src/KOKKOS/pair_eam_kokkos.cpp b/src/KOKKOS/pair_eam_kokkos.cpp index e4128de722..006c9582c5 100644 --- a/src/KOKKOS/pair_eam_kokkos.cpp +++ b/src/KOKKOS/pair_eam_kokkos.cpp @@ -117,9 +117,6 @@ void PairEAMKokkos::compute(int eflag_in, int vflag_in) d_ilist = k_list->d_ilist; int inum = list->inum; - // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - - k_list->clean_copy(); copymode = 1; // zero out density @@ -870,4 +867,4 @@ template class PairEAMKokkos; #ifdef KOKKOS_HAVE_CUDA template class PairEAMKokkos; #endif -} \ No newline at end of file +} diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index 1e01b3df15..b0614a934b 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -87,7 +87,7 @@ struct PairComputeFunctor { vatom(c.d_vatom),list(*list_ptr) {}; // Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle - ~PairComputeFunctor() {c.cleanup_copy();list.clean_copy();}; + ~PairComputeFunctor() {c.cleanup_copy();list.copymode = 1;}; KOKKOS_INLINE_FUNCTION int sbmask(const int& j) const { return j >> SBBITS & 3; @@ -344,7 +344,7 @@ struct PairComputeFunctor { PairComputeFunctor(PairStyle* c_ptr, NeighListKokkos* list_ptr): c(*c_ptr),list(*list_ptr) {}; - ~PairComputeFunctor() {c.cleanup_copy();list.clean_copy();}; + ~PairComputeFunctor() {c.cleanup_copy();list.copymode = 1;}; KOKKOS_INLINE_FUNCTION int sbmask(const int& j) const { return j >> SBBITS & 3; diff --git a/src/KOKKOS/pair_reax_c_kokkos.cpp b/src/KOKKOS/pair_reax_c_kokkos.cpp index acf9c754cd..87915dce3e 100644 --- a/src/KOKKOS/pair_reax_c_kokkos.cpp +++ b/src/KOKKOS/pair_reax_c_kokkos.cpp @@ -709,8 +709,6 @@ void PairReaxCKokkos::compute(int eflag_in, int vflag_in) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); - if (eflag_global) { for (int i = 0; i < 14; i++) pvector[i] = 0.0; @@ -4012,7 +4010,6 @@ void PairReaxCKokkos::FindBond(int &numbonds) const int inum = list->inum; NeighListKokkos* k_list = static_cast*>(list); d_ilist = k_list->d_ilist; - k_list->clean_copy(); numbonds = 0; PairReaxCKokkosFindBondFunctor find_bond_functor(this); diff --git a/src/KOKKOS/pair_sw_kokkos.cpp b/src/KOKKOS/pair_sw_kokkos.cpp index a8950a0c79..e5c947cc8e 100644 --- a/src/KOKKOS/pair_sw_kokkos.cpp +++ b/src/KOKKOS/pair_sw_kokkos.cpp @@ -115,7 +115,6 @@ void PairSWKokkos::compute(int eflag_in, int vflag_in) d_numneigh = k_list->d_numneigh; d_neighbors = k_list->d_neighbors; - k_list->clean_copy(); copymode = 1; EV_FLOAT ev; diff --git a/src/KOKKOS/pair_tersoff_kokkos.cpp b/src/KOKKOS/pair_tersoff_kokkos.cpp index 75280c8f7c..833c815ad9 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_kokkos.cpp @@ -200,7 +200,6 @@ void PairTersoffKokkos::compute(int eflag_in, int vflag_in) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); copymode = 1; EV_FLOAT ev; diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp index d16a7fc4d7..d77ba2f141 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp @@ -200,7 +200,6 @@ void PairTersoffMODKokkos::compute(int eflag_in, int vflag_in) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); copymode = 1; EV_FLOAT ev; diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp index e9bae49fb7..040d8c5230 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp @@ -214,7 +214,6 @@ void PairTersoffZBLKokkos::compute(int eflag_in, int vflag_in) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - k_list->clean_copy(); copymode = 1; EV_FLOAT ev; diff --git a/src/neigh_list.cpp b/src/neigh_list.cpp index 6376637832..dde544a69f 100644 --- a/src/neigh_list.cpp +++ b/src/neigh_list.cpp @@ -48,6 +48,7 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp) ghost = 0; ssa = 0; copy = 0; + copymode = 0; dnum = 0; // ptrs @@ -86,6 +87,7 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp) NeighList::~NeighList() { + if (copymode) return; if (!copy) { memory->destroy(ilist); memory->destroy(numneigh); diff --git a/src/neigh_list.h b/src/neigh_list.h index bef512512c..4010a68857 100644 --- a/src/neigh_list.h +++ b/src/neigh_list.h @@ -34,7 +34,8 @@ class NeighList : protected Pointers { int occasional; // 0 if build every reneighbor, 1 if not int ghost; // 1 if list stores neighbors of ghosts int ssa; // 1 if list stores Shardlow data - int copy; // 1 if this list copied from another list + int copy; // 1 if this list is (host) copied from another list + int copymode; // 1 if this is a Kokkos on-device copy int dnum; // # of doubles per neighbor, 0 if none // data structs to store neighbor pairs I,J and associated values -- GitLab From bf4f0817d4f85bc22a6f1b3a01b40b8f23b46a6b Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 31 Mar 2017 15:57:00 -0600 Subject: [PATCH 222/337] fix memory leaks in pair_tabl_rx_kokkos --- src/KOKKOS/pair_table_rx_kokkos.cpp | 19 ++++++++++++++----- src/USER-DPD/pair_table_rx.cpp | 10 ++++++++++ src/USER-DPD/pair_table_rx.h | 2 +- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 044f303bf5..eacaf83cf5 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -147,6 +147,9 @@ PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTable(lmp) h_table = new TableHost(); d_table = new TableDevice(); fractionalWeighting = true; + + site1 = nullptr; + site2 = nullptr; } /* ---------------------------------------------------------------------- */ @@ -156,14 +159,21 @@ PairTableRXKokkos::~PairTableRXKokkos() { if (copymode) return; + delete [] site1; + delete [] site2; + memory->destroy_kokkos(k_eatom,eatom); memory->destroy_kokkos(k_vatom,vatom); + if (allocated) { + memory->destroy_kokkos(d_table->cutsq, cutsq); + memory->destroy_kokkos(d_table->tabindex, tabindex); + } + delete h_table; h_table = nullptr; delete d_table; d_table = nullptr; - copymode = true; //prevents base class destructor from running } /* ---------------------------------------------------------------------- */ @@ -981,6 +991,8 @@ void PairTableRXKokkos::settings(int narg, char **arg) for (int m = 0; m < ntables; m++) free_table(&tables[m]); memory->sfree(tables); + ntables = 0; + tables = NULL; if (allocated) { memory->destroy(setflag); @@ -990,11 +1002,8 @@ void PairTableRXKokkos::settings(int narg, char **arg) d_table_const.cutsq = d_table->cutsq = typename ArrayTypes::t_ffloat_2d(); h_table->cutsq = typename ArrayTypes::t_ffloat_2d(); + allocated = 0; } - allocated = 0; - - ntables = 0; - tables = NULL; } /* ---------------------------------------------------------------------- diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index cf85fe2e60..89d09e7322 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -47,6 +47,16 @@ enum{NONE,RLINEAR,RSQ,BMP}; PairTableRX::PairTableRX(LAMMPS *lmp) : PairTable(lmp) { fractionalWeighting = true; + site1 = NULL; + site2 = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairTableRX::~PairTableRX() +{ + delete [] site1; + delete [] site2; } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-DPD/pair_table_rx.h b/src/USER-DPD/pair_table_rx.h index 9dee5df266..da7889e99a 100644 --- a/src/USER-DPD/pair_table_rx.h +++ b/src/USER-DPD/pair_table_rx.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairTableRX : public PairTable { public: PairTableRX(class LAMMPS *); - virtual ~PairTableRX() {} + virtual ~PairTableRX(); virtual void compute(int, int); void settings(int, char **); -- GitLab From 5edbd63920681f585b054d4aebf2fb7eb462f5ce Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 31 Mar 2017 16:03:05 -0600 Subject: [PATCH 223/337] fix memory leak in fix_shardlow_kokkos --- src/KOKKOS/fix_shardlow_kokkos.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 676df07b61..52287d586c 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -741,6 +741,7 @@ fprintf(stdout, "\n%6d %6d,%6d %6d: " ); #endif + copymode = 0; } /* ---------------------------------------------------------------------- */ -- GitLab From fe82926c1f41d2a99ad75ca3d07312ad0945e52a Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 31 Mar 2017 15:57:00 -0600 Subject: [PATCH 224/337] fix memory leaks in pair_tabl_rx_kokkos --- src/KOKKOS/pair_table_rx_kokkos.cpp | 19 ++++++++++++++----- src/USER-DPD/pair_table_rx.cpp | 10 ++++++++++ src/USER-DPD/pair_table_rx.h | 2 +- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 044f303bf5..eacaf83cf5 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -147,6 +147,9 @@ PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTable(lmp) h_table = new TableHost(); d_table = new TableDevice(); fractionalWeighting = true; + + site1 = nullptr; + site2 = nullptr; } /* ---------------------------------------------------------------------- */ @@ -156,14 +159,21 @@ PairTableRXKokkos::~PairTableRXKokkos() { if (copymode) return; + delete [] site1; + delete [] site2; + memory->destroy_kokkos(k_eatom,eatom); memory->destroy_kokkos(k_vatom,vatom); + if (allocated) { + memory->destroy_kokkos(d_table->cutsq, cutsq); + memory->destroy_kokkos(d_table->tabindex, tabindex); + } + delete h_table; h_table = nullptr; delete d_table; d_table = nullptr; - copymode = true; //prevents base class destructor from running } /* ---------------------------------------------------------------------- */ @@ -981,6 +991,8 @@ void PairTableRXKokkos::settings(int narg, char **arg) for (int m = 0; m < ntables; m++) free_table(&tables[m]); memory->sfree(tables); + ntables = 0; + tables = NULL; if (allocated) { memory->destroy(setflag); @@ -990,11 +1002,8 @@ void PairTableRXKokkos::settings(int narg, char **arg) d_table_const.cutsq = d_table->cutsq = typename ArrayTypes::t_ffloat_2d(); h_table->cutsq = typename ArrayTypes::t_ffloat_2d(); + allocated = 0; } - allocated = 0; - - ntables = 0; - tables = NULL; } /* ---------------------------------------------------------------------- diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index cf85fe2e60..89d09e7322 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -47,6 +47,16 @@ enum{NONE,RLINEAR,RSQ,BMP}; PairTableRX::PairTableRX(LAMMPS *lmp) : PairTable(lmp) { fractionalWeighting = true; + site1 = NULL; + site2 = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairTableRX::~PairTableRX() +{ + delete [] site1; + delete [] site2; } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-DPD/pair_table_rx.h b/src/USER-DPD/pair_table_rx.h index 9dee5df266..da7889e99a 100644 --- a/src/USER-DPD/pair_table_rx.h +++ b/src/USER-DPD/pair_table_rx.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairTableRX : public PairTable { public: PairTableRX(class LAMMPS *); - virtual ~PairTableRX() {} + virtual ~PairTableRX(); virtual void compute(int, int); void settings(int, char **); -- GitLab From 6ba59cb4583c86af3f0104bb10e1ecd324bf9cce Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 31 Mar 2017 16:03:05 -0600 Subject: [PATCH 225/337] fix memory leak in fix_shardlow_kokkos --- src/KOKKOS/fix_shardlow_kokkos.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 676df07b61..52287d586c 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -741,6 +741,7 @@ fprintf(stdout, "\n%6d %6d,%6d %6d: " ); #endif + copymode = 0; } /* ---------------------------------------------------------------------- */ -- GitLab From ac64183ecfdd1a7cdd82770c96e1fbe05934967e Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sat, 1 Apr 2017 12:11:55 -0400 Subject: [PATCH 226/337] USER-DPD Kokkos: WIP on preflighting SSA neighbor list build, with debugging --- src/KOKKOS/npair_ssa_kokkos.cpp | 73 +++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 59470189bc..87cc02e734 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -240,6 +240,58 @@ void NPairSSAKokkos::build(NeighList *list_) ssa_gitemLen = k_ssa_gitemLen.view(); } +{ // Preflight the neighbor list build + const typename ArrayTypes::t_int_1d_const c_bincount = k_bincount.view(); + int inum = 0; + + int workPhase = 0; + // loop over bins with local atoms, storing half of the neighbors + for (int zoff = sz1 - 1; zoff >= 0; --zoff) { + for (int yoff = sy1 - 1; yoff >= 0; --yoff) { + for (int xoff = sx1 - 1; xoff >= 0; --xoff) { + int workItem = 0; + for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { + for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { + for (int xbin = lbinxlo + xoff - sx1 + 1; xbin < lbinxhi; xbin += sx1) { +// if (workItem >= phaseLenEstimate) error->one(FLERR,"phaseLenEstimate was too small"); + ssa_itemLoc(workPhase, workItem) = inum; // record where workItem starts in ilist + + for (int subphase = 0; subphase < 4; subphase++) { + int s_ybin = ybin + ((subphase & 0x2) ? sy1 - 1 : 0); + int s_xbin = xbin + ((subphase & 0x1) ? sx1 - 1 : 0); + if ((s_ybin < lbinylo) || (s_ybin >= lbinyhi)) continue; + if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; + + int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; + inum += c_bincount(ibin); + } + // record where workItem ends in ilist + ssa_itemLen(workPhase,workItem) = inum - ssa_itemLoc(workPhase,workItem); + if (ssa_itemLen(workPhase,workItem) > 0) workItem++; + } + } + } + +fprintf(stdout, "phase %3d could use %6d inums, expected %6d inums. maxworkItems = %3d, inums/workItems = %g\n" + ,workPhase + ,inum - ssa_itemLoc(workPhase, 0) + ,(nlocal*4 + ssa_phaseCt - 1) / ssa_phaseCt + ,workItem + ,(inum - ssa_itemLoc(workPhase, 0)) / (double) workItem +); + // record where workPhase ends + ssa_phaseLen(workPhase++) = workItem; + } + } + } +fprintf(stdout, "total %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" + ,workPhase + ,inum + ,nlocal*4 + ,inum / (double) workPhase +); +} + NPairSSAKokkosExecute data(*list, k_cutneighsq.view(), @@ -355,18 +407,18 @@ void NPairSSAKokkosExecute::build_locals() int n = 0; int which = 0; int inum = 0; - int workPhase = 0; + // loop over bins with local atoms, storing half of the neighbors for (int zoff = sz1 - 1; zoff >= 0; --zoff) { for (int yoff = sy1 - 1; yoff >= 0; --yoff) { for (int xoff = sx1 - 1; xoff >= 0; --xoff) { int workItem = 0; + inum = d_ssa_itemLoc(workPhase, workItem); // get where workPhase starts in ilist for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { for (int xbin = lbinxlo + xoff - sx1 + 1; xbin < lbinxhi; xbin += sx1) { -// if (workItem >= phaseLenEstimate) error->one(FLERR,"phaseLenEstimate was too small"); - d_ssa_itemLoc(workPhase, workItem) = inum; // record where workItem starts in ilist + d_ssa_itemLoc(workPhase, workItem) = inum; // record where workItem actually starts in ilist for (int subphase = 0; subphase < 4; subphase++) { int s_ybin = ybin + ((subphase & 0x2) ? sy1 - 1 : 0); @@ -441,18 +493,31 @@ void NPairSSAKokkosExecute::build_locals() } } } - // record where workItem ends in ilist + // record where workItem actually ends in ilist d_ssa_itemLen(workPhase,workItem) = inum - d_ssa_itemLoc(workPhase,workItem); if (d_ssa_itemLen(workPhase,workItem) > 0) workItem++; } } } +fprintf(stdout, "phase %3d used %6d inums, expected %6d inums. workItems = %3d, inums/workItems = %g\n" + ,workPhase + ,inum - d_ssa_itemLoc(workPhase, 0) + ,(nlocal*4 + ssa_phaseCt - 1) / ssa_phaseCt + ,workItem + ,(inum - d_ssa_itemLoc(workPhase, 0)) / (double) workItem +); // record where workPhase ends d_ssa_phaseLen(workPhase++) = workItem; } } } +fprintf(stdout, "Total %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" + ,workPhase + ,inum + ,nlocal*4 + ,inum / (double) workPhase +); //FIXME if (ssa_phaseCt != workPhase) error->one(FLERR,"ssa_phaseCt was wrong"); -- GitLab From ac4c35ce8d1caf0d7deaa1f0c816c0f5f5d9c523 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sat, 1 Apr 2017 13:45:29 -0400 Subject: [PATCH 227/337] USER-DPD Kokkos: more WIP on preflighting SSA neighbor list build, with debugging --- src/KOKKOS/npair_ssa_kokkos.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 87cc02e734..5c20f1c270 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -205,8 +205,7 @@ void NPairSSAKokkos::build(NeighList *list_) { NeighListKokkos* list = (NeighListKokkos*) list_; const int nlocal = includegroup?atom->nfirst:atom->nlocal; - const int nl_size = (nlocal * 4) + atom->nghost; - list->grow(nl_size); // Make special larger SSA neighbor list + int nl_size = atom->nghost; ssa_phaseCt = sz1*sy1*sx1; @@ -240,8 +239,11 @@ void NPairSSAKokkos::build(NeighList *list_) ssa_gitemLen = k_ssa_gitemLen.view(); } -{ // Preflight the neighbor list build +{ // Preflight the neighbor list workplan const typename ArrayTypes::t_int_1d_const c_bincount = k_bincount.view(); + const typename ArrayTypes::t_int_2d_const c_bins = k_bins.view(); + const typename ArrayTypes::t_int_1d_const_um c_stencil = k_stencil.view(); + const typename ArrayTypes::t_int_1d_const c_nstencil_ssa = k_nstencil_ssa.view(); int inum = 0; int workPhase = 0; @@ -263,7 +265,17 @@ void NPairSSAKokkos::build(NeighList *list_) if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; - inum += c_bincount(ibin); + for (int il = 0; il < c_bincount(ibin); ++il) { + int n = 0; + + // count all local atoms in the current stencil "subphase" as potential neighbors + for (int k = c_nstencil_ssa(subphase); k < c_nstencil_ssa(subphase+1); k++) { + const int jbin = ibin+c_stencil(k); + int jl = (jbin != ibin) ? 0 : (il + 1); // same bin as il, so start just past il in the bin + n += c_bincount(jbin) - jl; + } + if (n > 0) inum++; + } } // record where workItem ends in ilist ssa_itemLen(workPhase,workItem) = inum - ssa_itemLoc(workPhase,workItem); @@ -290,8 +302,11 @@ fprintf(stdout, "total %3d could use %6d inums, expected %6d inums. inums/phase ,nlocal*4 ,inum / (double) workPhase ); + nl_size += inum; } + list->grow(nl_size); // Make special larger SSA neighbor list + NPairSSAKokkosExecute data(*list, k_cutneighsq.view(), @@ -404,7 +419,6 @@ fprintf(stdout, "total %3d could use %6d inums, expected %6d inums. inums/phase template void NPairSSAKokkosExecute::build_locals() { - int n = 0; int which = 0; int inum = 0; int workPhase = 0; @@ -429,7 +443,7 @@ void NPairSSAKokkosExecute::build_locals() int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; for (int il = 0; il < c_bincount(ibin); ++il) { const int i = c_bins(ibin, il); - n = 0; + int n = 0; const AtomNeighbors neighbors_i = neigh_list.get_neighbors(inum); const X_FLOAT xtmp = x(i, 0); -- GitLab From e0021a3ff51702ed4b5c79720dfe69dd247988fa Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sat, 1 Apr 2017 14:41:52 -0400 Subject: [PATCH 228/337] USER-DPD Kokkos: preflight SSA neigh list workplan to reduce allocated storage --- src/KOKKOS/npair_ssa_kokkos.cpp | 36 +++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 5c20f1c270..1c7095c9b4 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -205,7 +205,7 @@ void NPairSSAKokkos::build(NeighList *list_) { NeighListKokkos* list = (NeighListKokkos*) list_; const int nlocal = includegroup?atom->nfirst:atom->nlocal; - int nl_size = atom->nghost; + int nl_size; ssa_phaseCt = sz1*sy1*sx1; @@ -265,17 +265,17 @@ void NPairSSAKokkos::build(NeighList *list_) if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; - for (int il = 0; il < c_bincount(ibin); ++il) { - int n = 0; - - // count all local atoms in the current stencil "subphase" as potential neighbors - for (int k = c_nstencil_ssa(subphase); k < c_nstencil_ssa(subphase+1); k++) { - const int jbin = ibin+c_stencil(k); - int jl = (jbin != ibin) ? 0 : (il + 1); // same bin as il, so start just past il in the bin - n += c_bincount(jbin) - jl; - } - if (n > 0) inum++; + int base_n = 0; + bool include_same = false; + // count all local atoms in the current stencil "subphase" as potential neighbors + for (int k = c_nstencil_ssa(subphase); k < c_nstencil_ssa(subphase+1); k++) { + const int jbin = ibin+c_stencil(k); + if (jbin != ibin) base_n += c_bincount(jbin); + else include_same = true; } + // Calculate how many ibin particles would have had some neighbors + if (base_n > 0) inum += c_bincount(ibin); + else if (include_same) inum += c_bincount(ibin) - 1; } // record where workItem ends in ilist ssa_itemLen(workPhase,workItem) = inum - ssa_itemLoc(workPhase,workItem); @@ -302,9 +302,12 @@ fprintf(stdout, "total %3d could use %6d inums, expected %6d inums. inums/phase ,nlocal*4 ,inum / (double) workPhase ); - nl_size += inum; + nl_size = inum; // record how much space is needed for the local work plan } - + // count how many ghosts are likely to have neighbors, and increase the work plan storage + for (int workPhase = 0; workPhase < ssa_gphaseCt; workPhase++) { + nl_size += k_gbincount.h_view(workPhase + 1); + } list->grow(nl_size); // Make special larger SSA neighbor list NPairSSAKokkosExecute @@ -412,6 +415,13 @@ fprintf(stdout, "total %3d could use %6d inums, expected %6d inums. inums/phase list->inum = data.neigh_list.inum; //FIXME once the above is in a parallel_for list->gnum = data.neigh_list.gnum; // it will need a deep_copy or something +fprintf(stdout, "%6d inum %6d gnum, total used %6d, allocated %6d\n" + ,list->inum + ,list->gnum + ,list->inum + list->gnum + ,nl_size +); + list->k_ilist.template modify(); } -- GitLab From c4c3d490c7e0e4c416a119f852ef2973229c2815 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sat, 1 Apr 2017 23:52:14 -0400 Subject: [PATCH 229/337] USER-DPD Kokkos: preflight storage needed for SSA threaded neigh list build --- src/KOKKOS/npair_ssa_kokkos.cpp | 122 +++++++++++++++++++++++--------- src/KOKKOS/npair_ssa_kokkos.h | 2 +- 2 files changed, 90 insertions(+), 34 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 1c7095c9b4..042c48fbac 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -25,6 +25,7 @@ #include "nbin_ssa_kokkos.h" #include "nstencil_ssa.h" #include "error.h" +#include "comm.h" namespace LAMMPS_NS { @@ -255,8 +256,8 @@ void NPairSSAKokkos::build(NeighList *list_) for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { for (int xbin = lbinxlo + xoff - sx1 + 1; xbin < lbinxhi; xbin += sx1) { + int inum_start = inum; // if (workItem >= phaseLenEstimate) error->one(FLERR,"phaseLenEstimate was too small"); - ssa_itemLoc(workPhase, workItem) = inum; // record where workItem starts in ilist for (int subphase = 0; subphase < 4; subphase++) { int s_ybin = ybin + ((subphase & 0x2) ? sy1 - 1 : 0); @@ -264,27 +265,40 @@ void NPairSSAKokkos::build(NeighList *list_) if ((s_ybin < lbinylo) || (s_ybin >= lbinyhi)) continue; if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; - int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; - int base_n = 0; - bool include_same = false; - // count all local atoms in the current stencil "subphase" as potential neighbors - for (int k = c_nstencil_ssa(subphase); k < c_nstencil_ssa(subphase+1); k++) { - const int jbin = ibin+c_stencil(k); - if (jbin != ibin) base_n += c_bincount(jbin); - else include_same = true; + const int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; + const int ibinCt = c_bincount(ibin); + if (ibinCt > 0) { + int base_n = 0; + bool include_same = false; + // count all local atoms in the current stencil "subphase" as potential neighbors + for (int k = c_nstencil_ssa(subphase); k < c_nstencil_ssa(subphase+1); k++) { + const int jbin = ibin+c_stencil(k); + if (jbin != ibin) base_n += c_bincount(jbin); + else include_same = true; + } + // Calculate how many ibin particles would have had some neighbors + if (base_n > 0) inum += ibinCt; + else if (include_same) inum += ibinCt - 1; } - // Calculate how many ibin particles would have had some neighbors - if (base_n > 0) inum += c_bincount(ibin); - else if (include_same) inum += c_bincount(ibin) - 1; } - // record where workItem ends in ilist - ssa_itemLen(workPhase,workItem) = inum - ssa_itemLoc(workPhase,workItem); - if (ssa_itemLen(workPhase,workItem) > 0) workItem++; + /* if (inum > inum_start) */ { + ssa_itemLoc(workPhase,workItem) = inum_start; // record where workItem starts in ilist + ssa_itemLen(workPhase,workItem) = inum - inum_start; // record workItem length +if (ssa_itemLen(workPhase,workItem) < 0) fprintf(stdout, "undr%03d phase (%3d,%3d) inum %d - inum_start %d UNDERFLOW\n" + ,comm->me + ,workPhase + ,workItem + ,inum + ,inum_start +); + workItem++; + } } } } -fprintf(stdout, "phase %3d could use %6d inums, expected %6d inums. maxworkItems = %3d, inums/workItems = %g\n" +fprintf(stdout, "phas%03d phase %3d could use %6d inums, expected %6d inums. maxworkItems = %3d, inums/workItems = %g\n" + ,comm->me ,workPhase ,inum - ssa_itemLoc(workPhase, 0) ,(nlocal*4 + ssa_phaseCt - 1) / ssa_phaseCt @@ -296,7 +310,8 @@ fprintf(stdout, "phase %3d could use %6d inums, expected %6d inums. maxworkItems } } } -fprintf(stdout, "total %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" +fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" + ,comm->me ,workPhase ,inum ,nlocal*4 @@ -378,6 +393,7 @@ fprintf(stdout, "total %3d could use %6d inums, expected %6d inums. inums/phase data.special_flag[2] = special_flag[2]; data.special_flag[3] = special_flag[3]; + bool firstTry = true; data.h_resize()=1; while(data.h_resize()) { data.h_new_maxneighs() = list->maxneighs; @@ -390,8 +406,9 @@ fprintf(stdout, "total %3d could use %6d inums, expected %6d inums. inums/phase NPairSSAKokkosBuildFunctor f(data,atoms_per_bin*5*sizeof(X_FLOAT)); Kokkos::parallel_for(nall, f); #endif - data.build_locals(); + data.build_locals(firstTry, comm->me); data.build_ghosts(); + firstTry = false; DeviceType::fence(); deep_copy(data.h_resize, data.resize); @@ -415,7 +432,8 @@ fprintf(stdout, "total %3d could use %6d inums, expected %6d inums. inums/phase list->inum = data.neigh_list.inum; //FIXME once the above is in a parallel_for list->gnum = data.neigh_list.gnum; // it will need a deep_copy or something -fprintf(stdout, "%6d inum %6d gnum, total used %6d, allocated %6d\n" +fprintf(stdout, "Fina%03d: %6d inum %6d gnum, total used %6d, allocated %6d\n" + ,comm->me ,list->inum ,list->gnum ,list->inum + list->gnum @@ -427,8 +445,9 @@ fprintf(stdout, "%6d inum %6d gnum, total used %6d, allocated %6d\n" template -void NPairSSAKokkosExecute::build_locals() +void NPairSSAKokkosExecute::build_locals(const bool firstTry, int me) { + const typename ArrayTypes::t_int_1d_const_um stencil = d_stencil; int which = 0; int inum = 0; int workPhase = 0; @@ -438,11 +457,29 @@ void NPairSSAKokkosExecute::build_locals() for (int yoff = sy1 - 1; yoff >= 0; --yoff) { for (int xoff = sx1 - 1; xoff >= 0; --xoff) { int workItem = 0; - inum = d_ssa_itemLoc(workPhase, workItem); // get where workPhase starts in ilist + int skippedItems = 0; +// inum = d_ssa_itemLoc(workPhase, workItem); // get where workPhase starts in ilist for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { for (int xbin = lbinxlo + xoff - sx1 + 1; xbin < lbinxhi; xbin += sx1) { - d_ssa_itemLoc(workPhase, workItem) = inum; // record where workItem actually starts in ilist + if (d_ssa_itemLen(workPhase, workItem + skippedItems) == 0) { + if (firstTry) ++skippedItems; + else ++workItem; // phase is done,should break out of three loops here if we could... + continue; + } + int inum_start = d_ssa_itemLoc(workPhase, workItem + skippedItems); + if (inum > inum_start) { // This shouldn't happen! +fprintf(stdout, "Rank%03d workphase (%2d,%3d,%3d): inum = %4d, but ssa_itemLoc = %4d OVERFLOW\n" + ,me + ,workPhase + ,workItem + ,workItem + skippedItems + ,inum + ,d_ssa_itemLoc(workPhase, workItem + skippedItems) +); + inum_start = inum; + } else inum = inum_start; + // d_ssa_itemLoc(workPhase, workItem) = inum; // record where workItem actually starts in ilist for (int subphase = 0; subphase < 4; subphase++) { int s_ybin = ybin + ((subphase & 0x2) ? sy1 - 1 : 0); @@ -461,9 +498,6 @@ void NPairSSAKokkosExecute::build_locals() const X_FLOAT ztmp = x(i, 2); const int itype = type(i); - const typename ArrayTypes::t_int_1d_const_um stencil - = d_stencil; - // loop over all local atoms in the current stencil "subphase" for (int k = d_nstencil_ssa(subphase); k < d_nstencil_ssa(subphase+1); k++) { const int jbin = ibin+stencil(k); @@ -517,26 +551,48 @@ void NPairSSAKokkosExecute::build_locals() } } } - // record where workItem actually ends in ilist - d_ssa_itemLen(workPhase,workItem) = inum - d_ssa_itemLoc(workPhase,workItem); - if (d_ssa_itemLen(workPhase,workItem) > 0) workItem++; + int len = inum - inum_start; + if (len != d_ssa_itemLen(workPhase, workItem + skippedItems)) { +fprintf(stdout, "Leng%03d workphase (%2d,%3d,%3d): len = %4d, but ssa_itemLen = %4d%s\n" + ,me + ,workPhase + ,workItem + ,workItem + skippedItems + ,len + ,d_ssa_itemLen(workPhase, workItem + skippedItems) + ,(len > d_ssa_itemLen(workPhase, workItem + skippedItems)) ? " OVERFLOW" : "" +); + } + if (inum > inum_start) { + d_ssa_itemLoc(workPhase,workItem) = inum_start; // record where workItem starts in ilist + d_ssa_itemLen(workPhase,workItem) = inum - inum_start; // record actual workItem length + workItem++; + } else if (firstTry) ++skippedItems; } } } -fprintf(stdout, "phase %3d used %6d inums, expected %6d inums. workItems = %3d, inums/workItems = %g\n" +fprintf(stdout, "Phas%03d phase %3d used %6d inums, workItems = %3d, skipped = %3d, inums/workItems = %g\n" + ,me ,workPhase ,inum - d_ssa_itemLoc(workPhase, 0) - ,(nlocal*4 + ssa_phaseCt - 1) / ssa_phaseCt ,workItem + ,skippedItems ,(inum - d_ssa_itemLoc(workPhase, 0)) / (double) workItem ); - // record where workPhase ends - d_ssa_phaseLen(workPhase++) = workItem; + // record where workPhase actually ends + if (firstTry) { + d_ssa_phaseLen(workPhase) = workItem; + while (workItem < (int) d_ssa_itemLen.dimension_1()) { + d_ssa_itemLen(workPhase,workItem++) = 0; + } + } + ++workPhase; } } } -fprintf(stdout, "Total %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" +fprintf(stdout, "Totl%03d %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" + ,me ,workPhase ,inum ,nlocal*4 diff --git a/src/KOKKOS/npair_ssa_kokkos.h b/src/KOKKOS/npair_ssa_kokkos.h index 96efd7404b..2c2ae15fb8 100644 --- a/src/KOKKOS/npair_ssa_kokkos.h +++ b/src/KOKKOS/npair_ssa_kokkos.h @@ -289,7 +289,7 @@ class NPairSSAKokkosExecute ~NPairSSAKokkosExecute() {neigh_list.copymode = 1;}; - void build_locals(); + void build_locals(const bool firstTry, int me); void build_ghosts(); KOKKOS_INLINE_FUNCTION -- GitLab From 2b2f3bd57c1d42a87334812cdab06f7e75405b7e Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Sun, 2 Apr 2017 00:07:24 -0400 Subject: [PATCH 230/337] USER-DPD Kokkos: #ifdef DEBUG_SSA_BUILD_LOCALS the new debug output --- src/KOKKOS/npair_ssa_kokkos.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 042c48fbac..4c3218a08a 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -281,9 +281,9 @@ void NPairSSAKokkos::build(NeighList *list_) else if (include_same) inum += ibinCt - 1; } } - /* if (inum > inum_start) */ { - ssa_itemLoc(workPhase,workItem) = inum_start; // record where workItem starts in ilist - ssa_itemLen(workPhase,workItem) = inum - inum_start; // record workItem length + ssa_itemLoc(workPhase,workItem) = inum_start; // record where workItem starts in ilist + ssa_itemLen(workPhase,workItem) = inum - inum_start; // record workItem length +#ifdef DEBUG_SSA_BUILD_LOCALS if (ssa_itemLen(workPhase,workItem) < 0) fprintf(stdout, "undr%03d phase (%3d,%3d) inum %d - inum_start %d UNDERFLOW\n" ,comm->me ,workPhase @@ -291,12 +291,13 @@ if (ssa_itemLen(workPhase,workItem) < 0) fprintf(stdout, "undr%03d phase (%3d,%3 ,inum ,inum_start ); - workItem++; - } +#endif + workItem++; } } } +#ifdef DEBUG_SSA_BUILD_LOCALS fprintf(stdout, "phas%03d phase %3d could use %6d inums, expected %6d inums. maxworkItems = %3d, inums/workItems = %g\n" ,comm->me ,workPhase @@ -305,11 +306,13 @@ fprintf(stdout, "phas%03d phase %3d could use %6d inums, expected %6d inums. max ,workItem ,(inum - ssa_itemLoc(workPhase, 0)) / (double) workItem ); +#endif // record where workPhase ends ssa_phaseLen(workPhase++) = workItem; } } } +#ifdef DEBUG_SSA_BUILD_LOCALS fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" ,comm->me ,workPhase @@ -317,9 +320,10 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu ,nlocal*4 ,inum / (double) workPhase ); +#endif nl_size = inum; // record how much space is needed for the local work plan } - // count how many ghosts are likely to have neighbors, and increase the work plan storage + // count how many ghosts might have neighbors, and increase the work plan storage for (int workPhase = 0; workPhase < ssa_gphaseCt; workPhase++) { nl_size += k_gbincount.h_view(workPhase + 1); } @@ -432,13 +436,15 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu list->inum = data.neigh_list.inum; //FIXME once the above is in a parallel_for list->gnum = data.neigh_list.gnum; // it will need a deep_copy or something -fprintf(stdout, "Fina%03d: %6d inum %6d gnum, total used %6d, allocated %6d\n" +#ifdef DEBUG_SSA_BUILD_LOCALS +fprintf(stdout, "Fina%03d %6d inum %6d gnum, total used %6d, allocated %6d\n" ,comm->me ,list->inum ,list->gnum ,list->inum + list->gnum ,nl_size ); +#endif list->k_ilist.template modify(); } @@ -468,6 +474,7 @@ void NPairSSAKokkosExecute::build_locals(const bool firstTry, int me continue; } int inum_start = d_ssa_itemLoc(workPhase, workItem + skippedItems); +#ifdef DEBUG_SSA_BUILD_LOCALS if (inum > inum_start) { // This shouldn't happen! fprintf(stdout, "Rank%03d workphase (%2d,%3d,%3d): inum = %4d, but ssa_itemLoc = %4d OVERFLOW\n" ,me @@ -478,7 +485,9 @@ fprintf(stdout, "Rank%03d workphase (%2d,%3d,%3d): inum = %4d, but ssa_itemLoc = ,d_ssa_itemLoc(workPhase, workItem + skippedItems) ); inum_start = inum; - } else inum = inum_start; + } else +#endif + inum = inum_start; // d_ssa_itemLoc(workPhase, workItem) = inum; // record where workItem actually starts in ilist for (int subphase = 0; subphase < 4; subphase++) { @@ -552,6 +561,7 @@ fprintf(stdout, "Rank%03d workphase (%2d,%3d,%3d): inum = %4d, but ssa_itemLoc = } } int len = inum - inum_start; +#ifdef DEBUG_SSA_BUILD_LOCALS if (len != d_ssa_itemLen(workPhase, workItem + skippedItems)) { fprintf(stdout, "Leng%03d workphase (%2d,%3d,%3d): len = %4d, but ssa_itemLen = %4d%s\n" ,me @@ -563,6 +573,7 @@ fprintf(stdout, "Leng%03d workphase (%2d,%3d,%3d): len = %4d, but ssa_itemLen = ,(len > d_ssa_itemLen(workPhase, workItem + skippedItems)) ? " OVERFLOW" : "" ); } +#endif if (inum > inum_start) { d_ssa_itemLoc(workPhase,workItem) = inum_start; // record where workItem starts in ilist d_ssa_itemLen(workPhase,workItem) = inum - inum_start; // record actual workItem length @@ -572,6 +583,7 @@ fprintf(stdout, "Leng%03d workphase (%2d,%3d,%3d): len = %4d, but ssa_itemLen = } } +#ifdef DEBUG_SSA_BUILD_LOCALS fprintf(stdout, "Phas%03d phase %3d used %6d inums, workItems = %3d, skipped = %3d, inums/workItems = %g\n" ,me ,workPhase @@ -580,6 +592,7 @@ fprintf(stdout, "Phas%03d phase %3d used %6d inums, workItems = %3d, skipped = % ,skippedItems ,(inum - d_ssa_itemLoc(workPhase, 0)) / (double) workItem ); +#endif // record where workPhase actually ends if (firstTry) { d_ssa_phaseLen(workPhase) = workItem; @@ -591,6 +604,7 @@ fprintf(stdout, "Phas%03d phase %3d used %6d inums, workItems = %3d, skipped = % } } } +#ifdef DEBUG_SSA_BUILD_LOCALS fprintf(stdout, "Totl%03d %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" ,me ,workPhase @@ -598,6 +612,7 @@ fprintf(stdout, "Totl%03d %3d could use %6d inums, expected %6d inums. inums/pha ,nlocal*4 ,inum / (double) workPhase ); +#endif //FIXME if (ssa_phaseCt != workPhase) error->one(FLERR,"ssa_phaseCt was wrong"); -- GitLab From aedd7c57f3f78596f8b737972aed5f241ef4f7f4 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 3 Apr 2017 16:42:18 -0600 Subject: [PATCH 231/337] Reset atom map values from restart file --- src/read_restart.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/read_restart.cpp b/src/read_restart.cpp index 331a5d6cda..fcbd8d186d 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -905,8 +905,10 @@ void ReadRestart::header(int incompatible) atom->tag_enable = read_int(); } else if (flag == ATOM_MAP_STYLE) { atom->map_style = read_int(); + atom->map_style = 0; } else if (flag == ATOM_MAP_USER) { atom->map_user = read_int(); + atom->map_user = 0; } else if (flag == ATOM_SORTFREQ) { atom->sortfreq = read_int(); } else if (flag == ATOM_SORTBIN) { -- GitLab From 4d4b6f66b7139be46a9f292d7bad2403b22117f3 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 5 Apr 2017 11:42:25 -0600 Subject: [PATCH 232/337] Changing default gb/test to on --- src/KOKKOS/kokkos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp index a000ad5550..10e7bda4e0 100644 --- a/src/KOKKOS/kokkos.cpp +++ b/src/KOKKOS/kokkos.cpp @@ -34,7 +34,7 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) lmp->kokkos = this; auto_sync = 1; - gb_test = 0; + gb_test = 1; int me = 0; MPI_Comm_rank(world,&me); @@ -157,7 +157,7 @@ void KokkosLMP::accelerator(int narg, char **arg) neighflag = FULL; neighflag_qeq = FULL; neighflag_qeq_set = 0; - gb_test = 0; + gb_test = 1; int newtonflag = 0; double binsize = 0.0; exchange_comm_classic = forward_comm_classic = 0; -- GitLab From 9e272cb393fdce5697267a2b629cd5a3a3fdc0b2 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Thu, 6 Apr 2017 02:31:45 -0400 Subject: [PATCH 233/337] USER-DPD Kokkos: use a parallel_for() to build the locals workplan for SSA --- src/KOKKOS/npair_ssa_kokkos.cpp | 131 ++++++++++++++------------------ src/KOKKOS/npair_ssa_kokkos.h | 27 ++++++- 2 files changed, 84 insertions(+), 74 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 4c3218a08a..2b33256599 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -34,6 +34,14 @@ namespace LAMMPS_NS { template NPairSSAKokkos::NPairSSAKokkos(LAMMPS *lmp) : NPair(lmp), ssa_phaseCt(27), ssa_gphaseCt(7) { + const int gphaseLenEstimate = 1; //FIXME make this 4 eventually + k_ssa_gphaseLen = DAT::tdual_int_1d("NPairSSAKokkos:ssa_gphaseLen",ssa_gphaseCt); + ssa_gphaseLen = k_ssa_gphaseLen.view(); + + k_ssa_gitemLoc = DAT::tdual_int_2d("NPairSSAKokkos::ssa_gitemLoc",ssa_gphaseCt,gphaseLenEstimate); + ssa_gitemLoc = k_ssa_gitemLoc.view(); + k_ssa_gitemLen = DAT::tdual_int_2d("NPairSSAKokkos::ssa_gitemLen",ssa_gphaseCt,gphaseLenEstimate); + ssa_gitemLen = k_ssa_gitemLen.view(); } /* ---------------------------------------------------------------------- @@ -132,6 +140,27 @@ void NPairSSAKokkos::copy_stencil_info() sx1 = ns_ssa->sx + 1; sy1 = ns_ssa->sy + 1; sz1 = ns_ssa->sz + 1; + + // Setup the phases of the workplan for locals + ssa_phaseCt = sz1*sy1*sx1; + if (ssa_phaseCt > (int) k_ssa_phaseLen.dimension_0()) { + k_ssa_phaseLen = DAT::tdual_int_1d("NPairSSAKokkos:ssa_phaseLen",ssa_phaseCt); + ssa_phaseLen = k_ssa_phaseLen.view(); + k_ssa_phaseOff = DAT::tdual_int_1d_3("NPairSSAKokkos:ssa_phaseOff",ssa_phaseCt); + ssa_phaseOff = k_ssa_phaseOff.view(); + } + int workPhase = 0; + for (int zoff = sz1 - 1; zoff >= 0; --zoff) { + for (int yoff = sy1 - 1; yoff >= 0; --yoff) { + for (int xoff = sx1 - 1; xoff >= 0; --xoff) { + ssa_phaseOff(workPhase, 0) = xoff; + ssa_phaseOff(workPhase, 1) = yoff; + ssa_phaseOff(workPhase, 2) = zoff; + workPhase++; + } + } + } + } /* ---------------------------------------------------------------------- */ @@ -208,18 +237,11 @@ void NPairSSAKokkos::build(NeighList *list_) const int nlocal = includegroup?atom->nfirst:atom->nlocal; int nl_size; - ssa_phaseCt = sz1*sy1*sx1; + int xbinCt = (lbinxhi - lbinxlo + sx1 - 1) / sx1 + 1; + int ybinCt = (lbinyhi - lbinylo + sy1 - 1) / sy1 + 1; + int zbinCt = (lbinzhi - lbinzlo + sz1 - 1) / sz1 + 1; + int phaseLenEstimate = xbinCt*ybinCt*zbinCt; - int xbin = (lbinxhi - lbinxlo + sx1 - 1) / sx1 + 1; - int ybin = (lbinyhi - lbinylo + sy1 - 1) / sy1 + 1; - int zbin = (lbinzhi - lbinzlo + sz1 - 1) / sz1 + 1; - int phaseLenEstimate = xbin*ybin*zbin; - int gphaseLenEstimate = 1; //FIXME make this 4 eventually - - if (ssa_phaseCt > (int) k_ssa_phaseLen.dimension_0()) { - k_ssa_phaseLen = DAT::tdual_int_1d("NPairSSAKokkos:ssa_phaseLen",ssa_phaseCt); - ssa_phaseLen = k_ssa_phaseLen.view(); - } if ((ssa_phaseCt > (int) k_ssa_itemLoc.dimension_0()) || (phaseLenEstimate > (int) k_ssa_itemLoc.dimension_1())) { k_ssa_itemLoc = DAT::tdual_int_2d("NPairSSAKokkos::ssa_itemLoc",ssa_phaseCt,phaseLenEstimate); @@ -228,18 +250,6 @@ void NPairSSAKokkos::build(NeighList *list_) ssa_itemLen = k_ssa_itemLen.view(); } - if (ssa_gphaseCt > (int) k_ssa_gphaseLen.dimension_0()) { - k_ssa_gphaseLen = DAT::tdual_int_1d("NPairSSAKokkos:ssa_gphaseLen",ssa_gphaseCt); - ssa_gphaseLen = k_ssa_gphaseLen.view(); - } - if ((ssa_gphaseCt > (int) k_ssa_gitemLoc.dimension_0()) || - (gphaseLenEstimate > (int) k_ssa_gitemLoc.dimension_1())) { - k_ssa_gitemLoc = DAT::tdual_int_2d("NPairSSAKokkos::ssa_gitemLoc",ssa_gphaseCt,gphaseLenEstimate); - ssa_gitemLoc = k_ssa_gitemLoc.view(); - k_ssa_gitemLen = DAT::tdual_int_2d("NPairSSAKokkos::ssa_gitemLen",ssa_gphaseCt,gphaseLenEstimate); - ssa_gitemLen = k_ssa_gitemLen.view(); - } - { // Preflight the neighbor list workplan const typename ArrayTypes::t_int_1d_const c_bincount = k_bincount.view(); const typename ArrayTypes::t_int_2d_const c_bins = k_bins.view(); @@ -247,11 +257,11 @@ void NPairSSAKokkos::build(NeighList *list_) const typename ArrayTypes::t_int_1d_const c_nstencil_ssa = k_nstencil_ssa.view(); int inum = 0; - int workPhase = 0; - // loop over bins with local atoms, storing half of the neighbors - for (int zoff = sz1 - 1; zoff >= 0; --zoff) { - for (int yoff = sy1 - 1; yoff >= 0; --yoff) { - for (int xoff = sx1 - 1; xoff >= 0; --xoff) { + // loop over bins with local atoms, counting half of the neighbors + for (int workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { + int zoff = ssa_phaseOff(workPhase, 2); + int yoff = ssa_phaseOff(workPhase, 1); + int xoff = ssa_phaseOff(workPhase, 0); int workItem = 0; for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { @@ -308,9 +318,7 @@ fprintf(stdout, "phas%03d phase %3d could use %6d inums, expected %6d inums. max ); #endif // record where workPhase ends - ssa_phaseLen(workPhase++) = workItem; - } - } + ssa_phaseLen(workPhase) = workItem; } #ifdef DEBUG_SSA_BUILD_LOCALS fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" @@ -343,6 +351,7 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu k_nstencil_ssa.view(), ssa_phaseCt, k_ssa_phaseLen.view(), + k_ssa_phaseOff.view(), k_ssa_itemLoc.view(), k_ssa_itemLen.view(), ssa_gphaseCt, @@ -410,7 +419,17 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu NPairSSAKokkosBuildFunctor f(data,atoms_per_bin*5*sizeof(X_FLOAT)); Kokkos::parallel_for(nall, f); #endif - data.build_locals(firstTry, comm->me); + // loop over bins with local atoms, storing half of the neighbors +#ifdef USE_LAMBDA_BUILD + Kokkos::parallel_for(ssa_phaseCt, LAMMPS_LAMBDA (const int workPhase) { + data.build_locals_onePhase(firstTry, comm->me, workPhase); + }); +#else + NPairSSAKokkosBuildFunctor f(data, firstTry, comm->me); + Kokkos::parallel_for(ssa_phaseCt, f); +#endif + data.neigh_list.inum = ssa_itemLoc(ssa_phaseCt-1,ssa_phaseLen(ssa_phaseCt-1)-1) + + ssa_itemLen(ssa_phaseCt-1,ssa_phaseLen(ssa_phaseCt-1)-1); data.build_ghosts(); firstTry = false; @@ -451,20 +470,16 @@ fprintf(stdout, "Fina%03d %6d inum %6d gnum, total used %6d, allocated %6d\n" template -void NPairSSAKokkosExecute::build_locals(const bool firstTry, int me) +void NPairSSAKokkosExecute::build_locals_onePhase(const bool firstTry, int me, int workPhase) const { const typename ArrayTypes::t_int_1d_const_um stencil = d_stencil; int which = 0; - int inum = 0; - int workPhase = 0; - // loop over bins with local atoms, storing half of the neighbors - for (int zoff = sz1 - 1; zoff >= 0; --zoff) { - for (int yoff = sy1 - 1; yoff >= 0; --yoff) { - for (int xoff = sx1 - 1; xoff >= 0; --xoff) { - int workItem = 0; - int skippedItems = 0; -// inum = d_ssa_itemLoc(workPhase, workItem); // get where workPhase starts in ilist + int zoff = d_ssa_phaseOff(workPhase, 2); + int yoff = d_ssa_phaseOff(workPhase, 1); + int xoff = d_ssa_phaseOff(workPhase, 0); + int workItem = 0; + int skippedItems = 0; for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { for (int xbin = lbinxlo + xoff - sx1 + 1; xbin < lbinxhi; xbin += sx1) { @@ -474,21 +489,7 @@ void NPairSSAKokkosExecute::build_locals(const bool firstTry, int me continue; } int inum_start = d_ssa_itemLoc(workPhase, workItem + skippedItems); -#ifdef DEBUG_SSA_BUILD_LOCALS - if (inum > inum_start) { // This shouldn't happen! -fprintf(stdout, "Rank%03d workphase (%2d,%3d,%3d): inum = %4d, but ssa_itemLoc = %4d OVERFLOW\n" - ,me - ,workPhase - ,workItem - ,workItem + skippedItems - ,inum - ,d_ssa_itemLoc(workPhase, workItem + skippedItems) -); - inum_start = inum; - } else -#endif - inum = inum_start; - // d_ssa_itemLoc(workPhase, workItem) = inum; // record where workItem actually starts in ilist + int inum = inum_start; for (int subphase = 0; subphase < 4; subphase++) { int s_ybin = ybin + ((subphase & 0x2) ? sy1 - 1 : 0); @@ -600,23 +601,7 @@ fprintf(stdout, "Phas%03d phase %3d used %6d inums, workItems = %3d, skipped = % d_ssa_itemLen(workPhase,workItem++) = 0; } } - ++workPhase; - } - } - } -#ifdef DEBUG_SSA_BUILD_LOCALS -fprintf(stdout, "Totl%03d %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" - ,me - ,workPhase - ,inum - ,nlocal*4 - ,inum / (double) workPhase -); -#endif - -//FIXME if (ssa_phaseCt != workPhase) error->one(FLERR,"ssa_phaseCt was wrong"); - neigh_list.inum = inum; } diff --git a/src/KOKKOS/npair_ssa_kokkos.h b/src/KOKKOS/npair_ssa_kokkos.h index 2c2ae15fb8..62c4135cc7 100644 --- a/src/KOKKOS/npair_ssa_kokkos.h +++ b/src/KOKKOS/npair_ssa_kokkos.h @@ -41,9 +41,11 @@ class NPairSSAKokkos : public NPair { // SSA Work plan data structures int ssa_phaseCt; DAT::tdual_int_1d k_ssa_phaseLen; + DAT::tdual_int_1d_3 k_ssa_phaseOff; DAT::tdual_int_2d k_ssa_itemLoc; DAT::tdual_int_2d k_ssa_itemLen; typename AT::t_int_1d ssa_phaseLen; + typename AT::t_int_1d_3 ssa_phaseOff; typename AT::t_int_2d ssa_itemLoc; typename AT::t_int_2d ssa_itemLen; @@ -175,6 +177,7 @@ class NPairSSAKokkosExecute // SSA Work plan data structures int ssa_phaseCt; typename AT::t_int_1d d_ssa_phaseLen; + typename AT::t_int_1d_3_const d_ssa_phaseOff; typename AT::t_int_2d d_ssa_itemLoc; typename AT::t_int_2d d_ssa_itemLen; int ssa_gphaseCt; @@ -198,6 +201,7 @@ class NPairSSAKokkosExecute const typename AT::t_int_1d &_d_nstencil_ssa, const int _ssa_phaseCt, const typename AT::t_int_1d &_d_ssa_phaseLen, + const typename AT::t_int_1d_3 &_d_ssa_phaseOff, const typename AT::t_int_2d &_d_ssa_itemLoc, const typename AT::t_int_2d &_d_ssa_itemLen, const int _ssa_gphaseCt, @@ -242,6 +246,7 @@ class NPairSSAKokkosExecute d_stencil(_d_stencil),d_stencilxyz(_d_stencilxyz),d_nstencil_ssa(_d_nstencil_ssa), ssa_phaseCt(_ssa_phaseCt), d_ssa_phaseLen(_d_ssa_phaseLen), + d_ssa_phaseOff(_d_ssa_phaseOff), d_ssa_itemLoc(_d_ssa_itemLoc), d_ssa_itemLen(_d_ssa_itemLen), ssa_gphaseCt(_ssa_gphaseCt), @@ -289,7 +294,9 @@ class NPairSSAKokkosExecute ~NPairSSAKokkosExecute() {neigh_list.copymode = 1;}; - void build_locals(const bool firstTry, int me); + KOKKOS_FUNCTION + void build_locals_onePhase(const bool firstTry, int me, int workPhase) const; + void build_ghosts(); KOKKOS_INLINE_FUNCTION @@ -344,6 +351,24 @@ class NPairSSAKokkosExecute }; +template +struct NPairSSAKokkosBuildFunctor { + typedef DeviceType device_type; + + const NPairSSAKokkosExecute c; + const bool firstTry; + const int me; + + NPairSSAKokkosBuildFunctor(const NPairSSAKokkosExecute &_c, + const bool _firstTry, const int _me):c(_c), + firstTry(_firstTry), me(_me) {}; + + KOKKOS_INLINE_FUNCTION + void operator() (const int & i) const { + c.build_locals_onePhase(firstTry, me, i); + } +}; + } #endif -- GitLab From 178af2ec9e7225daff3ce853af749f6fdb6e58a9 Mon Sep 17 00:00:00 2001 From: Tim Mattox Date: Thu, 6 Apr 2017 03:53:57 -0400 Subject: [PATCH 234/337] USER-DPD Kokkos: use a parallel_for() to build the ghosts workplan for SSA --- src/KOKKOS/npair_ssa_kokkos.cpp | 47 +++++++++++++-------------------- src/KOKKOS/npair_ssa_kokkos.h | 25 +++--------------- 2 files changed, 23 insertions(+), 49 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 2b33256599..ba4bc9171c 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -333,7 +333,10 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu } // count how many ghosts might have neighbors, and increase the work plan storage for (int workPhase = 0; workPhase < ssa_gphaseCt; workPhase++) { - nl_size += k_gbincount.h_view(workPhase + 1); + int len = k_gbincount.h_view(workPhase + 1); + ssa_gitemLoc(workPhase,0) = nl_size; // record where workItem starts in ilist + ssa_gitemLen(workPhase,0) = len; + nl_size += len; } list->grow(nl_size); // Make special larger SSA neighbor list @@ -415,22 +418,19 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu Kokkos::deep_copy(data.resize, data.h_resize); Kokkos::deep_copy(data.new_maxneighs, data.h_new_maxneighs); -#ifdef NOTYET - NPairSSAKokkosBuildFunctor f(data,atoms_per_bin*5*sizeof(X_FLOAT)); - Kokkos::parallel_for(nall, f); -#endif // loop over bins with local atoms, storing half of the neighbors -#ifdef USE_LAMBDA_BUILD Kokkos::parallel_for(ssa_phaseCt, LAMMPS_LAMBDA (const int workPhase) { data.build_locals_onePhase(firstTry, comm->me, workPhase); }); -#else - NPairSSAKokkosBuildFunctor f(data, firstTry, comm->me); - Kokkos::parallel_for(ssa_phaseCt, f); -#endif data.neigh_list.inum = ssa_itemLoc(ssa_phaseCt-1,ssa_phaseLen(ssa_phaseCt-1)-1) + ssa_itemLen(ssa_phaseCt-1,ssa_phaseLen(ssa_phaseCt-1)-1); - data.build_ghosts(); + + // loop over AIR ghost atoms, storing their local neighbors + Kokkos::parallel_for(ssa_gphaseCt, LAMMPS_LAMBDA (const int workPhase) { + data.build_ghosts_onePhase(workPhase); + }); + data.neigh_list.gnum = ssa_gitemLoc(ssa_gphaseCt-1,ssa_gphaseLen(ssa_gphaseCt-1)-1) + + ssa_gitemLen(ssa_gphaseCt-1,ssa_gphaseLen(ssa_gphaseCt-1)-1) - data.neigh_list.inum; firstTry = false; DeviceType::fence(); @@ -606,34 +606,27 @@ fprintf(stdout, "Phas%03d phase %3d used %6d inums, workItems = %3d, skipped = % template -void NPairSSAKokkosExecute::build_ghosts() +void NPairSSAKokkosExecute::build_ghosts_onePhase(int workPhase) const { - int n = 0; + const typename ArrayTypes::t_int_1d_const_um stencil = d_stencil; int which = 0; - int inum = neigh_list.inum; - int gnum = 0; - // loop over AIR ghost atoms, storing their local neighbors // since these are ghosts, must check if stencil bin is out of bounds - for (int workPhase = 0; workPhase < ssa_gphaseCt; workPhase++) { int airnum = workPhase + 1; //FIXME for now, there is only 1 workItem for each ghost AIR int workItem; for (workItem = 0; workItem < 1; ++workItem) { - d_ssa_gitemLoc(workPhase, workItem) = inum + gnum; // record where workItem starts in ilist + int gNdx = d_ssa_gitemLoc(workPhase, workItem); // record where workItem starts in ilist for (int il = 0; il < c_gbincount(airnum); ++il) { const int i = c_gbins(airnum, il); - n = 0; + int n = 0; - const AtomNeighbors neighbors_i = neigh_list.get_neighbors(inum + gnum); + const AtomNeighbors neighbors_i = neigh_list.get_neighbors(gNdx); const X_FLOAT xtmp = x(i, 0); const X_FLOAT ytmp = x(i, 1); const X_FLOAT ztmp = x(i, 2); const int itype = type(i); - const typename ArrayTypes::t_int_1d_const_um stencil - = d_stencil; - int loc[3]; const int ibin = coord2bin(x(i, 0), x(i, 1), x(i, 2), &(loc[0])); @@ -686,8 +679,8 @@ void NPairSSAKokkosExecute::build_ghosts() } if (n > 0) { - neigh_list.d_numneigh(inum + gnum) = n; - neigh_list.d_ilist(inum + (gnum++)) = i; + neigh_list.d_numneigh(gNdx) = n; + neigh_list.d_ilist(gNdx++) = i; if(n > neigh_list.maxneighs) { resize() = 1; if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); @@ -695,12 +688,10 @@ void NPairSSAKokkosExecute::build_ghosts() } } // record where workItem ends in ilist - d_ssa_gitemLen(workPhase,workItem) = inum + gnum - d_ssa_gitemLoc(workPhase,workItem); + d_ssa_gitemLen(workPhase,workItem) = gNdx - d_ssa_gitemLoc(workPhase,workItem); // if (d_ssa_gitemLen(workPhase,workItem) > 0) workItem++; } d_ssa_gphaseLen(workPhase) = workItem; - } - neigh_list.gnum = gnum; } } diff --git a/src/KOKKOS/npair_ssa_kokkos.h b/src/KOKKOS/npair_ssa_kokkos.h index 62c4135cc7..98046feba8 100644 --- a/src/KOKKOS/npair_ssa_kokkos.h +++ b/src/KOKKOS/npair_ssa_kokkos.h @@ -275,7 +275,7 @@ class NPairSSAKokkosExecute bboxlo[0] = _bboxlo[0]; bboxlo[1] = _bboxlo[1]; bboxlo[2] = _bboxlo[2]; bboxhi[0] = _bboxhi[0]; bboxhi[1] = _bboxhi[1]; bboxhi[2] = _bboxhi[2]; - resize = typename AT::t_int_scalar("NeighborKokkosFunctor::resize"); + resize = typename AT::t_int_scalar("NPairSSAKokkosExecute::resize"); #ifndef KOKKOS_USE_CUDA_UVM h_resize = Kokkos::create_mirror_view(resize); #else @@ -283,7 +283,7 @@ class NPairSSAKokkosExecute #endif h_resize() = 1; new_maxneighs = typename AT:: - t_int_scalar("NeighborKokkosFunctor::new_maxneighs"); + t_int_scalar("NPairSSAKokkosExecute::new_maxneighs"); #ifndef KOKKOS_USE_CUDA_UVM h_new_maxneighs = Kokkos::create_mirror_view(new_maxneighs); #else @@ -297,7 +297,8 @@ class NPairSSAKokkosExecute KOKKOS_FUNCTION void build_locals_onePhase(const bool firstTry, int me, int workPhase) const; - void build_ghosts(); + KOKKOS_FUNCTION + void build_ghosts_onePhase(int workPhase) const; KOKKOS_INLINE_FUNCTION int coord2bin(const X_FLOAT & x,const X_FLOAT & y,const X_FLOAT & z, int* i) const @@ -351,24 +352,6 @@ class NPairSSAKokkosExecute }; -template -struct NPairSSAKokkosBuildFunctor { - typedef DeviceType device_type; - - const NPairSSAKokkosExecute c; - const bool firstTry; - const int me; - - NPairSSAKokkosBuildFunctor(const NPairSSAKokkosExecute &_c, - const bool _firstTry, const int _me):c(_c), - firstTry(_firstTry), me(_me) {}; - - KOKKOS_INLINE_FUNCTION - void operator() (const int & i) const { - c.build_locals_onePhase(firstTry, me, i); - } -}; - } #endif -- GitLab From 035d0a80d7bc8375886c3c6989a85c1bda12de67 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 10 Apr 2017 16:38:58 -0600 Subject: [PATCH 235/337] Reducing memory churn in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 56 +++++++++++++++++++++--------- src/KOKKOS/pair_exp6_rx_kokkos.h | 4 +++ 2 files changed, 44 insertions(+), 16 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 5c74cba8c7..312f1c6076 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -187,22 +187,25 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) { const int np_total = nlocal + atom->nghost; - PairExp6ParamData.epsilon1 = typename AT::t_float_1d("PairExp6ParamData.epsilon1" ,np_total); - PairExp6ParamData.alpha1 = typename AT::t_float_1d("PairExp6ParamData.alpha1" ,np_total); - PairExp6ParamData.rm1 = typename AT::t_float_1d("PairExp6ParamData.rm1" ,np_total); - PairExp6ParamData.mixWtSite1 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1" ,np_total); - PairExp6ParamData.epsilon2 = typename AT::t_float_1d("PairExp6ParamData.epsilon2" ,np_total); - PairExp6ParamData.alpha2 = typename AT::t_float_1d("PairExp6ParamData.alpha2" ,np_total); - PairExp6ParamData.rm2 = typename AT::t_float_1d("PairExp6ParamData.rm2" ,np_total); - PairExp6ParamData.mixWtSite2 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2" ,np_total); - PairExp6ParamData.epsilonOld1 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld1" ,np_total); - PairExp6ParamData.alphaOld1 = typename AT::t_float_1d("PairExp6ParamData.alphaOld1" ,np_total); - PairExp6ParamData.rmOld1 = typename AT::t_float_1d("PairExp6ParamData.rmOld1" ,np_total); - PairExp6ParamData.mixWtSite1old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1old",np_total); - PairExp6ParamData.epsilonOld2 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld2" ,np_total); - PairExp6ParamData.alphaOld2 = typename AT::t_float_1d("PairExp6ParamData.alphaOld2" ,np_total); - PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); - PairExp6ParamData.mixWtSite2old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2old",np_total); + if (np_total > PairExp6ParamData.epsilon1.dimension_0()) { + PairExp6ParamData.epsilon1 = typename AT::t_float_1d("PairExp6ParamData.epsilon1" ,np_total); + PairExp6ParamData.alpha1 = typename AT::t_float_1d("PairExp6ParamData.alpha1" ,np_total); + PairExp6ParamData.rm1 = typename AT::t_float_1d("PairExp6ParamData.rm1" ,np_total); + PairExp6ParamData.mixWtSite1 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1" ,np_total); + PairExp6ParamData.epsilon2 = typename AT::t_float_1d("PairExp6ParamData.epsilon2" ,np_total); + PairExp6ParamData.alpha2 = typename AT::t_float_1d("PairExp6ParamData.alpha2" ,np_total); + PairExp6ParamData.rm2 = typename AT::t_float_1d("PairExp6ParamData.rm2" ,np_total); + PairExp6ParamData.mixWtSite2 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2" ,np_total); + PairExp6ParamData.epsilonOld1 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld1" ,np_total); + PairExp6ParamData.alphaOld1 = typename AT::t_float_1d("PairExp6ParamData.alphaOld1" ,np_total); + PairExp6ParamData.rmOld1 = typename AT::t_float_1d("PairExp6ParamData.rmOld1" ,np_total); + PairExp6ParamData.mixWtSite1old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1old",np_total); + PairExp6ParamData.epsilonOld2 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld2" ,np_total); + PairExp6ParamData.alphaOld2 = typename AT::t_float_1d("PairExp6ParamData.alphaOld2" ,np_total); + PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); + PairExp6ParamData.mixWtSite2old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2old",np_total); + } else + Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); #ifdef KOKKOS_HAVE_CUDA Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); @@ -352,6 +355,27 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) //printf("PairExp6rxKokkos::compute %f %f\n", getElapsedTime(t_start, t_stop), getElapsedTime(t_mix_start, t_mix_stop)); } +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxZeroMixingWeights, const int &i) const { + PairExp6ParamData.epsilon1[i] = 0.0; + PairExp6ParamData.alpha1[i] = 0.0; + PairExp6ParamData.rm1[i] = 0.0; + PairExp6ParamData.mixWtSite1[i] = 0.0; + PairExp6ParamData.epsilon2[i] = 0.0; + PairExp6ParamData.alpha2[i] = 0.0; + PairExp6ParamData.rm2[i] = 0.0; + PairExp6ParamData.mixWtSite2[i] = 0.0; + PairExp6ParamData.epsilonOld1[i] = 0.0; + PairExp6ParamData.alphaOld1[i] = 0.0; + PairExp6ParamData.rmOld1[i] = 0.0; + PairExp6ParamData.mixWtSite1old[i] = 0.0; + PairExp6ParamData.epsilonOld2[i] = 0.0; + PairExp6ParamData.alphaOld2[i] = 0.0; + PairExp6ParamData.rmOld2[i] = 0.0; + PairExp6ParamData.mixWtSite2old[i] = 0.0; +} + template KOKKOS_INLINE_FUNCTION void PairExp6rxKokkos::operator()(TagPairExp6rxgetMixingWeights, const int &i) const { diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 9f38732c32..5e9fb4e3e3 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -52,6 +52,7 @@ struct PairExp6ParamDataTypeKokkos {} }; +struct TagPairExp6rxZeroMixingWeights{}; struct TagPairExp6rxgetMixingWeights{}; template @@ -76,6 +77,9 @@ class PairExp6rxKokkos : public PairExp6rx { void coeff(int, char **); void init_style(); + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxZeroMixingWeights, const int&) const; + KOKKOS_INLINE_FUNCTION void operator()(TagPairExp6rxgetMixingWeights, const int&) const; -- GitLab From 6c0b6918821ac738327b0aee398873546a929340 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 11 Apr 2017 09:12:46 -0600 Subject: [PATCH 236/337] Removing more memory churn in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 73 ++++++++++++++++++++---------- src/KOKKOS/pair_exp6_rx_kokkos.h | 24 ++++++++++ 2 files changed, 72 insertions(+), 25 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 312f1c6076..51cf1a72e7 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -204,6 +204,29 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) PairExp6ParamData.alphaOld2 = typename AT::t_float_1d("PairExp6ParamData.alphaOld2" ,np_total); PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); PairExp6ParamData.mixWtSite2old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2old",np_total); + + PairExp6ParamDataVect.epsilon = typename AT::t_float_1d("PairExp6ParamDataVect.epsilon" ,np_total);; + PairExp6ParamDataVect.rm3 = typename AT::t_float_1d("PairExp6ParamDataVect.rm3" ,np_total);; + PairExp6ParamDataVect.alpha = typename AT::t_float_1d("PairExp6ParamDataVect.alpha" ,np_total);; + PairExp6ParamDataVect.xMolei = typename AT::t_float_1d("PairExp6ParamDataVect.xMolei" ,np_total);; + PairExp6ParamDataVect.epsilon_old = typename AT::t_float_1d("PairExp6ParamDataVect.epsilon_old" ,np_total);; + PairExp6ParamDataVect.rm3_old = typename AT::t_float_1d("PairExp6ParamDataVect.rm3_old" ,np_total);; + PairExp6ParamDataVect.alpha_old = typename AT::t_float_1d("PairExp6ParamDataVect.alpha_old" ,np_total);; + PairExp6ParamDataVect.xMolei_old = typename AT::t_float_1d("PairExp6ParamDataVect.xMolei_old" ,np_total);; + PairExp6ParamDataVect.fractionOFA = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOFA" ,np_total);; + PairExp6ParamDataVect.fraction1 = typename AT::t_float_1d("PairExp6ParamDataVect.fraction1" ,np_total);; + PairExp6ParamDataVect.fraction2 = typename AT::t_float_1d("PairExp6ParamDataVect.fraction2" ,np_total);; + PairExp6ParamDataVect.nMoleculesOFA = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOFA" ,np_total);; + PairExp6ParamDataVect.nMolecules1 = typename AT::t_float_1d("PairExp6ParamDataVect.nMolecules1" ,np_total);; + PairExp6ParamDataVect.nMolecules2 = typename AT::t_float_1d("PairExp6ParamDataVect.nMolecules2" ,np_total);; + PairExp6ParamDataVect.nTotal = typename AT::t_float_1d("PairExp6ParamDataVect.nTotal" ,np_total);; + PairExp6ParamDataVect.fractionOFAold = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOFAold" ,np_total);; + PairExp6ParamDataVect.fractionOld1 = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOld1" ,np_total);; + PairExp6ParamDataVect.fractionOld2 = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOld2" ,np_total);; + PairExp6ParamDataVect.nMoleculesOFAold = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOFAold",np_total);; + PairExp6ParamDataVect.nMoleculesOld1 = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOld1" ,np_total);; + PairExp6ParamDataVect.nMoleculesOld2 = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOld2" ,np_total);; + PairExp6ParamDataVect.nTotalold = typename AT::t_float_1d("PairExp6ParamDataVect.nTotalold" ,np_total);; } else Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); @@ -2094,31 +2117,31 @@ template void PairExp6rxKokkos::getMixingWeightsVect(const int np_total, int errorFlag, ArrayT &epsilon1, ArrayT &alpha1, ArrayT &rm1, ArrayT &mixWtSite1, ArrayT &epsilon2, ArrayT &alpha2, ArrayT &rm2, ArrayT &mixWtSite2, ArrayT &epsilon1_old, ArrayT &alpha1_old, ArrayT &rm1_old, ArrayT &mixWtSite1old, ArrayT &epsilon2_old, ArrayT &alpha2_old, ArrayT &rm2_old, ArrayT &mixWtSite2old) const { - ArrayT epsilon("PairExp6ParamData.epsilon", np_total); - ArrayT rm3("PairExp6ParamData.rm3", np_total); - ArrayT alpha("PairExp6ParamData.alpha", np_total); - ArrayT xMolei("PairExp6ParamData.xMolei", np_total); - - ArrayT epsilon_old("PairExp6ParamData.epsilon_old", np_total); - ArrayT rm3_old("PairExp6ParamData.rm3_old", np_total); - ArrayT alpha_old("PairExp6ParamData.alpha_old", np_total); - ArrayT xMolei_old("PairExp6ParamData.xMolei_old", np_total); - - ArrayT fractionOFA("PairExp6ParamData.fractionOFA", np_total); - ArrayT fraction1("PairExp6ParamData.fraction1", np_total); - ArrayT fraction2("PairExp6ParamData.fraction2", np_total); - ArrayT nMoleculesOFA("PairExp6ParamData.nMoleculesOFA", np_total); - ArrayT nMolecules1("PairExp6ParamData.nMolecules1", np_total); - ArrayT nMolecules2("PairExp6ParamData.nMolecules2", np_total); - ArrayT nTotal("PairExp6ParamData.nTotal", np_total); - - ArrayT fractionOFAold("PairExp6ParamData.fractionOFAold", np_total); - ArrayT fractionOld1("PairExp6ParamData.fractionOld1", np_total); - ArrayT fractionOld2("PairExp6ParamData.fractionOld2", np_total); - ArrayT nMoleculesOFAold("PairExp6ParamData.nMoleculesOFAold", np_total); - ArrayT nMoleculesOld1("PairExp6ParamData.nMoleculesOld1", np_total); - ArrayT nMoleculesOld2("PairExp6ParamData.nMoleculesOld2", np_total); - ArrayT nTotalold("PairExp6ParamData.nTotalold", np_total); + ArrayT epsilon = PairExp6ParamDataVect.epsilon ; + ArrayT rm3 = PairExp6ParamDataVect.rm3 ; + ArrayT alpha = PairExp6ParamDataVect.alpha ; + ArrayT xMolei = PairExp6ParamDataVect.xMolei ; + + ArrayT epsilon_old = PairExp6ParamDataVect.epsilon_old ; + ArrayT rm3_old = PairExp6ParamDataVect.rm3_old ; + ArrayT alpha_old = PairExp6ParamDataVect.alpha_old ; + ArrayT xMolei_old = PairExp6ParamDataVect.xMolei_old ; + + ArrayT fractionOFA = PairExp6ParamDataVect.fractionOFA ; + ArrayT fraction1 = PairExp6ParamDataVect.fraction1 ; + ArrayT fraction2 = PairExp6ParamDataVect.fraction2 ; + ArrayT nMoleculesOFA = PairExp6ParamDataVect.nMoleculesOFA ; + ArrayT nMolecules1 = PairExp6ParamDataVect.nMolecules1 ; + ArrayT nMolecules2 = PairExp6ParamDataVect.nMolecules2 ; + ArrayT nTotal = PairExp6ParamDataVect.nTotal ; + + ArrayT fractionOFAold = PairExp6ParamDataVect.fractionOFAold ; + ArrayT fractionOld1 = PairExp6ParamDataVect.fractionOld1 ; + ArrayT fractionOld2 = PairExp6ParamDataVect.fractionOld2 ; + ArrayT nMoleculesOFAold = PairExp6ParamDataVect.nMoleculesOFAold; + ArrayT nMoleculesOld1 = PairExp6ParamDataVect.nMoleculesOld1 ; + ArrayT nMoleculesOld2 = PairExp6ParamDataVect.nMoleculesOld2 ; + ArrayT nTotalold = PairExp6ParamDataVect.nTotalold ; int errorFlag1 = 0, errorFlag2 = 0; diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 5e9fb4e3e3..09283662a2 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -52,6 +52,29 @@ struct PairExp6ParamDataTypeKokkos {} }; +template +struct PairExp6ParamDataTypeKokkosVect +{ + typedef ArrayTypes AT; + + typename AT::t_float_1d epsilon, rm3, alpha, xMolei, epsilon_old, rm3_old, + alpha_old, xMolei_old, fractionOFA, fraction1, + fraction2, nMoleculesOFA, nMolecules1, nMolecules2, + nTotal, fractionOFAold, fractionOld1, fractionOld2, + nMoleculesOFAold, nMoleculesOld1, nMoleculesOld2, + nTotalold; + + // Default constructor -- nullify everything. + PairExp6ParamDataTypeKokkosVect(void) + : epsilon(NULL), rm3(NULL), alpha(NULL), xMolei(NULL), epsilon_old(NULL), rm3_old(NULL), + alpha_old(NULL), xMolei_old(NULL), fractionOFA(NULL), fraction1(NULL), + fraction2(NULL), nMoleculesOFA(NULL), nMolecules1(NULL), nMolecules2(NULL), + nTotal(NULL), fractionOFAold(NULL), fractionOld1(NULL), fractionOld2(NULL), + nMoleculesOFAold(NULL), nMoleculesOld1(NULL), nMoleculesOld2(NULL), + nTotalold(NULL) + {} +}; + struct TagPairExp6rxZeroMixingWeights{}; struct TagPairExp6rxgetMixingWeights{}; @@ -148,6 +171,7 @@ class PairExp6rxKokkos : public PairExp6rx { typename AT::t_int_1d_randomread d_numneigh; PairExp6ParamDataTypeKokkos PairExp6ParamData; + PairExp6ParamDataTypeKokkosVect PairExp6ParamDataVect; void allocate(); DAT::tdual_int_1d k_mol2param; // mapping from molecule to parameters -- GitLab From ca4619e22791294cb7e63a0043869504350772ed Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 11 Apr 2017 09:14:21 -0600 Subject: [PATCH 237/337] Fix format issue in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 44 +++++++++++++++--------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 51cf1a72e7..5b84f09fd6 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -205,28 +205,28 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); PairExp6ParamData.mixWtSite2old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2old",np_total); - PairExp6ParamDataVect.epsilon = typename AT::t_float_1d("PairExp6ParamDataVect.epsilon" ,np_total);; - PairExp6ParamDataVect.rm3 = typename AT::t_float_1d("PairExp6ParamDataVect.rm3" ,np_total);; - PairExp6ParamDataVect.alpha = typename AT::t_float_1d("PairExp6ParamDataVect.alpha" ,np_total);; - PairExp6ParamDataVect.xMolei = typename AT::t_float_1d("PairExp6ParamDataVect.xMolei" ,np_total);; - PairExp6ParamDataVect.epsilon_old = typename AT::t_float_1d("PairExp6ParamDataVect.epsilon_old" ,np_total);; - PairExp6ParamDataVect.rm3_old = typename AT::t_float_1d("PairExp6ParamDataVect.rm3_old" ,np_total);; - PairExp6ParamDataVect.alpha_old = typename AT::t_float_1d("PairExp6ParamDataVect.alpha_old" ,np_total);; - PairExp6ParamDataVect.xMolei_old = typename AT::t_float_1d("PairExp6ParamDataVect.xMolei_old" ,np_total);; - PairExp6ParamDataVect.fractionOFA = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOFA" ,np_total);; - PairExp6ParamDataVect.fraction1 = typename AT::t_float_1d("PairExp6ParamDataVect.fraction1" ,np_total);; - PairExp6ParamDataVect.fraction2 = typename AT::t_float_1d("PairExp6ParamDataVect.fraction2" ,np_total);; - PairExp6ParamDataVect.nMoleculesOFA = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOFA" ,np_total);; - PairExp6ParamDataVect.nMolecules1 = typename AT::t_float_1d("PairExp6ParamDataVect.nMolecules1" ,np_total);; - PairExp6ParamDataVect.nMolecules2 = typename AT::t_float_1d("PairExp6ParamDataVect.nMolecules2" ,np_total);; - PairExp6ParamDataVect.nTotal = typename AT::t_float_1d("PairExp6ParamDataVect.nTotal" ,np_total);; - PairExp6ParamDataVect.fractionOFAold = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOFAold" ,np_total);; - PairExp6ParamDataVect.fractionOld1 = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOld1" ,np_total);; - PairExp6ParamDataVect.fractionOld2 = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOld2" ,np_total);; - PairExp6ParamDataVect.nMoleculesOFAold = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOFAold",np_total);; - PairExp6ParamDataVect.nMoleculesOld1 = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOld1" ,np_total);; - PairExp6ParamDataVect.nMoleculesOld2 = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOld2" ,np_total);; - PairExp6ParamDataVect.nTotalold = typename AT::t_float_1d("PairExp6ParamDataVect.nTotalold" ,np_total);; + PairExp6ParamDataVect.epsilon = typename AT::t_float_1d("PairExp6ParamDataVect.epsilon" ,np_total); + PairExp6ParamDataVect.rm3 = typename AT::t_float_1d("PairExp6ParamDataVect.rm3" ,np_total); + PairExp6ParamDataVect.alpha = typename AT::t_float_1d("PairExp6ParamDataVect.alpha" ,np_total); + PairExp6ParamDataVect.xMolei = typename AT::t_float_1d("PairExp6ParamDataVect.xMolei" ,np_total); + PairExp6ParamDataVect.epsilon_old = typename AT::t_float_1d("PairExp6ParamDataVect.epsilon_old" ,np_total); + PairExp6ParamDataVect.rm3_old = typename AT::t_float_1d("PairExp6ParamDataVect.rm3_old" ,np_total); + PairExp6ParamDataVect.alpha_old = typename AT::t_float_1d("PairExp6ParamDataVect.alpha_old" ,np_total); + PairExp6ParamDataVect.xMolei_old = typename AT::t_float_1d("PairExp6ParamDataVect.xMolei_old" ,np_total); + PairExp6ParamDataVect.fractionOFA = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOFA" ,np_total); + PairExp6ParamDataVect.fraction1 = typename AT::t_float_1d("PairExp6ParamDataVect.fraction1" ,np_total); + PairExp6ParamDataVect.fraction2 = typename AT::t_float_1d("PairExp6ParamDataVect.fraction2" ,np_total); + PairExp6ParamDataVect.nMoleculesOFA = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOFA" ,np_total); + PairExp6ParamDataVect.nMolecules1 = typename AT::t_float_1d("PairExp6ParamDataVect.nMolecules1" ,np_total); + PairExp6ParamDataVect.nMolecules2 = typename AT::t_float_1d("PairExp6ParamDataVect.nMolecules2" ,np_total); + PairExp6ParamDataVect.nTotal = typename AT::t_float_1d("PairExp6ParamDataVect.nTotal" ,np_total); + PairExp6ParamDataVect.fractionOFAold = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOFAold" ,np_total); + PairExp6ParamDataVect.fractionOld1 = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOld1" ,np_total); + PairExp6ParamDataVect.fractionOld2 = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOld2" ,np_total); + PairExp6ParamDataVect.nMoleculesOFAold = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOFAold",np_total); + PairExp6ParamDataVect.nMoleculesOld1 = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOld1" ,np_total); + PairExp6ParamDataVect.nMoleculesOld2 = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOld2" ,np_total); + PairExp6ParamDataVect.nTotalold = typename AT::t_float_1d("PairExp6ParamDataVect.nTotalold" ,np_total); } else Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); -- GitLab From 36cbe439780dc8b44ecbb25036327853033aab68 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 6 Jun 2017 10:51:26 -0600 Subject: [PATCH 238/337] Fixing some CUDA runtime issues in npair_ssa_kokkos --- src/KOKKOS/npair_ssa_kokkos.cpp | 100 +++++++++++++++++++++++--------- 1 file changed, 74 insertions(+), 26 deletions(-) diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index ba4bc9171c..0c3a5985ff 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -149,17 +149,21 @@ void NPairSSAKokkos::copy_stencil_info() k_ssa_phaseOff = DAT::tdual_int_1d_3("NPairSSAKokkos:ssa_phaseOff",ssa_phaseCt); ssa_phaseOff = k_ssa_phaseOff.view(); } + auto h_ssa_phaseOff = k_ssa_phaseOff.h_view; + k_ssa_phaseOff.sync(); int workPhase = 0; for (int zoff = sz1 - 1; zoff >= 0; --zoff) { for (int yoff = sy1 - 1; yoff >= 0; --yoff) { for (int xoff = sx1 - 1; xoff >= 0; --xoff) { - ssa_phaseOff(workPhase, 0) = xoff; - ssa_phaseOff(workPhase, 1) = yoff; - ssa_phaseOff(workPhase, 2) = zoff; + h_ssa_phaseOff(workPhase, 0) = xoff; + h_ssa_phaseOff(workPhase, 1) = yoff; + h_ssa_phaseOff(workPhase, 2) = zoff; workPhase++; } } } + k_ssa_phaseOff.modify(); + k_ssa_phaseOff.sync(); } @@ -250,8 +254,25 @@ void NPairSSAKokkos::build(NeighList *list_) ssa_itemLen = k_ssa_itemLen.view(); } + k_ssa_itemLoc.sync(); + k_ssa_itemLen.sync(); + k_ssa_gitemLoc.sync(); + k_ssa_gitemLen.sync(); + k_ssa_phaseOff.sync(); + k_ssa_phaseLen.sync(); + k_ssa_gphaseLen.sync(); + auto h_ssa_itemLoc = k_ssa_itemLoc.h_view; + auto h_ssa_itemLen = k_ssa_itemLen.h_view; + auto h_ssa_gitemLoc = k_ssa_gitemLoc.h_view; + auto h_ssa_gitemLen = k_ssa_gitemLen.h_view; + auto h_ssa_phaseOff = k_ssa_phaseOff.h_view; + auto h_ssa_phaseLen = k_ssa_phaseLen.h_view; + auto h_ssa_gphaseLen = k_ssa_gphaseLen.h_view; + { // Preflight the neighbor list workplan const typename ArrayTypes::t_int_1d_const c_bincount = k_bincount.view(); + k_bincount.sync(); + auto h_bincount = k_bincount.h_view; const typename ArrayTypes::t_int_2d_const c_bins = k_bins.view(); const typename ArrayTypes::t_int_1d_const_um c_stencil = k_stencil.view(); const typename ArrayTypes::t_int_1d_const c_nstencil_ssa = k_nstencil_ssa.view(); @@ -259,9 +280,9 @@ void NPairSSAKokkos::build(NeighList *list_) // loop over bins with local atoms, counting half of the neighbors for (int workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { - int zoff = ssa_phaseOff(workPhase, 2); - int yoff = ssa_phaseOff(workPhase, 1); - int xoff = ssa_phaseOff(workPhase, 0); + int zoff = h_ssa_phaseOff(workPhase, 2); + int yoff = h_ssa_phaseOff(workPhase, 1); + int xoff = h_ssa_phaseOff(workPhase, 0); int workItem = 0; for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { @@ -276,14 +297,14 @@ void NPairSSAKokkos::build(NeighList *list_) if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; const int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; - const int ibinCt = c_bincount(ibin); + const int ibinCt = h_bincount(ibin); if (ibinCt > 0) { int base_n = 0; bool include_same = false; // count all local atoms in the current stencil "subphase" as potential neighbors for (int k = c_nstencil_ssa(subphase); k < c_nstencil_ssa(subphase+1); k++) { const int jbin = ibin+c_stencil(k); - if (jbin != ibin) base_n += c_bincount(jbin); + if (jbin != ibin) base_n += h_bincount(jbin); else include_same = true; } // Calculate how many ibin particles would have had some neighbors @@ -291,10 +312,10 @@ void NPairSSAKokkos::build(NeighList *list_) else if (include_same) inum += ibinCt - 1; } } - ssa_itemLoc(workPhase,workItem) = inum_start; // record where workItem starts in ilist - ssa_itemLen(workPhase,workItem) = inum - inum_start; // record workItem length + h_ssa_itemLoc(workPhase,workItem) = inum_start; // record where workItem starts in ilist + h_ssa_itemLen(workPhase,workItem) = inum - inum_start; // record workItem length #ifdef DEBUG_SSA_BUILD_LOCALS -if (ssa_itemLen(workPhase,workItem) < 0) fprintf(stdout, "undr%03d phase (%3d,%3d) inum %d - inum_start %d UNDERFLOW\n" +if (h_ssa_itemLen(workPhase,workItem) < 0) fprintf(stdout, "undr%03d phase (%3d,%3d) inum %d - inum_start %d UNDERFLOW\n" ,comm->me ,workPhase ,workItem @@ -311,14 +332,14 @@ if (ssa_itemLen(workPhase,workItem) < 0) fprintf(stdout, "undr%03d phase (%3d,%3 fprintf(stdout, "phas%03d phase %3d could use %6d inums, expected %6d inums. maxworkItems = %3d, inums/workItems = %g\n" ,comm->me ,workPhase - ,inum - ssa_itemLoc(workPhase, 0) + ,inum - h_ssa_itemLoc(workPhase, 0) ,(nlocal*4 + ssa_phaseCt - 1) / ssa_phaseCt ,workItem - ,(inum - ssa_itemLoc(workPhase, 0)) / (double) workItem + ,(inum - h_ssa_itemLoc(workPhase, 0)) / (double) workItem ); #endif // record where workPhase ends - ssa_phaseLen(workPhase) = workItem; + h_ssa_phaseLen(workPhase) = workItem; } #ifdef DEBUG_SSA_BUILD_LOCALS fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" @@ -331,15 +352,30 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu #endif nl_size = inum; // record how much space is needed for the local work plan } + // count how many ghosts might have neighbors, and increase the work plan storage for (int workPhase = 0; workPhase < ssa_gphaseCt; workPhase++) { int len = k_gbincount.h_view(workPhase + 1); - ssa_gitemLoc(workPhase,0) = nl_size; // record where workItem starts in ilist - ssa_gitemLen(workPhase,0) = len; + h_ssa_gitemLoc(workPhase,0) = nl_size; // record where workItem starts in ilist + h_ssa_gitemLen(workPhase,0) = len; nl_size += len; } list->grow(nl_size); // Make special larger SSA neighbor list + k_ssa_itemLoc.modify(); + k_ssa_itemLen.modify(); + k_ssa_gitemLoc.modify(); + k_ssa_gitemLen.modify(); + k_ssa_phaseOff.modify(); + k_ssa_phaseLen.modify(); + k_ssa_itemLoc.sync(); + k_ssa_itemLen.sync(); + k_ssa_gitemLen.sync(); + k_ssa_gitemLoc.sync(); + k_ssa_phaseOff.sync(); + k_ssa_phaseLen.sync(); + k_ssa_gphaseLen.sync(); + NPairSSAKokkosExecute data(*list, k_cutneighsq.view(), @@ -422,15 +458,27 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu Kokkos::parallel_for(ssa_phaseCt, LAMMPS_LAMBDA (const int workPhase) { data.build_locals_onePhase(firstTry, comm->me, workPhase); }); - data.neigh_list.inum = ssa_itemLoc(ssa_phaseCt-1,ssa_phaseLen(ssa_phaseCt-1)-1) + - ssa_itemLen(ssa_phaseCt-1,ssa_phaseLen(ssa_phaseCt-1)-1); + k_ssa_itemLoc.modify(); + k_ssa_itemLen.modify(); + k_ssa_phaseLen.modify(); + k_ssa_itemLoc.sync(); + k_ssa_itemLen.sync(); + k_ssa_phaseLen.sync(); + data.neigh_list.inum = h_ssa_itemLoc(ssa_phaseCt-1,h_ssa_phaseLen(ssa_phaseCt-1)-1) + + h_ssa_itemLen(ssa_phaseCt-1,h_ssa_phaseLen(ssa_phaseCt-1)-1); // loop over AIR ghost atoms, storing their local neighbors Kokkos::parallel_for(ssa_gphaseCt, LAMMPS_LAMBDA (const int workPhase) { data.build_ghosts_onePhase(workPhase); }); - data.neigh_list.gnum = ssa_gitemLoc(ssa_gphaseCt-1,ssa_gphaseLen(ssa_gphaseCt-1)-1) + - ssa_gitemLen(ssa_gphaseCt-1,ssa_gphaseLen(ssa_gphaseCt-1)-1) - data.neigh_list.inum; + k_ssa_gitemLoc.modify(); + k_ssa_gitemLen.modify(); + k_ssa_gphaseLen.modify(); + k_ssa_gitemLoc.sync(); + k_ssa_gitemLen.sync(); + k_ssa_gphaseLen.sync(); + data.neigh_list.gnum = h_ssa_gitemLoc(ssa_gphaseCt-1,h_ssa_gphaseLen(ssa_gphaseCt-1)-1) + + h_ssa_gitemLen(ssa_gphaseCt-1,h_ssa_gphaseLen(ssa_gphaseCt-1)-1) - data.neigh_list.inum; firstTry = false; DeviceType::fence(); @@ -445,12 +493,12 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu } } - k_ssa_phaseLen.modify(); - k_ssa_itemLoc.modify(); - k_ssa_itemLen.modify(); - k_ssa_gphaseLen.modify(); - k_ssa_gitemLoc.modify(); - k_ssa_gitemLen.modify(); + //k_ssa_phaseLen.modify(); + //k_ssa_itemLoc.modify(); + //k_ssa_itemLen.modify(); + //k_ssa_gphaseLen.modify(); + //k_ssa_gitemLoc.modify(); + //k_ssa_gitemLen.modify(); list->inum = data.neigh_list.inum; //FIXME once the above is in a parallel_for list->gnum = data.neigh_list.gnum; // it will need a deep_copy or something -- GitLab From efe60bf991c69d0cdd0e1f960f060c53abb62457 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 6 Jun 2017 13:10:04 -0600 Subject: [PATCH 239/337] Fixing more CUDA runtime issues --- src/KOKKOS/nbin_ssa_kokkos.cpp | 2 ++ src/KOKKOS/npair_ssa_kokkos.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index 6c9e3a3446..f11d7e18ef 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -212,6 +212,8 @@ void NBinSSAKokkos::bin_atoms() }); DeviceType::fence(); } + k_bins.modify(); + k_bincount.modify(); c_bins = bins; // bins won't change until the next bin_atoms //now dispose of the k_binID array diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 0c3a5985ff..368fb1a6ed 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -275,7 +275,11 @@ void NPairSSAKokkos::build(NeighList *list_) auto h_bincount = k_bincount.h_view; const typename ArrayTypes::t_int_2d_const c_bins = k_bins.view(); const typename ArrayTypes::t_int_1d_const_um c_stencil = k_stencil.view(); + k_stencil.sync(); + auto h_stencil = k_stencil.h_view; const typename ArrayTypes::t_int_1d_const c_nstencil_ssa = k_nstencil_ssa.view(); + k_nstencil_ssa.sync(); + auto h_nstencil_ssa = k_nstencil_ssa.h_view; int inum = 0; // loop over bins with local atoms, counting half of the neighbors @@ -302,8 +306,8 @@ void NPairSSAKokkos::build(NeighList *list_) int base_n = 0; bool include_same = false; // count all local atoms in the current stencil "subphase" as potential neighbors - for (int k = c_nstencil_ssa(subphase); k < c_nstencil_ssa(subphase+1); k++) { - const int jbin = ibin+c_stencil(k); + for (int k = h_nstencil_ssa(subphase); k < h_nstencil_ssa(subphase+1); k++) { + const int jbin = ibin+h_stencil(k); if (jbin != ibin) base_n += h_bincount(jbin); else include_same = true; } -- GitLab From 520ab26bd966b5fda778b5e30f4cbdeb95d8e842 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 7 Jun 2017 15:07:53 -0600 Subject: [PATCH 240/337] Fixing more CUDA runtime issues --- src/KOKKOS/nbin_ssa_kokkos.cpp | 3 +++ src/KOKKOS/npair_ssa_kokkos.cpp | 9 ++------- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp index f11d7e18ef..883ba25b24 100644 --- a/src/KOKKOS/nbin_ssa_kokkos.cpp +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -216,6 +216,9 @@ void NBinSSAKokkos::bin_atoms() k_bincount.modify(); c_bins = bins; // bins won't change until the next bin_atoms + k_gbins.modify(); + k_gbincount.modify(); + //now dispose of the k_binID array k_binID = DAT::tdual_int_1d("NBinSSAKokkos::binID",0); binID = k_binID.view(); diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 368fb1a6ed..aec482993d 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -260,24 +260,18 @@ void NPairSSAKokkos::build(NeighList *list_) k_ssa_gitemLen.sync(); k_ssa_phaseOff.sync(); k_ssa_phaseLen.sync(); - k_ssa_gphaseLen.sync(); auto h_ssa_itemLoc = k_ssa_itemLoc.h_view; auto h_ssa_itemLen = k_ssa_itemLen.h_view; auto h_ssa_gitemLoc = k_ssa_gitemLoc.h_view; auto h_ssa_gitemLen = k_ssa_gitemLen.h_view; auto h_ssa_phaseOff = k_ssa_phaseOff.h_view; auto h_ssa_phaseLen = k_ssa_phaseLen.h_view; - auto h_ssa_gphaseLen = k_ssa_gphaseLen.h_view; { // Preflight the neighbor list workplan - const typename ArrayTypes::t_int_1d_const c_bincount = k_bincount.view(); k_bincount.sync(); auto h_bincount = k_bincount.h_view; - const typename ArrayTypes::t_int_2d_const c_bins = k_bins.view(); - const typename ArrayTypes::t_int_1d_const_um c_stencil = k_stencil.view(); k_stencil.sync(); auto h_stencil = k_stencil.h_view; - const typename ArrayTypes::t_int_1d_const c_nstencil_ssa = k_nstencil_ssa.view(); k_nstencil_ssa.sync(); auto h_nstencil_ssa = k_nstencil_ssa.h_view; int inum = 0; @@ -358,6 +352,7 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu } // count how many ghosts might have neighbors, and increase the work plan storage + k_gbincount.sync(); for (int workPhase = 0; workPhase < ssa_gphaseCt; workPhase++) { int len = k_gbincount.h_view(workPhase + 1); h_ssa_gitemLoc(workPhase,0) = nl_size; // record where workItem starts in ilist @@ -370,7 +365,6 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu k_ssa_itemLen.modify(); k_ssa_gitemLoc.modify(); k_ssa_gitemLen.modify(); - k_ssa_phaseOff.modify(); k_ssa_phaseLen.modify(); k_ssa_itemLoc.sync(); k_ssa_itemLen.sync(); @@ -481,6 +475,7 @@ fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inu k_ssa_gitemLoc.sync(); k_ssa_gitemLen.sync(); k_ssa_gphaseLen.sync(); + auto h_ssa_gphaseLen = k_ssa_gphaseLen.h_view; data.neigh_list.gnum = h_ssa_gitemLoc(ssa_gphaseCt-1,h_ssa_gphaseLen(ssa_gphaseCt-1)-1) + h_ssa_gitemLen(ssa_gphaseCt-1,h_ssa_gphaseLen(ssa_gphaseCt-1)-1) - data.neigh_list.inum; firstTry = false; -- GitLab From 611bb6f130355d88c1b89e710cf963b629b2a443 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 8 Jun 2017 09:31:51 -0600 Subject: [PATCH 241/337] Reduce memory churn in pair_table_rx_kokkos --- src/KOKKOS/pair_table_rx_kokkos.cpp | 26 ++++++++++++++------------ src/KOKKOS/pair_table_rx_kokkos.h | 5 +++++ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index eacaf83cf5..2f5a670537 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -534,10 +534,10 @@ static void compute_all_items( typename ArrayTypes::t_int_1d_const d_numneigh, typename ArrayTypes::t_x_array_randomread x, typename ArrayTypes::t_int_1d_randomread type, - Kokkos::View mixWtSite1old, - Kokkos::View mixWtSite2old, - Kokkos::View mixWtSite1, - Kokkos::View mixWtSite2, + Kokkos::View const& mixWtSite1old, + Kokkos::View const& mixWtSite2old, + Kokkos::View const& mixWtSite1, + Kokkos::View const& mixWtSite2, Few special_lj, Few, MAX_TYPES_STACKPARAMS+1> m_cutsq, typename ArrayTypes::t_ffloat_2d d_cutsq, @@ -597,10 +597,10 @@ static void getAllMixingWeights( int nspecies, int isite1, int isite2, bool fractionalWeighting, - Kokkos::View mixWtSite1old, - Kokkos::View mixWtSite2old, - Kokkos::View mixWtSite1, - Kokkos::View mixWtSite2) { + Kokkos::View const& mixWtSite1old, + Kokkos::View const& mixWtSite2old, + Kokkos::View const& mixWtSite1, + Kokkos::View const& mixWtSite2) { Kokkos::parallel_for(ntotal, LAMMPS_LAMBDA(int i) { getMixingWeights(dvector,nspecies,isite1,isite2,fractionalWeighting, @@ -651,10 +651,12 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) // loop over neighbors of my atoms const int ntotal = atom->nlocal + atom->nghost; - auto mixWtSite1old = Kokkos::View("PairTableRXKokkos::mixWtSite1old", ntotal); - auto mixWtSite2old = Kokkos::View("PairTableRXKokkos::mixWtSite2old", ntotal); - auto mixWtSite1 = Kokkos::View("PairTableRXKokkos::mixWtSite1", ntotal); - auto mixWtSite2 = Kokkos::View("PairTableRXKokkos::mixWtSite2", ntotal); + if (ntotal > mixWtSite1.dimension_0()) { + mixWtSite1old = Kokkos::View("PairTableRXKokkos::mixWtSite1old", ntotal); + mixWtSite2old = Kokkos::View("PairTableRXKokkos::mixWtSite2old", ntotal); + mixWtSite1 = Kokkos::View("PairTableRXKokkos::mixWtSite1", ntotal); + mixWtSite2 = Kokkos::View("PairTableRXKokkos::mixWtSite2", ntotal); + } getAllMixingWeights(ntotal, atomKK->k_dvector.template view(), nspecies, isite1, isite2, fractionalWeighting, diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h index 54c114a433..4230263dc9 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.h +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -96,6 +96,11 @@ class PairTableRXKokkos : public PairTable { /* PairTableRX members */ + Kokkos::View mixWtSite1old; + Kokkos::View mixWtSite2old; + Kokkos::View mixWtSite1; + Kokkos::View mixWtSite2; + int nspecies; char *site1, *site2; int isite1, isite2; -- GitLab From 6f24c58c1a31d6f7fe8cac237e22b21c8a159660 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 8 Jun 2017 09:52:00 -0600 Subject: [PATCH 242/337] Reduce memory churn in fix_rx_kokkos --- src/KOKKOS/fix_rx_kokkos.cpp | 52 ++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index d994b2c5d1..92db54d234 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -79,6 +79,17 @@ FixRxKokkos::~FixRxKokkos() { //printf("Inside FixRxKokkos::~FixRxKokkos copymode= %d\n", copymode); if (copymode) return; + + if (localTempFlag) + memory->destroy_kokkos(k_dpdThetaLocal, dpdThetaLocal); + + memory->destroy_kokkos(k_sumWeights, sumWeights); + //memory->destroy_kokkos(k_sumWeights); + + //delete [] scratchSpace; + memory->destroy_kokkos(d_scratchSpace); + + memory->destroy_kokkos(k_cutsq); } /* ---------------------------------------------------------------------- */ @@ -1433,9 +1444,12 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF { const int count = nlocal + (newton_pair ? nghost : 0); - memory->create_kokkos (k_dpdThetaLocal, dpdThetaLocal, count, "FixRxKokkos::dpdThetaLocal"); - this->d_dpdThetaLocal = k_dpdThetaLocal.d_view; - this->h_dpdThetaLocal = k_dpdThetaLocal.h_view; + if (count > k_dpdThetaLocal.d_view.dimension_0()) { + memory->destroy_kokkos (k_dpdThetaLocal, dpdThetaLocal); + memory->create_kokkos (k_dpdThetaLocal, dpdThetaLocal, count, "FixRxKokkos::dpdThetaLocal"); + this->d_dpdThetaLocal = k_dpdThetaLocal.d_view; + this->h_dpdThetaLocal = k_dpdThetaLocal.h_view; + } const int neighflag = lmp->kokkos->neighflag; @@ -1527,7 +1541,10 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF //double *scratchSpace = new double[ scratchSpaceSize * nlocal ]; //typename ArrayTypes::t_double_1d d_scratchSpace("d_scratchSpace", scratchSpaceSize * nlocal); - memory->create_kokkos (d_scratchSpace, nlocal*scratchSpaceSize, "FixRxKokkos::d_scratchSpace"); + if (nlocal*scratchSpaceSize > d_scratchSpace.dimension_0()) { + memory->destroy_kokkos (d_scratchSpace); + memory->create_kokkos (d_scratchSpace, nlocal*scratchSpaceSize, "FixRxKokkos::d_scratchSpace"); + } #if 0 Kokkos::parallel_reduce( nlocal, LAMMPS_LAMBDA(int i, CounterType &counter) @@ -1630,9 +1647,6 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF Kokkos::parallel_reduce( Kokkos::RangePolicy >(0,nlocal), *this, TotalCounters); #endif - //delete [] scratchSpace; - memory->destroy_kokkos (d_scratchSpace); - TimerType timer_ODE = getTimeStamp(); // Check the error flag for any failures. @@ -1651,9 +1665,6 @@ void FixRxKokkos::solve_reactions(const int vflag, const bool isPreF atomKK->modified ( Host, DVECTOR_MASK ); - if (localTempFlag) - memory->destroy_kokkos(k_dpdThetaLocal, dpdThetaLocal); - TimerType timer_stop = getTimeStamp(); double time_ODE = getElapsedTime(timer_localTemperature, timer_ODE); @@ -2012,8 +2023,11 @@ void FixRxKokkos::computeLocalTemperature() const int ntypes = atom->ntypes; //memory->create_kokkos (k_cutsq, h_cutsq, ntypes+1, ntypes+1, "pair:cutsq"); - memory->create_kokkos (k_cutsq, ntypes+1, ntypes+1, "FixRxKokkos::k_cutsq"); - d_cutsq = k_cutsq.template view(); + if (ntypes+1 > k_cutsq.dimension_0()) { + memory->destroy_kokkos (k_cutsq); + memory->create_kokkos (k_cutsq, ntypes+1, ntypes+1, "FixRxKokkos::k_cutsq"); + d_cutsq = k_cutsq.template view(); + } for (int i = 1; i <= ntypes; ++i) for (int j = i; j <= ntypes; ++j) @@ -2030,9 +2044,12 @@ void FixRxKokkos::computeLocalTemperature() int sumWeightsCt = nlocal + (NEWTON_PAIR ? nghost : 0); //memory->create_kokkos (k_sumWeights, sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); - memory->create_kokkos (k_sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); - d_sumWeights = k_sumWeights.d_view; - h_sumWeights = k_sumWeights.h_view; + if (sumWeightsCt > k_sumWeights.d_view.dimension_0()) { + memory->destroy_kokkos(k_sumWeights, sumWeights); + memory->create_kokkos (k_sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); + d_sumWeights = k_sumWeights.d_view; + h_sumWeights = k_sumWeights.h_view; + } // Initialize the accumulator to zero ... //Kokkos::parallel_for (sumWeightsCt, @@ -2165,11 +2182,6 @@ void FixRxKokkos::computeLocalTemperature() Kokkos::parallel_for (Kokkos::RangePolicy >(0, nlocal), *this); #endif - // Clean up the local kokkos data. - //memory->destroy_kokkos(k_cutsq, h_cutsq); - memory->destroy_kokkos(k_cutsq); - //memory->destroy_kokkos(k_sumWeights, sumWeights); - memory->destroy_kokkos(k_sumWeights); } /* ---------------------------------------------------------------------- */ -- GitLab From 43cfa10ea48df7323ce4c15996aacddcb66b2228 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 8 Jun 2017 09:58:10 -0600 Subject: [PATCH 243/337] Reduce memory churn in pair_multi_lucy_rx_kokkos --- src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index ef30fdc6f6..f7e1bad056 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -180,10 +180,12 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in { const int ntotal = nlocal + nghost; - d_mixWtSite1old = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite1old",ntotal); - d_mixWtSite2old = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite2old",ntotal); - d_mixWtSite1 = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite1",ntotal); - d_mixWtSite2 = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite2",ntotal); + if (ntotal > d_mixWtSite1.dimension_0()) { + d_mixWtSite1old = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite1old",ntotal); + d_mixWtSite2old = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite2old",ntotal); + d_mixWtSite1 = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite1",ntotal); + d_mixWtSite2 = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite2",ntotal); + } Kokkos::parallel_for(Kokkos::RangePolicy(0,ntotal),*this); } -- GitLab From b4b7310884382a18f9439983a4c241c24998d88c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 8 Jun 2017 13:33:23 -0600 Subject: [PATCH 244/337] Fixing CUDA runtime issues in pair_exp6_rx_kokkos --- src/KOKKOS/pair_exp6_rx_kokkos.cpp | 16 ++++++++-------- src/KOKKOS/pair_exp6_rx_kokkos.h | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index 5b84f09fd6..1eb1c6c770 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -426,7 +426,7 @@ KOKKOS_INLINE_FUNCTION void PairExp6rxKokkos::operator()(TagPairExp6rxCompute, const int &ii, EV_FLOAT& ev) const { { - const bool one_type = (atom->ntypes == 1); + const bool one_type = (ntypes == 1); if (isite1 == isite2) if (one_type) this->vectorized_operator(ii, ev); @@ -797,7 +797,7 @@ KOKKOS_INLINE_FUNCTION void PairExp6rxKokkos::operator()(TagPairExp6rxComputeNoAtomics, const int &ii, EV_FLOAT& ev) const { { - const bool one_type = (atom->ntypes == 1); + const bool one_type = (ntypes == 1); if (isite1 == isite2) if (one_type) this->vectorized_operator(ii, ev); @@ -1653,18 +1653,18 @@ template void PairExp6rxKokkos::allocate() { allocated = 1; - int n = atom->ntypes; + ntypes = atom->ntypes; - memory->create(setflag,n+1,n+1,"pair:setflag"); - for (int i = 1; i <= n; i++) - for (int j = i; j <= n; j++) + memory->create(setflag,ntypes+1,ntypes+1,"pair:setflag"); + for (int i = 1; i <= ntypes; i++) + for (int j = i; j <= ntypes; j++) setflag[i][j] = 0; - memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); + memory->create_kokkos(k_cutsq,cutsq,ntypes+1,ntypes+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_cutsq.template modify(); - memory->create(cut,n+1,n+1,"pair:cut_lj"); + memory->create(cut,ntypes+1,ntypes+1,"pair:cut_lj"); } diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h index 09283662a2..4c35c76851 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.h +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -145,7 +145,7 @@ class PairExp6rxKokkos : public PairExp6rx { int eflag,vflag; int nlocal,newton_pair,neighflag; double special_lj[4]; - int num_threads; + int num_threads,ntypes; typename AT::t_x_array_randomread x; typename AT::t_f_array f; -- GitLab From 86497949f20a2a6ae0609172e9aabf4e7221390d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 8 Jun 2017 13:40:20 -0600 Subject: [PATCH 245/337] Fixing CUDA runtime issues in fix_shardlow_kokkos --- src/KOKKOS/fix_shardlow_kokkos.cpp | 21 ++++++++++++++++----- src/KOKKOS/fix_shardlow_kokkos.h | 2 ++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index 52287d586c..b3d4e86244 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -444,9 +444,6 @@ void FixShardlowKokkos::ssa_update_dpde( rand_type rand_gen = rand_pool.get_state(id); #endif - const double boltz_inv = 1.0/force->boltz; - const double ftm2v = force->ftm2v; - const double dt = update->dt; int ct = count; int ii = start_ii; @@ -639,6 +636,16 @@ void FixShardlowKokkos::initial_integrate(int vflag) ssa_gitemLoc = np_ssa->ssa_gitemLoc; ssa_gitemLen = np_ssa->ssa_gitemLen; + np_ssa->k_ssa_itemLoc.template sync(); + np_ssa->k_ssa_itemLen.template sync(); + np_ssa->k_ssa_gitemLoc.template sync(); + np_ssa->k_ssa_gitemLen.template sync(); + + np_ssa->k_ssa_phaseLen.template sync(); + np_ssa->k_ssa_gphaseLen.template sync(); + auto h_ssa_phaseLen = np_ssa->k_ssa_phaseLen.h_view; + auto h_ssa_gphaseLen = np_ssa->k_ssa_gphaseLen.h_view; + int maxWorkItemCt = (int) ssa_itemLoc.dimension_1(); if (maxWorkItemCt < (int) ssa_gitemLoc.dimension_1()) { maxWorkItemCt = (int) ssa_gitemLoc.dimension_1(); @@ -670,9 +677,13 @@ void FixShardlowKokkos::initial_integrate(int vflag) deep_copy(d_hist, h_hist); #endif + boltz_inv = 1.0/force->boltz; + ftm2v = force->ftm2v; + dt = update->dt; + // process neighbors in the local AIR for (int workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { - int workItemCt = ssa_phaseLen[workPhase]; + int workItemCt = h_ssa_phaseLen[workPhase]; if(atom->ntypes > MAX_TYPES_STACKPARAMS) { Kokkos::parallel_for(workItemCt, LAMMPS_LAMBDA (const int workItem ) { @@ -692,7 +703,7 @@ void FixShardlowKokkos::initial_integrate(int vflag) //Loop over all 13 outward directions (7 stages) for (int workPhase = 0; workPhase < ssa_gphaseCt; ++workPhase) { // int airnum = workPhase + 1; - int workItemCt = ssa_gphaseLen[workPhase]; + int workItemCt = h_ssa_gphaseLen[workPhase]; // Communicate the updated velocities to all nodes comm->forward_comm_fix(this); diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index 4dc47709e1..df8849d80b 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -68,6 +68,8 @@ class FixShardlowKokkos : public FixShardlow { #endif protected: + double boltz_inv,ftm2v,dt; + // class PairDPDfdt *pairDPD; PairDPDfdtEnergyKokkos *k_pairDPDE; -- GitLab From c51cadcc6c38ff2c939fb0bed46dd73c09873c2d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 9 Jun 2017 09:31:37 -0600 Subject: [PATCH 246/337] Fixing CUDA runtime issues in fix_shardlow_kokkos --- src/KOKKOS/fix_shardlow_kokkos.cpp | 66 ++++++++++++++++-------------- src/KOKKOS/fix_shardlow_kokkos.h | 17 +++++++- 2 files changed, 51 insertions(+), 32 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index b3d4e86244..d2fb937a57 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -436,7 +436,7 @@ template KOKKOS_INLINE_FUNCTION void FixShardlowKokkos::ssa_update_dpde( int start_ii, int count, int id -) +) const { #ifdef DPD_USE_RAN_MARS class RanMars *pRNG = pp_random[id]; @@ -682,26 +682,18 @@ void FixShardlowKokkos::initial_integrate(int vflag) dt = update->dt; // process neighbors in the local AIR - for (int workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { + for (workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { int workItemCt = h_ssa_phaseLen[workPhase]; - if(atom->ntypes > MAX_TYPES_STACKPARAMS) { - Kokkos::parallel_for(workItemCt, LAMMPS_LAMBDA (const int workItem ) { - int ct = ssa_itemLen(workPhase, workItem); - int ii = ssa_itemLoc(workPhase, workItem); - ssa_update_dpde(ii, ct, workItem); - }); - } else { - Kokkos::parallel_for(workItemCt, LAMMPS_LAMBDA (const int workItem ) { - int ct = ssa_itemLen(workPhase, workItem); - int ii = ssa_itemLoc(workPhase, workItem); - ssa_update_dpde(ii, ct, workItem); - }); - } + + if(atom->ntypes > MAX_TYPES_STACKPARAMS) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); } //Loop over all 13 outward directions (7 stages) - for (int workPhase = 0; workPhase < ssa_gphaseCt; ++workPhase) { + for (workPhase = 0; workPhase < ssa_gphaseCt; ++workPhase) { // int airnum = workPhase + 1; int workItemCt = h_ssa_gphaseLen[workPhase]; @@ -713,27 +705,21 @@ void FixShardlowKokkos::initial_integrate(int vflag) // memset(&(atom->uCond[nlocal]), 0, sizeof(double)*nghost); // memset(&(atom->uMech[nlocal]), 0, sizeof(double)*nghost); + // must capture local variables, not class variables + auto l_uCond = uCond; + auto l_uMech = uMech; Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nlocal+nghost), LAMMPS_LAMBDA (const int i) { - uCond(i) = 0.0; - uMech(i) = 0.0; + l_uCond(i) = 0.0; + l_uMech(i) = 0.0; }); DeviceType::fence(); } // process neighbors in this AIR - if(atom->ntypes > MAX_TYPES_STACKPARAMS) { - Kokkos::parallel_for(workItemCt, LAMMPS_LAMBDA (const int workItem ) { - int ct = ssa_gitemLen(workPhase, workItem); - int ii = ssa_gitemLoc(workPhase, workItem); - ssa_update_dpde(ii, ct, workItem); - }); - } else { - Kokkos::parallel_for(workItemCt, LAMMPS_LAMBDA (const int workItem ) { - int ct = ssa_gitemLen(workPhase, workItem); - int ii = ssa_gitemLoc(workPhase, workItem); - ssa_update_dpde(ii, ct, workItem); - }); - } + if(atom->ntypes > MAX_TYPES_STACKPARAMS) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); // Communicate the ghost deltas to the atom owners comm->reverse_comm_fix(this); @@ -755,6 +741,24 @@ fprintf(stdout, "\n%6d %6d,%6d %6d: " copymode = 0; } +template +template +KOKKOS_INLINE_FUNCTION +void FixShardlowKokkos::operator()(TagFixShardlowSSAUpdateDPDE, const int &workItem) const { + const int ct = ssa_itemLen(workPhase, workItem); + const int ii = ssa_itemLoc(workPhase, workItem); + ssa_update_dpde(ii, ct, workItem); +} + +template +template +KOKKOS_INLINE_FUNCTION +void FixShardlowKokkos::operator()(TagFixShardlowSSAUpdateDPDEGhost, const int &workItem) const { + const int ct = ssa_gitemLen(workPhase, workItem); + const int ii = ssa_gitemLoc(workPhase, workItem); + ssa_update_dpde(ii, ct, workItem); +} + /* ---------------------------------------------------------------------- */ template diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index df8849d80b..91a2fdbc97 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -30,6 +30,12 @@ FixStyle(shardlow/kk/host,FixShardlowKokkos) namespace LAMMPS_NS { +template +struct TagFixShardlowSSAUpdateDPDE{}; + +template +struct TagFixShardlowSSAUpdateDPDEGhost{}; + template class FixShardlowKokkos : public FixShardlow { public: @@ -60,6 +66,14 @@ class FixShardlowKokkos : public FixShardlow { F_FLOAT cutinv,halfsigma,kappa,alpha; }; + template + KOKKOS_INLINE_FUNCTION + void operator()(TagFixShardlowSSAUpdateDPDE, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagFixShardlowSSAUpdateDPDEGhost, const int&) const; + #ifdef DEBUG_PAIR_CT typename AT::t_int_2d d_counters; typename HAT::t_int_2d h_counters; @@ -68,6 +82,7 @@ class FixShardlowKokkos : public FixShardlow { #endif protected: + int workPhase; double boltz_inv,ftm2v,dt; // class PairDPDfdt *pairDPD; @@ -127,7 +142,7 @@ class FixShardlowKokkos : public FixShardlow { // void ssa_update_dpd(int, int); // Constant Temperature template KOKKOS_INLINE_FUNCTION - void ssa_update_dpde(int, int, int); // Constant Energy + void ssa_update_dpde(int, int, int) const; // Constant Energy }; -- GitLab From 3c8e75ad590ae35be1002ce88281d88d8bbfc6f9 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 9 Jun 2017 10:57:35 -0600 Subject: [PATCH 247/337] Add missing sync/modify to fix_shardlow_kokkos --- src/KOKKOS/fix_shardlow_kokkos.cpp | 27 ++++++++++++++++++--------- src/KOKKOS/fix_shardlow_kokkos.h | 2 +- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp index d2fb937a57..0c7c51c821 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.cpp +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -73,11 +73,11 @@ FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **a FixShardlow(lmp, narg, arg), k_pairDPDE(NULL), ghostmax(0), nlocal(0) , nghost(0) { kokkosable = 1; -// atomKK = (AtomKokkos *) atom; -// execution_space = ExecutionSpaceFromDevice::space; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; -// datamask_read = X_MASK | V_MASK | F_MASK | MASK_MASK | Q_MASK | TYPE_MASK; -// datamask_modify = Q_MASK | X_MASK; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; if (narg != 3) error->all(FLERR,"Illegal fix shardlow command"); @@ -167,6 +167,7 @@ void FixShardlowKokkos::init() //FIXME either create cutsq and fill it in, or just point to pairDPD's... // memory->destroy(cutsq); //FIXME // memory->create_kokkos(k_cutsq,cutsq,ntypes+1,ntypes+1,"FixShardlowKokkos:cutsq"); + k_pairDPDE->k_cutsq.template sync(); d_cutsq = k_pairDPDE->k_cutsq.template view(); //FIXME const double boltz2 = 2.0*force->boltz; @@ -288,10 +289,6 @@ void FixShardlowKokkos::ssa_update_dpd( rand_type rand_gen = rand_pool.get_state(id); #endif - const double theta_ij_inv = 1.0/k_pairDPD->temperature; // independent of i,j - const double boltz_inv = 1.0/force->boltz; - const double ftm2v = force->ftm2v; - const double dt = update->dt; int ct = count; int ii = start_ii; @@ -677,20 +674,24 @@ void FixShardlowKokkos::initial_integrate(int vflag) deep_copy(d_hist, h_hist); #endif + //theta_ij_inv = 1.0/k_pairDPD->temperature; // independent of i,j boltz_inv = 1.0/force->boltz; ftm2v = force->ftm2v; dt = update->dt; + k_params.template sync(); + // process neighbors in the local AIR + atomKK->sync(execution_space,X_MASK | V_MASK | TYPE_MASK | RMASS_MASK | UCOND_MASK | UMECH_MASK | DPDTHETA_MASK); for (workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { int workItemCt = h_ssa_phaseLen[workPhase]; - if(atom->ntypes > MAX_TYPES_STACKPARAMS) Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); else Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); } + atomKK->modified(execution_space,V_MASK | UCOND_MASK | UMECH_MASK); //Loop over all 13 outward directions (7 stages) for (workPhase = 0; workPhase < ssa_gphaseCt; ++workPhase) { @@ -698,7 +699,9 @@ void FixShardlowKokkos::initial_integrate(int vflag) int workItemCt = h_ssa_gphaseLen[workPhase]; // Communicate the updated velocities to all nodes + atomKK->sync(Host,V_MASK); comm->forward_comm_fix(this); + atomKK->modified(Host,V_MASK); if(k_pairDPDE){ // Zero out the ghosts' uCond & uMech to be used as delta accumulators @@ -706,6 +709,7 @@ void FixShardlowKokkos::initial_integrate(int vflag) // memset(&(atom->uMech[nlocal]), 0, sizeof(double)*nghost); // must capture local variables, not class variables + atomKK->sync(execution_space,UCOND_MASK | UMECH_MASK); auto l_uCond = uCond; auto l_uMech = uMech; Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nlocal+nghost), LAMMPS_LAMBDA (const int i) { @@ -713,16 +717,21 @@ void FixShardlowKokkos::initial_integrate(int vflag) l_uMech(i) = 0.0; }); DeviceType::fence(); + atomKK->modified(execution_space,UCOND_MASK | UMECH_MASK); } // process neighbors in this AIR + atomKK->sync(execution_space,X_MASK | V_MASK | TYPE_MASK | RMASS_MASK | UCOND_MASK | UMECH_MASK | DPDTHETA_MASK); if(atom->ntypes > MAX_TYPES_STACKPARAMS) Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); else Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); + atomKK->modified(execution_space,V_MASK | UCOND_MASK | UMECH_MASK); // Communicate the ghost deltas to the atom owners + atomKK->sync(Host,V_MASK | UCOND_MASK | UMECH_MASK); comm->reverse_comm_fix(this); + atomKK->modified(Host,V_MASK | UCOND_MASK | UMECH_MASK); } //End Loop over all directions For airnum = Top, Top-Right, Right, Bottom-Right, Back diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h index 91a2fdbc97..3dbbaaa61c 100644 --- a/src/KOKKOS/fix_shardlow_kokkos.h +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -83,7 +83,7 @@ class FixShardlowKokkos : public FixShardlow { protected: int workPhase; - double boltz_inv,ftm2v,dt; + double theta_ij_inv,boltz_inv,ftm2v,dt; // class PairDPDfdt *pairDPD; PairDPDfdtEnergyKokkos *k_pairDPDE; -- GitLab From b96b6b9cd775b43007777ba2182949c331ca9fb2 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 19 Jun 2017 14:04:16 -0600 Subject: [PATCH 248/337] Fixing error checks --- src/KOKKOS/fix_rx_kokkos.cpp | 2 +- src/USER-DPD/fix_shardlow.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index ac81e5c2a7..6fbdfad289 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -116,7 +116,7 @@ void FixRxKokkos::init() bool eos_flag = false; for (int i = 0; i < modify->nfix; i++) - if (strcmp(modify->fix[i]->style,"eos/table/rx") == 0) eos_flag = true; + if (strncmp(modify->fix[i]->style,"eos/table/rx",3) == 0) eos_flag = true; if(!eos_flag) error->all(FLERR,"fix rx requires fix eos/table/rx to be specified"); if (update_kinetics_data) diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index a1059e2fb0..f3057a6563 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -157,7 +157,7 @@ void FixShardlow::setup(int vflag) error->all(FLERR,"Cannot use constant temperature integration routines with DPD."); for (int i = 0; i < modify->nfix; i++){ - if (strcmp(modify->fix[i]->style,"shardlow") == 0) fixShardlow = true; + if (strncmp(modify->fix[i]->style,"shardlow",3) == 0) fixShardlow = true; if (strncmp(modify->fix[i]->style,"nve",3) == 0 || (strncmp(modify->fix[i]->style,"nph",3) == 0)){ if(fixShardlow) break; else error->all(FLERR,"The deterministic integrator must follow fix shardlow in the input file."); -- GitLab From 67a0183b333225a89902aba88c4bdc69160709d6 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 19 Jun 2017 15:23:33 -0600 Subject: [PATCH 249/337] Removing atom2bin change since ssa neighlists aren't be used for occasional lists --- src/USER-DPD/nbin_ssa.cpp | 3 --- src/USER-DPD/npair_half_bin_newton_ssa.cpp | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/USER-DPD/nbin_ssa.cpp b/src/USER-DPD/nbin_ssa.cpp index 5dacf52ee1..4c57a8e70f 100644 --- a/src/USER-DPD/nbin_ssa.cpp +++ b/src/USER-DPD/nbin_ssa.cpp @@ -76,7 +76,6 @@ void NBinSSA::bin_atoms() int nowned = atom->nlocal; // NOTE: nlocal was set to atom->nfirst above for (i = nall-1; i >= nowned; i--) { ibin = coord2ssaAIR(x[i]); - atom2bin[i] = ibin; if (ibin < 1) continue; // skip ghost atoms not in AIR if (mask[i] & bitmask) { bins[i] = gairhead_ssa[ibin]; @@ -86,7 +85,6 @@ void NBinSSA::bin_atoms() } else { for (i = nall-1; i >= nlocal; i--) { ibin = coord2ssaAIR(x[i]); - atom2bin[i] = ibin; if (ibin < 1) continue; // skip ghost atoms not in AIR bins[i] = gairhead_ssa[ibin]; gairhead_ssa[ibin] = i; @@ -94,7 +92,6 @@ void NBinSSA::bin_atoms() } for (i = nlocal-1; i >= 0; i--) { ibin = coord2bin(x[i][0], x[i][1], x[i][2], xbin, ybin, zbin); - atom2bin[i] = ibin; // Find the bounding box of the local atoms in the bins if (xbin < lbinxlo) lbinxlo = xbin; if (xbin >= lbinxhi) lbinxhi = xbin + 1; diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index 221aa5b454..a6479d4c4f 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -251,7 +251,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) ytmp = x[i][1]; ztmp = x[i][2]; - ibin = atom2bin[i]; + ibin = coord2bin(x[i],xbin,ybin,zbin); // loop over AIR ghost atoms in all bins in "full" stencil // Note: the non-AIR ghost atoms have already been filtered out -- GitLab From 3c88b2a9805b0908351759d76eb6421226e0c1d0 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 18 Jul 2017 09:53:26 -0600 Subject: [PATCH 250/337] Fixing execution space issues in KOKKOS package --- src/KOKKOS/atom_vec_angle_kokkos.h | 2 + src/KOKKOS/atom_vec_atomic_kokkos.h | 2 + src/KOKKOS/atom_vec_bond_kokkos.h | 2 + src/KOKKOS/atom_vec_charge_kokkos.h | 2 + src/KOKKOS/atom_vec_full_kokkos.h | 2 + src/KOKKOS/atom_vec_molecular_kokkos.h | 2 + src/KOKKOS/fix_deform_kokkos.h | 2 + src/KOKKOS/fix_reaxc_bonds_kokkos.cpp | 2 +- src/KOKKOS/fix_reaxc_bonds_kokkos.h | 2 + src/KOKKOS/fix_reaxc_species_kokkos.cpp | 2 +- src/KOKKOS/fix_reaxc_species_kokkos.h | 2 + src/KOKKOS/out.txt | 321 ++++++++++++++++++++++++ src/KOKKOS/pair_eam_kokkos.cpp | 4 +- src/KOKKOS/pair_kokkos.h | 6 +- src/KOKKOS/pair_reaxc_kokkos.cpp | 40 +-- src/KOKKOS/pair_reaxc_kokkos.h | 19 +- src/KOKKOS/verlet_kokkos.h | 2 + 17 files changed, 379 insertions(+), 35 deletions(-) create mode 100644 src/KOKKOS/out.txt diff --git a/src/KOKKOS/atom_vec_angle_kokkos.h b/src/KOKKOS/atom_vec_angle_kokkos.h index 0a477b0386..abdd48fce5 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.h +++ b/src/KOKKOS/atom_vec_angle_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(angle/kk,AtomVecAngleKokkos) +AtomStyle(angle/kk/device,AtomVecAngleKokkos) +AtomStyle(angle/kk/host,AtomVecAngleKokkos) #else diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.h b/src/KOKKOS/atom_vec_atomic_kokkos.h index 0c3e24f9d9..5e9a72c2e3 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.h +++ b/src/KOKKOS/atom_vec_atomic_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(atomic/kk,AtomVecAtomicKokkos) +AtomStyle(atomic/kk/device,AtomVecAtomicKokkos) +AtomStyle(atomic/kk/host,AtomVecAtomicKokkos) #else diff --git a/src/KOKKOS/atom_vec_bond_kokkos.h b/src/KOKKOS/atom_vec_bond_kokkos.h index e64017c99b..3dcc99fa78 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.h +++ b/src/KOKKOS/atom_vec_bond_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(bond/kk,AtomVecBondKokkos) +AtomStyle(bond/kk/device,AtomVecBondKokkos) +AtomStyle(bond/kk/host,AtomVecBondKokkos) #else diff --git a/src/KOKKOS/atom_vec_charge_kokkos.h b/src/KOKKOS/atom_vec_charge_kokkos.h index 38e32458c6..f9b385e7ed 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.h +++ b/src/KOKKOS/atom_vec_charge_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(charge/kk,AtomVecChargeKokkos) +AtomStyle(charge/kk/device,AtomVecChargeKokkos) +AtomStyle(charge/kk/host,AtomVecChargeKokkos) #else diff --git a/src/KOKKOS/atom_vec_full_kokkos.h b/src/KOKKOS/atom_vec_full_kokkos.h index 841707b338..760df087e1 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.h +++ b/src/KOKKOS/atom_vec_full_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(full/kk,AtomVecFullKokkos) +AtomStyle(full/kk/device,AtomVecFullKokkos) +AtomStyle(full/kk/host,AtomVecFullKokkos) #else diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.h b/src/KOKKOS/atom_vec_molecular_kokkos.h index 4ec26621cc..06444510e0 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.h +++ b/src/KOKKOS/atom_vec_molecular_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(molecular/kk,AtomVecMolecularKokkos) +AtomStyle(molecular/kk/device,AtomVecMolecularKokkos) +AtomStyle(molecular/kk/host,AtomVecMolecularKokkos) #else diff --git a/src/KOKKOS/fix_deform_kokkos.h b/src/KOKKOS/fix_deform_kokkos.h index 8fa12a2e37..69f65fbcf4 100644 --- a/src/KOKKOS/fix_deform_kokkos.h +++ b/src/KOKKOS/fix_deform_kokkos.h @@ -14,6 +14,8 @@ #ifdef FIX_CLASS FixStyle(deform/kk,FixDeformKokkos) +FixStyle(deform/kk/device,FixDeformKokkos) +FixStyle(deform/kk/host,FixDeformKokkos) #else diff --git a/src/KOKKOS/fix_reaxc_bonds_kokkos.cpp b/src/KOKKOS/fix_reaxc_bonds_kokkos.cpp index e4fb9385a5..0d74a49ed3 100644 --- a/src/KOKKOS/fix_reaxc_bonds_kokkos.cpp +++ b/src/KOKKOS/fix_reaxc_bonds_kokkos.cpp @@ -64,7 +64,7 @@ FixReaxCBondsKokkos::~FixReaxCBondsKokkos() void FixReaxCBondsKokkos::init() { - Pair *pair_kk = force->pair_match("reax/c/kk",1); + Pair *pair_kk = force->pair_match("reax/c/kk",0); if (pair_kk == NULL) error->all(FLERR,"Cannot use fix reax/c/bonds without " "pair_style reax/c/kk"); diff --git a/src/KOKKOS/fix_reaxc_bonds_kokkos.h b/src/KOKKOS/fix_reaxc_bonds_kokkos.h index e85a7988f3..55adb6f8d9 100644 --- a/src/KOKKOS/fix_reaxc_bonds_kokkos.h +++ b/src/KOKKOS/fix_reaxc_bonds_kokkos.h @@ -14,6 +14,8 @@ #ifdef FIX_CLASS FixStyle(reax/c/bonds/kk,FixReaxCBondsKokkos) +FixStyle(reax/c/bonds/kk/device,FixReaxCBondsKokkos) +FixStyle(reax/c/bonds/kk/host,FixReaxCBondsKokkos) #else diff --git a/src/KOKKOS/fix_reaxc_species_kokkos.cpp b/src/KOKKOS/fix_reaxc_species_kokkos.cpp index 8b778ecf65..f2719f9f0e 100644 --- a/src/KOKKOS/fix_reaxc_species_kokkos.cpp +++ b/src/KOKKOS/fix_reaxc_species_kokkos.cpp @@ -66,7 +66,7 @@ FixReaxCSpeciesKokkos::~FixReaxCSpeciesKokkos() void FixReaxCSpeciesKokkos::init() { - Pair* pair_kk = force->pair_match("reax/c/kk",1); + Pair* pair_kk = force->pair_match("reax/c/kk",0); if (pair_kk == NULL) error->all(FLERR,"Cannot use fix reax/c/species/kk without " "pair_style reax/c/kk"); diff --git a/src/KOKKOS/fix_reaxc_species_kokkos.h b/src/KOKKOS/fix_reaxc_species_kokkos.h index 64de060006..7c163b23b5 100644 --- a/src/KOKKOS/fix_reaxc_species_kokkos.h +++ b/src/KOKKOS/fix_reaxc_species_kokkos.h @@ -14,6 +14,8 @@ #ifdef FIX_CLASS FixStyle(reax/c/species/kk,FixReaxCSpeciesKokkos) +FixStyle(reax/c/species/kk/device,FixReaxCSpeciesKokkos) +FixStyle(reax/c/species/kk/host,FixReaxCSpeciesKokkos) #else diff --git a/src/KOKKOS/out.txt b/src/KOKKOS/out.txt new file mode 100644 index 0000000000..00908bf69a --- /dev/null +++ b/src/KOKKOS/out.txt @@ -0,0 +1,321 @@ +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); +atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(nrecv/11,f); +atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(nrecv/11,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); +atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(nrecv/12,f); +atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(nrecv/12,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); +atom_vec_full_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(nsend,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); +atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); +comm_kokkos.cpp: Kokkos::parallel_for(nlocal,f); +comm_kokkos.cpp: Kokkos::parallel_for(config,f); +comm_kokkos.cpp: Kokkos::parallel_for(config,f); +domain_kokkos.cpp: Kokkos::parallel_reduce(nlocal,f,result); +domain_kokkos.cpp: Kokkos::parallel_for(nlocal,f); +domain_kokkos.cpp: Kokkos::parallel_for(nlocal,f); +domain_kokkos.cpp: Kokkos::parallel_for(nlocal,f); +domain_kokkos.cpp: Kokkos::parallel_for(nlocal,f); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,zero_functor); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,scalar_functor,energy_onestep); +fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,tally_functor,energy_onestep); +fix_momentum_kokkos.cpp: Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { +fix_momentum_kokkos.cpp: Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { +fix_momentum_kokkos.cpp: Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { +fix_momentum_kokkos.cpp: Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { +fix_momentum_kokkos.cpp: Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { +fix_nve_kokkos.cpp: Kokkos::parallel_for(nlocal,functor); +fix_nve_kokkos.cpp: Kokkos::parallel_for(nlocal,functor); +fix_nve_kokkos.cpp: Kokkos::parallel_for(nlocal,functor); +fix_nve_kokkos.cpp: Kokkos::parallel_for(nlocal,functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_scan(inum,computeH_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,matvec_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,neigh_functor,m_cap); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(ignum,zero_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse12_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse13_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse13_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,norm1_functor,my_norm); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,dot1_functor,my_dot); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse22_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse23_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse23_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,dot2_functor,my_dot); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,precon1_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,precon_functor,my_dot); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,vecsum2_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse32_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse33_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse33_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,norm2_functor,my_norm); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,dot1_functor,my_dot); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse22_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse23_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse23_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,dot2_functor,my_dot); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,precon2_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,precon_functor,my_dot); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,vecsum2_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,vecacc1_functor,sum); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,vecacc2_functor,sum); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,calculateQ_functor); +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const int &jj, F_FLOAT &doi) { +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const int &jj, F_FLOAT &doi) { +fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const int &jj, F_FLOAT &doi) { +kokkos_type.h: Kokkos::parallel_for(view.span()*sizeof(typename ViewType::value_type)/4, f); +kokkos_type.h: Kokkos::parallel_for(view.capacity()*sizeof(typename ViewType::value_type)/4, f); +nbin_kokkos.cpp: Kokkos::parallel_for(mbins, f_zero); +nbin_kokkos.cpp: Kokkos::parallel_for(atom->nlocal+atom->nghost, f); +npair_kokkos.cpp: Kokkos::parallel_for(nall, f); +npair_kokkos.cpp: Kokkos::parallel_for(config, f); +npair_kokkos.cpp: Kokkos::parallel_for(nall, f); +npair_kokkos.cpp: Kokkos::parallel_for(config, f); +npair_kokkos.cpp: Kokkos::parallel_for(nall, f); +pair_eam_kokkos.cpp: Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); +pair_eam_kokkos.cpp: Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); +pair_kokkos.h: if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(list->inum,ff,ev); +pair_kokkos.h: else Kokkos::parallel_for(list->inum,ff); +pair_kokkos.h: if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(list->inum,ff,ev); +pair_kokkos.h: else Kokkos::parallel_for(list->inum,ff); +pair_reaxc_kokkos.cpp: Kokkos::parallel_reduce(inum,find_bond_functor,numbonds); +pair_reaxc_kokkos.cpp: Kokkos::parallel_scan(nlocal,pack_bond_buffer_functor); +pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); +pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,ff); +pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); +pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,ff); +pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); +pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,f); +pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); +pair_table_kokkos.cpp: else Kokkos::parallel_for(nlocal,f); +pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); +pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,f); +pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); +pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,f); +pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); +pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,f); +pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); +pair_table_kokkos.cpp: else Kokkos::parallel_for(nlocal,f); +pppm_kokkos.cpp: Kokkos::parallel_for(config,*this); +verlet_kokkos.cpp: Kokkos::parallel_for(atomKK->k_f.dimension_0(), diff --git a/src/KOKKOS/pair_eam_kokkos.cpp b/src/KOKKOS/pair_eam_kokkos.cpp index e848669947..6b2588475f 100644 --- a/src/KOKKOS/pair_eam_kokkos.cpp +++ b/src/KOKKOS/pair_eam_kokkos.cpp @@ -405,7 +405,7 @@ int PairEAMKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d d_sendlist = k_sendlist.view(); iswap = iswap_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; } @@ -423,7 +423,7 @@ void PairEAMKokkos::unpack_forward_comm_kokkos(int n, int first_in, { first = first_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); } template diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index b0614a934b..a5a45dd2ec 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -540,11 +540,11 @@ void pair_virial_fdotr_compute(PairStyle* fpair) { EV_FLOAT virial; if (fpair->neighbor->includegroup == 0) { int nall = fpair->atom->nlocal + fpair->atom->nghost; - Kokkos::parallel_reduce(nall,PairVirialFDotRCompute(fpair->x,fpair->f,0),virial); + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nall),PairVirialFDotRCompute(fpair->x,fpair->f,0),virial); } else { - Kokkos::parallel_reduce(fpair->atom->nfirst,PairVirialFDotRCompute(fpair->x,fpair->f,0),virial); + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,fpair->atom->nfirst),PairVirialFDotRCompute(fpair->x,fpair->f,0),virial); EV_FLOAT virial_ghost; - Kokkos::parallel_reduce(fpair->atom->nghost,PairVirialFDotRCompute(fpair->x,fpair->f,fpair->atom->nlocal),virial_ghost); + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,fpair->atom->nghost),PairVirialFDotRCompute(fpair->x,fpair->f,fpair->atom->nlocal),virial_ghost); virial+=virial_ghost; } fpair->vflag_fdotr = 0; diff --git a/src/KOKKOS/pair_reaxc_kokkos.cpp b/src/KOKKOS/pair_reaxc_kokkos.cpp index 6be09548da..43559bde07 100644 --- a/src/KOKKOS/pair_reaxc_kokkos.cpp +++ b/src/KOKKOS/pair_reaxc_kokkos.cpp @@ -99,26 +99,26 @@ void PairReaxCKokkos::allocate() k_params_sing = Kokkos::DualView ("PairReaxC::params_sing",n+1); - paramssing = k_params_sing.d_view; + paramssing = k_params_sing.template view(); k_params_twbp = Kokkos::DualView ("PairReaxC::params_twbp",n+1,n+1); - paramstwbp = k_params_twbp.d_view; + paramstwbp = k_params_twbp.template view(); k_params_thbp = Kokkos::DualView ("PairReaxC::params_thbp",n+1,n+1,n+1); - paramsthbp = k_params_thbp.d_view; + paramsthbp = k_params_thbp.template view(); k_params_fbp = Kokkos::DualView ("PairReaxC::params_fbp",n+1,n+1,n+1,n+1); - paramsfbp = k_params_fbp.d_view; + paramsfbp = k_params_fbp.template view(); k_params_hbp = Kokkos::DualView ("PairReaxC::params_hbp",n+1,n+1,n+1); - paramshbp = k_params_hbp.d_view; + paramshbp = k_params_hbp.template view(); k_tap = DAT::tdual_ffloat_1d("pair:tap",8); - d_tap = k_tap.d_view; + d_tap = k_tap.template view(); h_tap = k_tap.h_view; } @@ -367,7 +367,7 @@ void PairReaxCKokkos::init_md() Init_Lookup_Tables(); k_LR = tdual_LR_lookup_table_kk_2d("lookup:LR",ntypes+1,ntypes+1); - d_LR = k_LR.d_view; + d_LR = k_LR.template view(); for (int i = 1; i <= ntypes; ++i) { for (int j = i; j <= ntypes; ++j) { @@ -382,19 +382,19 @@ void PairReaxCKokkos::init_md() k_LR.h_view(i,j).m = LR[i][j].m; k_LR.h_view(i,j).c = LR[i][j].c; - tdual_LR_data_1d k_y = tdual_LR_data_1d("lookup:LR[i,j].y",n); - tdual_cubic_spline_coef_1d k_H = tdual_cubic_spline_coef_1d("lookup:LR[i,j].H",n); - tdual_cubic_spline_coef_1d k_vdW = tdual_cubic_spline_coef_1d("lookup:LR[i,j].vdW",n); - tdual_cubic_spline_coef_1d k_CEvd = tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEvd",n); - tdual_cubic_spline_coef_1d k_ele = tdual_cubic_spline_coef_1d("lookup:LR[i,j].ele",n); - tdual_cubic_spline_coef_1d k_CEclmb = tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEclmb",n); + typename LR_lookup_table_kk::tdual_LR_data_1d k_y = typename LR_lookup_table_kk::tdual_LR_data_1d("lookup:LR[i,j].y",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_H = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].H",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_vdW = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].vdW",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_CEvd = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEvd",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_ele = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].ele",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_CEclmb = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEclmb",n); - k_LR.h_view(i,j).d_y = k_y.d_view; - k_LR.h_view(i,j).d_H = k_H.d_view; - k_LR.h_view(i,j).d_vdW = k_vdW.d_view; - k_LR.h_view(i,j).d_CEvd = k_CEvd.d_view; - k_LR.h_view(i,j).d_ele = k_ele.d_view; - k_LR.h_view(i,j).d_CEclmb = k_CEclmb.d_view; + k_LR.h_view(i,j).d_y = k_y.template view(); + k_LR.h_view(i,j).d_H = k_H.template view(); + k_LR.h_view(i,j).d_vdW = k_vdW.template view(); + k_LR.h_view(i,j).d_CEvd = k_CEvd.template view(); + k_LR.h_view(i,j).d_ele = k_ele.template view(); + k_LR.h_view(i,j).d_CEclmb = k_CEclmb.template view(); for (int k = 0; k < n; k++) { k_y.h_view(k) = LR[i][j].y[k]; @@ -1213,7 +1213,7 @@ void PairReaxCKokkos::operator()(PairReaxComputeTabulatedLJCoulomb t = d_LR(tmin,tmax); /* Cubic Spline Interpolation */ diff --git a/src/KOKKOS/pair_reaxc_kokkos.h b/src/KOKKOS/pair_reaxc_kokkos.h index 59c4d196d5..95fd7ced38 100644 --- a/src/KOKKOS/pair_reaxc_kokkos.h +++ b/src/KOKKOS/pair_reaxc_kokkos.h @@ -39,14 +39,15 @@ PairStyle(reax/c/kk/host,PairReaxCKokkos) namespace LAMMPS_NS { -typedef Kokkos::DualView tdual_LR_data_1d; -typedef typename tdual_LR_data_1d::t_dev t_LR_data_1d; - -typedef Kokkos::DualView tdual_cubic_spline_coef_1d; -typedef typename tdual_cubic_spline_coef_1d::t_dev t_cubic_spline_coef_1d; - +template struct LR_lookup_table_kk { + typedef Kokkos::DualView tdual_LR_data_1d; + typedef typename tdual_LR_data_1d::t_dev t_LR_data_1d; + + typedef Kokkos::DualView tdual_cubic_spline_coef_1d; + typedef typename tdual_cubic_spline_coef_1d::t_dev t_cubic_spline_coef_1d; + double xmin, xmax; int n; double dx, inv_dx; @@ -397,7 +398,7 @@ class PairReaxCKokkos : public PairReaxC { HAT::t_virial_array h_vatom; DAT::tdual_float_1d k_tap; - DAT::t_float_1d d_tap; + typename AT::t_float_1d d_tap; HAT::t_float_1d h_tap; typename AT::t_float_1d d_bo_rij, d_hb_rsq, d_Deltap, d_Deltap_boc, d_total_bo; @@ -438,7 +439,9 @@ class PairReaxCKokkos : public PairReaxC { int bocnt,hbcnt; - typedef Kokkos::DualView tdual_LR_lookup_table_kk_2d; + typedef LR_lookup_table_kk LR_lookup_table_kk_DT; + + typedef Kokkos::DualView tdual_LR_lookup_table_kk_2d; typedef typename tdual_LR_lookup_table_kk_2d::t_dev t_LR_lookup_table_kk_2d; tdual_LR_lookup_table_kk_2d k_LR; diff --git a/src/KOKKOS/verlet_kokkos.h b/src/KOKKOS/verlet_kokkos.h index 6455239204..7b140b6f81 100644 --- a/src/KOKKOS/verlet_kokkos.h +++ b/src/KOKKOS/verlet_kokkos.h @@ -14,6 +14,8 @@ #ifdef INTEGRATE_CLASS IntegrateStyle(verlet/kk,VerletKokkos) +IntegrateStyle(verlet/kk/device,VerletKokkos) +IntegrateStyle(verlet/kk/host,VerletKokkos) #else -- GitLab From 9df61b642e564473b090f89bec12b0bfc2aa300c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 18 Jul 2017 10:44:45 -0600 Subject: [PATCH 251/337] Removing stray file --- src/KOKKOS/out.txt | 321 --------------------------------------------- 1 file changed, 321 deletions(-) delete mode 100644 src/KOKKOS/out.txt diff --git a/src/KOKKOS/out.txt b/src/KOKKOS/out.txt deleted file mode 100644 index 00908bf69a..0000000000 --- a/src/KOKKOS/out.txt +++ /dev/null @@ -1,321 +0,0 @@ -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); -atom_vec_angle_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(nrecv/11,f); -atom_vec_atomic_kokkos.cpp: Kokkos::parallel_for(nrecv/11,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); -atom_vec_bond_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(nrecv/12,f); -atom_vec_charge_kokkos.cpp: Kokkos::parallel_for(nrecv/12,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); -atom_vec_full_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(n,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(nsend,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); -atom_vec_molecular_kokkos.cpp: Kokkos::parallel_for(nrecv/elements,f); -comm_kokkos.cpp: Kokkos::parallel_for(nlocal,f); -comm_kokkos.cpp: Kokkos::parallel_for(config,f); -comm_kokkos.cpp: Kokkos::parallel_for(config,f); -domain_kokkos.cpp: Kokkos::parallel_reduce(nlocal,f,result); -domain_kokkos.cpp: Kokkos::parallel_for(nlocal,f); -domain_kokkos.cpp: Kokkos::parallel_for(nlocal,f); -domain_kokkos.cpp: Kokkos::parallel_for(nlocal,f); -domain_kokkos.cpp: Kokkos::parallel_for(nlocal,f); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,post_functor,s_fsum); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,post_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_for(nlocal,zero_functor); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,scalar_functor,energy_onestep); -fix_langevin_kokkos.cpp: Kokkos::parallel_reduce(nlocal,tally_functor,energy_onestep); -fix_momentum_kokkos.cpp: Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { -fix_momentum_kokkos.cpp: Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { -fix_momentum_kokkos.cpp: Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { -fix_momentum_kokkos.cpp: Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { -fix_momentum_kokkos.cpp: Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { -fix_nve_kokkos.cpp: Kokkos::parallel_for(nlocal,functor); -fix_nve_kokkos.cpp: Kokkos::parallel_for(nlocal,functor); -fix_nve_kokkos.cpp: Kokkos::parallel_for(nlocal,functor); -fix_nve_kokkos.cpp: Kokkos::parallel_for(nlocal,functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_scan(inum,computeH_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,matvec_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,neigh_functor,m_cap); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(ignum,zero_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse12_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse13_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse13_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,norm1_functor,my_norm); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,dot1_functor,my_dot); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse22_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse23_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse23_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,dot2_functor,my_dot); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,precon1_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,precon_functor,my_dot); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,vecsum2_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse32_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse33_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse33_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,norm2_functor,my_norm); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,dot1_functor,my_dot); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse22_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse23_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,sparse23_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,dot2_functor,my_dot); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,precon2_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,precon_functor,my_dot); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,vecsum2_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,vecacc1_functor,sum); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(inum,vecacc2_functor,sum); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_for(inum,calculateQ_functor); -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const int &jj, F_FLOAT &doi) { -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const int &jj, F_FLOAT &doi) { -fix_qeq_reax_kokkos.cpp: Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const int &jj, F_FLOAT &doi) { -kokkos_type.h: Kokkos::parallel_for(view.span()*sizeof(typename ViewType::value_type)/4, f); -kokkos_type.h: Kokkos::parallel_for(view.capacity()*sizeof(typename ViewType::value_type)/4, f); -nbin_kokkos.cpp: Kokkos::parallel_for(mbins, f_zero); -nbin_kokkos.cpp: Kokkos::parallel_for(atom->nlocal+atom->nghost, f); -npair_kokkos.cpp: Kokkos::parallel_for(nall, f); -npair_kokkos.cpp: Kokkos::parallel_for(config, f); -npair_kokkos.cpp: Kokkos::parallel_for(nall, f); -npair_kokkos.cpp: Kokkos::parallel_for(config, f); -npair_kokkos.cpp: Kokkos::parallel_for(nall, f); -pair_eam_kokkos.cpp: Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); -pair_eam_kokkos.cpp: Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); -pair_kokkos.h: if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(list->inum,ff,ev); -pair_kokkos.h: else Kokkos::parallel_for(list->inum,ff); -pair_kokkos.h: if (fpair->eflag || fpair->vflag) Kokkos::parallel_reduce(list->inum,ff,ev); -pair_kokkos.h: else Kokkos::parallel_for(list->inum,ff); -pair_reaxc_kokkos.cpp: Kokkos::parallel_reduce(inum,find_bond_functor,numbonds); -pair_reaxc_kokkos.cpp: Kokkos::parallel_scan(nlocal,pack_bond_buffer_functor); -pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); -pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,ff); -pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,ff,ev); -pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,ff); -pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); -pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,f); -pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); -pair_table_kokkos.cpp: else Kokkos::parallel_for(nlocal,f); -pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); -pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,f); -pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); -pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,f); -pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(list->inum,f,ev); -pair_table_kokkos.cpp: else Kokkos::parallel_for(list->inum,f); -pair_table_kokkos.cpp: if (eflag || vflag) Kokkos::parallel_reduce(nlocal,f,ev); -pair_table_kokkos.cpp: else Kokkos::parallel_for(nlocal,f); -pppm_kokkos.cpp: Kokkos::parallel_for(config,*this); -verlet_kokkos.cpp: Kokkos::parallel_for(atomKK->k_f.dimension_0(), -- GitLab From 1b34bec81a2cca135b9b483f35800ce72e5f5e97 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 18 Jul 2017 10:59:34 -0600 Subject: [PATCH 252/337] Prefer DeviceType specification over RangePolicy --- src/KOKKOS/pair_kokkos.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index a5a45dd2ec..f0e357270c 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -513,6 +513,7 @@ EV_FLOAT pair_compute (PairStyle* fpair, NeighListKokkos struct PairVirialFDotRCompute { + typedef DeviceType device_type; typedef ArrayTypes AT; typedef EV_FLOAT value_type; typename AT::t_x_array_const_um x; @@ -540,11 +541,11 @@ void pair_virial_fdotr_compute(PairStyle* fpair) { EV_FLOAT virial; if (fpair->neighbor->includegroup == 0) { int nall = fpair->atom->nlocal + fpair->atom->nghost; - Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nall),PairVirialFDotRCompute(fpair->x,fpair->f,0),virial); + Kokkos::parallel_reduce(nall,PairVirialFDotRCompute(fpair->x,fpair->f,0),virial); } else { - Kokkos::parallel_reduce(Kokkos::RangePolicy(0,fpair->atom->nfirst),PairVirialFDotRCompute(fpair->x,fpair->f,0),virial); + Kokkos::parallel_reduce(fpair->atom->nfirst,PairVirialFDotRCompute(fpair->x,fpair->f,0),virial); EV_FLOAT virial_ghost; - Kokkos::parallel_reduce(Kokkos::RangePolicy(0,fpair->atom->nghost),PairVirialFDotRCompute(fpair->x,fpair->f,fpair->atom->nlocal),virial_ghost); + Kokkos::parallel_reduce(fpair->atom->nghost,PairVirialFDotRCompute(fpair->x,fpair->f,fpair->atom->nlocal),virial_ghost); virial+=virial_ghost; } fpair->vflag_fdotr = 0; -- GitLab From 8ed881947ff91ef1e87f0fa8a7abb04f50a1dc78 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 21 Jul 2017 14:28:13 -0600 Subject: [PATCH 253/337] Fix execution space in manybody potentials --- src/KOKKOS/pair_sw_kokkos.cpp | 6 +++--- src/KOKKOS/pair_sw_kokkos.h | 12 ++++++------ src/KOKKOS/pair_tersoff_kokkos.cpp | 2 +- src/KOKKOS/pair_vashishta_kokkos.cpp | 6 +++--- src/KOKKOS/pair_vashishta_kokkos.h | 8 ++++---- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/KOKKOS/pair_sw_kokkos.cpp b/src/KOKKOS/pair_sw_kokkos.cpp index e5c947cc8e..3440f7c639 100644 --- a/src/KOKKOS/pair_sw_kokkos.cpp +++ b/src/KOKKOS/pair_sw_kokkos.cpp @@ -572,7 +572,7 @@ void PairSWKokkos::coeff(int narg, char **arg) k_map.template modify(); k_map.template sync(); - d_map = k_map.d_view; + d_map = k_map.template view(); } /* ---------------------------------------------------------------------- @@ -637,8 +637,8 @@ void PairSWKokkos::setup_params() k_params.template modify(); k_params.template sync(); - d_elem2param = k_elem2param.d_view; - d_params = k_params.d_view; + d_elem2param = k_elem2param.template view(); + d_params = k_params.template view(); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_sw_kokkos.h b/src/KOKKOS/pair_sw_kokkos.h index b94e39335f..3152fb6e94 100644 --- a/src/KOKKOS/pair_sw_kokkos.h +++ b/src/KOKKOS/pair_sw_kokkos.h @@ -103,7 +103,7 @@ class PairSWKokkos : public PairSW { typedef typename tdual_int_3d::t_host t_host_int_3d; t_int_3d_randomread d_elem2param; - DAT::t_int_1d_randomread d_map; + typename AT::t_int_1d_randomread d_map; typedef Kokkos::DualView tdual_param_1d; typedef typename tdual_param_1d::t_dev t_param_1d; @@ -125,12 +125,12 @@ class PairSWKokkos : public PairSW { DAT::tdual_efloat_1d k_eatom; DAT::tdual_virial_array k_vatom; - typename ArrayTypes::t_efloat_1d d_eatom; - typename ArrayTypes::t_virial_array d_vatom; + typename AT::t_efloat_1d d_eatom; + typename AT::t_virial_array d_vatom; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typename AT::t_neighbors_2d d_neighbors; typename AT::t_int_1d_randomread d_ilist; diff --git a/src/KOKKOS/pair_tersoff_kokkos.cpp b/src/KOKKOS/pair_tersoff_kokkos.cpp index 833c815ad9..3a5c2227ef 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_kokkos.cpp @@ -76,7 +76,7 @@ void PairTersoffKokkos::allocate() k_params = Kokkos::DualView ("PairTersoff::paramskk",n+1,n+1,n+1); - paramskk = k_params.d_view; + paramskk = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_vashishta_kokkos.cpp b/src/KOKKOS/pair_vashishta_kokkos.cpp index abdcfac89e..fe2394ae84 100644 --- a/src/KOKKOS/pair_vashishta_kokkos.cpp +++ b/src/KOKKOS/pair_vashishta_kokkos.cpp @@ -573,7 +573,7 @@ void PairVashishtaKokkos::coeff(int narg, char **arg) k_map.template modify(); k_map.template sync(); - d_map = k_map.d_view; + d_map = k_map.template view(); } /* ---------------------------------------------------------------------- @@ -638,8 +638,8 @@ void PairVashishtaKokkos::setup_params() k_params.template modify(); k_params.template sync(); - d_elem2param = k_elem2param.d_view; - d_params = k_params.d_view; + d_elem2param = k_elem2param.template view(); + d_params = k_params.template view(); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_vashishta_kokkos.h b/src/KOKKOS/pair_vashishta_kokkos.h index 174db2cb94..c5595bbd8a 100644 --- a/src/KOKKOS/pair_vashishta_kokkos.h +++ b/src/KOKKOS/pair_vashishta_kokkos.h @@ -103,7 +103,7 @@ class PairVashishtaKokkos : public PairVashishta { typedef typename tdual_int_3d::t_host t_host_int_3d; t_int_3d_randomread d_elem2param; - DAT::t_int_1d_randomread d_map; + typename AT::t_int_1d_randomread d_map; typedef Kokkos::DualView tdual_param_1d; typedef typename tdual_param_1d::t_dev t_param_1d; @@ -128,9 +128,9 @@ class PairVashishtaKokkos : public PairVashishta { typename ArrayTypes::t_efloat_1d d_eatom; typename ArrayTypes::t_virial_array d_vatom; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typename AT::t_neighbors_2d d_neighbors; typename AT::t_int_1d_randomread d_ilist; -- GitLab From f4b6b67f6ee6f09b3fc37ac952db065538f6ef75 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 21 Jul 2017 15:04:14 -0600 Subject: [PATCH 254/337] Fixing more execution space issues in KOKKOS package --- src/KOKKOS/angle_charmm_kokkos.cpp | 8 ++++---- src/KOKKOS/bond_fene_kokkos.cpp | 8 ++++---- src/KOKKOS/bond_fene_kokkos.h | 8 ++++---- src/KOKKOS/dihedral_charmm_kokkos.cpp | 20 +++++++++---------- src/KOKKOS/dihedral_opls_kokkos.cpp | 8 ++++---- src/KOKKOS/dihedral_opls_kokkos.h | 8 ++++---- src/KOKKOS/improper_harmonic_kokkos.cpp | 4 ++-- src/KOKKOS/pair_buck_coul_cut_kokkos.cpp | 2 +- src/KOKKOS/pair_buck_coul_long_kokkos.cpp | 2 +- src/KOKKOS/pair_buck_kokkos.cpp | 2 +- src/KOKKOS/pair_coul_cut_kokkos.cpp | 2 +- src/KOKKOS/pair_coul_debye_kokkos.cpp | 2 +- src/KOKKOS/pair_coul_long_kokkos.cpp | 2 +- src/KOKKOS/pair_eam_alloy_kokkos.cpp | 16 +++++++-------- src/KOKKOS/pair_eam_alloy_kokkos.h | 10 +++++----- src/KOKKOS/pair_eam_fs_kokkos.cpp | 16 +++++++-------- src/KOKKOS/pair_eam_fs_kokkos.h | 10 +++++----- src/KOKKOS/pair_eam_kokkos.cpp | 16 +++++++-------- src/KOKKOS/pair_eam_kokkos.h | 10 +++++----- ..._lj_charmm_coul_charmm_implicit_kokkos.cpp | 2 +- .../pair_lj_charmm_coul_charmm_kokkos.cpp | 2 +- .../pair_lj_charmm_coul_long_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp | 2 +- .../pair_lj_class2_coul_long_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_class2_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_cut_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_expand_kokkos.cpp | 2 +- .../pair_lj_gromacs_coul_gromacs_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_gromacs_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_sdk_kokkos.cpp | 2 +- src/KOKKOS/pair_morse_kokkos.cpp | 2 +- src/KOKKOS/pair_tersoff_mod_kokkos.cpp | 2 +- src/KOKKOS/pair_tersoff_zbl_kokkos.cpp | 2 +- 37 files changed, 95 insertions(+), 95 deletions(-) diff --git a/src/KOKKOS/angle_charmm_kokkos.cpp b/src/KOKKOS/angle_charmm_kokkos.cpp index 8dd22022d8..401a00c856 100644 --- a/src/KOKKOS/angle_charmm_kokkos.cpp +++ b/src/KOKKOS/angle_charmm_kokkos.cpp @@ -271,10 +271,10 @@ void AngleCharmmKokkos::coeff(int narg, char **arg) Kokkos::DualView k_k_ub("AngleCharmm::k_ub",n+1); Kokkos::DualView k_r_ub("AngleCharmm::r_ub",n+1); - d_k = k_k.d_view; - d_theta0 = k_theta0.d_view; - d_k_ub = k_k_ub.d_view; - d_r_ub = k_r_ub.d_view; + d_k = k_k.template view(); + d_theta0 = k_theta0.template view(); + d_k_ub = k_k_ub.template view(); + d_r_ub = k_r_ub.template view(); for (int i = 1; i <= n; i++) { k_k.h_view[i] = k[i]; diff --git a/src/KOKKOS/bond_fene_kokkos.cpp b/src/KOKKOS/bond_fene_kokkos.cpp index 025838340b..8a716a98ef 100644 --- a/src/KOKKOS/bond_fene_kokkos.cpp +++ b/src/KOKKOS/bond_fene_kokkos.cpp @@ -253,10 +253,10 @@ void BondFENEKokkos::allocate() k_epsilon = DAT::tdual_ffloat_1d("BondFene::epsilon",n+1); k_sigma = DAT::tdual_ffloat_1d("BondFene::sigma",n+1); - d_k = k_k.d_view; - d_r0 = k_r0.d_view; - d_epsilon = k_epsilon.d_view; - d_sigma = k_sigma.d_view; + d_k = k_k.template view(); + d_r0 = k_r0.template view(); + d_epsilon = k_epsilon.template view(); + d_sigma = k_sigma.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/bond_fene_kokkos.h b/src/KOKKOS/bond_fene_kokkos.h index c630abcafc..094685d0cf 100644 --- a/src/KOKKOS/bond_fene_kokkos.h +++ b/src/KOKKOS/bond_fene_kokkos.h @@ -85,10 +85,10 @@ class BondFENEKokkos : public BondFENE { DAT::tdual_ffloat_1d k_epsilon; DAT::tdual_ffloat_1d k_sigma; - DAT::t_ffloat_1d d_k; - DAT::t_ffloat_1d d_r0; - DAT::t_ffloat_1d d_epsilon; - DAT::t_ffloat_1d d_sigma; + typename AT::t_ffloat_1d d_k; + typename AT::t_ffloat_1d d_r0; + typename AT::t_ffloat_1d d_epsilon; + typename AT::t_ffloat_1d d_sigma; virtual void allocate(); }; diff --git a/src/KOKKOS/dihedral_charmm_kokkos.cpp b/src/KOKKOS/dihedral_charmm_kokkos.cpp index a8a8aade60..7f2117c97f 100644 --- a/src/KOKKOS/dihedral_charmm_kokkos.cpp +++ b/src/KOKKOS/dihedral_charmm_kokkos.cpp @@ -432,12 +432,12 @@ void DihedralCharmmKokkos::coeff(int narg, char **arg) Kokkos::DualView k_sin_shift("DihedralCharmm::sin_shift",nd+1); Kokkos::DualView k_weight("DihedralCharmm::weight",nd+1); - d_k = k_k.d_view; - d_multiplicity = k_multiplicity.d_view; - d_shift = k_shift.d_view; - d_cos_shift = k_cos_shift.d_view; - d_sin_shift = k_sin_shift.d_view; - d_weight = k_weight.d_view; + d_k = k_k.template view(); + d_multiplicity = k_multiplicity.template view(); + d_shift = k_shift.template view(); + d_cos_shift = k_cos_shift.template view(); + d_sin_shift = k_sin_shift.template view(); + d_weight = k_weight.template view(); int n = atom->ndihedraltypes; for (int i = 1; i <= n; i++) { @@ -479,10 +479,10 @@ void DihedralCharmmKokkos::init_style() Kokkos::DualView k_lj14_3("DihedralCharmm:lj14_3",n+1,n+1); Kokkos::DualView k_lj14_4("DihedralCharmm:lj14_4",n+1,n+1); - d_lj14_1 = k_lj14_1.d_view; - d_lj14_2 = k_lj14_2.d_view; - d_lj14_3 = k_lj14_3.d_view; - d_lj14_4 = k_lj14_4.d_view; + d_lj14_1 = k_lj14_1.template view(); + d_lj14_2 = k_lj14_2.template view(); + d_lj14_3 = k_lj14_3.template view(); + d_lj14_4 = k_lj14_4.template view(); if (weightflag) { diff --git a/src/KOKKOS/dihedral_opls_kokkos.cpp b/src/KOKKOS/dihedral_opls_kokkos.cpp index e37d4d2ef5..0ee00ca8db 100644 --- a/src/KOKKOS/dihedral_opls_kokkos.cpp +++ b/src/KOKKOS/dihedral_opls_kokkos.cpp @@ -348,10 +348,10 @@ void DihedralOPLSKokkos::allocate() k_k3 = DAT::tdual_ffloat_1d("DihedralOPLS::k3",n+1); k_k4 = DAT::tdual_ffloat_1d("DihedralOPLS::k4",n+1); - d_k1 = k_k1.d_view; - d_k2 = k_k2.d_view; - d_k3 = k_k3.d_view; - d_k4 = k_k4.d_view; + d_k1 = k_k1.template view(); + d_k2 = k_k2.template view(); + d_k3 = k_k3.template view(); + d_k4 = k_k4.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/dihedral_opls_kokkos.h b/src/KOKKOS/dihedral_opls_kokkos.h index 0a8860c87c..2594f5e74d 100644 --- a/src/KOKKOS/dihedral_opls_kokkos.h +++ b/src/KOKKOS/dihedral_opls_kokkos.h @@ -83,10 +83,10 @@ class DihedralOPLSKokkos : public DihedralOPLS { DAT::tdual_ffloat_1d k_k3; DAT::tdual_ffloat_1d k_k4; - DAT::t_ffloat_1d d_k1; - DAT::t_ffloat_1d d_k2; - DAT::t_ffloat_1d d_k3; - DAT::t_ffloat_1d d_k4; + typename AT::t_ffloat_1d d_k1; + typename AT::t_ffloat_1d d_k2; + typename AT::t_ffloat_1d d_k3; + typename AT::t_ffloat_1d d_k4; virtual void allocate(); }; diff --git a/src/KOKKOS/improper_harmonic_kokkos.cpp b/src/KOKKOS/improper_harmonic_kokkos.cpp index 1e58e18c51..73e105864f 100644 --- a/src/KOKKOS/improper_harmonic_kokkos.cpp +++ b/src/KOKKOS/improper_harmonic_kokkos.cpp @@ -309,8 +309,8 @@ void ImproperHarmonicKokkos::allocate() k_k = Kokkos::DualView("ImproperHarmonic::k",n+1); k_chi = Kokkos::DualView("ImproperHarmonic::chi",n+1); - d_k = k_k.d_view; - d_chi = k_chi.d_view; + d_k = k_k.template view(); + d_chi = k_chi.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp index 34fd427226..0da8a0a3d6 100644 --- a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp @@ -261,7 +261,7 @@ void PairBuckCoulCutKokkos::allocate() memory->create_kokkos(k_cut_coulsq,cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairBuckCoulCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp index 243bac5ab7..3a5cbd868f 100644 --- a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp @@ -319,7 +319,7 @@ void PairBuckCoulLongKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairBuckCoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_buck_kokkos.cpp b/src/KOKKOS/pair_buck_kokkos.cpp index d8534f7900..e7640471d5 100644 --- a/src/KOKKOS/pair_buck_kokkos.cpp +++ b/src/KOKKOS/pair_buck_kokkos.cpp @@ -197,7 +197,7 @@ void PairBuckKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairBuck::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_coul_cut_kokkos.cpp b/src/KOKKOS/pair_coul_cut_kokkos.cpp index 80ab01d91a..8edf093e2e 100644 --- a/src/KOKKOS/pair_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_coul_cut_kokkos.cpp @@ -199,7 +199,7 @@ void PairCoulCutKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairCoulCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_coul_debye_kokkos.cpp b/src/KOKKOS/pair_coul_debye_kokkos.cpp index 0771572e46..c331ab8da8 100644 --- a/src/KOKKOS/pair_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_coul_debye_kokkos.cpp @@ -221,7 +221,7 @@ void PairCoulDebyeKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairCoulDebye::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_coul_long_kokkos.cpp b/src/KOKKOS/pair_coul_long_kokkos.cpp index 7dbadf4834..721e140e33 100644 --- a/src/KOKKOS/pair_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_coul_long_kokkos.cpp @@ -279,7 +279,7 @@ void PairCoulLongKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairCoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.cpp b/src/KOKKOS/pair_eam_alloy_kokkos.cpp index f8b7a69d60..b7e0175147 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.cpp +++ b/src/KOKKOS/pair_eam_alloy_kokkos.cpp @@ -101,8 +101,8 @@ void PairEAMAlloyKokkos::compute(int eflag_in, int vflag_in) nmax = atom->nmax; k_rho = DAT::tdual_ffloat_1d("pair:rho",nmax); k_fp = DAT::tdual_ffloat_1d("pair:fp",nmax); - d_rho = k_rho.d_view; - d_fp = k_fp.d_view; + d_rho = k_rho.template view(); + d_fp = k_fp.template view(); h_rho = k_rho.h_view; h_fp = k_fp.h_view; } @@ -322,9 +322,9 @@ void PairEAMAlloyKokkos::file2array() k_type2z2r.template modify(); k_type2z2r.template sync(); - d_type2frho = k_type2frho.d_view; - d_type2rhor = k_type2rhor.d_view; - d_type2z2r = k_type2z2r.d_view; + d_type2frho = k_type2frho.template view(); + d_type2rhor = k_type2rhor.template view(); + d_type2z2r = k_type2z2r.template view(); } /* ---------------------------------------------------------------------- */ @@ -358,9 +358,9 @@ void PairEAMAlloyKokkos::array2spline() k_z2r_spline.template modify(); k_z2r_spline.template sync(); - d_frho_spline = k_frho_spline.d_view; - d_rhor_spline = k_rhor_spline.d_view; - d_z2r_spline = k_z2r_spline.d_view; + d_frho_spline = k_frho_spline.template view(); + d_rhor_spline = k_rhor_spline.template view(); + d_z2r_spline = k_z2r_spline.template view(); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.h b/src/KOKKOS/pair_eam_alloy_kokkos.h index d8c745b230..fb07eec32b 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.h +++ b/src/KOKKOS/pair_eam_alloy_kokkos.h @@ -130,15 +130,15 @@ class PairEAMAlloyKokkos : public PairEAM { DAT::tdual_ffloat_1d k_rho; DAT::tdual_ffloat_1d k_fp; - DAT::t_ffloat_1d d_rho; + typename AT::t_ffloat_1d d_rho; typename AT::t_ffloat_1d v_rho; - DAT::t_ffloat_1d d_fp; + typename AT::t_ffloat_1d d_fp; HAT::t_ffloat_1d h_rho; HAT::t_ffloat_1d h_fp; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typedef Kokkos::DualView tdual_ffloat_2d_n7; typedef typename tdual_ffloat_2d_n7::t_dev_const_randomread t_ffloat_2d_n7_randomread; diff --git a/src/KOKKOS/pair_eam_fs_kokkos.cpp b/src/KOKKOS/pair_eam_fs_kokkos.cpp index 57820afb26..982082937e 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.cpp +++ b/src/KOKKOS/pair_eam_fs_kokkos.cpp @@ -101,8 +101,8 @@ void PairEAMFSKokkos::compute(int eflag_in, int vflag_in) nmax = atom->nmax; k_rho = DAT::tdual_ffloat_1d("pair:rho",nmax); k_fp = DAT::tdual_ffloat_1d("pair:fp",nmax); - d_rho = k_rho.d_view; - d_fp = k_fp.d_view; + d_rho = k_rho.template view(); + d_fp = k_fp.template view(); h_rho = k_rho.h_view; h_fp = k_fp.h_view; } @@ -322,9 +322,9 @@ void PairEAMFSKokkos::file2array() k_type2z2r.template modify(); k_type2z2r.template sync(); - d_type2frho = k_type2frho.d_view; - d_type2rhor = k_type2rhor.d_view; - d_type2z2r = k_type2z2r.d_view; + d_type2frho = k_type2frho.template view(); + d_type2rhor = k_type2rhor.template view(); + d_type2z2r = k_type2z2r.template view(); } /* ---------------------------------------------------------------------- */ @@ -358,9 +358,9 @@ void PairEAMFSKokkos::array2spline() k_z2r_spline.template modify(); k_z2r_spline.template sync(); - d_frho_spline = k_frho_spline.d_view; - d_rhor_spline = k_rhor_spline.d_view; - d_z2r_spline = k_z2r_spline.d_view; + d_frho_spline = k_frho_spline.template view(); + d_rhor_spline = k_rhor_spline.template view(); + d_z2r_spline = k_z2r_spline.template view(); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_eam_fs_kokkos.h b/src/KOKKOS/pair_eam_fs_kokkos.h index 40375af066..d71ec2b887 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.h +++ b/src/KOKKOS/pair_eam_fs_kokkos.h @@ -130,15 +130,15 @@ class PairEAMFSKokkos : public PairEAM { DAT::tdual_ffloat_1d k_rho; DAT::tdual_ffloat_1d k_fp; - DAT::t_ffloat_1d d_rho; + typename AT::t_ffloat_1d d_rho; typename AT::t_ffloat_1d v_rho; - DAT::t_ffloat_1d d_fp; + typename AT::t_ffloat_1d d_fp; HAT::t_ffloat_1d h_rho; HAT::t_ffloat_1d h_fp; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typedef Kokkos::DualView tdual_ffloat_2d_n7; typedef typename tdual_ffloat_2d_n7::t_dev_const_randomread t_ffloat_2d_n7_randomread; diff --git a/src/KOKKOS/pair_eam_kokkos.cpp b/src/KOKKOS/pair_eam_kokkos.cpp index 6b2588475f..8ac92a1766 100644 --- a/src/KOKKOS/pair_eam_kokkos.cpp +++ b/src/KOKKOS/pair_eam_kokkos.cpp @@ -96,8 +96,8 @@ void PairEAMKokkos::compute(int eflag_in, int vflag_in) nmax = atom->nmax; k_rho = DAT::tdual_ffloat_1d("pair:rho",nmax); k_fp = DAT::tdual_ffloat_1d("pair:fp",nmax); - d_rho = k_rho.d_view; - d_fp = k_fp.d_view; + d_rho = k_rho.template view(); + d_fp = k_fp.template view(); h_rho = k_rho.h_view; h_fp = k_fp.h_view; } @@ -322,9 +322,9 @@ void PairEAMKokkos::file2array() k_type2z2r.template modify(); k_type2z2r.template sync(); - d_type2frho = k_type2frho.d_view; - d_type2rhor = k_type2rhor.d_view; - d_type2z2r = k_type2z2r.d_view; + d_type2frho = k_type2frho.template view(); + d_type2rhor = k_type2rhor.template view(); + d_type2z2r = k_type2z2r.template view(); } /* ---------------------------------------------------------------------- */ @@ -358,9 +358,9 @@ void PairEAMKokkos::array2spline() k_z2r_spline.template modify(); k_z2r_spline.template sync(); - d_frho_spline = k_frho_spline.d_view; - d_rhor_spline = k_rhor_spline.d_view; - d_z2r_spline = k_z2r_spline.d_view; + d_frho_spline = k_frho_spline.template view(); + d_rhor_spline = k_rhor_spline.template view(); + d_z2r_spline = k_z2r_spline.template view(); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_eam_kokkos.h b/src/KOKKOS/pair_eam_kokkos.h index 229b16471d..856cc51f77 100644 --- a/src/KOKKOS/pair_eam_kokkos.h +++ b/src/KOKKOS/pair_eam_kokkos.h @@ -127,15 +127,15 @@ class PairEAMKokkos : public PairEAM { DAT::tdual_ffloat_1d k_rho; DAT::tdual_ffloat_1d k_fp; - DAT::t_ffloat_1d d_rho; + typename AT::t_ffloat_1d d_rho; typename AT::t_ffloat_1d v_rho; - DAT::t_ffloat_1d d_fp; + typename AT::t_ffloat_1d d_fp; HAT::t_ffloat_1d h_rho; HAT::t_ffloat_1d h_fp; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typedef Kokkos::DualView tdual_ffloat_2d_n7; typedef typename tdual_ffloat_2d_n7::t_dev_const_randomread t_ffloat_2d_n7_randomread; 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 c00b1fbae4..e7cf7ba42a 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp @@ -326,7 +326,7 @@ void PairLJCharmmCoulCharmmImplicitKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCharmmCoulCharmmImplicit::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp index c88c7db2e3..a456d6e276 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp @@ -327,7 +327,7 @@ void PairLJCharmmCoulCharmmKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCharmmCoulCharmm::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp index 8ebc5f87f3..dffbbb638f 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp @@ -347,7 +347,7 @@ void PairLJCharmmCoulLongKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCharmmCoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp index 936eae79d5..0081aca4f1 100644 --- a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp @@ -264,7 +264,7 @@ void PairLJClass2CoulCutKokkos::allocate() memory->create_kokkos(k_cut_coulsq,cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJClass2CoulCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp index 268213cdbc..b5dc358feb 100644 --- a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp @@ -316,7 +316,7 @@ void PairLJClass2CoulLongKokkos::allocate() memory->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJClass2CoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_class2_kokkos.cpp b/src/KOKKOS/pair_lj_class2_kokkos.cpp index c899327d7c..34cc15279b 100644 --- a/src/KOKKOS/pair_lj_class2_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_kokkos.cpp @@ -203,7 +203,7 @@ void PairLJClass2Kokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairLJClass2::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp index f4de48f176..c3fda01ce6 100644 --- a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp @@ -256,7 +256,7 @@ void PairLJCutCoulCutKokkos::allocate() memory->create_kokkos(k_cut_coulsq,cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCutCoulCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp index ad51dd0a88..b7a71cb99a 100644 --- a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp @@ -270,7 +270,7 @@ void PairLJCutCoulDebyeKokkos::allocate() memory->create_kokkos(k_cut_coulsq,cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCutCoulDebye::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp index 89f263113e..9df5963676 100644 --- a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp @@ -288,7 +288,7 @@ void PairLJCutCoulDSFKokkos::allocate() memory->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCutCoulDSF::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp index 4de51ca8d2..9bd79c7341 100644 --- a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp @@ -313,7 +313,7 @@ void PairLJCutCoulLongKokkos::allocate() memory->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCutCoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_kokkos.cpp index ea78b73711..c90d5ad11c 100644 --- a/src/KOKKOS/pair_lj_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_kokkos.cpp @@ -198,7 +198,7 @@ void PairLJCutKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairLJCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_expand_kokkos.cpp b/src/KOKKOS/pair_lj_expand_kokkos.cpp index 6b62150632..95ec252ad5 100644 --- a/src/KOKKOS/pair_lj_expand_kokkos.cpp +++ b/src/KOKKOS/pair_lj_expand_kokkos.cpp @@ -205,7 +205,7 @@ void PairLJExpandKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairLJExpand::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp index 0c492131dd..4b21b08eb3 100644 --- a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp @@ -310,7 +310,7 @@ void PairLJGromacsCoulGromacsKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJGromacsCoulGromacs::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp index 76d7abbe28..73a17d7b22 100644 --- a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp @@ -252,7 +252,7 @@ void PairLJGromacsKokkos::allocate() d_cut_inner_sq = k_cut_inner_sq.template view(); k_params = Kokkos::DualView("PairLJGromacs::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_sdk_kokkos.cpp b/src/KOKKOS/pair_lj_sdk_kokkos.cpp index 41561c2988..2063f62b20 100644 --- a/src/KOKKOS/pair_lj_sdk_kokkos.cpp +++ b/src/KOKKOS/pair_lj_sdk_kokkos.cpp @@ -234,7 +234,7 @@ void PairLJSDKKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairLJSDK::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_morse_kokkos.cpp b/src/KOKKOS/pair_morse_kokkos.cpp index 3201fad215..08a9b82640 100644 --- a/src/KOKKOS/pair_morse_kokkos.cpp +++ b/src/KOKKOS/pair_morse_kokkos.cpp @@ -212,7 +212,7 @@ void PairMorseKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairMorse::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp index d77ba2f141..9a59979f4c 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp @@ -76,7 +76,7 @@ void PairTersoffMODKokkos::allocate() k_params = Kokkos::DualView ("PairTersoffMOD::paramskk",n+1,n+1,n+1); - paramskk = k_params.d_view; + paramskk = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp index 040d8c5230..8468bb01f5 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp @@ -87,7 +87,7 @@ void PairTersoffZBLKokkos::allocate() k_params = Kokkos::DualView ("PairTersoffZBL::paramskk",n+1,n+1,n+1); - paramskk = k_params.d_view; + paramskk = k_params.template view(); } /* ---------------------------------------------------------------------- -- GitLab From 8d485ea128d90a7b50bf90e5f47cb759be9e2074 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 21 Jul 2017 16:04:18 -0600 Subject: [PATCH 255/337] Remove hardcoded execution spaces --- src/KOKKOS/fix_nh_kokkos.cpp | 2 +- src/KOKKOS/fix_nve_kokkos.cpp | 2 +- src/KOKKOS/fix_qeq_reax_kokkos.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/fix_nh_kokkos.cpp b/src/KOKKOS/fix_nh_kokkos.cpp index fb03bf68c6..7136c776a1 100644 --- a/src/KOKKOS/fix_nh_kokkos.cpp +++ b/src/KOKKOS/fix_nh_kokkos.cpp @@ -80,7 +80,7 @@ void FixNHKokkos::init() FixNH::init(); atomKK->k_mass.modify(); - atomKK->k_mass.sync(); + atomKK->k_mass.sync(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/fix_nve_kokkos.cpp b/src/KOKKOS/fix_nve_kokkos.cpp index eb41443bab..c071447eb7 100644 --- a/src/KOKKOS/fix_nve_kokkos.cpp +++ b/src/KOKKOS/fix_nve_kokkos.cpp @@ -46,7 +46,7 @@ void FixNVEKokkos::init() FixNVE::init(); atomKK->k_mass.modify(); - atomKK->k_mass.sync(); + atomKK->k_mass.sync(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/fix_qeq_reax_kokkos.cpp b/src/KOKKOS/fix_qeq_reax_kokkos.cpp index cef003222a..e54b53ae89 100644 --- a/src/KOKKOS/fix_qeq_reax_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reax_kokkos.cpp @@ -79,7 +79,7 @@ template void FixQEqReaxKokkos::init() { atomKK->k_q.modify(); - atomKK->k_q.sync(); + atomKK->k_q.sync(); FixQEqReax::init(); -- GitLab From 633ca33f2f9163a4bbe740801e28efa9d4a5d7ce Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Jul 2017 13:08:24 -0600 Subject: [PATCH 256/337] Fix issue in Kokkos neighborlist --- src/KOKKOS/npair_kokkos.cpp | 10 ++++++++-- src/KOKKOS/npair_kokkos.h | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index b7b550369d..fd5f9373f2 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -201,14 +201,20 @@ if (GHOST) { if (newton_pair) { NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_HAVE_CUDA - Kokkos::parallel_for(config, f); + if (ExecutionSpaceFromDevice::space == Device) + Kokkos::parallel_for(config, f); + else + Kokkos::parallel_for(nall, f); #else Kokkos::parallel_for(nall, f); #endif } else { NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_HAVE_CUDA - Kokkos::parallel_for(config, f); + if (ExecutionSpaceFromDevice::space == Device) + Kokkos::parallel_for(config, f); + else + Kokkos::parallel_for(nall, f); #else Kokkos::parallel_for(nall, f); #endif diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index 53183114d3..a28b5ff978 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -409,7 +409,7 @@ struct NPairKokkosBuildFunctor { c.template build_Item(i); } - void operator() (typename Kokkos::TeamPolicy::member_type dev) const {} + void operator() (typename Kokkos::TeamPolicy::member_type dev) const {} // Should error out }; template -- GitLab From 557e5b964ad8ae26d61ddb4713575f3706fb6d74 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Jul 2017 13:37:01 -0600 Subject: [PATCH 257/337] Fixing Kokkos execution space issue with regions --- src/KOKKOS/fix_setforce_kokkos.cpp | 6 +- src/KOKKOS/fix_setforce_kokkos.h | 4 +- src/KOKKOS/out.txt | 119 +++++++++++++++++++++++++++++ src/KOKKOS/region_block_kokkos.cpp | 6 +- src/KOKKOS/region_block_kokkos.h | 4 +- src/accelerator_kokkos.h | 2 +- src/region.cpp | 2 +- src/region.h | 2 +- 8 files changed, 134 insertions(+), 11 deletions(-) create mode 100644 src/KOKKOS/out.txt diff --git a/src/KOKKOS/fix_setforce_kokkos.cpp b/src/KOKKOS/fix_setforce_kokkos.cpp index 5e26ef3610..2ef04ad6ee 100644 --- a/src/KOKKOS/fix_setforce_kokkos.cpp +++ b/src/KOKKOS/fix_setforce_kokkos.cpp @@ -89,8 +89,10 @@ void FixSetForceKokkos::post_force(int vflag) if (iregion >= 0) { region = domain->regions[iregion]; region->prematch(); - d_match = DAT::t_int_1d("setforce:d_match",nlocal); - region->match_all_kokkos(groupbit,d_match); + DAT::tdual_int_1d k_match = DAT::tdual_int_1d("setforce:k_match",nlocal); + region->match_all_kokkos(groupbit,k_match); + k_match.template sync(); + d_match = k_match.template view(); } // reallocate sforce array if necessary diff --git a/src/KOKKOS/fix_setforce_kokkos.h b/src/KOKKOS/fix_setforce_kokkos.h index dffa22c93a..3cbf3d3720 100644 --- a/src/KOKKOS/fix_setforce_kokkos.h +++ b/src/KOKKOS/fix_setforce_kokkos.h @@ -75,8 +75,8 @@ class FixSetForceKokkos : public FixSetForce { private: DAT::tdual_ffloat_2d k_sforce; - DAT::t_ffloat_2d_randomread d_sforce; - DAT::t_int_1d d_match; + typename AT::t_ffloat_2d_randomread d_sforce; + typename AT::t_int_1d d_match; typename AT::t_x_array_randomread x; typename AT::t_f_array f; diff --git a/src/KOKKOS/out.txt b/src/KOKKOS/out.txt new file mode 100644 index 0000000000..0452e263ab --- /dev/null +++ b/src/KOKKOS/out.txt @@ -0,0 +1,119 @@ +atom_vec_angle_kokkos.cpp: k_count.modify(); +atom_vec_angle_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); +atom_vec_angle_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); +atom_vec_angle_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); +atom_vec_angle_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); +atom_vec_angle_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); +atom_vec_angle_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); +atom_vec_angle_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); +atom_vec_angle_kokkos.cpp: if (mask & MOLECULE_MASK) atomKK->k_molecule.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_nspecial.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_special.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_num_bond.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_bond_type.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_bond_atom.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_num_angle.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_angle_type.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_angle_atom1.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_angle_atom2.modify(); +atom_vec_angle_kokkos.cpp: atomKK->k_angle_atom3.modify(); +atom_vec_atomic_kokkos.cpp: k_count.modify(); +atom_vec_atomic_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); +atom_vec_atomic_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); +atom_vec_atomic_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); +atom_vec_atomic_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); +atom_vec_atomic_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); +atom_vec_atomic_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); +atom_vec_atomic_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); +atom_vec_bond_kokkos.cpp: k_count.modify(); +atom_vec_bond_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); +atom_vec_bond_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); +atom_vec_bond_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); +atom_vec_bond_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); +atom_vec_bond_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); +atom_vec_bond_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); +atom_vec_bond_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); +atom_vec_bond_kokkos.cpp: if (mask & MOLECULE_MASK) atomKK->k_molecule.modify(); +atom_vec_bond_kokkos.cpp: atomKK->k_nspecial.modify(); +atom_vec_bond_kokkos.cpp: atomKK->k_special.modify(); +atom_vec_bond_kokkos.cpp: atomKK->k_num_bond.modify(); +atom_vec_bond_kokkos.cpp: atomKK->k_bond_type.modify(); +atom_vec_bond_kokkos.cpp: atomKK->k_bond_atom.modify(); +atom_vec_charge_kokkos.cpp: k_count.modify(); +atom_vec_charge_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); +atom_vec_charge_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); +atom_vec_charge_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); +atom_vec_charge_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); +atom_vec_charge_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); +atom_vec_charge_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); +atom_vec_charge_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); +atom_vec_charge_kokkos.cpp: if (mask & Q_MASK) atomKK->k_q.modify(); +atom_vec_full_kokkos.cpp: k_count.modify(); +atom_vec_full_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); +atom_vec_full_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); +atom_vec_full_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); +atom_vec_full_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); +atom_vec_full_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); +atom_vec_full_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); +atom_vec_full_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); +atom_vec_full_kokkos.cpp: if (mask & Q_MASK) atomKK->k_q.modify(); +atom_vec_full_kokkos.cpp: if (mask & MOLECULE_MASK) atomKK->k_molecule.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_nspecial.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_special.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_num_bond.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_bond_type.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_bond_atom.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_num_angle.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_angle_type.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_angle_atom1.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_angle_atom2.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_angle_atom3.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_num_dihedral.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_dihedral_type.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_dihedral_atom1.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_dihedral_atom2.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_dihedral_atom3.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_dihedral_atom4.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_num_improper.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_improper_type.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_improper_atom1.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_improper_atom2.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_improper_atom3.modify(); +atom_vec_full_kokkos.cpp: atomKK->k_improper_atom4.modify(); +atom_vec_molecular_kokkos.cpp: k_count.modify(); +atom_vec_molecular_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); +atom_vec_molecular_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); +atom_vec_molecular_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); +atom_vec_molecular_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); +atom_vec_molecular_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); +atom_vec_molecular_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); +atom_vec_molecular_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); +atom_vec_molecular_kokkos.cpp: if (mask & MOLECULE_MASK) atomKK->k_molecule.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_nspecial.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_special.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_num_bond.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_bond_type.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_bond_atom.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_num_angle.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_angle_type.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_angle_atom1.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_angle_atom2.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_angle_atom3.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_num_dihedral.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_type.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_atom1.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_atom2.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_atom3.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_atom4.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_num_improper.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_improper_type.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_improper_atom1.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_improper_atom2.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_improper_atom3.modify(); +atom_vec_molecular_kokkos.cpp: atomKK->k_improper_atom4.modify(); +comm_kokkos.cpp: k_buf_send.modify(); +neighbor_kokkos.cpp: k_bondlist.modify(); +neighbor_kokkos.cpp: k_anglelist.modify(); +neighbor_kokkos.cpp: k_dihedrallist.modify(); +neighbor_kokkos.cpp: k_improperlist.modify(); +verlet_kokkos.cpp: atomKK->k_f.modify(); diff --git a/src/KOKKOS/region_block_kokkos.cpp b/src/KOKKOS/region_block_kokkos.cpp index 6734d7fdd1..90fd47ab06 100644 --- a/src/KOKKOS/region_block_kokkos.cpp +++ b/src/KOKKOS/region_block_kokkos.cpp @@ -54,10 +54,10 @@ int RegBlockKokkos::k_inside(double x, double y, double z) const } template -void RegBlockKokkos::match_all_kokkos(int groupbit_in, DAT::t_int_1d d_match_in) +void RegBlockKokkos::match_all_kokkos(int groupbit_in, DAT::tdual_int_1d k_match_in) { groupbit = groupbit_in; - d_match = d_match_in; + d_match = k_match_in.template view(); atomKK->sync(Device, X_MASK | MASK_MASK); @@ -69,6 +69,8 @@ void RegBlockKokkos::match_all_kokkos(int groupbit_in, DAT::t_int_1d Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); DeviceType::fence(); copymode = 0; + + k_match_in.template modify(); } template diff --git a/src/KOKKOS/region_block_kokkos.h b/src/KOKKOS/region_block_kokkos.h index f570e3ed33..e14ac4d0c0 100644 --- a/src/KOKKOS/region_block_kokkos.h +++ b/src/KOKKOS/region_block_kokkos.h @@ -39,14 +39,14 @@ class RegBlockKokkos : public RegBlock { RegBlockKokkos(class LAMMPS *, int, char **); ~RegBlockKokkos(); - void match_all_kokkos(int, DAT::t_int_1d); + void match_all_kokkos(int, DAT::tdual_int_1d); KOKKOS_INLINE_FUNCTION void operator()(TagRegBlockMatchAll, const int&) const; private: int groupbit; - DAT::t_int_1d d_match; + typename AT::t_int_1d d_match; typename AT::t_x_array_randomread x; typename AT::t_int_1d_randomread mask; diff --git a/src/accelerator_kokkos.h b/src/accelerator_kokkos.h index d9794023b0..8ea5b9d4d2 100644 --- a/src/accelerator_kokkos.h +++ b/src/accelerator_kokkos.h @@ -99,7 +99,7 @@ class DAT { public: typedef double tdual_xfloat_1d; typedef double tdual_FFT_SCALAR_1d; - typedef int t_int_1d; + typedef int tdual_int_1d; typedef int tdual_int_2d; }; diff --git a/src/region.cpp b/src/region.cpp index e69fdc79d5..d2ef481cb7 100644 --- a/src/region.cpp +++ b/src/region.cpp @@ -146,7 +146,7 @@ int Region::match(double x, double y, double z) generate error if Kokkos function defaults to base class ------------------------------------------------------------------------- */ -void Region::match_all_kokkos(int, DAT::t_int_1d) +void Region::match_all_kokkos(int, DAT::tdual_int_1d) { error->all(FLERR,"Can only use Kokkos supported regions with Kokkos package"); } diff --git a/src/region.h b/src/region.h index 9c693bfcd5..5b4238acb4 100644 --- a/src/region.h +++ b/src/region.h @@ -99,7 +99,7 @@ class Region : protected Pointers { // Kokkos function, implemented by each Kokkos region - virtual void match_all_kokkos(int, DAT::t_int_1d); + virtual void match_all_kokkos(int, DAT::tdual_int_1d); protected: void add_contact(int, double *, double, double, double); -- GitLab From d3fa882280a93affd1b55223395200feba7f7b3d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Jul 2017 13:49:23 -0600 Subject: [PATCH 258/337] Fix execution space issues in Kokkos EAM pairstyles --- src/KOKKOS/pair_eam_alloy_kokkos.cpp | 4 ++-- src/KOKKOS/pair_eam_fs_kokkos.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.cpp b/src/KOKKOS/pair_eam_alloy_kokkos.cpp index b7e0175147..aa68d0a054 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.cpp +++ b/src/KOKKOS/pair_eam_alloy_kokkos.cpp @@ -405,7 +405,7 @@ int PairEAMAlloyKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_i d_sendlist = k_sendlist.view(); iswap = iswap_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; } @@ -423,7 +423,7 @@ void PairEAMAlloyKokkos::unpack_forward_comm_kokkos(int n, int first { first = first_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); } template diff --git a/src/KOKKOS/pair_eam_fs_kokkos.cpp b/src/KOKKOS/pair_eam_fs_kokkos.cpp index 982082937e..a982f94ec4 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.cpp +++ b/src/KOKKOS/pair_eam_fs_kokkos.cpp @@ -405,7 +405,7 @@ int PairEAMFSKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_ d_sendlist = k_sendlist.view(); iswap = iswap_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; } @@ -423,7 +423,7 @@ void PairEAMFSKokkos::unpack_forward_comm_kokkos(int n, int first_in { first = first_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); } template -- GitLab From c3c9f357fdfa6753eaa056bc17a3fe0dd3aaaa6a Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Jul 2017 14:37:41 -0600 Subject: [PATCH 259/337] Fix concurrent modification issue in comm_kokkos --- src/KOKKOS/comm_kokkos.cpp | 1 + src/KOKKOS/out.txt | 119 ------------------------------------- 2 files changed, 1 insertion(+), 119 deletions(-) delete mode 100644 src/KOKKOS/out.txt diff --git a/src/KOKKOS/comm_kokkos.cpp b/src/KOKKOS/comm_kokkos.cpp index f38a6c21c9..2b19908396 100644 --- a/src/KOKKOS/comm_kokkos.cpp +++ b/src/KOKKOS/comm_kokkos.cpp @@ -488,6 +488,7 @@ void CommKokkos::exchange_device() if (true) { if (k_sendflag.h_view.dimension_0()(); k_count.h_view(0) = k_exchange_sendlist.h_view.dimension_0(); while (k_count.h_view(0)>=k_exchange_sendlist.h_view.dimension_0()) { k_count.h_view(0) = 0; diff --git a/src/KOKKOS/out.txt b/src/KOKKOS/out.txt deleted file mode 100644 index 0452e263ab..0000000000 --- a/src/KOKKOS/out.txt +++ /dev/null @@ -1,119 +0,0 @@ -atom_vec_angle_kokkos.cpp: k_count.modify(); -atom_vec_angle_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); -atom_vec_angle_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); -atom_vec_angle_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); -atom_vec_angle_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); -atom_vec_angle_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); -atom_vec_angle_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); -atom_vec_angle_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); -atom_vec_angle_kokkos.cpp: if (mask & MOLECULE_MASK) atomKK->k_molecule.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_nspecial.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_special.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_num_bond.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_bond_type.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_bond_atom.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_num_angle.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_angle_type.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_angle_atom1.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_angle_atom2.modify(); -atom_vec_angle_kokkos.cpp: atomKK->k_angle_atom3.modify(); -atom_vec_atomic_kokkos.cpp: k_count.modify(); -atom_vec_atomic_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); -atom_vec_atomic_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); -atom_vec_atomic_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); -atom_vec_atomic_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); -atom_vec_atomic_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); -atom_vec_atomic_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); -atom_vec_atomic_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); -atom_vec_bond_kokkos.cpp: k_count.modify(); -atom_vec_bond_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); -atom_vec_bond_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); -atom_vec_bond_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); -atom_vec_bond_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); -atom_vec_bond_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); -atom_vec_bond_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); -atom_vec_bond_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); -atom_vec_bond_kokkos.cpp: if (mask & MOLECULE_MASK) atomKK->k_molecule.modify(); -atom_vec_bond_kokkos.cpp: atomKK->k_nspecial.modify(); -atom_vec_bond_kokkos.cpp: atomKK->k_special.modify(); -atom_vec_bond_kokkos.cpp: atomKK->k_num_bond.modify(); -atom_vec_bond_kokkos.cpp: atomKK->k_bond_type.modify(); -atom_vec_bond_kokkos.cpp: atomKK->k_bond_atom.modify(); -atom_vec_charge_kokkos.cpp: k_count.modify(); -atom_vec_charge_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); -atom_vec_charge_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); -atom_vec_charge_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); -atom_vec_charge_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); -atom_vec_charge_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); -atom_vec_charge_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); -atom_vec_charge_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); -atom_vec_charge_kokkos.cpp: if (mask & Q_MASK) atomKK->k_q.modify(); -atom_vec_full_kokkos.cpp: k_count.modify(); -atom_vec_full_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); -atom_vec_full_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); -atom_vec_full_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); -atom_vec_full_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); -atom_vec_full_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); -atom_vec_full_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); -atom_vec_full_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); -atom_vec_full_kokkos.cpp: if (mask & Q_MASK) atomKK->k_q.modify(); -atom_vec_full_kokkos.cpp: if (mask & MOLECULE_MASK) atomKK->k_molecule.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_nspecial.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_special.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_num_bond.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_bond_type.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_bond_atom.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_num_angle.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_angle_type.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_angle_atom1.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_angle_atom2.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_angle_atom3.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_num_dihedral.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_dihedral_type.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_dihedral_atom1.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_dihedral_atom2.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_dihedral_atom3.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_dihedral_atom4.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_num_improper.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_improper_type.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_improper_atom1.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_improper_atom2.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_improper_atom3.modify(); -atom_vec_full_kokkos.cpp: atomKK->k_improper_atom4.modify(); -atom_vec_molecular_kokkos.cpp: k_count.modify(); -atom_vec_molecular_kokkos.cpp: if (mask & X_MASK) atomKK->k_x.modify(); -atom_vec_molecular_kokkos.cpp: if (mask & V_MASK) atomKK->k_v.modify(); -atom_vec_molecular_kokkos.cpp: if (mask & F_MASK) atomKK->k_f.modify(); -atom_vec_molecular_kokkos.cpp: if (mask & TAG_MASK) atomKK->k_tag.modify(); -atom_vec_molecular_kokkos.cpp: if (mask & TYPE_MASK) atomKK->k_type.modify(); -atom_vec_molecular_kokkos.cpp: if (mask & MASK_MASK) atomKK->k_mask.modify(); -atom_vec_molecular_kokkos.cpp: if (mask & IMAGE_MASK) atomKK->k_image.modify(); -atom_vec_molecular_kokkos.cpp: if (mask & MOLECULE_MASK) atomKK->k_molecule.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_nspecial.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_special.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_num_bond.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_bond_type.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_bond_atom.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_num_angle.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_angle_type.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_angle_atom1.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_angle_atom2.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_angle_atom3.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_num_dihedral.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_type.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_atom1.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_atom2.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_atom3.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_dihedral_atom4.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_num_improper.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_improper_type.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_improper_atom1.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_improper_atom2.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_improper_atom3.modify(); -atom_vec_molecular_kokkos.cpp: atomKK->k_improper_atom4.modify(); -comm_kokkos.cpp: k_buf_send.modify(); -neighbor_kokkos.cpp: k_bondlist.modify(); -neighbor_kokkos.cpp: k_anglelist.modify(); -neighbor_kokkos.cpp: k_dihedrallist.modify(); -neighbor_kokkos.cpp: k_improperlist.modify(); -verlet_kokkos.cpp: atomKK->k_f.modify(); -- GitLab From 8f59c0e188b9dc0d03621a58a78b81a16cd05546 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 27 Jul 2017 08:51:17 -0600 Subject: [PATCH 260/337] Fix modify/sync issue in neigh_bond_kokkos --- src/KOKKOS/neigh_bond_kokkos.cpp | 16 ++++++++++++++++ src/KOKKOS/neighbor_kokkos.cpp | 20 -------------------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/KOKKOS/neigh_bond_kokkos.cpp b/src/KOKKOS/neigh_bond_kokkos.cpp index 767def70c2..ca7dc1582b 100644 --- a/src/KOKKOS/neigh_bond_kokkos.cpp +++ b/src/KOKKOS/neigh_bond_kokkos.cpp @@ -307,6 +307,8 @@ void NeighBondKokkos::bond_all() "Bond atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_bondlist.modify(); } template @@ -401,6 +403,8 @@ void NeighBondKokkos::bond_partial() "Bond atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_bondlist.modify(); } template @@ -521,6 +525,8 @@ void NeighBondKokkos::angle_all() "Angle atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_anglelist.modify(); } template @@ -622,6 +628,8 @@ void NeighBondKokkos::angle_partial() "Angle atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_anglelist.modify(); } template @@ -762,6 +770,8 @@ void NeighBondKokkos::dihedral_all() "Dihedral atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_dihedrallist.modify(); } template @@ -868,6 +878,8 @@ void NeighBondKokkos::dihedral_partial() "Dihedral atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_dihedrallist.modify(); } template @@ -1030,6 +1042,8 @@ void NeighBondKokkos::improper_all() "Improper atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_improperlist.modify(); } template @@ -1136,6 +1150,8 @@ void NeighBondKokkos::improper_partial() "Improper atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_improperlist.modify(); } template diff --git a/src/KOKKOS/neighbor_kokkos.cpp b/src/KOKKOS/neighbor_kokkos.cpp index e40e6a238c..8eda7ee55c 100644 --- a/src/KOKKOS/neighbor_kokkos.cpp +++ b/src/KOKKOS/neighbor_kokkos.cpp @@ -387,16 +387,6 @@ void NeighborKokkos::build_topology() { k_dihedrallist = neighbond_device.k_dihedrallist; k_improperlist = neighbond_device.k_improperlist; - k_bondlist.sync(); - k_anglelist.sync(); - k_dihedrallist.sync(); - k_improperlist.sync(); - - k_bondlist.modify(); - k_anglelist.modify(); - k_dihedrallist.modify(); - k_improperlist.modify(); - // Transfer topology neighbor lists to Host for non-Kokkos styles if (force->bond && force->bond->execution_space == Host) @@ -415,15 +405,5 @@ void NeighborKokkos::build_topology() { k_anglelist = neighbond_host.k_anglelist; k_dihedrallist = neighbond_host.k_dihedrallist; k_improperlist = neighbond_host.k_improperlist; - - k_bondlist.sync(); - k_anglelist.sync(); - k_dihedrallist.sync(); - k_improperlist.sync(); - - k_bondlist.modify(); - k_anglelist.modify(); - k_dihedrallist.modify(); - k_improperlist.modify(); } } -- GitLab From 8e834d8be149fced6868362b8585ecb316e78be5 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 27 Jul 2017 09:37:16 -0600 Subject: [PATCH 261/337] Add missing sync to neigh_bond_kokkos --- src/KOKKOS/neigh_bond_kokkos.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/KOKKOS/neigh_bond_kokkos.cpp b/src/KOKKOS/neigh_bond_kokkos.cpp index ca7dc1582b..a8c230fa59 100644 --- a/src/KOKKOS/neigh_bond_kokkos.cpp +++ b/src/KOKKOS/neigh_bond_kokkos.cpp @@ -439,6 +439,8 @@ void NeighBondKokkos::bond_check() int flag = 0; update_domain_variables(); + atomKK->sync(execution_space, X_MASK); + k_bondlist.sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,neighbor->nbondlist),*this,flag); DeviceType::fence(); @@ -672,6 +674,8 @@ void NeighBondKokkos::angle_check() // in case angle potential computes any of them update_domain_variables(); + atomKK->sync(execution_space, X_MASK); + k_anglelist.sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,neighbor->nanglelist),*this,flag); DeviceType::fence(); @@ -927,6 +931,8 @@ void NeighBondKokkos::dihedral_check(int nlist, typename AT::t_int_2 // in case dihedral/improper potential computes any of them update_domain_variables(); + atomKK->sync(execution_space, X_MASK); + k_dihedrallist.sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlist),*this,flag); DeviceType::fence(); -- GitLab From 7edb294b447c62d3d2dbd4f9df984fb8d14f9a7c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 28 Jul 2017 10:44:08 -0600 Subject: [PATCH 262/337] Fix execution space issues in comm_kokkos --- src/KOKKOS/comm_kokkos.cpp | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/src/KOKKOS/comm_kokkos.cpp b/src/KOKKOS/comm_kokkos.cpp index 2b19908396..adc8da501c 100644 --- a/src/KOKKOS/comm_kokkos.cpp +++ b/src/KOKKOS/comm_kokkos.cpp @@ -472,8 +472,6 @@ void CommKokkos::exchange_device() subhi = domain->subhi_lamda; } - atomKK->sync(ExecutionSpaceFromDevice::space,ALL_MASK); - // loop over dimensions for (int dim = 0; dim < 3; dim++) { @@ -602,8 +600,6 @@ void CommKokkos::exchange_device() } - atomKK->modified(ExecutionSpaceFromDevice::space,ALL_MASK); - if (atom->firstgroupname) { /* this is not yet implemented with Kokkos */ atomKK->sync(Host,ALL_MASK); @@ -704,8 +700,8 @@ void CommKokkos::borders_device() { AtomVecKokkos *avec = (AtomVecKokkos *) atom->avec; ExecutionSpace exec_space = ExecutionSpaceFromDevice::space; - k_sendlist.modify(); - atomKK->sync(exec_space,ALL_MASK); + k_sendlist.sync(); + atomKK->sync(exec_space,X_MASK); // do swaps over all 3 dimensions @@ -754,12 +750,10 @@ void CommKokkos::borders_device() { if (sendflag) { if (!bordergroup || ineed >= 2) { if (style == SINGLE) { - typename ArrayTypes::tdual_int_1d total_send("TS",1); + DAT::tdual_int_1d total_send("TS",1); total_send.h_view(0) = 0; - if(exec_space == Device) { - total_send.template modify(); - total_send.template sync(); - } + total_send.template modify(); + total_send.template sync(); BuildBorderListFunctor f(atomKK->k_x,k_sendlist, total_send,nfirst,nlast,dim,lo,hi,iswap,maxsendlist[iswap]); @@ -773,16 +767,17 @@ void CommKokkos::borders_device() { if(total_send.h_view(0) >= maxsendlist[iswap]) { grow_list(iswap,total_send.h_view(0)); k_sendlist.modify(); + total_send.h_view(0) = 0; - if(exec_space == Device) { - total_send.template modify(); - total_send.template sync(); - } + total_send.template modify(); + total_send.template sync(); + BuildBorderListFunctor f(atomKK->k_x,k_sendlist, total_send,nfirst,nlast,dim,lo,hi,iswap,maxsendlist[iswap]); Kokkos::TeamPolicy config((nlast-nfirst+127)/128,128); Kokkos::parallel_for(config,f); DeviceType::fence(); + total_send.template modify(); total_send.template sync(); } @@ -909,9 +904,7 @@ void CommKokkos::borders_device() { // reset global->local map - if (exec_space == Host) k_sendlist.sync(); - atomKK->modified(exec_space,ALL_MASK); - DeviceType::fence(); + k_sendlist.template modify(); atomKK->sync(Host,TAG_MASK); if (map_style) atom->map_set(); } -- GitLab From 5cd1dc93dc5956a89a1ba42858c69abc84488958 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 31 Jul 2017 15:32:20 -0600 Subject: [PATCH 263/337] Revert 7edb294b447c62d3d2dbd4f9df984fb8d14f9a7c temporarily --- src/KOKKOS/comm_kokkos.cpp | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/KOKKOS/comm_kokkos.cpp b/src/KOKKOS/comm_kokkos.cpp index adc8da501c..2b19908396 100644 --- a/src/KOKKOS/comm_kokkos.cpp +++ b/src/KOKKOS/comm_kokkos.cpp @@ -472,6 +472,8 @@ void CommKokkos::exchange_device() subhi = domain->subhi_lamda; } + atomKK->sync(ExecutionSpaceFromDevice::space,ALL_MASK); + // loop over dimensions for (int dim = 0; dim < 3; dim++) { @@ -600,6 +602,8 @@ void CommKokkos::exchange_device() } + atomKK->modified(ExecutionSpaceFromDevice::space,ALL_MASK); + if (atom->firstgroupname) { /* this is not yet implemented with Kokkos */ atomKK->sync(Host,ALL_MASK); @@ -700,8 +704,8 @@ void CommKokkos::borders_device() { AtomVecKokkos *avec = (AtomVecKokkos *) atom->avec; ExecutionSpace exec_space = ExecutionSpaceFromDevice::space; - k_sendlist.sync(); - atomKK->sync(exec_space,X_MASK); + k_sendlist.modify(); + atomKK->sync(exec_space,ALL_MASK); // do swaps over all 3 dimensions @@ -750,10 +754,12 @@ void CommKokkos::borders_device() { if (sendflag) { if (!bordergroup || ineed >= 2) { if (style == SINGLE) { - DAT::tdual_int_1d total_send("TS",1); + typename ArrayTypes::tdual_int_1d total_send("TS",1); total_send.h_view(0) = 0; - total_send.template modify(); - total_send.template sync(); + if(exec_space == Device) { + total_send.template modify(); + total_send.template sync(); + } BuildBorderListFunctor f(atomKK->k_x,k_sendlist, total_send,nfirst,nlast,dim,lo,hi,iswap,maxsendlist[iswap]); @@ -767,17 +773,16 @@ void CommKokkos::borders_device() { if(total_send.h_view(0) >= maxsendlist[iswap]) { grow_list(iswap,total_send.h_view(0)); k_sendlist.modify(); - total_send.h_view(0) = 0; - total_send.template modify(); - total_send.template sync(); - + if(exec_space == Device) { + total_send.template modify(); + total_send.template sync(); + } BuildBorderListFunctor f(atomKK->k_x,k_sendlist, total_send,nfirst,nlast,dim,lo,hi,iswap,maxsendlist[iswap]); Kokkos::TeamPolicy config((nlast-nfirst+127)/128,128); Kokkos::parallel_for(config,f); DeviceType::fence(); - total_send.template modify(); total_send.template sync(); } @@ -904,7 +909,9 @@ void CommKokkos::borders_device() { // reset global->local map - k_sendlist.template modify(); + if (exec_space == Host) k_sendlist.sync(); + atomKK->modified(exec_space,ALL_MASK); + DeviceType::fence(); atomKK->sync(Host,TAG_MASK); if (map_style) atom->map_set(); } -- GitLab From 9e85b3178a14f45fc5ab88e1408e71dc15a4cf38 Mon Sep 17 00:00:00 2001 From: jrgissing Date: Thu, 17 Aug 2017 21:39:25 -0600 Subject: [PATCH 264/337] molecule maxspecial value corrected when specials autogenerated --- src/molecule.cpp | 52 +++++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/src/molecule.cpp b/src/molecule.cpp index b0fec4bcbc..77ceea8781 100644 --- a/src/molecule.cpp +++ b/src/molecule.cpp @@ -615,14 +615,12 @@ void Molecule::read(int flag) } // auto-generate special bonds if needed and not in file - // set maxspecial on first pass, so allocate() has a size if (bondflag && specialflag == 0) { if (domain->box_exist == 0) error->all(FLERR,"Cannot auto-generate special bonds before " "simulation box is defined"); - maxspecial = atom->maxspecial; if (flag) { special_generate(); specialflag = 1; @@ -1115,6 +1113,9 @@ void Molecule::special_generate() tagint atom1,atom2; int count[natoms]; + // temporary special array + tagint spec_temp[natoms][atom->maxspecial]; + for (int i = 0; i < natoms; i++) count[i] = 0; // 1-2 neighbors @@ -1126,10 +1127,10 @@ void Molecule::special_generate() atom2 = bond_atom[i][j]-1; nspecial[i][0]++; nspecial[atom2][0]++; - if (count[i] >= maxspecial || count[atom2] >= maxspecial) + if (count[i] >= atom->maxspecial || count[atom2] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - special[i][count[i]++] = atom2 + 1; - special[atom2][count[atom2]++] = i + 1; + spec_temp[i][count[i]++] = atom2 + 1; + spec_temp[atom2][count[atom2]++] = i + 1; } } } else { @@ -1138,9 +1139,9 @@ void Molecule::special_generate() for (int j = 0; j < num_bond[i]; j++) { atom1 = i; atom2 = bond_atom[i][j]; - if (count[atom1] >= maxspecial) + if (count[atom1] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - special[i][count[atom1]++] = atom2; + spec_temp[i][count[atom1]++] = atom2; } } } @@ -1152,18 +1153,18 @@ void Molecule::special_generate() int dedup; for (int i = 0; i < natoms; i++) { for (int m = 0; m < nspecial[i][0]; m++) { - for (int j = 0; j < nspecial[special[i][m]-1][0]; j++) { + for (int j = 0; j < nspecial[spec_temp[i][m]-1][0]; j++) { dedup = 0; for (int k =0; k < count[i]; k++) { - if (special[special[i][m]-1][j] == special[i][k] || - special[special[i][m]-1][j] == i+1) { + if (spec_temp[spec_temp[i][m]-1][j] == spec_temp[i][k] || + spec_temp[spec_temp[i][m]-1][j] == i+1) { dedup = 1; } } if (!dedup) { - if (count[i] >= maxspecial) + if (count[i] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - special[i][count[i]++] = special[special[i][m]-1][j]; + spec_temp[i][count[i]++] = spec_temp[spec_temp[i][m]-1][j]; nspecial[i][1]++; } } @@ -1176,23 +1177,32 @@ void Molecule::special_generate() for (int i = 0; i < natoms; i++) { for (int m = nspecial[i][0]; m < nspecial[i][1]; m++) { - for (int j = 0; j < nspecial[special[i][m]-1][0]; j++) { + for (int j = 0; j < nspecial[spec_temp[i][m]-1][0]; j++) { dedup = 0; for (int k =0; k < count[i]; k++) { - if (special[special[i][m]-1][j] == special[i][k] || - special[special[i][m]-1][j] == i+1) { + if (spec_temp[spec_temp[i][m]-1][j] == spec_temp[i][k] || + spec_temp[spec_temp[i][m]-1][j] == i+1) { dedup = 1; } } if (!dedup) { - if (count[i] >= maxspecial) + if (count[i] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - special[i][count[i]++] = special[special[i][m]-1][j]; + spec_temp[i][count[i]++] = spec_temp[spec_temp[i][m]-1][j]; nspecial[i][2]++; } } } } + + maxspecial = 0; + for (int i = 0; i < natoms; i++) + maxspecial = MAX(maxspecial,nspecial[i][2]); + + memory->create(special,natoms,maxspecial,"molecule:special"); + for (int i = 0; i < natoms; i++) + for (int j = 0; j < nspecial[i][2]; j++) + special[i][j] = spec_temp[i][j]; } /* ---------------------------------------------------------------------- @@ -1473,7 +1483,7 @@ void Molecule::allocate() if (radiusflag) memory->create(radius,natoms,"molecule:radius"); if (rmassflag) memory->create(rmass,natoms,"molecule:rmass"); - // always allocate num_bond,num_angle,etc and special+nspecial + // always allocate num_bond,num_angle,etc and nspecial // even if not in molecule file, initialize to 0 // this is so methods that use these arrays don't have to check they exist @@ -1485,12 +1495,12 @@ void Molecule::allocate() for (int i = 0; i < natoms; i++) num_dihedral[i] = 0; memory->create(num_improper,natoms,"molecule:num_improper"); for (int i = 0; i < natoms; i++) num_improper[i] = 0; - - memory->create(special,natoms,maxspecial,"molecule:special"); - memory->create(nspecial,natoms,3,"molecule:nspecial"); for (int i = 0; i < natoms; i++) nspecial[i][0] = nspecial[i][1] = nspecial[i][2] = 0; + + if (specialflag) + memory->create(special,natoms,maxspecial,"molecule:special"); if (bondflag) { memory->create(bond_type,natoms,bond_per_atom, -- GitLab From bf7cff73d42a2fc446942be5be736808bb484c98 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2017 14:23:48 -0400 Subject: [PATCH 265/337] allocate the temporary special array on the heap and not the stack (it may get too big quickly) and clear the array before use. --- src/molecule.cpp | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/molecule.cpp b/src/molecule.cpp index 77ceea8781..3a93fdb1e2 100644 --- a/src/molecule.cpp +++ b/src/molecule.cpp @@ -1113,9 +1113,12 @@ void Molecule::special_generate() tagint atom1,atom2; int count[natoms]; - // temporary special array - tagint spec_temp[natoms][atom->maxspecial]; - + // temporary array for special atoms + + tagint **tmpspecial; + memory->create(tmpspecial,natoms,atom->maxspecial,"molecule:tmpspecial"); + memset(&tmpspecial[0][0],0,sizeof(tagint)*natoms*atom->maxspecial); + for (int i = 0; i < natoms; i++) count[i] = 0; // 1-2 neighbors @@ -1129,8 +1132,8 @@ void Molecule::special_generate() nspecial[atom2][0]++; if (count[i] >= atom->maxspecial || count[atom2] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - spec_temp[i][count[i]++] = atom2 + 1; - spec_temp[atom2][count[atom2]++] = i + 1; + tmpspecial[i][count[i]++] = atom2 + 1; + tmpspecial[atom2][count[atom2]++] = i + 1; } } } else { @@ -1141,7 +1144,7 @@ void Molecule::special_generate() atom2 = bond_atom[i][j]; if (count[atom1] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - spec_temp[i][count[atom1]++] = atom2; + tmpspecial[i][count[atom1]++] = atom2; } } } @@ -1153,18 +1156,18 @@ void Molecule::special_generate() int dedup; for (int i = 0; i < natoms; i++) { for (int m = 0; m < nspecial[i][0]; m++) { - for (int j = 0; j < nspecial[spec_temp[i][m]-1][0]; j++) { + for (int j = 0; j < nspecial[tmpspecial[i][m]-1][0]; j++) { dedup = 0; for (int k =0; k < count[i]; k++) { - if (spec_temp[spec_temp[i][m]-1][j] == spec_temp[i][k] || - spec_temp[spec_temp[i][m]-1][j] == i+1) { + if (tmpspecial[tmpspecial[i][m]-1][j] == tmpspecial[i][k] || + tmpspecial[tmpspecial[i][m]-1][j] == i+1) { dedup = 1; } } if (!dedup) { if (count[i] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - spec_temp[i][count[i]++] = spec_temp[spec_temp[i][m]-1][j]; + tmpspecial[i][count[i]++] = tmpspecial[tmpspecial[i][m]-1][j]; nspecial[i][1]++; } } @@ -1177,32 +1180,34 @@ void Molecule::special_generate() for (int i = 0; i < natoms; i++) { for (int m = nspecial[i][0]; m < nspecial[i][1]; m++) { - for (int j = 0; j < nspecial[spec_temp[i][m]-1][0]; j++) { + for (int j = 0; j < nspecial[tmpspecial[i][m]-1][0]; j++) { dedup = 0; for (int k =0; k < count[i]; k++) { - if (spec_temp[spec_temp[i][m]-1][j] == spec_temp[i][k] || - spec_temp[spec_temp[i][m]-1][j] == i+1) { + if (tmpspecial[tmpspecial[i][m]-1][j] == tmpspecial[i][k] || + tmpspecial[tmpspecial[i][m]-1][j] == i+1) { dedup = 1; } } if (!dedup) { if (count[i] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - spec_temp[i][count[i]++] = spec_temp[spec_temp[i][m]-1][j]; + tmpspecial[i][count[i]++] = tmpspecial[tmpspecial[i][m]-1][j]; nspecial[i][2]++; } } } } - + maxspecial = 0; for (int i = 0; i < natoms; i++) maxspecial = MAX(maxspecial,nspecial[i][2]); - + memory->create(special,natoms,maxspecial,"molecule:special"); for (int i = 0; i < natoms; i++) for (int j = 0; j < nspecial[i][2]; j++) - special[i][j] = spec_temp[i][j]; + special[i][j] = tmpspecial[i][j]; + + memory->destroy(tmpspecial); } /* ---------------------------------------------------------------------- -- GitLab From d671a04274f9b3d7d0e07c7dd8ee04c7af24db5d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2017 14:24:09 -0400 Subject: [PATCH 266/337] whitespace cleanup --- src/molecule.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/molecule.cpp b/src/molecule.cpp index 3a93fdb1e2..7dbefdd82f 100644 --- a/src/molecule.cpp +++ b/src/molecule.cpp @@ -173,7 +173,7 @@ Molecule::~Molecule() compute center = geometric center of molecule also compute: dx = displacement of each atom from center - molradius = radius of molecule from center + molradius = radius of molecule from center including finite-size particles or body particles ------------------------------------------------------------------------- */ @@ -474,7 +474,7 @@ void Molecule::read(int flag) } else if (strstr(line,"body")) { bodyflag = 1; avec_body = (AtomVecBody *) atom->style_match("body"); - if (!avec_body) + if (!avec_body) error->all(FLERR,"Molecule file requires atom style body"); nmatch = sscanf(line,"%d %d",&nibody,&ndbody); nwant = 2; @@ -486,7 +486,7 @@ void Molecule::read(int flag) // error checks - if (natoms < 1) + if (natoms < 1) error->all(FLERR,"No count or invalid atom count in molecule file"); if (nbonds < 0) error->all(FLERR,"Invalid bond count in molecule file"); if (nangles < 0) error->all(FLERR,"Invalid angle count in molecule file"); @@ -633,7 +633,7 @@ void Molecule::read(int flag) if (bodyflag) { radiusflag = 1; - if (natoms != 1) + if (natoms != 1) error->all(FLERR,"Molecule natoms must be 1 for body particle"); if (sizescale != 1.0) error->all(FLERR,"Molecule sizescale must be 1.0 for body particle"); @@ -1331,19 +1331,19 @@ void Molecule::body(int flag, int pflag, char *line) ncount = atom->count_words(line); if (ncount == 0) error->one(FLERR,"Too few values in body section of molecule file"); - if (nword+ncount > nparam) + if (nword+ncount > nparam) error->all(FLERR,"Too many values in body section of molecule file"); - + if (flag) { if (pflag == 0) { ibodyparams[nword++] = force->inumeric(FLERR,strtok(line," \t\n\r\f")); for (i = 1; i < ncount; i++) - ibodyparams[nword++] = + ibodyparams[nword++] = force->inumeric(FLERR,strtok(NULL," \t\n\r\f")); } else { dbodyparams[nword++] = force->numeric(FLERR,strtok(line," \t\n\r\f")); for (i = 1; i < ncount; i++) - dbodyparams[nword++] = + dbodyparams[nword++] = force->numeric(FLERR,strtok(NULL," \t\n\r\f")); } } else nword += ncount; @@ -1503,8 +1503,8 @@ void Molecule::allocate() memory->create(nspecial,natoms,3,"molecule:nspecial"); for (int i = 0; i < natoms; i++) nspecial[i][0] = nspecial[i][1] = nspecial[i][2] = 0; - - if (specialflag) + + if (specialflag) memory->create(special,natoms,maxspecial,"molecule:special"); if (bondflag) { -- GitLab From 6aa756968d40f71b65af0e849bdd647b6d08da26 Mon Sep 17 00:00:00 2001 From: Amulya Date: Fri, 18 Aug 2017 15:21:49 -0400 Subject: [PATCH 267/337] Temper_NPT and example New function that allows for parallel tempering (replica exchange) in MD in LAMMPS in the isothermal-isobaric ensemble (NPT) Similar to temper which works in the canonical (NVT) ensemble. An example is included that uses temper_npt --- src/REPLICA/data.peptide | 6531 ++++++++++++++++++++++++++++++++++++ src/REPLICA/in.temper_npt | 32 + src/REPLICA/temper_npt.cpp | 381 +++ src/REPLICA/temper_npt.h | 118 + 4 files changed, 7062 insertions(+) create mode 100644 src/REPLICA/data.peptide create mode 100644 src/REPLICA/in.temper_npt create mode 100644 src/REPLICA/temper_npt.cpp create mode 100644 src/REPLICA/temper_npt.h diff --git a/src/REPLICA/data.peptide b/src/REPLICA/data.peptide new file mode 100644 index 0000000000..f9dfb6e485 --- /dev/null +++ b/src/REPLICA/data.peptide @@ -0,0 +1,6531 @@ +LAMMPS Description + + 2004 atoms + 1365 bonds + 786 angles + 207 dihedrals + 12 impropers + + 14 atom types + 18 bond types + 31 angle types + 21 dihedral types + 2 improper types + + 36.840194 64.211560 xlo xhi + 41.013691 68.385058 ylo yhi + 29.768095 57.139462 zlo zhi + +Masses + + 1 12.0110 + 2 12.0110 + 3 15.9990 + 4 1.0080 + 5 14.0070 + 6 12.0110 + 7 12.0110 + 8 12.0110 + 9 15.9990 + 10 1.0080 + 11 1.0080 + 12 32.0660 + 13 16.0000 + 14 1.0100 + +Pair Coeffs + + 1 0.110000 3.563595 0.110000 3.563595 + 2 0.080000 3.670503 0.010000 3.385415 + 3 0.120000 3.029056 0.120000 2.494516 + 4 0.022000 2.351973 0.022000 2.351973 + 5 0.200000 3.296325 0.200000 2.761786 + 6 0.020000 4.053589 0.010000 3.385415 + 7 0.055000 3.875410 0.010000 3.385415 + 8 0.070000 3.550053 0.070000 3.550053 + 9 0.152100 3.153782 0.152100 3.153782 + 10 0.046000 0.400014 0.046000 0.400014 + 11 0.030000 2.420037 0.030000 2.420037 + 12 0.450000 3.563595 0.450000 3.563595 + 13 0.152100 3.150570 0.152100 3.150570 + 14 0.046000 0.400014 0.046000 0.400014 + +Bond Coeffs + + 1 249.999999 1.490000 + 2 620.000001 1.230000 + 3 370.000000 1.345000 + 4 322.000001 1.111000 + 5 319.999999 1.430000 + 6 440.000000 0.997000 + 7 222.500001 1.538000 + 8 330.000001 1.080000 + 9 230.000000 1.490000 + 10 309.000001 1.111000 + 11 305.000000 1.375000 + 12 340.000001 1.080000 + 13 334.300000 1.411000 + 14 545.000001 0.960000 + 15 222.500001 1.530000 + 16 198.000000 1.818000 + 17 239.999999 1.816000 + 18 450.000000 0.957200 + +Angle Coeffs + + 1 33.000000 109.500000 30.000000 2.163000 + 2 50.000000 120.000000 0.000000 0.000000 + 3 34.000000 123.000000 0.000000 0.000000 + 4 80.000000 121.000000 0.000000 0.000000 + 5 80.000000 116.500000 0.000000 0.000000 + 6 80.000000 122.500000 0.000000 0.000000 + 7 35.500000 108.400000 5.400000 1.802000 + 8 50.000000 107.000000 0.000000 0.000000 + 9 70.000000 113.500000 0.000000 0.000000 + 10 48.000000 108.000000 0.000000 0.000000 + 11 35.000000 117.000000 0.000000 0.000000 + 12 51.800000 107.500000 0.000000 0.000000 + 13 33.430000 110.100000 22.530000 2.179000 + 14 52.000000 108.000000 0.000000 0.000000 + 15 50.000000 109.500000 0.000000 0.000000 + 16 35.000000 111.000000 0.000000 0.000000 + 17 45.800000 122.300000 0.000000 0.000000 + 18 49.300000 107.500000 0.000000 0.000000 + 19 40.000000 120.000000 35.000000 2.416200 + 20 30.000000 120.000000 22.000000 2.152500 + 21 45.200000 120.000000 0.000000 0.000000 + 22 65.000000 108.000000 0.000000 0.000000 + 23 35.500000 109.000000 5.400000 1.802000 + 24 36.000000 115.000000 0.000000 0.000000 + 25 58.350000 113.500000 11.160000 2.561000 + 26 58.000000 114.500000 0.000000 0.000000 + 27 26.500000 110.100000 22.530000 2.179000 + 28 34.000000 95.000000 0.000000 0.000000 + 29 46.100000 111.300000 0.000000 0.000000 + 30 51.500000 109.500000 0.000000 0.000000 + 31 55.000000 104.520000 0.000000 0.000000 + +Dihedral Coeffs + + 1 0.200000 1 180 1.000000 + 2 1.800000 1 0 1.000000 + 3 0.000000 1 0 1.000000 + 4 1.600000 1 0 0.500000 + 5 2.500000 2 180 0.500000 + 6 2.500000 2 180 1.000000 + 7 0.600000 1 0 1.000000 + 8 0.200000 3 0 1.000000 + 9 0.230000 2 180 1.000000 + 10 0.040000 3 0 1.000000 + 11 1.400000 1 0 1.000000 + 12 3.100000 2 180 1.000000 + 13 4.200000 2 180 1.000000 + 14 3.100000 2 180 0.500000 + 15 0.990000 2 180 1.000000 + 16 2.400000 2 180 1.000000 + 17 0.195000 3 0 1.000000 + 18 0.240000 1 180 0.500000 + 19 0.370000 3 0 0.500000 + 20 0.280000 3 0 1.000000 + 21 0.010000 3 0 1.000000 + +Improper Coeffs + + 1 120.000000 0.000000 + 2 20.000000 0.000000 + +Atoms + + 1 1 1 0.510 43.99993 58.52678 36.78550 0 0 0 + 2 1 2 -0.270 45.10395 58.23499 35.86693 0 0 0 + 3 1 3 -0.510 43.81519 59.54928 37.43995 0 0 0 + 4 1 4 0.090 45.71714 57.34797 36.13434 0 0 0 + 5 1 4 0.090 45.72261 59.13657 35.67007 0 0 0 + 6 1 4 0.090 44.66624 58.09539 34.85538 0 0 0 + 7 1 5 -0.470 43.28193 57.47427 36.91953 0 0 0 + 8 1 6 0.070 42.07157 57.45486 37.62418 0 0 0 + 9 1 1 0.510 42.19985 57.57789 39.12163 0 0 0 + 10 1 3 -0.510 41.88641 58.62251 39.70398 0 0 0 + 11 1 7 -0.180 41.25052 56.15304 37.41811 0 0 0 + 12 1 8 0.000 40.88511 55.94638 35.97460 0 0 0 + 13 1 8 -0.115 41.48305 54.96372 35.11223 0 0 0 + 14 1 8 -0.115 39.74003 56.60996 35.46443 0 0 0 + 15 1 8 -0.115 41.02111 54.75715 33.80764 0 0 0 + 16 1 8 -0.115 39.26180 56.39194 34.12024 0 0 0 + 17 1 8 0.110 39.92330 55.46092 33.27135 0 0 0 + 18 1 9 -0.540 39.48164 55.22919 31.91865 0 0 0 + 19 1 10 0.310 43.60633 56.61693 36.52744 0 0 0 + 20 1 4 0.090 41.49619 58.31145 37.30543 0 0 0 + 21 1 4 0.090 41.88498 55.29476 37.72657 0 0 0 + 22 1 4 0.090 40.30899 56.19690 38.00627 0 0 0 + 23 1 11 0.115 42.31528 54.36176 35.44606 0 0 0 + 24 1 11 0.115 39.26330 57.31216 36.13230 0 0 0 + 25 1 11 0.115 41.62695 54.10606 33.19490 0 0 0 + 26 1 11 0.115 38.42147 56.98236 33.78612 0 0 0 + 27 1 10 0.430 38.78233 55.86217 31.74004 0 0 0 + 28 1 5 -0.470 42.79933 56.56370 39.79000 0 0 0 + 29 1 7 -0.020 42.96709 56.75379 41.28116 0 0 0 + 30 1 1 0.510 43.83019 55.68988 41.92255 0 0 0 + 31 1 3 -0.510 44.98521 55.93104 42.21713 0 0 0 + 32 1 10 0.310 43.13466 55.75696 39.30966 0 0 0 + 33 1 4 0.090 42.04692 56.86721 41.83507 0 0 0 + 34 1 4 0.090 43.52938 57.66324 41.43329 0 0 0 + 35 1 5 -0.470 43.26792 54.43342 42.07043 0 0 0 + 36 1 7 -0.020 43.92411 53.28930 42.63327 0 0 0 + 37 1 1 0.510 43.51012 53.02289 44.10510 0 0 0 + 38 1 3 -0.510 42.35086 53.07863 44.50806 0 0 0 + 39 1 10 0.310 42.28859 54.34993 41.90323 0 0 0 + 40 1 4 0.090 44.98464 53.47473 42.54797 0 0 0 + 41 1 4 0.090 43.49715 52.54787 41.97419 0 0 0 + 42 1 5 -0.470 44.51925 52.64535 44.88133 0 0 0 + 43 1 6 0.070 44.47588 52.35054 46.24397 0 0 0 + 44 1 1 0.510 45.40218 53.34579 46.94730 0 0 0 + 45 1 3 -0.510 45.23520 54.55893 46.92038 0 0 0 + 46 1 7 -0.180 44.77960 50.82831 46.50232 0 0 0 + 47 1 8 0.000 43.72184 49.84551 45.98093 0 0 0 + 48 1 8 -0.115 44.14810 49.00477 44.97195 0 0 0 + 49 1 8 -0.115 42.43499 49.66652 46.53541 0 0 0 + 50 1 8 -0.115 43.26154 48.00434 44.46769 0 0 0 + 51 1 8 -0.115 41.54732 48.79670 45.95416 0 0 0 + 52 1 8 -0.115 41.98220 47.90746 44.95574 0 0 0 + 53 1 10 0.310 45.39510 52.50937 44.42482 0 0 0 + 54 1 4 0.090 43.51312 52.58974 46.67092 0 0 0 + 55 1 4 0.090 44.89709 50.54313 47.56965 0 0 0 + 56 1 4 0.090 45.72096 50.49337 46.01654 0 0 0 + 57 1 11 0.115 45.13573 49.07933 44.54134 0 0 0 + 58 1 11 0.115 42.07869 50.34816 47.29358 0 0 0 + 59 1 11 0.115 43.47793 47.29281 43.68456 0 0 0 + 60 1 11 0.115 40.52625 48.76134 46.30425 0 0 0 + 61 1 11 0.115 41.35446 47.13287 44.54059 0 0 0 + 62 1 5 -0.470 46.41448 52.86278 47.68291 0 0 0 + 63 1 6 0.070 47.25136 53.68184 48.51163 0 0 0 + 64 1 1 0.510 48.33905 54.40097 47.73886 0 0 0 + 65 1 3 -0.510 49.27132 53.85220 47.16549 0 0 0 + 66 1 7 -0.180 47.88329 52.75681 49.60227 0 0 0 + 67 1 7 -0.140 48.82515 53.51102 50.61578 0 0 0 + 68 1 12 -0.090 48.12492 55.00373 51.43039 0 0 0 + 69 1 2 -0.220 47.70783 54.12980 53.04072 0 0 0 + 70 1 10 0.310 46.67199 51.90088 47.73231 0 0 0 + 71 1 4 0.090 46.64593 54.43552 48.99310 0 0 0 + 72 1 4 0.090 48.41361 51.90817 49.11968 0 0 0 + 73 1 4 0.090 47.08748 52.35196 50.26341 0 0 0 + 74 1 4 0.090 49.16067 52.81305 51.41238 0 0 0 + 75 1 4 0.090 49.73705 53.67062 50.00155 0 0 0 + 76 1 4 0.090 47.18593 54.84215 53.71488 0 0 0 + 77 1 4 0.090 48.69939 53.91624 53.49408 0 0 0 + 78 1 4 0.090 47.19749 53.18294 52.76264 0 0 0 + 79 1 5 -0.470 48.34472 55.71775 47.80498 0 0 0 + 80 1 2 -0.110 49.37792 56.51754 47.29492 0 0 0 + 81 1 10 0.310 47.51777 56.11617 48.19410 0 0 0 + 82 1 4 0.090 50.41495 56.13038 47.38980 0 0 0 + 83 1 4 0.090 49.23515 57.51193 47.76940 0 0 0 + 84 1 4 0.090 49.28612 56.52094 46.18773 0 0 0 + 85 2 13 -0.834 52.28049 45.72878 41.48140 -1 0 1 + 86 2 14 0.417 51.97210 46.07066 40.64218 -1 0 1 + 87 2 14 0.417 52.43689 44.79855 41.31868 -1 0 1 + 88 3 13 -0.834 43.84472 45.66062 47.17660 -2 -1 -1 + 89 3 14 0.417 43.42120 44.88337 46.81226 -2 -1 -1 + 90 3 14 0.417 44.31099 46.04907 46.43636 -2 -1 -1 + 91 4 13 -0.834 51.27805 50.25403 54.67397 0 0 -1 + 92 4 14 0.417 50.81295 50.23728 53.83753 0 0 -1 + 93 4 14 0.417 52.00273 49.63953 54.55795 0 0 -1 + 94 5 13 -0.834 44.71976 53.72011 56.43834 -1 0 -1 + 95 5 14 0.417 44.56050 53.84218 55.50241 -1 0 -1 + 96 5 14 0.417 44.91937 52.78829 56.52828 -1 0 -1 + 97 6 13 -0.834 37.07074 62.07204 53.35752 -1 -1 -1 + 98 6 14 0.417 64.17057 61.77089 52.49043 -2 -1 -1 + 99 6 14 0.417 37.90147 62.52273 53.20573 -1 -1 -1 + 100 7 13 -0.834 38.31817 66.10834 49.17406 0 -1 0 + 101 7 14 0.417 37.39300 65.93985 48.99534 0 -1 0 + 102 7 14 0.417 38.36506 66.20528 50.12520 0 -1 0 + 103 8 13 -0.834 60.90915 45.97690 35.53863 -1 -1 1 + 104 8 14 0.417 61.19898 46.87819 35.39745 -1 -1 1 + 105 8 14 0.417 59.98680 45.97855 35.28269 -1 -1 1 + 106 9 13 -0.834 54.33913 64.47210 51.00391 -1 -2 0 + 107 9 14 0.417 54.43191 63.71377 50.42724 -1 -2 0 + 108 9 14 0.417 55.16289 64.94980 50.90662 -1 -2 0 + 109 10 13 -0.834 44.58017 54.03749 53.84708 1 0 -1 + 110 10 14 0.417 43.87040 54.43768 53.34476 1 0 -1 + 111 10 14 0.417 45.02999 53.47261 53.21873 1 0 -1 + 112 11 13 -0.834 45.48693 52.12363 34.38241 0 -1 1 + 113 11 14 0.417 45.46898 52.67450 33.59981 0 -1 1 + 114 11 14 0.417 44.61476 52.22113 34.76457 0 -1 1 + 115 12 13 -0.834 60.15770 61.68799 54.74753 1 0 -2 + 116 12 14 0.417 59.23977 61.46439 54.59378 1 0 -2 + 117 12 14 0.417 60.43785 61.08922 55.43980 1 0 -2 + 118 13 13 -0.834 60.74732 66.72156 42.80906 1 -2 0 + 119 13 14 0.417 60.34713 66.21969 42.09898 1 -2 0 + 120 13 14 0.417 60.92444 66.07344 43.49082 1 -2 0 + 121 14 13 -0.834 60.82245 64.17281 50.54212 0 0 0 + 122 14 14 0.417 61.43571 64.88448 50.35863 0 0 0 + 123 14 14 0.417 60.87804 64.04633 51.48930 0 0 0 + 124 15 13 -0.834 36.92704 63.01353 56.05215 0 -1 0 + 125 15 14 0.417 37.10744 62.17054 56.46815 0 -1 0 + 126 15 14 0.417 64.06237 62.79109 55.15157 -1 -1 0 + 127 16 13 -0.834 48.35559 58.70568 56.14001 1 0 0 + 128 16 14 0.417 48.11655 59.48087 55.63191 1 0 0 + 129 16 14 0.417 47.93212 58.83502 56.98865 1 0 0 + 130 17 13 -0.834 58.14651 57.18542 51.08241 0 -1 -1 + 131 17 14 0.417 57.88523 56.72609 51.88052 0 -1 -1 + 132 17 14 0.417 57.35121 57.63116 50.79076 0 -1 -1 + 133 18 13 -0.834 58.09837 59.68005 36.16995 -1 0 0 + 134 18 14 0.417 58.25901 58.76822 36.41283 -1 0 0 + 135 18 14 0.417 58.56239 60.19049 36.83355 -1 0 0 + 136 19 13 -0.834 52.29019 60.51169 50.55611 0 -2 1 + 137 19 14 0.417 52.61972 60.01708 51.30645 0 -2 1 + 138 19 14 0.417 52.55621 59.99722 49.79401 0 -2 1 + 139 20 13 -0.834 41.36642 50.33705 42.98530 0 -1 -1 + 140 20 14 0.417 41.27846 50.09969 43.90844 0 -1 -1 + 141 20 14 0.417 40.99321 51.21659 42.92708 0 -1 -1 + 142 21 13 -0.834 53.76920 67.02645 32.18667 -1 0 1 + 143 21 14 0.417 53.59447 67.18509 31.25901 -1 0 1 + 144 21 14 0.417 54.65308 67.36647 32.32596 -1 0 1 + 145 22 13 -0.834 57.83691 45.33663 46.94671 0 0 -2 + 146 22 14 0.417 57.36287 45.59552 46.15647 0 0 -2 + 147 22 14 0.417 58.62995 44.91017 46.62197 0 0 -2 + 148 23 13 -0.834 60.34518 45.83000 45.57964 -1 0 0 + 149 23 14 0.417 60.61871 44.93757 45.79176 -1 0 0 + 150 23 14 0.417 61.09971 46.21212 45.13141 -1 0 0 + 151 24 13 -0.834 55.97902 46.85046 56.80163 0 1 1 + 152 24 14 0.417 56.57528 46.69952 30.16370 0 1 2 + 153 24 14 0.417 55.81156 47.79276 56.81850 0 1 1 + 154 25 13 -0.834 57.54668 45.52135 31.46139 -1 0 1 + 155 25 14 0.417 58.36291 46.00311 31.32743 -1 0 1 + 156 25 14 0.417 57.54151 45.31312 32.39566 -1 0 1 + 157 26 13 -0.834 58.03029 52.86783 46.33564 -1 -1 0 + 158 26 14 0.417 58.13662 52.56730 47.23820 -1 -1 0 + 159 26 14 0.417 58.81317 52.55269 45.88396 -1 -1 0 + 160 27 13 -0.834 62.89253 60.86549 46.75131 -2 -1 0 + 161 27 14 0.417 63.83924 60.74010 46.81653 -2 -1 0 + 162 27 14 0.417 62.51896 60.12788 47.23361 -2 -1 0 + 163 28 13 -0.834 43.29171 48.58106 31.82206 -1 0 2 + 164 28 14 0.417 43.07532 49.46362 32.12290 -1 0 2 + 165 28 14 0.417 43.82286 48.21072 32.52701 -1 0 2 + 166 29 13 -0.834 64.19867 44.17673 45.81391 -1 1 -1 + 167 29 14 0.417 63.72986 44.44010 45.02202 -1 1 -1 + 168 29 14 0.417 37.02069 43.24876 45.68087 0 1 -1 + 169 30 13 -0.834 50.42749 42.01163 53.60484 0 2 0 + 170 30 14 0.417 51.03177 41.90084 52.87081 0 2 0 + 171 30 14 0.417 50.77279 42.76181 54.08882 0 2 0 + 172 31 13 -0.834 38.63739 61.71113 49.95150 1 0 0 + 173 31 14 0.417 38.55432 62.15607 49.10808 1 0 0 + 174 31 14 0.417 37.81718 61.22751 50.04950 1 0 0 + 175 32 13 -0.834 61.47262 53.02922 33.08309 -1 -1 0 + 176 32 14 0.417 61.21894 52.67931 33.93717 -1 -1 0 + 177 32 14 0.417 61.89351 53.86564 33.28182 -1 -1 0 + 178 33 13 -0.834 54.44545 60.06011 48.63522 -1 0 1 + 179 33 14 0.417 54.80032 60.94424 48.72810 -1 0 1 + 180 33 14 0.417 54.09041 60.03614 47.74662 -1 0 1 + 181 34 13 -0.834 56.34364 60.90201 52.60838 -1 -1 0 + 182 34 14 0.417 56.48857 60.19161 53.23333 -1 -1 0 + 183 34 14 0.417 56.17362 61.67024 53.15351 -1 -1 0 + 184 35 13 -0.834 56.05881 51.84328 55.76103 -1 0 0 + 185 35 14 0.417 55.59060 51.75146 54.93121 -1 0 0 + 186 35 14 0.417 55.46974 52.35732 56.31335 -1 0 0 + 187 36 13 -0.834 39.00621 42.74743 30.97845 0 0 1 + 188 36 14 0.417 39.67620 42.11390 30.72152 0 0 1 + 189 36 14 0.417 39.43456 43.29673 31.63499 0 0 1 + 190 37 13 -0.834 46.77585 55.39774 30.24026 0 1 0 + 191 37 14 0.417 46.10274 54.90237 29.77360 0 1 0 + 192 37 14 0.417 46.39626 56.26890 30.35527 0 1 0 + 193 38 13 -0.834 45.10722 57.60431 31.54688 -1 0 0 + 194 38 14 0.417 44.80783 58.50032 31.70105 -1 0 0 + 195 38 14 0.417 44.44237 57.22463 30.97238 -1 0 0 + 196 39 13 -0.834 43.94230 46.99244 34.45668 -2 1 1 + 197 39 14 0.417 44.62010 46.49140 34.00306 -2 1 1 + 198 39 14 0.417 44.38150 47.79794 34.72964 -2 1 1 + 199 40 13 -0.834 51.39443 50.96507 34.69072 -1 1 0 + 200 40 14 0.417 51.18729 50.42829 35.45570 -1 1 0 + 201 40 14 0.417 51.33198 51.86665 35.00616 -1 1 0 + 202 41 13 -0.834 58.96398 48.19727 42.98856 -2 1 0 + 203 41 14 0.417 58.42587 48.90112 42.62618 -2 1 0 + 204 41 14 0.417 58.82383 48.25054 43.93397 -2 1 0 + 205 42 13 -0.834 62.89335 41.94260 37.40820 0 0 0 + 206 42 14 0.417 62.48690 41.07818 37.46980 0 0 0 + 207 42 14 0.417 63.01802 42.08284 36.46957 0 0 0 + 208 43 13 -0.834 54.19388 47.88689 36.24110 -1 0 1 + 209 43 14 0.417 54.32054 48.63090 35.65235 -1 0 1 + 210 43 14 0.417 53.24370 47.78935 36.30358 -1 0 1 + 211 44 13 -0.834 39.19734 57.40342 41.28495 0 0 -2 + 212 44 14 0.417 39.05428 57.72940 40.39641 0 0 -2 + 213 44 14 0.417 39.30846 56.45861 41.17895 0 0 -2 + 214 45 13 -0.834 52.85483 61.73749 54.63897 0 0 0 + 215 45 14 0.417 53.34938 62.52765 54.42147 0 0 0 + 216 45 14 0.417 53.01046 61.14656 53.90221 0 0 0 + 217 46 13 -0.834 47.09467 62.01384 35.02302 1 0 1 + 218 46 14 0.417 47.54527 61.47644 35.67448 1 0 1 + 219 46 14 0.417 47.10116 62.89626 35.39385 1 0 1 + 220 47 13 -0.834 46.80497 49.60334 37.05700 0 0 1 + 221 47 14 0.417 46.70216 49.79770 36.12540 0 0 1 + 222 47 14 0.417 45.91311 49.45393 37.37084 0 0 1 + 223 48 13 -0.834 63.21969 59.12311 54.43455 -1 -1 -1 + 224 48 14 0.417 63.94585 59.72833 54.28405 -1 -1 -1 + 225 48 14 0.417 63.63016 58.34481 54.81141 -1 -1 -1 + 226 49 13 -0.834 59.88416 59.64215 44.04914 -2 1 0 + 227 49 14 0.417 59.74255 59.14412 44.85422 -2 1 0 + 228 49 14 0.417 59.02635 60.01323 43.84248 -2 1 0 + 229 50 13 -0.834 40.50825 42.85328 50.81112 -1 1 0 + 230 50 14 0.417 40.34650 43.39801 51.58141 -1 1 0 + 231 50 14 0.417 39.63964 42.69867 50.43985 -1 1 0 + 232 51 13 -0.834 63.77522 64.97067 44.83010 -2 0 0 + 233 51 14 0.417 37.00507 65.56132 45.28388 -1 0 0 + 234 51 14 0.417 64.14243 64.88383 43.95041 -2 0 0 + 235 52 13 -0.834 62.47161 67.86189 47.38235 -1 0 -1 + 236 52 14 0.417 61.58819 67.64608 47.08360 -1 0 -1 + 237 52 14 0.417 62.79136 67.05596 47.78790 -1 0 -1 + 238 53 13 -0.834 43.90800 54.16107 50.35199 0 0 0 + 239 53 14 0.417 43.96769 53.24711 50.07388 0 0 0 + 240 53 14 0.417 43.72593 54.64554 49.54677 0 0 0 + 241 54 13 -0.834 63.46829 44.63390 34.73615 -1 1 1 + 242 54 14 0.417 62.63731 45.04623 34.97217 -1 1 1 + 243 54 14 0.417 64.11050 45.03645 35.32075 -1 1 1 + 244 55 13 -0.834 37.30679 58.22047 51.04345 0 0 0 + 245 55 14 0.417 38.18596 58.37862 50.69950 0 0 0 + 246 55 14 0.417 36.85723 59.06017 50.94824 0 0 0 + 247 56 13 -0.834 58.72649 42.45768 31.23820 -1 1 -1 + 248 56 14 0.417 59.43634 42.77561 30.68028 -1 1 -1 + 249 56 14 0.417 58.76581 41.50474 31.15690 -1 1 -1 + 250 57 13 -0.834 52.47101 42.85691 41.60986 0 1 -1 + 251 57 14 0.417 51.62289 42.91562 41.16997 0 1 -1 + 252 57 14 0.417 52.53109 41.94497 41.89448 0 1 -1 + 253 58 13 -0.834 60.63476 59.78356 56.53663 -2 -1 -1 + 254 58 14 0.417 60.87428 58.86269 56.43247 -2 -1 -1 + 255 58 14 0.417 59.72615 59.76269 56.83705 -2 -1 -1 + 256 59 13 -0.834 52.78127 57.47386 30.66786 -1 -1 0 + 257 59 14 0.417 52.55495 58.26092 30.17228 -1 -1 0 + 258 59 14 0.417 53.05203 56.84104 30.00267 -1 -1 0 + 259 60 13 -0.834 46.04848 57.65321 54.89998 0 3 -1 + 260 60 14 0.417 46.96883 57.71336 55.15607 0 3 -1 + 261 60 14 0.417 46.02768 57.98076 54.00081 0 3 -1 + 262 61 13 -0.834 60.39356 51.43705 35.66109 -1 1 -1 + 263 61 14 0.417 60.57739 52.08235 36.34376 -1 1 -1 + 264 61 14 0.417 59.59475 50.99860 35.95414 -1 1 -1 + 265 62 13 -0.834 50.32338 62.46972 35.65752 -1 0 2 + 266 62 14 0.417 51.24156 62.23287 35.52678 -1 0 2 + 267 62 14 0.417 49.89601 61.64851 35.90085 -1 0 2 + 268 63 13 -0.834 38.23983 45.11908 50.02773 0 1 0 + 269 63 14 0.417 38.61336 45.27494 50.89515 0 1 0 + 270 63 14 0.417 38.91224 45.42406 49.41856 0 1 0 + 271 64 13 -0.834 58.93720 57.36605 46.08362 -3 0 0 + 272 64 14 0.417 58.65753 56.63297 46.63190 -3 0 0 + 273 64 14 0.417 58.29914 58.05674 46.26268 -3 0 0 + 274 65 13 -0.834 47.99806 43.44789 47.43046 -1 0 0 + 275 65 14 0.417 48.39580 43.78289 46.62684 -1 0 0 + 276 65 14 0.417 47.85848 44.22523 47.97128 -1 0 0 + 277 66 13 -0.834 51.26744 52.05593 47.09995 -1 0 0 + 278 66 14 0.417 51.36736 52.09873 46.14894 -1 0 0 + 279 66 14 0.417 50.33779 52.22629 47.25149 -1 0 0 + 280 67 13 -0.834 39.06132 52.11517 46.39010 0 0 -1 + 281 67 14 0.417 38.53402 51.36282 46.65876 0 0 -1 + 282 67 14 0.417 39.47133 52.42190 47.19884 0 0 -1 + 283 68 13 -0.834 60.17907 58.95174 50.22759 -1 1 0 + 284 68 14 0.417 60.34080 59.56538 50.94420 -1 1 0 + 285 68 14 0.417 59.41497 58.44908 50.50992 -1 1 0 + 286 69 13 -0.834 40.47698 59.65154 34.92537 0 -1 1 + 287 69 14 0.417 40.89044 60.49055 35.12877 0 -1 1 + 288 69 14 0.417 41.17964 59.12336 34.54648 0 -1 1 + 289 70 13 -0.834 60.12998 66.51474 47.03971 -1 0 -1 + 290 70 14 0.417 59.26620 66.39701 47.43506 -1 0 -1 + 291 70 14 0.417 60.21358 65.78625 46.42443 -1 0 -1 + 292 71 13 -0.834 49.25986 47.27506 43.03372 -1 0 1 + 293 71 14 0.417 49.11810 48.15331 42.68041 -1 0 1 + 294 71 14 0.417 49.86162 47.40550 43.76662 -1 0 1 + 295 72 13 -0.834 41.48105 63.65699 31.84433 0 0 1 + 296 72 14 0.417 41.11022 64.48589 32.14713 0 0 1 + 297 72 14 0.417 40.89461 63.37379 31.14281 0 0 1 + 298 73 13 -0.834 47.82875 47.97039 54.56720 0 2 0 + 299 73 14 0.417 46.99167 47.50633 54.55352 0 2 0 + 300 73 14 0.417 47.60488 48.87558 54.35102 0 2 0 + 301 74 13 -0.834 62.36735 58.64445 48.35778 -2 1 0 + 302 74 14 0.417 62.88767 57.90867 48.68045 -2 1 0 + 303 74 14 0.417 61.65918 58.73544 48.99531 -2 1 0 + 304 75 13 -0.834 52.09508 65.08907 32.87560 0 0 0 + 305 75 14 0.417 52.67402 65.75058 32.49683 0 0 0 + 306 75 14 0.417 52.41855 64.97003 33.76859 0 0 0 + 307 76 13 -0.834 39.06932 41.62988 40.69498 1 1 0 + 308 76 14 0.417 39.51114 41.04433 40.08003 1 1 0 + 309 76 14 0.417 38.93584 42.43936 40.20186 1 1 0 + 310 77 13 -0.834 37.68325 49.50718 46.00750 0 2 0 + 311 77 14 0.417 64.11601 49.67107 45.91568 -1 2 0 + 312 77 14 0.417 37.90845 48.96991 45.24796 0 2 0 + 313 78 13 -0.834 53.00757 59.49351 52.98404 -2 1 -1 + 314 78 14 0.417 52.16721 59.28329 53.39127 -2 1 -1 + 315 78 14 0.417 53.61000 58.83023 53.32076 -2 1 -1 + 316 79 13 -0.834 51.89369 64.75001 56.68467 1 0 0 + 317 79 14 0.417 51.88079 65.63682 56.32462 1 0 0 + 318 79 14 0.417 52.40589 64.82531 30.11841 1 0 1 + 319 80 13 -0.834 48.43261 63.10155 32.63566 0 0 1 + 320 80 14 0.417 47.68021 63.01753 32.04993 0 0 1 + 321 80 14 0.417 48.13916 62.71424 33.46035 0 0 1 + 322 81 13 -0.834 62.41171 68.18251 30.67168 0 -1 2 + 323 81 14 0.417 61.79235 41.16145 30.03143 0 0 2 + 324 81 14 0.417 63.18314 67.94790 30.15584 0 -1 2 + 325 82 13 -0.834 42.57575 41.32197 37.66791 0 0 1 + 326 82 14 0.417 42.98116 41.36016 36.80164 0 0 1 + 327 82 14 0.417 42.32522 42.22654 37.85569 0 0 1 + 328 83 13 -0.834 50.17315 67.44398 36.91606 0 -2 0 + 329 83 14 0.417 50.08765 67.03449 37.77701 0 -2 0 + 330 83 14 0.417 50.35347 66.71621 36.32101 0 -2 0 + 331 84 13 -0.834 39.70163 60.45247 40.03790 0 -2 -1 + 332 84 14 0.417 38.85282 60.01540 40.10676 0 -2 -1 + 333 84 14 0.417 40.20579 60.11563 40.77858 0 -2 -1 + 334 85 13 -0.834 51.74323 42.80814 51.33239 0 0 -1 + 335 85 14 0.417 52.44810 43.22892 51.82466 0 0 -1 + 336 85 14 0.417 51.80961 43.17998 50.45286 0 0 -1 + 337 86 13 -0.834 51.34695 47.68316 36.38089 0 0 1 + 338 86 14 0.417 50.77701 46.92707 36.52138 0 0 1 + 339 86 14 0.417 51.27109 47.87031 35.44523 0 0 1 + 340 87 13 -0.834 62.66950 50.66085 43.15883 -2 0 0 + 341 87 14 0.417 63.57796 50.36318 43.11051 -2 0 0 + 342 87 14 0.417 62.24654 50.26548 42.39659 -2 0 0 + 343 88 13 -0.834 46.37996 60.13914 31.06428 -2 -1 1 + 344 88 14 0.417 46.89125 59.89673 31.83632 -2 -1 1 + 345 88 14 0.417 45.51811 60.37092 31.41028 -2 -1 1 + 346 89 13 -0.834 50.23251 41.17559 46.18435 0 1 2 + 347 89 14 0.417 49.40509 68.16142 45.89628 0 0 2 + 348 89 14 0.417 50.55747 67.94506 46.85395 0 0 2 + 349 90 13 -0.834 56.10446 66.70018 42.60390 0 -2 1 + 350 90 14 0.417 56.27454 67.42915 42.00732 0 -2 1 + 351 90 14 0.417 56.27819 67.05729 43.47483 0 -2 1 + 352 91 13 -0.834 55.53824 48.43866 51.97225 -1 0 1 + 353 91 14 0.417 56.26440 48.96682 52.30388 -1 0 1 + 354 91 14 0.417 55.26306 48.88494 51.17140 -1 0 1 + 355 92 13 -0.834 37.88016 52.62502 33.55552 0 -1 0 + 356 92 14 0.417 37.58757 51.72397 33.41859 0 -1 0 + 357 92 14 0.417 38.51960 52.77804 32.85986 0 -1 0 + 358 93 13 -0.834 50.40592 66.14455 39.40035 -1 -2 -1 + 359 93 14 0.417 49.74974 66.37168 40.05920 -1 -2 -1 + 360 93 14 0.417 50.22642 65.22843 39.18876 -1 -2 -1 + 361 94 13 -0.834 59.56315 43.63477 50.02876 -1 0 0 + 362 94 14 0.417 60.08533 44.36640 50.35782 -1 0 0 + 363 94 14 0.417 60.10101 42.86112 50.19730 -1 0 0 + 364 95 13 -0.834 57.16125 61.75981 55.17964 0 0 -1 + 365 95 14 0.417 56.45534 61.68609 55.82189 0 0 -1 + 366 95 14 0.417 57.38335 62.69087 55.17297 0 0 -1 + 367 96 13 -0.834 54.81274 43.48714 43.13392 -1 2 1 + 368 96 14 0.417 53.88771 43.40698 42.90124 -1 2 1 + 369 96 14 0.417 54.97915 42.74512 43.71525 -1 2 1 + 370 97 13 -0.834 41.23040 49.49766 49.75568 0 -2 0 + 371 97 14 0.417 40.54278 49.43865 49.09241 0 -2 0 + 372 97 14 0.417 41.81904 48.76959 49.55653 0 -2 0 + 373 98 13 -0.834 54.20957 45.39084 54.97428 -1 0 0 + 374 98 14 0.417 54.66721 46.06623 55.47493 -1 0 0 + 375 98 14 0.417 53.74016 44.87996 55.63374 -1 0 0 + 376 99 13 -0.834 61.27515 64.38553 39.98716 -1 0 1 + 377 99 14 0.417 61.56153 64.23410 40.88787 -1 0 1 + 378 99 14 0.417 60.44736 63.91029 39.91542 -1 0 1 + 379 100 13 -0.834 55.67284 58.14856 42.21767 -1 1 2 + 380 100 14 0.417 55.46369 57.24253 42.44485 -1 1 2 + 381 100 14 0.417 56.62771 58.19397 42.26677 -1 1 2 + 382 101 13 -0.834 43.66528 51.07118 53.71174 0 0 0 + 383 101 14 0.417 42.87715 50.89079 53.19934 0 0 0 + 384 101 14 0.417 43.37793 51.68815 54.38481 0 0 0 + 385 102 13 -0.834 39.90899 44.53973 36.42818 0 2 0 + 386 102 14 0.417 39.84006 43.65427 36.07118 0 2 0 + 387 102 14 0.417 40.52179 44.98683 35.84438 0 2 0 + 388 103 13 -0.834 51.24695 66.96031 48.71611 -1 -1 1 + 389 103 14 0.417 50.88275 67.26607 49.54684 -1 -1 1 + 390 103 14 0.417 52.19366 66.95318 48.85726 -1 -1 1 + 391 104 13 -0.834 55.15911 56.17347 57.08906 -1 0 0 + 392 104 14 0.417 55.86241 55.65189 56.70232 -1 0 0 + 393 104 14 0.417 54.93977 55.71619 30.52949 -1 0 1 + 394 105 13 -0.834 37.33282 54.30424 56.96734 0 0 0 + 395 105 14 0.417 64.15558 54.97773 29.99806 -1 0 1 + 396 105 14 0.417 64.13467 53.88397 56.32293 -1 0 0 + 397 106 13 -0.834 53.07827 51.20543 32.31512 -1 0 1 + 398 106 14 0.417 52.39494 50.78813 31.79057 -1 0 1 + 399 106 14 0.417 52.65819 51.38698 33.15584 -1 0 1 + 400 107 13 -0.834 43.06086 51.65229 35.75926 1 1 1 + 401 107 14 0.417 42.70958 52.01746 36.57135 1 1 1 + 402 107 14 0.417 43.42908 50.80682 36.01586 1 1 1 + 403 108 13 -0.834 53.92253 56.24460 34.48089 0 0 1 + 404 108 14 0.417 53.22007 56.39276 35.11401 0 0 1 + 405 108 14 0.417 54.59075 55.76600 34.97147 0 0 1 + 406 109 13 -0.834 61.71524 66.84153 38.60005 -1 -1 0 + 407 109 14 0.417 61.25397 66.04877 38.87388 -1 -1 0 + 408 109 14 0.417 62.23260 67.09437 39.36467 -1 -1 0 + 409 110 13 -0.834 43.52824 62.78695 41.49939 0 -1 -1 + 410 110 14 0.417 43.61050 61.97218 41.00379 0 -1 -1 + 411 110 14 0.417 43.53140 63.47437 40.83330 0 -1 -1 + 412 111 13 -0.834 51.13822 55.54090 53.50461 0 1 -2 + 413 111 14 0.417 50.69587 56.38179 53.62064 0 1 -2 + 414 111 14 0.417 51.43262 55.54828 52.59383 0 1 -2 + 415 112 13 -0.834 46.94709 50.11761 31.92599 0 0 0 + 416 112 14 0.417 47.19652 51.02564 31.75423 0 0 0 + 417 112 14 0.417 46.57462 49.81059 31.09941 0 0 0 + 418 113 13 -0.834 47.96666 45.13049 44.46108 -1 2 -1 + 419 113 14 0.417 47.01871 45.24108 44.53489 -1 2 -1 + 420 113 14 0.417 48.26343 45.91034 43.99202 -1 2 -1 + 421 114 13 -0.834 44.43868 43.44849 32.90814 -1 -1 1 + 422 114 14 0.417 43.86055 43.24165 33.64245 -1 -1 1 + 423 114 14 0.417 45.31670 43.24154 33.22828 -1 -1 1 + 424 115 13 -0.834 61.07172 47.80130 53.14504 -1 1 -1 + 425 115 14 0.417 61.34864 48.71600 53.19864 -1 1 -1 + 426 115 14 0.417 60.72118 47.60538 54.01394 -1 1 -1 + 427 116 13 -0.834 51.38727 44.10864 54.92855 -1 0 -1 + 428 116 14 0.417 50.77962 44.80360 55.18160 -1 0 -1 + 429 116 14 0.417 52.05111 44.10744 55.61815 -1 0 -1 + 430 117 13 -0.834 41.05585 60.12319 49.44785 1 -1 0 + 431 117 14 0.417 41.72702 60.76812 49.67116 1 -1 0 + 432 117 14 0.417 40.24373 60.62784 49.40265 1 -1 0 + 433 118 13 -0.834 50.88548 68.33364 33.37284 -1 0 -1 + 434 118 14 0.417 50.48275 67.46671 33.32310 -1 0 -1 + 435 118 14 0.417 51.82702 68.16119 33.37343 -1 0 -1 + 436 119 13 -0.834 38.79644 59.29061 55.22446 1 1 -1 + 437 119 14 0.417 38.82887 59.83550 56.01077 1 1 -1 + 438 119 14 0.417 39.26097 59.79985 54.56028 1 1 -1 + 439 120 13 -0.834 56.31813 41.68729 51.11871 -2 0 -1 + 440 120 14 0.417 55.45155 41.35580 51.35412 -2 0 -1 + 441 120 14 0.417 56.14879 42.34135 50.44062 -2 0 -1 + 442 121 13 -0.834 45.53697 59.28154 47.22033 -1 0 -1 + 443 121 14 0.417 45.45062 59.55577 46.30733 -1 0 -1 + 444 121 14 0.417 46.00774 59.99977 47.64313 -1 0 -1 + 445 122 13 -0.834 60.47636 43.28130 46.20944 -1 0 -1 + 446 122 14 0.417 60.97762 42.59184 45.77396 -1 0 -1 + 447 122 14 0.417 59.72992 42.82584 46.59884 -1 0 -1 + 448 123 13 -0.834 58.49080 48.18289 45.77215 0 0 -1 + 449 123 14 0.417 58.74342 47.25991 45.74879 0 0 -1 + 450 123 14 0.417 58.17926 48.32386 46.66621 0 0 -1 + 451 124 13 -0.834 50.93473 56.12663 41.58575 -1 0 0 + 452 124 14 0.417 50.36171 56.05214 42.34885 -1 0 0 + 453 124 14 0.417 50.40135 56.57242 40.92771 -1 0 0 + 454 125 13 -0.834 60.55008 41.95542 56.22749 -1 0 -1 + 455 125 14 0.417 59.65163 41.78987 55.94175 -1 0 -1 + 456 125 14 0.417 61.09463 41.59967 55.52524 -1 0 -1 + 457 126 13 -0.834 58.58373 51.69338 48.78985 -1 1 0 + 458 126 14 0.417 58.38773 52.01803 49.66874 -1 1 0 + 459 126 14 0.417 58.66973 50.74614 48.89756 -1 1 0 + 460 127 13 -0.834 37.82769 45.69808 30.85100 0 1 3 + 461 127 14 0.417 38.37007 45.10637 31.37248 0 1 3 + 462 127 14 0.417 37.14646 45.99401 31.45481 0 1 3 + 463 128 13 -0.834 50.96455 60.06361 33.68049 0 0 0 + 464 128 14 0.417 51.72055 60.15430 34.26055 0 0 0 + 465 128 14 0.417 51.05673 60.77997 33.05234 0 0 0 + 466 129 13 -0.834 46.43413 68.11245 51.48833 -1 0 -1 + 467 129 14 0.417 46.82151 41.36005 50.86943 -1 1 -1 + 468 129 14 0.417 47.09847 67.43153 51.59433 -1 0 -1 + 469 130 13 -0.834 61.79997 47.41648 57.05141 -1 -1 0 + 470 130 14 0.417 62.68713 47.23872 56.73898 -1 -1 0 + 471 130 14 0.417 61.48917 46.57417 30.01195 -1 -1 1 + 472 131 13 -0.834 45.30689 46.58119 54.43763 0 1 -1 + 473 131 14 0.417 45.67282 45.73922 54.70859 0 1 -1 + 474 131 14 0.417 44.46622 46.35973 54.03705 0 1 -1 + 475 132 13 -0.834 62.60829 48.56385 49.02640 -1 1 0 + 476 132 14 0.417 62.44761 48.65968 48.08766 -1 1 0 + 477 132 14 0.417 62.98242 47.68753 49.11762 -1 1 0 + 478 133 13 -0.834 63.49107 56.77075 38.74961 -1 0 2 + 479 133 14 0.417 63.12281 56.39554 39.54952 -1 0 2 + 480 133 14 0.417 62.84612 57.42058 38.47033 -1 0 2 + 481 134 13 -0.834 50.74846 48.34849 33.46075 0 0 1 + 482 134 14 0.417 50.75342 49.30521 33.43086 0 0 1 + 483 134 14 0.417 50.91203 48.07929 32.55686 0 0 1 + 484 135 13 -0.834 44.40923 67.37148 56.42156 0 0 0 + 485 135 14 0.417 43.93400 67.78902 29.76856 0 0 1 + 486 135 14 0.417 44.94884 66.70468 56.84633 0 0 0 + 487 136 13 -0.834 44.25343 64.95349 43.22104 0 0 0 + 488 136 14 0.417 44.13229 64.08173 42.84472 0 0 0 + 489 136 14 0.417 44.01188 65.55470 42.51643 0 0 0 + 490 137 13 -0.834 46.68300 67.52863 32.69859 -1 -1 0 + 491 137 14 0.417 46.68369 68.22637 33.35389 -1 -1 0 + 492 137 14 0.417 47.60248 67.43099 32.45106 -1 -1 0 + 493 138 13 -0.834 57.25376 61.01737 33.86507 -2 1 1 + 494 138 14 0.417 57.40827 60.52366 34.67043 -2 1 1 + 495 138 14 0.417 57.35792 60.37307 33.16488 -2 1 1 + 496 139 13 -0.834 57.39946 54.16835 56.70699 0 -1 -1 + 497 139 14 0.417 57.31939 53.23092 56.53080 0 -1 -1 + 498 139 14 0.417 57.32300 54.24112 30.28699 0 -1 0 + 499 140 13 -0.834 52.36697 48.69246 41.49227 -1 1 0 + 500 140 14 0.417 51.78735 47.93629 41.40021 -1 1 0 + 501 140 14 0.417 53.21603 48.31702 41.72547 -1 1 0 + 502 141 13 -0.834 54.69200 49.57915 45.55048 0 0 -1 + 503 141 14 0.417 54.95958 48.66911 45.42211 0 0 -1 + 504 141 14 0.417 55.28513 50.08439 44.99446 0 0 -1 + 505 142 13 -0.834 37.26724 53.17896 42.50469 1 -1 -1 + 506 142 14 0.417 63.93194 53.34801 43.12782 0 -1 -1 + 507 142 14 0.417 36.94831 52.45044 41.97199 1 -1 -1 + 508 143 13 -0.834 42.56283 66.92379 33.49577 -1 0 1 + 509 143 14 0.417 41.71356 66.58931 33.20750 -1 0 1 + 510 143 14 0.417 43.03645 66.14842 33.79697 -1 0 1 + 511 144 13 -0.834 61.43331 45.62855 38.97695 0 1 1 + 512 144 14 0.417 61.20190 45.98514 39.83458 0 1 1 + 513 144 14 0.417 62.31351 45.96414 38.80708 0 1 1 + 514 145 13 -0.834 49.37935 56.26031 56.72879 1 1 0 + 515 145 14 0.417 49.03977 57.11146 56.45221 1 1 0 + 516 145 14 0.417 48.60052 55.75658 56.96530 1 1 0 + 517 146 13 -0.834 63.13959 56.23999 49.92079 -1 0 -1 + 518 146 14 0.417 63.72474 55.58123 50.29478 -1 0 -1 + 519 146 14 0.417 63.40966 57.06154 50.33112 -1 0 -1 + 520 147 13 -0.834 58.55937 66.56287 54.17345 -1 0 0 + 521 147 14 0.417 59.28260 66.81524 53.59945 -1 0 0 + 522 147 14 0.417 58.28559 67.38088 54.58834 -1 0 0 + 523 148 13 -0.834 55.49901 62.14366 46.01274 -1 0 -1 + 524 148 14 0.417 55.08057 61.57956 45.36238 -1 0 -1 + 525 148 14 0.417 55.53371 63.00495 45.59652 -1 0 -1 + 526 149 13 -0.834 48.09589 47.38106 38.97384 0 1 0 + 527 149 14 0.417 47.94178 48.02346 38.28116 0 1 0 + 528 149 14 0.417 47.26125 47.32494 39.43910 0 1 0 + 529 150 13 -0.834 40.27661 53.03711 48.83757 0 0 0 + 530 150 14 0.417 40.32476 53.91333 49.21992 0 0 0 + 531 150 14 0.417 41.18363 52.81848 48.62365 0 0 0 + 532 151 13 -0.834 36.85277 41.68065 44.81488 1 2 0 + 533 151 14 0.417 36.95709 68.34807 45.45504 1 1 0 + 534 151 14 0.417 37.14062 41.29651 43.98673 1 2 0 + 535 152 13 -0.834 37.74881 65.81650 33.58759 -1 0 1 + 536 152 14 0.417 37.69052 65.99217 34.52673 -1 0 1 + 537 152 14 0.417 37.02193 65.21970 33.40951 -1 0 1 + 538 153 13 -0.834 63.01838 46.13766 43.99274 -2 0 0 + 539 153 14 0.417 62.72780 46.33504 43.10232 -2 0 0 + 540 153 14 0.417 63.75125 46.73459 44.14387 -2 0 0 + 541 154 13 -0.834 43.83288 53.92104 38.64974 0 2 1 + 542 154 14 0.417 44.46072 53.30394 39.02556 0 2 1 + 543 154 14 0.417 44.17373 54.10726 37.77488 0 2 1 + 544 155 13 -0.834 54.48021 41.30441 45.39416 1 1 -2 + 545 155 14 0.417 54.42996 67.86451 44.88861 1 0 -2 + 546 155 14 0.417 54.84291 41.03852 46.23914 1 1 -2 + 547 156 13 -0.834 51.26407 63.10699 50.73012 0 0 -2 + 548 156 14 0.417 51.64016 62.23294 50.83411 0 0 -2 + 549 156 14 0.417 51.56733 63.39797 49.87011 0 0 -2 + 550 157 13 -0.834 54.61161 63.67709 53.56970 0 1 1 + 551 157 14 0.417 55.55339 63.81655 53.47054 0 1 1 + 552 157 14 0.417 54.24805 63.87070 52.70565 0 1 1 + 553 158 13 -0.834 46.57444 42.69363 30.13287 -1 0 1 + 554 158 14 0.417 45.93025 42.28051 30.70783 -1 0 1 + 555 158 14 0.417 47.27305 42.04459 30.04973 -1 0 1 + 556 159 13 -0.834 37.92811 50.36816 42.31352 1 1 0 + 557 159 14 0.417 38.62401 50.90050 42.69899 1 1 0 + 558 159 14 0.417 38.11553 50.37135 41.37484 1 1 0 + 559 160 13 -0.834 40.53318 48.69302 33.52502 -1 0 0 + 560 160 14 0.417 40.10720 48.55075 32.67972 -1 0 0 + 561 160 14 0.417 41.22323 49.33057 33.34173 -1 0 0 + 562 161 13 -0.834 58.20095 45.48345 42.83426 1 0 -1 + 563 161 14 0.417 58.76156 46.25356 42.92849 1 0 -1 + 564 161 14 0.417 58.80813 44.74348 42.83158 1 0 -1 + 565 162 13 -0.834 59.85909 67.06752 31.43173 -1 1 0 + 566 162 14 0.417 59.95062 66.12180 31.54782 -1 1 0 + 567 162 14 0.417 60.75672 67.38534 31.33437 -1 1 0 + 568 163 13 -0.834 48.48808 51.17807 55.92072 -2 0 0 + 569 163 14 0.417 49.24951 51.62602 55.55219 -2 0 0 + 570 163 14 0.417 48.81105 50.30745 56.15303 -2 0 0 + 571 164 13 -0.834 47.51169 45.69616 48.99410 0 0 -1 + 572 164 14 0.417 48.36822 46.03425 48.73281 0 0 -1 + 573 164 14 0.417 47.56201 45.62598 49.94740 0 0 -1 + 574 165 13 -0.834 51.10678 64.23082 47.99167 0 -2 -1 + 575 165 14 0.417 51.33188 65.16116 47.98611 0 -2 -1 + 576 165 14 0.417 50.15837 64.21415 48.12002 0 -2 -1 + 577 166 13 -0.834 42.97263 56.29674 30.18230 0 0 0 + 578 166 14 0.417 42.45756 55.50818 30.01170 0 0 0 + 579 166 14 0.417 42.79675 56.86516 56.80386 0 0 -1 + 580 167 13 -0.834 44.45917 53.64338 31.85015 -1 0 0 + 581 167 14 0.417 44.64093 54.17218 31.07325 -1 0 0 + 582 167 14 0.417 43.66299 53.15965 31.63030 -1 0 0 + 583 168 13 -0.834 52.20677 49.92062 48.65330 1 0 0 + 584 168 14 0.417 52.24176 50.63538 49.28902 1 0 0 + 585 168 14 0.417 52.01918 50.35058 47.81890 1 0 0 + 586 169 13 -0.834 45.94013 51.43638 56.49888 0 0 0 + 587 169 14 0.417 46.89200 51.34153 56.53372 0 0 0 + 588 169 14 0.417 45.60504 50.66051 56.94833 0 0 0 + 589 170 13 -0.834 45.61845 41.38709 48.05698 1 0 0 + 590 170 14 0.417 46.42604 41.83441 47.80406 1 0 0 + 591 170 14 0.417 45.31743 41.85685 48.83477 1 0 0 + 592 171 13 -0.834 47.68232 42.84819 52.92728 0 1 0 + 593 171 14 0.417 47.61830 42.41414 52.07654 0 1 0 + 594 171 14 0.417 48.39202 42.39011 53.37758 0 1 0 + 595 172 13 -0.834 37.01774 65.84057 36.39542 1 -1 0 + 596 172 14 0.417 36.84918 65.13561 37.02061 1 -1 0 + 597 172 14 0.417 63.52368 66.19949 36.19938 0 -1 0 + 598 173 13 -0.834 51.52891 58.65207 39.31760 -1 -3 -1 + 599 173 14 0.417 51.57384 59.35596 39.96472 -1 -3 -1 + 600 173 14 0.417 51.00435 59.01522 38.60403 -1 -3 -1 + 601 174 13 -0.834 49.06578 54.25781 44.33488 0 -1 -1 + 602 174 14 0.417 48.81980 55.18018 44.26437 0 -1 -1 + 603 174 14 0.417 49.41695 54.17018 45.22104 0 -1 -1 + 604 175 13 -0.834 47.03819 42.38557 34.31948 -1 -1 0 + 605 175 14 0.417 47.39035 41.82883 35.01393 -1 -1 0 + 606 175 14 0.417 47.47024 43.23019 34.44673 -1 -1 0 + 607 176 13 -0.834 41.64025 43.65472 38.33192 0 1 0 + 608 176 14 0.417 41.17224 44.02383 37.58295 0 1 0 + 609 176 14 0.417 41.46027 44.26142 39.05008 0 1 0 + 610 177 13 -0.834 61.41261 58.14241 37.49312 -2 0 0 + 611 177 14 0.417 61.24368 59.06676 37.67551 -2 0 0 + 612 177 14 0.417 60.57871 57.80631 37.16465 -2 0 0 + 613 178 13 -0.834 48.58355 55.60536 32.34542 0 -2 -2 + 614 178 14 0.417 48.05292 55.64371 31.54969 0 -2 -2 + 615 178 14 0.417 49.00004 56.46561 32.39784 0 -2 -2 + 616 179 13 -0.834 51.18618 52.33768 44.26866 0 -1 0 + 617 179 14 0.417 50.47419 52.97535 44.21659 0 -1 0 + 618 179 14 0.417 51.18053 51.90159 43.41657 0 -1 0 + 619 180 13 -0.834 63.77008 46.64985 53.45124 -2 0 -1 + 620 180 14 0.417 37.25943 46.94040 53.14955 -1 0 -1 + 621 180 14 0.417 63.15834 47.28506 53.07904 -2 0 -1 + 622 181 13 -0.834 37.28071 56.79400 31.30862 1 1 0 + 623 181 14 0.417 37.34297 57.68998 31.63963 1 1 0 + 624 181 14 0.417 36.99543 56.89301 30.40030 1 1 0 + 625 182 13 -0.834 38.98742 57.66608 44.07685 1 0 1 + 626 182 14 0.417 39.04152 57.61214 43.12270 1 0 1 + 627 182 14 0.417 39.46043 56.89430 44.38805 1 0 1 + 628 183 13 -0.834 64.13749 51.25767 48.28997 0 -1 0 + 629 183 14 0.417 64.05120 52.19840 48.13566 0 -1 0 + 630 183 14 0.417 63.26932 50.90255 48.09918 0 -1 0 + 631 184 13 -0.834 41.02949 42.14202 43.02064 0 0 -1 + 632 184 14 0.417 40.60130 42.82178 43.54104 0 0 -1 + 633 184 14 0.417 40.43829 41.99723 42.28189 0 0 -1 + 634 185 13 -0.834 49.87332 48.21836 52.83028 0 1 0 + 635 185 14 0.417 49.13733 48.15035 53.43849 0 1 0 + 636 185 14 0.417 50.32176 47.37567 52.90100 0 1 0 + 637 186 13 -0.834 56.06860 48.51217 38.12813 -1 1 0 + 638 186 14 0.417 56.55702 47.73454 38.39826 -1 1 0 + 639 186 14 0.417 55.52690 48.21357 37.39762 -1 1 0 + 640 187 13 -0.834 54.22718 59.47740 40.22374 -1 0 1 + 641 187 14 0.417 53.93839 59.03820 39.42377 -1 0 1 + 642 187 14 0.417 54.74005 58.81629 40.68868 -1 0 1 + 643 188 13 -0.834 60.09461 46.88146 32.04739 -1 0 -1 + 644 188 14 0.417 60.91535 46.43611 31.83683 -1 0 -1 + 645 188 14 0.417 60.13630 47.02716 32.99253 -1 0 -1 + 646 189 13 -0.834 45.18646 44.57845 41.54076 0 0 0 + 647 189 14 0.417 44.28239 44.89208 41.51774 0 0 0 + 648 189 14 0.417 45.34481 44.23786 40.66033 0 0 0 + 649 190 13 -0.834 42.47099 45.68692 31.56356 1 0 1 + 650 190 14 0.417 43.26152 45.18821 31.76995 1 0 1 + 651 190 14 0.417 42.78187 46.58070 31.41951 1 0 1 + 652 191 13 -0.834 41.23413 47.67043 41.85221 0 1 0 + 653 191 14 0.417 41.04508 48.58329 42.06946 0 1 0 + 654 191 14 0.417 40.84394 47.54379 40.98737 0 1 0 + 655 192 13 -0.834 48.84750 60.39708 36.57115 0 0 0 + 656 192 14 0.417 48.57626 59.48478 36.46920 0 0 0 + 657 192 14 0.417 48.59448 60.62409 37.46597 0 0 0 + 658 193 13 -0.834 56.78263 43.55464 49.12966 -1 0 -1 + 659 193 14 0.417 56.56851 44.25428 48.51250 -1 0 -1 + 660 193 14 0.417 57.66563 43.76469 49.43365 -1 0 -1 + 661 194 13 -0.834 59.52236 53.66894 43.24587 -1 2 0 + 662 194 14 0.417 59.44365 54.61174 43.10041 -1 2 0 + 663 194 14 0.417 59.73284 53.58637 44.17598 -1 2 0 + 664 195 13 -0.834 63.61393 61.54696 40.57053 -1 -1 1 + 665 195 14 0.417 36.90989 60.94398 40.24291 0 -1 1 + 666 195 14 0.417 63.74510 61.55794 41.51864 -1 -1 1 + 667 196 13 -0.834 54.91742 43.16160 33.69639 0 0 -1 + 668 196 14 0.417 55.84062 43.16106 33.94925 0 0 -1 + 669 196 14 0.417 54.73416 44.07060 33.45898 0 0 -1 + 670 197 13 -0.834 41.09699 64.92982 48.38401 0 -1 -1 + 671 197 14 0.417 40.19042 64.83711 48.67687 0 -1 -1 + 672 197 14 0.417 41.27055 64.13206 47.88433 0 -1 -1 + 673 198 13 -0.834 49.09688 60.43369 49.80048 0 0 -1 + 674 198 14 0.417 49.75346 61.03633 50.14971 0 0 -1 + 675 198 14 0.417 49.51718 59.57440 49.83534 0 0 -1 + 676 199 13 -0.834 45.06873 45.25146 44.50830 0 1 0 + 677 199 14 0.417 45.08807 45.11881 43.56053 0 1 0 + 678 199 14 0.417 44.41198 44.63084 44.82413 0 1 0 + 679 200 13 -0.834 37.63886 45.88962 36.45768 0 0 2 + 680 200 14 0.417 38.32892 45.23766 36.58017 0 0 2 + 681 200 14 0.417 37.24627 45.98938 37.32495 0 0 2 + 682 201 13 -0.834 45.25770 47.01692 51.04211 -1 0 -2 + 683 201 14 0.417 45.49830 47.82868 50.59555 -1 0 -2 + 684 201 14 0.417 46.08295 46.68269 51.39354 -1 0 -2 + 685 202 13 -0.834 63.44567 60.77839 50.98507 -2 0 0 + 686 202 14 0.417 62.95029 60.46072 51.74001 -2 0 0 + 687 202 14 0.417 62.77774 61.08133 50.36998 -2 0 0 + 688 203 13 -0.834 48.00038 59.99003 33.31045 0 1 1 + 689 203 14 0.417 48.92391 59.89924 33.54518 0 1 1 + 690 203 14 0.417 47.68314 60.70831 33.85788 0 1 1 + 691 204 13 -0.834 51.29617 53.45952 36.10138 -1 -1 1 + 692 204 14 0.417 50.79623 53.20605 36.87731 -1 -1 1 + 693 204 14 0.417 51.41983 54.40421 36.19363 -1 -1 1 + 694 205 13 -0.834 48.55343 45.13540 34.47517 0 0 0 + 695 205 14 0.417 48.10547 45.97105 34.34382 0 0 0 + 696 205 14 0.417 49.13373 45.28879 35.22081 0 0 0 + 697 206 13 -0.834 48.34844 61.02741 54.77908 1 -1 -1 + 698 206 14 0.417 47.77364 61.75290 55.02301 1 -1 -1 + 699 206 14 0.417 49.14675 61.17253 55.28690 1 -1 -1 + 700 207 13 -0.834 38.97661 48.73541 31.27301 2 -1 0 + 701 207 14 0.417 38.86774 47.99634 30.67453 2 -1 0 + 702 207 14 0.417 38.60214 49.48112 30.80404 2 -1 0 + 703 208 13 -0.834 56.37687 61.69299 40.12439 0 -1 -1 + 704 208 14 0.417 56.35009 61.71409 39.16778 0 -1 -1 + 705 208 14 0.417 55.62486 61.15580 40.37371 0 -1 -1 + 706 209 13 -0.834 47.86700 41.38854 36.76722 -1 0 0 + 707 209 14 0.417 48.79854 41.26117 36.94678 -1 0 0 + 708 209 14 0.417 47.57553 42.00602 37.43804 -1 0 0 + 709 210 13 -0.834 43.22089 60.92576 39.48904 -1 -1 0 + 710 210 14 0.417 42.70029 60.20976 39.85311 -1 -1 0 + 711 210 14 0.417 43.25319 60.74538 38.54954 -1 -1 0 + 712 211 13 -0.834 56.26248 49.03317 34.29585 -1 0 0 + 713 211 14 0.417 56.69244 49.86416 34.09381 -1 0 0 + 714 211 14 0.417 55.61194 48.92467 33.60212 -1 0 0 + 715 212 13 -0.834 47.52063 49.37901 51.21673 1 0 0 + 716 212 14 0.417 48.35964 48.95385 51.03909 1 0 0 + 717 212 14 0.417 47.47856 49.43746 52.17122 1 0 0 + 718 213 13 -0.834 62.35532 56.31018 41.33556 0 0 0 + 719 213 14 0.417 62.07506 57.22150 41.42032 0 0 0 + 720 213 14 0.417 62.92184 56.16192 42.09274 0 0 0 + 721 214 13 -0.834 61.09797 64.53756 45.11003 -1 0 1 + 722 214 14 0.417 61.11801 63.59600 44.93887 -1 0 1 + 723 214 14 0.417 61.95676 64.85132 44.82670 -1 0 1 + 724 215 13 -0.834 51.22661 62.08872 31.93454 0 0 0 + 725 215 14 0.417 51.98994 62.65586 32.04369 0 0 0 + 726 215 14 0.417 50.47877 62.65171 32.13456 0 0 0 + 727 216 13 -0.834 40.65443 48.64853 54.43476 0 0 -1 + 728 216 14 0.417 40.25608 47.97845 54.99023 0 0 -1 + 729 216 14 0.417 41.58025 48.64240 54.67776 0 0 -1 + 730 217 13 -0.834 39.34873 63.07587 52.07209 1 1 -1 + 731 217 14 0.417 39.17266 63.98076 51.81438 1 1 -1 + 732 217 14 0.417 39.29792 62.57948 51.25523 1 1 -1 + 733 218 13 -0.834 45.66307 65.90840 47.75613 -1 0 0 + 734 218 14 0.417 44.99427 65.52542 48.32381 -1 0 0 + 735 218 14 0.417 45.75913 66.80721 48.07102 -1 0 0 + 736 219 13 -0.834 45.83158 51.91442 38.93974 0 0 0 + 737 219 14 0.417 46.07939 51.87422 39.86344 0 0 0 + 738 219 14 0.417 45.49928 51.03877 38.74210 0 0 0 + 739 220 13 -0.834 58.03934 67.88594 44.36036 -1 1 -1 + 740 220 14 0.417 58.69084 68.22520 43.74661 -1 1 -1 + 741 220 14 0.417 58.24719 68.31309 45.19138 -1 1 -1 + 742 221 13 -0.834 57.23319 66.95459 30.42832 0 0 0 + 743 221 14 0.417 56.95316 66.93560 31.34345 0 0 0 + 744 221 14 0.417 58.18154 66.82998 30.46491 0 0 0 + 745 222 13 -0.834 60.87005 44.72970 53.74755 -1 0 -1 + 746 222 14 0.417 60.02694 44.42275 53.41412 -1 0 -1 + 747 222 14 0.417 61.31963 45.07903 52.97808 -1 0 -1 + 748 223 13 -0.834 50.61352 50.44308 31.66369 0 -1 0 + 749 223 14 0.417 50.38691 49.95555 30.87173 0 -1 0 + 750 223 14 0.417 50.16704 51.28387 31.56391 0 -1 0 + 751 224 13 -0.834 42.70363 42.07925 34.73823 0 1 0 + 752 224 14 0.417 42.74630 41.15512 34.49249 0 1 0 + 753 224 14 0.417 41.77538 42.23983 34.90796 0 1 0 + 754 225 13 -0.834 50.34157 43.80796 44.49841 -1 1 0 + 755 225 14 0.417 49.44649 44.14718 44.50119 -1 1 0 + 756 225 14 0.417 50.24323 42.86994 44.66171 -1 1 0 + 757 226 13 -0.834 62.39528 64.92163 33.72829 -3 -1 1 + 758 226 14 0.417 61.94679 64.42233 34.41078 -3 -1 1 + 759 226 14 0.417 61.94061 64.68505 32.91986 -3 -1 1 + 760 227 13 -0.834 46.62188 47.13429 41.79430 0 1 1 + 761 227 14 0.417 46.21721 46.28415 41.62178 0 1 1 + 762 227 14 0.417 47.40198 46.92861 42.30946 0 1 1 + 763 228 13 -0.834 41.35469 54.31275 56.45453 0 0 -1 + 764 228 14 0.417 41.79769 53.47653 56.31055 0 0 -1 + 765 228 14 0.417 40.57273 54.26794 55.90425 0 0 -1 + 766 229 13 -0.834 48.43878 42.20000 49.94999 0 0 0 + 767 229 14 0.417 49.34431 42.29756 50.24447 0 0 0 + 768 229 14 0.417 48.41583 42.63350 49.09688 0 0 0 + 769 230 13 -0.834 37.29829 50.04209 33.34795 0 1 0 + 770 230 14 0.417 36.96213 49.51969 34.07619 0 1 0 + 771 230 14 0.417 37.98470 49.49933 32.96002 0 1 0 + 772 231 13 -0.834 58.91995 56.17895 33.02333 -1 0 0 + 773 231 14 0.417 59.83980 56.43785 32.96791 -1 0 0 + 774 231 14 0.417 58.89269 55.54120 33.73661 -1 0 0 + 775 232 13 -0.834 39.86900 65.81481 43.81866 0 0 -1 + 776 232 14 0.417 40.31483 64.99515 43.60502 0 0 -1 + 777 232 14 0.417 40.41298 66.21397 44.49762 0 0 -1 + 778 233 13 -0.834 62.71324 65.93556 51.55400 -1 0 0 + 779 233 14 0.417 62.38032 66.39597 52.32436 -1 0 0 + 780 233 14 0.417 63.52336 65.52245 51.85285 -1 0 0 + 781 234 13 -0.834 59.23324 49.58642 31.35843 0 0 0 + 782 234 14 0.417 59.28102 48.68976 31.69001 0 0 0 + 783 234 14 0.417 59.95115 50.04304 31.79700 0 0 0 + 784 235 13 -0.834 41.02310 67.21389 51.60243 0 0 0 + 785 235 14 0.417 41.77450 67.79064 51.74021 0 0 0 + 786 235 14 0.417 40.36922 67.76899 51.17753 0 0 0 + 787 236 13 -0.834 41.38918 62.43794 34.42449 0 0 1 + 788 236 14 0.417 41.26665 63.14612 33.79227 0 0 1 + 789 236 14 0.417 42.30454 62.51275 34.69423 0 0 1 + 790 237 13 -0.834 52.28796 56.01034 50.59905 0 -1 -1 + 791 237 14 0.417 53.14113 56.07317 51.02851 0 -1 -1 + 792 237 14 0.417 52.14509 55.07070 50.48548 0 -1 -1 + 793 238 13 -0.834 53.25204 66.52198 39.76351 0 -1 0 + 794 238 14 0.417 52.30774 66.44732 39.62571 0 -1 0 + 795 238 14 0.417 53.47725 67.38617 39.41895 0 -1 0 + 796 239 13 -0.834 59.77604 60.82055 48.12264 -1 -1 -1 + 797 239 14 0.417 59.80699 60.05926 48.70205 -1 -1 -1 + 798 239 14 0.417 58.96049 60.71611 47.63253 -1 -1 -1 + 799 240 13 -0.834 48.99693 51.07559 36.89084 0 -1 1 + 800 240 14 0.417 48.22315 50.55308 37.10175 0 -1 1 + 801 240 14 0.417 48.88824 51.30348 35.96753 0 -1 1 + 802 241 13 -0.834 50.67863 62.63916 55.60559 1 0 -2 + 803 241 14 0.417 51.43406 62.16856 55.25331 1 0 -2 + 804 241 14 0.417 51.05760 63.36945 56.09477 1 0 -2 + 805 242 13 -0.834 41.05301 64.77947 55.72335 1 -1 -1 + 806 242 14 0.417 41.95836 64.58666 55.96711 1 -1 -1 + 807 242 14 0.417 41.07998 65.67647 55.39035 1 -1 -1 + 808 243 13 -0.834 59.16096 63.30207 34.55147 0 -1 2 + 809 243 14 0.417 58.62636 62.51316 34.64131 0 -1 2 + 810 243 14 0.417 59.80830 63.23451 35.25333 0 -1 2 + 811 244 13 -0.834 59.86542 53.52546 55.50419 0 -1 -1 + 812 244 14 0.417 60.26921 53.79963 56.32761 0 -1 -1 + 813 244 14 0.417 58.96256 53.83773 55.56399 0 -1 -1 + 814 245 13 -0.834 56.48528 44.99075 44.65443 1 0 0 + 815 245 14 0.417 55.84854 44.49932 44.13551 1 0 0 + 816 245 14 0.417 57.18258 45.20803 44.03571 1 0 0 + 817 246 13 -0.834 37.25407 54.85866 36.86076 0 -1 -1 + 818 246 14 0.417 37.37951 55.31820 36.03050 0 -1 -1 + 819 246 14 0.417 36.91899 55.52805 37.45731 0 -1 -1 + 820 247 13 -0.834 54.42875 47.21339 48.23883 -1 -1 -1 + 821 247 14 0.417 54.60966 48.13349 48.43097 -1 -1 -1 + 822 247 14 0.417 54.44092 47.16092 47.28312 -1 -1 -1 + 823 248 13 -0.834 42.61226 41.78391 40.84493 1 0 1 + 824 248 14 0.417 41.98531 41.90233 41.55849 1 0 1 + 825 248 14 0.417 42.35866 42.43623 40.19194 1 0 1 + 826 249 13 -0.834 37.83522 41.95649 50.31377 0 0 -2 + 827 249 14 0.417 37.42231 42.81133 50.19124 0 0 -2 + 828 249 14 0.417 37.46684 41.41031 49.61934 0 0 -2 + 829 250 13 -0.834 44.80898 44.15062 49.20688 0 -1 0 + 830 250 14 0.417 44.80289 44.55594 48.33975 0 -1 0 + 831 250 14 0.417 45.29722 44.76463 49.75537 0 -1 0 + 832 251 13 -0.834 37.44321 44.03405 38.75076 1 0 1 + 833 251 14 0.417 37.12277 44.06014 39.65235 1 0 1 + 834 251 14 0.417 64.13547 43.56266 38.26824 0 0 1 + 835 252 13 -0.834 38.82113 46.15070 46.12915 1 0 0 + 836 252 14 0.417 38.96657 46.44867 47.02709 1 0 0 + 837 252 14 0.417 38.09796 45.52731 46.19733 1 0 0 + 838 253 13 -0.834 43.08482 60.65520 45.34135 -1 0 1 + 839 253 14 0.417 42.82882 59.73347 45.30784 -1 0 1 + 840 253 14 0.417 44.00885 60.65685 45.09147 -1 0 1 + 841 254 13 -0.834 45.72190 46.51173 32.51384 1 0 0 + 842 254 14 0.417 46.00925 45.78294 31.96381 1 0 0 + 843 254 14 0.417 46.53186 46.95248 32.77064 1 0 0 + 844 255 13 -0.834 63.64359 44.33728 41.24417 -1 0 0 + 845 255 14 0.417 63.60411 43.61794 41.87443 -1 0 0 + 846 255 14 0.417 62.76926 44.36407 40.85550 -1 0 0 + 847 256 13 -0.834 48.53353 66.27879 51.60437 0 0 -1 + 848 256 14 0.417 49.21611 66.24938 50.93396 0 0 -1 + 849 256 14 0.417 48.67507 65.48862 52.12577 0 0 -1 + 850 257 13 -0.834 54.11962 54.32751 39.83526 -1 1 1 + 851 257 14 0.417 53.37975 54.47391 39.24585 -1 1 1 + 852 257 14 0.417 53.95747 53.46346 40.21391 -1 1 1 + 853 258 13 -0.834 53.72785 66.08707 44.78384 -1 -1 0 + 854 258 14 0.417 54.65423 65.85662 44.85413 -1 -1 0 + 855 258 14 0.417 53.26300 65.26936 44.96130 -1 -1 0 + 856 259 13 -0.834 39.06287 51.40870 53.96063 0 0 -1 + 857 259 14 0.417 39.12854 51.34243 53.00796 0 0 -1 + 858 259 14 0.417 38.38057 52.06341 54.10916 0 0 -1 + 859 260 13 -0.834 58.77064 49.77012 37.45292 0 0 0 + 860 260 14 0.417 59.49652 49.20688 37.72142 0 0 0 + 861 260 14 0.417 57.98575 49.25379 37.63621 0 0 0 + 862 261 13 -0.834 37.94204 48.36591 35.22049 -1 0 0 + 863 261 14 0.417 37.94000 47.48368 35.59187 -1 0 0 + 864 261 14 0.417 38.86901 48.59216 35.14453 -1 0 0 + 865 262 13 -0.834 47.05754 54.06564 40.63628 0 -2 1 + 866 262 14 0.417 47.01965 53.22193 41.08679 0 -2 1 + 867 262 14 0.417 46.68660 54.68838 41.26145 0 -2 1 + 868 263 13 -0.834 46.01283 65.88108 53.59469 0 0 0 + 869 263 14 0.417 45.30729 66.50296 53.77277 0 0 0 + 870 263 14 0.417 46.76378 66.42902 53.36650 0 0 0 + 871 264 13 -0.834 45.32546 67.91008 39.11365 -1 -1 0 + 872 264 14 0.417 44.38981 67.96233 38.91853 -1 -1 0 + 873 264 14 0.417 45.70517 67.47097 38.35257 -1 -1 0 + 874 265 13 -0.834 55.39761 51.53823 53.16553 -1 1 -1 + 875 265 14 0.417 54.64975 52.10179 53.36389 -1 1 -1 + 876 265 14 0.417 55.78119 51.91789 52.37499 -1 1 -1 + 877 266 13 -0.834 57.06415 51.22923 32.75117 -1 -1 0 + 878 266 14 0.417 56.79908 52.11139 32.49079 -1 -1 0 + 879 266 14 0.417 57.98399 51.16910 32.49322 -1 -1 0 + 880 267 13 -0.834 50.05222 47.30342 45.67457 0 0 -2 + 881 267 14 0.417 49.85957 46.82324 46.47990 0 0 -2 + 882 267 14 0.417 50.60617 46.70964 45.16781 0 0 -2 + 883 268 13 -0.834 50.46819 45.47822 52.51129 0 1 -1 + 884 268 14 0.417 50.78823 45.07196 53.31677 0 1 -1 + 885 268 14 0.417 51.03886 45.13243 51.82499 0 1 -1 + 886 269 13 -0.834 47.44130 61.30175 47.80124 0 0 0 + 887 269 14 0.417 48.02715 60.89314 48.43850 0 0 0 + 888 269 14 0.417 47.98636 61.43626 47.02595 0 0 0 + 889 270 13 -0.834 41.31630 52.47434 39.71677 1 0 0 + 890 270 14 0.417 41.07609 52.94514 40.51485 1 0 0 + 891 270 14 0.417 42.05418 52.96849 39.35955 1 0 0 + 892 271 13 -0.834 55.90762 58.63213 50.47814 0 1 0 + 893 271 14 0.417 55.80273 59.37784 51.06903 0 1 0 + 894 271 14 0.417 55.41449 58.87554 49.69468 0 1 0 + 895 272 13 -0.834 42.23424 55.62725 53.35280 0 1 -1 + 896 272 14 0.417 41.62946 55.10926 53.88399 0 1 -1 + 897 272 14 0.417 41.75761 56.43615 53.16647 0 1 -1 + 898 273 13 -0.834 62.31754 63.97065 42.48774 0 0 1 + 899 273 14 0.417 63.27023 64.05391 42.44669 0 0 1 + 900 273 14 0.417 62.16851 63.13573 42.93152 0 0 1 + 901 274 13 -0.834 60.93154 49.79182 56.13812 0 -1 0 + 902 274 14 0.417 61.38991 48.97402 56.33134 0 -1 0 + 903 274 14 0.417 60.29808 49.88575 56.84955 0 -1 0 + 904 275 13 -0.834 50.39572 45.11274 36.60756 0 1 -1 + 905 275 14 0.417 50.88541 44.33834 36.33051 0 1 -1 + 906 275 14 0.417 50.38352 45.05976 37.56322 0 1 -1 + 907 276 13 -0.834 46.57204 43.12189 39.29488 -1 2 -1 + 908 276 14 0.417 46.48449 42.17951 39.43813 -1 2 -1 + 909 276 14 0.417 47.49357 43.30747 39.47547 -1 2 -1 + 910 277 13 -0.834 54.39979 41.37518 38.62483 0 0 1 + 911 277 14 0.417 54.27469 42.27221 38.31511 0 0 1 + 912 277 14 0.417 54.57135 68.24024 37.83080 0 -1 1 + 913 278 13 -0.834 60.57638 52.40343 41.12327 -1 1 -1 + 914 278 14 0.417 60.40196 53.27982 40.78010 -1 1 -1 + 915 278 14 0.417 60.37657 52.46726 42.05721 -1 1 -1 + 916 279 13 -0.834 61.77806 59.06524 41.98029 0 0 0 + 917 279 14 0.417 62.58317 59.36537 42.40214 0 0 0 + 918 279 14 0.417 61.10430 59.16112 42.65342 0 0 0 + 919 280 13 -0.834 43.46789 48.64833 54.88223 0 1 -2 + 920 280 14 0.417 43.60676 49.48200 54.43286 0 1 -2 + 921 280 14 0.417 43.74339 47.98554 54.24895 0 1 -2 + 922 281 13 -0.834 51.98628 58.37454 48.60562 -1 0 0 + 923 281 14 0.417 51.81372 57.54909 49.05852 -1 0 0 + 924 281 14 0.417 52.67545 58.16319 47.97583 -1 0 0 + 925 282 13 -0.834 55.00551 65.64176 56.63926 0 -1 -1 + 926 282 14 0.417 55.59134 66.11131 29.86167 0 -1 0 + 927 282 14 0.417 54.80211 66.27584 55.95165 0 -1 -1 + 928 283 13 -0.834 55.02996 52.59142 50.59986 -1 1 0 + 929 283 14 0.417 54.13615 52.66743 50.26585 -1 1 0 + 930 283 14 0.417 55.48513 53.35419 50.24316 -1 1 0 + 931 284 13 -0.834 37.39245 67.88600 56.81733 0 -1 -1 + 932 284 14 0.417 38.13326 41.09044 56.62787 0 0 -1 + 933 284 14 0.417 37.74351 67.00148 56.71419 0 -1 -1 + 934 285 13 -0.834 42.83234 60.22766 53.36959 0 0 0 + 935 285 14 0.417 43.51497 59.86233 52.80672 0 0 0 + 936 285 14 0.417 43.27782 60.90528 53.87815 0 0 0 + 937 286 13 -0.834 59.24806 43.81265 38.44265 1 0 0 + 938 286 14 0.417 59.12140 43.55748 39.35647 1 0 0 + 939 286 14 0.417 60.07673 44.29174 38.43991 1 0 0 + 940 287 13 -0.834 61.29263 60.52642 52.74164 -1 1 -1 + 941 287 14 0.417 61.73918 60.02180 53.42149 -1 1 -1 + 942 287 14 0.417 60.93759 61.28711 53.20156 -1 1 -1 + 943 288 13 -0.834 63.43980 43.30119 30.90384 -1 1 0 + 944 288 14 0.417 63.34979 42.36405 30.73085 -1 1 0 + 945 288 14 0.417 64.20504 43.56693 30.39393 -1 1 0 + 946 289 13 -0.834 57.11924 59.06522 54.48909 -1 0 0 + 947 289 14 0.417 57.40605 59.83488 54.98062 -1 0 0 + 948 289 14 0.417 57.59698 58.33614 54.88463 -1 0 0 + 949 290 13 -0.834 51.89759 59.82680 44.82923 1 1 -1 + 950 290 14 0.417 51.33588 59.94068 44.06258 1 1 -1 + 951 290 14 0.417 51.32846 60.01914 45.57443 1 1 -1 + 952 291 13 -0.834 57.64696 65.49112 47.86068 -1 0 0 + 953 291 14 0.417 57.31105 65.98457 48.60895 -1 0 0 + 954 291 14 0.417 57.73765 64.59519 48.18521 -1 0 0 + 955 292 13 -0.834 50.35232 57.73892 32.55459 0 1 0 + 956 292 14 0.417 51.07441 57.69034 31.92813 0 1 0 + 957 292 14 0.417 50.48339 58.57180 33.00777 0 1 0 + 958 293 13 -0.834 46.20166 60.82812 38.38269 0 1 1 + 959 293 14 0.417 46.12191 61.76977 38.53504 0 1 1 + 960 293 14 0.417 45.30555 60.53505 38.21735 0 1 1 + 961 294 13 -0.834 41.42660 51.46433 55.94150 1 0 -1 + 962 294 14 0.417 40.58025 51.71240 55.56944 1 0 -1 + 963 294 14 0.417 41.63094 50.62307 55.53311 1 0 -1 + 964 295 13 -0.834 56.72642 53.95840 32.00323 0 -1 0 + 965 295 14 0.417 57.12177 54.49254 32.69216 0 -1 0 + 966 295 14 0.417 55.80349 54.21231 32.00259 0 -1 0 + 967 296 13 -0.834 43.25852 41.40642 31.27656 0 1 0 + 968 296 14 0.417 43.58058 42.21308 31.67880 0 1 0 + 969 296 14 0.417 43.16985 68.16459 32.00619 0 0 0 + 970 297 13 -0.834 54.50477 52.62435 30.30235 -2 1 0 + 971 297 14 0.417 54.04985 52.22243 31.04245 -2 1 0 + 972 297 14 0.417 54.36900 53.56465 30.41915 -2 1 0 + 973 298 13 -0.834 38.11258 59.33341 36.21749 1 0 0 + 974 298 14 0.417 38.95754 58.91929 36.04205 1 0 0 + 975 298 14 0.417 38.14750 60.16192 35.73940 1 0 0 + 976 299 13 -0.834 39.65020 64.70254 40.48616 -1 0 1 + 977 299 14 0.417 39.87581 65.58596 40.19474 -1 0 1 + 978 299 14 0.417 39.66086 64.17611 39.68676 -1 0 1 + 979 300 13 -0.834 63.26661 53.84973 48.10281 -1 1 1 + 980 300 14 0.417 63.38261 54.75210 48.40032 -1 1 1 + 981 300 14 0.417 62.32830 53.68505 48.19603 -1 1 1 + 982 301 13 -0.834 43.65966 61.04202 50.03088 0 0 0 + 983 301 14 0.417 44.11377 60.35973 50.52538 0 0 0 + 984 301 14 0.417 44.30508 61.74317 49.94108 0 0 0 + 985 302 13 -0.834 61.75204 50.20037 32.39414 0 0 0 + 986 302 14 0.417 62.04749 51.09027 32.58663 0 0 0 + 987 302 14 0.417 62.55370 49.67736 32.38826 0 0 0 + 988 303 13 -0.834 53.79071 58.98335 36.25336 -1 -2 -1 + 989 303 14 0.417 53.17711 58.26833 36.42220 -1 -2 -1 + 990 303 14 0.417 54.65389 58.60140 36.41235 -1 -2 -1 + 991 304 13 -0.834 50.47963 50.13918 42.58243 1 -1 -2 + 992 304 14 0.417 51.28111 49.63880 42.42915 1 -1 -2 + 993 304 14 0.417 50.33279 50.61369 41.76419 1 -1 -2 + 994 305 13 -0.834 50.28770 49.02182 56.79391 1 -1 -2 + 995 305 14 0.417 50.66164 48.14920 56.91622 1 -1 -2 + 996 305 14 0.417 50.60501 49.30063 55.93493 1 -1 -2 + 997 306 13 -0.834 41.36930 46.36343 34.87469 1 1 0 + 998 306 14 0.417 42.25704 46.59841 34.60463 1 1 0 + 999 306 14 0.417 40.85961 47.16333 34.74582 1 1 0 + 1000 307 13 -0.834 61.15349 47.47016 41.71779 0 1 0 + 1001 307 14 0.417 61.50139 48.29469 41.37818 0 1 0 + 1002 307 14 0.417 60.28203 47.69385 42.04454 0 1 0 + 1003 308 13 -0.834 58.35337 46.83622 34.81712 0 0 1 + 1004 308 14 0.417 57.63221 46.22391 34.67141 0 0 1 + 1005 308 14 0.417 57.97297 47.69883 34.65146 0 0 1 + 1006 309 13 -0.834 38.79812 57.92803 48.26323 1 -2 -1 + 1007 309 14 0.417 38.67444 56.98130 48.33141 1 -2 -1 + 1008 309 14 0.417 39.70990 58.06987 48.51776 1 -2 -1 + 1009 310 13 -0.834 42.15963 57.96891 45.03230 1 0 0 + 1010 310 14 0.417 42.11698 57.98663 45.98839 1 0 0 + 1011 310 14 0.417 41.83611 57.10021 44.79371 1 0 0 + 1012 311 13 -0.834 55.17551 54.72671 36.49400 0 -1 0 + 1013 311 14 0.417 55.26386 53.77738 36.57890 0 -1 0 + 1014 311 14 0.417 55.36463 55.06457 37.36939 0 -1 0 + 1015 312 13 -0.834 58.64573 63.28550 41.10609 -1 -2 -1 + 1016 312 14 0.417 58.98147 62.66636 41.75429 -1 -2 -1 + 1017 312 14 0.417 57.90273 62.83419 40.70545 -1 -2 -1 + 1018 313 13 -0.834 49.96498 59.98797 42.54359 0 -1 0 + 1019 313 14 0.417 50.57886 60.48612 42.00390 0 -1 0 + 1020 313 14 0.417 49.10600 60.17526 42.16501 0 -1 0 + 1021 314 13 -0.834 57.54750 44.35075 52.12722 -1 -1 -1 + 1022 314 14 0.417 57.86221 43.84739 51.37633 -1 -1 -1 + 1023 314 14 0.417 56.76423 44.79718 51.80558 -1 -1 -1 + 1024 315 13 -0.834 58.07892 59.46258 41.31930 1 -1 0 + 1025 315 14 0.417 58.27344 60.10968 41.99729 1 -1 0 + 1026 315 14 0.417 57.80524 59.98199 40.56328 1 -1 0 + 1027 316 13 -0.834 42.21869 44.49848 55.65511 2 1 0 + 1028 316 14 0.417 42.77458 44.78017 56.38166 2 1 0 + 1029 316 14 0.417 42.83052 44.15513 55.00395 2 1 0 + 1030 317 13 -0.834 56.38334 63.45614 43.52622 -1 -1 0 + 1031 317 14 0.417 55.66283 63.62998 42.92052 -1 -1 0 + 1032 317 14 0.417 56.48976 64.27319 44.01338 -1 -1 0 + 1033 318 13 -0.834 43.21354 46.04700 52.52965 1 1 0 + 1034 318 14 0.417 43.24360 45.09879 52.40226 1 1 0 + 1035 318 14 0.417 43.99839 46.37328 52.08943 1 1 0 + 1036 319 13 -0.834 55.96174 45.94863 35.39660 -1 0 1 + 1037 319 14 0.417 55.64687 46.44680 36.15088 -1 0 1 + 1038 319 14 0.417 55.28305 46.06527 34.73174 -1 0 1 + 1039 320 13 -0.834 47.36406 54.82690 34.84439 -1 -1 2 + 1040 320 14 0.417 47.90093 54.86776 34.05295 -1 -1 2 + 1041 320 14 0.417 47.23152 53.89118 34.99640 -1 -1 2 + 1042 321 13 -0.834 49.62685 50.00229 45.27362 1 0 -2 + 1043 321 14 0.417 49.70876 49.05477 45.38192 1 0 -2 + 1044 321 14 0.417 49.82566 50.15634 44.35005 1 0 -2 + 1045 322 13 -0.834 49.58249 46.02940 55.43310 -1 0 -2 + 1046 322 14 0.417 49.10378 46.80060 55.12924 -1 0 -2 + 1047 322 14 0.417 49.31802 45.92761 56.34739 -1 0 -2 + 1048 323 13 -0.834 51.72150 51.53491 51.55558 0 -1 -1 + 1049 323 14 0.417 51.50292 52.17946 50.88251 0 -1 -1 + 1050 323 14 0.417 52.14568 52.04382 52.24646 0 -1 -1 + 1051 324 13 -0.834 37.98107 56.66338 52.98024 0 1 0 + 1052 324 14 0.417 37.64467 57.53823 52.78607 0 1 0 + 1053 324 14 0.417 38.15999 56.27913 52.12200 0 1 0 + 1054 325 13 -0.834 59.20226 51.55233 53.16877 -1 1 0 + 1055 325 14 0.417 59.68851 51.88535 53.92302 -1 1 0 + 1056 325 14 0.417 58.63621 50.87031 53.53025 -1 1 0 + 1057 326 13 -0.834 45.75783 63.62117 39.24032 1 1 -1 + 1058 326 14 0.417 46.25179 64.38626 39.53508 1 1 -1 + 1059 326 14 0.417 44.85376 63.80686 39.49409 1 1 -1 + 1060 327 13 -0.834 58.00953 52.38584 37.67148 -1 1 1 + 1061 327 14 0.417 58.24242 51.47235 37.50553 -1 1 1 + 1062 327 14 0.417 57.26453 52.33853 38.27062 -1 1 1 + 1063 328 13 -0.834 50.62838 66.20855 42.36072 0 0 -1 + 1064 328 14 0.417 51.45434 66.68250 42.45770 0 0 -1 + 1065 328 14 0.417 49.99531 66.87945 42.10506 0 0 -1 + 1066 329 13 -0.834 53.69444 52.39171 45.41982 1 0 0 + 1067 329 14 0.417 53.84961 51.45739 45.55855 1 0 0 + 1068 329 14 0.417 52.75879 52.45359 45.22750 1 0 0 + 1069 330 13 -0.834 38.34038 60.92162 30.12773 2 0 0 + 1070 330 14 0.417 39.08908 61.47644 29.90887 2 0 0 + 1071 330 14 0.417 38.64185 60.39196 30.86585 2 0 0 + 1072 331 13 -0.834 48.03336 64.84935 43.13262 -1 0 -2 + 1073 331 14 0.417 48.90813 65.00919 43.48682 -1 0 -2 + 1074 331 14 0.417 47.46214 65.43367 43.63114 -1 0 -2 + 1075 332 13 -0.834 39.68760 66.88962 36.60665 2 0 0 + 1076 332 14 0.417 38.74743 66.72116 36.66944 2 0 0 + 1077 332 14 0.417 40.05009 66.08888 36.22764 2 0 0 + 1078 333 13 -0.834 51.94118 65.49897 51.83197 0 -1 -2 + 1079 333 14 0.417 52.71282 65.06165 51.47204 0 -1 -2 + 1080 333 14 0.417 51.22446 64.88225 51.68297 0 -1 -2 + 1081 334 13 -0.834 43.33066 57.53264 55.09930 -1 0 -2 + 1082 334 14 0.417 43.05496 56.76932 54.59178 -1 0 -2 + 1083 334 14 0.417 44.28179 57.55937 54.99503 -1 0 -2 + 1084 335 13 -0.834 47.70128 45.69178 52.17773 -1 3 -1 + 1085 335 14 0.417 47.54566 44.86273 52.63016 -1 3 -1 + 1086 335 14 0.417 48.58530 45.94693 52.44163 -1 3 -1 + 1087 336 13 -0.834 58.71603 41.81571 40.73899 -1 0 0 + 1088 336 14 0.417 57.77048 41.84330 40.88539 -1 0 0 + 1089 336 14 0.417 58.81275 41.43332 39.86682 -1 0 0 + 1090 337 13 -0.834 57.56034 60.98533 43.60766 0 -1 0 + 1091 337 14 0.417 56.67639 60.61816 43.59917 0 -1 0 + 1092 337 14 0.417 57.42830 61.92611 43.72486 0 -1 0 + 1093 338 13 -0.834 44.68088 65.08579 34.27880 -1 0 2 + 1094 338 14 0.417 45.54678 65.09564 34.68668 -1 0 2 + 1095 338 14 0.417 44.45037 64.15818 34.22739 -1 0 2 + 1096 339 13 -0.834 54.98236 48.04093 42.26075 0 0 0 + 1097 339 14 0.417 55.16505 47.86552 43.18384 0 0 0 + 1098 339 14 0.417 55.70493 48.59999 41.97513 0 0 0 + 1099 340 13 -0.834 60.57099 56.88773 56.53671 0 0 1 + 1100 340 14 0.417 60.67151 56.21616 29.83998 0 0 2 + 1101 340 14 0.417 61.34465 56.78824 55.98192 0 0 1 + 1102 341 13 -0.834 48.05045 49.69974 47.93542 -1 0 0 + 1103 341 14 0.417 48.70922 49.23613 48.45249 -1 0 0 + 1104 341 14 0.417 48.26410 49.48583 47.02721 -1 0 0 + 1105 342 13 -0.834 40.63207 55.77589 49.21695 1 0 -1 + 1106 342 14 0.417 40.84917 56.26844 50.00847 1 0 -1 + 1107 342 14 0.417 41.40772 55.85904 48.66226 1 0 -1 + 1108 343 13 -0.834 61.66015 42.71355 39.91223 0 0 0 + 1109 343 14 0.417 61.87748 41.86774 40.30419 0 0 0 + 1110 343 14 0.417 61.98864 42.65380 39.01514 0 0 0 + 1111 344 13 -0.834 38.52157 65.12766 57.04010 0 -1 -1 + 1112 344 14 0.417 38.04157 64.32142 56.85084 0 -1 -1 + 1113 344 14 0.417 39.36310 65.01535 56.59799 0 -1 -1 + 1114 345 13 -0.834 54.26556 44.72348 38.61852 -1 0 0 + 1115 345 14 0.417 54.65781 45.53245 38.94708 -1 0 0 + 1116 345 14 0.417 54.97105 44.29396 38.13473 -1 0 0 + 1117 346 13 -0.834 55.38993 55.61246 43.96322 -1 0 1 + 1118 346 14 0.417 54.74535 54.99107 43.62461 -1 0 1 + 1119 346 14 0.417 55.11835 55.77119 44.86726 -1 0 1 + 1120 347 13 -0.834 56.42023 55.00369 50.06211 -1 -1 0 + 1121 347 14 0.417 55.77599 55.59187 50.45611 -1 -1 0 + 1122 347 14 0.417 56.93756 54.68448 50.80151 -1 -1 0 + 1123 348 13 -0.834 45.79495 66.88952 36.56670 1 1 -1 + 1124 348 14 0.417 45.28578 66.71904 35.77429 1 1 -1 + 1125 348 14 0.417 46.57709 67.34552 36.25591 1 1 -1 + 1126 349 13 -0.834 62.75278 45.54084 32.23733 0 0 0 + 1127 349 14 0.417 62.61586 44.79986 31.64705 0 0 0 + 1128 349 14 0.417 62.96974 45.14017 33.07913 0 0 0 + 1129 350 13 -0.834 57.50625 65.62986 39.74454 0 0 0 + 1130 350 14 0.417 57.73342 64.85584 40.25983 0 0 0 + 1131 350 14 0.417 57.07082 66.21286 40.36642 0 0 0 + 1132 351 13 -0.834 55.96293 62.10636 50.17062 0 1 -1 + 1133 351 14 0.417 56.24333 61.70901 50.99507 0 1 -1 + 1134 351 14 0.417 56.67888 62.69531 49.93234 0 1 -1 + 1135 352 13 -0.834 37.45010 41.11856 53.00894 0 0 0 + 1136 352 14 0.417 37.99062 41.49514 53.70339 0 0 0 + 1137 352 14 0.417 37.83337 41.45341 52.19826 0 0 0 + 1138 353 13 -0.834 40.59344 47.85232 38.52244 1 0 1 + 1139 353 14 0.417 41.31256 47.71502 37.90580 1 0 1 + 1140 353 14 0.417 40.21612 48.69426 38.26747 1 0 1 + 1141 354 13 -0.834 60.77214 62.31711 30.33695 0 2 -1 + 1142 354 14 0.417 59.83662 62.43212 30.17023 0 2 -1 + 1143 354 14 0.417 60.97856 61.45964 29.96496 0 2 -1 + 1144 355 13 -0.834 47.83829 64.26042 48.43592 0 1 -1 + 1145 355 14 0.417 47.12209 64.85952 48.22523 0 1 -1 + 1146 355 14 0.417 47.44823 63.38856 48.37295 0 1 -1 + 1147 356 13 -0.834 38.69679 45.31108 42.13672 1 1 0 + 1148 356 14 0.417 39.20464 45.52138 41.35308 1 1 0 + 1149 356 14 0.417 37.90440 44.89009 41.80335 1 1 0 + 1150 357 13 -0.834 38.90832 47.67164 52.69089 0 1 0 + 1151 357 14 0.417 39.51269 48.14149 53.26554 0 1 0 + 1152 357 14 0.417 38.42834 48.36117 52.23218 0 1 0 + 1153 358 13 -0.834 45.13879 48.98199 29.96256 0 2 1 + 1154 358 14 0.417 44.63649 48.48457 30.60794 0 2 1 + 1155 358 14 0.417 44.70163 48.80464 56.50106 0 2 0 + 1156 359 13 -0.834 54.78460 57.58368 54.24956 1 1 -1 + 1157 359 14 0.417 54.71436 57.34891 55.17486 1 1 -1 + 1158 359 14 0.417 55.60599 58.07122 54.18735 1 1 -1 + 1159 360 13 -0.834 40.77006 67.09387 46.34204 0 0 1 + 1160 360 14 0.417 40.91087 66.51539 47.09156 0 0 1 + 1161 360 14 0.417 41.47386 67.73986 46.40192 0 0 1 + 1162 361 13 -0.834 53.75960 49.21723 54.03526 1 0 -1 + 1163 361 14 0.417 54.17778 50.07537 53.96484 1 0 -1 + 1164 361 14 0.417 54.18187 48.68822 53.35846 1 0 -1 + 1165 362 13 -0.834 46.41755 62.84035 30.52059 0 0 1 + 1166 362 14 0.417 46.37357 61.90548 30.72136 0 0 1 + 1167 362 14 0.417 46.76359 62.87829 57.00030 0 0 0 + 1168 363 13 -0.834 51.27491 42.28113 30.83818 0 -1 0 + 1169 363 14 0.417 51.18814 42.11416 31.77671 0 -1 0 + 1170 363 14 0.417 50.41560 42.60836 30.57220 0 -1 0 + 1171 364 13 -0.834 52.36258 42.54738 46.83477 0 -1 -1 + 1172 364 14 0.417 51.62853 42.02025 46.51928 0 -1 -1 + 1173 364 14 0.417 53.11771 42.22680 46.34158 0 -1 -1 + 1174 365 13 -0.834 40.11442 46.69570 48.71466 3 -2 1 + 1175 365 14 0.417 39.89820 47.61495 48.55824 3 -2 1 + 1176 365 14 0.417 40.87520 46.72352 49.29493 3 -2 1 + 1177 366 13 -0.834 56.56957 65.78976 45.32589 0 -2 -1 + 1178 366 14 0.417 56.86196 65.56407 46.20896 0 -2 -1 + 1179 366 14 0.417 57.34222 66.16870 44.90678 0 -2 -1 + 1180 367 13 -0.834 38.37373 47.63723 43.98242 2 0 0 + 1181 367 14 0.417 38.78516 47.21384 44.73589 2 0 0 + 1182 367 14 0.417 38.73588 47.18051 43.22315 2 0 0 + 1183 368 13 -0.834 45.69445 49.36872 40.50736 -1 0 -2 + 1184 368 14 0.417 44.73771 49.39892 40.51002 -1 0 -2 + 1185 368 14 0.417 45.90701 48.47357 40.77155 -1 0 -2 + 1186 369 13 -0.834 53.93830 54.76570 31.99728 0 -1 0 + 1187 369 14 0.417 53.94849 55.50033 32.61083 0 -1 0 + 1188 369 14 0.417 53.13070 54.29402 32.20107 0 -1 0 + 1189 370 13 -0.834 58.79125 64.07093 37.97498 -1 -1 -2 + 1190 370 14 0.417 58.48296 64.72380 38.60343 -1 -1 -2 + 1191 370 14 0.417 58.20942 64.16977 37.22136 -1 -1 -2 + 1192 371 13 -0.834 51.76123 61.42281 40.82794 0 -1 0 + 1193 371 14 0.417 52.69114 61.24136 40.69160 0 -1 0 + 1194 371 14 0.417 51.74755 62.21395 41.36660 0 -1 0 + 1195 372 13 -0.834 44.28377 63.70509 53.71234 -1 -2 -1 + 1196 372 14 0.417 44.98211 64.35001 53.59994 -1 -2 -1 + 1197 372 14 0.417 43.75271 63.78587 52.92008 -1 -2 -1 + 1198 373 13 -0.834 61.50835 48.76378 34.91047 0 0 -1 + 1199 373 14 0.417 61.23254 49.09753 34.05678 0 0 -1 + 1200 373 14 0.417 61.51672 49.53447 35.47812 0 0 -1 + 1201 374 13 -0.834 61.51337 41.63477 44.26291 -1 -1 0 + 1202 374 14 0.417 62.42662 41.58544 44.54543 -1 -1 0 + 1203 374 14 0.417 61.34749 68.16405 43.83907 -1 -2 0 + 1204 375 13 -0.834 57.73267 43.39213 33.64792 0 -1 0 + 1205 375 14 0.417 58.46456 43.28438 34.25535 0 -1 0 + 1206 375 14 0.417 58.09278 43.15396 32.79362 0 -1 0 + 1207 376 13 -0.834 63.51473 49.31549 51.59705 -1 1 -1 + 1208 376 14 0.417 63.13045 49.03534 50.76631 -1 1 -1 + 1209 376 14 0.417 62.84038 49.86142 52.00137 -1 1 -1 + 1210 377 13 -0.834 58.21462 44.79010 54.73553 -1 -1 -1 + 1211 377 14 0.417 58.08068 43.94884 55.17209 -1 -1 -1 + 1212 377 14 0.417 57.81645 44.67856 53.87224 -1 -1 -1 + 1213 378 13 -0.834 57.08090 55.14561 52.86183 0 -2 1 + 1214 378 14 0.417 57.05215 55.46811 53.76261 0 -2 1 + 1215 378 14 0.417 57.69965 54.41575 52.88786 0 -2 1 + 1216 379 13 -0.834 60.83502 54.45436 45.82182 1 0 -1 + 1217 379 14 0.417 61.05342 55.38616 45.83857 1 0 -1 + 1218 379 14 0.417 60.79443 54.20077 46.74392 1 0 -1 + 1219 380 13 -0.834 60.86442 48.23162 37.95658 0 0 2 + 1220 380 14 0.417 61.77710 48.43881 37.75572 0 0 2 + 1221 380 14 0.417 60.87611 47.30540 38.19788 0 0 2 + 1222 381 13 -0.834 43.21478 43.26953 44.97859 2 1 -1 + 1223 381 14 0.417 42.50778 42.78849 44.54850 2 1 -1 + 1224 381 14 0.417 43.42173 42.74895 45.75474 2 1 -1 + 1225 382 13 -0.834 39.01904 49.57571 48.28198 1 -1 -1 + 1226 382 14 0.417 38.68877 49.32064 47.42052 1 -1 -1 + 1227 382 14 0.417 38.42357 50.26661 48.57234 1 -1 -1 + 1228 383 13 -0.834 47.20253 45.34580 30.26781 0 0 1 + 1229 383 14 0.417 47.05738 44.40526 30.16508 0 0 1 + 1230 383 14 0.417 46.80592 45.73631 56.86044 0 0 0 + 1231 384 13 -0.834 44.57742 55.88746 33.53830 0 -1 0 + 1232 384 14 0.417 45.13093 56.49768 33.05096 0 -1 0 + 1233 384 14 0.417 44.41092 55.17196 32.92464 0 -1 0 + 1234 385 13 -0.834 42.17091 64.36626 51.74369 1 0 0 + 1235 385 14 0.417 41.78583 65.24128 51.69570 1 0 0 + 1236 385 14 0.417 41.41926 63.77568 51.79343 1 0 0 + 1237 386 13 -0.834 43.82615 43.47821 52.97551 0 0 0 + 1238 386 14 0.417 43.64099 42.56407 52.76025 0 0 0 + 1239 386 14 0.417 44.58924 43.43914 53.55207 0 0 0 + 1240 387 13 -0.834 63.58286 63.91035 38.47173 0 -1 -1 + 1241 387 14 0.417 64.14591 63.71296 39.22023 0 -1 -1 + 1242 387 14 0.417 62.70901 64.01191 38.84896 0 -1 -1 + 1243 388 13 -0.834 57.85225 42.19019 46.82252 1 1 -2 + 1244 388 14 0.417 57.61712 42.29475 47.74450 1 1 -2 + 1245 388 14 0.417 57.29406 42.81537 46.36013 1 1 -2 + 1246 389 13 -0.834 57.90802 64.30101 52.26362 1 0 1 + 1247 389 14 0.417 58.43907 64.81717 52.87010 1 0 1 + 1248 389 14 0.417 58.54387 63.78888 51.76396 1 0 1 + 1249 390 13 -0.834 53.18379 66.68791 54.05156 1 -2 0 + 1250 390 14 0.417 52.23394 66.79510 54.00115 1 -2 0 + 1251 390 14 0.417 53.33447 65.77140 53.82015 1 -2 0 + 1252 391 13 -0.834 56.95394 68.26036 36.42711 -1 1 1 + 1253 391 14 0.417 56.91362 41.83232 36.58445 -1 2 1 + 1254 391 14 0.417 57.79173 67.98998 36.80292 -1 1 1 + 1255 392 13 -0.834 64.19252 44.20158 54.88143 0 0 0 + 1256 392 14 0.417 64.09322 45.07899 54.51194 0 0 0 + 1257 392 14 0.417 63.39239 43.74201 54.62684 0 0 0 + 1258 393 13 -0.834 63.10536 65.42626 48.53464 0 0 0 + 1259 393 14 0.417 62.79665 64.63036 48.10166 0 0 0 + 1260 393 14 0.417 62.77768 65.35429 49.43112 0 0 0 + 1261 394 13 -0.834 49.28836 66.20367 32.27628 1 -1 0 + 1262 394 14 0.417 49.46858 65.88738 33.16155 1 -1 0 + 1263 394 14 0.417 49.29197 65.41476 31.73420 1 -1 0 + 1264 395 13 -0.834 46.11216 66.09570 44.77896 0 -1 0 + 1265 395 14 0.417 45.90309 66.07762 45.71287 0 -1 0 + 1266 395 14 0.417 45.36137 65.67813 44.35683 0 -1 0 + 1267 396 13 -0.834 41.43943 50.30026 52.32584 1 0 0 + 1268 396 14 0.417 41.39866 49.93140 51.44351 1 0 0 + 1269 396 14 0.417 40.92759 49.69528 52.86275 1 0 0 + 1270 397 13 -0.834 54.69177 57.80859 32.50623 0 -1 -1 + 1271 397 14 0.417 53.99890 57.66594 31.86139 0 -1 -1 + 1272 397 14 0.417 54.37599 57.37325 33.29806 0 -1 -1 + 1273 398 13 -0.834 43.56781 46.79065 37.17838 0 1 0 + 1274 398 14 0.417 43.18325 46.24795 36.49004 0 1 0 + 1275 398 14 0.417 44.03819 46.17194 37.73711 0 1 0 + 1276 399 13 -0.834 55.33436 45.90772 50.69068 -1 0 0 + 1277 399 14 0.417 55.55455 46.77982 51.01809 -1 0 0 + 1278 399 14 0.417 55.09425 46.04877 49.77488 -1 0 0 + 1279 400 13 -0.834 56.15383 51.87018 43.92178 -1 0 1 + 1280 400 14 0.417 55.25073 52.12373 44.11256 -1 0 1 + 1281 400 14 0.417 56.65027 52.68628 43.98319 -1 0 1 + 1282 401 13 -0.834 62.38946 50.01240 45.94802 0 1 -2 + 1283 401 14 0.417 62.43815 50.07607 44.99418 0 1 -2 + 1284 401 14 0.417 61.47369 50.19932 46.15457 0 1 -2 + 1285 402 13 -0.834 53.60920 58.35575 46.37412 0 0 1 + 1286 402 14 0.417 53.25556 59.03071 45.79481 0 0 1 + 1287 402 14 0.417 53.24753 57.53627 46.03666 0 0 1 + 1288 403 13 -0.834 43.13375 42.07203 50.04429 1 0 0 + 1289 403 14 0.417 43.76099 42.76922 49.85267 1 0 0 + 1290 403 14 0.417 42.35437 42.53016 50.35879 1 0 0 + 1291 404 13 -0.834 47.41498 59.41146 52.77687 -1 -1 0 + 1292 404 14 0.417 47.81303 59.83868 53.53534 -1 -1 0 + 1293 404 14 0.417 48.01011 59.60512 52.05261 -1 -1 0 + 1294 405 13 -0.834 63.75607 47.28104 38.80571 0 2 -1 + 1295 405 14 0.417 63.78573 48.20840 38.57042 0 2 -1 + 1296 405 14 0.417 37.08655 47.17376 39.44769 1 2 -1 + 1297 406 13 -0.834 46.67594 56.20863 44.42866 1 1 0 + 1298 406 14 0.417 45.82140 56.15280 44.00100 1 1 0 + 1299 406 14 0.417 46.48292 56.12468 45.36243 1 1 0 + 1300 407 13 -0.834 62.54251 68.21194 54.20445 0 -1 1 + 1301 407 14 0.417 63.31640 41.15490 53.73696 0 0 1 + 1302 407 14 0.417 62.78865 67.34176 54.51819 0 -1 1 + 1303 408 13 -0.834 60.27010 54.96049 39.87633 0 0 0 + 1304 408 14 0.417 59.62959 55.67175 39.88547 0 0 0 + 1305 408 14 0.417 61.04761 55.33233 40.29281 0 0 0 + 1306 409 13 -0.834 40.02595 44.30132 44.29580 0 -2 0 + 1307 409 14 0.417 39.70595 44.75009 45.07839 0 -2 0 + 1308 409 14 0.417 39.56836 44.72725 43.57092 0 -2 0 + 1309 410 13 -0.834 54.20011 41.08252 35.61017 0 1 0 + 1310 410 14 0.417 55.10396 68.23613 35.83794 0 0 0 + 1311 410 14 0.417 54.27044 41.57221 34.79072 0 1 0 + 1312 411 13 -0.834 60.64478 45.93023 50.84376 1 1 -1 + 1313 411 14 0.417 60.80088 46.54647 51.55941 1 1 -1 + 1314 411 14 0.417 61.20574 46.24077 50.13303 1 1 -1 + 1315 412 13 -0.834 44.55137 44.47403 38.16771 1 0 -1 + 1316 412 14 0.417 45.28189 43.86333 38.26597 1 0 -1 + 1317 412 14 0.417 43.77025 43.93754 38.30281 1 0 -1 + 1318 413 13 -0.834 58.08933 62.76987 30.45191 1 -1 0 + 1319 413 14 0.417 57.64138 63.31997 29.80927 1 -1 0 + 1320 413 14 0.417 57.43674 62.11708 30.70545 1 -1 0 + 1321 414 13 -0.834 55.65273 56.71117 38.74877 1 0 1 + 1322 414 14 0.417 56.53260 56.59636 39.10779 1 0 1 + 1323 414 14 0.417 55.14964 55.98047 39.10825 1 0 1 + 1324 415 13 -0.834 55.50009 51.16952 38.77962 0 0 0 + 1325 415 14 0.417 54.95350 51.23711 37.99672 0 0 0 + 1326 415 14 0.417 55.53220 50.23190 38.96963 0 0 0 + 1327 416 13 -0.834 47.64702 52.79911 31.71446 0 -1 0 + 1328 416 14 0.417 48.52504 53.09556 31.47481 0 -1 0 + 1329 416 14 0.417 47.06032 53.44853 31.32681 0 -1 0 + 1330 417 13 -0.834 49.26727 42.35880 39.18566 1 1 -2 + 1331 417 14 0.417 50.02784 42.93912 39.15429 1 1 -2 + 1332 417 14 0.417 49.46495 41.74196 39.89040 1 1 -2 + 1333 418 13 -0.834 47.22542 64.65021 35.82232 1 -1 0 + 1334 418 14 0.417 46.76114 65.20346 36.45050 1 -1 0 + 1335 418 14 0.417 47.98585 65.16966 35.56120 1 -1 0 + 1336 419 13 -0.834 58.53686 56.85468 40.78587 1 1 0 + 1337 419 14 0.417 58.45283 56.63469 41.71365 1 1 0 + 1338 419 14 0.417 58.36285 57.79507 40.74550 1 1 0 + 1339 420 13 -0.834 50.09436 46.17981 48.16619 -1 -1 -2 + 1340 420 14 0.417 50.67249 45.42897 48.30138 -1 -1 -2 + 1341 420 14 0.417 50.49629 46.88624 48.67183 -1 -1 -2 + 1342 421 13 -0.834 42.30297 57.95379 33.48633 0 -1 1 + 1343 421 14 0.417 41.56921 57.39445 33.23136 0 -1 1 + 1344 421 14 0.417 43.00718 57.34235 33.70193 0 -1 1 + 1345 422 13 -0.834 45.76518 43.79811 54.82490 0 -1 0 + 1346 422 14 0.417 46.45133 43.55343 54.20397 0 -1 0 + 1347 422 14 0.417 45.87205 43.18693 55.55379 0 -1 0 + 1348 423 13 -0.834 59.33326 61.34125 37.96927 -1 -1 1 + 1349 423 14 0.417 59.29007 62.29004 38.08827 -1 -1 1 + 1350 423 14 0.417 59.90006 61.03609 38.67769 -1 -1 1 + 1351 424 13 -0.834 40.95662 63.48104 42.72192 1 -1 0 + 1352 424 14 0.417 40.33618 63.69074 42.02383 1 -1 0 + 1353 424 14 0.417 41.73946 63.17568 42.26346 1 -1 0 + 1354 425 13 -0.834 38.13662 59.25720 46.08402 1 -1 -1 + 1355 425 14 0.417 38.31499 59.03616 46.99811 1 -1 -1 + 1356 425 14 0.417 38.55502 58.55783 45.58196 1 -1 -1 + 1357 426 13 -0.834 48.88681 66.85051 54.82298 1 -2 0 + 1358 426 14 0.417 49.16879 67.45078 54.13275 1 -2 0 + 1359 426 14 0.417 49.42353 66.06836 54.69484 1 -2 0 + 1360 427 13 -0.834 45.88049 57.05477 48.46508 0 0 -1 + 1361 427 14 0.417 45.73709 57.90911 48.05793 0 0 -1 + 1362 427 14 0.417 45.83791 57.22701 49.40569 0 0 -1 + 1363 428 13 -0.834 39.37333 50.31613 37.93447 0 1 0 + 1364 428 14 0.417 39.11456 50.97624 37.29140 0 1 0 + 1365 428 14 0.417 38.97424 50.60960 38.75352 0 1 0 + 1366 429 13 -0.834 37.89753 62.82745 47.39297 0 -1 0 + 1367 429 14 0.417 38.39122 62.78202 46.57414 0 -1 0 + 1368 429 14 0.417 37.01605 63.08963 47.12747 0 -1 0 + 1369 430 13 -0.834 43.16514 41.31420 47.01379 0 1 0 + 1370 430 14 0.417 42.71409 41.22965 47.85382 0 1 0 + 1371 430 14 0.417 44.05112 68.36565 47.18386 0 0 0 + 1372 431 13 -0.834 47.03179 42.44477 42.46475 1 0 0 + 1373 431 14 0.417 46.12350 42.65285 42.24573 1 0 0 + 1374 431 14 0.417 47.53228 43.19970 42.15516 1 0 0 + 1375 432 13 -0.834 55.35894 54.15040 46.85340 0 -1 0 + 1376 432 14 0.417 54.76544 53.43667 46.61975 0 -1 0 + 1377 432 14 0.417 56.17133 53.71318 47.10853 0 -1 0 + 1378 433 13 -0.834 47.00663 55.28313 38.22800 -1 -2 1 + 1379 433 14 0.417 46.53490 56.00706 38.63987 -1 -2 1 + 1380 433 14 0.417 47.07459 54.61953 38.91449 -1 -2 1 + 1381 434 13 -0.834 57.16336 58.62297 32.33349 -1 0 2 + 1382 434 14 0.417 57.63330 57.80350 32.48798 -1 0 2 + 1383 434 14 0.417 56.24209 58.36680 32.29014 -1 0 2 + 1384 435 13 -0.834 37.23245 47.62479 56.34765 0 1 -1 + 1385 435 14 0.417 37.24274 47.21497 55.48268 0 1 -1 + 1386 435 14 0.417 37.36000 46.89905 56.95860 0 1 -1 + 1387 436 13 -0.834 48.77030 41.06015 29.86683 2 1 0 + 1388 436 14 0.417 48.81141 67.97117 56.39997 2 0 -1 + 1389 436 14 0.417 49.05230 67.78232 30.51123 2 0 0 + 1390 437 13 -0.834 49.10149 56.15638 36.66346 0 0 1 + 1391 437 14 0.417 48.50786 55.61659 36.14146 0 0 1 + 1392 437 14 0.417 48.61812 56.33305 37.47053 0 0 1 + 1393 438 13 -0.834 58.15731 59.39698 29.96092 0 -1 1 + 1394 438 14 0.417 58.20240 59.10993 30.87296 0 -1 1 + 1395 438 14 0.417 57.30076 59.81721 29.88367 0 -1 1 + 1396 439 13 -0.834 59.37068 41.03089 37.87324 1 0 0 + 1397 439 14 0.417 59.56889 41.95335 37.71194 1 0 0 + 1398 439 14 0.417 60.22643 67.97433 37.90167 1 -1 0 + 1399 440 13 -0.834 38.32241 55.03397 50.58952 1 0 0 + 1400 440 14 0.417 38.22793 54.19584 50.13692 1 0 0 + 1401 440 14 0.417 39.21785 55.31153 50.39614 1 0 0 + 1402 441 13 -0.834 36.94673 59.01778 33.00159 1 -1 2 + 1403 441 14 0.417 36.95260 59.97305 32.94091 1 -1 2 + 1404 441 14 0.417 63.71798 58.82680 33.72245 0 -1 2 + 1405 442 13 -0.834 62.50746 54.84239 54.03343 0 -1 0 + 1406 442 14 0.417 61.69710 54.35984 54.19681 0 -1 0 + 1407 442 14 0.417 63.09119 54.20097 53.62833 0 -1 0 + 1408 443 13 -0.834 40.59690 62.80012 38.69405 1 -1 1 + 1409 443 14 0.417 41.53881 62.90970 38.82458 1 -1 1 + 1410 443 14 0.417 40.36980 62.03187 39.21794 1 -1 1 + 1411 444 13 -0.834 37.67477 67.71471 42.59127 0 -1 -1 + 1412 444 14 0.417 38.12213 68.13627 41.85751 0 -1 -1 + 1413 444 14 0.417 38.28279 67.03643 42.88534 0 -1 -1 + 1414 445 13 -0.834 42.73681 50.65782 33.30839 1 1 0 + 1415 445 14 0.417 42.84587 51.15085 34.12157 1 1 0 + 1416 445 14 0.417 42.32631 51.27747 32.70527 1 1 0 + 1417 446 13 -0.834 37.13349 57.05842 55.81927 0 0 0 + 1418 446 14 0.417 37.95375 57.53453 55.68979 0 0 0 + 1419 446 14 0.417 36.99014 56.59807 54.99236 0 0 0 + 1420 447 13 -0.834 61.08039 63.50929 36.52096 -1 0 0 + 1421 447 14 0.417 60.44389 63.87414 37.13579 -1 0 0 + 1422 447 14 0.417 61.70642 63.04107 37.07331 -1 0 0 + 1423 448 13 -0.834 57.12289 46.04019 38.75954 0 0 0 + 1424 448 14 0.417 56.81351 45.55997 39.52760 0 0 0 + 1425 448 14 0.417 57.99543 45.68504 38.58988 0 0 0 + 1426 449 13 -0.834 45.45003 49.45347 49.54397 0 0 -1 + 1427 449 14 0.417 45.96611 49.34591 48.74502 0 0 -1 + 1428 449 14 0.417 46.09930 49.60861 50.22999 0 0 -1 + 1429 450 13 -0.834 37.77009 64.51990 42.66941 1 0 0 + 1430 450 14 0.417 38.49339 64.80040 43.23011 1 0 0 + 1431 450 14 0.417 38.14071 64.50928 41.78694 1 0 0 + 1432 451 13 -0.834 45.78323 57.65378 39.37062 1 0 0 + 1433 451 14 0.417 46.03758 58.03295 40.21190 1 0 0 + 1434 451 14 0.417 44.96217 58.09258 39.14803 1 0 0 + 1435 452 13 -0.834 56.96672 60.41636 47.59314 0 -1 1 + 1436 452 14 0.417 56.18373 60.11455 48.05365 0 -1 1 + 1437 452 14 0.417 56.65889 61.13663 47.04297 0 -1 1 + 1438 453 13 -0.834 52.44356 65.82746 35.82081 -1 -1 0 + 1439 453 14 0.417 53.10567 65.14225 35.91211 -1 -1 0 + 1440 453 14 0.417 52.93741 66.64611 35.86748 -1 -1 0 + 1441 454 13 -0.834 50.70912 51.42252 40.30021 0 0 -1 + 1442 454 14 0.417 50.97387 50.70177 39.72866 0 0 -1 + 1443 454 14 0.417 50.17774 51.98938 39.74116 0 0 -1 + 1444 455 13 -0.834 39.22290 45.94023 39.69239 2 1 -1 + 1445 455 14 0.417 39.63836 46.66722 39.22859 2 1 -1 + 1446 455 14 0.417 38.97218 45.32685 39.00164 2 1 -1 + 1447 456 13 -0.834 43.73041 61.86387 55.46954 2 0 0 + 1448 456 14 0.417 43.61274 62.32163 56.30192 2 0 0 + 1449 456 14 0.417 43.90401 62.55964 54.83549 2 0 0 + 1450 457 13 -0.834 61.51877 56.42039 33.84869 0 0 1 + 1451 457 14 0.417 62.17805 55.74211 33.70200 0 0 1 + 1452 457 14 0.417 62.00943 57.15723 34.21276 0 0 1 + 1453 458 13 -0.834 51.72050 63.63199 42.34406 1 0 1 + 1454 458 14 0.417 51.24482 64.43296 42.56407 1 0 1 + 1455 458 14 0.417 52.62118 63.92057 42.19669 1 0 1 + 1456 459 13 -0.834 54.73666 56.51839 51.73687 0 0 -1 + 1457 459 14 0.417 54.77503 56.56844 52.69200 0 0 -1 + 1458 459 14 0.417 54.91702 57.41111 51.44234 0 0 -1 + 1459 460 13 -0.834 50.97984 54.35591 33.27919 0 1 0 + 1460 460 14 0.417 50.47200 55.12727 33.02747 0 1 0 + 1461 460 14 0.417 50.36917 53.82187 33.78725 0 1 0 + 1462 461 13 -0.834 44.82656 54.45280 36.09973 1 0 2 + 1463 461 14 0.417 45.75766 54.23599 36.14740 1 0 2 + 1464 461 14 0.417 44.76968 55.11700 35.41283 1 0 2 + 1465 462 13 -0.834 58.05791 56.64716 55.29041 1 1 0 + 1466 462 14 0.417 58.98499 56.81997 55.45441 1 1 0 + 1467 462 14 0.417 57.82639 55.96338 55.91897 1 1 0 + 1468 463 13 -0.834 55.95112 61.02029 30.79757 1 0 1 + 1469 463 14 0.417 55.28483 61.63344 30.48711 1 0 1 + 1470 463 14 0.417 55.45357 60.27206 31.12748 1 0 1 + 1471 464 13 -0.834 54.80996 46.88659 45.41700 -1 0 0 + 1472 464 14 0.417 55.42348 46.16300 45.28950 -1 0 0 + 1473 464 14 0.417 54.08129 46.68997 44.82826 -1 0 0 + 1474 465 13 -0.834 60.19361 64.43268 31.92053 0 -1 2 + 1475 465 14 0.417 60.05792 63.85315 32.67017 0 -1 2 + 1476 465 14 0.417 60.47170 63.84993 31.21392 0 -1 2 + 1477 466 13 -0.834 45.55496 65.56032 30.88251 0 -1 1 + 1478 466 14 0.417 45.97644 64.70102 30.89691 0 -1 1 + 1479 466 14 0.417 45.82502 65.97384 31.70248 0 -1 1 + 1480 467 13 -0.834 52.92714 44.06759 29.88429 0 1 0 + 1481 467 14 0.417 52.39641 43.38446 30.29405 0 1 0 + 1482 467 14 0.417 53.79372 43.96686 30.27818 0 1 0 + 1483 468 13 -0.834 40.71534 55.31247 44.93070 1 0 0 + 1484 468 14 0.417 39.81994 55.07165 45.16841 1 0 0 + 1485 468 14 0.417 41.16802 54.47609 44.82218 1 0 0 + 1486 469 13 -0.834 64.04777 59.80626 42.91634 0 -1 -1 + 1487 469 14 0.417 37.09051 60.51146 43.41377 1 -1 -1 + 1488 469 14 0.417 37.01609 59.00291 43.31068 1 -1 -1 + 1489 470 13 -0.834 57.05030 49.72625 41.88829 -1 1 1 + 1490 470 14 0.417 56.75150 50.53290 42.30818 -1 1 1 + 1491 470 14 0.417 57.52176 50.02159 41.10935 -1 1 1 + 1492 471 13 -0.834 62.59447 67.67898 41.14714 -2 -2 1 + 1493 471 14 0.417 63.45155 67.57764 41.56112 -2 -2 1 + 1494 471 14 0.417 61.96974 67.40478 41.81854 -2 -2 1 + 1495 472 13 -0.834 62.98029 58.34420 35.34278 0 0 1 + 1496 472 14 0.417 62.45371 58.26151 36.13783 0 0 1 + 1497 472 14 0.417 63.83636 58.64077 35.65169 0 0 1 + 1498 473 13 -0.834 63.44584 56.74146 44.14484 0 1 -2 + 1499 473 14 0.417 64.13590 56.53036 44.77371 0 1 -2 + 1500 473 14 0.417 62.70665 57.02149 44.68470 0 1 -2 + 1501 474 13 -0.834 44.05905 56.56929 51.60681 1 0 -1 + 1502 474 14 0.417 43.57850 56.15764 52.32504 1 0 -1 + 1503 474 14 0.417 43.90344 55.99747 50.85512 1 0 -1 + 1504 475 13 -0.834 37.49588 59.31379 39.05252 0 0 0 + 1505 475 14 0.417 37.07904 58.45297 39.09112 0 0 0 + 1506 475 14 0.417 37.58867 59.49374 38.11696 0 0 0 + 1507 476 13 -0.834 54.75747 41.52122 56.48609 -1 1 0 + 1508 476 14 0.417 54.79987 42.39714 56.86981 -1 1 0 + 1509 476 14 0.417 54.80582 41.67034 55.54179 -1 1 0 + 1510 477 13 -0.834 42.91665 58.39379 47.91495 1 0 0 + 1511 477 14 0.417 43.70923 58.91951 47.80683 1 0 0 + 1512 477 14 0.417 42.28811 58.98861 48.32409 1 0 0 + 1513 478 13 -0.834 60.63731 64.78822 56.03697 -2 1 -1 + 1514 478 14 0.417 60.86485 63.91302 56.35082 -2 1 -1 + 1515 478 14 0.417 60.50973 65.30321 56.83369 -2 1 -1 + 1516 479 13 -0.834 52.85180 54.69512 43.09842 0 0 1 + 1517 479 14 0.417 52.31485 55.13373 42.43846 0 0 1 + 1518 479 14 0.417 53.08000 53.85428 42.70200 0 0 1 + 1519 480 13 -0.834 51.49497 54.97356 38.95012 -2 1 -1 + 1520 480 14 0.417 50.77717 54.34090 38.97811 -2 1 -1 + 1521 480 14 0.417 51.51597 55.35169 39.82923 -2 1 -1 + 1522 481 13 -0.834 40.46924 62.02458 56.36341 1 0 -1 + 1523 481 14 0.417 40.45814 61.65439 55.48076 1 0 -1 + 1524 481 14 0.417 40.81799 62.90856 56.24853 1 0 -1 + 1525 482 13 -0.834 52.26692 56.29032 45.24820 0 2 1 + 1526 482 14 0.417 51.65227 56.79794 44.71834 0 2 1 + 1527 482 14 0.417 52.43092 55.49973 44.73408 0 2 1 + 1528 483 13 -0.834 53.46372 44.63556 52.39623 -1 1 1 + 1529 483 14 0.417 53.51664 45.03502 53.26448 -1 1 1 + 1530 483 14 0.417 54.08491 45.13343 51.86474 -1 1 1 + 1531 484 13 -0.834 42.90202 49.87822 40.32919 0 2 1 + 1532 484 14 0.417 42.40392 49.63281 41.10889 0 2 1 + 1533 484 14 0.417 42.31302 50.45172 39.83885 0 2 1 + 1534 485 13 -0.834 43.07357 64.57931 39.44006 2 1 1 + 1535 485 14 0.417 42.79300 64.80186 38.55237 2 1 1 + 1536 485 14 0.417 43.26869 65.42268 39.84860 2 1 1 + 1537 486 13 -0.834 38.86691 42.35197 55.12826 1 1 -1 + 1538 486 14 0.417 38.06621 42.87541 55.16185 1 1 -1 + 1539 486 14 0.417 39.52681 42.89488 55.55954 1 1 -1 + 1540 487 13 -0.834 59.15412 47.19863 55.46904 0 -1 0 + 1541 487 14 0.417 59.83963 46.99833 56.10636 0 -1 0 + 1542 487 14 0.417 58.74433 46.35364 55.28381 0 -1 0 + 1543 488 13 -0.834 52.12071 45.94110 44.23903 1 1 0 + 1544 488 14 0.417 51.89927 45.05144 44.51416 1 1 0 + 1545 488 14 0.417 52.26697 45.87115 43.29566 1 1 0 + 1546 489 13 -0.834 41.73140 52.23741 31.27732 0 0 1 + 1547 489 14 0.417 40.84403 52.55314 31.44796 0 0 1 + 1548 489 14 0.417 41.81503 52.26011 30.32405 0 0 1 + 1549 490 13 -0.834 38.46034 66.01701 52.27886 1 0 -1 + 1550 490 14 0.417 39.39276 66.02392 52.49517 1 0 -1 + 1551 490 14 0.417 38.11246 66.80769 52.69121 1 0 -1 + 1552 491 13 -0.834 42.13838 67.12262 54.88509 0 0 -3 + 1553 491 14 0.417 42.22460 67.38235 53.96784 0 0 -3 + 1554 491 14 0.417 42.96673 67.38388 55.28736 0 0 -3 + 1555 492 13 -0.834 37.89607 66.86351 46.16867 -1 -1 -1 + 1556 492 14 0.417 38.03129 66.98073 47.10899 -1 -1 -1 + 1557 492 14 0.417 38.75367 66.60168 45.83369 -1 -1 -1 + 1558 493 13 -0.834 40.37538 58.21424 30.88318 0 -1 0 + 1559 493 14 0.417 41.23010 58.63566 30.79307 0 -1 0 + 1560 493 14 0.417 40.45502 57.40101 30.38463 0 -1 0 + 1561 494 13 -0.834 54.56531 48.85249 32.17940 1 -2 2 + 1562 494 14 0.417 54.90082 48.98086 31.29216 1 -2 2 + 1563 494 14 0.417 54.03604 49.63141 32.35086 1 -2 2 + 1564 495 13 -0.834 63.56488 49.70113 37.88594 0 -1 1 + 1565 495 14 0.417 63.93261 49.40780 37.05228 0 -1 1 + 1566 495 14 0.417 63.98151 50.54765 38.04739 0 -1 1 + 1567 496 13 -0.834 39.26126 54.76920 54.71493 2 -1 2 + 1568 496 14 0.417 38.75402 55.21237 54.03483 2 -1 2 + 1569 496 14 0.417 38.67139 54.73109 55.46781 2 -1 2 + 1570 497 13 -0.834 42.78607 47.20625 49.30057 2 -1 0 + 1571 497 14 0.417 42.93670 46.34815 48.90404 2 -1 0 + 1572 497 14 0.417 43.53800 47.33917 49.87780 2 -1 0 + 1573 498 13 -0.834 59.99490 55.30114 50.55687 0 1 -1 + 1574 498 14 0.417 60.84158 55.66821 50.81111 0 1 -1 + 1575 498 14 0.417 59.38335 56.03363 50.63237 0 1 -1 + 1576 499 13 -0.834 57.95276 49.30660 54.37087 1 -1 -1 + 1577 499 14 0.417 57.34184 49.29544 55.10769 1 -1 -1 + 1578 499 14 0.417 58.55272 48.58151 54.54557 1 -1 -1 + 1579 500 13 -0.834 43.43041 64.04345 57.10111 1 -1 -1 + 1580 500 14 0.417 43.03742 64.07155 30.60210 1 -1 0 + 1581 500 14 0.417 44.26016 64.51104 29.82515 1 -1 0 + 1582 501 13 -0.834 40.71066 57.82778 50.85579 1 -1 -1 + 1583 501 14 0.417 41.04411 57.83612 51.75299 1 -1 -1 + 1584 501 14 0.417 40.96886 58.67633 50.49590 1 -1 -1 + 1585 502 13 -0.834 61.21331 60.53661 39.63578 1 -1 0 + 1586 502 14 0.417 61.87151 61.23113 39.61011 1 -1 0 + 1587 502 14 0.417 61.32085 60.13583 40.49837 1 -1 0 + 1588 503 13 -0.834 43.54081 65.33296 49.47114 1 -1 -1 + 1589 503 14 0.417 42.67637 65.41138 49.06762 1 -1 -1 + 1590 503 14 0.417 43.36562 64.99829 50.35065 1 -1 -1 + 1591 504 13 -0.834 50.27329 53.06087 30.87109 -1 0 1 + 1592 504 14 0.417 50.38769 53.42204 29.99204 -1 0 1 + 1593 504 14 0.417 50.86354 53.57620 31.42092 -1 0 1 + 1594 505 13 -0.834 40.29157 66.01889 32.67757 0 -1 0 + 1595 505 14 0.417 40.18198 66.27998 31.76320 0 -1 0 + 1596 505 14 0.417 39.39873 65.90460 33.00317 0 -1 0 + 1597 506 13 -0.834 48.15372 67.97019 44.25255 1 -1 1 + 1598 506 14 0.417 47.34263 67.52534 44.49854 1 -1 1 + 1599 506 14 0.417 47.87159 41.31478 43.68328 1 0 1 + 1600 507 13 -0.834 53.38019 63.98437 38.13827 0 0 -1 + 1601 507 14 0.417 54.19463 63.69976 37.72362 0 0 -1 + 1602 507 14 0.417 53.59582 64.82739 38.53711 0 0 -1 + 1603 508 13 -0.834 40.87597 58.12305 53.50808 0 0 0 + 1604 508 14 0.417 40.17916 58.26636 54.14852 0 0 0 + 1605 508 14 0.417 41.66044 58.48234 53.92256 0 0 0 + 1606 509 13 -0.834 38.19887 52.28056 36.30714 2 0 -1 + 1607 509 14 0.417 38.20463 53.19038 36.60452 2 0 -1 + 1608 509 14 0.417 38.09924 52.33929 35.35695 2 0 -1 + 1609 510 13 -0.834 49.63883 57.32410 43.72359 0 -1 0 + 1610 510 14 0.417 49.72446 58.17232 43.28833 0 -1 0 + 1611 510 14 0.417 48.76183 57.33851 44.10688 0 -1 0 + 1612 511 13 -0.834 42.58791 59.61362 29.86455 1 0 0 + 1613 511 14 0.417 43.07246 58.91969 56.78877 1 0 -1 + 1614 511 14 0.417 42.69535 60.38141 56.67447 1 0 -1 + 1615 512 13 -0.834 50.76111 60.95449 46.98165 -1 0 -1 + 1616 512 14 0.417 50.90477 61.15450 47.90663 -1 0 -1 + 1617 512 14 0.417 50.20825 61.66875 46.66473 -1 0 -1 + 1618 513 13 -0.834 43.18406 55.61939 48.08539 1 0 0 + 1619 513 14 0.417 43.11229 56.55752 47.90932 1 0 0 + 1620 513 14 0.417 44.01330 55.36231 47.68228 1 0 0 + 1621 514 13 -0.834 54.67377 64.76817 41.62522 1 0 1 + 1622 514 14 0.417 54.39407 65.19031 40.81294 1 0 1 + 1623 514 14 0.417 55.29742 65.38243 42.01250 1 0 1 + 1624 515 13 -0.834 53.87383 68.12810 51.72031 0 -1 0 + 1625 515 14 0.417 53.06918 41.24938 51.55887 0 0 0 + 1626 515 14 0.417 53.74278 67.72971 52.58074 0 -1 0 + 1627 516 13 -0.834 38.24785 41.26767 33.50598 2 0 0 + 1628 516 14 0.417 38.16490 67.75301 33.15337 2 -1 0 + 1629 516 14 0.417 37.95757 41.83753 32.79377 2 0 0 + 1630 517 13 -0.834 47.35008 61.96125 42.94580 2 -2 0 + 1631 517 14 0.417 47.46077 62.90828 43.03015 2 -2 0 + 1632 517 14 0.417 47.09087 61.83022 42.03373 2 -2 0 + 1633 518 13 -0.834 40.55210 54.00820 41.89137 1 -1 1 + 1634 518 14 0.417 39.80099 54.24986 41.34946 1 -1 1 + 1635 518 14 0.417 40.19429 53.40377 42.54166 1 -1 1 + 1636 519 13 -0.834 57.17705 64.40362 55.44286 1 -1 -1 + 1637 519 14 0.417 56.34510 64.78670 55.72097 1 -1 -1 + 1638 519 14 0.417 57.64987 65.12814 55.03330 1 -1 -1 + 1639 520 13 -0.834 41.86955 59.84132 42.65268 0 -1 1 + 1640 520 14 0.417 41.72011 59.11980 43.26367 0 -1 1 + 1641 520 14 0.417 42.24995 60.53605 43.19017 0 -1 1 + 1642 521 13 -0.834 61.62566 57.26645 46.18447 0 -1 -1 + 1643 521 14 0.417 60.68119 57.41642 46.22577 0 -1 -1 + 1644 521 14 0.417 61.98987 57.84356 46.85569 0 -1 -1 + 1645 522 13 -0.834 46.82701 65.68647 41.03579 0 0 0 + 1646 522 14 0.417 46.01385 65.85266 41.51264 0 0 0 + 1647 522 14 0.417 47.44009 65.38297 41.70531 0 0 0 + 1648 523 13 -0.834 54.12960 45.94549 32.81485 0 0 1 + 1649 523 14 0.417 53.25962 45.65636 32.53955 0 0 1 + 1650 523 14 0.417 54.18942 46.85072 32.50950 0 0 1 + 1651 524 13 -0.834 43.71268 59.97805 32.34985 1 1 0 + 1652 524 14 0.417 43.46300 59.27568 32.95033 1 1 0 + 1653 524 14 0.417 42.94131 60.10757 31.79808 1 1 0 + 1654 525 13 -0.834 50.10604 48.47250 49.62054 1 0 -2 + 1655 525 14 0.417 50.96037 48.77303 49.31064 1 0 -2 + 1656 525 14 0.417 50.19320 48.44287 50.57331 1 0 -2 + 1657 526 13 -0.834 54.68660 60.38920 43.62499 0 0 0 + 1658 526 14 0.417 54.62862 59.85089 42.83561 0 0 0 + 1659 526 14 0.417 53.78667 60.44045 43.94712 0 0 0 + 1660 527 13 -0.834 56.35115 44.75736 40.87552 0 -1 -1 + 1661 527 14 0.417 56.99705 44.99197 41.54186 0 -1 -1 + 1662 527 14 0.417 55.55387 44.56808 41.37024 0 -1 -1 + 1663 528 13 -0.834 48.77009 62.36934 40.44473 0 -1 0 + 1664 528 14 0.417 49.30266 62.60520 41.20432 0 -1 0 + 1665 528 14 0.417 49.04689 62.97756 39.75939 0 -1 0 + 1666 529 13 -0.834 45.88757 58.55209 41.94547 0 1 0 + 1667 529 14 0.417 46.76719 58.27665 42.20365 0 1 0 + 1668 529 14 0.417 45.35604 57.75963 42.02128 0 1 0 + 1669 530 13 -0.834 39.44116 52.22097 43.65725 1 0 2 + 1670 530 14 0.417 39.30570 52.06689 44.59221 1 0 2 + 1671 530 14 0.417 38.61744 52.60378 43.35530 1 0 2 + 1672 531 13 -0.834 43.95976 66.73852 41.23250 1 0 1 + 1673 531 14 0.417 44.64454 67.13772 40.69588 1 0 1 + 1674 531 14 0.417 43.40678 67.47232 41.50081 1 0 1 + 1675 532 13 -0.834 62.99634 65.50241 54.70446 0 -1 -1 + 1676 532 14 0.417 63.58398 64.98613 55.25617 0 -1 -1 + 1677 532 14 0.417 62.12519 65.14960 54.88585 0 -1 -1 + 1678 533 13 -0.834 62.92898 53.27582 44.77167 0 0 0 + 1679 533 14 0.417 62.08998 53.60880 45.09018 0 0 0 + 1680 533 14 0.417 62.85751 52.32504 44.85618 0 0 0 + 1681 534 13 -0.834 63.31201 43.08081 48.29805 -1 0 -1 + 1682 534 14 0.417 63.01276 42.23705 47.95930 -1 0 -1 + 1683 534 14 0.417 63.67142 43.53221 47.53431 -1 0 -1 + 1684 535 13 -0.834 47.11867 63.34781 55.06249 0 0 -1 + 1685 535 14 0.417 47.19267 64.30022 55.00160 0 0 -1 + 1686 535 14 0.417 46.22495 63.15783 54.77716 0 0 -1 + 1687 536 13 -0.834 60.37216 67.91341 52.27568 -1 0 0 + 1688 536 14 0.417 61.05051 68.14950 52.90839 -1 0 0 + 1689 536 14 0.417 60.81546 67.93922 51.42771 -1 0 0 + 1690 537 13 -0.834 60.04315 43.26291 35.25445 -1 1 1 + 1691 537 14 0.417 60.42501 44.05815 35.62593 -1 1 1 + 1692 537 14 0.417 60.79709 42.72574 35.01102 -1 1 1 + 1693 538 13 -0.834 53.03851 55.52589 47.75769 0 0 -1 + 1694 538 14 0.417 53.93635 55.46537 47.43136 0 0 -1 + 1695 538 14 0.417 52.51527 55.73342 46.98347 0 0 -1 + 1696 539 13 -0.834 37.91895 50.43697 56.37325 0 0 0 + 1697 539 14 0.417 37.51622 49.56884 56.35299 0 0 0 + 1698 539 14 0.417 38.37591 50.50915 55.53527 0 0 0 + 1699 540 13 -0.834 50.50006 63.56852 38.27177 1 1 0 + 1700 540 14 0.417 50.22462 63.18436 37.43944 1 1 0 + 1701 540 14 0.417 51.44083 63.71275 38.16986 1 1 0 + 1702 541 13 -0.834 49.44600 43.95446 42.01861 0 0 1 + 1703 541 14 0.417 49.59639 44.80378 41.60354 0 0 1 + 1704 541 14 0.417 49.73882 44.07372 42.92211 0 0 1 + 1705 542 13 -0.834 50.98365 47.23031 39.51901 1 0 1 + 1706 542 14 0.417 51.18743 48.09631 39.16579 1 0 1 + 1707 542 14 0.417 50.03928 47.13635 39.39410 1 0 1 + 1708 543 13 -0.834 45.54625 60.20130 44.30493 0 0 2 + 1709 543 14 0.417 46.27140 60.62480 43.84553 0 0 2 + 1710 543 14 0.417 45.09838 59.69256 43.62904 0 0 2 + 1711 544 13 -0.834 60.48207 53.69772 48.42686 0 0 1 + 1712 544 14 0.417 60.03677 54.31581 49.00644 0 0 1 + 1713 544 14 0.417 59.89364 52.94407 48.38216 0 0 1 + 1714 545 13 -0.834 63.04952 45.83903 48.97963 -1 1 1 + 1715 545 14 0.417 63.88202 45.63831 49.40729 -1 1 1 + 1716 545 14 0.417 62.76408 45.00498 48.60667 -1 1 1 + 1717 546 13 -0.834 40.62890 44.95273 52.60003 2 -1 -2 + 1718 546 14 0.417 41.29110 45.55853 52.26721 2 -1 -2 + 1719 546 14 0.417 40.33885 45.34348 53.42431 2 -1 -2 + 1720 547 13 -0.834 39.91743 46.12102 55.72693 -1 1 -1 + 1721 547 14 0.417 40.70381 45.68274 56.05216 -1 1 -1 + 1722 547 14 0.417 39.19323 45.65943 56.14967 -1 1 -1 + 1723 548 13 -0.834 42.06829 45.07566 41.79962 0 0 -1 + 1724 548 14 0.417 41.61985 45.91039 41.93531 0 0 -1 + 1725 548 14 0.417 41.86481 44.56390 42.58253 0 0 -1 + 1726 549 13 -0.834 44.17588 49.40877 37.86902 1 1 0 + 1727 549 14 0.417 43.85185 49.35470 38.76808 1 1 0 + 1728 549 14 0.417 43.95346 48.56183 37.48242 1 1 0 + 1729 550 13 -0.834 52.64793 63.92130 45.68237 0 1 0 + 1730 550 14 0.417 52.63502 62.96908 45.58561 0 1 0 + 1731 550 14 0.417 52.43571 64.07178 46.60356 0 1 0 + 1732 551 13 -0.834 51.57615 43.64864 38.83377 1 1 0 + 1733 551 14 0.417 51.74260 43.03820 38.11551 1 1 0 + 1734 551 14 0.417 52.20192 44.35945 38.69449 1 1 0 + 1735 552 13 -0.834 62.02099 63.12241 47.73587 0 1 0 + 1736 552 14 0.417 61.17806 62.75352 47.99973 0 1 0 + 1737 552 14 0.417 62.48263 62.39363 47.32116 0 1 0 + 1738 553 13 -0.834 38.41497 51.40373 50.93034 1 1 0 + 1739 553 14 0.417 37.60807 51.12879 50.49494 1 1 0 + 1740 553 14 0.417 38.99796 51.65996 50.21571 1 1 0 + 1741 554 13 -0.834 51.96339 44.25313 49.02477 0 0 0 + 1742 554 14 0.417 52.81680 44.60151 49.28274 0 0 0 + 1743 554 14 0.417 52.16570 43.57682 48.37831 0 0 0 + 1744 555 13 -0.834 43.58422 51.42052 49.88959 0 1 -1 + 1745 555 14 0.417 42.74054 51.00549 50.06897 0 1 -1 + 1746 555 14 0.417 44.20160 50.69175 49.82657 0 1 -1 + 1747 556 13 -0.834 52.39836 53.43568 49.29165 1 0 -1 + 1748 556 14 0.417 51.88756 52.90169 48.68323 1 0 -1 + 1749 556 14 0.417 52.64451 54.20889 48.78391 1 0 -1 + 1750 557 13 -0.834 57.76885 46.61656 49.32842 0 1 0 + 1751 557 14 0.417 57.83718 46.26991 48.43879 0 1 0 + 1752 557 14 0.417 58.65246 46.53329 49.68694 0 1 0 + 1753 558 13 -0.834 59.20868 56.75211 36.79427 0 1 -1 + 1754 558 14 0.417 59.74268 56.20033 36.22276 0 1 -1 + 1755 558 14 0.417 58.75094 56.13459 37.36470 0 1 -1 + 1756 559 13 -0.834 51.74055 42.45875 36.24184 0 1 1 + 1757 559 14 0.417 51.04879 41.79745 36.22260 0 1 1 + 1758 559 14 0.417 52.52794 41.99055 35.96429 0 1 1 + 1759 560 13 -0.834 56.37631 67.32150 33.05439 -1 0 1 + 1760 560 14 0.417 56.52797 66.39716 33.25152 -1 0 1 + 1761 560 14 0.417 56.88845 67.79399 33.71068 -1 0 1 + 1762 561 13 -0.834 54.61713 62.99597 56.69158 0 1 -1 + 1763 561 14 0.417 54.59393 63.94258 56.83172 0 1 -1 + 1764 561 14 0.417 54.12883 62.86158 55.87934 0 1 -1 + 1765 562 13 -0.834 59.12420 67.78462 34.49420 0 -1 1 + 1766 562 14 0.417 59.61921 67.94665 33.69111 0 -1 1 + 1767 562 14 0.417 59.22686 41.21594 35.00547 0 0 1 + 1768 563 13 -0.834 63.35827 53.14027 38.43168 -1 0 0 + 1769 563 14 0.417 62.48186 53.05933 38.05538 -1 0 0 + 1770 563 14 0.417 63.87715 53.55740 37.74392 -1 0 0 + 1771 564 13 -0.834 50.05518 64.80335 44.94078 1 0 -2 + 1772 564 14 0.417 50.16173 65.71408 44.66608 1 0 -2 + 1773 564 14 0.417 50.94818 64.48993 45.08424 1 0 -2 + 1774 565 13 -0.834 61.91076 61.67486 44.00650 0 -3 0 + 1775 565 14 0.417 61.40514 60.86646 44.09077 0 -3 0 + 1776 565 14 0.417 62.58390 61.60857 44.68380 0 -3 0 + 1777 566 13 -0.834 61.53884 41.33016 50.02212 -1 0 -1 + 1778 566 14 0.417 61.75835 68.35836 49.15591 -1 -1 -1 + 1779 566 14 0.417 62.19075 42.01255 50.18215 -1 0 -1 + 1780 567 13 -0.834 54.81641 49.94673 49.66324 0 -1 -1 + 1781 567 14 0.417 54.81533 50.72359 50.22249 0 -1 -1 + 1782 567 14 0.417 53.94410 49.93341 49.26932 0 -1 -1 + 1783 568 13 -0.834 60.68933 64.00249 53.56679 -1 -1 -1 + 1784 568 14 0.417 60.72666 63.10922 53.90872 -1 -1 -1 + 1785 568 14 0.417 60.37485 64.52808 54.30238 -1 -1 -1 + 1786 569 13 -0.834 55.51605 42.60469 53.96890 0 -1 0 + 1787 569 14 0.417 55.82084 42.66633 53.06360 0 -1 0 + 1788 569 14 0.417 54.99565 43.39708 54.10137 0 -1 0 + 1789 570 13 -0.834 43.79008 68.23755 52.31171 2 -1 1 + 1790 570 14 0.417 43.47705 41.06627 51.42954 2 0 1 + 1791 570 14 0.417 44.72624 68.07073 52.20206 2 -1 1 + 1792 571 13 -0.834 40.19615 44.94623 32.57234 0 0 1 + 1793 571 14 0.417 40.90940 45.49825 32.25173 0 0 1 + 1794 571 14 0.417 40.42796 44.75889 33.48196 0 0 1 + 1795 572 13 -0.834 51.93921 56.60019 36.60262 -1 0 1 + 1796 572 14 0.417 51.78399 56.35099 37.51368 -1 0 1 + 1797 572 14 0.417 51.06469 56.74242 36.24039 -1 0 1 + 1798 573 13 -0.834 61.66916 50.48338 53.29865 -1 0 -2 + 1799 573 14 0.417 61.63036 50.41309 54.25248 -1 0 -2 + 1800 573 14 0.417 60.77283 50.69388 53.03687 -1 0 -2 + 1801 574 13 -0.834 51.74160 54.87485 56.16871 0 -1 0 + 1802 574 14 0.417 50.91429 55.26706 56.44795 0 -1 0 + 1803 574 14 0.417 51.91124 55.25931 55.30869 0 -1 0 + 1804 575 13 -0.834 40.85698 68.18248 30.13155 1 -1 0 + 1805 575 14 0.417 41.30492 67.87357 56.71541 1 -1 -1 + 1806 575 14 0.417 41.55175 41.19073 30.66952 1 0 0 + 1807 576 13 -0.834 50.89809 58.89690 54.50288 -1 0 0 + 1808 576 14 0.417 50.06229 58.64352 54.89466 -1 0 0 + 1809 576 14 0.417 51.37024 59.33797 55.20914 -1 0 0 + 1810 577 13 -0.834 58.37524 67.95427 49.91095 0 1 0 + 1811 577 14 0.417 57.83519 41.29391 50.25604 0 2 0 + 1812 577 14 0.417 59.26942 68.19076 50.15744 0 1 0 + 1813 578 13 -0.834 51.40785 46.48357 30.68744 1 0 1 + 1814 578 14 0.417 52.21871 45.99275 30.55389 1 0 1 + 1815 578 14 0.417 50.76683 45.82189 30.94725 1 0 1 + 1816 579 13 -0.834 57.04032 43.52295 36.91237 0 0 0 + 1817 579 14 0.417 56.97310 44.35969 36.45239 0 0 0 + 1818 579 14 0.417 57.91622 43.53095 37.29833 0 0 0 + 1819 580 13 -0.834 48.05479 47.92450 33.11226 0 0 1 + 1820 580 14 0.417 47.68291 48.79527 32.97186 0 0 1 + 1821 580 14 0.417 48.92592 48.09081 33.47242 0 0 1 + 1822 581 13 -0.834 52.31083 59.89064 56.95945 1 -2 -1 + 1823 581 14 0.417 51.77727 60.32576 30.25310 1 -2 0 + 1824 581 14 0.417 52.84806 60.59010 56.58744 1 -2 -1 + 1825 582 13 -0.834 49.28190 53.14534 38.62511 0 0 1 + 1826 582 14 0.417 48.56647 53.70668 38.92395 0 0 1 + 1827 582 14 0.417 48.86634 52.52585 38.02526 0 0 1 + 1828 583 13 -0.834 48.15214 51.90611 34.43290 2 0 0 + 1829 583 14 0.417 48.57405 51.97443 33.57642 2 0 0 + 1830 583 14 0.417 47.22654 51.76503 34.23389 2 0 0 + 1831 584 13 -0.834 61.27546 54.09168 30.34511 0 1 1 + 1832 584 14 0.417 61.26898 53.84689 31.27046 0 1 1 + 1833 584 14 0.417 62.02427 53.62196 29.97785 0 1 1 + 1834 585 13 -0.834 47.15916 50.47662 53.78471 0 -1 0 + 1835 585 14 0.417 47.32648 50.93912 54.60588 0 -1 0 + 1836 585 14 0.417 46.29671 50.78520 53.50690 0 -1 0 + 1837 586 13 -0.834 58.58091 63.09753 49.23949 0 -1 1 + 1838 586 14 0.417 59.43607 63.50227 49.38484 0 -1 1 + 1839 586 14 0.417 58.76326 62.34843 48.67219 0 -1 1 + 1840 587 13 -0.834 55.82082 49.65937 30.11648 0 1 1 + 1841 587 14 0.417 56.52757 49.92139 30.70647 0 1 1 + 1842 587 14 0.417 55.68213 50.42183 56.92602 0 1 0 + 1843 588 13 -0.834 63.79581 52.53565 53.17702 0 -2 1 + 1844 588 14 0.417 36.89869 52.41207 52.35479 1 -2 1 + 1845 588 14 0.417 63.12882 51.84908 53.17487 0 -2 1 + 1846 589 13 -0.834 58.30874 56.36537 43.52715 0 0 3 + 1847 589 14 0.417 58.58025 56.80205 44.33452 0 0 3 + 1848 589 14 0.417 57.40732 56.09029 43.69457 0 0 3 + 1849 590 13 -0.834 38.42652 61.06904 33.48425 0 -2 -1 + 1850 590 14 0.417 39.08604 61.75763 33.56856 0 -2 -1 + 1851 590 14 0.417 38.90648 60.25628 33.64334 0 -2 -1 + 1852 591 13 -0.834 46.61439 51.58566 41.81121 1 -1 0 + 1853 591 14 0.417 46.97646 51.37067 42.67082 1 -1 0 + 1854 591 14 0.417 46.41089 50.73724 41.41750 1 -1 0 + 1855 592 13 -0.834 60.01555 43.31814 42.71405 1 0 1 + 1856 592 14 0.417 60.52150 42.79903 43.33920 1 0 1 + 1857 592 14 0.417 59.90024 42.74003 41.95989 1 0 1 + 1858 593 13 -0.834 44.88246 59.34852 51.75271 1 0 -1 + 1859 593 14 0.417 45.75263 59.37400 52.15069 1 0 -1 + 1860 593 14 0.417 44.67274 58.41644 51.69374 1 0 -1 + 1861 594 13 -0.834 58.22051 53.10280 51.15729 0 -1 0 + 1862 594 14 0.417 58.53381 52.60654 51.91346 0 -1 0 + 1863 594 14 0.417 58.92607 53.72100 50.96688 0 -1 0 + 1864 595 13 -0.834 52.85332 67.67658 42.66705 0 -1 0 + 1865 595 14 0.417 53.29462 67.40699 41.86157 0 -1 0 + 1866 595 14 0.417 53.28090 67.16860 43.35652 0 -1 0 + 1867 596 13 -0.834 60.42773 53.38162 37.56585 0 0 1 + 1868 596 14 0.417 60.55482 53.97513 38.30601 0 0 1 + 1869 596 14 0.417 59.53313 53.05721 37.66924 0 0 1 + 1870 597 13 -0.834 56.52028 65.87791 50.38146 0 0 1 + 1871 597 14 0.417 56.94337 66.73645 50.39389 0 0 1 + 1872 597 14 0.417 57.02985 65.35034 50.99649 0 0 1 + 1873 598 13 -0.834 54.80064 62.49993 33.68680 1 0 1 + 1874 598 14 0.417 55.58425 61.96146 33.79744 1 0 1 + 1875 598 14 0.417 55.10591 63.27334 33.21259 1 0 1 + 1876 599 13 -0.834 44.11783 61.90196 34.52932 1 1 -1 + 1877 599 14 0.417 44.98641 61.86349 34.92975 1 1 -1 + 1878 599 14 0.417 44.21923 61.44892 33.69223 1 1 -1 + 1879 600 13 -0.834 47.64060 51.80694 44.33090 -1 -1 0 + 1880 600 14 0.417 48.33775 51.24158 44.66345 -1 -1 0 + 1881 600 14 0.417 47.96940 52.69619 44.46262 -1 -1 0 + 1882 601 13 -0.834 56.93644 64.17109 32.73010 0 -2 0 + 1883 601 14 0.417 57.35484 63.79547 31.95543 0 -2 0 + 1884 601 14 0.417 57.46604 63.85913 33.46389 0 -2 0 + 1885 602 13 -0.834 40.19928 60.95715 53.68963 1 0 -1 + 1886 602 14 0.417 41.08822 60.76154 53.39341 1 0 -1 + 1887 602 14 0.417 39.80336 61.43545 52.96114 1 0 -1 + 1888 603 13 -0.834 56.02366 41.52320 41.07986 0 1 0 + 1889 603 14 0.417 55.42766 41.48842 40.33165 0 1 0 + 1890 603 14 0.417 55.93467 42.41489 41.41631 0 1 0 + 1891 604 13 -0.834 52.35261 67.43639 29.83633 -1 0 0 + 1892 604 14 0.417 53.08703 67.77971 56.69878 -1 0 -1 + 1893 604 14 0.417 51.97673 68.20568 30.26426 -1 0 0 + 1894 605 13 -0.834 51.14102 49.90060 37.90539 1 0 1 + 1895 605 14 0.417 51.41236 49.08269 37.48865 1 0 1 + 1896 605 14 0.417 50.32915 50.13989 37.45830 1 0 1 + 1897 606 13 -0.834 48.40753 57.18555 40.43062 0 0 0 + 1898 606 14 0.417 47.74030 57.19949 39.74445 0 0 0 + 1899 606 14 0.417 48.68357 58.09814 40.51553 0 0 0 + 1900 607 13 -0.834 38.43185 54.52830 40.23522 1 -2 1 + 1901 607 14 0.417 37.76601 54.24704 40.86274 1 -2 1 + 1902 607 14 0.417 37.95756 54.62565 39.40951 1 -2 1 + 1903 608 13 -0.834 52.97765 52.38562 41.57118 0 0 0 + 1904 608 14 0.417 52.16773 52.00413 41.23247 0 0 0 + 1905 608 14 0.417 53.62059 51.67937 41.50742 0 0 0 + 1906 609 13 -0.834 52.82978 61.35779 35.40768 0 1 -2 + 1907 609 14 0.417 53.63682 61.71145 35.03372 0 1 -2 + 1908 609 14 0.417 53.10766 60.57217 35.87865 0 1 -2 + 1909 610 13 -0.834 55.37636 43.79165 30.66790 0 0 0 + 1910 610 14 0.417 55.82860 43.25432 31.31827 0 0 0 + 1911 610 14 0.417 55.97415 44.52040 30.50110 0 0 0 + 1912 611 13 -0.834 37.90570 54.55715 45.50029 1 -2 -1 + 1913 611 14 0.417 37.12871 54.09851 45.18066 1 -2 -1 + 1914 611 14 0.417 38.24821 53.99402 46.19441 1 -2 -1 + 1915 612 13 -0.834 60.01324 50.96528 45.16358 1 1 0 + 1916 612 14 0.417 59.85669 51.13906 44.23539 1 1 0 + 1917 612 14 0.417 59.48415 50.19096 45.35532 1 1 0 + 1918 613 13 -0.834 38.84394 52.32942 30.93040 2 1 0 + 1919 613 14 0.417 38.51878 51.61086 30.38802 2 1 0 + 1920 613 14 0.417 38.41000 53.10831 30.58218 2 1 0 + 1921 614 13 -0.834 38.99542 61.66171 44.80992 1 0 2 + 1922 614 14 0.417 38.78488 60.74588 44.99207 1 0 2 + 1923 614 14 0.417 39.68427 61.62223 44.14648 1 0 2 + 1924 615 13 -0.834 57.70791 41.72720 55.47643 0 1 -2 + 1925 615 14 0.417 57.25844 41.36846 56.24163 0 1 -2 + 1926 615 14 0.417 57.00496 41.93588 54.86116 0 1 -2 + 1927 616 13 -0.834 58.08999 54.20225 35.53764 0 -1 0 + 1928 616 14 0.417 58.28608 53.46338 36.11372 0 -1 0 + 1929 616 14 0.417 57.15628 54.11553 35.34551 0 -1 0 + 1930 617 13 -0.834 53.05217 52.71850 54.07873 0 0 -1 + 1931 617 14 0.417 52.72353 53.45661 54.59199 0 0 -1 + 1932 617 14 0.417 52.69237 51.94509 54.51306 0 0 -1 + 1933 618 13 -0.834 49.92059 65.13477 35.13462 0 1 1 + 1934 618 14 0.417 50.86780 65.25694 35.19866 0 1 1 + 1935 618 14 0.417 49.79534 64.18846 35.20565 0 1 1 + 1936 619 13 -0.834 41.32410 62.50943 46.98364 1 -1 0 + 1937 619 14 0.417 40.63048 62.20572 46.39807 1 -1 0 + 1938 619 14 0.417 41.96090 61.79482 46.99226 1 -1 0 + 1939 620 13 -0.834 53.94559 67.39201 49.11860 0 0 0 + 1940 620 14 0.417 54.46912 66.60137 48.98810 0 0 0 + 1941 620 14 0.417 54.03461 67.58755 50.05138 0 0 0 + 1942 621 13 -0.834 62.73724 52.28919 56.37358 -2 0 0 + 1943 621 14 0.417 61.94239 51.76764 56.26203 -2 0 0 + 1944 621 14 0.417 63.44036 51.64333 56.44233 -2 0 0 + 1945 622 13 -0.834 40.38118 67.16060 39.18721 2 1 1 + 1946 622 14 0.417 41.33280 67.21360 39.09858 2 1 1 + 1947 622 14 0.417 40.05780 67.12713 38.28691 2 1 1 + 1948 623 13 -0.834 62.86517 42.00727 34.57539 -1 0 -1 + 1949 623 14 0.417 63.37239 42.81882 34.59420 -1 0 -1 + 1950 623 14 0.417 63.40838 41.39624 34.07760 -1 0 -1 + 1951 624 13 -0.834 45.52270 49.32960 34.34348 1 -1 1 + 1952 624 14 0.417 45.92383 49.19413 33.48500 1 -1 1 + 1953 624 14 0.417 45.24004 50.24407 34.33468 1 -1 1 + 1954 625 13 -0.834 61.03811 44.77668 56.49913 1 1 0 + 1955 625 14 0.417 60.72892 43.87199 56.45248 1 1 0 + 1956 625 14 0.417 60.93423 45.11202 55.60864 1 1 0 + 1957 626 13 -0.834 37.82896 51.65548 39.75440 0 1 1 + 1958 626 14 0.417 37.05574 52.05171 39.35268 0 1 1 + 1959 626 14 0.417 38.46628 52.36806 39.80236 0 1 1 + 1960 627 13 -0.834 57.87448 65.36125 35.56679 -1 -1 0 + 1961 627 14 0.417 58.45940 64.84211 35.01489 -1 -1 0 + 1962 627 14 0.417 58.01580 66.26448 35.28319 -1 -1 0 + 1963 628 13 -0.834 41.02352 64.37669 36.41484 0 0 1 + 1964 628 14 0.417 40.85775 63.95254 37.25679 0 0 1 + 1965 628 14 0.417 41.32667 63.66948 35.84545 0 0 1 + 1966 629 13 -0.834 48.62923 67.86173 41.06030 1 0 1 + 1967 629 14 0.417 48.15680 41.13844 41.58283 1 1 1 + 1968 629 14 0.417 47.94185 67.35115 40.63246 1 0 1 + 1969 630 13 -0.834 57.99331 55.69311 47.88478 1 2 0 + 1970 630 14 0.417 57.70999 55.65425 48.79826 1 2 0 + 1971 630 14 0.417 57.37284 55.13407 47.41709 1 2 0 + 1972 631 13 -0.834 48.67013 62.47689 45.75332 -1 -1 0 + 1973 631 14 0.417 49.00300 63.35392 45.56291 -1 -1 0 + 1974 631 14 0.417 48.17776 62.23177 44.96992 -1 -1 0 + 1975 632 13 -0.834 63.70160 54.96100 33.30497 -1 0 0 + 1976 632 14 0.417 64.21034 55.41699 32.63452 -1 0 0 + 1977 632 14 0.417 36.84822 54.18301 33.51151 0 0 0 + 1978 633 13 -0.834 61.71933 50.02843 40.52579 1 0 -1 + 1979 633 14 0.417 61.89605 49.89083 39.59516 1 0 -1 + 1980 633 14 0.417 61.20325 50.83404 40.55551 1 0 -1 + 1981 634 13 -0.834 49.51254 64.46386 53.41539 0 -1 -1 + 1982 634 14 0.417 48.93704 63.81647 53.00803 0 -1 -1 + 1983 634 14 0.417 49.96102 63.98252 54.11066 0 -1 -1 + 1984 635 13 -0.834 49.54405 44.64373 31.53722 1 2 1 + 1985 635 14 0.417 49.17415 44.45447 32.39954 1 2 1 + 1986 635 14 0.417 48.78808 44.87386 30.99705 1 2 1 + 1987 636 13 -0.834 55.54392 65.92737 37.61921 0 -1 -1 + 1988 636 14 0.417 56.11408 65.75233 38.36791 0 -1 -1 + 1989 636 14 0.417 56.12096 66.32174 36.96519 0 -1 -1 + 1990 637 13 -0.834 55.12269 51.83986 35.86341 1 0 1 + 1991 637 14 0.417 55.56426 51.26412 35.23910 1 0 1 + 1992 637 14 0.417 54.23658 51.93728 35.51477 1 0 1 + 1993 638 13 -0.834 55.63681 62.23759 37.50835 1 -1 0 + 1994 638 14 0.417 55.30920 61.35525 37.33403 1 -1 0 + 1995 638 14 0.417 56.23965 62.41667 36.78672 1 -1 0 + 1996 639 13 -0.834 39.91450 42.04260 35.59226 0 0 0 + 1997 639 14 0.417 39.72903 41.27571 36.13422 0 0 0 + 1998 639 14 0.417 39.23583 42.02933 34.91737 0 0 0 + 1999 640 13 -0.834 48.26433 59.84813 40.16126 0 1 0 + 2000 640 14 0.417 48.74870 60.67004 40.23938 0 1 0 + 2001 640 14 0.417 47.50743 60.06639 39.61748 0 1 0 + 2002 641 13 -0.834 57.35097 49.28414 48.37687 1 1 1 + 2003 641 14 0.417 57.35715 48.51028 48.94022 1 1 1 + 2004 641 14 0.417 56.55074 49.75049 48.61854 1 1 1 + +Velocities + + 1 -0.000671 -0.002823 0.003832 + 2 -0.001597 0.002405 -0.003777 + 3 0.005494 0.003807 -0.002300 + 4 -0.000077 0.004524 -0.000287 + 5 0.003116 -0.007135 -0.034325 + 6 -0.006676 0.004889 -0.001939 + 7 0.003499 -0.004774 0.000159 + 8 -0.003460 0.000694 0.000994 + 9 -0.000065 -0.001353 -0.002848 + 10 -0.001260 -0.002649 0.000699 + 11 -0.002820 -0.002457 -0.005671 + 12 0.005156 -0.005914 0.000984 + 13 -0.002342 -0.001592 0.004306 + 14 0.004397 -0.000231 0.003308 + 15 -0.003258 -0.000006 0.001838 + 16 -0.001637 -0.004429 0.003154 + 17 0.007073 -0.000472 -0.003331 + 18 -0.003380 -0.001390 0.005013 + 19 -0.011019 -0.005332 -0.010451 + 20 -0.005433 0.000844 0.004938 + 21 0.002988 0.000244 -0.009941 + 22 -0.003695 0.006546 -0.007678 + 23 0.009473 0.023276 0.019457 + 24 -0.010016 -0.024193 0.018017 + 25 0.004015 0.008726 -0.000397 + 26 -0.001741 -0.001861 0.007862 + 27 -0.009771 -0.011577 -0.005703 + 28 0.003573 0.006265 -0.005932 + 29 0.004789 0.001987 -0.004620 + 30 0.008858 -0.001064 -0.001455 + 31 -0.001403 0.000613 0.002330 + 32 -0.005808 -0.001620 0.000816 + 33 -0.004160 0.001188 -0.019638 + 34 -0.006899 0.006285 0.013256 + 35 0.000717 -0.000432 -0.006883 + 36 0.002110 0.002628 -0.004683 + 37 0.000765 -0.007298 0.000289 + 38 -0.000128 -0.002893 0.004065 + 39 -0.000411 -0.021741 0.010968 + 40 0.002858 0.000302 0.000042 + 41 0.014233 -0.004599 -0.004060 + 42 -0.001473 -0.003572 -0.006228 + 43 0.009129 -0.002755 0.001456 + 44 0.003931 0.000151 0.003472 + 45 0.001621 0.005391 -0.006087 + 46 -0.004269 -0.001973 0.002735 + 47 -0.006898 -0.001187 -0.003394 + 48 -0.008556 -0.000163 -0.001387 + 49 -0.000633 -0.001754 0.011460 + 50 0.004854 -0.002902 -0.005057 + 51 0.000678 0.003272 0.006218 + 52 0.006502 0.006365 -0.000215 + 53 0.005708 0.012368 0.002955 + 54 0.008627 -0.007839 0.003177 + 55 0.004394 0.000132 0.002346 + 56 -0.004641 0.009426 -0.005548 + 57 -0.004801 -0.024766 0.002851 + 58 -0.002703 0.001589 0.007521 + 59 0.023718 -0.006559 0.003743 + 60 -0.010013 -0.042894 -0.029745 + 61 0.016140 -0.000721 -0.001747 + 62 -0.004871 0.002439 0.001990 + 63 0.009632 0.007144 0.001203 + 64 -0.001150 0.001648 -0.003018 + 65 0.006658 -0.002268 0.006874 + 66 -0.002617 0.003321 0.002230 + 67 -0.000803 0.002802 0.003258 + 68 -0.000984 -0.001579 -0.001813 + 69 0.001316 0.000607 0.003431 + 70 -0.010901 0.000580 -0.004134 + 71 0.005370 -0.003909 0.013130 + 72 -0.012282 0.007114 -0.015100 + 73 0.004641 -0.007554 0.004302 + 74 0.017455 0.013344 0.004896 + 75 0.006200 0.026885 0.020665 + 76 -0.010372 0.000470 -0.005601 + 77 -0.003368 -0.004484 0.010962 + 78 0.012416 -0.004728 0.000719 + 79 -0.005789 0.005198 -0.007541 + 80 0.005480 -0.004049 0.003455 + 81 -0.004935 0.005839 -0.006405 + 82 0.001157 -0.011200 0.018491 + 83 -0.029013 -0.016935 0.021131 + 84 -0.020335 0.020972 0.006071 + 85 0.003304 0.007374 -0.005056 + 86 0.029227 0.010776 -0.013183 + 87 0.001651 0.006570 -0.002085 + 88 0.001533 -0.009172 0.007562 + 89 0.018153 -0.022223 0.015786 + 90 -0.010012 -0.004911 0.002561 + 91 0.000435 0.003941 -0.005468 + 92 0.003301 0.001183 -0.006999 + 93 0.006788 0.011331 -0.004427 + 94 0.001392 0.005663 -0.002907 + 95 -0.001849 -0.002229 -0.003422 + 96 -0.000820 0.005872 0.004561 + 97 -0.003264 0.002461 -0.009257 + 98 0.000160 0.016954 -0.015355 + 99 -0.006597 0.011858 0.000426 + 100 0.001816 -0.005854 -0.001317 + 101 -0.001936 -0.006103 0.018111 + 102 0.024621 -0.022735 -0.000704 + 103 -0.001102 0.008384 -0.003086 + 104 0.012559 0.004375 -0.000361 + 105 0.008377 0.014814 -0.037755 + 106 -0.002851 -0.000200 -0.000722 + 107 0.010701 0.006888 -0.007831 + 108 -0.008490 0.011514 0.009399 + 109 -0.001181 0.001853 0.002176 + 110 -0.018912 -0.023868 0.006706 + 111 -0.000415 -0.001525 0.005751 + 112 -0.001172 0.001329 -0.001270 + 113 -0.006700 -0.006243 -0.006459 + 114 0.000018 0.001429 0.001376 + 115 0.001269 0.002521 0.005249 + 116 -0.002179 0.015666 0.006861 + 117 -0.007158 0.000981 0.007353 + 118 0.001047 0.000840 -0.004404 + 119 0.000974 -0.012527 0.005053 + 120 0.026729 0.008884 -0.003350 + 121 0.001181 -0.004040 -0.002037 + 122 0.006556 -0.007438 0.002656 + 123 0.005056 -0.015002 -0.003727 + 124 -0.002704 -0.003683 -0.001021 + 125 0.025048 0.007258 0.008873 + 126 0.019645 -0.020824 -0.002539 + 127 0.000061 0.001072 0.002612 + 128 0.005132 0.013203 0.018763 + 129 0.033473 0.004804 0.018651 + 130 -0.003459 -0.000309 -0.001348 + 131 -0.008088 0.023660 0.011047 + 132 0.010962 0.031994 0.008711 + 133 0.000181 -0.002894 -0.001677 + 134 0.024049 -0.000711 -0.009405 + 135 0.018702 0.003422 -0.019522 + 136 -0.000836 -0.003270 -0.005700 + 137 0.012246 0.016524 0.001525 + 138 0.006270 -0.011288 0.002224 + 139 -0.005169 0.005097 -0.000688 + 140 -0.006982 0.003044 -0.001383 + 141 0.012227 0.012767 0.004047 + 142 -0.001169 0.006070 -0.007989 + 143 0.005451 0.002569 -0.009841 + 144 0.001825 -0.002822 -0.005341 + 145 0.000911 0.004242 -0.002026 + 146 0.012072 -0.001187 -0.010498 + 147 0.007366 0.005541 0.012099 + 148 0.009820 0.000588 0.001087 + 149 0.013758 0.005140 0.015262 + 150 0.015580 0.003311 0.013079 + 151 0.002031 0.000411 0.003403 + 152 -0.001996 0.003750 0.007387 + 153 0.000790 0.000281 -0.000919 + 154 -0.004168 0.001886 -0.004993 + 155 -0.011049 0.015294 0.001052 + 156 -0.012308 0.010348 -0.003128 + 157 -0.001609 -0.004040 -0.002294 + 158 -0.005715 -0.015529 -0.005700 + 159 0.014489 0.026653 0.004024 + 160 0.004070 0.000866 0.003373 + 161 0.004691 0.005062 0.002569 + 162 0.007082 -0.019961 -0.026174 + 163 0.005501 0.000902 -0.001325 + 164 0.007503 0.001448 -0.001472 + 165 0.013628 0.003649 -0.005952 + 166 -0.000639 0.003162 -0.007271 + 167 0.007342 -0.011001 -0.016849 + 168 -0.018400 -0.004772 0.020839 + 169 0.000214 -0.000386 0.002706 + 170 -0.005862 0.010449 -0.003793 + 171 -0.013612 0.011870 -0.006417 + 172 -0.005485 0.006465 0.005343 + 173 0.001788 0.008428 0.005641 + 174 -0.018354 0.029579 0.010717 + 175 0.002627 -0.000754 0.000071 + 176 -0.018080 0.018546 0.001794 + 177 0.006754 -0.000962 -0.007786 + 178 0.002343 0.002166 0.004945 + 179 -0.001724 0.003155 0.010761 + 180 0.010728 0.003441 0.001544 + 181 -0.000849 -0.002856 0.001461 + 182 0.009366 -0.003672 -0.001935 + 183 0.016615 -0.001746 0.005238 + 184 -0.002730 -0.000316 -0.004583 + 185 -0.014755 -0.011310 0.003338 + 186 0.005862 0.008235 -0.003200 + 187 -0.003189 -0.006285 0.009536 + 188 -0.005114 -0.007060 0.006450 + 189 -0.000516 -0.008757 0.009854 + 190 -0.000859 0.005266 0.001864 + 191 0.003108 -0.007021 0.009190 + 192 -0.015949 -0.002050 0.007021 + 193 -0.007008 0.002608 -0.004583 + 194 -0.020431 -0.004004 0.008047 + 195 -0.000364 0.001236 -0.011425 + 196 0.002420 0.006931 0.002031 + 197 0.007178 0.006129 0.009924 + 198 -0.005981 0.016623 -0.013067 + 199 0.003142 -0.001394 -0.001846 + 200 0.011374 -0.002895 -0.000674 + 201 0.032698 -0.002552 0.007288 + 202 -0.005709 0.000071 0.005037 + 203 -0.013193 -0.012592 -0.008102 + 204 -0.008194 0.014723 0.003840 + 205 -0.003270 -0.006146 0.004301 + 206 0.004399 -0.010132 -0.001197 + 207 -0.030308 0.012803 0.003540 + 208 0.002110 0.002374 0.006075 + 209 -0.000845 -0.004182 -0.002795 + 210 0.002582 -0.004671 0.002224 + 211 -0.003768 0.002130 0.001339 + 212 0.022509 0.017397 0.002782 + 213 0.020609 0.006682 -0.014082 + 214 0.003956 0.004282 -0.005023 + 215 0.007499 0.004128 0.002237 + 216 0.034882 -0.005096 0.008948 + 217 -0.002552 -0.000287 -0.001907 + 218 0.025445 0.005560 -0.016526 + 219 0.002741 0.000814 -0.004654 + 220 0.002162 -0.001203 0.000936 + 221 0.004071 0.004725 0.001938 + 222 0.002393 -0.013063 -0.003950 + 223 -0.001609 -0.003218 -0.004310 + 224 -0.012550 0.009033 -0.007868 + 225 0.014344 0.000886 -0.013005 + 226 0.005863 0.010335 -0.003424 + 227 0.011104 -0.005602 -0.012415 + 228 0.001222 0.002408 0.001546 + 229 -0.002038 0.001858 0.002991 + 230 -0.017517 -0.020932 0.016099 + 231 0.005257 0.011588 -0.018236 + 232 -0.002660 -0.006193 0.003186 + 233 -0.021995 0.012375 0.004372 + 234 -0.013906 0.028004 -0.004997 + 235 0.002339 -0.001255 -0.003548 + 236 0.001689 0.005243 -0.006337 + 237 0.000498 -0.007782 -0.015260 + 238 0.001142 0.002234 0.003408 + 239 0.007521 0.004622 -0.003272 + 240 -0.001154 0.006952 0.006739 + 241 -0.000938 -0.004609 0.002499 + 242 0.004903 0.001117 0.013021 + 243 0.008126 -0.013873 -0.001075 + 244 -0.004097 0.002491 -0.002459 + 245 0.002093 -0.002989 0.010881 + 246 0.008552 0.010436 0.008330 + 247 -0.000211 0.002295 0.001935 + 248 0.004346 0.003486 0.008405 + 249 -0.006182 0.002873 -0.007955 + 250 0.002466 0.001439 -0.002302 + 251 -0.003246 0.007233 0.009469 + 252 -0.002606 0.002646 0.002563 + 253 0.000833 -0.001794 -0.003483 + 254 -0.001066 -0.001277 -0.012569 + 255 -0.003354 -0.002604 -0.016130 + 256 0.007379 0.006324 -0.003535 + 257 0.025411 0.006788 -0.010928 + 258 0.011648 0.000201 0.004051 + 259 -0.000385 -0.000823 -0.000593 + 260 -0.001070 -0.019569 0.006235 + 261 0.011350 0.009136 0.002805 + 262 -0.001688 0.002178 0.004704 + 263 -0.011748 0.007674 0.002198 + 264 -0.005358 0.003728 -0.002879 + 265 -0.004209 0.000686 -0.004990 + 266 0.000586 0.011928 0.008080 + 267 0.004512 -0.002493 -0.000297 + 268 -0.000130 0.007801 -0.005732 + 269 -0.006259 -0.000991 -0.001515 + 270 0.015560 -0.011483 0.001826 + 271 -0.003544 0.003178 0.000326 + 272 0.006639 0.005731 0.008812 + 273 -0.009361 -0.001371 -0.002830 + 274 -0.000226 0.001739 0.001787 + 275 -0.001846 -0.005637 -0.002071 + 276 0.009461 0.005629 -0.001253 + 277 0.003294 -0.005377 -0.000680 + 278 0.027740 0.013288 0.002669 + 279 0.003403 0.012169 -0.019874 + 280 -0.001383 0.000386 -0.006636 + 281 -0.005910 0.003429 -0.006992 + 282 0.002649 -0.004178 -0.006969 + 283 0.004768 -0.001680 0.000104 + 284 -0.012916 0.017467 -0.012201 + 285 0.010278 -0.007970 0.003734 + 286 0.000005 0.000300 0.006224 + 287 0.003150 -0.001535 0.007443 + 288 -0.000547 -0.003737 0.010794 + 289 0.003054 0.005656 0.000426 + 290 0.006673 0.002252 0.007300 + 291 0.004185 0.001696 0.005292 + 292 -0.001277 -0.005156 -0.001765 + 293 0.005969 -0.004326 -0.002540 + 294 -0.026915 -0.005145 0.019233 + 295 -0.003352 -0.000356 -0.001610 + 296 -0.023375 -0.003718 -0.017075 + 297 0.006387 -0.025086 0.000315 + 298 -0.005064 0.001395 0.004436 + 299 -0.004111 0.000853 -0.032909 + 300 0.000933 0.005949 0.017391 + 301 0.000607 0.002490 -0.002786 + 302 0.002638 0.008857 0.008537 + 303 0.001294 0.011357 -0.003275 + 304 -0.001798 -0.003127 -0.000795 + 305 -0.003320 0.000996 0.004122 + 306 -0.008728 -0.000634 0.002033 + 307 -0.003535 -0.002662 -0.002777 + 308 -0.005954 -0.002781 -0.004403 + 309 -0.002147 -0.001477 -0.001223 + 310 -0.002595 -0.001397 0.002359 + 311 -0.003605 -0.000224 0.015269 + 312 -0.014002 -0.002828 0.000027 + 313 0.001583 -0.005357 0.002380 + 314 -0.002955 -0.014106 -0.011581 + 315 0.000151 -0.006411 0.002865 + 316 0.004278 -0.004088 0.000114 + 317 -0.019291 0.001584 0.015204 + 318 -0.013439 -0.000674 0.010987 + 319 0.000024 0.000995 0.005326 + 320 -0.009041 0.020464 0.014139 + 321 0.004208 -0.003482 0.004723 + 322 0.001489 -0.003292 0.000500 + 323 0.000364 0.006211 0.006844 + 324 0.007467 0.021162 -0.001636 + 325 0.009527 -0.000863 -0.005483 + 326 -0.009936 0.006496 -0.014136 + 327 -0.007595 -0.006469 -0.002090 + 328 -0.002856 -0.010388 -0.000678 + 329 -0.026693 -0.007624 -0.001572 + 330 0.029582 -0.010319 0.009090 + 331 -0.009062 0.000913 0.000368 + 332 -0.019327 0.020501 -0.000560 + 333 -0.018764 -0.008632 0.002570 + 334 0.004502 0.001200 -0.008087 + 335 0.008714 -0.005091 -0.008624 + 336 0.004610 0.003623 -0.007048 + 337 0.002461 -0.000759 0.003913 + 338 0.021591 -0.013925 0.009416 + 339 -0.017190 0.002325 0.006138 + 340 0.003361 0.004027 0.006986 + 341 0.006850 0.012752 0.018496 + 342 0.019589 0.009932 -0.004987 + 343 0.000463 0.005037 -0.000723 + 344 0.008333 0.006382 -0.005532 + 345 0.004288 0.006565 0.007800 + 346 -0.001505 -0.001295 0.001190 + 347 -0.015747 0.011253 0.025149 + 348 0.014871 -0.012646 -0.016815 + 349 -0.000186 0.002115 -0.002539 + 350 0.001936 0.000958 -0.003366 + 351 -0.014299 0.007078 -0.001653 + 352 -0.000876 -0.001637 -0.002032 + 353 -0.001168 0.005556 -0.012749 + 354 -0.003162 -0.016318 -0.009468 + 355 -0.000674 -0.001888 -0.003265 + 356 0.017652 -0.009515 0.007889 + 357 0.015313 -0.006079 0.010454 + 358 -0.000964 -0.004354 0.000067 + 359 0.004137 -0.002540 0.004500 + 360 -0.011376 -0.000921 -0.006123 + 361 0.002023 0.003210 -0.000511 + 362 0.012560 -0.011698 0.016109 + 363 -0.013295 -0.009379 -0.009014 + 364 0.003315 0.003249 0.007620 + 365 -0.010739 0.000915 -0.008118 + 366 -0.015293 0.007564 -0.004343 + 367 0.000192 0.002269 -0.000485 + 368 0.002520 -0.012494 -0.004632 + 369 0.010222 0.003093 -0.002247 + 370 0.003953 0.000628 0.004147 + 371 0.001165 -0.005271 0.007550 + 372 -0.013412 -0.019696 0.026961 + 373 0.001883 0.002252 -0.003560 + 374 0.005482 -0.004609 0.002380 + 375 -0.008048 0.004473 -0.008866 + 376 -0.002663 0.001073 0.001951 + 377 0.010178 0.018964 0.000820 + 378 0.007583 -0.018984 0.016464 + 379 0.001136 0.007646 0.002719 + 380 0.006251 0.008125 0.009187 + 381 0.001284 0.011634 -0.004097 + 382 -0.000767 0.000265 -0.000818 + 383 -0.000089 0.001579 -0.002300 + 384 -0.004565 -0.011251 0.008186 + 385 0.004778 -0.000871 0.002405 + 386 0.006618 -0.002801 0.006849 + 387 0.029884 -0.012377 0.019662 + 388 -0.002799 -0.005785 0.000693 + 389 -0.006988 0.014716 -0.008738 + 390 -0.003130 0.004832 0.002982 + 391 0.000036 -0.002467 0.000498 + 392 -0.001382 -0.006847 0.003863 + 393 -0.003623 0.001391 0.001664 + 394 0.004431 0.000182 0.002043 + 395 0.007177 -0.001675 0.008884 + 396 0.000324 0.003728 0.003379 + 397 0.004107 -0.000618 0.000098 + 398 0.019272 -0.008832 -0.013192 + 399 -0.025041 0.027976 -0.020594 + 400 0.002982 -0.002889 -0.005826 + 401 0.010564 -0.003899 -0.002078 + 402 0.005218 -0.003308 -0.010357 + 403 0.002304 -0.003833 -0.008812 + 404 -0.013421 -0.017603 -0.023172 + 405 -0.003134 -0.000582 0.001712 + 406 -0.003398 -0.002176 0.001635 + 407 -0.015813 0.008046 0.010515 + 408 0.003940 -0.004144 -0.002666 + 409 0.008428 -0.002203 -0.004077 + 410 -0.004859 0.004207 -0.016803 + 411 -0.022714 0.005614 0.004119 + 412 -0.000677 -0.000486 0.001019 + 413 0.004137 0.001524 0.004810 + 414 -0.011495 -0.003293 -0.002498 + 415 -0.004277 -0.004620 -0.002973 + 416 0.005727 -0.002611 0.021922 + 417 0.009759 0.016284 -0.017136 + 418 0.001140 -0.003169 0.001021 + 419 0.002072 0.019101 -0.019824 + 420 0.029356 -0.011686 0.004675 + 421 0.001175 0.002540 0.001846 + 422 0.009479 -0.017538 0.002696 + 423 0.008327 0.028039 -0.001246 + 424 0.002971 -0.004730 0.000069 + 425 0.010168 -0.005904 -0.016535 + 426 0.009223 0.011295 0.006248 + 427 -0.003323 0.000861 0.005020 + 428 -0.005244 0.001685 -0.001864 + 429 0.000994 0.014826 0.000976 + 430 -0.002795 0.003958 -0.004848 + 431 0.010698 -0.011688 -0.000537 + 432 0.008158 0.021591 -0.003259 + 433 0.000363 0.002223 0.004053 + 434 -0.002225 0.004315 -0.010042 + 435 -0.000151 -0.000572 0.000675 + 436 0.006996 -0.000559 0.003307 + 437 -0.011410 -0.004708 0.006782 + 438 -0.015909 0.022113 0.004877 + 439 -0.002401 -0.002279 0.002655 + 440 -0.002478 0.000164 0.005849 + 441 -0.003545 0.002314 0.007358 + 442 0.002189 0.006935 -0.001251 + 443 -0.007190 0.031224 0.006804 + 444 0.004661 -0.003296 0.013412 + 445 0.003709 0.001514 -0.003921 + 446 0.015678 0.007604 0.000133 + 447 -0.004648 -0.004474 -0.027064 + 448 0.001807 -0.004146 0.004203 + 449 0.029598 0.003434 0.012408 + 450 -0.004603 -0.006201 0.002287 + 451 -0.003031 -0.004136 -0.006564 + 452 0.009003 0.019264 0.004529 + 453 -0.000188 0.010449 0.001077 + 454 0.003891 0.002752 0.005629 + 455 0.001092 0.012776 0.008682 + 456 -0.002762 0.015371 -0.005857 + 457 0.002697 -0.003406 -0.002865 + 458 0.007823 -0.013511 0.002023 + 459 -0.030492 -0.008107 -0.020624 + 460 0.000483 0.001162 0.002651 + 461 0.002571 -0.007508 -0.009384 + 462 -0.010774 -0.027329 0.003619 + 463 0.005791 0.000086 0.004298 + 464 0.008820 0.016257 -0.002226 + 465 0.000317 -0.014932 -0.013621 + 466 0.003540 0.001551 -0.001349 + 467 0.008241 0.020014 0.019807 + 468 -0.004258 -0.010227 -0.029599 + 469 0.007640 0.001287 -0.003128 + 470 0.004600 -0.001555 -0.010230 + 471 0.007870 0.002461 0.000094 + 472 0.001001 0.005160 -0.001529 + 473 0.006073 0.015127 0.022819 + 474 0.006356 -0.012345 -0.003131 + 475 -0.005549 -0.000151 0.001312 + 476 -0.015747 0.009610 0.004075 + 477 0.009345 0.004620 -0.013632 + 478 -0.005694 -0.004777 0.002781 + 479 -0.015785 0.018249 0.008919 + 480 0.007264 0.001342 -0.012954 + 481 -0.002601 -0.003124 -0.001775 + 482 -0.010924 -0.002942 0.001676 + 483 0.020644 0.001519 0.001050 + 484 -0.003829 -0.001681 0.001973 + 485 -0.009248 -0.008096 0.002166 + 486 -0.004627 -0.003317 0.000426 + 487 0.004750 0.008629 -0.001691 + 488 -0.009177 0.001481 0.019567 + 489 -0.000748 -0.004703 -0.011184 + 490 -0.000930 -0.004032 -0.001796 + 491 -0.007051 -0.001375 -0.004647 + 492 -0.000505 0.005436 -0.004029 + 493 -0.000767 -0.000313 -0.004426 + 494 0.007019 0.022441 0.008035 + 495 0.002030 -0.018016 0.012244 + 496 -0.000430 -0.004092 0.001186 + 497 0.012447 -0.008156 0.016405 + 498 -0.008008 0.011043 -0.000527 + 499 0.001752 0.001451 -0.008850 + 500 -0.001696 0.002950 -0.000035 + 501 0.006054 -0.001180 -0.028952 + 502 0.001434 -0.008124 -0.001958 + 503 0.001762 -0.007034 -0.009244 + 504 -0.008796 -0.004759 -0.009928 + 505 0.000249 0.001170 0.006380 + 506 -0.005081 0.014461 -0.003259 + 507 -0.002522 0.001324 0.007841 + 508 0.003441 0.001538 0.006742 + 509 0.007735 -0.006583 0.003492 + 510 0.009681 0.006088 0.008608 + 511 -0.006695 -0.001970 0.000807 + 512 0.004268 0.004052 0.001263 + 513 -0.004129 -0.012886 -0.007489 + 514 -0.002878 0.001158 0.006535 + 515 -0.007680 -0.001896 0.002953 + 516 -0.000917 -0.006257 -0.002762 + 517 -0.001401 -0.003523 -0.005778 + 518 -0.001854 0.007834 0.015061 + 519 -0.010095 0.007049 -0.021128 + 520 -0.000766 -0.000153 0.007009 + 521 0.009064 -0.003223 0.017921 + 522 0.000864 -0.000043 0.007876 + 523 -0.001025 0.001319 -0.006573 + 524 -0.006395 0.000755 -0.002686 + 525 -0.032670 0.007943 0.004175 + 526 0.002953 0.006520 0.004065 + 527 0.009139 -0.008077 -0.010889 + 528 -0.002820 0.012454 -0.005504 + 529 -0.008727 0.003418 0.002451 + 530 -0.007112 -0.005703 0.023446 + 531 -0.011285 0.014165 -0.019563 + 532 -0.002562 0.003192 -0.002295 + 533 -0.003618 0.007211 0.002298 + 534 0.010325 0.001834 0.002853 + 535 0.002563 0.000345 -0.002878 + 536 0.002396 0.022293 -0.006961 + 537 0.001693 -0.002677 0.010576 + 538 -0.001561 0.000734 0.001793 + 539 -0.008542 0.015338 0.007321 + 540 -0.015880 0.015140 0.014642 + 541 0.001092 0.000090 0.000997 + 542 -0.004522 -0.004004 0.003687 + 543 0.003258 -0.006156 0.000500 + 544 -0.001608 0.002026 0.003790 + 545 -0.010430 -0.004583 0.015482 + 546 0.002628 0.011416 0.004923 + 547 -0.002068 0.005845 0.001850 + 548 0.001194 0.007931 0.007672 + 549 -0.020261 -0.007195 -0.008896 + 550 0.005399 0.001999 0.000211 + 551 0.004420 0.012603 0.006214 + 552 0.007790 0.005534 0.000006 + 553 -0.004249 0.001186 -0.000260 + 554 0.006385 -0.014925 0.000020 + 555 0.009902 0.016988 -0.004080 + 556 0.006637 -0.003469 0.000450 + 557 -0.002010 0.011423 -0.004361 + 558 -0.009074 0.013716 -0.002539 + 559 0.003243 -0.003710 -0.002565 + 560 -0.000480 -0.009433 0.000267 + 561 0.002981 -0.005587 -0.010088 + 562 0.002665 0.008169 0.002667 + 563 -0.001817 0.009035 0.022525 + 564 0.005689 0.010678 0.000603 + 565 0.003217 0.002617 0.001072 + 566 0.025108 0.001061 -0.027288 + 567 -0.003091 0.028727 0.028529 + 568 0.003991 -0.002246 0.002528 + 569 0.011195 -0.007917 0.010511 + 570 -0.006686 -0.007088 -0.000640 + 571 0.005302 0.003751 0.001484 + 572 0.001250 0.007658 -0.006666 + 573 0.018145 -0.005375 0.000139 + 574 -0.003857 0.003583 0.000238 + 575 0.006752 0.001063 0.004538 + 576 -0.006479 0.014326 -0.017669 + 577 0.001793 0.003661 0.002509 + 578 0.010186 -0.003147 0.008687 + 579 -0.001160 -0.005645 -0.003812 + 580 -0.002296 0.006997 0.000837 + 581 -0.031138 0.017223 0.000984 + 582 0.002587 -0.007480 0.015277 + 583 0.000288 -0.000668 0.001548 + 584 0.016041 -0.004051 0.004629 + 585 -0.025116 0.003224 0.009356 + 586 -0.000853 0.003188 0.004014 + 587 -0.001700 -0.004491 0.006716 + 588 -0.008947 -0.009004 -0.023328 + 589 0.005432 -0.003893 -0.001000 + 590 -0.019524 0.021049 -0.035976 + 591 0.009404 0.004475 -0.004525 + 592 -0.006508 -0.002709 0.000481 + 593 0.010852 -0.015643 0.005754 + 594 0.006526 0.026156 0.009018 + 595 -0.004611 -0.001841 0.002205 + 596 -0.013411 -0.011893 -0.011510 + 597 -0.002150 -0.000804 -0.006730 + 598 -0.002593 -0.000356 0.003104 + 599 0.009483 0.002951 -0.001362 + 600 -0.015523 -0.003843 0.010828 + 601 -0.001229 0.003953 0.000471 + 602 -0.017788 0.002114 0.033354 + 603 0.015187 -0.017947 -0.007994 + 604 -0.001335 -0.000196 0.007281 + 605 0.015188 0.007448 0.005030 + 606 -0.001538 0.002386 -0.009662 + 607 -0.001172 0.004261 0.002894 + 608 -0.002229 0.015661 0.009134 + 609 0.017428 0.004976 0.006974 + 610 -0.001490 0.003604 0.004586 + 611 -0.017720 0.006222 -0.023144 + 612 0.010016 -0.015847 -0.004678 + 613 -0.002648 0.000934 0.000698 + 614 -0.011832 0.016782 0.007626 + 615 -0.005427 0.001385 0.015386 + 616 0.003669 -0.001949 0.003946 + 617 0.005164 0.000243 0.009975 + 618 -0.000161 0.003111 0.001353 + 619 0.002976 -0.004733 0.001868 + 620 -0.002832 -0.014197 -0.023534 + 621 -0.003347 -0.011551 0.000693 + 622 0.004912 0.001701 -0.000793 + 623 0.013809 0.007164 -0.016905 + 624 0.024958 -0.010962 -0.008428 + 625 0.007422 -0.002948 -0.001308 + 626 -0.016590 -0.032000 -0.001025 + 627 0.011367 0.004098 0.010259 + 628 -0.002045 -0.000742 0.000577 + 629 -0.030845 0.001448 0.030396 + 630 0.001781 -0.017639 0.014980 + 631 0.002233 -0.004427 -0.002429 + 632 0.018586 -0.001402 0.006993 + 633 -0.012356 0.003736 0.007796 + 634 -0.004338 0.007766 0.000310 + 635 0.001990 0.000209 0.007107 + 636 -0.006343 0.005190 -0.018263 + 637 -0.005455 0.000492 -0.002847 + 638 0.000522 0.006495 0.003755 + 639 -0.001841 -0.009429 -0.001507 + 640 -0.002314 -0.002516 -0.005613 + 641 0.018652 0.002237 -0.015930 + 642 -0.002326 -0.000776 -0.003132 + 643 -0.005512 -0.000623 -0.000619 + 644 -0.001015 0.005882 0.003225 + 645 0.000586 0.023218 -0.004529 + 646 -0.001138 0.000800 0.002687 + 647 0.003627 0.013371 -0.016172 + 648 0.018968 0.017228 -0.000038 + 649 -0.002086 -0.000112 -0.007393 + 650 0.016103 0.035588 0.008775 + 651 -0.038516 0.012158 -0.009536 + 652 0.002958 0.004862 -0.007554 + 653 0.024333 0.013052 -0.023133 + 654 0.002379 -0.000049 -0.006601 + 655 0.003804 -0.003076 -0.001112 + 656 -0.004763 0.002283 -0.025897 + 657 -0.036538 -0.010672 -0.010599 + 658 -0.000713 0.003957 0.002151 + 659 -0.016531 0.001472 0.004862 + 660 -0.009287 0.028134 0.010480 + 661 0.004192 -0.003835 0.000568 + 662 0.011523 0.002433 0.036479 + 663 -0.009197 -0.041577 0.000393 + 664 0.000280 -0.002373 -0.004460 + 665 0.002206 -0.003211 0.000957 + 666 0.006211 0.013469 -0.005353 + 667 -0.000522 0.001664 -0.004748 + 668 0.004459 -0.024042 -0.023029 + 669 0.011377 0.013403 0.030836 + 670 0.003382 -0.002813 0.000451 + 671 0.000766 0.000074 -0.006820 + 672 0.013252 -0.015598 0.024274 + 673 -0.003243 0.006406 -0.002570 + 674 0.019962 -0.008888 -0.019769 + 675 -0.027628 -0.005508 -0.000297 + 676 -0.007770 -0.003882 0.002155 + 677 -0.001777 0.012358 0.000036 + 678 -0.024978 0.005564 -0.015024 + 679 0.000188 0.001017 0.004117 + 680 -0.006440 -0.003105 0.019733 + 681 -0.016780 0.005575 -0.004078 + 682 0.000151 0.001697 -0.001387 + 683 -0.002925 0.000955 -0.004378 + 684 0.000826 0.008069 0.003052 + 685 -0.003543 -0.000321 -0.000587 + 686 -0.012205 0.000432 -0.005990 + 687 0.004010 0.009678 -0.003793 + 688 0.001940 -0.000340 0.003900 + 689 0.005837 0.014815 -0.005621 + 690 -0.008710 -0.017653 0.020395 + 691 -0.001931 -0.003975 -0.002577 + 692 -0.003368 -0.014386 -0.006878 + 693 -0.013782 -0.002984 0.003522 + 694 0.004968 -0.000283 -0.003322 + 695 0.019160 0.006665 -0.007077 + 696 0.022604 -0.000847 -0.016983 + 697 0.002571 0.000550 -0.007379 + 698 -0.001443 -0.002487 -0.007727 + 699 -0.011487 -0.013883 0.019460 + 700 0.001096 -0.004750 0.003965 + 701 -0.016603 -0.010473 0.014272 + 702 0.023559 -0.001392 -0.008500 + 703 -0.002022 -0.005262 -0.004485 + 704 0.002332 -0.014942 -0.004917 + 705 -0.009402 0.006267 -0.002020 + 706 -0.000288 0.003264 -0.003564 + 707 0.004565 0.033122 -0.006655 + 708 -0.018922 -0.009521 0.000208 + 709 -0.003485 0.003285 -0.000556 + 710 0.004587 -0.002798 -0.000984 + 711 -0.006054 0.007231 -0.001425 + 712 0.004718 0.000201 -0.003948 + 713 -0.014114 0.009800 -0.004955 + 714 -0.008099 -0.004168 0.008689 + 715 0.000410 -0.000654 0.009605 + 716 0.008711 0.018707 0.002740 + 717 0.003459 -0.008185 0.010239 + 718 0.003479 0.000757 0.004467 + 719 0.000433 -0.000495 0.007710 + 720 0.012945 0.003286 -0.002052 + 721 -0.010010 -0.003567 0.006956 + 722 0.005307 -0.001615 -0.002198 + 723 -0.012515 0.011984 0.016669 + 724 0.001378 -0.002186 -0.001614 + 725 0.012587 -0.019891 0.012237 + 726 0.012601 0.007024 0.014776 + 727 -0.002983 -0.001722 -0.004228 + 728 0.015268 -0.011359 -0.002815 + 729 -0.003967 0.028638 0.000653 + 730 -0.000313 -0.000495 0.001546 + 731 -0.030938 -0.009463 -0.008649 + 732 -0.033474 -0.019299 0.015331 + 733 0.000845 -0.003919 -0.003202 + 734 -0.027178 0.011071 -0.026350 + 735 -0.007741 0.001470 -0.016184 + 736 -0.001239 0.001989 -0.002789 + 737 0.011285 0.001382 -0.006222 + 738 0.022813 -0.006205 -0.006536 + 739 0.003987 -0.004190 -0.005010 + 740 -0.007915 0.002670 -0.013878 + 741 0.004194 0.006086 -0.010350 + 742 0.006539 -0.005074 0.002196 + 743 0.015306 0.008181 0.005081 + 744 0.007865 0.003022 -0.004716 + 745 -0.001784 -0.010062 0.004309 + 746 -0.002378 -0.011275 0.006933 + 747 -0.008336 -0.001053 0.004620 + 748 -0.002979 0.004768 -0.002497 + 749 -0.000959 0.004004 -0.002600 + 750 -0.019512 -0.002978 0.005044 + 751 -0.004903 -0.000550 0.000659 + 752 -0.005086 0.005639 -0.022167 + 753 -0.008131 0.001631 -0.018889 + 754 -0.001761 -0.001628 0.000503 + 755 -0.003957 -0.007199 -0.006609 + 756 0.003155 -0.001306 0.005143 + 757 0.000937 0.008247 -0.008723 + 758 0.028994 0.004889 0.007225 + 759 -0.000469 -0.025903 0.001925 + 760 -0.001834 -0.000370 -0.001605 + 761 0.007234 -0.001225 -0.019036 + 762 -0.003442 -0.001966 0.000209 + 763 0.000445 0.007510 0.001158 + 764 -0.008348 0.004439 -0.007776 + 765 -0.012793 0.011539 0.019680 + 766 0.000065 -0.000962 -0.004032 + 767 -0.002013 -0.005477 0.003901 + 768 0.003529 0.021570 0.007224 + 769 -0.002661 0.002604 -0.003268 + 770 0.005668 -0.003962 -0.004196 + 771 -0.003633 0.008263 -0.012842 + 772 0.001811 0.001915 0.002764 + 773 0.007995 -0.017893 0.012738 + 774 -0.018466 -0.002519 -0.001997 + 775 -0.002231 0.000080 0.000338 + 776 -0.020092 -0.012422 0.010443 + 777 0.017610 0.006562 -0.019411 + 778 -0.001733 0.005494 0.004582 + 779 0.013495 0.017522 0.004058 + 780 0.014733 0.026971 -0.010419 + 781 0.001950 0.000577 -0.000870 + 782 -0.025830 0.001269 0.005271 + 783 0.007534 -0.015453 0.006553 + 784 0.004959 0.000931 -0.005022 + 785 -0.008754 0.005835 0.049441 + 786 0.010447 0.012462 0.001546 + 787 -0.001107 0.002522 0.000433 + 788 0.009871 0.011686 0.008446 + 789 -0.006988 0.002247 0.021211 + 790 0.004245 0.001822 -0.000253 + 791 0.000153 -0.002603 0.008675 + 792 0.006252 0.003177 -0.013109 + 793 -0.002534 0.003863 0.000617 + 794 -0.000057 0.004391 -0.016346 + 795 0.005974 -0.000584 -0.004834 + 796 0.001827 -0.002339 -0.002010 + 797 -0.023150 0.007693 0.012507 + 798 0.012203 0.000464 -0.020004 + 799 -0.000293 -0.001883 -0.002470 + 800 -0.004248 0.006084 0.002613 + 801 -0.013517 0.015693 0.003574 + 802 -0.009450 0.005229 -0.003400 + 803 -0.015058 -0.007700 0.001796 + 804 -0.000196 -0.003546 0.002537 + 805 0.008758 -0.003257 0.005431 + 806 0.012998 -0.011952 -0.017276 + 807 0.008558 -0.002765 0.006723 + 808 -0.001470 -0.000539 0.002965 + 809 0.024028 -0.019423 -0.012788 + 810 0.003892 0.003966 -0.001573 + 811 0.000254 0.001510 0.000089 + 812 0.024395 0.007424 -0.013783 + 813 0.006830 0.017138 0.017010 + 814 -0.001535 -0.003749 -0.001708 + 815 0.013748 -0.018314 -0.006646 + 816 0.003900 0.002047 0.006451 + 817 0.006585 0.003832 -0.000629 + 818 0.021540 0.003252 0.001280 + 819 0.007897 0.007247 -0.003727 + 820 -0.002115 -0.002434 -0.005025 + 821 -0.016735 0.003360 -0.019137 + 822 0.003237 -0.017804 -0.004111 + 823 -0.003907 0.002878 -0.003988 + 824 -0.005419 -0.002010 -0.004476 + 825 -0.006449 0.003104 -0.002766 + 826 -0.013638 -0.002258 -0.002448 + 827 -0.007838 0.000023 -0.005866 + 828 -0.006633 0.001312 -0.008943 + 829 0.001696 0.003761 -0.002125 + 830 -0.001113 -0.010288 -0.008692 + 831 0.010380 0.008838 -0.015548 + 832 -0.003164 0.004544 -0.002070 + 833 -0.001495 -0.013094 -0.000890 + 834 0.011945 -0.015741 -0.003378 + 835 -0.008802 -0.001939 -0.005442 + 836 -0.002949 -0.007279 -0.004665 + 837 0.008414 -0.021459 -0.000948 + 838 0.001330 0.000622 0.000916 + 839 -0.001965 0.001331 0.006138 + 840 0.003081 -0.004825 0.007272 + 841 0.001557 -0.005770 -0.001563 + 842 0.014285 0.020628 -0.029634 + 843 -0.006815 0.003616 0.008747 + 844 0.001116 -0.003881 -0.003556 + 845 0.008316 -0.005783 -0.005256 + 846 -0.011615 0.015346 0.026431 + 847 0.004309 0.003546 -0.004311 + 848 0.007868 -0.013572 0.000073 + 849 -0.011699 0.005875 0.003604 + 850 0.000505 -0.004069 -0.002113 + 851 0.001211 -0.005770 -0.003436 + 852 -0.004651 0.001028 0.007154 + 853 -0.003913 -0.006795 -0.004733 + 854 -0.004339 -0.014527 -0.023555 + 855 -0.006756 -0.006056 -0.008714 + 856 0.007493 0.001588 -0.006408 + 857 0.020526 0.022065 -0.006921 + 858 0.010862 0.004031 -0.001655 + 859 0.003459 -0.001125 -0.001494 + 860 -0.000710 0.004855 0.022662 + 861 -0.000022 0.009082 0.012428 + 862 -0.000591 0.002648 0.002517 + 863 0.017910 0.003993 0.005847 + 864 -0.004999 0.014284 -0.016199 + 865 -0.001700 -0.002300 0.001206 + 866 -0.016994 -0.008747 -0.012103 + 867 -0.008118 -0.008616 0.003715 + 868 -0.002056 -0.003732 -0.006667 + 869 -0.002586 -0.005666 -0.002032 + 870 -0.002179 -0.001361 -0.001378 + 871 0.001952 0.000747 -0.004175 + 872 -0.000006 -0.004573 0.003592 + 873 -0.004377 -0.012174 0.000091 + 874 -0.006945 -0.004708 0.004295 + 875 -0.011724 -0.010397 0.002368 + 876 0.006805 0.012734 0.019238 + 877 0.004959 0.005871 -0.001277 + 878 -0.012228 -0.000867 -0.006672 + 879 0.014516 0.032640 0.025985 + 880 0.000767 -0.000179 0.004816 + 881 0.006242 0.002132 0.007465 + 882 0.006812 0.003103 0.007707 + 883 0.005120 -0.003059 -0.001062 + 884 -0.008255 -0.016076 -0.002362 + 885 -0.001789 -0.014152 -0.001194 + 886 -0.009000 0.001340 0.001690 + 887 -0.020559 -0.017599 0.000329 + 888 -0.003544 -0.006539 0.004087 + 889 -0.000933 0.000538 -0.001999 + 890 0.032797 0.013397 0.000525 + 891 -0.012354 -0.008526 -0.038077 + 892 0.002953 -0.002317 -0.004454 + 893 -0.029479 -0.014864 0.005868 + 894 0.019223 0.000709 -0.013773 + 895 0.002346 -0.003694 -0.004486 + 896 -0.005275 -0.001221 -0.010755 + 897 0.010883 0.001918 -0.002099 + 898 -0.000263 -0.000830 0.005518 + 899 0.000399 -0.005578 0.011643 + 900 -0.007207 -0.006080 -0.006632 + 901 -0.000868 0.002637 -0.000416 + 902 -0.003601 0.001456 0.001019 + 903 0.003465 0.009000 0.002627 + 904 -0.005492 0.001153 0.005034 + 905 0.008501 0.009963 0.005133 + 906 0.002740 0.005510 0.005387 + 907 0.001230 0.003701 -0.010904 + 908 0.005640 0.000943 -0.026378 + 909 -0.001655 0.006661 0.001080 + 910 0.000417 -0.004485 0.000899 + 911 0.004051 -0.003590 0.002016 + 912 0.010109 -0.002124 0.001500 + 913 0.002439 0.006335 0.003103 + 914 -0.006325 0.005901 0.006397 + 915 0.008058 0.002545 0.004591 + 916 -0.001774 -0.003954 -0.005522 + 917 -0.001697 -0.002110 -0.006988 + 918 0.000641 -0.012660 -0.001878 + 919 0.000840 0.002158 -0.002127 + 920 -0.006972 -0.005865 -0.019536 + 921 -0.009078 -0.009093 0.005319 + 922 -0.002466 0.001612 -0.002348 + 923 -0.007997 0.000173 -0.007016 + 924 -0.005167 0.000122 -0.004809 + 925 0.000182 0.007626 -0.005820 + 926 -0.000187 0.006758 -0.004766 + 927 -0.005146 0.010941 -0.001145 + 928 -0.001035 0.003329 -0.000156 + 929 -0.002925 0.005286 0.005381 + 930 -0.007353 0.014383 0.015446 + 931 0.001566 0.003779 -0.001844 + 932 0.014111 -0.006162 0.016836 + 933 -0.008051 -0.000942 0.006114 + 934 0.000472 0.000581 0.003898 + 935 0.010438 -0.015336 0.026259 + 936 -0.009803 0.018803 -0.011113 + 937 -0.002622 0.001845 -0.004649 + 938 0.000192 0.006195 -0.003034 + 939 -0.004379 0.004856 -0.008876 + 940 0.005312 -0.005320 -0.000644 + 941 0.004197 0.002434 0.005873 + 942 0.001054 -0.002144 -0.009156 + 943 0.001818 0.002764 0.000410 + 944 0.002489 0.005354 -0.014128 + 945 0.003819 0.010472 0.007403 + 946 0.005262 -0.000699 0.001191 + 947 -0.002052 -0.008290 0.017377 + 948 -0.012921 -0.009037 0.007720 + 949 0.002875 -0.000206 -0.005514 + 950 0.004620 -0.003924 -0.007344 + 951 0.004396 0.015332 -0.008395 + 952 -0.001773 -0.005567 0.004807 + 953 0.014650 -0.004337 0.011316 + 954 0.007355 -0.004603 0.004796 + 955 0.001050 0.002663 -0.000049 + 956 -0.000422 0.019759 -0.003121 + 957 -0.011736 0.001700 0.005445 + 958 0.002314 -0.007359 0.001422 + 959 0.000226 -0.009157 0.011161 + 960 0.002971 -0.007641 -0.001658 + 961 0.002025 0.003310 0.000085 + 962 0.003783 0.005544 -0.002440 + 963 -0.003390 -0.001680 0.007759 + 964 -0.000259 -0.001517 -0.001671 + 965 -0.009891 -0.000275 0.002930 + 966 -0.004798 -0.018121 0.000493 + 967 0.002742 0.002196 0.002639 + 968 -0.032110 0.008681 0.017593 + 969 -0.005767 -0.003804 -0.003447 + 970 -0.001025 -0.001901 0.007377 + 971 -0.025416 -0.005633 -0.009650 + 972 -0.002448 -0.002342 0.009184 + 973 0.000510 -0.004313 0.003297 + 974 -0.004244 -0.006185 -0.015114 + 975 0.002817 0.008222 0.025232 + 976 -0.005979 0.000432 0.003264 + 977 0.000348 0.000126 0.007237 + 978 -0.031461 0.008376 -0.002490 + 979 -0.003066 -0.005264 0.001528 + 980 0.000500 -0.005194 -0.000082 + 981 -0.006145 0.003915 -0.013465 + 982 -0.002081 -0.001596 0.001268 + 983 0.004918 -0.004802 -0.009499 + 984 -0.008729 0.005751 0.010881 + 985 0.002456 -0.001947 -0.001558 + 986 -0.006566 -0.000024 0.003315 + 987 0.007532 0.005898 -0.002575 + 988 -0.004247 -0.003264 -0.000409 + 989 0.002165 -0.007499 0.004990 + 990 -0.000419 0.003692 -0.004472 + 991 -0.001571 -0.000159 -0.000431 + 992 0.005413 0.009517 0.004397 + 993 -0.002643 -0.002292 -0.001478 + 994 -0.003884 0.005066 -0.000457 + 995 0.006816 0.009263 -0.003376 + 996 -0.007273 0.011919 0.000514 + 997 0.000030 0.001409 0.005477 + 998 0.005334 -0.020033 0.004464 + 999 0.016228 0.009598 -0.007106 + 1000 -0.002283 -0.004481 0.001317 + 1001 -0.002631 -0.006631 -0.004233 + 1002 0.004184 0.000805 0.014756 + 1003 0.000408 -0.003693 0.003308 + 1004 0.004530 -0.006410 -0.006453 + 1005 -0.004928 -0.003846 0.015168 + 1006 0.003101 -0.001511 0.005308 + 1007 0.014081 -0.002443 0.012313 + 1008 0.002846 0.010440 -0.000376 + 1009 0.003569 -0.002175 -0.006662 + 1010 -0.008368 -0.011644 -0.006989 + 1011 0.019824 -0.004949 -0.018661 + 1012 0.003202 -0.011850 0.003160 + 1013 0.014918 -0.009378 0.018579 + 1014 -0.002594 0.004575 -0.001959 + 1015 -0.002298 0.000413 -0.003910 + 1016 0.012837 -0.003799 -0.015681 + 1017 -0.005955 -0.000660 0.004171 + 1018 0.001582 0.000975 0.000146 + 1019 0.006776 -0.014144 -0.007821 + 1020 0.004234 -0.001693 -0.007198 + 1021 -0.001802 -0.002656 0.003257 + 1022 0.028537 0.012512 0.005966 + 1023 -0.000026 -0.011732 -0.013572 + 1024 0.006685 0.008417 -0.002619 + 1025 -0.018380 0.006240 0.006444 + 1026 0.014195 0.009753 -0.004447 + 1027 -0.000769 -0.006799 -0.003510 + 1028 -0.003532 0.013774 -0.009337 + 1029 0.005263 0.018084 -0.010946 + 1030 0.004102 0.004262 -0.002426 + 1031 -0.003256 -0.005354 0.003498 + 1032 -0.021894 -0.003478 0.016467 + 1033 0.001456 -0.004355 -0.002070 + 1034 -0.005859 -0.004113 -0.005871 + 1035 -0.005758 -0.006886 -0.016585 + 1036 0.001562 0.006459 -0.000209 + 1037 0.001331 0.004667 0.000892 + 1038 0.012898 0.027063 -0.008125 + 1039 0.002117 0.007131 0.002457 + 1040 0.026605 0.010046 0.019045 + 1041 -0.017364 0.007077 -0.014953 + 1042 -0.000452 0.009291 0.004625 + 1043 -0.011059 0.009571 0.015357 + 1044 0.027928 -0.000208 0.009437 + 1045 0.003475 -0.004274 -0.000546 + 1046 0.012160 -0.001385 -0.006922 + 1047 -0.016274 -0.008100 -0.006675 + 1048 -0.003853 -0.003278 -0.001388 + 1049 0.014697 -0.003341 -0.007454 + 1050 0.011346 -0.009086 -0.006461 + 1051 -0.001161 -0.003940 -0.002833 + 1052 0.011182 0.001281 -0.000803 + 1053 -0.001345 -0.002375 -0.003580 + 1054 0.004028 0.002256 0.000990 + 1055 0.013302 0.008212 -0.007566 + 1056 0.029179 -0.014499 0.008878 + 1057 0.000706 0.001652 0.001826 + 1058 0.000498 -0.007266 0.024956 + 1059 0.001324 -0.008155 0.011295 + 1060 0.000971 -0.006253 -0.004688 + 1061 -0.004746 -0.005680 -0.016047 + 1062 -0.000356 -0.009050 -0.006561 + 1063 -0.000866 0.005460 0.000045 + 1064 -0.006882 0.011747 0.020163 + 1065 -0.000733 0.001409 -0.010900 + 1066 -0.003804 0.003558 0.001444 + 1067 0.004513 0.002071 -0.017536 + 1068 -0.000869 -0.002704 -0.014336 + 1069 -0.003015 0.003241 -0.002075 + 1070 0.003734 -0.005456 -0.000879 + 1071 -0.006686 -0.008010 -0.008654 + 1072 -0.000541 -0.003669 -0.004373 + 1073 0.003151 -0.002513 -0.013951 + 1074 0.003979 -0.005557 0.002931 + 1075 -0.005175 -0.004387 0.000228 + 1076 -0.005613 -0.012392 -0.029351 + 1077 0.009704 0.009953 -0.015680 + 1078 -0.000915 0.003660 -0.003078 + 1079 0.002529 0.001465 0.006987 + 1080 0.000880 0.001866 -0.004217 + 1081 0.000835 -0.000410 0.000029 + 1082 0.003324 -0.009356 0.012151 + 1083 -0.000797 0.009753 -0.012613 + 1084 0.004557 -0.006851 0.000257 + 1085 0.014378 -0.010986 -0.004036 + 1086 0.001889 0.001865 0.000904 + 1087 0.003881 0.000306 -0.000266 + 1088 0.006043 -0.030376 0.018797 + 1089 -0.001012 -0.002296 0.000324 + 1090 0.007042 0.008682 0.007323 + 1091 0.010016 0.002442 -0.028255 + 1092 -0.004827 0.009414 -0.012200 + 1093 0.002178 0.003272 0.000190 + 1094 0.003486 0.001815 -0.002585 + 1095 0.006020 0.002953 -0.010998 + 1096 0.002573 -0.000704 0.002051 + 1097 -0.010233 0.004335 0.005568 + 1098 0.003397 0.002649 0.010631 + 1099 -0.000367 -0.008657 0.004003 + 1100 0.006810 -0.008282 0.003316 + 1101 -0.008301 -0.011638 -0.006525 + 1102 -0.001900 -0.008810 0.001531 + 1103 0.003628 0.008111 0.009571 + 1104 0.017147 0.000173 0.003988 + 1105 0.006161 0.005444 0.001389 + 1106 -0.033784 0.028714 -0.002486 + 1107 0.022179 0.015181 0.025221 + 1108 0.002935 0.001125 -0.009560 + 1109 0.013392 0.009490 0.002655 + 1110 0.015380 -0.002935 -0.004728 + 1111 0.002760 -0.001052 0.002516 + 1112 -0.006737 0.002302 0.012384 + 1113 -0.004649 -0.009652 -0.009326 + 1114 -0.003333 0.004385 -0.006004 + 1115 -0.014175 0.007089 0.000199 + 1116 0.009875 0.004925 0.012791 + 1117 -0.004828 0.000366 0.001718 + 1118 0.009618 -0.007069 -0.012330 + 1119 -0.021489 -0.009155 -0.001603 + 1120 -0.001360 0.002089 -0.003585 + 1121 0.003530 -0.001847 0.010254 + 1122 0.016468 0.005240 -0.014692 + 1123 0.001989 -0.000949 0.003286 + 1124 0.022107 -0.012110 -0.007316 + 1125 0.012518 -0.010337 0.015891 + 1126 0.000850 -0.001413 -0.001737 + 1127 -0.014943 0.000360 -0.000490 + 1128 -0.027983 -0.005206 0.004037 + 1129 0.011232 0.000349 -0.006679 + 1130 -0.005484 -0.003095 -0.004430 + 1131 -0.005050 -0.002005 -0.015837 + 1132 -0.000470 0.001924 0.001131 + 1133 -0.016506 0.005240 0.008171 + 1134 0.011977 -0.012388 0.003671 + 1135 -0.000818 0.001081 0.001571 + 1136 0.009956 -0.006601 -0.002667 + 1137 -0.013344 0.009962 -0.000602 + 1138 -0.004379 0.004681 0.005655 + 1139 -0.022717 0.009805 -0.016911 + 1140 -0.017223 0.002867 0.018671 + 1141 -0.000339 -0.000149 -0.001276 + 1142 0.002292 0.016872 -0.004987 + 1143 -0.012964 -0.000693 -0.007140 + 1144 -0.002149 0.004008 -0.001355 + 1145 0.012575 0.018012 -0.011467 + 1146 -0.018572 0.011663 -0.005755 + 1147 0.000951 -0.000232 0.005705 + 1148 0.001030 -0.002411 0.005162 + 1149 -0.004871 0.010528 0.006213 + 1150 -0.003431 0.005236 0.003321 + 1151 -0.006083 0.008172 0.003730 + 1152 0.021201 0.002738 -0.026021 + 1153 -0.000559 -0.001274 0.002074 + 1154 -0.000342 -0.008595 -0.003314 + 1155 -0.004563 0.013150 0.001114 + 1156 0.002547 -0.003346 0.000793 + 1157 -0.004000 0.002915 0.001908 + 1158 0.008526 -0.013385 0.001263 + 1159 0.003331 -0.001629 -0.001592 + 1160 0.012216 0.004263 0.001290 + 1161 -0.024729 0.027722 0.012828 + 1162 -0.004556 0.005331 -0.000790 + 1163 -0.001260 0.004809 0.012624 + 1164 0.009151 0.007740 0.005908 + 1165 0.006739 -0.002486 0.000962 + 1166 0.002801 -0.001010 0.007063 + 1167 0.006266 -0.009780 0.000447 + 1168 -0.001756 -0.006121 -0.000399 + 1169 0.002128 0.011752 0.003187 + 1170 -0.000744 -0.004455 -0.001624 + 1171 -0.003120 -0.007987 0.008768 + 1172 -0.001279 -0.014309 0.014916 + 1173 -0.003496 -0.005392 0.006518 + 1174 -0.005252 -0.000094 0.002610 + 1175 -0.004319 0.000327 0.003799 + 1176 0.014469 -0.001407 -0.023557 + 1177 -0.001733 0.011173 0.001097 + 1178 0.019607 0.000729 -0.008577 + 1179 -0.013430 0.021297 -0.011104 + 1180 0.005550 -0.002953 -0.004489 + 1181 -0.021164 -0.004283 0.009224 + 1182 0.020762 -0.011806 0.008058 + 1183 -0.003934 -0.006346 0.000789 + 1184 -0.004154 -0.012917 -0.000804 + 1185 0.001834 -0.003234 0.006486 + 1186 -0.003359 -0.000166 0.000482 + 1187 -0.010938 -0.009570 0.011838 + 1188 -0.006339 -0.002743 -0.017319 + 1189 -0.002008 -0.000238 -0.002842 + 1190 0.009730 0.002797 -0.000255 + 1191 0.004802 0.018470 -0.005529 + 1192 0.002978 0.003254 0.000406 + 1193 0.001762 -0.016118 0.017481 + 1194 0.009625 0.005549 -0.002833 + 1195 -0.005277 -0.000015 -0.004247 + 1196 0.008535 -0.018189 -0.023760 + 1197 -0.020839 0.008581 0.007193 + 1198 0.001976 -0.001531 0.001386 + 1199 -0.012488 -0.005613 0.004418 + 1200 0.012387 0.001324 -0.002579 + 1201 0.004612 0.001574 0.002430 + 1202 0.004011 0.024078 0.008286 + 1203 0.028635 -0.001749 -0.000378 + 1204 -0.001292 -0.004163 0.001688 + 1205 0.018917 -0.005327 -0.022863 + 1206 -0.021498 0.026796 -0.015481 + 1207 -0.004360 -0.003023 -0.007483 + 1208 0.015222 -0.007834 -0.014901 + 1209 -0.015487 -0.004003 -0.024684 + 1210 0.000162 -0.000232 -0.002511 + 1211 0.005663 0.001759 0.003041 + 1212 -0.026577 0.001752 0.009499 + 1213 -0.002118 -0.004800 0.002106 + 1214 0.012772 0.013880 -0.004149 + 1215 0.008831 0.004495 0.004278 + 1216 -0.001002 0.000396 0.000450 + 1217 0.001493 -0.000300 0.006615 + 1218 0.022789 -0.011336 -0.001626 + 1219 -0.002165 0.002305 -0.004399 + 1220 -0.001727 0.010653 0.006150 + 1221 0.001799 -0.000399 -0.015101 + 1222 -0.002535 -0.001664 0.000167 + 1223 -0.007939 0.009699 -0.003581 + 1224 -0.009214 -0.009452 -0.003331 + 1225 -0.002745 0.003249 0.011490 + 1226 0.010727 -0.015563 0.011870 + 1227 -0.003771 0.013856 -0.015486 + 1228 -0.000932 0.001513 0.000721 + 1229 -0.002528 0.000192 0.015301 + 1230 -0.027023 -0.007231 0.009659 + 1231 -0.005525 0.001099 -0.001369 + 1232 -0.002318 -0.008510 -0.009719 + 1233 -0.005945 -0.008347 0.009845 + 1234 -0.000817 -0.006097 -0.001394 + 1235 0.026844 0.005400 -0.013998 + 1236 -0.019837 0.017329 -0.010038 + 1237 -0.002691 -0.005371 -0.000786 + 1238 -0.007304 -0.006372 0.007409 + 1239 -0.014066 -0.005252 0.014237 + 1240 -0.000660 -0.004157 -0.007445 + 1241 -0.015343 -0.015681 0.000525 + 1242 -0.004856 0.008296 -0.020506 + 1243 -0.000451 -0.006253 0.005274 + 1244 -0.016626 -0.024128 0.003146 + 1245 0.003430 -0.001516 0.006995 + 1246 0.002369 0.000761 -0.000692 + 1247 -0.011034 0.017913 -0.003576 + 1248 0.014886 0.005052 0.010870 + 1249 0.000976 0.003044 0.004043 + 1250 0.002084 0.009119 -0.003484 + 1251 -0.004682 -0.003095 0.024419 + 1252 -0.001872 0.005519 -0.003878 + 1253 0.014045 0.004474 0.006660 + 1254 -0.006683 -0.012923 -0.006357 + 1255 -0.007125 -0.002296 0.002894 + 1256 -0.009126 -0.000293 0.008175 + 1257 -0.005668 -0.002902 -0.000640 + 1258 -0.009805 0.000500 -0.001546 + 1259 -0.007254 -0.007274 0.010849 + 1260 0.005786 0.004719 0.004479 + 1261 0.000767 -0.007091 -0.002809 + 1262 -0.010861 -0.024470 -0.006678 + 1263 0.010352 0.003874 -0.018616 + 1264 -0.001332 -0.000776 -0.001533 + 1265 0.005055 -0.002761 -0.000154 + 1266 0.001293 -0.010766 0.003695 + 1267 0.004101 0.005423 0.004161 + 1268 -0.006495 -0.001645 0.007645 + 1269 0.024277 0.000761 0.018148 + 1270 0.000384 -0.004677 0.001777 + 1271 -0.000305 -0.022286 0.006378 + 1272 0.014900 -0.009298 0.005029 + 1273 -0.002201 -0.002422 -0.001266 + 1274 0.002419 0.000621 -0.006170 + 1275 0.002242 -0.003567 -0.006329 + 1276 0.001155 0.006214 -0.002164 + 1277 -0.025679 0.011598 0.001775 + 1278 -0.016652 0.005061 0.002255 + 1279 -0.000163 0.000193 -0.001041 + 1280 -0.002822 -0.004131 -0.007696 + 1281 -0.007029 0.005316 -0.012422 + 1282 -0.001259 -0.001443 0.001295 + 1283 -0.000992 -0.027820 -0.000474 + 1284 -0.012190 -0.043729 -0.008054 + 1285 -0.001840 -0.001572 0.001104 + 1286 0.008311 0.001263 -0.001841 + 1287 0.001277 0.000429 -0.007113 + 1288 -0.005029 -0.002280 -0.002761 + 1289 -0.024723 0.012515 -0.012864 + 1290 -0.013845 -0.020399 0.001674 + 1291 -0.000161 0.002303 0.004199 + 1292 -0.010956 -0.010528 0.017163 + 1293 0.023554 -0.006815 0.021159 + 1294 0.000772 -0.000829 0.004462 + 1295 0.024106 -0.007189 -0.017980 + 1296 -0.011795 0.000225 0.018351 + 1297 -0.002503 0.000288 -0.000931 + 1298 -0.001901 -0.006775 -0.001166 + 1299 -0.002626 0.004209 -0.000596 + 1300 -0.003248 -0.009856 0.001496 + 1301 -0.008616 0.000206 -0.000660 + 1302 0.012991 -0.001944 0.010735 + 1303 0.000183 0.003767 -0.002207 + 1304 0.002875 0.006021 0.006091 + 1305 -0.003343 -0.008883 0.015455 + 1306 -0.003761 0.009400 -0.007147 + 1307 -0.002601 -0.012510 0.005900 + 1308 -0.013464 0.021935 0.006364 + 1309 0.007717 -0.006568 -0.004280 + 1310 0.004551 -0.013432 0.001741 + 1311 0.016676 -0.009730 -0.005415 + 1312 -0.003518 -0.000115 0.000120 + 1313 -0.018566 -0.004441 0.007076 + 1314 0.011422 0.004168 0.013848 + 1315 -0.002232 0.003004 -0.005210 + 1316 -0.004985 -0.000655 -0.007286 + 1317 -0.004756 0.005461 -0.010032 + 1318 0.003296 -0.000345 0.003797 + 1319 0.000013 0.003387 0.009258 + 1320 -0.001175 0.009021 0.016554 + 1321 0.004610 0.000563 0.001890 + 1322 0.001511 0.004957 0.010795 + 1323 -0.000517 0.009529 0.012695 + 1324 0.003561 -0.002127 -0.002139 + 1325 -0.016355 -0.004573 0.011414 + 1326 0.002437 -0.000969 0.003958 + 1327 -0.003191 0.002772 0.003706 + 1328 0.002188 0.004078 0.024902 + 1329 0.005804 0.008997 0.000514 + 1330 0.000169 -0.001823 0.006601 + 1331 -0.012837 0.016738 0.032499 + 1332 -0.003787 -0.003993 0.005792 + 1333 -0.006500 -0.001952 -0.005568 + 1334 0.004632 0.002607 -0.001417 + 1335 0.007826 -0.018417 0.003893 + 1336 0.001400 0.000629 -0.002329 + 1337 -0.026090 -0.010827 -0.007428 + 1338 0.014757 0.003359 0.005866 + 1339 0.005344 0.002452 0.000637 + 1340 0.002304 0.001516 0.008371 + 1341 0.003116 0.003502 0.000920 + 1342 0.000219 0.006872 -0.006361 + 1343 0.004872 0.004948 -0.015461 + 1344 0.002293 0.008990 -0.007103 + 1345 -0.000248 -0.001405 -0.000404 + 1346 0.016050 0.005473 0.014883 + 1347 0.000661 0.010958 0.009762 + 1348 0.002507 0.004854 0.004016 + 1349 -0.000026 0.005865 -0.004933 + 1350 -0.003541 0.012071 0.011984 + 1351 -0.000388 -0.001662 -0.002624 + 1352 -0.008781 0.002236 0.005933 + 1353 -0.002303 0.010321 -0.013971 + 1354 0.000266 0.005381 0.006218 + 1355 -0.030793 -0.017551 0.006520 + 1356 -0.001710 0.006198 0.003481 + 1357 -0.000575 0.000387 0.003498 + 1358 0.011844 0.006387 0.013823 + 1359 -0.004149 -0.001630 0.001064 + 1360 0.002966 -0.001211 -0.000529 + 1361 0.011026 0.001160 0.001568 + 1362 0.015143 -0.001234 0.000065 + 1363 0.000976 0.001952 -0.002769 + 1364 0.013527 0.011152 0.001594 + 1365 -0.000179 -0.000211 -0.002554 + 1366 -0.005351 -0.004969 -0.002979 + 1367 -0.006889 0.021662 -0.005435 + 1368 -0.002462 0.016113 0.008657 + 1369 -0.000975 0.000751 -0.000755 + 1370 -0.003243 0.006738 -0.001393 + 1371 -0.002267 -0.000779 0.003167 + 1372 0.001566 -0.003190 -0.000583 + 1373 -0.002018 -0.005136 0.012563 + 1374 -0.006828 0.007134 0.011132 + 1375 0.005244 -0.004715 -0.003319 + 1376 -0.010064 -0.001392 0.024842 + 1377 -0.003331 -0.012180 0.011450 + 1378 0.005044 -0.003538 0.000197 + 1379 0.014932 -0.005316 0.014871 + 1380 0.002959 -0.015155 -0.010790 + 1381 0.004288 0.003508 0.003045 + 1382 0.010516 0.006731 0.001181 + 1383 0.003157 0.002004 0.039661 + 1384 -0.003464 -0.000341 -0.002519 + 1385 0.000767 -0.010574 0.002375 + 1386 0.012132 0.009405 0.005728 + 1387 -0.002537 0.005096 -0.000141 + 1388 0.008455 -0.000335 0.003398 + 1389 0.000567 0.012932 0.006368 + 1390 0.007440 -0.002304 0.001444 + 1391 0.003946 0.007849 -0.005030 + 1392 0.012038 -0.016280 0.007159 + 1393 -0.001061 -0.002610 -0.000083 + 1394 0.010905 -0.006613 -0.001941 + 1395 -0.013885 -0.027620 0.005494 + 1396 0.013746 0.003525 0.007163 + 1397 0.003586 0.002644 -0.010792 + 1398 0.018544 0.013850 0.017322 + 1399 0.004571 0.000027 -0.001760 + 1400 0.012220 0.001858 -0.006751 + 1401 0.009850 -0.002003 0.019339 + 1402 -0.001383 0.002281 -0.007042 + 1403 -0.003363 0.001654 -0.017801 + 1404 0.011330 0.009635 0.005470 + 1405 0.000650 -0.001098 -0.005942 + 1406 0.005198 -0.008028 -0.003832 + 1407 0.017668 -0.005738 0.026099 + 1408 -0.001891 0.001162 0.003476 + 1409 -0.003537 0.018838 0.000972 + 1410 0.007980 0.016250 0.030292 + 1411 -0.001348 0.000197 0.004181 + 1412 -0.002255 -0.008393 -0.001355 + 1413 -0.008567 -0.008184 -0.000151 + 1414 -0.001145 0.001777 -0.004250 + 1415 -0.002565 -0.000609 -0.002622 + 1416 0.017182 0.009342 -0.008899 + 1417 -0.000336 -0.000833 -0.006619 + 1418 0.006594 -0.014023 -0.011705 + 1419 -0.010047 -0.002912 -0.003804 + 1420 0.005759 0.000406 0.005233 + 1421 -0.013174 -0.018780 -0.002966 + 1422 -0.003551 -0.005212 0.011087 + 1423 -0.001811 -0.005836 -0.002120 + 1424 -0.008296 0.022099 0.012646 + 1425 0.010130 0.006059 0.033707 + 1426 0.001039 -0.001025 -0.000459 + 1427 0.004468 0.000527 0.001539 + 1428 -0.001728 -0.005304 0.003140 + 1429 -0.000141 -0.003112 0.003400 + 1430 0.007530 -0.026022 0.005020 + 1431 -0.011982 0.032142 -0.001998 + 1432 -0.001642 0.003923 -0.003350 + 1433 0.016086 -0.002664 -0.005695 + 1434 -0.010354 0.000136 0.021071 + 1435 0.001502 -0.001507 0.005856 + 1436 -0.003359 -0.017617 -0.013060 + 1437 -0.001621 -0.013764 -0.008355 + 1438 -0.006074 0.001165 0.001910 + 1439 -0.004946 0.003618 0.011324 + 1440 -0.007761 0.002697 -0.006763 + 1441 -0.009332 0.000898 0.000750 + 1442 -0.017083 -0.010335 0.011191 + 1443 0.020780 0.013466 -0.015083 + 1444 -0.008140 -0.008032 -0.000180 + 1445 -0.001836 -0.008988 0.003973 + 1446 -0.008280 -0.004548 -0.003224 + 1447 0.000996 -0.002062 -0.001184 + 1448 -0.001863 -0.012096 0.003957 + 1449 -0.027050 0.007989 0.002157 + 1450 -0.001321 -0.000325 0.001355 + 1451 -0.006885 -0.000536 -0.022446 + 1452 0.008792 -0.007975 0.003329 + 1453 -0.003682 -0.004782 -0.002567 + 1454 -0.001180 -0.009011 0.018662 + 1455 -0.000958 -0.004899 0.013723 + 1456 0.000545 0.011919 -0.001753 + 1457 0.023799 0.010298 -0.002649 + 1458 0.014717 0.007757 -0.005400 + 1459 -0.004576 -0.007691 0.001365 + 1460 -0.006577 -0.016846 -0.022862 + 1461 -0.005206 0.003687 0.012428 + 1462 0.001923 -0.004758 -0.001993 + 1463 0.006600 0.017503 0.006935 + 1464 -0.006747 -0.003482 -0.000067 + 1465 0.000613 0.004580 0.004038 + 1466 -0.001945 0.022605 -0.000652 + 1467 0.017624 -0.001392 0.003829 + 1468 -0.003065 -0.003003 -0.000747 + 1469 -0.012664 -0.016566 -0.007030 + 1470 0.008660 -0.008358 0.004763 + 1471 -0.004008 0.000421 -0.006040 + 1472 0.003555 0.008566 -0.015842 + 1473 -0.001032 0.001700 -0.010204 + 1474 -0.000556 0.000599 0.003074 + 1475 0.001542 0.002939 0.005269 + 1476 -0.005281 -0.001944 0.003338 + 1477 -0.000195 -0.000293 -0.001004 + 1478 -0.009991 -0.005354 -0.013386 + 1479 -0.000476 -0.017594 0.007900 + 1480 0.000550 -0.000431 0.001422 + 1481 0.018094 -0.005183 0.016234 + 1482 0.010706 0.011668 -0.017772 + 1483 0.001291 0.006499 0.000951 + 1484 0.009985 -0.016962 0.009714 + 1485 0.020849 0.018365 -0.008351 + 1486 0.006940 0.004692 -0.002409 + 1487 0.022308 0.010182 -0.022897 + 1488 0.000269 0.008847 0.011834 + 1489 0.002051 0.007334 -0.000125 + 1490 -0.023048 0.013759 -0.030276 + 1491 0.023523 -0.005817 0.007754 + 1492 -0.001269 0.002979 0.001311 + 1493 -0.005596 0.006174 0.011007 + 1494 -0.009061 0.022719 0.002133 + 1495 -0.001128 0.004307 -0.002381 + 1496 -0.004340 0.013891 -0.003505 + 1497 0.001822 -0.005505 -0.001135 + 1498 -0.000910 0.001437 0.000165 + 1499 0.004510 -0.000360 -0.006425 + 1500 0.003993 0.000498 0.007321 + 1501 -0.002868 -0.000316 -0.000509 + 1502 0.000620 0.011286 0.008461 + 1503 -0.013079 -0.008157 0.007561 + 1504 -0.003002 0.003413 0.004968 + 1505 0.015262 -0.005133 0.012052 + 1506 -0.003968 -0.003643 0.003514 + 1507 0.005087 -0.001882 -0.000518 + 1508 0.000932 -0.002238 0.000800 + 1509 -0.008149 0.000695 -0.000827 + 1510 -0.001261 -0.003375 0.000333 + 1511 -0.001224 -0.004135 -0.003080 + 1512 0.009246 -0.010372 0.026354 + 1513 0.000697 -0.003200 0.001222 + 1514 -0.002319 0.003800 0.022860 + 1515 -0.018205 0.011600 -0.011416 + 1516 -0.001731 -0.001076 0.002612 + 1517 -0.004661 -0.010783 -0.001505 + 1518 0.016208 0.002810 0.004482 + 1519 0.003508 -0.001750 0.002537 + 1520 0.024576 -0.026041 -0.004083 + 1521 -0.019140 0.000844 0.001909 + 1522 -0.000341 0.001152 0.001967 + 1523 -0.020076 0.003364 0.001315 + 1524 -0.000942 0.000692 -0.003283 + 1525 -0.006519 -0.000419 0.000991 + 1526 -0.004033 0.006531 0.004791 + 1527 0.005626 0.012187 -0.014266 + 1528 0.001113 -0.004253 0.011930 + 1529 -0.010144 0.003567 0.009059 + 1530 -0.003464 0.001115 0.011591 + 1531 0.000006 0.000074 0.005751 + 1532 0.003604 0.008464 0.010627 + 1533 -0.004351 -0.009621 -0.000453 + 1534 -0.000196 -0.001160 0.002795 + 1535 -0.006855 0.001414 0.005552 + 1536 -0.000894 -0.002102 0.005053 + 1537 -0.002040 -0.005887 -0.003590 + 1538 -0.006852 -0.011947 -0.023080 + 1539 -0.016070 0.000160 0.010390 + 1540 0.004712 0.002848 -0.002998 + 1541 -0.004259 0.007840 0.008142 + 1542 -0.004861 0.004263 0.011728 + 1543 0.006968 -0.004871 0.004119 + 1544 -0.016558 -0.002046 -0.006090 + 1545 -0.006229 0.004475 0.001436 + 1546 -0.002341 -0.004733 -0.003946 + 1547 0.003563 0.004733 0.009615 + 1548 -0.013018 0.004747 -0.004733 + 1549 0.001703 -0.000331 0.003605 + 1550 0.005459 -0.002653 -0.012447 + 1551 0.013689 0.008625 -0.003301 + 1552 0.003195 0.001205 -0.000779 + 1553 -0.003336 -0.011439 -0.004979 + 1554 0.001015 0.018568 -0.007361 + 1555 -0.001647 -0.003759 0.001214 + 1556 0.015583 -0.016961 0.000384 + 1557 -0.011138 -0.013161 -0.015913 + 1558 0.005848 -0.002193 -0.007682 + 1559 0.009577 -0.005765 0.010025 + 1560 0.006984 0.005858 -0.020668 + 1561 -0.005040 0.001396 0.001932 + 1562 0.007071 0.009231 0.007700 + 1563 0.001743 0.005137 0.005850 + 1564 0.001857 0.002145 -0.004455 + 1565 -0.007462 0.014047 -0.012730 + 1566 0.013730 -0.006385 0.009586 + 1567 -0.002000 0.003453 -0.001882 + 1568 -0.009622 -0.007424 -0.003371 + 1569 -0.006993 -0.018224 -0.006858 + 1570 0.001461 0.001281 -0.002568 + 1571 0.018901 0.002357 0.001811 + 1572 -0.001592 0.019333 -0.002732 + 1573 -0.001308 -0.005730 -0.002519 + 1574 -0.014074 0.007287 0.021518 + 1575 -0.017324 -0.018775 -0.005647 + 1576 0.002340 -0.001593 0.004994 + 1577 -0.000516 0.003608 0.002676 + 1578 -0.014840 -0.017283 -0.001508 + 1579 -0.001557 -0.002471 -0.002555 + 1580 0.016654 -0.033672 0.006595 + 1581 0.013351 -0.030070 0.003443 + 1582 0.003752 0.001449 0.001862 + 1583 -0.011257 -0.002704 0.007355 + 1584 0.002139 0.006577 0.012771 + 1585 0.002251 0.002492 -0.002180 + 1586 0.010691 -0.005615 -0.001517 + 1587 -0.018738 0.016070 0.006914 + 1588 -0.001600 0.000180 0.001378 + 1589 0.004891 -0.007732 -0.013906 + 1590 -0.015149 0.011285 0.002913 + 1591 0.003944 -0.001162 -0.002407 + 1592 -0.013220 -0.006427 -0.006873 + 1593 -0.008388 0.022805 -0.011588 + 1594 0.000621 -0.004836 0.005509 + 1595 0.006148 -0.013451 0.002326 + 1596 -0.001161 -0.012639 -0.002024 + 1597 -0.005042 0.000613 0.003072 + 1598 -0.002560 -0.009516 -0.007164 + 1599 -0.007736 0.003315 0.007824 + 1600 -0.002409 -0.002549 -0.003082 + 1601 -0.002839 0.004415 -0.008830 + 1602 -0.006633 -0.001003 -0.004060 + 1603 -0.004810 -0.007495 -0.004047 + 1604 0.005200 -0.017270 0.009101 + 1605 0.000670 -0.009280 -0.012848 + 1606 -0.003830 0.001924 -0.002728 + 1607 -0.035525 0.007821 -0.020602 + 1608 0.016575 -0.019547 -0.006176 + 1609 0.003828 0.000099 -0.002605 + 1610 0.017387 0.007652 0.014875 + 1611 0.012190 0.014852 0.016071 + 1612 -0.003436 0.002187 -0.001035 + 1613 -0.005586 -0.003901 0.006033 + 1614 -0.005884 -0.005331 -0.011796 + 1615 -0.001799 -0.005019 0.004011 + 1616 0.002094 -0.028579 0.008471 + 1617 0.023334 0.020189 0.016696 + 1618 -0.000653 -0.003079 -0.001689 + 1619 -0.005925 -0.004542 -0.007489 + 1620 0.003980 0.000361 0.005598 + 1621 -0.000999 0.004025 -0.003724 + 1622 0.000058 0.024442 0.006515 + 1623 0.011473 -0.013431 0.004073 + 1624 0.002923 -0.003314 0.001931 + 1625 0.003377 -0.006029 -0.008704 + 1626 0.002413 0.015094 0.010447 + 1627 0.003654 -0.000619 -0.001261 + 1628 -0.004232 -0.000930 0.001384 + 1629 0.019160 0.000313 -0.006734 + 1630 0.003534 0.002394 -0.000501 + 1631 -0.008068 0.002953 0.008451 + 1632 0.014612 0.006975 -0.004278 + 1633 0.001620 0.003004 0.003226 + 1634 -0.007605 -0.007788 0.011245 + 1635 0.020296 -0.014907 -0.003043 + 1636 -0.002678 -0.006261 0.001869 + 1637 -0.007968 -0.013586 -0.003793 + 1638 -0.015202 -0.007224 -0.014352 + 1639 -0.005816 -0.003019 0.006480 + 1640 -0.001607 -0.004084 0.006246 + 1641 0.008520 -0.008049 0.002824 + 1642 -0.000658 -0.004008 -0.000300 + 1643 -0.000444 0.000650 -0.012168 + 1644 -0.006399 -0.006883 0.005254 + 1645 -0.001317 0.006093 0.001522 + 1646 -0.010770 -0.004270 -0.010989 + 1647 -0.005520 0.020979 0.012203 + 1648 -0.004763 0.001957 0.003649 + 1649 -0.010531 0.001095 0.022741 + 1650 0.001695 -0.009764 -0.029750 + 1651 0.000561 0.003660 0.004562 + 1652 0.004814 -0.011887 -0.011791 + 1653 0.015151 -0.017660 -0.020515 + 1654 -0.003720 -0.008154 0.002101 + 1655 -0.006836 0.005342 0.006830 + 1656 -0.008891 -0.005752 0.002656 + 1657 -0.004211 -0.006534 0.001470 + 1658 0.024344 -0.009232 0.001415 + 1659 -0.010793 -0.032076 -0.013330 + 1660 -0.000393 0.010082 -0.000260 + 1661 -0.003386 0.024037 -0.002341 + 1662 0.005231 -0.007154 0.002310 + 1663 0.004778 0.000685 -0.001247 + 1664 0.006845 -0.000146 -0.002439 + 1665 0.002831 0.001509 -0.001312 + 1666 -0.004575 0.002015 0.002231 + 1667 -0.008714 0.004773 0.019310 + 1668 -0.009036 0.006437 0.017025 + 1669 -0.001102 -0.003004 0.003294 + 1670 0.004690 0.016121 0.007181 + 1671 -0.000881 -0.003815 0.001639 + 1672 -0.000053 -0.001708 0.002633 + 1673 -0.004620 0.003536 0.000715 + 1674 -0.002636 -0.005429 0.007498 + 1675 0.002307 0.001406 0.002665 + 1676 -0.005270 -0.001969 0.007587 + 1677 0.001417 -0.009022 -0.021912 + 1678 0.000203 0.002930 -0.002177 + 1679 0.003819 0.012652 -0.002939 + 1680 -0.001040 0.005171 0.022221 + 1681 -0.001765 0.004140 -0.001020 + 1682 0.015888 -0.002384 -0.000464 + 1683 -0.019573 0.014814 -0.003047 + 1684 -0.002840 -0.000626 0.000097 + 1685 0.019011 -0.004434 -0.031132 + 1686 -0.011722 0.011711 0.019623 + 1687 -0.000720 0.008278 0.001232 + 1688 -0.000014 -0.005707 0.005722 + 1689 0.006445 -0.004607 0.004541 + 1690 -0.008451 -0.005406 -0.003097 + 1691 -0.025859 -0.004092 0.011942 + 1692 0.003198 0.017013 -0.015979 + 1693 0.001237 0.005482 0.001012 + 1694 -0.003233 0.012773 -0.012817 + 1695 -0.013658 -0.008102 0.007350 + 1696 0.004867 0.002547 -0.001769 + 1697 0.019074 -0.004173 0.005165 + 1698 0.008487 0.001064 0.000080 + 1699 0.002766 -0.001251 -0.001561 + 1700 -0.019200 0.027169 -0.007481 + 1701 0.006036 -0.028485 -0.009388 + 1702 -0.005460 0.002563 0.001784 + 1703 -0.017462 0.006398 0.005231 + 1704 -0.014453 0.005484 0.004388 + 1705 0.002956 -0.001348 0.006512 + 1706 0.009654 0.004653 0.025184 + 1707 0.006226 -0.001478 -0.018062 + 1708 0.003757 -0.000921 -0.000401 + 1709 0.004307 -0.009700 -0.007768 + 1710 0.003780 -0.012914 0.008582 + 1711 0.004846 -0.002032 -0.000808 + 1712 -0.000823 -0.002500 -0.004619 + 1713 0.014769 -0.010350 0.008970 + 1714 -0.001580 -0.000837 0.000021 + 1715 -0.002003 -0.002972 -0.000158 + 1716 -0.004469 -0.000404 0.001257 + 1717 -0.001782 0.001231 -0.003624 + 1718 -0.009550 0.008477 -0.006010 + 1719 -0.003240 -0.001801 -0.002707 + 1720 -0.003131 -0.002749 -0.002782 + 1721 -0.003319 -0.008008 -0.009572 + 1722 -0.003280 -0.008289 -0.009069 + 1723 -0.006776 0.001807 0.000809 + 1724 0.000630 0.005359 0.003033 + 1725 0.016012 0.013546 0.014364 + 1726 -0.005383 0.003683 -0.001052 + 1727 -0.000343 -0.021814 -0.000655 + 1728 0.015975 0.004809 -0.015863 + 1729 -0.002843 0.002136 0.000031 + 1730 0.008511 0.002265 -0.002748 + 1731 -0.026285 -0.002274 -0.004757 + 1732 0.005294 -0.003565 0.004694 + 1733 -0.002668 0.001103 -0.001112 + 1734 -0.009429 0.006969 -0.008965 + 1735 -0.001634 0.000110 0.001819 + 1736 -0.004942 0.001203 -0.007254 + 1737 -0.002655 0.002573 -0.003610 + 1738 -0.004831 0.005860 0.001407 + 1739 -0.014232 0.009476 0.016389 + 1740 -0.017895 0.005674 -0.009379 + 1741 0.003013 -0.002508 -0.001228 + 1742 0.000746 0.006449 -0.005992 + 1743 0.006650 -0.002762 0.000152 + 1744 0.002550 -0.008457 0.001324 + 1745 -0.001868 -0.010233 -0.023525 + 1746 0.003968 -0.007880 0.008439 + 1747 -0.000591 0.004322 -0.003592 + 1748 -0.014424 0.009132 0.003708 + 1749 0.012052 -0.004950 -0.011581 + 1750 0.001849 0.003842 -0.009164 + 1751 0.009453 -0.005684 -0.004817 + 1752 0.001564 0.018776 -0.004831 + 1753 0.000794 0.000968 -0.001710 + 1754 -0.003816 -0.004723 -0.000498 + 1755 -0.011972 0.005633 -0.006975 + 1756 -0.004635 0.005064 -0.004764 + 1757 -0.010722 0.012077 -0.027297 + 1758 -0.003376 0.000707 0.006078 + 1759 0.001092 0.005159 -0.000557 + 1760 0.014326 0.002844 -0.021424 + 1761 0.019579 -0.002405 -0.009532 + 1762 -0.000565 0.006632 0.002294 + 1763 -0.025047 0.006219 0.001583 + 1764 -0.004637 -0.007484 0.007079 + 1765 0.002563 -0.001616 -0.003316 + 1766 -0.001239 0.014897 -0.002355 + 1767 -0.001256 -0.009226 0.009450 + 1768 0.001056 0.005329 -0.003831 + 1769 -0.012555 0.037676 0.021233 + 1770 -0.005969 -0.003116 -0.014248 + 1771 0.000691 0.001302 0.002405 + 1772 -0.015733 0.001224 -0.004288 + 1773 0.006783 0.015986 -0.003342 + 1774 0.002355 0.002897 -0.002965 + 1775 -0.000435 0.005789 0.007980 + 1776 0.014211 0.000855 -0.014841 + 1777 -0.004596 -0.002169 0.000774 + 1778 0.002630 -0.027237 0.012553 + 1779 -0.000727 -0.003394 -0.009924 + 1780 0.001821 -0.001310 0.000540 + 1781 0.005476 -0.002057 0.001588 + 1782 0.008060 0.013457 -0.013767 + 1783 0.003078 -0.007047 0.009501 + 1784 -0.004392 -0.004982 0.015684 + 1785 -0.021173 -0.003917 -0.003013 + 1786 0.001492 -0.007162 -0.003460 + 1787 0.020179 0.025050 0.005018 + 1788 -0.018378 -0.021938 0.007656 + 1789 -0.000363 0.004076 -0.003991 + 1790 0.012179 0.023942 -0.003853 + 1791 0.002207 0.011773 0.006443 + 1792 0.001993 0.000538 0.002365 + 1793 0.008602 -0.013779 -0.007218 + 1794 0.007374 0.001122 0.001108 + 1795 0.003207 -0.011319 -0.004081 + 1796 0.010332 -0.007827 -0.001929 + 1797 0.001869 0.022609 0.012256 + 1798 0.001101 0.003835 0.002357 + 1799 -0.003624 0.011759 0.002745 + 1800 0.001557 -0.002337 -0.004179 + 1801 0.003327 -0.001910 -0.005250 + 1802 0.011996 0.003017 0.013309 + 1803 -0.013682 -0.002775 -0.008939 + 1804 -0.002064 -0.000934 0.000427 + 1805 -0.012146 0.024406 -0.015171 + 1806 0.005030 -0.019570 0.004311 + 1807 0.003003 0.004365 0.002257 + 1808 0.000823 0.000086 -0.005161 + 1809 -0.003001 0.001206 0.008241 + 1810 0.005602 -0.001423 0.002945 + 1811 0.000330 0.001483 -0.011075 + 1812 0.003652 0.009252 -0.000166 + 1813 0.004531 -0.000860 -0.000170 + 1814 0.018728 0.013621 0.031510 + 1815 0.011579 -0.009257 -0.004100 + 1816 0.002862 0.000330 -0.002342 + 1817 -0.003456 -0.001426 -0.004566 + 1818 -0.006589 0.018593 0.018322 + 1819 -0.001663 0.002113 0.003120 + 1820 0.002523 0.005185 0.010725 + 1821 -0.006456 -0.005159 0.018366 + 1822 -0.000677 -0.000638 0.005530 + 1823 0.006499 0.011396 0.003392 + 1824 0.000945 -0.008826 -0.007441 + 1825 -0.002582 0.001006 0.000170 + 1826 -0.000739 0.010378 -0.012944 + 1827 -0.004082 -0.009693 0.012271 + 1828 -0.002259 -0.002179 0.001812 + 1829 0.004365 0.028602 0.007523 + 1830 -0.001047 0.006781 -0.010318 + 1831 0.003053 0.002227 0.004523 + 1832 -0.004297 -0.007295 0.001900 + 1833 0.002925 0.002066 0.004473 + 1834 0.003171 0.000025 0.002189 + 1835 0.001188 0.002838 0.001014 + 1836 0.006142 0.003073 -0.003689 + 1837 0.009818 0.005253 0.006222 + 1838 0.013907 -0.003607 0.006764 + 1839 -0.000327 0.015573 -0.010930 + 1840 -0.003110 -0.005538 0.000400 + 1841 0.006244 -0.021206 -0.003853 + 1842 -0.010299 0.008474 0.021147 + 1843 -0.001053 -0.000598 0.004581 + 1844 -0.013621 0.002557 -0.003175 + 1845 -0.002495 0.000789 0.011106 + 1846 -0.000137 -0.004006 -0.000014 + 1847 -0.017819 -0.013981 0.011316 + 1848 -0.005844 -0.000863 -0.025248 + 1849 -0.002799 0.002996 -0.002499 + 1850 -0.012455 0.012490 -0.004469 + 1851 0.010514 0.009490 -0.009495 + 1852 -0.000560 -0.004144 -0.000656 + 1853 -0.007255 0.002559 0.003817 + 1854 0.004602 -0.007276 0.003469 + 1855 0.000128 0.001144 -0.008402 + 1856 0.008157 0.001721 -0.014464 + 1857 -0.004034 0.002739 -0.008982 + 1858 0.002856 0.004731 -0.003812 + 1859 0.008481 -0.004184 -0.015612 + 1860 -0.004966 0.006658 -0.006541 + 1861 0.005415 -0.007185 0.002622 + 1862 -0.000791 0.004294 0.012806 + 1863 0.006266 -0.008943 0.000048 + 1864 -0.004891 -0.000259 0.002435 + 1865 0.000775 -0.012600 0.009738 + 1866 -0.000239 0.020688 0.014963 + 1867 0.007752 0.006605 0.003522 + 1868 0.005559 0.005449 0.004823 + 1869 0.001382 0.020031 -0.009484 + 1870 0.000269 -0.000837 -0.001948 + 1871 -0.015324 0.006379 0.032972 + 1872 -0.010895 -0.006739 0.002233 + 1873 0.002406 -0.005817 -0.007929 + 1874 0.011974 0.013774 0.020789 + 1875 -0.005616 -0.012309 -0.023698 + 1876 -0.002712 -0.000118 0.000894 + 1877 -0.000559 -0.018665 -0.005699 + 1878 -0.022904 -0.016730 0.007620 + 1879 -0.006235 -0.000119 -0.005440 + 1880 -0.008616 0.001720 0.002602 + 1881 -0.019263 0.001295 0.018377 + 1882 -0.002493 0.002824 -0.002915 + 1883 0.007384 0.000692 0.003462 + 1884 -0.019228 -0.005451 0.005676 + 1885 0.002956 0.004628 -0.002177 + 1886 0.005617 0.021792 -0.005623 + 1887 -0.010771 -0.007154 -0.002600 + 1888 -0.006932 -0.006388 0.001795 + 1889 -0.026638 0.002211 0.017012 + 1890 -0.006429 -0.013703 0.021233 + 1891 0.004179 0.001508 -0.002942 + 1892 -0.015358 0.009799 -0.025507 + 1893 -0.009827 0.001263 -0.015038 + 1894 0.002515 0.004808 -0.006083 + 1895 -0.001395 -0.005178 0.010798 + 1896 0.005498 0.001296 -0.013456 + 1897 -0.006679 0.000004 0.000833 + 1898 -0.006339 0.003210 0.000555 + 1899 -0.007815 -0.000155 0.006317 + 1900 -0.003334 -0.000730 -0.000139 + 1901 -0.003197 -0.021225 -0.009098 + 1902 0.003310 -0.008203 -0.004863 + 1903 -0.007379 0.001152 -0.003847 + 1904 -0.008175 0.003836 -0.004939 + 1905 -0.007216 0.002039 -0.012076 + 1906 -0.002751 -0.006050 -0.001404 + 1907 -0.005827 0.008129 0.005351 + 1908 0.010377 0.010628 0.018761 + 1909 -0.002571 -0.007065 0.006215 + 1910 -0.004848 -0.014622 0.001577 + 1911 -0.004351 -0.002361 0.020679 + 1912 0.006139 0.001291 0.002464 + 1913 0.004939 0.003608 0.002097 + 1914 0.004274 0.000152 0.002451 + 1915 0.002989 0.000832 -0.000352 + 1916 -0.014159 -0.000914 0.002187 + 1917 0.012237 -0.003167 0.009134 + 1918 -0.004575 -0.001662 0.000082 + 1919 -0.007883 -0.002056 0.002571 + 1920 -0.003336 -0.001305 -0.000658 + 1921 0.004366 0.000439 0.001158 + 1922 -0.000155 0.003368 0.010592 + 1923 -0.014972 -0.009424 -0.018312 + 1924 -0.000613 -0.002374 0.000797 + 1925 0.007460 -0.016336 -0.000977 + 1926 -0.006787 0.004573 0.010255 + 1927 -0.002452 -0.000122 0.000124 + 1928 -0.015584 -0.009431 -0.007285 + 1929 -0.000101 0.008080 -0.015191 + 1930 0.002197 0.002310 -0.001612 + 1931 0.016237 -0.005090 0.018070 + 1932 0.001709 -0.003220 -0.011865 + 1933 -0.001150 0.000898 0.004173 + 1934 0.000323 -0.000312 -0.014495 + 1935 0.000516 -0.000491 -0.011422 + 1936 -0.005815 -0.002965 0.000187 + 1937 0.008195 0.018425 -0.027236 + 1938 -0.010921 -0.007575 -0.002217 + 1939 -0.004740 0.002745 0.006330 + 1940 0.002035 0.006523 0.010880 + 1941 -0.012191 0.004818 0.006605 + 1942 -0.003197 -0.004418 -0.003375 + 1943 0.003590 -0.017196 0.008070 + 1944 0.004548 0.006106 0.016045 + 1945 0.005444 0.002200 0.004561 + 1946 0.004448 0.009092 -0.001577 + 1947 -0.000522 0.006033 0.006559 + 1948 0.005450 0.001267 0.002269 + 1949 0.027952 -0.012604 0.001935 + 1950 -0.004826 -0.018174 0.014813 + 1951 0.005498 -0.000626 0.001156 + 1952 0.001428 -0.010472 0.000805 + 1953 -0.010198 -0.005573 -0.014564 + 1954 0.001605 -0.006572 0.005587 + 1955 -0.002403 -0.004981 0.000460 + 1956 0.010287 -0.003414 0.005774 + 1957 -0.005679 0.003540 -0.003175 + 1958 -0.005054 0.005203 -0.002733 + 1959 -0.006462 0.003843 0.002657 + 1960 -0.006606 -0.002499 -0.001538 + 1961 0.027567 -0.002565 0.034908 + 1962 0.001905 -0.003739 -0.001134 + 1963 -0.000871 0.002779 0.006534 + 1964 -0.013473 -0.002631 0.001200 + 1965 -0.008136 0.003625 0.001725 + 1966 0.002375 -0.002767 -0.000214 + 1967 0.015603 0.001192 0.006785 + 1968 -0.008229 0.002751 0.010337 + 1969 -0.002111 -0.006139 0.006236 + 1970 0.025783 -0.003684 0.015052 + 1971 -0.008026 -0.018580 0.028847 + 1972 -0.001966 -0.005103 0.002533 + 1973 0.025504 -0.012928 0.014439 + 1974 0.015919 0.008653 -0.013047 + 1975 -0.002145 -0.003853 -0.002353 + 1976 0.020573 0.023626 0.033600 + 1977 0.002418 -0.000127 0.000258 + 1978 -0.000168 -0.002747 0.002505 + 1979 0.011847 0.007945 0.003222 + 1980 0.002222 -0.001343 0.005437 + 1981 -0.004734 0.003071 -0.000955 + 1982 0.003752 -0.001882 -0.005052 + 1983 -0.008195 0.007844 0.004577 + 1984 0.007575 0.002209 -0.000466 + 1985 -0.005510 0.009650 -0.004399 + 1986 0.018263 0.019292 -0.008157 + 1987 -0.005098 -0.001581 -0.000328 + 1988 -0.004522 -0.021884 -0.005509 + 1989 -0.001598 -0.001668 0.002704 + 1990 -0.000494 0.002205 0.012458 + 1991 0.003153 0.001522 0.015672 + 1992 -0.000092 -0.002603 0.010098 + 1993 0.001919 -0.007389 0.001539 + 1994 -0.002690 -0.003376 -0.009963 + 1995 -0.005006 0.002932 -0.001670 + 1996 -0.003089 -0.005736 0.003689 + 1997 0.010713 -0.027613 -0.023000 + 1998 -0.006878 0.009457 0.006998 + 1999 -0.001817 0.000266 -0.004238 + 2000 -0.010974 0.005190 0.000117 + 2001 -0.008937 -0.003277 0.004337 + 2002 -0.000987 -0.001334 -0.004265 + 2003 -0.022280 -0.011677 -0.018343 + 2004 -0.010076 -0.005729 -0.026032 + +Bonds + + 1 3 1 7 + 2 2 1 3 + 3 1 1 2 + 4 4 2 5 + 5 4 2 6 + 6 4 2 4 + 7 6 7 19 + 8 5 7 8 + 9 1 8 9 + 10 7 8 11 + 11 8 8 20 + 12 3 9 28 + 13 2 9 10 + 14 10 11 21 + 15 9 11 12 + 16 10 11 22 + 17 11 12 14 + 18 11 12 13 + 19 12 13 23 + 20 11 13 15 + 21 12 14 24 + 22 11 14 16 + 23 11 15 17 + 24 12 15 25 + 25 11 16 17 + 26 12 16 26 + 27 13 17 18 + 28 14 18 27 + 29 5 28 29 + 30 6 28 32 + 31 1 29 30 + 32 8 29 33 + 33 8 29 34 + 34 3 30 35 + 35 2 30 31 + 36 5 35 36 + 37 6 35 39 + 38 1 36 37 + 39 8 36 40 + 40 8 36 41 + 41 2 37 38 + 42 3 37 42 + 43 6 42 53 + 44 5 42 43 + 45 1 43 44 + 46 7 43 46 + 47 8 43 54 + 48 3 44 62 + 49 2 44 45 + 50 10 46 56 + 51 10 46 55 + 52 9 46 47 + 53 11 47 48 + 54 11 47 49 + 55 11 48 50 + 56 12 48 57 + 57 11 49 51 + 58 12 49 58 + 59 11 50 52 + 60 12 50 59 + 61 11 51 52 + 62 12 51 60 + 63 12 52 61 + 64 6 62 70 + 65 5 62 63 + 66 7 63 66 + 67 1 63 64 + 68 8 63 71 + 69 2 64 65 + 70 3 64 79 + 71 15 66 67 + 72 10 66 73 + 73 10 66 72 + 74 10 67 75 + 75 10 67 74 + 76 16 67 68 + 77 17 68 69 + 78 4 69 76 + 79 4 69 78 + 80 4 69 77 + 81 5 79 80 + 82 6 79 81 + 83 4 80 84 + 84 4 80 83 + 85 4 80 82 + 86 18 85 86 + 87 18 85 87 + 88 18 88 90 + 89 18 88 89 + 90 18 91 93 + 91 18 91 92 + 92 18 94 96 + 93 18 94 95 + 94 18 97 98 + 95 18 97 99 + 96 18 100 101 + 97 18 100 102 + 98 18 103 104 + 99 18 103 105 + 100 18 106 107 + 101 18 106 108 + 102 18 109 111 + 103 18 109 110 + 104 18 112 114 + 105 18 112 113 + 106 18 115 116 + 107 18 115 117 + 108 18 118 120 + 109 18 118 119 + 110 18 121 123 + 111 18 121 122 + 112 18 124 126 + 113 18 124 125 + 114 18 127 128 + 115 18 127 129 + 116 18 130 132 + 117 18 130 131 + 118 18 133 134 + 119 18 133 135 + 120 18 136 137 + 121 18 136 138 + 122 18 139 140 + 123 18 139 141 + 124 18 142 144 + 125 18 142 143 + 126 18 145 147 + 127 18 145 146 + 128 18 148 150 + 129 18 148 149 + 130 18 151 152 + 131 18 151 153 + 132 18 154 156 + 133 18 154 155 + 134 18 157 159 + 135 18 157 158 + 136 18 160 162 + 137 18 160 161 + 138 18 163 164 + 139 18 163 165 + 140 18 166 168 + 141 18 166 167 + 142 18 169 171 + 143 18 169 170 + 144 18 172 174 + 145 18 172 173 + 146 18 175 177 + 147 18 175 176 + 148 18 178 180 + 149 18 178 179 + 150 18 181 182 + 151 18 181 183 + 152 18 184 186 + 153 18 184 185 + 154 18 187 188 + 155 18 187 189 + 156 18 190 191 + 157 18 190 192 + 158 18 193 194 + 159 18 193 195 + 160 18 196 197 + 161 18 196 198 + 162 18 199 201 + 163 18 199 200 + 164 18 202 204 + 165 18 202 203 + 166 18 205 206 + 167 18 205 207 + 168 18 208 210 + 169 18 208 209 + 170 18 211 212 + 171 18 211 213 + 172 18 214 215 + 173 18 214 216 + 174 18 217 219 + 175 18 217 218 + 176 18 220 222 + 177 18 220 221 + 178 18 223 224 + 179 18 223 225 + 180 18 226 228 + 181 18 226 227 + 182 18 229 231 + 183 18 229 230 + 184 18 232 233 + 185 18 232 234 + 186 18 235 236 + 187 18 235 237 + 188 18 238 240 + 189 18 238 239 + 190 18 241 242 + 191 18 241 243 + 192 18 244 246 + 193 18 244 245 + 194 18 247 248 + 195 18 247 249 + 196 18 250 251 + 197 18 250 252 + 198 18 253 254 + 199 18 253 255 + 200 18 256 257 + 201 18 256 258 + 202 18 259 261 + 203 18 259 260 + 204 18 262 264 + 205 18 262 263 + 206 18 265 266 + 207 18 265 267 + 208 18 268 269 + 209 18 268 270 + 210 18 271 272 + 211 18 271 273 + 212 18 274 275 + 213 18 274 276 + 214 18 277 279 + 215 18 277 278 + 216 18 280 282 + 217 18 280 281 + 218 18 283 284 + 219 18 283 285 + 220 18 286 287 + 221 18 286 288 + 222 18 289 290 + 223 18 289 291 + 224 18 292 294 + 225 18 292 293 + 226 18 295 296 + 227 18 295 297 + 228 18 298 299 + 229 18 298 300 + 230 18 301 303 + 231 18 301 302 + 232 18 304 305 + 233 18 304 306 + 234 18 307 309 + 235 18 307 308 + 236 18 310 311 + 237 18 310 312 + 238 18 313 314 + 239 18 313 315 + 240 18 316 317 + 241 18 316 318 + 242 18 319 321 + 243 18 319 320 + 244 18 322 323 + 245 18 322 324 + 246 18 325 327 + 247 18 325 326 + 248 18 328 329 + 249 18 328 330 + 250 18 331 332 + 251 18 331 333 + 252 18 334 335 + 253 18 334 336 + 254 18 337 339 + 255 18 337 338 + 256 18 340 341 + 257 18 340 342 + 258 18 343 344 + 259 18 343 345 + 260 18 346 347 + 261 18 346 348 + 262 18 349 350 + 263 18 349 351 + 264 18 352 353 + 265 18 352 354 + 266 18 355 356 + 267 18 355 357 + 268 18 358 359 + 269 18 358 360 + 270 18 361 362 + 271 18 361 363 + 272 18 364 365 + 273 18 364 366 + 274 18 367 369 + 275 18 367 368 + 276 18 370 372 + 277 18 370 371 + 278 18 373 374 + 279 18 373 375 + 280 18 376 378 + 281 18 376 377 + 282 18 379 381 + 283 18 379 380 + 284 18 382 383 + 285 18 382 384 + 286 18 385 386 + 287 18 385 387 + 288 18 388 390 + 289 18 388 389 + 290 18 391 393 + 291 18 391 392 + 292 18 394 395 + 293 18 394 396 + 294 18 397 399 + 295 18 397 398 + 296 18 400 402 + 297 18 400 401 + 298 18 403 405 + 299 18 403 404 + 300 18 406 407 + 301 18 406 408 + 302 18 409 411 + 303 18 409 410 + 304 18 412 413 + 305 18 412 414 + 306 18 415 417 + 307 18 415 416 + 308 18 418 420 + 309 18 418 419 + 310 18 421 422 + 311 18 421 423 + 312 18 424 425 + 313 18 424 426 + 314 18 427 428 + 315 18 427 429 + 316 18 430 432 + 317 18 430 431 + 318 18 433 435 + 319 18 433 434 + 320 18 436 437 + 321 18 436 438 + 322 18 439 440 + 323 18 439 441 + 324 18 442 443 + 325 18 442 444 + 326 18 445 447 + 327 18 445 446 + 328 18 448 449 + 329 18 448 450 + 330 18 451 453 + 331 18 451 452 + 332 18 454 456 + 333 18 454 455 + 334 18 457 458 + 335 18 457 459 + 336 18 460 462 + 337 18 460 461 + 338 18 463 465 + 339 18 463 464 + 340 18 466 467 + 341 18 466 468 + 342 18 469 470 + 343 18 469 471 + 344 18 472 473 + 345 18 472 474 + 346 18 475 476 + 347 18 475 477 + 348 18 478 479 + 349 18 478 480 + 350 18 481 482 + 351 18 481 483 + 352 18 484 485 + 353 18 484 486 + 354 18 487 489 + 355 18 487 488 + 356 18 490 492 + 357 18 490 491 + 358 18 493 495 + 359 18 493 494 + 360 18 496 497 + 361 18 496 498 + 362 18 499 501 + 363 18 499 500 + 364 18 502 503 + 365 18 502 504 + 366 18 505 507 + 367 18 505 506 + 368 18 508 509 + 369 18 508 510 + 370 18 511 513 + 371 18 511 512 + 372 18 514 516 + 373 18 514 515 + 374 18 517 518 + 375 18 517 519 + 376 18 520 521 + 377 18 520 522 + 378 18 523 525 + 379 18 523 524 + 380 18 526 528 + 381 18 526 527 + 382 18 529 530 + 383 18 529 531 + 384 18 532 533 + 385 18 532 534 + 386 18 535 536 + 387 18 535 537 + 388 18 538 540 + 389 18 538 539 + 390 18 541 542 + 391 18 541 543 + 392 18 544 546 + 393 18 544 545 + 394 18 547 549 + 395 18 547 548 + 396 18 550 551 + 397 18 550 552 + 398 18 553 555 + 399 18 553 554 + 400 18 556 557 + 401 18 556 558 + 402 18 559 561 + 403 18 559 560 + 404 18 562 563 + 405 18 562 564 + 406 18 565 567 + 407 18 565 566 + 408 18 568 570 + 409 18 568 569 + 410 18 571 573 + 411 18 571 572 + 412 18 574 575 + 413 18 574 576 + 414 18 577 579 + 415 18 577 578 + 416 18 580 581 + 417 18 580 582 + 418 18 583 585 + 419 18 583 584 + 420 18 586 588 + 421 18 586 587 + 422 18 589 590 + 423 18 589 591 + 424 18 592 594 + 425 18 592 593 + 426 18 595 597 + 427 18 595 596 + 428 18 598 600 + 429 18 598 599 + 430 18 601 602 + 431 18 601 603 + 432 18 604 606 + 433 18 604 605 + 434 18 607 609 + 435 18 607 608 + 436 18 610 611 + 437 18 610 612 + 438 18 613 615 + 439 18 613 614 + 440 18 616 618 + 441 18 616 617 + 442 18 619 620 + 443 18 619 621 + 444 18 622 623 + 445 18 622 624 + 446 18 625 627 + 447 18 625 626 + 448 18 628 629 + 449 18 628 630 + 450 18 631 632 + 451 18 631 633 + 452 18 634 635 + 453 18 634 636 + 454 18 637 639 + 455 18 637 638 + 456 18 640 642 + 457 18 640 641 + 458 18 643 644 + 459 18 643 645 + 460 18 646 647 + 461 18 646 648 + 462 18 649 650 + 463 18 649 651 + 464 18 652 653 + 465 18 652 654 + 466 18 655 657 + 467 18 655 656 + 468 18 658 660 + 469 18 658 659 + 470 18 661 663 + 471 18 661 662 + 472 18 664 665 + 473 18 664 666 + 474 18 667 669 + 475 18 667 668 + 476 18 670 672 + 477 18 670 671 + 478 18 673 674 + 479 18 673 675 + 480 18 676 677 + 481 18 676 678 + 482 18 679 681 + 483 18 679 680 + 484 18 682 684 + 485 18 682 683 + 486 18 685 686 + 487 18 685 687 + 488 18 688 690 + 489 18 688 689 + 490 18 691 693 + 491 18 691 692 + 492 18 694 695 + 493 18 694 696 + 494 18 697 698 + 495 18 697 699 + 496 18 700 701 + 497 18 700 702 + 498 18 703 704 + 499 18 703 705 + 500 18 706 707 + 501 18 706 708 + 502 18 709 710 + 503 18 709 711 + 504 18 712 714 + 505 18 712 713 + 506 18 715 716 + 507 18 715 717 + 508 18 718 719 + 509 18 718 720 + 510 18 721 722 + 511 18 721 723 + 512 18 724 726 + 513 18 724 725 + 514 18 727 728 + 515 18 727 729 + 516 18 730 731 + 517 18 730 732 + 518 18 733 735 + 519 18 733 734 + 520 18 736 737 + 521 18 736 738 + 522 18 739 741 + 523 18 739 740 + 524 18 742 743 + 525 18 742 744 + 526 18 745 746 + 527 18 745 747 + 528 18 748 750 + 529 18 748 749 + 530 18 751 753 + 531 18 751 752 + 532 18 754 756 + 533 18 754 755 + 534 18 757 758 + 535 18 757 759 + 536 18 760 762 + 537 18 760 761 + 538 18 763 764 + 539 18 763 765 + 540 18 766 767 + 541 18 766 768 + 542 18 769 770 + 543 18 769 771 + 544 18 772 774 + 545 18 772 773 + 546 18 775 777 + 547 18 775 776 + 548 18 778 780 + 549 18 778 779 + 550 18 781 783 + 551 18 781 782 + 552 18 784 786 + 553 18 784 785 + 554 18 787 789 + 555 18 787 788 + 556 18 790 791 + 557 18 790 792 + 558 18 793 795 + 559 18 793 794 + 560 18 796 797 + 561 18 796 798 + 562 18 799 801 + 563 18 799 800 + 564 18 802 803 + 565 18 802 804 + 566 18 805 806 + 567 18 805 807 + 568 18 808 809 + 569 18 808 810 + 570 18 811 813 + 571 18 811 812 + 572 18 814 815 + 573 18 814 816 + 574 18 817 818 + 575 18 817 819 + 576 18 820 821 + 577 18 820 822 + 578 18 823 824 + 579 18 823 825 + 580 18 826 828 + 581 18 826 827 + 582 18 829 830 + 583 18 829 831 + 584 18 832 834 + 585 18 832 833 + 586 18 835 837 + 587 18 835 836 + 588 18 838 839 + 589 18 838 840 + 590 18 841 842 + 591 18 841 843 + 592 18 844 845 + 593 18 844 846 + 594 18 847 848 + 595 18 847 849 + 596 18 850 852 + 597 18 850 851 + 598 18 853 854 + 599 18 853 855 + 600 18 856 858 + 601 18 856 857 + 602 18 859 861 + 603 18 859 860 + 604 18 862 863 + 605 18 862 864 + 606 18 865 866 + 607 18 865 867 + 608 18 868 869 + 609 18 868 870 + 610 18 871 873 + 611 18 871 872 + 612 18 874 875 + 613 18 874 876 + 614 18 877 878 + 615 18 877 879 + 616 18 880 882 + 617 18 880 881 + 618 18 883 884 + 619 18 883 885 + 620 18 886 887 + 621 18 886 888 + 622 18 889 891 + 623 18 889 890 + 624 18 892 894 + 625 18 892 893 + 626 18 895 896 + 627 18 895 897 + 628 18 898 899 + 629 18 898 900 + 630 18 901 903 + 631 18 901 902 + 632 18 904 905 + 633 18 904 906 + 634 18 907 908 + 635 18 907 909 + 636 18 910 911 + 637 18 910 912 + 638 18 913 915 + 639 18 913 914 + 640 18 916 917 + 641 18 916 918 + 642 18 919 920 + 643 18 919 921 + 644 18 922 924 + 645 18 922 923 + 646 18 925 927 + 647 18 925 926 + 648 18 928 930 + 649 18 928 929 + 650 18 931 932 + 651 18 931 933 + 652 18 934 935 + 653 18 934 936 + 654 18 937 939 + 655 18 937 938 + 656 18 940 942 + 657 18 940 941 + 658 18 943 945 + 659 18 943 944 + 660 18 946 948 + 661 18 946 947 + 662 18 949 950 + 663 18 949 951 + 664 18 952 953 + 665 18 952 954 + 666 18 955 956 + 667 18 955 957 + 668 18 958 960 + 669 18 958 959 + 670 18 961 963 + 671 18 961 962 + 672 18 964 965 + 673 18 964 966 + 674 18 967 969 + 675 18 967 968 + 676 18 970 972 + 677 18 970 971 + 678 18 973 975 + 679 18 973 974 + 680 18 976 978 + 681 18 976 977 + 682 18 979 981 + 683 18 979 980 + 684 18 982 983 + 685 18 982 984 + 686 18 985 987 + 687 18 985 986 + 688 18 988 989 + 689 18 988 990 + 690 18 991 993 + 691 18 991 992 + 692 18 994 996 + 693 18 994 995 + 694 18 997 998 + 695 18 997 999 + 696 18 1000 1001 + 697 18 1000 1002 + 698 18 1003 1005 + 699 18 1003 1004 + 700 18 1006 1007 + 701 18 1006 1008 + 702 18 1009 1011 + 703 18 1009 1010 + 704 18 1012 1013 + 705 18 1012 1014 + 706 18 1015 1017 + 707 18 1015 1016 + 708 18 1018 1020 + 709 18 1018 1019 + 710 18 1021 1023 + 711 18 1021 1022 + 712 18 1024 1025 + 713 18 1024 1026 + 714 18 1027 1028 + 715 18 1027 1029 + 716 18 1030 1032 + 717 18 1030 1031 + 718 18 1033 1034 + 719 18 1033 1035 + 720 18 1036 1037 + 721 18 1036 1038 + 722 18 1039 1041 + 723 18 1039 1040 + 724 18 1042 1043 + 725 18 1042 1044 + 726 18 1045 1046 + 727 18 1045 1047 + 728 18 1048 1050 + 729 18 1048 1049 + 730 18 1051 1053 + 731 18 1051 1052 + 732 18 1054 1056 + 733 18 1054 1055 + 734 18 1057 1058 + 735 18 1057 1059 + 736 18 1060 1062 + 737 18 1060 1061 + 738 18 1063 1064 + 739 18 1063 1065 + 740 18 1066 1068 + 741 18 1066 1067 + 742 18 1069 1071 + 743 18 1069 1070 + 744 18 1072 1074 + 745 18 1072 1073 + 746 18 1075 1077 + 747 18 1075 1076 + 748 18 1078 1079 + 749 18 1078 1080 + 750 18 1081 1082 + 751 18 1081 1083 + 752 18 1084 1085 + 753 18 1084 1086 + 754 18 1087 1089 + 755 18 1087 1088 + 756 18 1090 1092 + 757 18 1090 1091 + 758 18 1093 1095 + 759 18 1093 1094 + 760 18 1096 1097 + 761 18 1096 1098 + 762 18 1099 1100 + 763 18 1099 1101 + 764 18 1102 1103 + 765 18 1102 1104 + 766 18 1105 1107 + 767 18 1105 1106 + 768 18 1108 1110 + 769 18 1108 1109 + 770 18 1111 1112 + 771 18 1111 1113 + 772 18 1114 1116 + 773 18 1114 1115 + 774 18 1117 1119 + 775 18 1117 1118 + 776 18 1120 1121 + 777 18 1120 1122 + 778 18 1123 1124 + 779 18 1123 1125 + 780 18 1126 1128 + 781 18 1126 1127 + 782 18 1129 1130 + 783 18 1129 1131 + 784 18 1132 1133 + 785 18 1132 1134 + 786 18 1135 1137 + 787 18 1135 1136 + 788 18 1138 1140 + 789 18 1138 1139 + 790 18 1141 1142 + 791 18 1141 1143 + 792 18 1144 1146 + 793 18 1144 1145 + 794 18 1147 1149 + 795 18 1147 1148 + 796 18 1150 1152 + 797 18 1150 1151 + 798 18 1153 1155 + 799 18 1153 1154 + 800 18 1156 1158 + 801 18 1156 1157 + 802 18 1159 1160 + 803 18 1159 1161 + 804 18 1162 1164 + 805 18 1162 1163 + 806 18 1165 1166 + 807 18 1165 1167 + 808 18 1168 1170 + 809 18 1168 1169 + 810 18 1171 1172 + 811 18 1171 1173 + 812 18 1174 1175 + 813 18 1174 1176 + 814 18 1177 1179 + 815 18 1177 1178 + 816 18 1180 1182 + 817 18 1180 1181 + 818 18 1183 1185 + 819 18 1183 1184 + 820 18 1186 1187 + 821 18 1186 1188 + 822 18 1189 1190 + 823 18 1189 1191 + 824 18 1192 1194 + 825 18 1192 1193 + 826 18 1195 1196 + 827 18 1195 1197 + 828 18 1198 1199 + 829 18 1198 1200 + 830 18 1201 1202 + 831 18 1201 1203 + 832 18 1204 1205 + 833 18 1204 1206 + 834 18 1207 1209 + 835 18 1207 1208 + 836 18 1210 1212 + 837 18 1210 1211 + 838 18 1213 1214 + 839 18 1213 1215 + 840 18 1216 1218 + 841 18 1216 1217 + 842 18 1219 1221 + 843 18 1219 1220 + 844 18 1222 1224 + 845 18 1222 1223 + 846 18 1225 1226 + 847 18 1225 1227 + 848 18 1228 1229 + 849 18 1228 1230 + 850 18 1231 1232 + 851 18 1231 1233 + 852 18 1234 1236 + 853 18 1234 1235 + 854 18 1237 1239 + 855 18 1237 1238 + 856 18 1240 1242 + 857 18 1240 1241 + 858 18 1243 1244 + 859 18 1243 1245 + 860 18 1246 1248 + 861 18 1246 1247 + 862 18 1249 1250 + 863 18 1249 1251 + 864 18 1252 1254 + 865 18 1252 1253 + 866 18 1255 1256 + 867 18 1255 1257 + 868 18 1258 1259 + 869 18 1258 1260 + 870 18 1261 1263 + 871 18 1261 1262 + 872 18 1264 1265 + 873 18 1264 1266 + 874 18 1267 1268 + 875 18 1267 1269 + 876 18 1270 1271 + 877 18 1270 1272 + 878 18 1273 1274 + 879 18 1273 1275 + 880 18 1276 1277 + 881 18 1276 1278 + 882 18 1279 1280 + 883 18 1279 1281 + 884 18 1282 1283 + 885 18 1282 1284 + 886 18 1285 1286 + 887 18 1285 1287 + 888 18 1288 1289 + 889 18 1288 1290 + 890 18 1291 1293 + 891 18 1291 1292 + 892 18 1294 1295 + 893 18 1294 1296 + 894 18 1297 1299 + 895 18 1297 1298 + 896 18 1300 1302 + 897 18 1300 1301 + 898 18 1303 1304 + 899 18 1303 1305 + 900 18 1306 1308 + 901 18 1306 1307 + 902 18 1309 1311 + 903 18 1309 1310 + 904 18 1312 1314 + 905 18 1312 1313 + 906 18 1315 1317 + 907 18 1315 1316 + 908 18 1318 1320 + 909 18 1318 1319 + 910 18 1321 1323 + 911 18 1321 1322 + 912 18 1324 1325 + 913 18 1324 1326 + 914 18 1327 1329 + 915 18 1327 1328 + 916 18 1330 1332 + 917 18 1330 1331 + 918 18 1333 1334 + 919 18 1333 1335 + 920 18 1336 1337 + 921 18 1336 1338 + 922 18 1339 1340 + 923 18 1339 1341 + 924 18 1342 1344 + 925 18 1342 1343 + 926 18 1345 1347 + 927 18 1345 1346 + 928 18 1348 1350 + 929 18 1348 1349 + 930 18 1351 1352 + 931 18 1351 1353 + 932 18 1354 1355 + 933 18 1354 1356 + 934 18 1357 1358 + 935 18 1357 1359 + 936 18 1360 1362 + 937 18 1360 1361 + 938 18 1363 1365 + 939 18 1363 1364 + 940 18 1366 1368 + 941 18 1366 1367 + 942 18 1369 1370 + 943 18 1369 1371 + 944 18 1372 1373 + 945 18 1372 1374 + 946 18 1375 1377 + 947 18 1375 1376 + 948 18 1378 1379 + 949 18 1378 1380 + 950 18 1381 1382 + 951 18 1381 1383 + 952 18 1384 1385 + 953 18 1384 1386 + 954 18 1387 1388 + 955 18 1387 1389 + 956 18 1390 1392 + 957 18 1390 1391 + 958 18 1393 1395 + 959 18 1393 1394 + 960 18 1396 1397 + 961 18 1396 1398 + 962 18 1399 1401 + 963 18 1399 1400 + 964 18 1402 1403 + 965 18 1402 1404 + 966 18 1405 1406 + 967 18 1405 1407 + 968 18 1408 1409 + 969 18 1408 1410 + 970 18 1411 1412 + 971 18 1411 1413 + 972 18 1414 1416 + 973 18 1414 1415 + 974 18 1417 1419 + 975 18 1417 1418 + 976 18 1420 1422 + 977 18 1420 1421 + 978 18 1423 1425 + 979 18 1423 1424 + 980 18 1426 1428 + 981 18 1426 1427 + 982 18 1429 1430 + 983 18 1429 1431 + 984 18 1432 1434 + 985 18 1432 1433 + 986 18 1435 1436 + 987 18 1435 1437 + 988 18 1438 1439 + 989 18 1438 1440 + 990 18 1441 1442 + 991 18 1441 1443 + 992 18 1444 1445 + 993 18 1444 1446 + 994 18 1447 1448 + 995 18 1447 1449 + 996 18 1450 1451 + 997 18 1450 1452 + 998 18 1453 1455 + 999 18 1453 1454 + 1000 18 1456 1457 + 1001 18 1456 1458 + 1002 18 1459 1461 + 1003 18 1459 1460 + 1004 18 1462 1463 + 1005 18 1462 1464 + 1006 18 1465 1466 + 1007 18 1465 1467 + 1008 18 1468 1470 + 1009 18 1468 1469 + 1010 18 1471 1472 + 1011 18 1471 1473 + 1012 18 1474 1476 + 1013 18 1474 1475 + 1014 18 1477 1478 + 1015 18 1477 1479 + 1016 18 1480 1482 + 1017 18 1480 1481 + 1018 18 1483 1485 + 1019 18 1483 1484 + 1020 18 1486 1488 + 1021 18 1486 1487 + 1022 18 1489 1491 + 1023 18 1489 1490 + 1024 18 1492 1493 + 1025 18 1492 1494 + 1026 18 1495 1496 + 1027 18 1495 1497 + 1028 18 1498 1499 + 1029 18 1498 1500 + 1030 18 1501 1502 + 1031 18 1501 1503 + 1032 18 1504 1505 + 1033 18 1504 1506 + 1034 18 1507 1509 + 1035 18 1507 1508 + 1036 18 1510 1512 + 1037 18 1510 1511 + 1038 18 1513 1515 + 1039 18 1513 1514 + 1040 18 1516 1518 + 1041 18 1516 1517 + 1042 18 1519 1520 + 1043 18 1519 1521 + 1044 18 1522 1524 + 1045 18 1522 1523 + 1046 18 1525 1526 + 1047 18 1525 1527 + 1048 18 1528 1529 + 1049 18 1528 1530 + 1050 18 1531 1533 + 1051 18 1531 1532 + 1052 18 1534 1536 + 1053 18 1534 1535 + 1054 18 1537 1539 + 1055 18 1537 1538 + 1056 18 1540 1541 + 1057 18 1540 1542 + 1058 18 1543 1545 + 1059 18 1543 1544 + 1060 18 1546 1547 + 1061 18 1546 1548 + 1062 18 1549 1551 + 1063 18 1549 1550 + 1064 18 1552 1553 + 1065 18 1552 1554 + 1066 18 1555 1557 + 1067 18 1555 1556 + 1068 18 1558 1559 + 1069 18 1558 1560 + 1070 18 1561 1562 + 1071 18 1561 1563 + 1072 18 1564 1565 + 1073 18 1564 1566 + 1074 18 1567 1569 + 1075 18 1567 1568 + 1076 18 1570 1571 + 1077 18 1570 1572 + 1078 18 1573 1575 + 1079 18 1573 1574 + 1080 18 1576 1578 + 1081 18 1576 1577 + 1082 18 1579 1581 + 1083 18 1579 1580 + 1084 18 1582 1584 + 1085 18 1582 1583 + 1086 18 1585 1586 + 1087 18 1585 1587 + 1088 18 1588 1590 + 1089 18 1588 1589 + 1090 18 1591 1592 + 1091 18 1591 1593 + 1092 18 1594 1596 + 1093 18 1594 1595 + 1094 18 1597 1598 + 1095 18 1597 1599 + 1096 18 1600 1602 + 1097 18 1600 1601 + 1098 18 1603 1605 + 1099 18 1603 1604 + 1100 18 1606 1608 + 1101 18 1606 1607 + 1102 18 1609 1610 + 1103 18 1609 1611 + 1104 18 1612 1614 + 1105 18 1612 1613 + 1106 18 1615 1617 + 1107 18 1615 1616 + 1108 18 1618 1620 + 1109 18 1618 1619 + 1110 18 1621 1623 + 1111 18 1621 1622 + 1112 18 1624 1625 + 1113 18 1624 1626 + 1114 18 1627 1629 + 1115 18 1627 1628 + 1116 18 1630 1631 + 1117 18 1630 1632 + 1118 18 1633 1635 + 1119 18 1633 1634 + 1120 18 1636 1637 + 1121 18 1636 1638 + 1122 18 1639 1641 + 1123 18 1639 1640 + 1124 18 1642 1643 + 1125 18 1642 1644 + 1126 18 1645 1646 + 1127 18 1645 1647 + 1128 18 1648 1650 + 1129 18 1648 1649 + 1130 18 1651 1653 + 1131 18 1651 1652 + 1132 18 1654 1656 + 1133 18 1654 1655 + 1134 18 1657 1658 + 1135 18 1657 1659 + 1136 18 1660 1661 + 1137 18 1660 1662 + 1138 18 1663 1664 + 1139 18 1663 1665 + 1140 18 1666 1668 + 1141 18 1666 1667 + 1142 18 1669 1670 + 1143 18 1669 1671 + 1144 18 1672 1674 + 1145 18 1672 1673 + 1146 18 1675 1676 + 1147 18 1675 1677 + 1148 18 1678 1680 + 1149 18 1678 1679 + 1150 18 1681 1683 + 1151 18 1681 1682 + 1152 18 1684 1685 + 1153 18 1684 1686 + 1154 18 1687 1688 + 1155 18 1687 1689 + 1156 18 1690 1691 + 1157 18 1690 1692 + 1158 18 1693 1695 + 1159 18 1693 1694 + 1160 18 1696 1697 + 1161 18 1696 1698 + 1162 18 1699 1701 + 1163 18 1699 1700 + 1164 18 1702 1703 + 1165 18 1702 1704 + 1166 18 1705 1707 + 1167 18 1705 1706 + 1168 18 1708 1709 + 1169 18 1708 1710 + 1170 18 1711 1712 + 1171 18 1711 1713 + 1172 18 1714 1716 + 1173 18 1714 1715 + 1174 18 1717 1718 + 1175 18 1717 1719 + 1176 18 1720 1721 + 1177 18 1720 1722 + 1178 18 1723 1724 + 1179 18 1723 1725 + 1180 18 1726 1727 + 1181 18 1726 1728 + 1182 18 1729 1730 + 1183 18 1729 1731 + 1184 18 1732 1734 + 1185 18 1732 1733 + 1186 18 1735 1737 + 1187 18 1735 1736 + 1188 18 1738 1740 + 1189 18 1738 1739 + 1190 18 1741 1743 + 1191 18 1741 1742 + 1192 18 1744 1745 + 1193 18 1744 1746 + 1194 18 1747 1749 + 1195 18 1747 1748 + 1196 18 1750 1751 + 1197 18 1750 1752 + 1198 18 1753 1755 + 1199 18 1753 1754 + 1200 18 1756 1758 + 1201 18 1756 1757 + 1202 18 1759 1760 + 1203 18 1759 1761 + 1204 18 1762 1764 + 1205 18 1762 1763 + 1206 18 1765 1767 + 1207 18 1765 1766 + 1208 18 1768 1769 + 1209 18 1768 1770 + 1210 18 1771 1773 + 1211 18 1771 1772 + 1212 18 1774 1776 + 1213 18 1774 1775 + 1214 18 1777 1779 + 1215 18 1777 1778 + 1216 18 1780 1781 + 1217 18 1780 1782 + 1218 18 1783 1784 + 1219 18 1783 1785 + 1220 18 1786 1787 + 1221 18 1786 1788 + 1222 18 1789 1790 + 1223 18 1789 1791 + 1224 18 1792 1793 + 1225 18 1792 1794 + 1226 18 1795 1796 + 1227 18 1795 1797 + 1228 18 1798 1799 + 1229 18 1798 1800 + 1230 18 1801 1803 + 1231 18 1801 1802 + 1232 18 1804 1806 + 1233 18 1804 1805 + 1234 18 1807 1809 + 1235 18 1807 1808 + 1236 18 1810 1812 + 1237 18 1810 1811 + 1238 18 1813 1815 + 1239 18 1813 1814 + 1240 18 1816 1818 + 1241 18 1816 1817 + 1242 18 1819 1821 + 1243 18 1819 1820 + 1244 18 1822 1823 + 1245 18 1822 1824 + 1246 18 1825 1827 + 1247 18 1825 1826 + 1248 18 1828 1830 + 1249 18 1828 1829 + 1250 18 1831 1832 + 1251 18 1831 1833 + 1252 18 1834 1835 + 1253 18 1834 1836 + 1254 18 1837 1838 + 1255 18 1837 1839 + 1256 18 1840 1842 + 1257 18 1840 1841 + 1258 18 1843 1845 + 1259 18 1843 1844 + 1260 18 1846 1848 + 1261 18 1846 1847 + 1262 18 1849 1851 + 1263 18 1849 1850 + 1264 18 1852 1854 + 1265 18 1852 1853 + 1266 18 1855 1856 + 1267 18 1855 1857 + 1268 18 1858 1859 + 1269 18 1858 1860 + 1270 18 1861 1862 + 1271 18 1861 1863 + 1272 18 1864 1866 + 1273 18 1864 1865 + 1274 18 1867 1869 + 1275 18 1867 1868 + 1276 18 1870 1871 + 1277 18 1870 1872 + 1278 18 1873 1874 + 1279 18 1873 1875 + 1280 18 1876 1877 + 1281 18 1876 1878 + 1282 18 1879 1881 + 1283 18 1879 1880 + 1284 18 1882 1883 + 1285 18 1882 1884 + 1286 18 1885 1886 + 1287 18 1885 1887 + 1288 18 1888 1890 + 1289 18 1888 1889 + 1290 18 1891 1892 + 1291 18 1891 1893 + 1292 18 1894 1896 + 1293 18 1894 1895 + 1294 18 1897 1898 + 1295 18 1897 1899 + 1296 18 1900 1902 + 1297 18 1900 1901 + 1298 18 1903 1905 + 1299 18 1903 1904 + 1300 18 1906 1908 + 1301 18 1906 1907 + 1302 18 1909 1911 + 1303 18 1909 1910 + 1304 18 1912 1913 + 1305 18 1912 1914 + 1306 18 1915 1916 + 1307 18 1915 1917 + 1308 18 1918 1920 + 1309 18 1918 1919 + 1310 18 1921 1923 + 1311 18 1921 1922 + 1312 18 1924 1926 + 1313 18 1924 1925 + 1314 18 1927 1929 + 1315 18 1927 1928 + 1316 18 1930 1932 + 1317 18 1930 1931 + 1318 18 1933 1935 + 1319 18 1933 1934 + 1320 18 1936 1937 + 1321 18 1936 1938 + 1322 18 1939 1940 + 1323 18 1939 1941 + 1324 18 1942 1944 + 1325 18 1942 1943 + 1326 18 1945 1947 + 1327 18 1945 1946 + 1328 18 1948 1950 + 1329 18 1948 1949 + 1330 18 1951 1953 + 1331 18 1951 1952 + 1332 18 1954 1955 + 1333 18 1954 1956 + 1334 18 1957 1959 + 1335 18 1957 1958 + 1336 18 1960 1961 + 1337 18 1960 1962 + 1338 18 1963 1965 + 1339 18 1963 1964 + 1340 18 1966 1967 + 1341 18 1966 1968 + 1342 18 1969 1970 + 1343 18 1969 1971 + 1344 18 1972 1974 + 1345 18 1972 1973 + 1346 18 1975 1977 + 1347 18 1975 1976 + 1348 18 1978 1979 + 1349 18 1978 1980 + 1350 18 1981 1982 + 1351 18 1981 1983 + 1352 18 1984 1986 + 1353 18 1984 1985 + 1354 18 1987 1988 + 1355 18 1987 1989 + 1356 18 1990 1992 + 1357 18 1990 1991 + 1358 18 1993 1995 + 1359 18 1993 1994 + 1360 18 1996 1998 + 1361 18 1996 1997 + 1362 18 1999 2000 + 1363 18 1999 2001 + 1364 18 2002 2004 + 1365 18 2002 2003 + +Angles + + 1 5 2 1 7 + 2 4 2 1 3 + 3 6 3 1 7 + 4 7 4 2 5 + 5 7 5 2 6 + 6 1 1 2 5 + 7 1 1 2 6 + 8 1 1 2 4 + 9 7 4 2 6 + 10 2 1 7 8 + 11 3 1 7 19 + 12 11 8 7 19 + 13 9 7 8 11 + 14 8 7 8 9 + 15 16 11 8 20 + 16 15 9 8 20 + 17 14 9 8 11 + 18 10 7 8 20 + 19 5 8 9 28 + 20 4 8 9 10 + 21 6 10 9 28 + 22 18 12 11 22 + 23 23 21 11 22 + 24 12 8 11 12 + 25 13 8 11 21 + 26 18 12 11 21 + 27 13 8 11 22 + 28 19 13 12 14 + 29 17 11 12 14 + 30 17 11 12 13 + 31 20 15 13 23 + 32 20 12 13 23 + 33 19 12 13 15 + 34 20 12 14 24 + 35 20 16 14 24 + 36 19 12 14 16 + 37 20 13 15 25 + 38 20 17 15 25 + 39 19 13 15 17 + 40 20 14 16 26 + 41 19 14 16 17 + 42 20 17 16 26 + 43 21 15 17 18 + 44 19 15 17 16 + 45 21 16 17 18 + 46 22 17 18 27 + 47 2 9 28 29 + 48 3 9 28 32 + 49 11 29 28 32 + 50 15 30 29 34 + 51 10 28 29 33 + 52 10 28 29 34 + 53 15 30 29 33 + 54 24 33 29 34 + 55 8 28 29 30 + 56 6 31 30 35 + 57 5 29 30 35 + 58 4 29 30 31 + 59 2 30 35 36 + 60 3 30 35 39 + 61 11 36 35 39 + 62 8 35 36 37 + 63 10 35 36 41 + 64 10 35 36 40 + 65 24 40 36 41 + 66 15 37 36 40 + 67 15 37 36 41 + 68 6 38 37 42 + 69 5 36 37 42 + 70 4 36 37 38 + 71 11 43 42 53 + 72 2 37 42 43 + 73 3 37 42 53 + 74 10 42 43 54 + 75 16 46 43 54 + 76 14 44 43 46 + 77 9 42 43 46 + 78 8 42 43 44 + 79 15 44 43 54 + 80 5 43 44 62 + 81 6 45 44 62 + 82 4 43 44 45 + 83 13 43 46 55 + 84 13 43 46 56 + 85 12 43 46 47 + 86 23 55 46 56 + 87 18 47 46 56 + 88 18 47 46 55 + 89 17 46 47 49 + 90 17 46 47 48 + 91 19 48 47 49 + 92 20 50 48 57 + 93 19 47 48 50 + 94 20 47 48 57 + 95 20 51 49 58 + 96 19 47 49 51 + 97 20 47 49 58 + 98 20 48 50 59 + 99 19 48 50 52 + 100 20 52 50 59 + 101 20 52 51 60 + 102 20 49 51 60 + 103 19 49 51 52 + 104 20 50 52 61 + 105 19 50 52 51 + 106 20 51 52 61 + 107 2 44 62 63 + 108 3 44 62 70 + 109 11 63 62 70 + 110 16 66 63 71 + 111 15 64 63 71 + 112 14 64 63 66 + 113 10 62 63 71 + 114 9 62 63 66 + 115 8 62 63 64 + 116 4 63 64 65 + 117 6 65 64 79 + 118 5 63 64 79 + 119 23 72 66 73 + 120 27 67 66 73 + 121 27 67 66 72 + 122 25 63 66 67 + 123 13 63 66 73 + 124 13 63 66 72 + 125 29 68 67 75 + 126 23 74 67 75 + 127 29 68 67 74 + 128 26 66 67 68 + 129 27 66 67 74 + 130 27 66 67 75 + 131 28 67 68 69 + 132 29 68 69 76 + 133 29 68 69 77 + 134 29 68 69 78 + 135 7 76 69 78 + 136 7 76 69 77 + 137 7 77 69 78 + 138 3 64 79 81 + 139 2 64 79 80 + 140 11 80 79 81 + 141 7 83 80 84 + 142 30 79 80 84 + 143 7 82 80 83 + 144 30 79 80 83 + 145 30 79 80 82 + 146 7 82 80 84 + 147 31 86 85 87 + 148 31 89 88 90 + 149 31 92 91 93 + 150 31 95 94 96 + 151 31 98 97 99 + 152 31 101 100 102 + 153 31 104 103 105 + 154 31 107 106 108 + 155 31 110 109 111 + 156 31 113 112 114 + 157 31 116 115 117 + 158 31 119 118 120 + 159 31 122 121 123 + 160 31 125 124 126 + 161 31 128 127 129 + 162 31 131 130 132 + 163 31 134 133 135 + 164 31 137 136 138 + 165 31 140 139 141 + 166 31 143 142 144 + 167 31 146 145 147 + 168 31 149 148 150 + 169 31 152 151 153 + 170 31 155 154 156 + 171 31 158 157 159 + 172 31 161 160 162 + 173 31 164 163 165 + 174 31 167 166 168 + 175 31 170 169 171 + 176 31 173 172 174 + 177 31 176 175 177 + 178 31 179 178 180 + 179 31 182 181 183 + 180 31 185 184 186 + 181 31 188 187 189 + 182 31 191 190 192 + 183 31 194 193 195 + 184 31 197 196 198 + 185 31 200 199 201 + 186 31 203 202 204 + 187 31 206 205 207 + 188 31 209 208 210 + 189 31 212 211 213 + 190 31 215 214 216 + 191 31 218 217 219 + 192 31 221 220 222 + 193 31 224 223 225 + 194 31 227 226 228 + 195 31 230 229 231 + 196 31 233 232 234 + 197 31 236 235 237 + 198 31 239 238 240 + 199 31 242 241 243 + 200 31 245 244 246 + 201 31 248 247 249 + 202 31 251 250 252 + 203 31 254 253 255 + 204 31 257 256 258 + 205 31 260 259 261 + 206 31 263 262 264 + 207 31 266 265 267 + 208 31 269 268 270 + 209 31 272 271 273 + 210 31 275 274 276 + 211 31 278 277 279 + 212 31 281 280 282 + 213 31 284 283 285 + 214 31 287 286 288 + 215 31 290 289 291 + 216 31 293 292 294 + 217 31 296 295 297 + 218 31 299 298 300 + 219 31 302 301 303 + 220 31 305 304 306 + 221 31 308 307 309 + 222 31 311 310 312 + 223 31 314 313 315 + 224 31 317 316 318 + 225 31 320 319 321 + 226 31 323 322 324 + 227 31 326 325 327 + 228 31 329 328 330 + 229 31 332 331 333 + 230 31 335 334 336 + 231 31 338 337 339 + 232 31 341 340 342 + 233 31 344 343 345 + 234 31 347 346 348 + 235 31 350 349 351 + 236 31 353 352 354 + 237 31 356 355 357 + 238 31 359 358 360 + 239 31 362 361 363 + 240 31 365 364 366 + 241 31 368 367 369 + 242 31 371 370 372 + 243 31 374 373 375 + 244 31 377 376 378 + 245 31 380 379 381 + 246 31 383 382 384 + 247 31 386 385 387 + 248 31 389 388 390 + 249 31 392 391 393 + 250 31 395 394 396 + 251 31 398 397 399 + 252 31 401 400 402 + 253 31 404 403 405 + 254 31 407 406 408 + 255 31 410 409 411 + 256 31 413 412 414 + 257 31 416 415 417 + 258 31 419 418 420 + 259 31 422 421 423 + 260 31 425 424 426 + 261 31 428 427 429 + 262 31 431 430 432 + 263 31 434 433 435 + 264 31 437 436 438 + 265 31 440 439 441 + 266 31 443 442 444 + 267 31 446 445 447 + 268 31 449 448 450 + 269 31 452 451 453 + 270 31 455 454 456 + 271 31 458 457 459 + 272 31 461 460 462 + 273 31 464 463 465 + 274 31 467 466 468 + 275 31 470 469 471 + 276 31 473 472 474 + 277 31 476 475 477 + 278 31 479 478 480 + 279 31 482 481 483 + 280 31 485 484 486 + 281 31 488 487 489 + 282 31 491 490 492 + 283 31 494 493 495 + 284 31 497 496 498 + 285 31 500 499 501 + 286 31 503 502 504 + 287 31 506 505 507 + 288 31 509 508 510 + 289 31 512 511 513 + 290 31 515 514 516 + 291 31 518 517 519 + 292 31 521 520 522 + 293 31 524 523 525 + 294 31 527 526 528 + 295 31 530 529 531 + 296 31 533 532 534 + 297 31 536 535 537 + 298 31 539 538 540 + 299 31 542 541 543 + 300 31 545 544 546 + 301 31 548 547 549 + 302 31 551 550 552 + 303 31 554 553 555 + 304 31 557 556 558 + 305 31 560 559 561 + 306 31 563 562 564 + 307 31 566 565 567 + 308 31 569 568 570 + 309 31 572 571 573 + 310 31 575 574 576 + 311 31 578 577 579 + 312 31 581 580 582 + 313 31 584 583 585 + 314 31 587 586 588 + 315 31 590 589 591 + 316 31 593 592 594 + 317 31 596 595 597 + 318 31 599 598 600 + 319 31 602 601 603 + 320 31 605 604 606 + 321 31 608 607 609 + 322 31 611 610 612 + 323 31 614 613 615 + 324 31 617 616 618 + 325 31 620 619 621 + 326 31 623 622 624 + 327 31 626 625 627 + 328 31 629 628 630 + 329 31 632 631 633 + 330 31 635 634 636 + 331 31 638 637 639 + 332 31 641 640 642 + 333 31 644 643 645 + 334 31 647 646 648 + 335 31 650 649 651 + 336 31 653 652 654 + 337 31 656 655 657 + 338 31 659 658 660 + 339 31 662 661 663 + 340 31 665 664 666 + 341 31 668 667 669 + 342 31 671 670 672 + 343 31 674 673 675 + 344 31 677 676 678 + 345 31 680 679 681 + 346 31 683 682 684 + 347 31 686 685 687 + 348 31 689 688 690 + 349 31 692 691 693 + 350 31 695 694 696 + 351 31 698 697 699 + 352 31 701 700 702 + 353 31 704 703 705 + 354 31 707 706 708 + 355 31 710 709 711 + 356 31 713 712 714 + 357 31 716 715 717 + 358 31 719 718 720 + 359 31 722 721 723 + 360 31 725 724 726 + 361 31 728 727 729 + 362 31 731 730 732 + 363 31 734 733 735 + 364 31 737 736 738 + 365 31 740 739 741 + 366 31 743 742 744 + 367 31 746 745 747 + 368 31 749 748 750 + 369 31 752 751 753 + 370 31 755 754 756 + 371 31 758 757 759 + 372 31 761 760 762 + 373 31 764 763 765 + 374 31 767 766 768 + 375 31 770 769 771 + 376 31 773 772 774 + 377 31 776 775 777 + 378 31 779 778 780 + 379 31 782 781 783 + 380 31 785 784 786 + 381 31 788 787 789 + 382 31 791 790 792 + 383 31 794 793 795 + 384 31 797 796 798 + 385 31 800 799 801 + 386 31 803 802 804 + 387 31 806 805 807 + 388 31 809 808 810 + 389 31 812 811 813 + 390 31 815 814 816 + 391 31 818 817 819 + 392 31 821 820 822 + 393 31 824 823 825 + 394 31 827 826 828 + 395 31 830 829 831 + 396 31 833 832 834 + 397 31 836 835 837 + 398 31 839 838 840 + 399 31 842 841 843 + 400 31 845 844 846 + 401 31 848 847 849 + 402 31 851 850 852 + 403 31 854 853 855 + 404 31 857 856 858 + 405 31 860 859 861 + 406 31 863 862 864 + 407 31 866 865 867 + 408 31 869 868 870 + 409 31 872 871 873 + 410 31 875 874 876 + 411 31 878 877 879 + 412 31 881 880 882 + 413 31 884 883 885 + 414 31 887 886 888 + 415 31 890 889 891 + 416 31 893 892 894 + 417 31 896 895 897 + 418 31 899 898 900 + 419 31 902 901 903 + 420 31 905 904 906 + 421 31 908 907 909 + 422 31 911 910 912 + 423 31 914 913 915 + 424 31 917 916 918 + 425 31 920 919 921 + 426 31 923 922 924 + 427 31 926 925 927 + 428 31 929 928 930 + 429 31 932 931 933 + 430 31 935 934 936 + 431 31 938 937 939 + 432 31 941 940 942 + 433 31 944 943 945 + 434 31 947 946 948 + 435 31 950 949 951 + 436 31 953 952 954 + 437 31 956 955 957 + 438 31 959 958 960 + 439 31 962 961 963 + 440 31 965 964 966 + 441 31 968 967 969 + 442 31 971 970 972 + 443 31 974 973 975 + 444 31 977 976 978 + 445 31 980 979 981 + 446 31 983 982 984 + 447 31 986 985 987 + 448 31 989 988 990 + 449 31 992 991 993 + 450 31 995 994 996 + 451 31 998 997 999 + 452 31 1001 1000 1002 + 453 31 1004 1003 1005 + 454 31 1007 1006 1008 + 455 31 1010 1009 1011 + 456 31 1013 1012 1014 + 457 31 1016 1015 1017 + 458 31 1019 1018 1020 + 459 31 1022 1021 1023 + 460 31 1025 1024 1026 + 461 31 1028 1027 1029 + 462 31 1031 1030 1032 + 463 31 1034 1033 1035 + 464 31 1037 1036 1038 + 465 31 1040 1039 1041 + 466 31 1043 1042 1044 + 467 31 1046 1045 1047 + 468 31 1049 1048 1050 + 469 31 1052 1051 1053 + 470 31 1055 1054 1056 + 471 31 1058 1057 1059 + 472 31 1061 1060 1062 + 473 31 1064 1063 1065 + 474 31 1067 1066 1068 + 475 31 1070 1069 1071 + 476 31 1073 1072 1074 + 477 31 1076 1075 1077 + 478 31 1079 1078 1080 + 479 31 1082 1081 1083 + 480 31 1085 1084 1086 + 481 31 1088 1087 1089 + 482 31 1091 1090 1092 + 483 31 1094 1093 1095 + 484 31 1097 1096 1098 + 485 31 1100 1099 1101 + 486 31 1103 1102 1104 + 487 31 1106 1105 1107 + 488 31 1109 1108 1110 + 489 31 1112 1111 1113 + 490 31 1115 1114 1116 + 491 31 1118 1117 1119 + 492 31 1121 1120 1122 + 493 31 1124 1123 1125 + 494 31 1127 1126 1128 + 495 31 1130 1129 1131 + 496 31 1133 1132 1134 + 497 31 1136 1135 1137 + 498 31 1139 1138 1140 + 499 31 1142 1141 1143 + 500 31 1145 1144 1146 + 501 31 1148 1147 1149 + 502 31 1151 1150 1152 + 503 31 1154 1153 1155 + 504 31 1157 1156 1158 + 505 31 1160 1159 1161 + 506 31 1163 1162 1164 + 507 31 1166 1165 1167 + 508 31 1169 1168 1170 + 509 31 1172 1171 1173 + 510 31 1175 1174 1176 + 511 31 1178 1177 1179 + 512 31 1181 1180 1182 + 513 31 1184 1183 1185 + 514 31 1187 1186 1188 + 515 31 1190 1189 1191 + 516 31 1193 1192 1194 + 517 31 1196 1195 1197 + 518 31 1199 1198 1200 + 519 31 1202 1201 1203 + 520 31 1205 1204 1206 + 521 31 1208 1207 1209 + 522 31 1211 1210 1212 + 523 31 1214 1213 1215 + 524 31 1217 1216 1218 + 525 31 1220 1219 1221 + 526 31 1223 1222 1224 + 527 31 1226 1225 1227 + 528 31 1229 1228 1230 + 529 31 1232 1231 1233 + 530 31 1235 1234 1236 + 531 31 1238 1237 1239 + 532 31 1241 1240 1242 + 533 31 1244 1243 1245 + 534 31 1247 1246 1248 + 535 31 1250 1249 1251 + 536 31 1253 1252 1254 + 537 31 1256 1255 1257 + 538 31 1259 1258 1260 + 539 31 1262 1261 1263 + 540 31 1265 1264 1266 + 541 31 1268 1267 1269 + 542 31 1271 1270 1272 + 543 31 1274 1273 1275 + 544 31 1277 1276 1278 + 545 31 1280 1279 1281 + 546 31 1283 1282 1284 + 547 31 1286 1285 1287 + 548 31 1289 1288 1290 + 549 31 1292 1291 1293 + 550 31 1295 1294 1296 + 551 31 1298 1297 1299 + 552 31 1301 1300 1302 + 553 31 1304 1303 1305 + 554 31 1307 1306 1308 + 555 31 1310 1309 1311 + 556 31 1313 1312 1314 + 557 31 1316 1315 1317 + 558 31 1319 1318 1320 + 559 31 1322 1321 1323 + 560 31 1325 1324 1326 + 561 31 1328 1327 1329 + 562 31 1331 1330 1332 + 563 31 1334 1333 1335 + 564 31 1337 1336 1338 + 565 31 1340 1339 1341 + 566 31 1343 1342 1344 + 567 31 1346 1345 1347 + 568 31 1349 1348 1350 + 569 31 1352 1351 1353 + 570 31 1355 1354 1356 + 571 31 1358 1357 1359 + 572 31 1361 1360 1362 + 573 31 1364 1363 1365 + 574 31 1367 1366 1368 + 575 31 1370 1369 1371 + 576 31 1373 1372 1374 + 577 31 1376 1375 1377 + 578 31 1379 1378 1380 + 579 31 1382 1381 1383 + 580 31 1385 1384 1386 + 581 31 1388 1387 1389 + 582 31 1391 1390 1392 + 583 31 1394 1393 1395 + 584 31 1397 1396 1398 + 585 31 1400 1399 1401 + 586 31 1403 1402 1404 + 587 31 1406 1405 1407 + 588 31 1409 1408 1410 + 589 31 1412 1411 1413 + 590 31 1415 1414 1416 + 591 31 1418 1417 1419 + 592 31 1421 1420 1422 + 593 31 1424 1423 1425 + 594 31 1427 1426 1428 + 595 31 1430 1429 1431 + 596 31 1433 1432 1434 + 597 31 1436 1435 1437 + 598 31 1439 1438 1440 + 599 31 1442 1441 1443 + 600 31 1445 1444 1446 + 601 31 1448 1447 1449 + 602 31 1451 1450 1452 + 603 31 1454 1453 1455 + 604 31 1457 1456 1458 + 605 31 1460 1459 1461 + 606 31 1463 1462 1464 + 607 31 1466 1465 1467 + 608 31 1469 1468 1470 + 609 31 1472 1471 1473 + 610 31 1475 1474 1476 + 611 31 1478 1477 1479 + 612 31 1481 1480 1482 + 613 31 1484 1483 1485 + 614 31 1487 1486 1488 + 615 31 1490 1489 1491 + 616 31 1493 1492 1494 + 617 31 1496 1495 1497 + 618 31 1499 1498 1500 + 619 31 1502 1501 1503 + 620 31 1505 1504 1506 + 621 31 1508 1507 1509 + 622 31 1511 1510 1512 + 623 31 1514 1513 1515 + 624 31 1517 1516 1518 + 625 31 1520 1519 1521 + 626 31 1523 1522 1524 + 627 31 1526 1525 1527 + 628 31 1529 1528 1530 + 629 31 1532 1531 1533 + 630 31 1535 1534 1536 + 631 31 1538 1537 1539 + 632 31 1541 1540 1542 + 633 31 1544 1543 1545 + 634 31 1547 1546 1548 + 635 31 1550 1549 1551 + 636 31 1553 1552 1554 + 637 31 1556 1555 1557 + 638 31 1559 1558 1560 + 639 31 1562 1561 1563 + 640 31 1565 1564 1566 + 641 31 1568 1567 1569 + 642 31 1571 1570 1572 + 643 31 1574 1573 1575 + 644 31 1577 1576 1578 + 645 31 1580 1579 1581 + 646 31 1583 1582 1584 + 647 31 1586 1585 1587 + 648 31 1589 1588 1590 + 649 31 1592 1591 1593 + 650 31 1595 1594 1596 + 651 31 1598 1597 1599 + 652 31 1601 1600 1602 + 653 31 1604 1603 1605 + 654 31 1607 1606 1608 + 655 31 1610 1609 1611 + 656 31 1613 1612 1614 + 657 31 1616 1615 1617 + 658 31 1619 1618 1620 + 659 31 1622 1621 1623 + 660 31 1625 1624 1626 + 661 31 1628 1627 1629 + 662 31 1631 1630 1632 + 663 31 1634 1633 1635 + 664 31 1637 1636 1638 + 665 31 1640 1639 1641 + 666 31 1643 1642 1644 + 667 31 1646 1645 1647 + 668 31 1649 1648 1650 + 669 31 1652 1651 1653 + 670 31 1655 1654 1656 + 671 31 1658 1657 1659 + 672 31 1661 1660 1662 + 673 31 1664 1663 1665 + 674 31 1667 1666 1668 + 675 31 1670 1669 1671 + 676 31 1673 1672 1674 + 677 31 1676 1675 1677 + 678 31 1679 1678 1680 + 679 31 1682 1681 1683 + 680 31 1685 1684 1686 + 681 31 1688 1687 1689 + 682 31 1691 1690 1692 + 683 31 1694 1693 1695 + 684 31 1697 1696 1698 + 685 31 1700 1699 1701 + 686 31 1703 1702 1704 + 687 31 1706 1705 1707 + 688 31 1709 1708 1710 + 689 31 1712 1711 1713 + 690 31 1715 1714 1716 + 691 31 1718 1717 1719 + 692 31 1721 1720 1722 + 693 31 1724 1723 1725 + 694 31 1727 1726 1728 + 695 31 1730 1729 1731 + 696 31 1733 1732 1734 + 697 31 1736 1735 1737 + 698 31 1739 1738 1740 + 699 31 1742 1741 1743 + 700 31 1745 1744 1746 + 701 31 1748 1747 1749 + 702 31 1751 1750 1752 + 703 31 1754 1753 1755 + 704 31 1757 1756 1758 + 705 31 1760 1759 1761 + 706 31 1763 1762 1764 + 707 31 1766 1765 1767 + 708 31 1769 1768 1770 + 709 31 1772 1771 1773 + 710 31 1775 1774 1776 + 711 31 1778 1777 1779 + 712 31 1781 1780 1782 + 713 31 1784 1783 1785 + 714 31 1787 1786 1788 + 715 31 1790 1789 1791 + 716 31 1793 1792 1794 + 717 31 1796 1795 1797 + 718 31 1799 1798 1800 + 719 31 1802 1801 1803 + 720 31 1805 1804 1806 + 721 31 1808 1807 1809 + 722 31 1811 1810 1812 + 723 31 1814 1813 1815 + 724 31 1817 1816 1818 + 725 31 1820 1819 1821 + 726 31 1823 1822 1824 + 727 31 1826 1825 1827 + 728 31 1829 1828 1830 + 729 31 1832 1831 1833 + 730 31 1835 1834 1836 + 731 31 1838 1837 1839 + 732 31 1841 1840 1842 + 733 31 1844 1843 1845 + 734 31 1847 1846 1848 + 735 31 1850 1849 1851 + 736 31 1853 1852 1854 + 737 31 1856 1855 1857 + 738 31 1859 1858 1860 + 739 31 1862 1861 1863 + 740 31 1865 1864 1866 + 741 31 1868 1867 1869 + 742 31 1871 1870 1872 + 743 31 1874 1873 1875 + 744 31 1877 1876 1878 + 745 31 1880 1879 1881 + 746 31 1883 1882 1884 + 747 31 1886 1885 1887 + 748 31 1889 1888 1890 + 749 31 1892 1891 1893 + 750 31 1895 1894 1896 + 751 31 1898 1897 1899 + 752 31 1901 1900 1902 + 753 31 1904 1903 1905 + 754 31 1907 1906 1908 + 755 31 1910 1909 1911 + 756 31 1913 1912 1914 + 757 31 1916 1915 1917 + 758 31 1919 1918 1920 + 759 31 1922 1921 1923 + 760 31 1925 1924 1926 + 761 31 1928 1927 1929 + 762 31 1931 1930 1932 + 763 31 1934 1933 1935 + 764 31 1937 1936 1938 + 765 31 1940 1939 1941 + 766 31 1943 1942 1944 + 767 31 1946 1945 1947 + 768 31 1949 1948 1950 + 769 31 1952 1951 1953 + 770 31 1955 1954 1956 + 771 31 1958 1957 1959 + 772 31 1961 1960 1962 + 773 31 1964 1963 1965 + 774 31 1967 1966 1968 + 775 31 1970 1969 1971 + 776 31 1973 1972 1974 + 777 31 1976 1975 1977 + 778 31 1979 1978 1980 + 779 31 1982 1981 1983 + 780 31 1985 1984 1986 + 781 31 1988 1987 1989 + 782 31 1991 1990 1992 + 783 31 1994 1993 1995 + 784 31 1997 1996 1998 + 785 31 2000 1999 2001 + 786 31 2003 2002 2004 + +Dihedrals + + 1 6 3 1 7 8 + 2 6 2 1 7 19 + 3 4 2 1 7 8 + 4 5 2 1 7 8 + 5 6 3 1 7 19 + 6 3 3 1 2 4 + 7 3 3 1 2 6 + 8 3 3 1 2 5 + 9 3 5 2 1 7 + 10 3 4 2 1 7 + 11 3 6 2 1 7 + 12 3 19 7 8 20 + 13 1 1 7 8 9 + 14 3 1 7 8 20 + 15 2 1 7 8 11 + 16 8 9 8 11 22 + 17 3 7 8 9 10 + 18 7 7 8 9 28 + 19 8 7 8 11 21 + 20 8 7 8 11 12 + 21 3 9 8 7 19 + 22 3 11 8 9 28 + 23 8 7 8 11 22 + 24 3 11 8 7 19 + 25 10 9 8 11 12 + 26 3 20 8 9 28 + 27 8 9 8 11 21 + 28 8 20 8 11 22 + 29 8 20 8 11 21 + 30 4 8 9 28 29 + 31 5 8 9 28 29 + 32 6 10 9 28 29 + 33 11 10 9 8 11 + 34 6 10 9 28 32 + 35 3 10 9 8 20 + 36 6 8 9 28 32 + 37 9 8 11 12 13 + 38 8 12 11 8 20 + 39 9 8 11 12 14 + 40 14 14 12 13 15 + 41 13 13 12 14 24 + 42 3 13 12 11 22 + 43 14 13 12 14 16 + 44 3 14 12 11 22 + 45 3 13 12 11 21 + 46 13 11 12 14 24 + 47 12 11 12 14 16 + 48 3 14 12 11 21 + 49 13 11 12 13 23 + 50 13 14 12 13 23 + 51 12 11 12 13 15 + 52 16 23 13 15 25 + 53 13 12 13 15 25 + 54 14 12 13 15 17 + 55 14 12 14 16 17 + 56 13 12 14 16 26 + 57 16 24 14 16 26 + 58 12 13 15 17 18 + 59 13 17 15 13 23 + 60 14 13 15 17 16 + 61 12 14 16 17 18 + 62 13 17 16 14 24 + 63 14 14 16 17 15 + 64 15 16 17 18 27 + 65 13 15 17 16 26 + 66 13 18 17 15 25 + 67 15 15 17 18 27 + 68 13 16 17 15 25 + 69 13 18 17 16 26 + 70 1 9 28 29 30 + 71 3 32 28 29 33 + 72 3 9 28 29 33 + 73 3 9 28 29 34 + 74 3 32 28 29 34 + 75 3 33 29 30 35 + 76 3 30 29 28 32 + 77 3 34 29 30 35 + 78 7 28 29 30 35 + 79 3 28 29 30 31 + 80 6 29 30 35 39 + 81 4 29 30 35 36 + 82 5 29 30 35 36 + 83 3 31 30 29 34 + 84 3 31 30 29 33 + 85 6 31 30 35 39 + 86 6 31 30 35 36 + 87 1 30 35 36 37 + 88 3 39 35 36 41 + 89 3 30 35 36 40 + 90 3 30 35 36 41 + 91 3 39 35 36 40 + 92 3 40 36 37 42 + 93 3 41 36 37 42 + 94 7 35 36 37 42 + 95 3 35 36 37 38 + 96 3 37 36 35 39 + 97 6 38 37 42 53 + 98 3 38 37 36 40 + 99 6 38 37 42 43 + 100 4 36 37 42 43 + 101 6 36 37 42 53 + 102 5 36 37 42 43 + 103 3 38 37 36 41 + 104 3 37 42 43 54 + 105 1 37 42 43 44 + 106 3 53 42 43 54 + 107 2 37 42 43 46 + 108 10 44 43 46 47 + 109 3 44 43 42 53 + 110 8 42 43 46 56 + 111 8 42 43 46 55 + 112 8 42 43 46 47 + 113 3 46 43 42 53 + 114 8 44 43 46 55 + 115 8 54 43 46 56 + 116 7 42 43 44 62 + 117 3 42 43 44 45 + 118 3 46 43 44 62 + 119 3 54 43 44 62 + 120 8 54 43 46 55 + 121 8 44 43 46 56 + 122 5 43 44 62 63 + 123 6 45 44 62 70 + 124 6 43 44 62 70 + 125 4 43 44 62 63 + 126 11 45 44 43 46 + 127 3 45 44 43 54 + 128 6 45 44 62 63 + 129 9 43 46 47 48 + 130 8 47 46 43 54 + 131 9 43 46 47 49 + 132 3 49 47 46 55 + 133 13 46 47 48 57 + 134 14 49 47 48 50 + 135 3 49 47 46 56 + 136 12 46 47 48 50 + 137 12 46 47 49 51 + 138 14 48 47 49 51 + 139 13 46 47 49 58 + 140 3 48 47 46 55 + 141 3 48 47 46 56 + 142 13 48 47 49 58 + 143 13 49 47 48 57 + 144 14 47 48 50 52 + 145 16 57 48 50 59 + 146 13 47 48 50 59 + 147 16 58 49 51 60 + 148 13 47 49 51 60 + 149 14 47 49 51 52 + 150 13 48 50 52 61 + 151 14 48 50 52 51 + 152 16 59 50 52 61 + 153 13 52 50 48 57 + 154 14 49 51 52 50 + 155 13 49 51 52 61 + 156 13 52 51 49 58 + 157 16 60 51 52 61 + 158 13 51 52 50 59 + 159 13 50 52 51 60 + 160 3 70 62 63 71 + 161 2 44 62 63 66 + 162 1 44 62 63 64 + 163 3 44 62 63 71 + 164 8 62 63 66 72 + 165 8 62 63 66 67 + 166 3 71 63 64 79 + 167 3 62 63 64 65 + 168 3 64 63 62 70 + 169 8 62 63 66 73 + 170 7 62 63 64 79 + 171 8 64 63 66 67 + 172 3 66 63 64 79 + 173 8 64 63 66 72 + 174 3 66 63 62 70 + 175 8 71 63 66 73 + 176 8 64 63 66 73 + 177 8 71 63 66 72 + 178 6 63 64 79 81 + 179 6 65 64 79 80 + 180 3 65 64 63 71 + 181 4 63 64 79 80 + 182 6 65 64 79 81 + 183 5 63 64 79 80 + 184 11 65 64 63 66 + 185 8 67 66 63 71 + 186 17 63 66 67 74 + 187 17 72 66 67 75 + 188 17 63 66 67 75 + 189 17 63 66 67 68 + 190 17 73 66 67 74 + 191 17 73 66 67 75 + 192 17 72 66 67 74 + 193 19 66 67 68 69 + 194 21 68 67 66 72 + 195 18 66 67 68 69 + 196 21 68 67 66 73 + 197 20 69 68 67 74 + 198 20 69 68 67 75 + 199 20 67 68 69 77 + 200 20 67 68 69 76 + 201 20 67 68 69 78 + 202 3 81 79 80 83 + 203 3 81 79 80 84 + 204 3 64 79 80 84 + 205 3 81 79 80 82 + 206 3 64 79 80 83 + 207 3 64 79 80 82 + +Impropers + + 1 2 7 1 8 19 + 2 1 1 2 7 3 + 3 1 9 8 28 10 + 4 2 28 9 29 32 + 5 1 30 29 35 31 + 6 2 35 30 36 39 + 7 1 37 36 42 38 + 8 2 42 37 43 53 + 9 1 44 43 62 45 + 10 2 62 44 63 70 + 11 1 64 63 79 65 + 12 2 79 64 80 81 diff --git a/src/REPLICA/in.temper_npt b/src/REPLICA/in.temper_npt new file mode 100644 index 0000000000..40db3c9604 --- /dev/null +++ b/src/REPLICA/in.temper_npt @@ -0,0 +1,32 @@ +# Solvated 5-mer peptide +# Demonstrating temper_npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +run 500 +temper_npt 2000 100 ${temper_T} myfix 0 58728 1 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 +group peptide type <= 12 + + + diff --git a/src/REPLICA/temper_npt.cpp b/src/REPLICA/temper_npt.cpp new file mode 100644 index 0000000000..a043c61407 --- /dev/null +++ b/src/REPLICA/temper_npt.cpp @@ -0,0 +1,381 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing Authors: Amulya K. Pervaje and Cody K. Addington + Contact Email: amulyapervaje@gmail.com + temper_npt is a modification of temper that is applicable to the NPT ensemble + uses the npt acceptance criteria for parallel tempering (replica exchange) as given in + Mori, Y .; Okamoto, Y . Generalized-Ensemble Algorithms for the Isobaric–Isothermal Ensemble. J. Phys. Soc. Japan 2010, 79, 74003. + + temper_npt N M temp fix-ID seed1 seed2 pressure index(optional) + refer to documentation for temper, only difference with temper_npt is that the pressure is specified as the 7th argument, the 8th argument is the same optional index argument used in temper +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "temper_npt.h" +#include "universe.h" +#include "domain.h" +#include "atom.h" +#include "update.h" +#include "integrate.h" +#include "modify.h" +#include "compute.h" +#include "force.h" +#include "output.h" +#include "thermo.h" +#include "fix.h" +#include "random_park.h" +#include "finish.h" +#include "timer.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define TEMPER_DEBUG 0 + +/* ---------------------------------------------------------------------- */ + +TemperNpt::TemperNpt(LAMMPS *lmp) : Pointers(lmp) {} + +/* ---------------------------------------------------------------------- */ + +TemperNpt::~TemperNpt() +{ + MPI_Comm_free(&roots); + if (ranswap) delete ranswap; + delete ranboltz; + delete [] set_temp; + delete [] temp2world; + delete [] world2temp; + delete [] world2root; +} + +/* ---------------------------------------------------------------------- + perform tempering with inter-world swaps +------------------------------------------------------------------------- */ + +void TemperNpt::command(int narg, char **arg) +{ + if (universe->nworlds == 1) + error->all(FLERR,"Must have more than one processor partition to temper"); + if (domain->box_exist == 0) + error->all(FLERR,"temper_npt command before simulation box is defined"); + if (narg != 7 && narg != 8) + error->universe_all(FLERR,"Illegal temper command"); + + int nsteps = force->inumeric(FLERR,arg[0]); + nevery = force->inumeric(FLERR,arg[1]); + double temp = force->numeric(FLERR,arg[2]); + double press_set = force->numeric(FLERR,arg[6]); + + for (whichfix = 0; whichfix < modify->nfix; whichfix++) + if (strcmp(arg[3],modify->fix[whichfix]->id) == 0) break; + if (whichfix == modify->nfix) + error->universe_all(FLERR,"Tempering fix ID is not defined"); + + seed_swap = force->inumeric(FLERR,arg[4]); + seed_boltz = force->inumeric(FLERR,arg[5]); + + my_set_temp = universe->iworld; + if (narg == 8) my_set_temp = force->inumeric(FLERR,arg[6]); + + // swap frequency must evenly divide total # of timesteps + + if (nevery <= 0) + error->universe_all(FLERR,"Invalid frequency in temper command"); + nswaps = nsteps/nevery; + if (nswaps*nevery != nsteps) + error->universe_all(FLERR,"Non integer # of swaps in temper command"); + + // fix style must be appropriate for temperature control, i.e. it needs + // to provide a working Fix::reset_target() and must not change the volume. + + if ((strcmp(modify->fix[whichfix]->style,"npt") != 0)) error->universe_all(FLERR,"Tempering temperature fix is not supported"); + + // setup for long tempering run + + update->whichflag = 1; + update->nsteps = nsteps; + update->beginstep = update->firststep = update->ntimestep; + update->endstep = update->laststep = update->firststep + nsteps; + if (update->laststep < 0) + error->all(FLERR,"Too many timesteps"); + + lmp->init(); + + // local storage + + me_universe = universe->me; + MPI_Comm_rank(world,&me); + nworlds = universe->nworlds; + iworld = universe->iworld; + boltz = force->boltz; + nktv2p = force->nktv2p; + + // pe_compute = ptr to thermo_pe compute + // notify compute it will be called at first swap + + int id = modify->find_compute("thermo_pe"); + if (id < 0) error->all(FLERR,"Tempering could not find thermo_pe compute"); + Compute *pe_compute = modify->compute[id]; + pe_compute->addstep(update->ntimestep + nevery); + + // create MPI communicator for root proc from each world + + int color; + if (me == 0) color = 0; + else color = 1; + MPI_Comm_split(universe->uworld,color,0,&roots); + + // RNGs for swaps and Boltzmann test + // warm up Boltzmann RNG + + if (seed_swap) ranswap = new RanPark(lmp,seed_swap); + else ranswap = NULL; + ranboltz = new RanPark(lmp,seed_boltz + me_universe); + for (int i = 0; i < 100; i++) ranboltz->uniform(); + + // world2root[i] = global proc that is root proc of world i + + world2root = new int[nworlds]; + if (me == 0) + MPI_Allgather(&me_universe,1,MPI_INT,world2root,1,MPI_INT,roots); + MPI_Bcast(world2root,nworlds,MPI_INT,0,world); + + // create static list of set temperatures + // allgather tempering arg "temp" across root procs + // bcast from each root to other procs in world + + set_temp = new double[nworlds]; + if (me == 0) MPI_Allgather(&temp,1,MPI_DOUBLE,set_temp,1,MPI_DOUBLE,roots); + MPI_Bcast(set_temp,nworlds,MPI_DOUBLE,0,world); + + // create world2temp only on root procs from my_set_temp + // create temp2world on root procs from world2temp, + // then bcast to all procs within world + + world2temp = new int[nworlds]; + temp2world = new int[nworlds]; + if (me == 0) { + MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots); + for (int i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i; + } + MPI_Bcast(temp2world,nworlds,MPI_INT,0,world); + + // if restarting tempering, reset temp target of Fix to current my_set_temp + + if (narg == 8) { + double new_temp = set_temp[my_set_temp]; + modify->fix[whichfix]->reset_target(new_temp); + } + + // setup tempering runs + + int i,which,partner,swap,partner_set_temp,partner_world; + double pe,pe_partner, delr,boltz_factor,new_temp, press_units; + + if (me_universe == 0 && universe->uscreen) + fprintf(universe->uscreen,"Setting up tempering ...\n"); + + update->integrate->setup(); + + if (me_universe == 0) { + if (universe->uscreen) { + fprintf(universe->uscreen,"Step"); + for (int i = 0; i < nworlds; i++) + fprintf(universe->uscreen," T%d",i); + fprintf(universe->uscreen,"\n"); + } + if (universe->ulogfile) { + fprintf(universe->ulogfile,"Step"); + for (int i = 0; i < nworlds; i++) + fprintf(universe->ulogfile," T%d",i); + fprintf(universe->ulogfile,"\n"); + } + print_status(); + } + + timer->init(); + timer->barrier_start(); + + for (int iswap = 0; iswap < nswaps; iswap++) { + + // run for nevery timesteps + + update->integrate->run(nevery); + + // compute PE + // notify compute it will be called at next swap + + pe = pe_compute->compute_scalar(); + pe_compute->addstep(update->ntimestep + nevery); + double boxlox=domain->boxlo[0]; + double boxhix=domain->boxhi[0]; + double boxloy=domain->boxlo[1]; + double boxhiy=domain->boxhi[1]; + double boxloz=domain->boxlo[2]; + double boxhiz=domain->boxhi[2]; + double vol = (boxhix - boxlox)*(boxhiy - boxloy)*(boxhiz - boxloz); + double vol_partner = vol; + // which = which of 2 kinds of swaps to do (0,1) + + if (!ranswap) which = iswap % 2; + else if (ranswap->uniform() < 0.5) which = 0; + else which = 1; + + // partner_set_temp = which set temp I am partnering with for this swap + + if (which == 0) { + if (my_set_temp % 2 == 0) partner_set_temp = my_set_temp + 1; + else partner_set_temp = my_set_temp - 1; + } else { + if (my_set_temp % 2 == 1) partner_set_temp = my_set_temp + 1; + else partner_set_temp = my_set_temp - 1; + } + + // partner = proc ID to swap with + // if partner = -1, then I am not a proc that swaps + + partner = -1; + if (me == 0 && partner_set_temp >= 0 && partner_set_temp < nworlds) { + partner_world = temp2world[partner_set_temp]; + partner = world2root[partner_world]; + } + + // swap with a partner, only root procs in each world participate + // hi proc sends PE to low proc + // lo proc make Boltzmann decision on whether to swap + // lo proc communicates decision back to hi proc + + swap = 0; + if (partner != -1) { + if (me_universe > partner) { + MPI_Send(&pe,1,MPI_DOUBLE,partner,0,universe->uworld); + } + else { + MPI_Recv(&pe_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE); + } + if (me_universe > partner) { + MPI_Send(&vol,1, MPI_DOUBLE,partner,0,universe->uworld); + } + else { + MPI_Recv(&vol_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE); + } + // Acceptance criteria changed for NPT ensemble + if (me_universe < partner) { + press_units = press_set/nktv2p; + delr = (pe_partner - pe)*(1.0/(boltz*set_temp[my_set_temp]) - 1.0/(boltz*set_temp[partner_set_temp])) + press_units*(1.0/(boltz*set_temp[my_set_temp]) - 1.0/(boltz*set_temp[partner_set_temp]))*(vol_partner - vol); + boltz_factor = -delr; + if (boltz_factor >= 0.0) swap = 1; + else if (ranboltz->uniform() < exp(boltz_factor)) swap = 1; + } + + if (me_universe < partner) + MPI_Send(&swap,1,MPI_INT,partner,0,universe->uworld); + else + MPI_Recv(&swap,1,MPI_INT,partner,0,universe->uworld,MPI_STATUS_IGNORE); +#ifdef TEMPER_DEBUG + if (me_universe < partner) + fprintf(universe->uscreen,"SWAP %d & %d: yes = %d,Ts = %d %d, PEs = %g %g, Bz = %g %g, vol = %g %g\n", + me_universe,partner,swap,my_set_temp,partner_set_temp, + pe,pe_partner,boltz_factor,exp(boltz_factor), vol, vol_partner); +#endif + + } + + // bcast swap result to other procs in my world + + MPI_Bcast(&swap,1,MPI_INT,0,world); + + // rescale kinetic energy via velocities if move is accepted + + if (swap) scale_velocities(partner_set_temp,my_set_temp); + + // if my world swapped, all procs in world reset temp target of Fix + + if (swap) { + new_temp = set_temp[partner_set_temp]; + modify->fix[whichfix]->reset_target(new_temp); + } + + // update my_set_temp and temp2world on every proc + // root procs update their value if swap took place + // allgather across root procs + // bcast within my world + + if (swap) my_set_temp = partner_set_temp; + if (me == 0) { + MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots); + for (i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i; + } + MPI_Bcast(temp2world,nworlds,MPI_INT,0,world); + + // print out current swap status + + if (me_universe == 0) print_status(); + } + + timer->barrier_stop(); + + update->integrate->cleanup(); + + Finish finish(lmp); + finish.end(1); + + update->whichflag = 0; + update->firststep = update->laststep = 0; + update->beginstep = update->endstep = 0; +} + +/* ---------------------------------------------------------------------- + scale kinetic energy via velocities a la Sugita +------------------------------------------------------------------------- */ + +void TemperNpt::scale_velocities(int t_partner, int t_me) +{ + double sfactor = sqrt(set_temp[t_partner]/set_temp[t_me]); + + double **v = atom->v; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + v[i][0] = v[i][0]*sfactor; + v[i][1] = v[i][1]*sfactor; + v[i][2] = v[i][2]*sfactor; + } +} + +/* ---------------------------------------------------------------------- + proc 0 prints current tempering status +------------------------------------------------------------------------- */ + +void TemperNpt::print_status() +{ + if (universe->uscreen) { + fprintf(universe->uscreen,BIGINT_FORMAT,update->ntimestep); + for (int i = 0; i < nworlds; i++) + fprintf(universe->uscreen," %d",world2temp[i]); + fprintf(universe->uscreen,"\n"); + } + if (universe->ulogfile) { + fprintf(universe->ulogfile,BIGINT_FORMAT,update->ntimestep); + for (int i = 0; i < nworlds; i++) + fprintf(universe->ulogfile," %d",world2temp[i]); + fprintf(universe->ulogfile,"\n"); + fflush(universe->ulogfile); + } +} diff --git a/src/REPLICA/temper_npt.h b/src/REPLICA/temper_npt.h new file mode 100644 index 0000000000..984f2839b1 --- /dev/null +++ b/src/REPLICA/temper_npt.h @@ -0,0 +1,118 @@ +/* -*- 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. + + Contributing Authors: Amulya K. Pervaje and Cody K. Addington + Contact Email: amulyapervaje@gmail.com + temper_npt is a modification of temper that is applicable to the NPT ensemble + uses the npt acceptance criteria for parallel tempering (replica exchange) as given in + Mori, Y .; Okamoto, Y . Generalized-Ensemble Algorithms for the Isobaric–Isothermal Ensemble. J. Phys. Soc. Japan 2010, 79, 74003. + + temper_npt N M temp fix-ID seed1 seed2 pressure index(optional) + refer to documentation for temper, only difference with temper_npt is that the pressure is s +pecified as the 7th argument, the 8th argument is the same optional index argument used in temp +er +------------------------------------------------------------------------- */ + +#ifdef COMMAND_CLASS + +CommandStyle(temper_npt,TemperNpt) + +#else + +#ifndef LMP_TEMPERNPT_H +#define LMP_TEMPERNPT_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class TemperNpt : protected Pointers { + public: + TemperNpt(class LAMMPS *); + ~TemperNpt(); + void command(int, char **); + + private: + int me,me_universe; // my proc ID in world and universe + int iworld,nworlds; // world info + double boltz; // copy from output->boltz + double nktv2p; + MPI_Comm roots; // MPI comm with 1 root proc from each world + class RanPark *ranswap,*ranboltz; // RNGs for swapping and Boltz factor + int nevery; // # of timesteps between swaps + int nswaps; // # of tempering swaps to perform + int seed_swap; // 0 = toggle swaps, n = RNG for swap direction + int seed_boltz; // seed for Boltz factor comparison + int whichfix; // index of temperature fix to use + int fixstyle; // what kind of temperature fix is used + + int my_set_temp; // which set temp I am simulating + double *set_temp; // static list of replica set temperatures + int *temp2world; // temp2world[i] = world simulating set temp i + int *world2temp; // world2temp[i] = temp simulated by world i + int *world2root; // world2root[i] = root proc of world i + + void scale_velocities(int, int); + void print_status(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Must have more than one processor partition to temper + +Cannot use the temper command with only one processor partition. Use +the -partition command-line option. + +E: TemperNpt command before simulation box is defined + +The temper command cannot be used before a read_data, read_restart, or +create_box command. + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Tempering fix ID is not defined + +The fix ID specified by the temper command does not exist. + +E: Invalid frequency in temper command + +Nevery must be > 0. + +E: Non integer # of swaps in temper command + +Swap frequency in temper command must evenly divide the total # of +timesteps. + +E: Tempering temperature fix is not valid + +The fix specified by the temper command is not one that controls +temperature (nvt or langevin). + +E: Too many timesteps + +The cummulative timesteps must fit in a 64-bit integer. + +E: Tempering could not find thermo_pe compute + +This compute is created by the thermo command. It must have been +explicitly deleted by a uncompute command. + +*/ -- GitLab From 6f66e6c45445bfbd459ac2beeeb7a8ea1fa1c083 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2017 19:07:32 -0400 Subject: [PATCH 268/337] add new compute fragment/atom --- src/compute_cluster_atom.h | 2 +- src/compute_fragment_atom.cpp | 210 ++++++++++++++++++++++++++++++++++ src/compute_fragment_atom.h | 67 +++++++++++ 3 files changed, 278 insertions(+), 1 deletion(-) create mode 100644 src/compute_fragment_atom.cpp create mode 100644 src/compute_fragment_atom.h diff --git a/src/compute_cluster_atom.h b/src/compute_cluster_atom.h index aae4747781..253396b40e 100644 --- a/src/compute_cluster_atom.h +++ b/src/compute_cluster_atom.h @@ -59,7 +59,7 @@ E: Cannot use compute cluster/atom unless atoms have IDs Atom IDs are used to identify clusters. -E: Compute cluster/atom requires a pair style be defined +E: Compute cluster/atom requires a pair style to be defined This is so that the pair style defines a cutoff distance which is used to find clusters. diff --git a/src/compute_fragment_atom.cpp b/src/compute_fragment_atom.cpp new file mode 100644 index 0000000000..02a0b8e7dc --- /dev/null +++ b/src/compute_fragment_atom.cpp @@ -0,0 +1,210 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include +#include "compute_fragment_atom.h" +#include "atom.h" +#include "atom_vec.h" +#include "update.h" +#include "modify.h" +#include "neighbor.h" +#include "force.h" +#include "pair.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +#include "group.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeFragmentAtom::ComputeFragmentAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), + fragmentID(NULL) +{ + if (narg != 3) error->all(FLERR,"Illegal compute fragment/atom command"); + + if (atom->avec->bonds_allow == 0) + error->all(FLERR,"Compute fragment/atom used when bonds are not allowed"); + + peratom_flag = 1; + size_peratom_cols = 0; + comm_forward = 1; + + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +ComputeFragmentAtom::~ComputeFragmentAtom() +{ + memory->destroy(fragmentID); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeFragmentAtom::init() +{ + if (atom->tag_enable == 0) + error->all(FLERR,"Cannot use compute fragment/atom unless atoms have IDs"); + if (force->bond == NULL) + error->all(FLERR,"Compute fragment/atom requires a bond style to be defined"); + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"fragment/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute fragment/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeFragmentAtom::compute_peratom() +{ + int i,j,k; + + invoked_peratom = update->ntimestep; + + // grow fragmentID array if necessary + + if (atom->nmax > nmax) { + memory->destroy(fragmentID); + nmax = atom->nmax; + memory->create(fragmentID,nmax,"fragment/atom:fragmentID"); + vector_atom = fragmentID; + } + + int nbondlist = neighbor->nbondlist; + int **bondlist = neighbor->bondlist; + + // if group is dynamic, insure ghost atom masks are current + + if (group->dynamic[igroup]) { + commflag = 0; + comm->forward_comm_compute(this); + } + + // every bond starts in its own fragment, + // with fragmentID = MIN(b1atomID,b2atomID) + // only bonds wholly contained in the group are considered + + tagint *tag = atom->tag; + int *mask = atom->mask; + + for (i = 0; i < nbondlist; i++) { + const int b1 = bondlist[i][0]; + const int b2 = bondlist[i][1]; + + if ((mask[b1] & groupbit) && (mask[b2] & groupbit)) + fragmentID[b1] = fragmentID[b2] = MIN(tag[b1],tag[b2]); + else fragmentID[b1] = fragmentID[b2] = 0; + } + + // loop until no more changes on any proc: + // acquire fragmentIDs of ghost atoms + // loop over my atoms, and check atoms bound to it + // if both atoms are in fragment, assign lowest fragmentID to both + // iterate until no changes in my atoms + // then check if any proc made changes + + commflag = 1; + int nlocal = atom->nlocal; + int *num_bond = atom->num_bond; + tagint **bond_atom = atom->bond_atom; + + int change,done,anychange; + + while (1) { + comm->forward_comm_compute(this); + + change = 0; + while (1) { + done = 1; + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + + for (j = 0; j < num_bond[i]; j++) { + k = bond_atom[i][j]; + if (!(mask[k] & groupbit)) continue; + if (fragmentID[i] == fragmentID[k]) continue; + + fragmentID[i] = fragmentID[k] = MIN(fragmentID[i],fragmentID[k]); + done = 0; + } + } + if (!done) change = 1; + if (done) break; + } + + // stop if all procs are done + + MPI_Allreduce(&change,&anychange,1,MPI_INT,MPI_MAX,world); + if (!anychange) break; + } +} + +/* ---------------------------------------------------------------------- */ + +int ComputeFragmentAtom::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + + m = 0; + if (commflag) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = fragmentID[j]; + } + } else { + int *mask = atom->mask; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(mask[j]).d; + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeFragmentAtom::unpack_forward_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + if (commflag) + for (i = first; i < last; i++) fragmentID[i] = buf[m++]; + else { + int *mask = atom->mask; + for (i = first; i < last; i++) mask[i] = (int) ubuf(buf[m++]).i; + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeFragmentAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/compute_fragment_atom.h b/src/compute_fragment_atom.h new file mode 100644 index 0000000000..a56239dbda --- /dev/null +++ b/src/compute_fragment_atom.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 COMPUTE_CLASS + +ComputeStyle(fragment/atom,ComputeFragmentAtom) + +#else + +#ifndef LMP_COMPUTE_FRAGMENT_ATOM_H +#define LMP_COMPUTE_FRAGMENT_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeFragmentAtom : public Compute { + public: + ComputeFragmentAtom(class LAMMPS *, int, char **); + ~ComputeFragmentAtom(); + void init(); + void compute_peratom(); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + double memory_usage(); + + private: + int nmax,commflag; + double *fragmentID; +}; + +} + +#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: Cannot use compute fragment/atom unless atoms have IDs + +Atom IDs are used to identify fragments. + +E: Compute fragment/atom requires a bond style to be defined + +This is so that a bond list is generated which is used to find fragments. + +W: More than one compute fragment/atom + +It is not efficient to use compute fragment/atom more than once. + +*/ -- GitLab From 2e6a928aa3150c608151ccebe8a3414da1a80530 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2017 19:23:33 -0400 Subject: [PATCH 269/337] ignore file recently added to USER-INTEL --- src/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/src/.gitignore b/src/.gitignore index 80166e260e..3a97524c82 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -57,6 +57,7 @@ /intel_buffers.cpp /intel_buffers.h /intel_intrinsics.h +/intel_intrinsics_airebo.h /intel_preprocess.h /intel_simd.h -- GitLab From 44ccdb86df24ec1d8299ea198d0ce0c6e01a7b48 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2017 19:24:39 -0400 Subject: [PATCH 270/337] add checks when reading QEQ parameter file to avoid segfaults and memory corruption on incorrect files --- src/QEQ/fix_qeq.cpp | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index c5b566eef7..38bfec8b96 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -747,18 +747,26 @@ void FixQEq::read_file(char *file) nwords = atom->count_words(line); if (nwords == 0) continue; - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - itype = atoi(words[0]); - chi[itype] = atof(words[1]); - eta[itype] = atof(words[2]); - gamma[itype] = atof(words[3]); - zeta[itype] = atof(words[4]); - zcore[itype] = atof(words[5]); + // must have 6 parameters per line. + + if (nwords < 6) + error->all(FLERR,"Invalid fix qeq parameter file"); + + + // words = ptrs to first 6 words in line + + for (n=0, words[n] = strtok(line," \t\n\r\f"); + n < 6; + words[++n] = strtok(NULL," \t\n\r\f")); + + itype = force->inumeric(FLERR,words[0]); + if ((itype < 1) || (itype > atom->ntypes)) + error->all(FLERR,"Invalid fix qeq parameter file"); + chi[itype] = force->numeric(FLERR,words[1]); + eta[itype] = force->numeric(FLERR,words[2]); + gamma[itype] = force->numeric(FLERR,words[3]); + zeta[itype] = force->numeric(FLERR,words[4]); + zcore[itype] = force->numeric(FLERR,words[5]); } delete [] words; } -- GitLab From f945d4567d4f291fbf8c05ea22ec906ef3ee2ec9 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 18 Aug 2017 17:33:42 -0600 Subject: [PATCH 271/337] new USER-MESO package --- doc/src/Eqs/fix_mvv_dpd.jpg | Bin 0 -> 29281 bytes doc/src/Eqs/fix_mvv_dpd.tex | 21 + doc/src/Eqs/pair_edpd_force.jpg | Bin 0 -> 32395 bytes doc/src/Eqs/pair_edpd_force.tex | 33 + doc/src/Eqs/pair_edpd_gov.jpg | Bin 0 -> 17725 bytes doc/src/Eqs/pair_edpd_gov.tex | 15 + doc/src/Eqs/pair_edpd_heat.jpg | Bin 0 -> 46952 bytes doc/src/Eqs/pair_edpd_heat.tex | 29 + doc/src/Eqs/pair_edpd_kappa.jpg | Bin 0 -> 5626 bytes doc/src/Eqs/pair_edpd_kappa.tex | 9 + doc/src/Eqs/pair_mdpd_force.jpg | Bin 0 -> 19465 bytes doc/src/Eqs/pair_mdpd_force.tex | 17 + doc/src/Eqs/pair_tdpd_flux.jpg | Bin 0 -> 22023 bytes doc/src/Eqs/pair_tdpd_flux.tex | 21 + doc/src/Eqs/pair_tdpd_force.jpg | Bin 0 -> 25842 bytes doc/src/Eqs/pair_tdpd_force.tex | 29 + doc/src/Eqs/pair_tdpd_gov.jpg | Bin 0 -> 18141 bytes doc/src/Eqs/pair_tdpd_gov.tex | 13 + doc/src/JPG/examples_edpd.jpg | Bin 0 -> 15776 bytes doc/src/JPG/examples_mdpd.gif | Bin 0 -> 916813 bytes doc/src/JPG/examples_mdpd_first.jpg | Bin 0 -> 115446 bytes doc/src/JPG/examples_mdpd_last.jpg | Bin 0 -> 38463 bytes doc/src/JPG/examples_tdpd.jpg | Bin 0 -> 10789 bytes doc/src/Section_commands.txt | 11 + doc/src/Section_packages.txt | 65 +- doc/src/atom_style.txt | 46 +- doc/src/compute_edpd_temp_atom.txt | 61 ++ doc/src/compute_tdpd_cc_atom.txt | 60 ++ doc/src/fix_dpd_source.txt | 101 ++ doc/src/fix_mvv_dpd.txt | 97 ++ doc/src/pair_meso.txt | 277 +++++ doc/src/read_data.txt | 54 +- doc/src/set.txt | 22 +- examples/USER/meso/README | 40 + examples/USER/meso/edpd/in.edpd | 54 + .../USER/meso/edpd/log.16Aug17.edpd.g++.1 | 142 +++ .../USER/meso/edpd/log.16Aug17.edpd.g++.4 | 142 +++ .../meso/edpd/temp.profile.16Aug17.edpd.g++.1 | 24 + .../meso/edpd/temp.profile.16Aug17.edpd.g++.4 | 24 + examples/USER/meso/mdpd/in.mdpd | 52 + .../USER/meso/mdpd/log.16Aug17.mdpd.g++.1 | 147 +++ .../USER/meso/mdpd/log.16Aug17.mdpd.g++.4 | 147 +++ .../meso/tdpd/cc.profile.16Aug17.tdpd.g++.1 | 24 + .../meso/tdpd/cc.profile.16Aug17.tdpd.g++.4 | 24 + examples/USER/meso/tdpd/in.tdpd | 54 + .../USER/meso/tdpd/log.16Aug17.tdpd.g++.1 | 146 +++ .../USER/meso/tdpd/log.16Aug17.tdpd.g++.4 | 146 +++ src/Makefile | 3 +- src/USER-MESO/README | 50 + src/USER-MESO/atom_vec_edpd.cpp | 844 ++++++++++++++++ src/USER-MESO/atom_vec_edpd.h | 68 ++ src/USER-MESO/atom_vec_mdpd.cpp | 951 ++++++++++++++++++ src/USER-MESO/atom_vec_mdpd.h | 79 ++ src/USER-MESO/atom_vec_tdpd.cpp | 879 ++++++++++++++++ src/USER-MESO/atom_vec_tdpd.h | 83 ++ src/USER-MESO/compute_edpd_temp_atom.cpp | 97 ++ src/USER-MESO/compute_edpd_temp_atom.h | 43 + src/USER-MESO/compute_tdpd_cc_atom.cpp | 98 ++ src/USER-MESO/compute_tdpd_cc_atom.h | 44 + src/USER-MESO/fix_edpd_source.cpp | 120 +++ src/USER-MESO/fix_edpd_source.h | 44 + src/USER-MESO/fix_mvv_dpd.cpp | 136 +++ src/USER-MESO/fix_mvv_dpd.h | 45 + src/USER-MESO/fix_mvv_edpd.cpp | 163 +++ src/USER-MESO/fix_mvv_edpd.h | 45 + src/USER-MESO/fix_mvv_tdpd.cpp | 156 +++ src/USER-MESO/fix_mvv_tdpd.h | 46 + src/USER-MESO/fix_tdpd_source.cpp | 120 +++ src/USER-MESO/fix_tdpd_source.h | 45 + src/USER-MESO/pair_edpd.cpp | 551 ++++++++++ src/USER-MESO/pair_edpd.h | 85 ++ src/USER-MESO/pair_mdpd.cpp | 425 ++++++++ src/USER-MESO/pair_mdpd.h | 84 ++ src/USER-MESO/pair_mdpd_rhosum.cpp | 267 +++++ src/USER-MESO/pair_mdpd_rhosum.h | 50 + src/USER-MESO/pair_tdpd.cpp | 477 +++++++++ src/USER-MESO/pair_tdpd.h | 81 ++ src/atom.cpp | 14 +- src/atom.h | 9 +- src/set.cpp | 72 +- src/set.h | 3 +- 81 files changed, 8358 insertions(+), 66 deletions(-) create mode 100644 doc/src/Eqs/fix_mvv_dpd.jpg create mode 100644 doc/src/Eqs/fix_mvv_dpd.tex create mode 100644 doc/src/Eqs/pair_edpd_force.jpg create mode 100644 doc/src/Eqs/pair_edpd_force.tex create mode 100644 doc/src/Eqs/pair_edpd_gov.jpg create mode 100644 doc/src/Eqs/pair_edpd_gov.tex create mode 100644 doc/src/Eqs/pair_edpd_heat.jpg create mode 100644 doc/src/Eqs/pair_edpd_heat.tex create mode 100644 doc/src/Eqs/pair_edpd_kappa.jpg create mode 100644 doc/src/Eqs/pair_edpd_kappa.tex create mode 100644 doc/src/Eqs/pair_mdpd_force.jpg create mode 100644 doc/src/Eqs/pair_mdpd_force.tex create mode 100644 doc/src/Eqs/pair_tdpd_flux.jpg create mode 100644 doc/src/Eqs/pair_tdpd_flux.tex create mode 100644 doc/src/Eqs/pair_tdpd_force.jpg create mode 100644 doc/src/Eqs/pair_tdpd_force.tex create mode 100644 doc/src/Eqs/pair_tdpd_gov.jpg create mode 100644 doc/src/Eqs/pair_tdpd_gov.tex create mode 100644 doc/src/JPG/examples_edpd.jpg create mode 100644 doc/src/JPG/examples_mdpd.gif create mode 100644 doc/src/JPG/examples_mdpd_first.jpg create mode 100644 doc/src/JPG/examples_mdpd_last.jpg create mode 100644 doc/src/JPG/examples_tdpd.jpg create mode 100644 doc/src/compute_edpd_temp_atom.txt create mode 100644 doc/src/compute_tdpd_cc_atom.txt create mode 100644 doc/src/fix_dpd_source.txt create mode 100644 doc/src/fix_mvv_dpd.txt create mode 100644 doc/src/pair_meso.txt create mode 100644 examples/USER/meso/README create mode 100644 examples/USER/meso/edpd/in.edpd create mode 100644 examples/USER/meso/edpd/log.16Aug17.edpd.g++.1 create mode 100644 examples/USER/meso/edpd/log.16Aug17.edpd.g++.4 create mode 100644 examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.1 create mode 100644 examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.4 create mode 100644 examples/USER/meso/mdpd/in.mdpd create mode 100644 examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.1 create mode 100644 examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.4 create mode 100644 examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.1 create mode 100644 examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.4 create mode 100644 examples/USER/meso/tdpd/in.tdpd create mode 100644 examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.1 create mode 100644 examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.4 create mode 100644 src/USER-MESO/README create mode 100644 src/USER-MESO/atom_vec_edpd.cpp create mode 100644 src/USER-MESO/atom_vec_edpd.h create mode 100644 src/USER-MESO/atom_vec_mdpd.cpp create mode 100644 src/USER-MESO/atom_vec_mdpd.h create mode 100644 src/USER-MESO/atom_vec_tdpd.cpp create mode 100644 src/USER-MESO/atom_vec_tdpd.h create mode 100644 src/USER-MESO/compute_edpd_temp_atom.cpp create mode 100644 src/USER-MESO/compute_edpd_temp_atom.h create mode 100644 src/USER-MESO/compute_tdpd_cc_atom.cpp create mode 100644 src/USER-MESO/compute_tdpd_cc_atom.h create mode 100644 src/USER-MESO/fix_edpd_source.cpp create mode 100644 src/USER-MESO/fix_edpd_source.h create mode 100644 src/USER-MESO/fix_mvv_dpd.cpp create mode 100644 src/USER-MESO/fix_mvv_dpd.h create mode 100644 src/USER-MESO/fix_mvv_edpd.cpp create mode 100644 src/USER-MESO/fix_mvv_edpd.h create mode 100644 src/USER-MESO/fix_mvv_tdpd.cpp create mode 100644 src/USER-MESO/fix_mvv_tdpd.h create mode 100644 src/USER-MESO/fix_tdpd_source.cpp create mode 100644 src/USER-MESO/fix_tdpd_source.h create mode 100644 src/USER-MESO/pair_edpd.cpp create mode 100644 src/USER-MESO/pair_edpd.h create mode 100644 src/USER-MESO/pair_mdpd.cpp create mode 100644 src/USER-MESO/pair_mdpd.h create mode 100644 src/USER-MESO/pair_mdpd_rhosum.cpp create mode 100644 src/USER-MESO/pair_mdpd_rhosum.h create mode 100644 src/USER-MESO/pair_tdpd.cpp create mode 100644 src/USER-MESO/pair_tdpd.h diff --git a/doc/src/Eqs/fix_mvv_dpd.jpg b/doc/src/Eqs/fix_mvv_dpd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f62ae28bc4092c7f38d1e796c3db33ff118bd8bd GIT binary patch literal 29281 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 literal 0 HcmV?d00001 diff --git a/doc/src/Eqs/fix_mvv_dpd.tex b/doc/src/Eqs/fix_mvv_dpd.tex new file mode 100644 index 0000000000..4652d54b77 --- /dev/null +++ b/doc/src/Eqs/fix_mvv_dpd.tex @@ -0,0 +1,21 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + v(t+\frac{\Delta t}{2}) = v(t) + \frac{\Delta t}{2}\cdot a(t), +$$ + +$$ + r(t+\Delta t) = r(t) + \Delta t\cdot v(t+\frac{\Delta t}{2}), +$$ + +$$ + a(t+\Delta t) = \frac{1}{m}\cdot F\left[ r(t+\Delta t), v(t) +\lambda \cdot \Delta t\cdot a(t)\right], +$$ + +$$ + v(t+\Delta t) = v(t+\frac{\Delta t}{2}) + \frac{\Delta t}{2}\cdot a(t++\Delta t), +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_edpd_force.jpg b/doc/src/Eqs/pair_edpd_force.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fabb6f772e2b61f199d6f36bb4f192f328e42aaf GIT binary patch literal 32395 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 Fn*jTAkv;$b literal 0 HcmV?d00001 diff --git a/doc/src/Eqs/pair_edpd_force.tex b/doc/src/Eqs/pair_edpd_force.tex new file mode 100644 index 0000000000..f6a0ca0d3c --- /dev/null +++ b/doc/src/Eqs/pair_edpd_force.tex @@ -0,0 +1,33 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \mathbf{F}_{ij}^{C} = \alpha_{ij}{\omega_{C}}(r_{ij})\mathbf{e}_{ij}, +$$ + +$$ + \mathbf{F}_{ij}^{D} = -\gamma {\omega_{D}}(r_{ij})(\mathbf{e}_{ij} \cdot \mathbf{v}_{ij})\mathbf{e}_{ij}, +$$ + +$$ + \mathbf{F}_{ij}^{R} = \sigma {\omega_{R}}(r_{ij}){\xi_{ij}}\Delta t^{-1/2} \mathbf{e}_{ij}, +$$ + +$$ + \omega_{C}(r) = 1 - r/r_c, +$$ + +$$ + \alpha_{ij} = A\cdot k_B(T_i + T_j)/2, +$$ + +$$ + \omega_{D}(r) = \omega^2_{R}(r) = (1-r/r_c)^s, +$$ + +$$ + \sigma_{ij}^2 = 4\gamma k_B T_i T_j/(T_i + T_j), +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_edpd_gov.jpg b/doc/src/Eqs/pair_edpd_gov.jpg new file mode 100644 index 0000000000000000000000000000000000000000..10b303a218b0fa1f1bcf78fa6a416162189f2cd0 GIT binary patch literal 17725 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 DtOVr{ literal 0 HcmV?d00001 diff --git a/doc/src/Eqs/pair_edpd_gov.tex b/doc/src/Eqs/pair_edpd_gov.tex new file mode 100644 index 0000000000..782cdec99e --- /dev/null +++ b/doc/src/Eqs/pair_edpd_gov.tex @@ -0,0 +1,15 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \frac{\mathrm{d}^2 \mathbf{r}_i}{\mathrm{d} t^2}= + \frac{\mathrm{d} \mathbf{v}_i}{\mathrm{d} t} + =\mathbf{F}_{i}=\sum_{i\neq j}(\mathbf{F}_{ij}^{C}+\mathbf{F}_{ij}^{D}+\mathbf{F}_{ij}^{R}), +$$ + +$$ + C_v\frac{\mathrm{d} T_i}{\mathrm{d} t}= q_{i} = \sum_{i\neq j}(q_{ij}^{C}+q_{ij}^{V}+q_{ij}^{R}), +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_edpd_heat.jpg b/doc/src/Eqs/pair_edpd_heat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9256a1d13301ad83ffe4bb538b10090aa73b223 GIT binary patch literal 46952 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 z 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�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 V_WSQ(TNqddSCe*NoWuVACIFWI=S2Vj literal 0 HcmV?d00001 diff --git a/doc/src/Eqs/pair_edpd_heat.tex b/doc/src/Eqs/pair_edpd_heat.tex new file mode 100644 index 0000000000..241a1bad64 --- /dev/null +++ b/doc/src/Eqs/pair_edpd_heat.tex @@ -0,0 +1,29 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + q_i^C = \sum_{j \ne i} k_{ij} \omega_{CT}(r_{ij}) \left( \frac{1}{T_i} - \frac{1}{T_j} \right), +$$ + +$$ + q_i^V = \frac{1}{2 C_v}\sum_{j \ne i}{ \left\{ \omega_D(r_{ij})\left[\gamma_{ij} \left( \mathbf{e}_{ij} \cdot \mathbf{v}_{ij} \right)^2 - \frac{\left( \sigma _{ij} \right)^2}{m}\right] - \sigma _{ij} \omega_R(r_{ij})\left( \mathbf{e}_{ij} \cdot \mathbf{v}_{ij} \right){\xi_{ij}} \right\} }, +$$ + +$$ + q_i^R = \sum_{j \ne i} \beta _{ij} \omega_{RT}(r_{ij}) d {t^{ - 1/2}} \xi_{ij}^e, +$$ + +$$ + \omega_{CT}(r)=\omega_{RT}^2(r)=\left(1-r/r_{ct}\right)^{s_T}, +$$ + +$$ + k_{ij}=C_v^2\kappa(T_i + T_j)^2/4k_B, +$$ + +$$ + \beta_{ij}^2=2k_Bk_{ij}, +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_edpd_kappa.jpg b/doc/src/Eqs/pair_edpd_kappa.jpg new file mode 100644 index 0000000000000000000000000000000000000000..158974d37427261ccecdedbc98ed7503ad82760f GIT binary patch literal 5626 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 *oUUycCUCMcTRZ^pnYsRG8 zi5grF+9G+jO*}v0!mr}T(GL2ZZ3p@qxBh1c%AT?3-nyfQZfq|sn0e|`<`I{aJaK*J zw7)iQ)}1|`bvf7UUQ^St*lNSnbB(;ZwyF#&e_qM?Yca;Zzfvu*J?v-Rv5M|#6SX-G zsBiB*xUO`=iqCI_ZplqoeKOB^;rha56DC=BO?tHB?Lprex6i)4c31WH?^fS@$z@zK zZLhGMeq=3gy~@KzW%a^9nGcp%C0`n|ojbq$R`-pcGgeLB(KU5?RQ1(+e^#8oX|??P z;T+kBR?%J~P@fF$2>o=|IX*iVBKw!0{qR73 zuln2+fxGh`J{3JDaqMTN{p|Jb`BpcUemNEMyh1_#r!|LUH8C* z=tRXtjyIl9G*i~EXFicz?`QKX>Qi>%iLC{yuDyDJQ>~|ZZit$+Qg2uA^*ie8;~bb9 zgajrqa55CGncx4&;+u2mzUt(}o4aMU{k7Pe%D?|wbYb$b)GbjKQ|3MOj=D2#C;O=e zca;fji_7OGOUx@}{>_(>;M{xUxR&sXnpETWQD^MsGuEZMO%g54n_+RxprJ{oHQO#q zLg;q5O?!}7tEvO5^6hZ;XI2{?<h-Sr*nd#;p6Cu#=XJm*8D zhP?l}rIBH->;lJhKbaqK~PFQjGCjaFZLxu5gzbatV#b5|=uQ=Yv^O7hGS4$a+j`{1{o-ySdh zx>TRPc-6fCt$%ul8&`|*xjU!lr#i+K3i@`F>@Vr#${t!-o-X6f46CSWvjito7?vK*R8vMe#to}hjTNmSbZ>I zKd<1Ncdrgk*QxuvoZ+EYjvRxX&0o_M?c{8n~&G35m6Uj*-P41;WwW?cKzIs(P zAD1`px43yZBc>p;FOB`99=HF02HA<7!Y9Iivc1$wSI^W~_jdI=O3t*0uLa+A%D z_P4bw@K3$6;jpjScHt*W^Hj4O)mQqh(hvD+yfprSh^V-~%gJJ&XRAb0TU@?O4UQJ% znr?hE@_EyiO)nxJu(AhDWo7w!X;v)dpzEy%kNqQw_m$)xHa-kQ?pX~mZ_fF z&nGO|c54EA{NgT~zqgF~6AwtfjC;a1uXK@o>&*%7QDrkP76rcfr{0$*(|clB*)fxw zrkX3ugo~;UMet1*Rm^QXJxQd3^}5K?0-M59opUmmExEw6Z}XF7D$l?4gL?6TCYOCN zaOF%hbI+N{+bZUHGa6^*DOt0Xr0RO|8$9v~YYK8|*HkIuuzDLF?zm!ocW|WWjtdWs zIzHaaDVTQK$th@p{R9SHlS@xb`{cI&kQGk{4-%MM6pkrU-l*HIbSjnK=o5FI*_Kw- zOywpHI}YV{mwlZW1p*{i1X}SfIq-3bW74X1>4&Z^QDd<*oAlJRgWa}vnp~-``4zd9 zuO?o!*Q$^+J>Qbs$G_chA3yJsA8bPRH(XBhKCfnN+qHL^^Xl+T7lJx@7q4Q!V{$oa Ua@7PSk>$Q7S3;4!S^xhg07+419{>OV literal 0 HcmV?d00001 diff --git a/doc/src/Eqs/pair_edpd_kappa.tex b/doc/src/Eqs/pair_edpd_kappa.tex new file mode 100644 index 0000000000..ac5ca9f740 --- /dev/null +++ b/doc/src/Eqs/pair_edpd_kappa.tex @@ -0,0 +1,9 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \kappa = \frac{315k_B\upsilon }{2\pi \rho C_v r_{ct}^5}\frac{1}{Pr}, +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_mdpd_force.jpg b/doc/src/Eqs/pair_mdpd_force.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b0e573b79a3d2f0cb31706a0fcd0c61e64ecdad GIT binary patch literal 19465 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
wOOZTpAoqqN1;g7o>-A*cN+H>5ptoPXIJ&U z4dmS(ZFZtI$-!xlmR5N5^my}sJ32E@eByZ?AFsRqNtv|H4ucOjH^`f<6Zg2_al7VS zKZk(IypNU{6RWIhEMIy17N$n6Enez0*X*{K%k1oyFXnSod>&i)PEN_4v|Pc9En(Fh ztxln;so7J#f~FqT4qfxEH}2eRk##!mMcTol6T=TSD=O#s_bp*kyB#VLC+ZMd>lw2u zXv&IzoBt-7yMK88Nj;1!XsY~$`nkUkKUMh8u<(}l%B$hL)0v}vbaOkC&99%gKNl1b zZ=@+UA;VT}XUPg-gQePCtIumJlBxUpHB{YXXKsbg?bERjE9SnvF7W4p`I>pYYm!$f zd{K5e!|C-&YvrdUy&o^xl$PrIvCE#Zjym&s#hoqJnAGJSJr2B77OQke_K;G^caV#HArrCiQy5 z>7^pGpNijGE;{*CdG76~CqMmm9xLK8I&)8!FJ;HIIjdr}zq{_SImCd<%vn)ON_`A;quALPpk|L&`Nc3=zmb}qFKWYC-FO?AX z=+ag{dmTMSu1yOT)rP6xX1AQ(9ijI#^fXJeywZlm>nkmloNH(M8I^ZTzEj%yBB**0NAFrg~h{5j96(rNDvmy13z z%yC`TYjxu2(sxI8#w{wInf11OL!M&E9`g2b}O1*bP3H^U7Z=Z_q5&h9dBPfoSGPEocpHRrlNd~lXKtg=Wd>7CZ~0z zWbkoGZA;>}k@a2mbaQ-Qyh>_kH}bvZP_rN`1~# z>znkO)J-MdeBIMtn0nhxx>9yijWzGByU$ik^juV=B5Af`{eoS-6BXyz6bVe_4CL_% z3}qE9njIB(I5zZ_(%FeA_a;2vSo-FN#Q!_w#V1**e!NLvuMldV{@k)1uZIiwACQZOy?_8!y;|Ik`*hf->sYS zEB(g3k9+RQ6vyV)#7l0o1B+xS9SEy+1cN_J&-$f@quGvx6 zaX9kYP18@$=R~ay`x6^={E1F@o-^aYB#(22Te^-<_IP*q{mCO?C$}g*xxiZYvn~3T z-tCN=8{U3j^Z3%9beTP^%S?3SPw9R)XJTg0oy!;Rxh-F$QBmXNJ?rag4wF4@`|P^^ z>Gh0nU0a{{Icz_5_PyAS$R{g&%qkuppJ{jDb=h*qhm#Dr^quv+=A39gEW16*T{P9? zN!-`^X;RxOM8Yh^L2gCnra}6_2d=#3Hfz)`{8CCY`<_uBieK8Z>4%%zd5l zylihu*6x~TU+Yhmm}$;TneZ%nSxV(J=F-nTOEbEz@I48eDzVqMzWuCjtWp90Ky|*#aPtJ}tXZLQ-lM2lo7kRy8+Hbzpk1BYy{=LiUqncj*FYM3# zefViY{e`!phY#Gm^Xt*gvSW*1t**Uiz0=LTyx+jc?S^~A{EC^T^BiV{3b{RL5-NV+ zv2V-Awerh$ufI`azqIG?SzFV)b%!7R)k%Ms`EuRsZ}R*vlkJP+51rZWxtw)z!m9dt zVdw8$e_HhSls`|?MFY_bqKu}eX1sC?bq#TSSNSl+eae3ZmA_Z24es`B$!(k5bx~rK za^qC@AlAPvbA7amx*tF4n*TJGO;|eV^&hqC>o>k-=E&LB!4s{#>08+0mW?wrA~R%E zlRwSXWnd31@@ks1YJG2p%o%g*#TVXnHzc3ZXPs)W@|3>je}==qFYU{olKWLy^un}r z(^(xZUuv^Z3=Iv5Kk;MHs#WX%Gi1jHp84*voOyAgQq>Qiwexqb>sILAwmIq8nj%x* zZ3pwVJrO%S`%|!D?vvDx_1#O9E|_$At&r82v#8?NAFcD?X!4qx=YL7B^QXhizpLw3 zt<_$b&vr~=m)~C3?K{OvFFiVXtN7wlo0DEsPBY4GE?zKst>CoTtgKH$87*BOEwSDn zlJM(4!{&8Qc03k)xz=NPQ;O2#N$)m2Te0xSgx7QB0$zTv%@dmWrSMveX3>f{A!?8J zO@B50qrT23f7{1L^FH;x-}A2e#i{%8{+d^hhuaj*`S{xFY;>XDMYG!_(Z$ixF#@hB z5~49o^;%6D9s7Ts{~4}+#&&V-s_gm&!v7g0m(Qqn`yF!aKZAq%KVyG`Z@u4EuKm~G z|0iu;;#=vr!O?#i=KnZrbNH6|t!3MPG1`BeRoT8Jf2(i)7pD5hrq`ZCeJ@S@Rw?l= za@MQpyQ|{er#S9-omrH;_d-VUwcFEMg&wqcTKcn!#7BjnSH2d#+N?ikOX_ZKPHP|Q zud}`@t}YYSGil#*zp&pTialnRmG0LmiL9zQJDfrv&sq;EfI*?_{&oIq&RzEH_7kl( zfU5oGKkx6!YqJ04yBNj=Q==Iaqr6pY(GAJ!8)o(edqi*U>^qzzv+2~kIbj!mb;gQa z-Ddk)pWpe(?K#`eyL)bPKi7OqJ?zZw&tIy)pErMMXdxys|H2{vQYrSBEQ^WdEl!u$ zT68T?dNH}{r1c$-cbQX`YK88!_t>TWlqvn&+Fz@-EcMwPP`6e(|8IBQzjR`m$lN*+1tt~A%uM{b@d+vtCN=J&K zjya3R=PnH~$@$|d^UCGr$H#r{^MWUDFg{i=>DU7nf6X1K(_eh!E>7{%UA*k}`dtsF zb3eFK@kz$KrMuzGVGkl8fv2q_4|M?|yH2)KF^Go|jz{Uy%E@w*K^jLnqctE7Y{zc^+Q%pP@2! zOGn9vITe$%)cfD8cfT|RQW9zN&vQ z*I9TbpPDZ&AFA}=fK{~Al?a1G;ip{Eg4cpq{eE>hgX{IGj;_?>KRN>fE#u``{$Bm< zCL!MEv5DhzlR}=t@<5JND;BL^8z|D<@^`NH?^p2?Uc4-iJ(+R4Z0_{Qx23y$rye@_ z^pkwEYIM$lz-gWLUKv@aX?#*ny;rWYsywYNFYn%k`?w+jTTZX3!yoBI52=Qh)Gp?gifG54o#NKY~I`S)NucXd|m zo05FVeT-j==2S>>>2tphS??G$)#$C`uPwRzzv=$|Reg2W(f*Z zSl4{}yW4tYzR4#ySkCBuE%832%L*o;Kcjw>fuXUe@_)H6io+O=cgg=Gs1(QL#Fs`^5UD^)mWg z^XDv%H=b@S=X&d__P(um9^KP9XL8vo>}F0Qqj1)uRZb5qUP#H?eY`9f_*B$tw%U{p zk-1@W($7ziyzzCxLN9Kg4PCzWg}oX}mma*%I;CQX%+lP?A%%=FDIyM)CU)J9|H|L< zPig+wp0S!0n(9OPYvMO)9}XzFw`I>xag&pQY8Jj87LWPP9A5ae-(GQJcry2)eO|YF zKK!y)@LekR^mx>Q#2J6y6w5Yq{VYxUToB?hD87h2K}K zYSK`e$29d`(3F+O?q1lT_hNQ$%%}7ENoCpwOQWA2EZlZK$2U4WTAYJpW^hyO0DZdr=J6_2U!x|VLVR5;47u%eLjLZ8q zR?PkDwO#$CxXYgfKL4)n4-K2zaea5t)s5?S_Aa`}dLdb8=dtZPM@xKnKKdf@>FBpz z^*^qpba8!tKhbLPfl14MueXTV?_4%e(y={^CWy&Vidpx}=J`1;A{JvuGd-Vp5 zA0Hgzw7RCcUaS1aKJ&&R=fj_C>i+!Q$CIy}ce6Mt(C~^3f0UW)Fy(p`3$Az+F3q*?`AmnNn8TRM7LT!JSlDGIuVy2R|Oyv6LE&Fxct z?ZEAdsa-lZ*h^ZUPA_9UdC{e6>WQ00TE5#j@uOp%_CBsYgXhjJzLN^C9afto?cn@%)3Y6I?iG8Ix9QBfZS}T)$L;X! zY9oiG4(e9B_x)X0b=%p&lvTyWL^SZJP4;eh^4_uCd+DZ=d6O&l#w6W-;FK|cvR3e+ z%Q|M7CnaZUadfG7ty<3+SgSfYxw7ozo$YIa6}QE$eOB=~S?{jyPMwuJ%CF?MU3H)G z;i=`{twl>U1OKxByuZgTi2s-DqBSBAOSJj7ZP(*nx^a7v&AFV`ki_qg9a>K9*NZZe z%`0IlXkwacn{VN8+QY+d$Bj>(t2SAePR?jH`p=Nlo4?y$bkbZglc|%glwS$-T~O&D zdO;}2#gyTdzud&}yb+dO!Ek58<7Bkz%*5Zk6m<&pm0;Plr{?hYnag zKD%L^%_jw;&xceMC31Qnv0LZH&vm`|>$d1kf!z0wy;E*3ycgN?xgqU@M@p=K5^G?n zi-}+Ge}?O;Hd#;p(!HoIK&?LO{;JjSoF5j)EI6^h62D5s^Xt3PYJ zNJ!L-*R|ZtK~E}ue{-GGzvg0gB`HsiXY0-O*7DBa>e|uAw(e@urik1RYt5`}q)Vi8 z(jFe_6|yk8lJU0RJJ*b)jut-Tsy|q}IH}|rH?CgxQcf?i%Jx(!~IDc%)Ler~VkL)G}e)f2^ z>W0N5hnBV^4c8}UKka|?>i4Z}&$x@u$X}nNcQ5-?WaR^H+Y@3YD|Oj}dfHg_$R{2Y zRw&%6829$!2QxXg50(EO-D#b$J@K-Y+Rw^fwnrQD!gt^Hz5T$#Aw%ml)914%6;xk6 z%h>eVLHVAU&`yWAyo0B9`#UsG)DvH|;dxZ|sat8=Ct2GSzg0faRhL&};^ukpX^cr` zdc(?&_Uc1lL%HLhoSu~saWBa|Uv=Lt#XDElUgB~IeSeePGW8OJy7c#ZUrw-kRD=qK zKD7P?Y5(jqRy?x9wT$P-nv*?0wDUH7P;72kd8m`?hn7~|(G~X=ZjE}g`+2d$=G#dQ zJ=%Sfj72AA2!?Tf+N;zt=jy5{OWnU9Mg%uNOq{ZEPvwoW7pIJPias|->rb;`ddra% ztG2jETKjc^pPi1`qP^M@GJRT~gg(7qzxBXs^{XDBJT|p=zx>wNV>9VCQ zv74>)4(@n7G5$oZ&T2z-A^iY#J_VsJeb3oRe?OPPTnwugCttAPSfTU=R^io0{@XBn@sHx4 z!mC-`zl&$xwOq1pac|0Z>$TUFG+yfFRD50LdZ{=^Q%QMUGt-I#t0tAKULqT#?;p;6 z{J!tEg;%UkWnZ&#dRx#u!L4U<+=lzP{kQX!M?8Fh`;kUG{;6PJl&hAee~JalJ1mEQH}3jEccsG!?E(qr0(2pefvHxn6>RNzvZP^ zS?zTK41N z<6<^P)L&4=FVJQ3M3vB8r>BdtgfI7-bfx0rZS}ay%MNS@f+s1desFPd4GsO^vfk`| zby?Dfb+PAUZ$7S1-&W4zXXf1fK>x(nGot?)?j1fiJL^T=W5EFZh?Po<)~=7v<+0Dc zF=yW+qo?(M!mp|P5PoRQRlCcJOVChD`;gv-N1U8W63YW7%vj0EsaL&~{nf>7{~2y< zfB*7**lY1Wx3>IeSeX3JaE;iVi_`udot*ex`|r09?=Vfpldt(Sme;C9*-BpHiM3nO zw{}hOpUnzF?d#j-r+7ZBS_o>|Yb(yW{b9E1F}a7Q)n&JAI9+;h^N#P!bT;NsyfbA< zt?-nvon42Qc+LB~!|ACY_uN`&66t?!e@(cgp08f1G-1W`4B4YC-x4=Coz0h&?H1p9 z=UxAtYfo;b`V@UNx%Em+T4UeO<>wdL>mi5!j%+`c`ob#$@dHkJs z;leUSX7PC(?@rFTlg@d#&BH7CCsVD!95K&pSFZ>vzV=${d$RC$>ASnV{`(yJ%l2>| z&u@CtC@IuB(Wzv1Zup7|g07x{7Jk9=qe4z&CZ|AcH~G$Yx>t5Dh}`XFTUao?=hjkF zLm}I%*P_jyN-=G}c01?9L_NdqJdS;DQo>u0^h&zj28E2K*XL!a{88Dy>lc)q6VFJN zcRrgh$-*6y@$5=y${X>gQv&}p{5Z<^Q+MSy8HGykxUT}2_HygVcz&GIZl!IMyvJ70 zRunmak1@| z-f~&j!p)&ZYA0@q2zgIq++^tU>U-^0*Cw+)yAE7Y+r;hD{>awqp5Ed-zArPnS` zdEeo@C)7n%Pmou%SazvVOx44Mtn#Tv^PI`WNs2$E z=PX)OuqDS?cvHfTquT|KD@&Wb4k_$AW%1DJ;m3dKG6hpTkMm6RxuY6ntfUkg8oKTg zsEZZuJ~!EWR-z=I%%q6k=eI+4r`P;(m~y%Hx61v%O*Pz$=EkfLZ&WJS#~pE(mG61? zBfr-TgrO$If`p_uHMm2VXQh zth5f#y*W8WPfK`R?ba``zqcB5vsLc=vX66J@?&jKQrGNZtz@{T%e@I7r4}tPI}(;+ z=Y71(^n%UIhIM2A!Kpl5z}edV!dsg}%ZymlD&-tJP}X1MKu zNz<)eE`ORI2#S996lswbVLKv_ecrNf;~fh-&0F3YH^lc;ea_vJ71Ve4-2G$??!q}o zsyFvdG%H>rprO+8>WK@dTt@T@F%PeU3wK+*zUzA~F}3Pr#ol|1n$O=^|LM|W6W;@T zKiYzu?-xBXJ1}2ug|lqSS2K=jQQ+_ivsP+uemGP5ch`T0Vr}Q6dAzcvnn*y%mflSb(c>S%t;q1?0IhSB}n(TjdJ0;+p>@Kcc!F2{pSAIYsap<6M2SCDw&H5 zPKF+Jkz1-?HP_9fsiQNlW4*-fdvEvitDg(sJhgfA=N+qWwm!I1_4hgB?%n#QdSxT` z`6O{=9_X%F9$ql<=ijO27ld|ucx{jSd+CG0i|HGt-HL7(dVlRs!S5|`>*AHl_r4cB zq7v%zz`5mPXw=?Hv!^qjOR%mldAfr|bF-e<-{X0fhBLbFZ~4QzEix!Ne}T#8M>mbu zDM|CrZg{lCtLv6!+~SQfclX|Sdwu#^fQD#w1eZr*Z&OC3Dqmo}> zMX0~jbMSadh_&yj8P{x>uI*W{Sfhi9-ta;5ei2M!w|)&?(+ zd0Q4C@GO=mX0Bq#f!mvU0s}lRiMX1>`QUKA!db(&AtIpZ8bPERp|W?V3~2bVD#d z(s#NE>ukpES!a&FXX;_{XjBxrq}_09A@{{O@1$_WC{{LEw$({o z^X*F9_S<@U_PKDw3whRg3Mw8vOfoyqt>-@MTWWNF^?h44>ze+`D^|-SlC*h`cAd`I zbV50I+l>VsTTw_hwW^>DV>F%ZBN-gy64ZXDwNH7tcHN2K8Pem<-4C7on#Tm`B zpGACoUMzU}!-lO7CbQXC$N9LqT%Inzdr9BrHk%HSc0ZRwX0eOgm5jPxFE8vn5&F_A zXzKADF$z%$p1ba*ySH))t1J1;G&hRT#Ope_=JNQ-05rzrA-W(}iwil%xUYc9_GB0&m{QaGDP3+pT-KCRm3Y|`G zI-()=O}bmmn0JB6VFe9^8(b9}9gCEdDwI^cN^y<-#@^51S*>vW*S7bYKE7UXOh-pp zalXL8t=voZnXBswt?XJM-J{%bv8!wGiBpqSls0B=h`Dug!^e)BVRoB>wBMcVdK?rP zHm_gJ`kniv!wvhEOVuuq))Nh0A>OL;Fns?~O|Nji_vKrYzs=nK`s*p(T{m<4o}ApQ zYNKl?*>=?Tc#Khq0Ha7yP$;PVy7FAh8MD5F$Co_a?H+&h7@zl|vb3w4vI3n8H<*e` z8Jn}XTwmgQCGomI)tpYzK*p>PP^uw)L^=Fpp!l_^n&&?6J=^tmP1V)p>x>f;!V_Di za$e-FI=$WQNqbc7ckjKAcjod5Dsa1awJKa`i3;`FtLgRPbIh*$&B?|_)l)1#OLeU^ zyAxfLTIaL;Zb4LPTcd5-<8=(`T1{OZOPn;8O#0*O>bvimxbE5=DLlX1JbAZ0P14gY z&J_^dexuBw=t0r1W1rl3_f@bx*7W=Vj>z&orWlOfYCYkuV#q{0!uD3y{@t#Wo`!2PM9=A*qqeXM(hHVFpeI8DX zRy)1rUHCD>ioo>}y*na%uDM*9cE7n~My$7D$6cGn2Tqkc+l zSsC`^uhNV8Q#j|}+Wu)d&4d&i-Jt$7}I=OrKFFvIS9UD>(oTz+ppsAOqBk_V# z!_pUb?XB}pZ#I$E7d^bzFuGa%?74^{&T!%Sd)5EG#J5UHe|Qn{GWhw_=Y4`QZyep<#T#5@{ds(q_V&iHyK8_u?mtKjzWKtycx-Z|P z>++ef%viI;%DoYWC(C`xMW;@Rx&7{t?k1DA8R~b;Sp+?gd$MjjzIx5+BNG^|IGkR> zExOF$?7^NBC-QD*C%W$6Ut2lT$D!@!n(E>?JC^B6F4FhdR`^(bbnl`cy(Fg z9KQVCIFV<^c6gQ^TXuU%*Mcw7ZtJ+4e$)j_os>9jjwoBQ+0Ea#?rO${`AUDI#-t+Bwl4AU&2QHMZnO$>R z_f+oHn8e=?ciCRgh>8PfS+493S1c=XIYrM^je~N5>+rjF-?9x99gp{n=_|UoKzU(;a_XH{wms zzlYCWZ#MtWpjDT&%(%wkb@v_i;wxM(`={uM3ffdYwPp2susL~?d#4n$ScUGfwnw&- z6Z$xA>nW{T$grqD_0+0Q^X#;P_gxlTeE7}bZOSfvw|TZV#ZQpV5pW4UA@{+>pJnYo z{hwPi|1&rp|C1a$7usbGn%aMO>(7Ulc7X+3;=<2Jsw~{qI%Vbqg_vIN({d@lc8EO@ zFMDayFvo6_Y>?6f5BoKrt{2?c_3L}@gP*g@W{M|PT_~U7C%BuX`e{#HByOWG_-TP!+_L!aa zZC|q^NLlIDCDc;xVVusknzlP%=ly5MY%gw96qM^WY^aq&PT$|$9 zRZ{jH{l)x*&*;3@>ZBh#9!;`i)7`eVIfb96wNf@Uc`|>&XPy47A~9{+67x14n!8E& zfyAc;Ct|0nzVLd^^=4XZn#N(d*DE@17G*a*FJn5q$n8N{_+HNbv~cg%%Sov-(>x~0 zDsOky-aYNbw}AIn%_okr7dU)azSq;uU46+MmQscjVy&55ZoM(vQD!Z>O?TJryuLdg z1&@q$HcGY~W!*MACy<4~RUjZxP*6}%dpa~_qLt~F@K3ctHEohkkGfg*Z{P0h)4z{h zv0h~4^nuDvS{~}FxE?BUS$(KD$_g|Sy&2a6G_8YB+d*CXAhO&I(iu{ZG_Z)e zY$E~Eh=Asmkkv(X6HEM0v7CP!{WUcE!>3)kQX3fZ7OZNRsnIoEj$>8F9(DWet^XNb zW)-h2T;L zyg&W!@g?T(OpA{t-BL~Z!TNIc8Kde&zN?=3#z<+nw5*yG<TAc3!eZ~E z+A|*QW;=66rcBT0^0Xa>)t`1h+8*s79#GJA(Xa26?LX1~45x!0T7*8H@~ja#n5G`w z7nhj4Epz+p4j+qc-}syl^9f(NA0YCydYgoB>7|D@3@n|s9$j07FI3jfx4QGYUumOZ zd7ARNYbr19Vp^7WT`OH1bERA> zA3t1>v+Hibgo!>=Q=+@w60GiTzISH#hD zuBAQ~8EwC-WQFfZMsLl7;yq}}Qt+aOo&Omis~(np?|s~N^RxTM^hCQt-S4yGtP6K4 zH}xLbc}MEK(uM{5e(c)yh-*@XqED*uJejZ`H`D$eH?&#yvTuKW<+qJDBmP)le)NiY zV%JywlZp~1D}TCOJnCBTtHq^im-S(0#<{O+?=Stj?a19}x}DoM%!zvP?O>$u;k_w> z3j1=VPP(G>$n0~I7uN!h*5h1@_U~FD_v+v2c*)rCFQ@K)zw$l&ThxzJul6qsd%th_ zuKk;?9}5rtYqY)gtL@dl)AkwdTK{tD?)NL-t$(xiSm zvG2<^?!UX{TIF^Qv1P>)Tu*-TY)HFP=uptT@{kD2OVK#*gQ7LsI~#A^-pn(@@QK%3 z=~Xu>uQlAsEY>dip0cQG@qdQ7zr_#jBf}Mj8-Hhgt3I-^-Zts?=7=Z8f1c;GKhb$+ zP_=ue@r=IT_dXtqlgzv>7y7tQDlQ~=s;@m!Vdr03pSr$h-RfVddB0y(ul}uDlUf>o zS-bpxn701iUCF7rb7hmSN0)P-TIZ84oVuIuWPPXQw;MijKeS$&oo?~qaAR7s^0>K8X?5lgAW_pEuRKduow@&4PytG&Cfm^mETEM2bT!O_+I zGwb_W<=vUE@Mr^rm|0O*}ExlL~)*R0*BFU|Hgaf9Pr1Kp4F=k;#kJ85Vv)*5Q#>AE?@|BiM1A>b4Q2A-Ex=} zQ$Cx{f3Tw7z&_Om!yRG5#qsQ{M;`cZidU&q=HQs$G zvL4R&lrx+bt(tP#{J^=5n%}vv&Jv#*wJG|a-Flt?!AW=by;PIVuTbYo;bEHZ#j$wq zBaSX5rMy2Fmcc!ZaFMUIV_RkNb^kkG&8%gAw^Z`(Ehy49^ePs6;H2IsZREaVqVl~i zWxvTuPVR@BGGyN8_$Hh0mfiI=yI(BD@}uNbIme>{>az@-gaZTRL<0jWUiw*nRbRF9 zUfSkAqWsU;-z=ZG=05|g^UucLn$NQB4+i{8s5@0T>->ih`x)|^7EIr}aZ=LqoqQtF z)#sCb#x_fB5ONgx6tc^8Yk$>ycdidx{vNm+@+73es%r9|P_HXL*Iw7rId#7B;Y*3S zK&=ClT?E*&Jx&Wn6}NnNCH9nAZRH{Do*gTix-ZSX6%w7B->p)cIp^+IyWEWV6B30N zJM1(&)zYsxVYBOW$qMl+aeV!9TLR2B(=t4f~^GOQ@zGuvaq!L~rlW9)TswdOLudwjN;>jLZ{1&9s^>W6|YNtontd}mF5yAU+dG5C3 ziiScC=XSSv8ujk%Na#N%_q3gJQKk>a43$DhAC}eoh)NE--gMn&)3Yz0%Ee=rV$Azo zs`zBXE?&k^@m4?a*1!KmpG)3d@Oie|+#^OabZ*bs>2;~xcX>gj5_jRVn1rL-W*iH7 z7!Xmg%xc}2k{ueoB@#bAzlxY-vrgM+cYEaf+2YpQ+m{@k@_fnUZ(3DT?Q3gSdL27( z#p>V9WSKJ2SY&1~F?QaTZ5xqS^TaB-M1Xmltkb#!QSbaZq~J-Jjf*0ft_V{-nPso6>X zwYJaYDo+~6P0GCXaK{3!kCV1tl5Sgcp=2A!9*!<0)pC=iT8g(0=R01uNNra-z4c8^ zH^=~bRZCbe4Za=u$aU!E-`pV@2w?iF6MFU;^o=sV*ttGXeMf}t8yBk>g{di>d zZ`J%BpH|4tC@UIOFopS(?l!rP>{A$@UzvL6@sF?b#kaA}J1%_kQTKYgMeC$n@^(G6 zdfk?`$}R2T%!xv)Rtl|Jwd#7Z*Ne|S`qDQdo~-fKZF+J#`+uXT6mDr@8#q^&i|x>d5$Ole8io>iar zd=FWw-CNiw^_t0dQUx=NKd0R}x##8TvZrE49!gHs+%0jmE%2C3Q0|e;eH-;AK2C@CgFLI)cUwR2obn>q?3GB0T(sLsx##PTa_)F?Ym(-dn=hd*-2eY3001u~EC2ui literal 0 HcmV?d00001 diff --git a/doc/src/JPG/examples_mdpd.gif b/doc/src/JPG/examples_mdpd.gif new file mode 100644 index 0000000000000000000000000000000000000000..29ace1a0b2558d110a9afdf5f2d136121e50d628 GIT binary patch literal 916813 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%0DsN5@+YzXn8@T5A0q!dd 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πOI7+!E-uD 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

SfU>!ip*zl3(PoRV0A=EY~N;9iF;3(qBkt$ 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ɴ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 LGC>a>V^xs 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

>P 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

_WA#X;Q#?W`P; z3W7Epm<0kRw1|9oz^d-RA{~^m(PxK)e{{z|**gna<4YQ4Jy;7n>OZqaNhk>$%s8mH z7*U)iRMv+Z0;s^)R#3SNI z6!gNawi!FsJ0CYv7# zoLwS~tQ-&7q-DD~JOU0$w+Ob|^C(Jq8n6laIj}|rEEJ0}ILLn~fYoM)!rm4J7O_PJ zEZj>Jxm*jJx%@7$iOhMx81dk3g}=f&d5*(Od;!gDN(wx}F$b9V8yYxx3WI_^En?Yb za8OokhO2QugJhe73+Fq7xi0@ClH`ANu*#$*vIt(keQ)Q<`__*P*yAb^MK>56(!F)z zj_Qm9V)`GPi~<^1tb7#tHeO)*D^S>;pR!ub?nJomh1bmba}MzIG%)|YrO;!h!Nk|* z;m9f0!6LFkkyn4lL2)xqw!;xhtTB2`LTQqXua-ElBwS!pUle{&WQl@AnZ+T&X$)-> zpEq&jD>VI63hdT=QCWW2qDefCp<6J=m3yzoYsG*7mXCK7IXgPug$5n!h?=nAQr(JD zPNqUu5F7r83<1^zi5|s<9nAJW znRFOtD=Rd0STwsFU@?|plV8wmTEWO)!6^TMLC=HP#e!LN!!(ZxObIg$)in}p-n@9#oD5A z@+u}%jiz7@7EWtMIRTw0i$+%uX8r;Ot`pnL4O>hVSTqgTEE$**ELf~RG_rqa(obl# z@?f&`==ryi*(RbnuA}wQ;v)i=+2b0T#V$07KVa2e(5TFyYSqykcc4|dgVk;JDk}%3 zs03y$gQn^QT>3Mb7GyH3Iy7=*92ECpQz=jjtY(h-!EO43QLdsd;RB#Z^|6nrHU`kD4`4`b*70j&vfHjAaEi8dqpMk~VN3+ro#?PG= zO^$32FEtfAF}Z!QSwA(rzS9qd|>8k*(~VM=&)hW zN@Yg=AB|=fO)4i^tv4{N*x0&8lF`(GQI})pKh+=2aURUBD_FTb7{h%U4R)@xp2=jT z(743e-NBPf2)?Cr*KjUn-q?oV(qlkbqcSoym z1FN7%vx!98mV->OFPLU{vg=ATa_?}|PhjbL(wN}E=+x1q718pstLczeBln6{;fR%P zFBm0WG`cdda6e$oUd&)Bz$Vhsb*g~OEZwHf-LX&eqbCv}YXJ>=uQdT94roSFcrX398 z49)QjEy@jyMlYDeJ(`cMYK^?Xq|(vAv4HiM5@U1(Q{k+p*9lw23mE-04$57WzQN6} z%+My$z#MvIO<&z-f&JVK)Otb^+_gnfhxw8&nrGxCu0QR5Xh#To-4! zAo`o_=;|a2+ z4SP*o+3rQ&h_0}6HE6Q`&@B9cL7oFtELur0W)wBMu3)qAXtGpb68XVo%`jcufmvST zto)CqZUKj*7H}ATVpb72sJo!WeuJ)?zzTVft=0>=bYwV%cd#mIFgsWDZ_{C#p3R~% zVUx)ZSqlxu+6k?q4PmgDL$7llX_`**uc=7c{ga8dV}@X)I`R zUZH0$(YDp9QP`vT&SvJwiUxLuZcPEUAPL4mCfRKrO{N0+DiTa)KUij%FiJ=?c~~%6 zzhEj{z~r!iAwi2|hL#|$ z=GYfnRZC-oPcp5oZBAuqRy*7rvp`tlN0YU{&2-;p%L-=B$i^ql+Dil&l?s}j8P*8@ zU=%iJVoc(~EGK2L!7mHs4vlM5$HAB0K zN1NV;W-EbK}CQ-RXdteZZtg$V%D3{tn#r* z$$?GqMXQiS)8|AsujnSf3lhf_m;y4G9U5#!Zb+zXXb?4EQOY<_@kZg^#r5_YjaD1h zIyW#|2QXVlH=R;svhrw(%8+!mFp(2rlMp-coWc3?rnQAzb#Ey*=`LW@l~|MbVUg*K zdF2n7Ua2t7@0Pfs*>s2Nl*tT#{Q~A_2IlA+ZiX&R8b29(I-B+XeP~XIZsPvHWM

es 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

iUF^!b@=(l6!cBb7hgRhq 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
)Pe^60}fnA7^EB;IQBS7n=ED1I3yBt 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

%}7t0rgL|MysTQmRPnZ_BAOrG^lQ9;QG*bvqydM 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�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

yf7dP98^u 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

    (ohXKB_z+WgHh6n6*EA zDEi2E&w%&;1Wub>Y+EIBwz_kxGq5!XaNNjZDhQY;GlMByfVIJ4RZ$+R`T+);1I+db ztd$8IJqI{rW-?FOz`$w1)Utt5@&boX083l|gE#}b+64xo0LH@(jNvaC`6e*TjA6A^ zVDV&OKj?hGpE`emRt{ELu zjvN(<@>uioceq=(QN-ncwP-uYbz}FnNCrRinYt!#YUOvgn-i4;uZVbFV(U}n-e9s| z#{x#rS=v2wwj>rk

    1$c%x7$@GxwOAg{ojiXaZpN%HDqCZ{Gm^A}buxRtPxiA89U z!o;kZD;PAoCb+r^{E6W3c*~i*Q|FI?iGo zGG;}kd<;62@nTk@@&uiQMXa22RQF26aj;kjOkz=fcY|}0^CVfhiJu|_KR)f|w3F15 zX_&lRK$zM2UV^~{XNxvg=@yq86AnAh(RN*7vtWbcMP{~8j@X1H2i>I%G$eSPA3bIj zO6b(N^NLYWWtqnk9^zJSQ@D%OjKuxT-+hol*rQU*tJ7}lS}Kw z!x>f@0V&O@E!oMPdJTe26XdUaP~=kT5@6ad?lmJxBK3(!GjGZiiL|M4A3hq#mR?U4 zH>uqb@US=f(uSqo!g>aYy~+YRllr44e9)Sxpuw<=UB7|hNT;n|K?1)@lLbqkvsuR@ z2~9pmLsnjy9|wDR6jnMku~tMJ;a9t~+lk3y&IN~F-ij3q+LfMkJ>m>ozhP0Yuv|q0 zyU3n@8&r9fd>%M*DvB(8#G;&Vp@~;F#-d3y@>$0Atkvs}{gMycGcj$h?gx)%F^e?I zCP5Xsm98w@86Op=aSIea5RelSV47$)uRvj>XStGT!lLVVh*foISy{28Z2B4 zA6e8Sl32tHj&PnyXj*iDQBtkLfvf2ubE3;aZg&MHo*)D6xHSj4&pkL|6=C7&6=tLo z6X9;1!O#}Dgi%m1z)6HDu~Edt!7RSw0IS%=X4e1(PFDve30A|F>46WJf*7VUvlKM( zrYJBwS}-OB{Yz*)oyowQcE(Y$C4rU8#gV-=!damtph09xP()A$Gc(tLX8R|Hcxybb zaH2y9bioI9(+yl)EeuVH4-PRnq#R(hdeF$C zHQ}tAP9LMtfd+YrT`kc83#?7> zH3OPt(-ifh9$a1(zIK+?o(rwZ?kaK}2yjsnYh)77c)*yc!Bkae*yPNUC}_0n5VwRv zr(%YJZGS)$i^PO~Z9i8qvP)DjDaxp~DoQ8`X`DU9#G}B(!_vfFpwSRp`GCz)r)1*VCuLM{uqy)7C! zrX6Tj`Ju?)Zozm??*YR2a3!MSY7|Ea15Tz#l|1h&>(m~k)xHPiA}GdfqhFOZ^#Qr0kOtb zIS&Ov#cn2Mt$=p!4+@MC9S(920_G|{Imo2`<1mNT0uI>_#XL=ciPA3$IM`-9VA;B0 zh3KLHCT@j8*F`i~j5-=xQY946W+fct?wY`4B9kZ<`=ZrkpKZya?iAib9jvw!7PN6} zImleF;*iv(2XZPZ@0g+;oSGl*ZWJ^~6tpp8;lCD8@PsRo-*Sh8h}eM!;fMtZ`3y|V zB8`l^5sB=b7HSVayAIEI!GvT zow>lOeC-0KK}$3D&W^)IX2B(ws{h^Q&QV}8(yD0D+j4N4iv}aVp93?O!#Q5*AIu_p z7mTf5CF8U%pnUL?r;X?%Vs>Nx4O}+SoDF#Mc^Sj zj|T&*zyoHkDSjN`6Ao2>N#b!

    SHKU=}pl(4tv#h}|`TS-Qu7UH6P4Uxr7k<%A`d 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 z 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

    oTq5QCG}9hCbT!>Crux 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

    c2Clpagmd-bf~sk_vwUv7SlJ2#%WB`$h!vXYZo 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 literal 0 HcmV?d00001 diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt index 571c6c4920..fda727ec05 100644 --- a/doc/src/Section_commands.txt +++ b/doc/src/Section_commands.txt @@ -685,6 +685,7 @@ package"_Section_start.html#start_3. "drude"_fix_drude.html, "drude/transform/direct"_fix_drude_transform.html, "drude/transform/reverse"_fix_drude_transform.html, +"edpd/source"_fix_dpd_source.html, "eos/cv"_fix_eos_cv.html, "eos/table"_fix_eos_table.html, "eos/table/rx"_fix_eos_table_rx.html, @@ -704,6 +705,9 @@ package"_Section_start.html#start_3. "meso"_fix_meso.html, "manifoldforce"_fix_manifoldforce.html, "meso/stationary"_fix_meso_stationary.html, +"mvv/dpd"_fix_mvv_dpd.html, +"mvv/edpd"_fix_mvv_dpd.html, +"mvv/tdpd"_fix_mvv_dpd.html, "nve/dot"_fix_nve_dot.html, "nve/dotc/langevin"_fix_nve_dotc_langevin.html, "nve/manifold/rattle"_fix_nve_manifold_rattle.html, @@ -732,6 +736,7 @@ package"_Section_start.html#start_3. "smd/move/triangulated/surface"_fix_smd_move_triangulated_surface.html, "smd/setvel"_fix_smd_setvel.html, "smd/wall/surface"_fix_smd_wall_surface.html, +"tdpd/source"_fix_dpd_source.html, "temp/rescale/eff"_fix_temp_rescale_eff.html, "ti/spring"_fix_ti_spring.html, "ttm/mod"_fix_ttm.html, @@ -836,6 +841,7 @@ package"_Section_start.html#start_3. "cnp/atom"_compute_cnp_atom.html, "dpd"_compute_dpd.html, "dpd/atom"_compute_dpd_atom.html, +"edpd/temp/atom"_compute_edpd_temp_atom.html, "fep"_compute_fep.html, "force/tally"_compute_tally.html, "heat/flux/tally"_compute_tally.html, @@ -868,6 +874,7 @@ package"_Section_start.html#start_3. "smd/ulsph/stress"_compute_smd_ulsph_stress.html, "smd/vol"_compute_smd_vol.html, "stress/tally"_compute_tally.html, +"tdpd/cc/atom"_compute_tdpd_cc_atom.html, "temp/drude"_compute_temp_drude.html, "temp/eff"_compute_temp_eff.html, "temp/deform/eff"_compute_temp_deform_eff.html, @@ -1024,6 +1031,7 @@ package"_Section_start.html#start_3. "eam/cd (o)"_pair_eam.html, "edip (o)"_pair_edip.html, "edip/multi"_pair_edip.html, +"edpd"_pair_meso.html, "eff/cut"_pair_eff.html, "exp6/rx"_pair_exp6_rx.html, "gauss/cut"_pair_gauss.html, @@ -1041,6 +1049,8 @@ package"_Section_start.html#start_3. "lj/sdk (gko)"_pair_sdk.html, "lj/sdk/coul/long (go)"_pair_sdk.html, "lj/sdk/coul/msm (o)"_pair_sdk.html, +"mdpd"_pair_meso.html, +"mdpd/rhosum"_pair_meso.html, "meam/c"_pair_meam.html, "meam/spline (o)"_pair_meam_spline.html, "meam/sw/spline"_pair_meam_sw_spline.html, @@ -1074,6 +1084,7 @@ package"_Section_start.html#start_3. "sph/taitwater/morris"_pair_sph_taitwater_morris.html, "srp"_pair_srp.html, "table/rx"_pair_table_rx.html, +"tdpd"_pair_meso.html, "tersoff/table (o)"_pair_tersoff.html, "thole"_pair_thole.html, "tip4p/long/soft (o)"_pair_lj_soft.html :tb(c=4,ea=c) diff --git a/doc/src/Section_packages.txt b/doc/src/Section_packages.txt index 16864bcdc4..6122dfac78 100644 --- a/doc/src/Section_packages.txt +++ b/doc/src/Section_packages.txt @@ -112,7 +112,7 @@ Package, Description, Doc page, Example, Library "REPLICA"_#REPLICA, multi-replica methods, "Section 6.6.5"_Section_howto.html#howto_5, tad, - "RIGID"_#RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, - "SHOCK"_#SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, - -"SNAP"_#SNAP, quantum-fitted potential, "pair snap"_pair_snap.html, snap, - +"SNAP"_#SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, - "SRD"_#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, - "VORONOI"_#VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext :tb(ea=c,ca1=l) @@ -134,6 +134,7 @@ Package, Description, Doc page, Example, Library "USER-LB"_#USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, - "USER-MANIFOLD"_#USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, - "USER-MEAMC"_#USER-MEAMC, modified EAM potential (C++), "pair_style meam/c"_pair_meam.html, meam, - +"USER-MESO"_#USER-MESO, mesoscale DPD models, "pair_style edpd"_pair_meso.html, USER/meso, - "USER-MGPT"_#USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, - "USER-MISC"_#USER-MISC, single-file contributions, USER-MISC/README, USER/misc, - "USER-MOLFILE"_#USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, -, ext @@ -1342,7 +1343,7 @@ make machine :pre [Supporting info:] src/SNAP: filenames -> commands -"pair snap"_pair_snap.html +"pair_style snap"_pair_snap.html "compute sna/atom"_compute_sna_atom.html "compute snad/atom"_compute_sna_atom.html "compute snav/atom"_compute_sna_atom.html @@ -1556,7 +1557,7 @@ make machine :pre src/USER-AWPMD: filenames -> commands src/USER-AWPMD/README -"pair awpmd/cut"_pair_awpmd.html +"pair_style awpmd/cut"_pair_awpmd.html examples/USER/awpmd :ul :line @@ -1745,12 +1746,12 @@ src/USER-DPD: filenames -> commands "fix eos/table/rx"_fix_eos_table_rx.html "fix shardlow"_fix_shardlow.html "fix rx"_fix_rx.html -"pair table/rx"_pair_table_rx.html -"pair dpd/fdt"_pair_dpd_fdt.html -"pair dpd/fdt/energy"_pair_dpd_fdt.html -"pair exp6/rx"_pair_exp6_rx.html -"pair multi/lucy"_pair_multi_lucy.html -"pair multi/lucy/rx"_pair_multi_lucy_rx.html +"pair_style table/rx"_pair_table_rx.html +"pair_style dpd/fdt"_pair_dpd_fdt.html +"pair_style dpd/fdt/energy"_pair_dpd_fdt.html +"pair_style exp6/rx"_pair_exp6_rx.html +"pair_style multi/lucy"_pair_multi_lucy.html +"pair_style multi/lucy/rx"_pair_multi_lucy_rx.html examples/USER/dpd :ul :line @@ -1785,8 +1786,8 @@ src/USER-DRUDE/README "fix drude"_fix_drude.html "fix drude/transform/*"_fix_drude_transform.html "compute temp/drude"_compute_temp_drude.html -"pair thole"_pair_thole.html -"pair lj/cut/thole/long"_pair_thole.html +"pair_style thole"_pair_thole.html +"pair_style lj/cut/thole/long"_pair_thole.html examples/USER/drude tools/drude :ul @@ -1824,8 +1825,8 @@ src/USER-EFF/README "fix npt/eff"_fix_nh_eff.html "fix langevin/eff"_fix_langevin_eff.html "compute temp/eff"_compute_temp_eff.html -"pair eff/cut"_pair_eff.html -"pair eff/inline"_pair_eff.html +"pair_style eff/cut"_pair_eff.html +"pair_style eff/inline"_pair_eff.html examples/USER/eff tools/eff/README tools/eff @@ -2155,11 +2156,47 @@ make machine :pre src/USER-MEAMC: filenames -> commands src/USER-MEAMC/README -"pair meam/c"_pair_meam.html +"pair_style meam/c"_pair_meam.html examples/meam :ul :line +USER-MESO package :link(USER-MESO),h4 + +[Contents:] + +Several extensions of the the dissipative particle dynamics (DPD) +method. Specifically, energy-conserving DPD (eDPD) that can model +non-isothermal processes, many-body DPD (mDPD) for simulating +vapor-liquid coexistence, and transport DPD (tDPD) for modeling +advection-diffuion-reaction systems. The equations of motion of these +DPD extensions are integrated through a modified velocity-Verlet (MVV) +algorithm. + +[Author:] Zhen Li (Division of Applied Mathematics, Brown University) + +[Install or un-install:] + +make yes-user-meso +make machine :pre + +make no-user-meso +make machine :pre + +[Supporting info:] + +src/USER-MESO: filenames -> commands +src/USER-MESO/README +"atom_style edpd"_atom_style.html +"pair_style edpd"_pair_meso.html +"pair_style mdpd"_pair_meso.html +"pair_style tdpd"_pair_meso.html +"fix mvv/dpd"_fix_mvv.html +examples/USER/meso +http://lammps.sandia.gov/movies.html#mesodpd :ul + +:line + USER-MOLFILE package :link(USER-MOLFILE),h4 [Contents:] diff --git a/doc/src/atom_style.txt b/doc/src/atom_style.txt index 077636dfd1..49d9dde791 100644 --- a/doc/src/atom_style.txt +++ b/doc/src/atom_style.txt @@ -13,17 +13,19 @@ atom_style command :h3 atom_style style args :pre style = {angle} or {atomic} or {body} or {bond} or {charge} or {dipole} or \ - {dpd} or {electron} or {ellipsoid} or {full} or {line} or {meso} or \ - {molecular} or {peri} or {smd} or {sphere} or {tri} or \ - {template} or {hybrid} :ulb,l + {dpd} or {edpd} or {mdpd} or {tdpd} or {electron} or {ellipsoid} or \ + {full} or {line} or {meso} or {molecular} or {peri} or {smd} or \ + {sphere} or {tri} or {template} or {hybrid} :ulb,l args = none for any style except the following - {body} args = bstyle bstyle-args - bstyle = style of body particles - bstyle-args = additional arguments specific to the bstyle - see the "body"_body.html doc page for details - {template} args = template-ID - template-ID = ID of molecule template specified in a separate "molecule"_molecule.html command - {hybrid} args = list of one or more sub-styles, each with their args :pre + {body} args = bstyle bstyle-args + bstyle = style of body particles + bstyle-args = additional arguments specific to the bstyle + see the "body"_body.html doc page for details + {tdpd} arg = Nspecies + Nspecies = # of chemical species + {template} arg = template-ID + template-ID = ID of molecule template specified in a separate "molecule"_molecule.html command + {hybrid} args = list of one or more sub-styles, each with their args :pre accelerated styles (with same args) = {angle/kk} or {atomic/kk} or {bond/kk} or {charge/kk} or {full/kk} or {molecular/kk} :l :ule @@ -36,7 +38,8 @@ atom_style full atom_style body nparticle 2 10 atom_style hybrid charge bond atom_style hybrid charge body nparticle 2 5 -atom_style template myMols :pre +atom_style template myMols +atom_style tdpd 2 :pre [Description:] @@ -74,6 +77,9 @@ quantities. {charge} | charge | atomic system with charges | {dipole} | charge and dipole moment | system with dipolar particles | {dpd} | internal temperature and internal energies | DPD particles | +{edpd} | temperature and heat capacity | eDPD particles | +{mdpd} | density | mDPD particles | +{tdpd} | chemical concentration | tDPD particles | {electron} | charge and spin and eradius | electronic force field | {ellipsoid} | shape, quaternion, angular momentum | aspherical particles | {full} | molecular + charge | bio-molecules | @@ -145,6 +151,19 @@ properties with internal temperature (dpdTheta), internal conductive energy (uCond), internal mechanical energy (uMech), and internal chemical energy (uChem). +The {edpd} style is for energy-conserving dissipative particle +dynamics (eDPD) particles which store a temperature (edpd_temp), and +heat capacity(edpd_cv). + +The {mdpd} style is for many-body dissipative particle dynamics (mDPD) +particles which store a density (rho) for considering +density-dependent many-body interactions. + +The {tdpd} style is for transport dissipative particle dynamics (tDPD) +particles which store a set of chemical concentration. An integer +"cc_species" is required to specify the number of chemical species +involved in a tDPD system. + The {meso} style is for smoothed particle hydrodynamics (SPH) particles which store a density (rho), energy (e), and heat capacity (cv). @@ -284,6 +303,11 @@ force fields"_pair_eff.html. The {dpd} style is part of the USER-DPD package for dissipative particle dynamics (DPD). +The {edpd}, {mdpd}, and {tdpd} styles are part of the USER-MESO package +for energy-conserving dissipative particle dynamics (eDPD), many-body +dissipative particle dynamics (mDPD), and transport dissipative particle +dynamics (tDPD), respectively. + The {meso} style is part of the USER-SPH package for smoothed particle hydrodynamics (SPH). See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in LAMMPS. diff --git a/doc/src/compute_edpd_temp_atom.txt b/doc/src/compute_edpd_temp_atom.txt new file mode 100644 index 0000000000..30f8c1043a --- /dev/null +++ b/doc/src/compute_edpd_temp_atom.txt @@ -0,0 +1,61 @@ +"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 + +compute edpd/temp/atom command :h3 + +[Syntax:] + +compute ID group-ID edpd/temp/atom :pre + +ID, group-ID are documented in "compute"_compute.html command +edpd/temp/atom = style name of this compute command :ul + +[Examples:] + +compute 1 all edpd/temp/atom :pre + +[Description:] + +Define a computation that calculates the per-atom temperature +for each eDPD particle in a group. + +The temperature is a local temperature derived from the internal energy +of each eDPD particle based on the local equilibrium hypothesis. +For more details please see "(Espanol1997)"_#Espanol1997 and "(Li2014)"_#Li2014. + +[Output info:] + +This compute calculates a per-atom vector, which can be accessed by +any command that uses per-atom values from a compute as input. See +"Section 6.15"_Section_howto.html#howto_15 for an overview of +LAMMPS output options. + +The per-atom vector values will be in temperature "units"_units.html. + +[Restrictions:] + +This compute is part of the USER-MESO 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:] + +"pair_style edpd"_pair_meso.html + +[Default:] none + +:line + +:link(Espanol1997) +[(Espanol1997)] Espanol, Europhys Lett, 40(6): 631-636 (1997). DOI: +10.1209/epl/i1997-00515-8 + +:link(Li2014) +[(Li2014)] Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, 265: +113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003. + diff --git a/doc/src/compute_tdpd_cc_atom.txt b/doc/src/compute_tdpd_cc_atom.txt new file mode 100644 index 0000000000..58a49fa59f --- /dev/null +++ b/doc/src/compute_tdpd_cc_atom.txt @@ -0,0 +1,60 @@ +"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 + +compute tdpd/cc/atom command :h3 + +[Syntax:] + +compute ID group-ID tdpd/cc/atom index :pre + +ID, group-ID are documented in "compute"_compute.html command +tdpd/cc/atom = style name of this compute command +index = index of chemical species (1 to Nspecies) :ul + +[Examples:] + +compute 1 all tdpd/cc/atom 2 :pre + +[Description:] + +Define a computation that calculates the per-atom chemical +concentration of a specified species for each tDPD particle in a +group. + +The chemical concentration of each species is defined as the number of +molecules carried by a tDPD particle for dilute solution. For more +details see "(Li2015)"_#Li2015. + +[Output info:] + +This compute calculates a per-atom vector, which can be accessed by +any command that uses per-atom values from a compute as input. See +"Section 6.15"_Section_howto.html#howto_15 for an overview of +LAMMPS output options. + +The per-atom vector values will be in the units of chemical species +per unit mass. + +[Restrictions:] + +This compute is part of the USER-MESO 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:] + +"pair_style tdpd"_pair_meso.html + +[Default:] none + +:line + +:link(Li2015) +[(Li2015)] Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, 143: +014101 (2015). DOI: 10.1063/1.4923254 + diff --git a/doc/src/fix_dpd_source.txt b/doc/src/fix_dpd_source.txt new file mode 100644 index 0000000000..de035a94b4 --- /dev/null +++ b/doc/src/fix_dpd_source.txt @@ -0,0 +1,101 @@ +"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 edpd/source command :h3 +fix tdpd/source command :h3 + +[Syntax:] + +fix ID group-ID edpd/source keyword values ... +fix ID group-ID tdpd/source cc_index keyword values ... :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +edpd/source or tdpd/source = style name of this fix command :l +index (only specified for tdpd/source) = index of chemical species (1 to Nspecies) :l +keyword = {sphere} or {cuboid} :l + {sphere} values = cx,cy,cz,radius,source + cx,cy,cz = x,y,z center of spherical domain (distance units) + radius = radius of a spherical domain (distance units) + source = heat source or concentration source (flux units, see below) + {cuboid} values = cx,cy,cz,dLx,dLy,dLz,source + cx,cy,cz = x,y,z lower left corner of a cuboid domain (distance units) + dLx,dLy,dLz = x,y,z side length of a cuboid domain (distance units) + source = heat source or concentration source (flux units, see below) :pre +:ule + +[Examples:] + +fix 1 all edpd/source sphere 0.0 0.0 0.0 5.0 0.01 +fix 1 all edpd/source cuboid 0.0 0.0 0.0 20.0 10.0 10.0 -0.01 +fix 1 all tdpd/source 1 sphere 5.0 0.0 0.0 5.0 0.01 +fix 1 all tdpd/source 2 cuboid 0.0 0.0 0.0 20.0 10.0 10.0 0.01 :pre + +[Description:] + +Fix {edpd/source} adds a heat source as an external heat flux to each +atom in a spherical or cuboid domain, where the {source} is in units +of energy/time. Fix {tdpd/source} adds an external concentration +source of the chemical species specified by {index} as an external +concentration flux for each atom in a spherical or cuboid domain, +where the {source} is in units of mole/volume/time. + +This command can be used to give an additional heat/concentration +source term to atoms in a simulation, such as for a simulation of a +heat conduction with a source term (see Fig.12 in "(Li2014)"_#Li2014) +or diffusion with a source term (see Fig.1 in "(Li2015)"_#Li2015), as +an analog of a periodic Poiseuille flow problem. + +If the {sphere} keyword is used, the {cx,cy,cz,radius} defines a +spherical domain to apply the source flux to. + +If the {cuboid} keyword is used, the {cx,cy,cz,dLx,dLy,dLz} defines a +cuboid domain to apply the source flux to. + +: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:] + +This fix is part of the USER-MESO 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. + +Fix {edpd/source} must be used with the "pair_style +edpd"_pair_meso.html command. Fix {tdpd/source} must be used with the +"pair_style tdpd"_pair_meso.html command. + +[Related commands:] + +"pair_style edpd"_pair_meso.html, "pair_style tdpd"_pair_meso.html, +"compute edpd/temp/atom"_compute_edpd_temp_atom.html, "compute +tdpd/cc/atom"_compute_tdpd_cc_atom.html + +[Default:] none + +:line + +:link(Li2014) +[(Li2014)] Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis, +"Energy-conserving dissipative particle dynamics with +temperature-dependent properties", J. Comput. Phys., 265: 113-127 +(2014). DOI: 10.1016/j.jcp.2014.02.003 + +:link(Li2015) +[(Li2015)] Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis, +"Transport dissipative particle dynamics model for mesoscopic +advection-diffusion-reaction problems", J. Chem. Phys., 143: 014101 +(2015). DOI: 10.1063/1.4923254 diff --git a/doc/src/fix_mvv_dpd.txt b/doc/src/fix_mvv_dpd.txt new file mode 100644 index 0000000000..75e13744ea --- /dev/null +++ b/doc/src/fix_mvv_dpd.txt @@ -0,0 +1,97 @@ +"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 mvv/dpd command :h3 +fix mvv/edpd command :h3 +fix mvv/tdpd command :h3 + +[Syntax:] + +fix ID group-ID mvv/dpd lambda :pre +fix ID group-ID mvv/edpd lambda :pre +fix ID group-ID mvv/tdpd lambda :pre + +ID, group-ID are documented in "fix"_fix.html command +mvv/dpd, mvv/edpd, mvv/tdpd = style name of this fix command +lambda = (optional) relaxation parameter (unitless) :ul + +[Examples:] + +fix 1 all mvv/dpd +fix 1 all mvv/dpd 0.5 +fix 1 all mvv/edpd +fix 1 all mvv/edpd 0.5 +fix 1 all mvv/tdpd +fix 1 all mvv/tdpd 0.5 :pre + +[Description:] + +Perform time integration using the modified velocity-Verlet (MVV) +algorithm to update position and velocity (fix mvv/dpd), or position, +velocity and temperature (fix mvv/edpd), or position, velocity and +concentration (fix mvv/tdpd) for particles in the group each timestep. + +The modified velocity-Verlet (MVV) algorithm aims to improve the +stability of the time integrator by using an extrapolated version of +the velocity for the force evaluation: + +:c,image(Eqs/fix_mvv_dpd.jpg) + +where the parameter λ depends on the +specific choice of DPD parameters, and needs to be tuned on a +case-by-case basis. Specification of a {lambda} value is opttional. +If specified, the setting must be from 0.0 to 1.0. If not specified, +a default value of 0.5 is used, which effectively reproduces the +standard velocity-Verlet (VV) scheme. For more details, see +"Groot"_#Groot. + +Fix {mvv/dpd} updates the position and velocity of each atom. It can +be used with the "pair_style mdpd"_pair_meso.html command or other +pair styles such as "pair dpd"_pair_dpd.html. + +Fix {mvv/edpd} updates the per-atom temperature, in addition to +position and velocity, and must be used with the "pair_style +edpd"_pair_meso.html command. + +Fix {mvv/tdpd} updates the per-atom chemical concentration, in +addition to position and velocity, and must be used with the +"pair_style tdpd"_pair_meso.html command. + +: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:] + +This fix is part of the USER-MESO 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:] + +"pair_style mdpd"_pair_meso.html, "pair_style edpd"_pair_meso.html, +"pair_style tdpd"_pair_meso.html + +[Default:] + +The default value for the optional {lambda} parameter is 0.5. + +:line + +:link(Groot) +[(Groot)] Groot and Warren, J Chem Phys, 107: 4423-4435 (1997). DOI: +10.1063/1.474784 + diff --git a/doc/src/pair_meso.txt b/doc/src/pair_meso.txt new file mode 100644 index 0000000000..bcdf717d68 --- /dev/null +++ b/doc/src/pair_meso.txt @@ -0,0 +1,277 @@ +"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 + +pair_style edpd command :h3 +pair_style mdpd command :h3 +pair_style mdpd/rhosum command :h3 +pair_style tdpd command :h3 + +[Syntax:] + +pair_style style args :pre + +style = {edpd} or {mdpd} or {mdpd/rhosum} or {tdpd} :ulb,l +args = list of arguments for a particular style :l + {edpd} args = cutoff seed + cutoff = global cutoff for eDPD interactions (distance units) + seed = random # seed (integer) (if <= 0, eDPD will use current time as the seed) + {mdpd} args = T cutoff seed + T = temperature (temperature units) + cutoff = global cutoff for mDPD interactions (distance units) + seed = random # seed (integer) (if <= 0, mDPD will use current time as the seed) + {mdpd/rhosum} args = + {tdpd} args = T cutoff seed + T = temperature (temperature units) + cutoff = global cutoff for tDPD interactions (distance units) + seed = random # seed (integer) (if <= 0, tDPD will use current time as the seed) :pre +:ule + +[Examples:] + +pair_style edpd 1.58 9872598 +pair_coeff * * 18.75 4.5 0.41 1.58 1.42E-5 2.0 1.58 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.42E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.42E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10 kappa -0.44 -3.21 5.04 0.00 :pre + +pair_style hybrid/overlay mdpd/rhosum mdpd 1.0 1.0 65689 +pair_coeff 1 1 mdpd/rhosum 0.75 +pair_coeff 1 1 mdpd -40.0 25.0 18.0 1.0 0.75 :pre + +pair_style tdpd 1.0 1.58 935662 +pair_coeff * * 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 3.0 1.0E-5 2.0 :pre + +[Description:] + +The {edpd} style computes the pairwise interactions and heat fluxes +for eDPD particles following the formulations in +"(Li2014_JCP)"_#Li2014_JCP and "Li2015_CC"_#Li2015_CC. The time +evolution of an eDPD particle is governed by the conservation of +momentum and energy given by + +:c,image(Eqs/pair_edpd_gov.jpg) + +where the three components of Fi +including the conservative force FijC, dissipative force FijD and random force FijR are expressed as + +:c,image(Eqs/pair_edpd_force.jpg) + +in which the exponent of the weighting function s can be defined as a temperature-dependent +variable. The heat flux between particles accounting for the +collisional heat flux qC, viscous +heat flux qV, and random heat flux +qR are given by + +:c,image(Eqs/pair_edpd_heat.jpg) + +where the mesoscopic heat friction κ is given by + +:c,image(Eqs/pair_edpd_kappa.jpg) + +with υ being the kinematic +viscosity. For more details, see Eq.(15) in "(Li2014_JCP)"_#Li2014_JCP. + +The following coefficients must be defined in eDPD system for each +pair of atom types via the "pair_coeff"_pair_coeff.html command as in +the examples above. + +A (force units) +gamma (force/velocity units) +power_f (positive real) +cutoff (distance units) +kappa (thermal conductivity units) +power_T (positive real) +cutoff_T (distance units) +optional keyword = power or kappa :ul + +The keyword {power} or {kappa} is optional. Both "power" and "kappa" +require 4 parameters c1, c2, +c4, c4 showing the temperature dependence +of the exponent

    s(T) = +power_f*(1+c1*(T-1)+c2*(T-1)2 ++c3*(T-1)3+c4*(T-1)4)
    +and of the mesoscopic heat friction
    +sT(T) = +kappa*(1+c1*(T-1)+c2*(T-1)2 ++c3*(T-1)3+c4*(T-1)4)
    +If the keyword {power} or {kappa} is not specified, the eDPD system +will use constant power_f and kappa, which is independent to +temperature changes. + +:line + +The {mdpd/rhosum} style computes the local particle mass density rho +for mDPD particles by kernel function interpolation. + +The following coefficients must be defined for each pair of atom types +via the "pair_coeff"_pair_coeff.html command as in the examples above. + +cutoff (distance units) :ul + +:line + +The {mdpd} style computes the many-body interactions between mDPD +particles following the formulations in +"(Li2013_POF)"_#Li2013_POF. The dissipative and random forces are in +the form same as the classical DPD, but the conservative force is +local density dependent, which are given by + +:c,image(Eqs/pair_mdpd_force.jpg) + +where the first term in FC with a +negative coefficient A < 0 stands for an attractive force within an +interaction range rc, and the second +term with B > 0 is the density-dependent repulsive force within an +interaction range rd. + +The following coefficients must be defined for each pair of atom types via the +"pair_coeff"_pair_coeff.html command as in the examples above. + +A (force units) +B (force units) +gamma (force/velocity units) +cutoff_c (distance units) +cutoff_d (distance units) :ul + +:line + +The {tdpd} style computes the pairwise interactions and chemical +concentration fluxes for tDPD particles following the formulations in +"(Li2015_JCP)"_#Li2015_JCP. The time evolution of a tDPD particle is +governed by the conservation of momentum and concentration given by + +:c,image(Eqs/pair_tdpd_gov.jpg) + +where the three components of Fi +including the conservative force FijC, dissipative force FijD and random force FijR are expressed as + +:c,image(Eqs/pair_tdpd_force.jpg) + +The concentration flux between two tDPD particles includes the Fickian +flux QijD and random flux +QijR, which are given by + +:c,image(Eqs/pair_tdpd_flux.jpg) + +where the parameters kappa and epsilon determine the strength of the +Fickian and random fluxes. ms +is the mass of a single solute molecule. In general, ms is much smaller than the mass of +a tDPD particle m. For more details, see +"(Li2015_JCP)"_#Li2015_JCP. + +The following coefficients must be defined for each pair of atom types via the +"pair_coeff"_pair_coeff.html command as in the examples above. + +A (force units) +gamma (force/velocity units) +power_f (positive real) +cutoff (distance units) +cutoff_CC (distance units) +kappa_i (diffusivity units) +epsilon_i (diffusivity units) +power_cc_i (positive real) :ul + +The last 3 values must be repeated Nspecies times, so that values for +each of the Nspecies chemical species are specified, as indicated by +the "I" suffix. In the first pair_coeff example above for pair_style +tdpd, Nspecies = 1. In the second example, Nspecies = 2, so 3 +additional coeffs are specified (for species 2). + +:line + +[Example scripts] + +There are example scripts for using all these pair styles in +examples/USER/meso. The example for an eDPD simulation models heat +conduction with source terms analog of periodic Poiseuille flow +problem. The setup follows Fig.12 in "(Li2014_JCP)"_#Li2014_JCP. The +output of the short eDPD simulation (about 2 minutes on a single core) +gives a temperature and density profiles as + +:c,image(JPG/examples_edpd.jpg) + +The example for a mDPD simulation models the oscillations of a liquid +droplet started from a liquid film. The mDPD parameters are adopted +from "(Li2013_POF)"_#Li2013_POF. The short mDPD run (about 2 minutes +on a single core) generates a particle trajectory which can +be visualized as follows. + +:c,image(JPG/examples_mdpd_first.jpg,JPG/examples_mdpd.gif) +:c,image(JPG/examples_mdpd_last.jpg) + +The first image is the initial state of the simulation. If you +click it a GIF movie should play in your browser. The second image +is the final state of the simulation. + +The example for a tDPD simulation computes the effective diffusion +coefficient of a tDPD system using a method analogous to the periodic +Poiseuille flow. The tDPD system is specified with two chemical +species, and the setup follows Fig.1 in +"(Li2015_JCP)"_#Li2015_JCP. The output of the short tDPD simulation +(about one and a half minutes on a single core) gives the +concentration profiles of the two chemical species as + +:c,image(JPG/examples_tdpd.jpg) + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +The styles {edpd}, {mdpd}, {mdpd/rhosum} and {tdpd} do not support +mixing. Thus, coefficients for all I,J pairs must be specified explicitly. + +The styles {edpd}, {mdpd}, {mdpd/rhosum} and {tdpd} do not support +the "pair_modify"_pair_modify.html shift, table, and tail options. + +The styles {edpd}, {mdpd}, {mdpd/rhosum} and {tdpd} do not write +information to "binary restart files"_restart.html. Thus, you need +to re-specify the pair_style and pair_coeff commands in an input script +that reads a restart file. + +[Restrictions:] + +The pair styles {edpd}, {mdpd}, {mdpd/rhosum} and {tdpd} are part of +the USER-MESO 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:] + +"pair_coeff"_pair_coeff.html, "fix mvv/dpd"_fix_mvv_dpd.html, +"fix mvv/edpd"_fix_mvv_dpd.html, "fix mvv/tdpd"_fix_mvv_dpd.html, +"fix edpd/source"_fix_dpd_source.html, "fix tdpd/source"_fix_dpd_source.html, +"compute edpd/temp/atom"_compute_edpd_temp_atom.html, +"compute tdpd/cc/atom"_compute_tdpd_cc_atom.html + +[Default:] none + +:line + +:link(Li2014_JCP) +[(Li2014_JCP)] Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, +265: 113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003. + +:link(Li2015_CC) +[(Li2015_CC)] Li, Tang, Li, Karniadakis, Chem Commun, 51: 11038-11040 +(2015). DOI: 10.1039/C5CC01684C. + +:link(Li2013_POF) +[(Li2013_POF)] Li, Hu, Wang, Ma, Zhou, Phys Fluids, 25: 072103 (2013). +DOI: 10.1063/1.4812366. + +:link(Li2015_JCP) +[(Li2015_JCP)] Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, +143: 014101 (2015). DOI: 10.1063/1.4923254. diff --git a/doc/src/read_data.txt b/doc/src/read_data.txt index a8aca53693..747c3e752d 100644 --- a/doc/src/read_data.txt +++ b/doc/src/read_data.txt @@ -14,7 +14,7 @@ read_data file keyword args ... :pre file = name of data file to read in :ulb,l zero or more keyword/arg pairs may be appended :l -keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/types} or {extra/angle/types} or {extra/dihedral/types} or {extra/improper/types} or {extra/bond/per/atom} or {extra/angle/per/atom} or {extra/dihedral/per/atom} or {extra/improper/per/atom} or {group} or {nocoeff} or {fix} :l +keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/types} or {extra/angle/types} or {extra/dihedral/types} or {extra/improper/types} or {group} or {nocoeff} or {fix} :l {add} arg = {append} or {Nstart} or {merge} append = add new atoms with IDs appended to current IDs Nstart = add new atoms with IDs starting with Nstart @@ -32,11 +32,6 @@ keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/type {extra/angle/types} arg = # of extra angle types {extra/dihedral/types} arg = # of extra dihedral types {extra/improper/types} arg = # of extra improper types - {extra/bond/per/atom} arg = leave space for this many new bonds per atom - {extra/angle/per/atom} arg = leave space for this many new angles per atom - {extra/dihedral/per/atom} arg = leave space for this many new dihedrals per atom - {extra/improper/per/atom} arg = leave space for this many new impropers per atom - {extra/special/per/atom} arg = leave space for extra 1-2,1-3,1-4 interactions per atom {group} args = groupID groupID = add atoms in data file to this group {nocoeff} = ignore force field parameters @@ -62,7 +57,7 @@ simulation. The file can be ASCII text or a gzipped text file atom coordinates; see the "read_restart"_read_restart.html and "create_atoms"_create_atoms.html commands for alternative methods. Also see the explanation of the "-restart command-line -switch"_Section_start.html#start_6 which can convert a restart file to +switch"_Section_start.html#start_7 which can convert a restart file to a data file. This command can be used multiple times to add new atoms and their @@ -269,11 +264,11 @@ is different than the default. {angle types} = # of angle types in system {dihedral types} = # of dihedral types in system {improper types} = # of improper types in system -{extra bond per atom} = leave space for this many new bonds per atom (deprecated, use extra/bond/per/atom keyword) -{extra angle per atom} = leave space for this many new angles per atom (deprecated, use extra/angle/per/atom keyword) -{extra dihedral per atom} = leave space for this many new dihedrals per atom (deprecated, use extra/dihedral/per/atom keyword) -{extra improper per atom} = leave space for this many new impropers per atom (deprecated, use extra/improper/per/atom keyword) -{extra special per atom} = leave space for this many new special bonds per atom (deprecated, use extra/special/per/atom keyword) +{extra bond per atom} = leave space for this many new bonds per atom +{extra angle per atom} = leave space for this many new angles per atom +{extra dihedral per atom} = leave space for this many new dihedrals per atom +{extra improper per atom} = leave space for this many new impropers per atom +{extra special per atom} = leave space for this many new special bonds per atom {ellipsoids} = # of ellipsoids in system {lines} = # of line segments in system {triangles} = # of triangles in system @@ -372,32 +367,25 @@ read_data command will generate an error in this case. The "extra bond per atom" setting (angle, dihedral, improper) is only needed if new bonds (angles, dihedrals, impropers) will be added to the system when a simulation runs, e.g. by using the "fix -bond/create"_fix_bond_create.html command. Using this header flag -is deprecated; please use the {extra/bond/per/atom} keyword (and -correspondingly for angles, dihedrals and impropers) in the -read_data command instead. Either will pre-allocate space in LAMMPS - data structures for storing the new bonds (angles, +bond/create"_fix_bond_create.html command. This will pre-allocate +space in LAMMPS data structures for storing the new bonds (angles, dihedrals, impropers). The "extra special per atom" setting is typically only needed if new bonds/angles/etc will be added to the system, e.g. by using the "fix bond/create"_fix_bond_create.html command. Or if entire new molecules -will be added to the system, e.g. by using the -"fix deposit"_fix_deposit.html or "fix pour"_fix_pour.html commands, -which will have more special 1-2,1-3,1-4 neighbors than any other -molecules defined in the data file. Using this header flag is -deprecated; please use the {extra/special/per/atom} keyword instead. -Using this setting will pre-allocate space in the LAMMPS data -structures for storing these neighbors. See the +will be added to the system, e.g. by using the "fix +deposit"_fix_deposit.html or "fix pour"_fix_pour.html commands, which +will have more special 1-2,1-3,1-4 neighbors than any other molecules +defined in the data file. Using this setting will pre-allocate space +in the LAMMPS data structures for storing these neighbors. See the "special_bonds"_special_bonds.html and "molecule"_molecule.html doc pages for more discussion of 1-2,1-3,1-4 neighbors. -NOTE: All of the "extra" settings are only applied in the first data -file read and when no simulation box has yet been created; as soon as -the simulation box is created (and read_data implies that), these -settings are {locked} and cannot be changed anymore. Please see the -description of the {add} keyword above for reading multiple data files. -If they appear in later data files, they are ignored. +NOTE: All of the "extra" settings are only used if they appear in the +first data file read; see the description of the {add} keyword above +for reading multiple data files. If they appear in later data files, +they are ignored. The "ellipsoids" and "lines" and "triangles" and "bodies" settings are only used with "atom_style ellipsoid or line or tri or @@ -547,6 +535,9 @@ bond: atom-ID molecule-ID atom-type x y z charge: atom-ID atom-type q x y z dipole: atom-ID atom-type q x y z mux muy muz dpd: atom-ID atom-type theta x y z +edpd: atom-ID atom-type edpd_temp edpd_cv x y z +mdpd: atom-ID atom-type x y z +tdpd: atom-ID atom-type x y z cc1 cc2 ... ccNspecies electron: atom-ID atom-type q spin eradius x y z ellipsoid: atom-ID atom-type ellipsoidflag density x y z full: atom-ID molecule-ID atom-type q x y z @@ -566,12 +557,15 @@ The per-atom values have these meanings and units, listed alphabetically: atom-ID = integer ID of atom atom-type = type of atom (1-Ntype) bodyflag = 1 for body particles, 0 for point particles +cc = chemical concentration for tDPD particles for each species (mole/volume units) contact-radius = ??? (distance units) cs_re,cs_im = real/imaginary parts of wavepacket coefficients cv = heat capacity (need units) for SPH particles density = density of particle (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle) diameter = diameter of spherical atom (distance units) e = energy (need units) for SPH particles +edpd_temp = temperature for eDPD particles (temperature units) +edpd_cv = volumetric heat capacity for eDPD particles (energy/temperature/volume units) ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles eradius = electron radius (or fixed-core radius) etag = integer ID of electron that each wavepacket belongs to diff --git a/doc/src/set.txt b/doc/src/set.txt index 14460c9741..4757d1c575 100644 --- a/doc/src/set.txt +++ b/doc/src/set.txt @@ -24,7 +24,7 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \ {bond} or {angle} or {dihedral} or {improper} or \ {meso/e} or {meso/cv} or {meso/rho} or \ {smd/contact/radius} or {smd/mass/density} or {dpd/theta} or \ - {i_name} or {d_name} :l + {edpd/temp} or {edpd/cv} or {cc} or {i_name} or {d_name} :l {type} value = atom type value can be an atom-style variable (see below) {type/fraction} values = type fraction seed @@ -98,6 +98,13 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \ {dpd/theta} value = internal temperature of DPD particles (temperature units) value can be an atom-style variable (see below) value can be NULL which sets internal temp of each particle to KE temp + {edpd/temp} value = temperature of eDPD particles (temperature units) + value can be an atom-style variable (see below) + {edpd/cv} value = volumetric heat capacity of eDPD particles (energy/temperature/volume units) + value can be an atom-style variable (see below) + {cc} values = index cc + index = index of a chemical species (1 to Nspecies) + cc = chemical concentration of tDPD particles for a species (mole/volume units) {i_name} value = value for custom integer vector with name {d_name} value = value for custom floating-point vector with name :pre :ule @@ -418,6 +425,19 @@ value >= 0.0, the internal temperature is set to that value. If it is < 0.0, the computation of Tkin is performed and the internal temperature is set to that value. +Keywords {edpd/temp} and {edpd/cv} set the temperature and volumetric +heat capacity of an eDPD particle as defined by the USER-MESO package. +Currently, only "atom_style edpd"_atom_style.html defines particles +with these attributes. The values for the temperature and heat +capacity must be positive. + +Keyword {cc} sets the chemical concentration of a tDPD particle for a +specified species as defined by the USER-MESO package. Currently, only +"atom_style tdpd"_atom_style.html defines particles with this +attribute. An integer for "index" selects a chemical species (1 to +Nspecies) where Nspecies is set by the atom_style command. The value +for the chemical concentration must be >= 0.0. + Keywords {i_name} and {d_name} refer to custom integer and floating-point properties that have been added to each atom via the "fix property/atom"_fix_property_atom.html command. When that command diff --git a/examples/USER/meso/README b/examples/USER/meso/README new file mode 100644 index 0000000000..4accc7ba01 --- /dev/null +++ b/examples/USER/meso/README @@ -0,0 +1,40 @@ +This directory contains input scripts for performing +simulations with these models: + +eDPD - energy-conserving dissipative particle dynamics +mDPD - many-body dissipative particle dynamics +tDPD - transport dissipative particle dynamics + +1) eDPD: The input script in.mdpd is an example simulation of +measuring the thermal conductivity by heat conduction analog of +periodic Poiseuille flow. The initial eDPD system is randomly filled +by many eDPD particles, and a set command "edpd/temp" gives the +initial temperature and a set command "edpd/cv" gives the heat +capacity of eDPD particles. A non-contact heat source/sink term is +applied by a fix command "edpd/source". A compute command +"edpd/temp/atom" obtain the temperature on each eDPD particle. The +simulation will generate a file named "temp.profile" showing the +temperature profile. For details please see online LAMMPS +documentation and Fig.12 in the paper Z. Li, et al. J Comput Phys, +2014, 265: 113-127. DOI: 10.1016/j.jcp.2014.02.003 + +2) mDPD: The input script "in.mdpd" is an example simulation of +oscillations of a free liquid droplet. The initial configuration is a +liquid film whose particles are in a fcc lattice created by the +command "create atoms". Then the liquid film has a tendency to form a +spherical droplet under the effect of surface tension. For details +please see online LAMMPS documentation and the paper Z. Li, et +al. Phys Fluids, 2013, 25: 072103. DOI: 10.1063/1.4812366 + +3) tDPD: The input script in.tdpd is an example simulation of +computing the effective diffusion coefficient of a tDPD system using a +method analogous to the periodic Poiseuille flow. Command "atom_style +tdpd 2" specifies the tDPD system with two chemical species. The +initial tDPD system is randomly filled by many tDPD particles, and a +set "cc" command gives initial concentration for each chemical +species. Fix commands "tdpd/source" add source terms and compute +commands "tdpd/cc/atom" obtain the chemical concentration on each tDPD +particle. The simulation will generate a file named "cc.profile" +showing the concentration profiles of the two chemical species. For +details please see online LAMMPS documentation and Fig.1 in the paper +Z. Li, et al. J Chem Phys, 2015, 143: 014101. DOI: 10.1063/1.4923254 diff --git a/examples/USER/meso/edpd/in.edpd b/examples/USER/meso/edpd/in.edpd new file mode 100644 index 0000000000..316099bce3 --- /dev/null +++ b/examples/USER/meso/edpd/in.edpd @@ -0,0 +1,54 @@ +######################################################################## +### Heat conduction analog of periodic Poiseuille flow problem ### +### using energy-conserving DPD (eDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### mDPD system setup follows Fig.12 in the publication: ### +### Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis. ### +### "Energy-conserving dissipative particle dynamics with ### +### temperature-dependent properties". J. Comput. Phys., ### +### 2014, 265: 113-127. DOI: 10.1016/j.jcp.2014.02.003 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style edpd + +region edpd block -10 10 -10 10 -5 5 units box +create_box 1 edpd +create_atoms 1 random 16000 276438 NULL +mass 1 1.0 +set atom * edpd/temp 1.0 +set atom * edpd/cv 1.0E5 + +pair_style edpd 1.58 9872598 +#pair_coeff 1 1 18.75 4.5 0.41 1.58 1.45E-5 2.0 1.58 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.41E-5 2.0 1.58 & + power 10.54 -3.66 3.44 -4.10 & + kappa -0.44 -3.21 5.04 0.00 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/edpd 0.5 +fix upper all edpd/source cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower all edpd/source cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 + +timestep 0.01 +run 500 +reset_timestep 0 + +compute temp all edpd/temp/atom +compute ccT all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 500 500 ccT c_temp density/number norm sample file temp.profile + +run 500 diff --git a/examples/USER/meso/edpd/log.16Aug17.edpd.g++.1 b/examples/USER/meso/edpd/log.16Aug17.edpd.g++.1 new file mode 100644 index 0000000000..af975f877c --- /dev/null +++ b/examples/USER/meso/edpd/log.16Aug17.edpd.g++.1 @@ -0,0 +1,142 @@ +LAMMPS (11 Aug 2017) +######################################################################## +### Heat conduction analog of periodic Poiseuille flow problem ### +### using energy-conserving DPD (eDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### mDPD system setup follows Fig.12 in the publication: ### +### Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis. ### +### "Energy-conserving dissipative particle dynamics with ### +### temperature-dependent properties". J. Comput. Phys., ### +### 2014, 265: 113-127. DOI: 10.1016/j.jcp.2014.02.003 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style edpd + +region edpd block -10 10 -10 10 -5 5 units box +create_box 1 edpd +Created orthogonal box = (-10 -10 -5) to (10 10 5) + 1 by 1 by 1 MPI processor grid +create_atoms 1 random 16000 276438 NULL +Created 16000 atoms +mass 1 1.0 +set atom * edpd/temp 1.0 + 16000 settings made for edpd/temp +set atom * edpd/cv 1.0E5 + 16000 settings made for edpd/cv + +pair_style edpd 1.58 9872598 +#pair_coeff 1 1 18.75 4.5 0.41 1.58 1.45E-5 2.0 1.58 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.41E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10 kappa -0.44 -3.21 5.04 0.00 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/edpd 0.5 +fix upper all edpd/source cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower all edpd/source cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 + +timestep 0.01 +run 500 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.78 + ghost atom cutoff = 1.78 + binsize = 0.89, bins = 23 23 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair edpd, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 11.64 | 11.64 | 11.64 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 48.948932 0 50.448838 201.73366 + 100 1.0069712 43.754293 0 45.264656 199.5369 + 200 0.98667561 43.716052 0 45.195973 196.72854 + 300 1.0036944 43.706299 0 45.211746 195.35714 + 400 1.0024228 43.697014 0 45.200554 197.0062 + 500 0.99968161 43.687445 0 45.186873 193.80596 +Loop time of 80.7995 on 1 procs for 500 steps with 16000 atoms + +Performance: 5346.567 tau/day, 6.188 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 75.106 | 75.106 | 75.106 | 0.0 | 92.95 +Neigh | 4.9836 | 4.9836 | 4.9836 | 0.0 | 6.17 +Comm | 0.31199 | 0.31199 | 0.31199 | 0.0 | 0.39 +Output | 0.00048232 | 0.00048232 | 0.00048232 | 0.0 | 0.00 +Modify | 0.29985 | 0.29985 | 0.29985 | 0.0 | 0.37 +Other | | 0.09751 | | | 0.12 + +Nlocal: 16000 ave 16000 max 16000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 14091 ave 14091 max 14091 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 749111 ave 749111 max 749111 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 749111 +Ave neighs/atom = 46.8194 +Neighbor list builds = 181 +Dangerous builds = 0 +reset_timestep 0 + +compute temp all edpd/temp/atom +compute ccT all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 500 500 ccT c_temp density/number norm sample file temp.profile + +run 500 +Per MPI rank memory allocation (min/avg/max) = 12.14 | 12.14 | 12.14 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.99968161 43.687397 0 45.186825 196.38426 + 100 1.0041443 43.668196 0 45.174318 195.38066 + 200 0.99628392 43.666173 0 45.160505 197.84675 + 300 1.0029116 43.66224 0 45.166513 199.67414 + 400 0.99922193 43.64406 0 45.142799 196.94404 + 500 0.99355431 43.623266 0 45.113505 195.94136 +Loop time of 80.7742 on 1 procs for 500 steps with 16000 atoms + +Performance: 5348.242 tau/day, 6.190 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 75.073 | 75.073 | 75.073 | 0.0 | 92.94 +Neigh | 4.8786 | 4.8786 | 4.8786 | 0.0 | 6.04 +Comm | 0.31086 | 0.31086 | 0.31086 | 0.0 | 0.38 +Output | 0.00045919 | 0.00045919 | 0.00045919 | 0.0 | 0.00 +Modify | 0.4139 | 0.4139 | 0.4139 | 0.0 | 0.51 +Other | | 0.09731 | | | 0.12 + +Nlocal: 16000 ave 16000 max 16000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 14091 ave 14091 max 14091 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 749667 ave 749667 max 749667 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 749667 +Ave neighs/atom = 46.8542 +Neighbor list builds = 178 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:02:41 diff --git a/examples/USER/meso/edpd/log.16Aug17.edpd.g++.4 b/examples/USER/meso/edpd/log.16Aug17.edpd.g++.4 new file mode 100644 index 0000000000..21206d38c6 --- /dev/null +++ b/examples/USER/meso/edpd/log.16Aug17.edpd.g++.4 @@ -0,0 +1,142 @@ +LAMMPS (11 Aug 2017) +######################################################################## +### Heat conduction analog of periodic Poiseuille flow problem ### +### using energy-conserving DPD (eDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### mDPD system setup follows Fig.12 in the publication: ### +### Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis. ### +### "Energy-conserving dissipative particle dynamics with ### +### temperature-dependent properties". J. Comput. Phys., ### +### 2014, 265: 113-127. DOI: 10.1016/j.jcp.2014.02.003 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style edpd + +region edpd block -10 10 -10 10 -5 5 units box +create_box 1 edpd +Created orthogonal box = (-10 -10 -5) to (10 10 5) + 2 by 2 by 1 MPI processor grid +create_atoms 1 random 16000 276438 NULL +Created 16000 atoms +mass 1 1.0 +set atom * edpd/temp 1.0 + 16000 settings made for edpd/temp +set atom * edpd/cv 1.0E5 + 16000 settings made for edpd/cv + +pair_style edpd 1.58 9872598 +#pair_coeff 1 1 18.75 4.5 0.41 1.58 1.45E-5 2.0 1.58 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.41E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10 kappa -0.44 -3.21 5.04 0.00 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/edpd 0.5 +fix upper all edpd/source cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower all edpd/source cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 + +timestep 0.01 +run 500 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.78 + ghost atom cutoff = 1.78 + binsize = 0.89, bins = 23 23 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair edpd, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.969 | 4.979 | 4.985 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 48.948932 0 50.448838 199.51547 + 100 1.0106415 43.744371 0 45.260239 196.39598 + 200 1.0053215 43.714413 0 45.222301 195.35298 + 300 0.99886399 43.713356 0 45.211559 196.74821 + 400 1.0035264 43.699086 0 45.204282 195.47446 + 500 1.0025285 43.698051 0 45.20175 197.27042 +Loop time of 21.165 on 4 procs for 500 steps with 16000 atoms + +Performance: 20411.046 tau/day, 23.624 timesteps/s +99.9% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 18.713 | 19.101 | 19.41 | 6.0 | 90.25 +Neigh | 1.2687 | 1.2925 | 1.3177 | 1.5 | 6.11 +Comm | 0.33013 | 0.66337 | 1.0747 | 34.3 | 3.13 +Output | 0.00023484 | 0.00028092 | 0.00036526 | 0.0 | 0.00 +Modify | 0.073931 | 0.075277 | 0.076306 | 0.3 | 0.36 +Other | | 0.03227 | | | 0.15 + +Nlocal: 4000 ave 4067 max 3930 min +Histogram: 1 1 0 0 0 0 0 0 0 2 +Nghost: 5997.5 ave 6052 max 5943 min +Histogram: 1 0 1 0 0 0 0 1 0 1 +Neighs: 187388 ave 193157 max 181221 min +Histogram: 1 1 0 0 0 0 0 0 0 2 + +Total # of neighbors = 749552 +Ave neighs/atom = 46.847 +Neighbor list builds = 181 +Dangerous builds = 0 +reset_timestep 0 + +compute temp all edpd/temp/atom +compute ccT all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 500 500 ccT c_temp density/number norm sample file temp.profile + +run 500 +Per MPI rank memory allocation (min/avg/max) = 5.221 | 5.23 | 5.236 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1.0025285 43.69801 0 45.201708 194.00452 + 100 0.9885969 43.679927 0 45.16273 196.28442 + 200 1.0028463 43.663067 0 45.167242 198.25592 + 300 1.0027516 43.648817 0 45.152851 198.82226 + 400 0.99695312 43.641469 0 45.136805 197.97499 + 500 0.98202292 43.627163 0 45.100105 199.16319 +Loop time of 21.576 on 4 procs for 500 steps with 16000 atoms + +Performance: 20022.203 tau/day, 23.174 timesteps/s +99.8% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 18.438 | 19.121 | 19.812 | 14.1 | 88.62 +Neigh | 1.2568 | 1.2885 | 1.325 | 2.5 | 5.97 +Comm | 0.29482 | 1.0219 | 1.7352 | 63.9 | 4.74 +Output | 0.00027728 | 0.00029719 | 0.0003531 | 0.0 | 0.00 +Modify | 0.11153 | 0.11265 | 0.1135 | 0.2 | 0.52 +Other | | 0.03194 | | | 0.15 + +Nlocal: 4000 ave 4092 max 3899 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 5974 ave 6019 max 5915 min +Histogram: 1 0 0 1 0 0 0 0 0 2 +Neighs: 187414 ave 196149 max 178418 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 749658 +Ave neighs/atom = 46.8536 +Neighbor list builds = 181 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:42 diff --git a/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.1 b/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.1 new file mode 100644 index 0000000000..469b550258 --- /dev/null +++ b/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.1 @@ -0,0 +1,24 @@ +# Chunk-averaged data for fix stat and group density/number +# Timestep Number-of-chunks Total-count +# Chunk Coord1 Ncount c_temp density/number +500 20 16000 + 1 -9.5 801.636 0.986368 4.00818 + 2 -8.5 809.788 0.966281 4.04894 + 3 -7.5 819.754 0.952764 4.09877 + 4 -6.5 820.364 0.944592 4.10182 + 5 -5.5 826.146 0.940968 4.13073 + 6 -4.5 819.52 0.941415 4.0976 + 7 -3.5 815.182 0.945887 4.07591 + 8 -2.5 817.168 0.95487 4.08584 + 9 -1.5 817.282 0.969225 4.08641 + 10 -0.5 804.204 0.989552 4.02102 + 11 0.5 793.266 1.01015 3.96633 + 12 1.5 789.056 1.0308 3.94528 + 13 2.5 784.344 1.04568 3.92172 + 14 3.5 780.592 1.05508 3.90296 + 15 4.5 772.218 1.05968 3.86109 + 16 5.5 776.968 1.06003 3.88484 + 17 6.5 780.858 1.05612 3.90429 + 18 7.5 786.174 1.04752 3.93087 + 19 8.5 788.922 1.03347 3.94461 + 20 9.5 796.558 1.01278 3.98279 diff --git a/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.4 b/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.4 new file mode 100644 index 0000000000..1c50a9b6e5 --- /dev/null +++ b/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.4 @@ -0,0 +1,24 @@ +# Chunk-averaged data for fix stat and group density/number +# Timestep Number-of-chunks Total-count +# Chunk Coord1 Ncount c_temp density/number +500 20 16000 + 1 -9.5 801.642 0.986089 4.00821 + 2 -8.5 819.168 0.966072 4.09584 + 3 -7.5 817.382 0.952718 4.08691 + 4 -6.5 818 0.944633 4.09 + 5 -5.5 817.806 0.941105 4.08903 + 6 -4.5 826.11 0.941499 4.13055 + 7 -3.5 821.946 0.945922 4.10973 + 8 -2.5 816.202 0.954889 4.08101 + 9 -1.5 813.202 0.969281 4.06601 + 10 -0.5 798.904 0.989463 3.99452 + 11 0.5 798.056 1.01005 3.99028 + 12 1.5 793.114 1.03073 3.96557 + 13 2.5 782.812 1.04569 3.91406 + 14 3.5 775.69 1.05498 3.87845 + 15 4.5 778.094 1.05965 3.89047 + 16 5.5 778.856 1.06002 3.89428 + 17 6.5 780.51 1.05621 3.90255 + 18 7.5 780.518 1.04782 3.90259 + 19 8.5 789.698 1.03348 3.94849 + 20 9.5 792.29 1.01261 3.96145 diff --git a/examples/USER/meso/mdpd/in.mdpd b/examples/USER/meso/mdpd/in.mdpd new file mode 100644 index 0000000000..201b4a340e --- /dev/null +++ b/examples/USER/meso/mdpd/in.mdpd @@ -0,0 +1,52 @@ +######################################################################## +#### 3D droplet oscilation using many-body DPD simulation ### +#### ### +#### Created : Zhen Li (zhen_li@brown.edu) ### +#### Division of Applied Mathematics, Brown University. ### +#### ### +#### mDPD parameters follow the choice of the publication: ### +#### Z. Li et al. "Three dimensional flow structures in a moving ### +#### droplet on substrate: a dissipative particle dynamics study" ### +#### Physics of Fluids, 2013, 25: 072103. DOI: 10.1063/1.4812366 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.3 bin +neigh_modify every 1 delay 0 check yes + +atom_style mdpd + +region mdpd block -25 25 -10 10 -10 10 units box +create_box 1 mdpd + +lattice fcc 6 +region film block -20 20 -7.5 7.5 -2.0 2.0 units box +create_atoms 1 region film + +pair_style hybrid/overlay mdpd/rhosum mdpd 1.0 1.0 9872598 +pair_coeff 1 1 mdpd/rhosum 0.75 +pair_coeff 1 1 mdpd -40 25 18.0 1.0 0.75 +mass 1 1.0 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 38497 loop local dist gaussian + +fix mvv all mvv/dpd + +#dump mydump all atom 100 atom.lammpstrj + +#dump jpg all image 200 image.*.jpg type type zoom 5 adiam 0.5 & +# view 90 90 box no 0 size 600 200 +#dump_modify jpg pad 4 + +#dump avi all movie 200 movie.avi type type zoom 5 adiam 0.5 & +# view 90 90 box no 0 size 600 200 +#dump_modify avi pad 4 + +timestep 0.01 +run 4000 diff --git a/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.1 b/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.1 new file mode 100644 index 0000000000..c3c14da559 --- /dev/null +++ b/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.1 @@ -0,0 +1,147 @@ +LAMMPS (11 Aug 2017) +######################################################################## +#### 3D droplet oscilation using many-body DPD simulation ### +#### ### +#### Created : Zhen Li (zhen_li@brown.edu) ### +#### Division of Applied Mathematics, Brown University. ### +#### ### +#### mDPD parameters follow the choice of the publication: ### +#### Z. Li et al. "Three dimensional flow structures in a moving ### +#### droplet on substrate: a dissipative particle dynamics study" ### +#### Physics of Fluids, 2013, 25: 072103. DOI: 10.1063/1.4812366 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.3 bin +neigh_modify every 1 delay 0 check yes + +atom_style mdpd + +region mdpd block -25 25 -10 10 -10 10 units box +create_box 1 mdpd +Created orthogonal box = (-25 -10 -10) to (25 10 10) + 1 by 1 by 1 MPI processor grid + +lattice fcc 6 +Lattice spacing in x,y,z = 0.87358 0.87358 0.87358 +region film block -20 20 -7.5 7.5 -2.0 2.0 units box +create_atoms 1 region film +Created 14333 atoms + +pair_style hybrid/overlay mdpd/rhosum mdpd 1.0 1.0 9872598 +pair_coeff 1 1 mdpd/rhosum 0.75 +pair_coeff 1 1 mdpd -40 25 18.0 1.0 0.75 +mass 1 1.0 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 38497 loop local dist gaussian + +fix mvv all mvv/dpd + +dump mydump all atom 100 atom.lammpstrj + +#dump jpg all image 200 image.*.jpg type type zoom 5 adiam 0.5 # view 90 90 box no 0 size 600 200 +#dump_modify jpg pad 4 + +#dump avi all movie 200 movie.avi type type zoom 5 adiam 0.5 # view 90 90 box no 0 size 600 200 +#dump_modify avi pad 4 + +timestep 0.01 +run 4000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.3 + ghost atom cutoff = 1.3 + binsize = 0.65, bins = 77 31 31 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mdpd/rhosum, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair mdpd, perpetual, half/full from (1) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 9.931 | 9.931 | 9.931 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 -13.346542 0 -11.846647 -6.8495478 + 100 1.0321029 -7.2846779 0 -5.7366316 -0.77640205 + 200 1.042287 -6.9534532 0 -5.3901317 -0.27750815 + 300 1.0583027 -6.8483105 0 -5.2609672 -0.30347708 + 400 1.0493719 -6.8648608 0 -5.2909127 -0.15312495 + 500 1.0723786 -6.8341085 0 -5.2256528 0.017227511 + 600 1.0545695 -6.8152957 0 -5.2335517 -0.024362439 + 700 1.0507193 -6.8076033 0 -5.2316344 -0.07101536 + 800 1.0531856 -6.9378568 0 -5.3581886 -0.053943939 + 900 1.0442995 -6.8501126 0 -5.2837726 -0.13347942 + 1000 1.0335049 -6.8883554 0 -5.3382062 -0.18420426 + 1100 1.0287276 -6.8298226 0 -5.2868389 -0.12081558 + 1200 1.0322527 -6.9462828 0 -5.3980117 -0.18047625 + 1300 1.0599443 -6.9449975 0 -5.355192 -0.011763589 + 1400 1.0560932 -6.845479 0 -5.2614498 0.032130055 + 1500 1.0432786 -6.9035877 0 -5.338779 -0.10268662 + 1600 1.064183 -6.9116836 0 -5.3155205 -0.060722129 + 1700 1.0586249 -6.8768278 0 -5.2890013 0.037005566 + 1800 1.0576064 -7.0060193 0 -5.4197204 -0.036211254 + 1900 1.0595141 -6.838741 0 -5.2495807 -0.12395681 + 2000 1.0650509 -6.897976 0 -5.3005111 0.003594807 + 2100 1.0768273 -6.8874245 0 -5.2722962 0.033283489 + 2200 1.0511606 -6.9823162 0 -5.4056854 0.015008427 + 2300 1.0461138 -6.8820601 0 -5.3129988 0.064646933 + 2400 1.0485369 -6.9437148 0 -5.3710191 -0.16534939 + 2500 1.0507221 -6.9394786 0 -5.3635054 -0.098289859 + 2600 1.0518352 -6.8947578 0 -5.3171152 -0.011666785 + 2700 1.0402369 -6.9273377 0 -5.3670913 0.035267073 + 2800 1.0426109 -6.912024 0 -5.3482168 0.049597305 + 2900 1.0358928 -6.9574778 0 -5.4037471 -0.063216561 + 3000 1.0351023 -6.9844192 0 -5.4318742 -0.10323465 + 3100 1.0255005 -6.9382486 0 -5.4001052 -0.073954735 + 3200 1.0150616 -6.9843183 0 -5.4618321 -0.095136405 + 3300 1.0118112 -6.9522082 0 -5.4345973 -0.12686179 + 3400 1.0071522 -6.970158 0 -5.4595351 -0.012487475 + 3500 1.0041758 -6.9773019 0 -5.4711433 -0.098027653 + 3600 1.0189298 -6.9393039 0 -5.4110158 0.061631719 + 3700 1.012442 -6.9341423 0 -5.4155852 0.10442772 + 3800 1.0021246 -6.9594374 0 -5.4563553 -0.081535223 + 3900 1.0165002 -6.9045321 0 -5.3798882 -0.0088283303 + 4000 1.0077099 -6.9145511 0 -5.4030918 0.048349691 +Loop time of 135.409 on 1 procs for 4000 steps with 14333 atoms + +Performance: 25522.736 tau/day, 29.540 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 93.074 | 93.074 | 93.074 | 0.0 | 68.74 +Neigh | 40.192 | 40.192 | 40.192 | 0.0 | 29.68 +Comm | 0.19625 | 0.19625 | 0.19625 | 0.0 | 0.14 +Output | 0.41756 | 0.41756 | 0.41756 | 0.0 | 0.31 +Modify | 1.0706 | 1.0706 | 1.0706 | 0.0 | 0.79 +Other | | 0.4581 | | | 0.34 + +Nlocal: 14333 ave 14333 max 14333 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11 ave 11 max 11 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 401803 ave 401803 max 401803 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 803606 ave 803606 max 803606 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 803606 +Ave neighs/atom = 56.0668 +Neighbor list builds = 1050 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:02:15 diff --git a/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.4 b/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.4 new file mode 100644 index 0000000000..ec3d8fbddc --- /dev/null +++ b/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.4 @@ -0,0 +1,147 @@ +LAMMPS (11 Aug 2017) +######################################################################## +#### 3D droplet oscilation using many-body DPD simulation ### +#### ### +#### Created : Zhen Li (zhen_li@brown.edu) ### +#### Division of Applied Mathematics, Brown University. ### +#### ### +#### mDPD parameters follow the choice of the publication: ### +#### Z. Li et al. "Three dimensional flow structures in a moving ### +#### droplet on substrate: a dissipative particle dynamics study" ### +#### Physics of Fluids, 2013, 25: 072103. DOI: 10.1063/1.4812366 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.3 bin +neigh_modify every 1 delay 0 check yes + +atom_style mdpd + +region mdpd block -25 25 -10 10 -10 10 units box +create_box 1 mdpd +Created orthogonal box = (-25 -10 -10) to (25 10 10) + 4 by 1 by 1 MPI processor grid + +lattice fcc 6 +Lattice spacing in x,y,z = 0.87358 0.87358 0.87358 +region film block -20 20 -7.5 7.5 -2.0 2.0 units box +create_atoms 1 region film +Created 14333 atoms + +pair_style hybrid/overlay mdpd/rhosum mdpd 1.0 1.0 9872598 +pair_coeff 1 1 mdpd/rhosum 0.75 +pair_coeff 1 1 mdpd -40 25 18.0 1.0 0.75 +mass 1 1.0 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 38497 loop local dist gaussian + +fix mvv all mvv/dpd + +dump mydump all atom 100 atom.lammpstrj + +#dump jpg all image 200 image.*.jpg type type zoom 5 adiam 0.5 # view 90 90 box no 0 size 600 200 +#dump_modify jpg pad 4 + +#dump avi all movie 200 movie.avi type type zoom 5 adiam 0.5 # view 90 90 box no 0 size 600 200 +#dump_modify avi pad 4 + +timestep 0.01 +run 4000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.3 + ghost atom cutoff = 1.3 + binsize = 0.65, bins = 77 31 31 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mdpd/rhosum, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair mdpd, perpetual, half/full from (1) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 6.265 | 6.655 | 7.045 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 -13.346542 0 -11.846647 -6.9757225 + 100 1.0406108 -7.2500697 0 -5.6892624 -0.80306477 + 200 1.0535506 -6.9452928 0 -5.3650772 -0.39911584 + 300 1.0644295 -6.8599907 0 -5.2634577 -0.2997968 + 400 1.0780123 -6.9471342 0 -5.3302286 -0.06274869 + 500 1.0672153 -6.8269984 0 -5.2262872 0.021251762 + 600 1.0634304 -6.8366569 0 -5.2416226 -0.021863333 + 700 1.0544807 -6.8272074 0 -5.2455967 -0.0064688066 + 800 1.0556172 -6.8859788 0 -5.3026634 0.023983333 + 900 1.0436201 -6.9246523 0 -5.3593313 -0.12409618 + 1000 1.0617016 -6.8632331 0 -5.2707919 -0.1145505 + 1100 1.0323831 -6.951554 0 -5.4030874 -0.030031884 + 1200 1.0407785 -6.931048 0 -5.3699892 -0.018362136 + 1300 1.0380953 -6.8785296 0 -5.3214953 -0.099308737 + 1400 1.0418898 -6.8998 0 -5.3370743 -0.14199421 + 1500 1.0487254 -6.9671212 0 -5.3941429 -0.12132644 + 1600 1.0561042 -6.8948881 0 -5.3108424 -0.09627292 + 1700 1.0524479 -6.9531441 0 -5.3745823 -0.11959782 + 1800 1.0541197 -6.9219819 0 -5.3409126 0.032964029 + 1900 1.0531221 -6.8805815 0 -5.3010085 0.030124685 + 2000 1.0531819 -6.8612868 0 -5.2816242 -0.076876781 + 2100 1.0757791 -6.919875 0 -5.3063189 -0.04060439 + 2200 1.069423 -6.9005754 0 -5.2965527 0.015347467 + 2300 1.0403109 -6.9015402 0 -5.3411827 0.0034687897 + 2400 1.0547448 -6.9325539 0 -5.3505471 -0.021202325 + 2500 1.0404195 -6.8494675 0 -5.2889472 0.086947847 + 2600 1.0499828 -6.9861392 0 -5.4112749 -0.018079308 + 2700 1.0294278 -6.8525151 0 -5.3084811 0.16911472 + 2800 1.0220652 -6.8993978 0 -5.366407 0.064820531 + 2900 1.0347904 -6.9322703 0 -5.3801929 -0.11384964 + 3000 1.0391372 -6.9519088 0 -5.3933117 0.003050577 + 3100 1.0335828 -7.0090074 0 -5.4587413 -0.17366664 + 3200 1.0211896 -6.9421289 0 -5.4104513 0.025299853 + 3300 1.0019232 -6.9426488 0 -5.4398688 -0.098334724 + 3400 1.0203541 -6.9310981 0 -5.4006737 -0.0015544982 + 3500 1.0076794 -6.9519932 0 -5.4405796 -0.056956902 + 3600 1.0086525 -6.9620979 0 -5.4492247 0.020014884 + 3700 1.0046112 -7.0011625 0 -5.4943508 -0.083936527 + 3800 1.0096867 -6.9470382 0 -5.4326138 -0.089521759 + 3900 1.0074482 -6.9959414 0 -5.4848745 -0.11873698 + 4000 1.01222 -6.9535694 0 -5.4353454 0.042191466 +Loop time of 63.0327 on 4 procs for 4000 steps with 14333 atoms + +Performance: 54828.695 tau/day, 63.459 timesteps/s +98.8% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 16.591 | 29.795 | 42.814 | 236.6 | 47.27 +Neigh | 2.0347 | 10.239 | 18.555 | 255.6 | 16.24 +Comm | 0.70099 | 6.0601 | 11.386 | 207.4 | 9.61 +Output | 0.20713 | 0.40902 | 0.61087 | 31.5 | 0.65 +Modify | 0.058089 | 0.27033 | 0.4851 | 40.7 | 0.43 +Other | | 16.26 | | | 25.79 + +Nlocal: 3583.25 ave 7207 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 1055.75 ave 2131 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 100549 ave 202192 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +FullNghs: 201098 ave 404372 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 804390 +Ave neighs/atom = 56.1215 +Neighbor list builds = 1049 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:01:03 diff --git a/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.1 b/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.1 new file mode 100644 index 0000000000..a872600504 --- /dev/null +++ b/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.1 @@ -0,0 +1,24 @@ +# Chunk-averaged data for fix stat and group c_cc2 +# Timestep Number-of-chunks Total-count +# Chunk Coord1 Ncount c_cc1 c_cc2 +100 20 16000 + 1 -9.5 797.17 0.986661 1.0077 + 2 -8.5 802.61 0.967974 1.02003 + 3 -7.5 795.46 0.957045 1.02873 + 4 -6.5 806.46 0.951271 1.03428 + 5 -5.5 802.34 0.94898 1.03692 + 6 -4.5 799.84 0.949378 1.03673 + 7 -3.5 798.4 0.952505 1.03374 + 8 -2.5 800.36 0.959322 1.02778 + 9 -1.5 797.65 0.971516 1.01867 + 10 -0.5 808.88 0.990644 1.00626 + 11 0.5 786.29 1.00924 0.993828 + 12 1.5 807.16 1.02831 0.981436 + 13 2.5 797.54 1.04071 0.972184 + 14 3.5 799.67 1.04749 0.966258 + 15 4.5 799.61 1.05063 0.963256 + 16 5.5 806.11 1.05105 0.963052 + 17 6.5 803.67 1.04877 0.965688 + 18 7.5 797.39 1.04305 0.971187 + 19 8.5 801.85 1.03208 0.97993 + 20 9.5 791.54 1.01351 0.992209 diff --git a/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.4 b/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.4 new file mode 100644 index 0000000000..de34ef26c3 --- /dev/null +++ b/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.4 @@ -0,0 +1,24 @@ +# Chunk-averaged data for fix stat and group c_cc2 +# Timestep Number-of-chunks Total-count +# Chunk Coord1 Ncount c_cc1 c_cc2 +100 20 16000 + 1 -9.5 806.92 0.986675 1.00766 + 2 -8.5 798.01 0.96792 1.02003 + 3 -7.5 805.43 0.956909 1.02883 + 4 -6.5 800.54 0.951207 1.03432 + 5 -5.5 794.14 0.948967 1.03691 + 6 -4.5 799.75 0.949379 1.03672 + 7 -3.5 799.65 0.952492 1.03374 + 8 -2.5 799.94 0.959331 1.02778 + 9 -1.5 800.96 0.971664 1.01861 + 10 -0.5 803.97 0.99074 1.00622 + 11 0.5 800.66 1.00949 0.993673 + 12 1.5 779.22 1.02824 0.981461 + 13 2.5 809.13 1.04056 0.972274 + 14 3.5 805.23 1.04747 0.966272 + 15 4.5 795.95 1.05061 0.96327 + 16 5.5 796.4 1.05105 0.963035 + 17 6.5 806.1 1.04883 0.965621 + 18 7.5 806.41 1.04305 0.971224 + 19 8.5 792.2 1.03211 0.979955 + 20 9.5 799.39 1.01362 0.992156 diff --git a/examples/USER/meso/tdpd/in.tdpd b/examples/USER/meso/tdpd/in.tdpd new file mode 100644 index 0000000000..748a4f5077 --- /dev/null +++ b/examples/USER/meso/tdpd/in.tdpd @@ -0,0 +1,54 @@ +######################################################################## +### Pure diffusion with a reaction source term analog of a periodic ### +### Poiseuille flow problem using transport DPD (tDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### tDPD system setup follows Fig.1 in the publication: ### +### Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis. ### +### "Transport dissipative particle dynamics model for mesoscopic ### +### advection-diffusion-reaction problems. J. Chem. Phys., ### +### 2015, 143: 014101. DOI: 10.1063/1.4923254 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style tdpd 2 + +region tdpd block -10 10 -10 10 -5 5 units box +create_box 1 tdpd +create_atoms 1 random 16000 276438 NULL +mass 1 1.0 +set atom * cc 1 1.0 +set atom * cc 2 1.0 + +pair_style tdpd 1.0 1.58 9872598 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 3.0 1.0E-5 2.0 + +compute mythermo all temp +thermo 50 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/tdpd 0.5 +fix upper1 all tdpd/source 1 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower1 all tdpd/source 1 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 +fix upper2 all tdpd/source 2 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 -0.01 +fix lower2 all tdpd/source 2 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 0.01 + +timestep 0.01 +run 500 +reset_timestep 0 + +compute cc1 all tdpd/cc/atom 1 +compute cc2 all tdpd/cc/atom 2 +compute bin all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 100 100 bin c_cc1 c_cc2 norm sample file cc.profile + +run 100 diff --git a/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.1 b/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.1 new file mode 100644 index 0000000000..21b618148c --- /dev/null +++ b/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.1 @@ -0,0 +1,146 @@ +LAMMPS (11 Aug 2017) +######################################################################## +### Pure diffusion with a reaction source term analog of a periodic ### +### Poiseuille flow problem using transport DPD (tDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### tDPD system setup follows Fig.1 in the publication: ### +### Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis. ### +### "Transport dissipative particle dynamics model for mesoscopic ### +### advection-diffusion-reaction problems. J. Chem. Phys., ### +### 2015, 143: 014101. DOI: 10.1063/1.4923254 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style tdpd 2 + +region tdpd block -10 10 -10 10 -5 5 units box +create_box 1 tdpd +Created orthogonal box = (-10 -10 -5) to (10 10 5) + 1 by 1 by 1 MPI processor grid +create_atoms 1 random 16000 276438 NULL +Created 16000 atoms +mass 1 1.0 +set atom * cc 1 1.0 + 16000 settings made for cc index 1 +set atom * cc 2 1.0 + 16000 settings made for cc index 2 + +pair_style tdpd 1.0 1.58 9872598 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 3.0 1.0E-5 2.0 + +compute mythermo all temp +thermo 50 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/tdpd 0.5 +fix upper1 all tdpd/source 1 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower1 all tdpd/source 1 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 +fix upper2 all tdpd/source 2 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 -0.01 +fix lower2 all tdpd/source 2 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 0.01 + +timestep 0.01 +run 500 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.78 + ghost atom cutoff = 1.78 + binsize = 0.89, bins = 23 23 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tdpd, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 11.3 | 11.3 | 11.3 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 48.948932 0 50.448838 202.19166 + 50 0.99837766 43.949877 0 45.447349 195.80936 + 100 0.99846831 43.756995 0 45.254604 198.22348 + 150 1.0026903 43.72408 0 45.228021 196.61676 + 200 1.0063144 43.722388 0 45.231765 194.17954 + 250 1.0032304 43.721864 0 45.226615 197.85829 + 300 0.9932656 43.703526 0 45.193331 196.57406 + 350 1.0002916 43.720498 0 45.220841 193.55346 + 400 0.99475486 43.722965 0 45.215004 196.81546 + 450 1.0011803 43.712447 0 45.214124 200.46118 + 500 1.0009006 43.708984 0 45.210241 197.38953 +Loop time of 96.0326 on 1 procs for 500 steps with 16000 atoms + +Performance: 4498.474 tau/day, 5.207 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 90.083 | 90.083 | 90.083 | 0.0 | 93.80 +Neigh | 5.049 | 5.049 | 5.049 | 0.0 | 5.26 +Comm | 0.34141 | 0.34141 | 0.34141 | 0.0 | 0.36 +Output | 0.00092816 | 0.00092816 | 0.00092816 | 0.0 | 0.00 +Modify | 0.45991 | 0.45991 | 0.45991 | 0.0 | 0.48 +Other | | 0.09865 | | | 0.10 + +Nlocal: 16000 ave 16000 max 16000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 14091 ave 14091 max 14091 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 749379 ave 749379 max 749379 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 749379 +Ave neighs/atom = 46.8362 +Neighbor list builds = 183 +Dangerous builds = 0 +reset_timestep 0 + +compute cc1 all tdpd/cc/atom 1 +compute cc2 all tdpd/cc/atom 2 +compute bin all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 100 100 bin c_cc1 c_cc2 norm sample file cc.profile + +run 100 +Per MPI rank memory allocation (min/avg/max) = 11.8 | 11.8 | 11.8 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1.0009006 43.708984 0 45.210241 199.3205 + 50 1.0007276 43.704844 0 45.205842 197.77053 + 100 1.0039032 43.714201 0 45.219961 197.31118 +Loop time of 19.0326 on 1 procs for 100 steps with 16000 atoms + +Performance: 4539.577 tau/day, 5.254 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 17.842 | 17.842 | 17.842 | 0.0 | 93.74 +Neigh | 0.98674 | 0.98674 | 0.98674 | 0.0 | 5.18 +Comm | 0.066013 | 0.066013 | 0.066013 | 0.0 | 0.35 +Output | 0.00016284 | 0.00016284 | 0.00016284 | 0.0 | 0.00 +Modify | 0.11795 | 0.11795 | 0.11795 | 0.0 | 0.62 +Other | | 0.02012 | | | 0.11 + +Nlocal: 16000 ave 16000 max 16000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 14126 ave 14126 max 14126 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 748927 ave 748927 max 748927 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 748927 +Ave neighs/atom = 46.8079 +Neighbor list builds = 37 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:01:55 diff --git a/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.4 b/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.4 new file mode 100644 index 0000000000..6cd99168f4 --- /dev/null +++ b/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.4 @@ -0,0 +1,146 @@ +LAMMPS (11 Aug 2017) +######################################################################## +### Pure diffusion with a reaction source term analog of a periodic ### +### Poiseuille flow problem using transport DPD (tDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### tDPD system setup follows Fig.1 in the publication: ### +### Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis. ### +### "Transport dissipative particle dynamics model for mesoscopic ### +### advection-diffusion-reaction problems. J. Chem. Phys., ### +### 2015, 143: 014101. DOI: 10.1063/1.4923254 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style tdpd 2 + +region tdpd block -10 10 -10 10 -5 5 units box +create_box 1 tdpd +Created orthogonal box = (-10 -10 -5) to (10 10 5) + 2 by 2 by 1 MPI processor grid +create_atoms 1 random 16000 276438 NULL +Created 16000 atoms +mass 1 1.0 +set atom * cc 1 1.0 + 16000 settings made for cc index 1 +set atom * cc 2 1.0 + 16000 settings made for cc index 2 + +pair_style tdpd 1.0 1.58 9872598 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 3.0 1.0E-5 2.0 + +compute mythermo all temp +thermo 50 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/tdpd 0.5 +fix upper1 all tdpd/source 1 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower1 all tdpd/source 1 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 +fix upper2 all tdpd/source 2 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 -0.01 +fix lower2 all tdpd/source 2 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 0.01 + +timestep 0.01 +run 500 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.78 + ghost atom cutoff = 1.78 + binsize = 0.89, bins = 23 23 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tdpd, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.814 | 4.823 | 4.829 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 48.948932 0 50.448838 199.65978 + 50 1.0153476 43.948796 0 45.471722 198.3346 + 100 1.0064284 43.754875 0 45.264424 197.5308 + 150 0.99609985 43.726751 0 45.220807 197.50623 + 200 1.0016604 43.720283 0 45.22268 197.81129 + 250 1.0054979 43.718568 0 45.22672 195.79405 + 300 0.9997618 43.716617 0 45.216166 197.84788 + 350 0.99170101 43.72093 0 45.208389 196.07711 + 400 1.0043692 43.71648 0 45.22294 199.55247 + 450 1.0086263 43.709988 0 45.222833 198.20516 + 500 1.0029076 43.717879 0 45.222146 197.26281 +Loop time of 24.5533 on 4 procs for 500 steps with 16000 atoms + +Performance: 17594.412 tau/day, 20.364 timesteps/s +99.9% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 22.236 | 22.418 | 22.736 | 4.0 | 91.30 +Neigh | 1.2759 | 1.2883 | 1.3077 | 1.1 | 5.25 +Comm | 0.35749 | 0.69526 | 0.88462 | 24.1 | 2.83 +Output | 0.00043321 | 0.00050318 | 0.00070691 | 0.0 | 0.00 +Modify | 0.11555 | 0.11648 | 0.11888 | 0.4 | 0.47 +Other | | 0.03473 | | | 0.14 + +Nlocal: 4000 ave 4012 max 3982 min +Histogram: 1 0 0 0 0 1 0 0 0 2 +Nghost: 5986.25 ave 6016 max 5956 min +Histogram: 1 0 0 0 1 0 1 0 0 1 +Neighs: 187309 ave 188264 max 186087 min +Histogram: 1 0 0 0 1 0 0 1 0 1 + +Total # of neighbors = 749235 +Ave neighs/atom = 46.8272 +Neighbor list builds = 180 +Dangerous builds = 0 +reset_timestep 0 + +compute cc1 all tdpd/cc/atom 1 +compute cc2 all tdpd/cc/atom 2 +compute bin all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 100 100 bin c_cc1 c_cc2 norm sample file cc.profile + +run 100 +Per MPI rank memory allocation (min/avg/max) = 5.065 | 5.074 | 5.082 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1.0029076 43.717879 0 45.222146 198.45789 + 50 1.0077982 43.713264 0 45.224867 196.56183 + 100 1.0036823 43.708022 0 45.213451 196.00815 +Loop time of 4.79577 on 4 procs for 100 steps with 16000 atoms + +Performance: 18015.870 tau/day, 20.852 timesteps/s +99.9% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.3481 | 4.39 | 4.4398 | 1.7 | 91.54 +Neigh | 0.25477 | 0.25675 | 0.25963 | 0.4 | 5.35 +Comm | 0.059327 | 0.11194 | 0.15608 | 11.0 | 2.33 +Output | 0.00011206 | 0.00011748 | 0.00011992 | 0.0 | 0.00 +Modify | 0.030417 | 0.030622 | 0.030739 | 0.1 | 0.64 +Other | | 0.006301 | | | 0.13 + +Nlocal: 4000 ave 4010 max 3987 min +Histogram: 1 0 0 0 0 1 1 0 0 1 +Nghost: 5985.25 ave 6025 max 5959 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +Neighs: 187304 ave 188092 max 186449 min +Histogram: 1 0 0 0 0 2 0 0 0 1 + +Total # of neighbors = 749216 +Ave neighs/atom = 46.826 +Neighbor list builds = 38 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:29 diff --git a/src/Makefile b/src/Makefile index 3b67d2284f..91d65a11c5 100644 --- a/src/Makefile +++ b/src/Makefile @@ -59,7 +59,8 @@ PACKAGE = asphere body class2 colloid compress coreshell dipole gpu \ PACKUSER = user-atc user-awpmd user-cgdna user-cgsdk user-colvars \ user-diffraction user-dpd user-drude user-eff user-fep user-h5md \ - user-intel user-lb user-manifold user-meamc user-mgpt user-misc user-molfile \ + user-intel user-lb user-manifold user-meamc user-meso \ + user-mgpt user-misc user-molfile \ user-netcdf user-omp user-phonon user-qmmm user-qtb \ user-quip user-reaxc user-smd user-smtbq user-sph user-tally \ user-vtk diff --git a/src/USER-MESO/README b/src/USER-MESO/README new file mode 100644 index 0000000000..0119fdb9f8 --- /dev/null +++ b/src/USER-MESO/README @@ -0,0 +1,50 @@ +This package implements three extensions of the dissipative particle +dynamics (DPD) method, i.e., energy-conserving DPD (eDPD) that can +model non-isothermal processes, many-body DPD (mDPD) for simulating +vapor-liquid coexistence, and transport DPD (tDPD) for modeling +advection-diffuion-reaction systems. The equations of motion of these +DPD extensions are integrated through the modified velocity-Verlet +(MVV) algorithm. + +Currently, the package has the following features: + +* Three new atom styles (eDPD, mDPD, tDPD) for tracking the particles + with internal temperature, local mass density, and chemical + concentration. + +* Three set commands (edpd/temp, edpd/cv, cc) for setting internal + temperature (edpd/temp) and heat capacity (edpd/cv) for eDPD + particles and for setting chemical concentration (cc) for tDPD + particles. + +* Two compute commands (edpd/temp/atom, tdpd/cc/atom) for accessing + the internal temperature of eDPD particles and the chemical + concentration of tDPD particles. + +* Three fix commands (mvv/dpd, mvv/edpd, mvv/tdpd) for integrating the + shochastic ODEs using the modified velocity-Verlet (MVV) algorithm. + +* Two fix commands (edpd/source, tdpd/source) for adding additional + heat source/sink or chemical concentration source/sink to eDPD and + tDPD particles. + +* One pair style (edpd) for modeling a eDPD fluid. + +* Two pair styles (mdpd/rhosum, mdpd) for modeling a mDPD fluid. + +* One pair style (tdpd) for modeling a tDPD fluid. + +See the doc pages for "atom style edpd", "atom style mdpd", "atom +style tdpd", "set edpd/temp", "set edpd/cv", "set tdpd/cc", "compute +edpd/temp/atom", "compute tdpd/cc/atom", "fix mvv/dpd", "fix +mvv/edpd", "fix mvv/tdpd", "fix edpd/source", "fix tdpd/source", "pair +edpd", "pair mdpd/rhosum", "pair mdpd", "pair tdpd" commands to get +started. At the bottom of the doc pages are many links to additional +documentation contained in the doc/USER/meso directory. + +There are example scripts for using this package in +examples/USER/meso. + +The person who created this package is Zhen Li (zhen_li at brown.edu) +at Division of Applied Mathematics, Brown University, USA. Contact him +directly if you have questions. diff --git a/src/USER-MESO/atom_vec_edpd.cpp b/src/USER-MESO/atom_vec_edpd.cpp new file mode 100644 index 0000000000..635743cc9e --- /dev/null +++ b/src/USER-MESO/atom_vec_edpd.cpp @@ -0,0 +1,844 @@ +/* ---------------------------------------------------------------------- + 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 "atom_vec_edpd.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "update.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecEDPD::AtomVecEDPD(LAMMPS *lmp) : AtomVec(lmp) +{ + if(strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style edpd requires lj units"); + + molecular = 0; + mass_type = 1; + forceclearflag = 1; + + comm_x_only = comm_f_only = 0; + comm->ghost_velocity = 1; + + size_forward = 3 + 5; // edpd_temp + vest[4] + size_reverse = 3 + 1; // edpd_flux + size_border = 6 + 6; // edpd_temp + edpd_cv + vest[4] + size_velocity = 3; + size_data_atom = 5 + 2; // we read id + type + edpd_temp + edpd_cv + xyz[3] + size_data_vel = 4; + xcol_data = 5; + + atom->edpd_flag = 1; + atom->vest_flag = 1; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecEDPD::grow(int n) +{ + if (n == 0) grow_nmax(); + else nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + tag = memory->grow(atom->tag,nmax,"atom:tag"); + type = memory->grow(atom->type,nmax,"atom:type"); + mask = memory->grow(atom->mask,nmax,"atom:mask"); + image = memory->grow(atom->image,nmax,"atom:image"); + x = memory->grow(atom->x,nmax,3,"atom:x"); + v = memory->grow(atom->v,nmax,3,"atom:v"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + edpd_cv= memory->grow(atom->edpd_cv, nmax, "atom:edpd_cv"); + edpd_temp = memory->grow(atom->edpd_temp, nmax, "atom:edpd_temp"); + edpd_flux = memory->grow(atom->edpd_flux, nmax*comm->nthreads,"atom:edpd_flux"); + vest = memory->grow(atom->vest, nmax, 4, "atom:vest"); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecEDPD::grow_reset() +{ + tag = atom->tag; type = atom->type; + mask = atom->mask; image = atom->image; + x = atom->x; v = atom->v; f = atom->f; + edpd_cv = atom->cv; edpd_temp = atom->edpd_temp; edpd_flux = atom->edpd_flux; + vest = atom->vest; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecEDPD::copy(int i, int j, int delflag) +{ + tag[j] = tag[i]; + type[j] = type[i]; + mask[j] = mask[i]; + image[j] = image[i]; + x[j][0] = x[i][0]; + x[j][1] = x[i][1]; + x[j][2] = x[i][2]; + v[j][0] = v[i][0]; + v[j][1] = v[i][1]; + v[j][2] = v[i][2]; + + edpd_temp[j] = edpd_temp[i]; + edpd_flux[j] = edpd_flux[i]; + edpd_cv[j] = edpd_cv[i]; + vest[j][0] = vest[i][0]; + vest[j][1] = vest[i][1]; + vest[j][2] = vest[i][2]; + vest[j][3] = vest[i][3]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + + +void AtomVecEDPD::force_clear(int n, size_t nbytes) +{ + memset(&edpd_flux[n],0,nbytes); +} + + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + buf[m++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::unpack_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + edpd_temp[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + vest[i][3] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::unpack_comm_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + edpd_temp[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + vest[i][3] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_reverse(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = f[i][0]; + buf[m++] = f[i][1]; + buf[m++] = f[i][2]; + buf[m++] = edpd_flux[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::unpack_reverse(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + f[j][0] += buf[m++]; + f[j][1] += buf[m++]; + f[j][2] += buf[m++]; + edpd_flux[j] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + buf[m++] = vest[j][0] + dvx; + buf[m++] = vest[j][1] + dvy; + buf[m++] = vest[j][2] + dvz; + buf[m++] = vest[j][3]; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::unpack_border(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + edpd_temp[i] = buf[m++]; + edpd_cv[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + vest[i][3] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + edpd_temp[i] = buf[m++]; + edpd_cv[i] = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + vest[i][3] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them +------------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_exchange(int i, double *buf) +{ + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = edpd_temp[i]; + buf[m++] = edpd_cv[i]; + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + buf[m++] = vest[i][3]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::unpack_exchange(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + edpd_temp[nlocal] = buf[m++]; + edpd_cv[nlocal] = buf[m++]; + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + vest[nlocal][3] = buf[m++]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> + unpack_exchange(nlocal,&buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVecEDPD::size_restart() +{ + int i; + + int nlocal = atom->nlocal; + int n = (11 + 6) * nlocal; // 11 + edpd_temp + edpd_cv + vest[4] + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + + return n; +} + +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + molecular types may be negative, but write as positive +------------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_restart(int i, double *buf) +{ + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = edpd_temp[i]; + buf[m++] = edpd_cv[i]; + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + buf[m++] = vest[i][3]; + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities +------------------------------------------------------------------------- */ + +int AtomVecEDPD::unpack_restart(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); + } + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + + edpd_temp[nlocal] = buf[m++]; + edpd_cv[nlocal]= buf[m++]; + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + vest[nlocal][3] = buf[m++]; + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (buf[0]) - m; + for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVecEDPD::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = 0; + type[nlocal] = itype; + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + edpd_temp[nlocal] = 1.0; + edpd_flux[nlocal] = 0.0; + edpd_cv[nlocal]= 1.0E5; + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + vest[nlocal][3] = edpd_temp[nlocal]; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecEDPD::data_atom(double *coord, imageint imagetmp, char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = ATOTAGINT(values[0]); + type[nlocal] = atoi(values[1]); + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + edpd_temp[nlocal] = atof(values[2]); + edpd_cv[nlocal] = atof(values[3]); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + + image[nlocal] = imagetmp; + + mask[nlocal] = 1; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + vest[nlocal][3] = edpd_temp[nlocal]; + edpd_flux[nlocal] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecEDPD::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(tag[i]).d; + buf[i][1] = ubuf(type[i]).d; + buf[i][2] = edpd_temp[i]; + buf[i][3] = edpd_cv[i]; + buf[i][4] = x[i][0]; + buf[i][5] = x[i][1]; + buf[i][6] = x[i][2]; + buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; + buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + } +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecEDPD::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4],buf[i][5],buf[i][6], + (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i); +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecEDPD::memory_usage() +{ + bigint bytes = 0; + + if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); + if (atom->memcheck("type")) bytes += memory->usage(type,nmax); + if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); + if (atom->memcheck("image")) bytes += memory->usage(image,nmax); + if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); + if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); + if (atom->memcheck("edpd_temp")) bytes += memory->usage(edpd_temp,nmax); + if (atom->memcheck("edpd_flux")) bytes += memory->usage(edpd_flux,nmax*comm->nthreads); + if (atom->memcheck("edpd_cv")) bytes += memory->usage(edpd_cv,nmax); + if (atom->memcheck("vest")) bytes += memory->usage(vest,nmax,4); + + return bytes; +} diff --git a/src/USER-MESO/atom_vec_edpd.h b/src/USER-MESO/atom_vec_edpd.h new file mode 100644 index 0000000000..36a4cae97b --- /dev/null +++ b/src/USER-MESO/atom_vec_edpd.h @@ -0,0 +1,68 @@ +/* -*- 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 ATOM_CLASS + +AtomStyle(edpd,AtomVecEDPD) + +#else + +#ifndef LMP_ATOM_VEC_EDPD_H +#define LMP_ATOM_VEC_EDPD_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecEDPD : public AtomVec { + public: + AtomVecEDPD(class LAMMPS *); + virtual ~AtomVecEDPD() {} + void grow(int); + void grow_reset(); + void copy(int, int, int); + void force_clear(int, size_t); + virtual int pack_comm(int, int *, double *, int, int *); + virtual int pack_comm_vel(int, int *, double *, int, int *); + virtual void unpack_comm(int, int, double *); + virtual void unpack_comm_vel(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + virtual int pack_border(int, int *, double *, int, int *); + virtual int pack_border_vel(int, int *, double *, int, int *); + virtual void unpack_border(int, int, double *); + virtual void unpack_border_vel(int, int, double *); + virtual int pack_exchange(int, double *); + virtual int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, imageint, char **); + void pack_data(double **); + void write_data(FILE *, int, double **); + bigint memory_usage(); + + protected: + tagint *tag; + int *type,*mask; + imageint *image; + double **x,**v,**f; + double **vest; // store intermediate velocity for using mvv integrator + double *edpd_temp,*edpd_flux,*edpd_cv; // temperature, heat flux, and heat capacity +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/atom_vec_mdpd.cpp b/src/USER-MESO/atom_vec_mdpd.cpp new file mode 100644 index 0000000000..0a4d302c36 --- /dev/null +++ b/src/USER-MESO/atom_vec_mdpd.cpp @@ -0,0 +1,951 @@ +/* ---------------------------------------------------------------------- + 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 "atom_vec_mdpd.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "update.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecMDPD::AtomVecMDPD(LAMMPS *lmp) : AtomVec(lmp) +{ + if(strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style mdpd requires lj units"); + + molecular = 0; + mass_type = 1; + forceclearflag = 1; + + comm_x_only = comm_f_only = 0; + comm->ghost_velocity = 1; + + size_forward = 3 + 4; // 3 + rho + vest[3], that means we may only communicate 4 in hybrid + size_reverse = 3 + 1; // 3 + drho + size_border = 6 + 4; // 6 + rho + vest[3] + size_velocity = 3; + size_data_atom = 5; + size_data_vel = 4; + xcol_data = 3; + + atom->rho_flag = 1; + atom->vest_flag = 1; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n + ------------------------------------------------------------------------- */ + +void AtomVecMDPD::grow(int n) +{ + if (n == 0) grow_nmax(); + else nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + tag = memory->grow(atom->tag, nmax, "atom:tag"); + type = memory->grow(atom->type, nmax, "atom:type"); + mask = memory->grow(atom->mask, nmax, "atom:mask"); + image = memory->grow(atom->image, nmax, "atom:image"); + x = memory->grow(atom->x, nmax, 3, "atom:x"); + v = memory->grow(atom->v, nmax, 3, "atom:v"); + f = memory->grow(atom->f, nmax*comm->nthreads, 3, "atom:f"); + + rho = memory->grow(atom->rho, nmax, "atom:rho"); + drho = memory->grow(atom->drho, nmax*comm->nthreads, "atom:drho"); + vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs + ------------------------------------------------------------------------- */ + +void AtomVecMDPD::grow_reset() { + tag = atom->tag; + type = atom->type; + mask = atom->mask; + image = atom->image; + x = atom->x; + v = atom->v; + f = atom->f; + rho = atom->rho; + drho = atom->drho; + vest = atom->vest; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::copy(int i, int j, int delflag) { + //printf("in AtomVecMDPD::copy\n"); + tag[j] = tag[i]; + type[j] = type[i]; + mask[j] = mask[i]; + image[j] = image[i]; + x[j][0] = x[i][0]; + x[j][1] = x[i][1]; + x[j][2] = x[i][2]; + v[j][0] = v[i][0]; + v[j][1] = v[i][1]; + v[j][2] = v[i][2]; + + rho[j] = rho[i]; + drho[j] = drho[i]; + vest[j][0] = vest[i][0]; + vest[j][1] = vest[i][1]; + vest[j][2] = vest[i][2]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i, j,delflag); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::force_clear(int n, size_t nbytes) +{ + memset(&drho[n],0,nbytes); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_comm_hybrid(int n, int *list, double *buf) { + //printf("in AtomVecMDPD::pack_comm_hybrid\n"); + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::unpack_comm_hybrid(int n, int first, double *buf) { + //printf("in AtomVecMDPD::unpack_comm_hybrid\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_border_hybrid(int n, int *list, double *buf) { + //printf("in AtomVecMDPD::pack_border_hybrid\n"); + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::unpack_border_hybrid(int n, int first, double *buf) { + //printf("in AtomVecMDPD::unpack_border_hybrid\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_reverse_hybrid(int n, int first, double *buf) { + //printf("in AtomVecMDPD::pack_reverse_hybrid\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = drho[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::unpack_reverse_hybrid(int n, int *list, double *buf) { + //printf("in AtomVecMDPD::unpack_reverse_hybrid\n"); + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + drho[j] += buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_comm(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMDPD::pack_comm\n"); + int i, j, m; + double dx, dy, dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0] * domain->xprd; + dy = pbc[1] * domain->yprd; + dz = pbc[2] * domain->zprd; + } else { + dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; + dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; + dz = pbc[2] * domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMDPD::pack_comm_vel\n"); + int i, j, m; + double dx, dy, dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0] * domain->xprd; + dy = pbc[1] * domain->yprd; + dz = pbc[2] * domain->zprd; + } else { + dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; + dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; + dz = pbc[2] * domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_comm(int n, int first, double *buf) { + //printf("in AtomVecMDPD::unpack_comm\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_comm_vel(int n, int first, double *buf) { + //printf("in AtomVecMDPD::unpack_comm_vel\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_reverse(int n, int first, double *buf) { + //printf("in AtomVecMDPD::pack_reverse\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = f[i][0]; + buf[m++] = f[i][1]; + buf[m++] = f[i][2]; + buf[m++] = drho[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_reverse(int n, int *list, double *buf) { + //printf("in AtomVecMDPD::unpack_reverse\n"); + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + f[j][0] += buf[m++]; + f[j][1] += buf[m++]; + f[j][2] += buf[m++]; + drho[j] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_border(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMDPD::pack_border\n"); + int i, j, m; + double dx, dy, dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0] * domain->xprd; + dy = pbc[1] * domain->yprd; + dz = pbc[2] * domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_border_vel(int n, int *list, double *buf, int pbc_flag, + int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0] * domain->xprd; + dy = pbc[1] * domain->yprd; + dz = pbc[2] * domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; + dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; + dvz = pbc[2] * h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + buf[m++] = rho[j]; + buf[m++] = vest[j][0] + dvx; + buf[m++] = vest[j][1] + dvy; + buf[m++] = vest[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_border(int n, int first, double *buf) { + //printf("in AtomVecMDPD::unpack_border\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) + grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_border_vel(int n, int first, double *buf) { + //printf("in AtomVecMDPD::unpack_border_vel\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) + grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them + ------------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_exchange(int i, double *buf) { + //printf("in AtomVecMDPD::pack_exchange\n"); + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = rho[i]; + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i, &buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::unpack_exchange(double *buf) { + //printf("in AtomVecMDPD::unpack_exchange\n"); + int nlocal = atom->nlocal; + if (nlocal == nmax) + grow(0); + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + rho[nlocal] = buf[m++]; + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> unpack_exchange(nlocal, + &buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes + ------------------------------------------------------------------------- */ + +int AtomVecMDPD::size_restart() { + int i; + + int nlocal = atom->nlocal; + int n = 15 * nlocal; // 11 + rho + vest[3] + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + + return n; +} + +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + molecular types may be negative, but write as positive + ------------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_restart(int i, double *buf) { + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = rho[i]; + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i, &buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities + ------------------------------------------------------------------------- */ + +int AtomVecMDPD::unpack_restart(double *buf) { + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra, nmax, atom->nextra_store, "atom:extra"); + } + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + rho[nlocal] = buf[m++]; + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (buf[0]) - m; + for (int i = 0; i < size; i++) + extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults + ------------------------------------------------------------------------- */ + +void AtomVecMDPD::create_atom(int itype, double *coord) { + int nlocal = atom->nlocal; + if (nlocal == nmax) + grow(0); + + tag[nlocal] = 0; + type[nlocal] = itype; + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + rho[nlocal] = 0.0; + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + drho[nlocal] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities + ------------------------------------------------------------------------- */ + +void AtomVecMDPD::data_atom(double *coord, imageint imagetmp, char **values) { + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = ATOTAGINT(values[0]); + type[nlocal] = atoi(values[1]); + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + + image[nlocal] = imagetmp; + + mask[nlocal] = 1; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + + rho[nlocal] = 0.0; + drho[nlocal] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one line in Atoms section of data file + initialize other atom quantities for this sub-style + ------------------------------------------------------------------------- */ + +int AtomVecMDPD::data_atom_hybrid(int nlocal, char **values) +{ + rho[nlocal] = atof(values[0]); + return 3; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecMDPD::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(tag[i]).d; + buf[i][1] = ubuf(type[i]).d; + buf[i][2] = rho[i]; + buf[i][3] = x[i][0]; + buf[i][4] = x[i][1]; + buf[i][5] = x[i][2]; + buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; + buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + } +} + +/* ---------------------------------------------------------------------- + pack hybrid atom info for data file +------------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_data_hybrid(int i, double *buf) +{ + buf[0] = rho[i]; + return 3; +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecMDPD::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,TAGINT_FORMAT + " %d %-1.16e %-1.16e %-1.16e %-1.16e " + "%d %d %d\n", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4],buf[i][5], + (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, + (int) ubuf(buf[i][8]).i); +} + +/* ---------------------------------------------------------------------- + write hybrid atom info to data file +------------------------------------------------------------------------- */ + +int AtomVecMDPD::write_data_hybrid(FILE *fp, double *buf) +{ + fprintf(fp," %-1.16e",buf[0]); + return 3; +} + +/* ---------------------------------------------------------------------- + assign an index to named atom property and return index + return -1 if name is unknown to this atom style +------------------------------------------------------------------------- */ + +int AtomVecMDPD::property_atom(char *name) +{ + if (strcmp(name,"rho") == 0) return 0; + if (strcmp(name,"drho") == 0) return 1; + return -1; +} + +/* ---------------------------------------------------------------------- + pack per-atom data into buf for ComputePropertyAtom + index maps to data specific to this atom style +------------------------------------------------------------------------- */ + +void AtomVecMDPD::pack_property_atom(int index, double *buf, + int nvalues, int groupbit) +{ + int *mask = atom->mask; + int nlocal = atom->nlocal; + int n = 0; + + if (index == 0) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = rho[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 1) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = drho[i]; + else buf[n] = 0.0; + n += nvalues; + } + } +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory + ------------------------------------------------------------------------- */ + +bigint AtomVecMDPD::memory_usage() { + bigint bytes = 0; + + if (atom->memcheck("tag")) bytes += memory->usage(tag, nmax); + if (atom->memcheck("type")) bytes += memory->usage(type, nmax); + if (atom->memcheck("mask")) bytes += memory->usage(mask, nmax); + if (atom->memcheck("image")) bytes += memory->usage(image, nmax); + if (atom->memcheck("x")) bytes += memory->usage(x, nmax, 3); + if (atom->memcheck("v")) bytes += memory->usage(v, nmax, 3); + if (atom->memcheck("f")) bytes += memory->usage(f, nmax*comm->nthreads, 3); + if (atom->memcheck("rho")) bytes += memory->usage(rho, nmax); + if (atom->memcheck("drho")) bytes += memory->usage(drho, nmax*comm->nthreads); + if (atom->memcheck("vest")) bytes += memory->usage(vest, nmax, 3); + + return bytes; +} diff --git a/src/USER-MESO/atom_vec_mdpd.h b/src/USER-MESO/atom_vec_mdpd.h new file mode 100644 index 0000000000..9e9ffcdcf2 --- /dev/null +++ b/src/USER-MESO/atom_vec_mdpd.h @@ -0,0 +1,79 @@ +/* -*- 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 ATOM_CLASS + +AtomStyle(mdpd,AtomVecMDPD) + +#else + +#ifndef LMP_ATOM_VEC_MDPD_H +#define LMP_ATOM_VEC_MDPD_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecMDPD : public AtomVec { + public: + AtomVecMDPD(class LAMMPS *); + ~AtomVecMDPD() {} + void grow(int); + void grow_reset(); + void copy(int, int, int); + void force_clear(int, size_t); + int pack_comm(int, int *, double *, int, int *); + int pack_comm_vel(int, int *, double *, int, int *); + void unpack_comm(int, int, double *); + void unpack_comm_vel(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + int pack_comm_hybrid(int, int *, double *); + int unpack_comm_hybrid(int, int, double *); + int pack_border_hybrid(int, int *, double *); + int unpack_border_hybrid(int, int, double *); + int pack_reverse_hybrid(int, int, double *); + int unpack_reverse_hybrid(int, int *, double *); + int pack_border(int, int *, double *, int, int *); + int pack_border_vel(int, int *, double *, int, int *); + void unpack_border(int, int, double *); + void unpack_border_vel(int, int, double *); + int pack_exchange(int, double *); + int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, imageint, char **); + int data_atom_hybrid(int, char **); + void pack_data(double **); + int pack_data_hybrid(int, double *); + void write_data(FILE *, int, double **); + int write_data_hybrid(FILE *, double *); + int property_atom(char *); + void pack_property_atom(int, double *, int, int); + bigint memory_usage(); + + private: + tagint *tag; + int *type,*mask; + imageint *image; + double **x,**v,**f; + double *rho, *drho; + double **vest; // estimated velocity during force computation +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/atom_vec_tdpd.cpp b/src/USER-MESO/atom_vec_tdpd.cpp new file mode 100644 index 0000000000..ce9e492029 --- /dev/null +++ b/src/USER-MESO/atom_vec_tdpd.cpp @@ -0,0 +1,879 @@ +/* ---------------------------------------------------------------------- + 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 "atom_vec_tdpd.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "update.h" +#include "memory.h" +#include "error.h" +#include "input.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecTDPD::AtomVecTDPD(LAMMPS *lmp) : AtomVec(lmp) +{ + if(strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style edpd requires lj units"); + + molecular = 0; + mass_type = 1; + forceclearflag = 1; + + comm_x_only = comm_f_only = 0; + comm->ghost_velocity = 1; + + cc_species = 0; // for now, reset in process_args() + + size_forward = 3 + cc_species + 3; //vest[3] + size_reverse = 3 + cc_species; + size_border = 6 + cc_species + 3; //vest[3] + size_velocity = 3; + // for data_atom, we read id + type + xyz[3] + cc[i] where i=1,cc_species + size_data_atom = 5 + cc_species; + size_data_vel = 4; + xcol_data = 3; + + atom->tdpd_flag = 1; + atom->vest_flag = 1; +} + +/* ---------------------------------------------------------------------- + process additional args + single arg = number of cc_species +------------------------------------------------------------------------- */ + +void AtomVecTDPD::process_args(int narg, char **arg) +{ + if (narg < 1) error->all(FLERR,"Invalid atom_style tdpd command"); + + atom->cc_species = force->inumeric(FLERR,arg[0]); + cc_species = atom->cc_species; + + // reset sizes that depend on cc_species + + size_forward = 3 + cc_species + 3; + size_reverse = 3 + cc_species; + size_border = 6 + cc_species + 3; + size_data_atom = 5 + cc_species; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecTDPD::grow(int n) +{ + if (n == 0) grow_nmax(); + else nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + tag = memory->grow(atom->tag,nmax,"atom:tag"); + type = memory->grow(atom->type,nmax,"atom:type"); + mask = memory->grow(atom->mask,nmax,"atom:mask"); + image = memory->grow(atom->image,nmax,"atom:image"); + x = memory->grow(atom->x,nmax,3,"atom:x"); + v = memory->grow(atom->v,nmax,3,"atom:v"); + f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + cc = memory->grow(atom->cc,nmax*comm->nthreads,cc_species,"atom:cc"); + cc_flux = memory->grow(atom->cc_flux,nmax*comm->nthreads,cc_species, + "atom:cc_flux"); + vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecTDPD::grow_reset() +{ + tag = atom->tag; type = atom->type; + mask = atom->mask; image = atom->image; + x = atom->x; v = atom->v; f = atom->f; + cc = atom->cc; cc_flux = atom->cc_flux; + vest = atom->vest; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecTDPD::copy(int i, int j, int delflag) +{ + tag[j] = tag[i]; + type[j] = type[i]; + mask[j] = mask[i]; + image[j] = image[i]; + x[j][0] = x[i][0]; + x[j][1] = x[i][1]; + x[j][2] = x[i][2]; + v[j][0] = v[i][0]; + v[j][1] = v[i][1]; + v[j][2] = v[i][2]; + + for(int k = 0; k < cc_species; k++) + cc[j][k] = cc[i][k]; + + vest[j][0] = vest[i][0]; + vest[j][1] = vest[i][1]; + vest[j][2] = vest[i][2]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + + +void AtomVecTDPD::force_clear(int n, size_t nbytes) +{ + memset(&cc_flux[n][0],0,cc_species*nbytes); +} + + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::unpack_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + + for(int k = 0; k < cc_species; k++) + cc[i][k] = buf[m++]; + + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::unpack_comm_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + for(int k = 0; k < cc_species; k++) + cc[i][k] = buf[m++]; + + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_reverse(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = f[i][0]; + buf[m++] = f[i][1]; + buf[m++] = f[i][2]; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc_flux[i][k]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::unpack_reverse(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + f[j][0] += buf[m++]; + f[j][1] += buf[m++]; + f[j][2] += buf[m++]; + for(int k = 0; k < cc_species; k++) + cc_flux[j][k] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::unpack_border(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + for(int k = 0; k < cc_species; k++) + cc[i][k] = buf[m++]; + + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + for(int k = 0; k < cc_species; k++) + cc[i][k] = buf[m++]; + + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them +------------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_exchange(int i, double *buf) +{ + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[i][k]; + + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::unpack_exchange(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + for(int k = 0; k < cc_species; k++) + cc[nlocal][k] = buf[m++]; + + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> + unpack_exchange(nlocal,&buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVecTDPD::size_restart() +{ + int i; + + int nlocal = atom->nlocal; + int n = (11 + cc_species + 3) * nlocal; // 11 + cc[i] + vest[3] + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + + return n; +} + +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + molecular types may be negative, but write as positive +------------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_restart(int i, double *buf) +{ + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[i][k]; + + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities +------------------------------------------------------------------------- */ + +int AtomVecTDPD::unpack_restart(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); + } + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + for(int k = 0; k < cc_species; k++) + cc[nlocal][k] = buf[m++]; + + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (buf[0]) - m; + for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVecTDPD::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = 0; + type[nlocal] = itype; + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + for(int k = 0; k < cc_species; k++) + cc[nlocal][k] = 0.0; + + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecTDPD::data_atom(double *coord, imageint imagetmp, char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = ATOTAGINT(values[0]); + type[nlocal] = atoi(values[1]); + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + + for(int k = 0; k < cc_species; k++) + cc[nlocal][k] = atof( values[5+k] ); + + image[nlocal] = imagetmp; + + mask[nlocal] = 1; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecTDPD::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(tag[i]).d; + buf[i][1] = ubuf(type[i]).d; + buf[i][2] = x[i][0]; + buf[i][3] = x[i][1]; + buf[i][4] = x[i][2]; + buf[i][5] = ubuf((image[i] & IMGMASK) - IMGMAX).d; + buf[i][6] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][7] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + for(int k = 0; k < cc_species; k++) + buf[i][8+k] = cc[i][k]; + } +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecTDPD::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++){ + fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %d %d %d", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4], + (int) ubuf(buf[i][5]).i,(int) ubuf(buf[i][6]).i, + (int) ubuf(buf[i][7]).i); + for(int k = 0; k < cc_species; k++) + fprintf(fp,TAGINT_FORMAT " %-1.16e",buf[i][8+k]); + fprintf(fp,TAGINT_FORMAT "\n"); + } +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecTDPD::memory_usage() +{ + bigint bytes = 0; + + if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); + if (atom->memcheck("type")) bytes += memory->usage(type,nmax); + if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); + if (atom->memcheck("image")) bytes += memory->usage(image,nmax); + if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); + if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); + if (atom->memcheck("cc")) bytes += memory->usage(cc,nmax*comm->nthreads,cc_species); + if (atom->memcheck("cc_flux")) bytes += memory->usage(cc_flux,nmax*comm->nthreads,cc_species); + if (atom->memcheck("vest")) bytes += memory->usage(vest, nmax); + + return bytes; +} diff --git a/src/USER-MESO/atom_vec_tdpd.h b/src/USER-MESO/atom_vec_tdpd.h new file mode 100644 index 0000000000..86e9ae4bb8 --- /dev/null +++ b/src/USER-MESO/atom_vec_tdpd.h @@ -0,0 +1,83 @@ +/* -*- 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 ATOM_CLASS + +AtomStyle(tdpd,AtomVecTDPD) + +#else + +#ifndef LMP_ATOM_VEC_TDPD_H +#define LMP_ATOM_VEC_TDPD_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecTDPD : public AtomVec { + public: + AtomVecTDPD(class LAMMPS *); + virtual ~AtomVecTDPD() {} + void process_args(int, char **); + void grow(int); + void grow_reset(); + void copy(int, int, int); + void force_clear(int, size_t); + virtual int pack_comm(int, int *, double *, int, int *); + virtual int pack_comm_vel(int, int *, double *, int, int *); + virtual void unpack_comm(int, int, double *); + virtual void unpack_comm_vel(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + virtual int pack_border(int, int *, double *, int, int *); + virtual int pack_border_vel(int, int *, double *, int, int *); + virtual void unpack_border(int, int, double *); + virtual void unpack_border_vel(int, int, double *); + virtual int pack_exchange(int, double *); + virtual int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, imageint, char **); + void pack_data(double **); + void write_data(FILE *, int, double **); + bigint memory_usage(); + + protected: + tagint *tag; + int *type,*mask; + imageint *image; + double **x,**v,**f; + double **vest; // store intermediate velocity for using mvv integrator + double **cc,**cc_flux; + int cc_species; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + +*/ diff --git a/src/USER-MESO/compute_edpd_temp_atom.cpp b/src/USER-MESO/compute_edpd_temp_atom.cpp new file mode 100644 index 0000000000..15fdab2a69 --- /dev/null +++ b/src/USER-MESO/compute_edpd_temp_atom.cpp @@ -0,0 +1,97 @@ +/* ---------------------------------------------------------------------- + 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 "compute_edpd_temp_atom.h" +#include "atom.h" +#include "update.h" +#include "modify.h" +#include "comm.h" +#include "force.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeEDPDTempAtom::ComputeEDPDTempAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Number of arguments for compute edpd/temp/atom command != 3"); + if (atom->edpd_flag != 1) error->all(FLERR,"compute edpd/temp/atom command requires atom_style with temperature (e.g. edpd)"); + + peratom_flag = 1; + size_peratom_cols = 0; + + nmax = 0; + temp_vector = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ComputeEDPDTempAtom::~ComputeEDPDTempAtom() +{ + memory->sfree(temp_vector); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeEDPDTempAtom::init() +{ + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"temp_vector/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute temp_vector/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeEDPDTempAtom::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow temp_vector array if necessary + + if (atom->nmax > nmax) { + memory->sfree(temp_vector); + nmax = atom->nmax; + temp_vector = (double *) memory->smalloc(nmax*sizeof(double),"temp_vector/atom:temp_vector"); + vector_atom = temp_vector; + } + + double *edpd_temp = atom->edpd_temp; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + temp_vector[i] = edpd_temp[i]; + } + else { + temp_vector[i] = 0.0; + } + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeEDPDTempAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/USER-MESO/compute_edpd_temp_atom.h b/src/USER-MESO/compute_edpd_temp_atom.h new file mode 100644 index 0000000000..4c61b664cc --- /dev/null +++ b/src/USER-MESO/compute_edpd_temp_atom.h @@ -0,0 +1,43 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS + +ComputeStyle(edpd/temp/atom,ComputeEDPDTempAtom) + +#else + +#ifndef LMP_COMPUTE_EDPD_TEMP_ATOM_H +#define LMP_COMPUTE_EDPD_TEMP_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeEDPDTempAtom : public Compute { + public: + ComputeEDPDTempAtom(class LAMMPS *, int, char **); + ~ComputeEDPDTempAtom(); + void init(); + void compute_peratom(); + double memory_usage(); + + private: + int nmax; + double *temp_vector; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/compute_tdpd_cc_atom.cpp b/src/USER-MESO/compute_tdpd_cc_atom.cpp new file mode 100644 index 0000000000..b33550f5c1 --- /dev/null +++ b/src/USER-MESO/compute_tdpd_cc_atom.cpp @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------- + 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 "compute_tdpd_cc_atom.h" +#include "atom.h" +#include "update.h" +#include "modify.h" +#include "comm.h" +#include "force.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeTDPDCCAtom::ComputeTDPDCCAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) +{ + if (narg != 4) error->all(FLERR,"Number of arguments for compute tdpd/cc/atom command != 4"); + if (atom->tdpd_flag != 1) error->all(FLERR,"compute tdpd/cc/atom command requires atom_style with concentration (e.g. tdpd)"); + + index = force->inumeric(FLERR,arg[3]); + + peratom_flag = 1; + size_peratom_cols = 0; + + nmax = 0; + cc_vector = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ComputeTDPDCCAtom::~ComputeTDPDCCAtom() +{ + memory->sfree(cc_vector); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeTDPDCCAtom::init() +{ + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"cc_vector/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute cc_vector/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeTDPDCCAtom::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow cc_vector array if necessary + + if (atom->nmax > nmax) { + memory->sfree(cc_vector); + nmax = atom->nmax; + cc_vector = (double *) memory->smalloc(nmax*sizeof(double),"cc_vector/atom:cc_vector"); + vector_atom = cc_vector; + } + + double **cc = atom->cc; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + cc_vector[i] = cc[i][index-1]; + } + else + cc_vector[i] = 0.0; + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeTDPDCCAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/USER-MESO/compute_tdpd_cc_atom.h b/src/USER-MESO/compute_tdpd_cc_atom.h new file mode 100644 index 0000000000..324cb779a4 --- /dev/null +++ b/src/USER-MESO/compute_tdpd_cc_atom.h @@ -0,0 +1,44 @@ +/* -*- 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 COMPUTE_CLASS + +ComputeStyle(tdpd/cc/atom,ComputeTDPDCCAtom) + +#else + +#ifndef LMP_COMPUTE_TDPD_CC_ATOM_H +#define LMP_COMPUTE_TDPD_CC_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeTDPDCCAtom : public Compute { + public: + ComputeTDPDCCAtom(class LAMMPS *, int, char **); + ~ComputeTDPDCCAtom(); + void init(); + void compute_peratom(); + double memory_usage(); + + private: + int nmax; + int index; + double *cc_vector; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_edpd_source.cpp b/src/USER-MESO/fix_edpd_source.cpp new file mode 100644 index 0000000000..3ee7e8e291 --- /dev/null +++ b/src/USER-MESO/fix_edpd_source.cpp @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------- + 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_edpd_source.h" +#include "atom.h" +#include "comm.h" +#include "update.h" +#include "modify.h" +#include "domain.h" +#include "lattice.h" +#include "input.h" +#include "variable.h" +#include "error.h" +#include "force.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixEDPDSource::FixEDPDSource(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"edpd/source") != 0 && narg < 4) + error->all(FLERR,"Illegal fix edpd/source command"); + + int iarg = 3; + + if (strcmp(arg[iarg],"sphere") == 0) option = 0; + else if (strcmp(arg[iarg],"cuboid") == 0) option = 1; + else error->all(FLERR,"Illegal fix edpd/source command"); + iarg++; + + if(option == 0){ + if (narg != 9 ) error->all(FLERR,"Illegal fix edpd/source command (5 args for sphere)"); + center[0] = force->numeric(FLERR,arg[iarg++]); + center[1] = force->numeric(FLERR,arg[iarg++]); + center[2] = force->numeric(FLERR,arg[iarg++]); + radius = force->numeric(FLERR,arg[iarg++]); + value = force->numeric(FLERR,arg[iarg++]); + } + else if(option == 1){ + if (narg != 11 ) error->all(FLERR,"Illegal fix edpd/edpd command (7 args for cuboid)"); + center[0] = force->numeric(FLERR,arg[iarg++]); + center[1] = force->numeric(FLERR,arg[iarg++]); + center[2] = force->numeric(FLERR,arg[iarg++]); + dLx = force->numeric(FLERR,arg[iarg++]); + dLy = force->numeric(FLERR,arg[iarg++]); + dLz = force->numeric(FLERR,arg[iarg++]); + value = force->numeric(FLERR,arg[iarg++]); + } + else error->all(FLERR,"Illegal fix edpd/source command"); +} + +/* ---------------------------------------------------------------------- */ + +FixEDPDSource::~FixEDPDSource() +{ +} + +/* ---------------------------------------------------------------------- */ + +int FixEDPDSource::setmask() +{ + int mask = 0; + mask |= POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixEDPDSource::init() +{ +} + +/* ---------------------------------------------------------------------- */ + +void FixEDPDSource::post_force(int vflag) +{ + double **x = atom->x; + double *edpd_flux = atom->edpd_flux; + double *edpd_cv = atom->edpd_cv; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double drx, dry, drz, rsq; + double radius_sq = radius*radius*radius; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + if(option == 0){ + drx = x[i][0] - center[0]; + dry = x[i][1] - center[1]; + drz = x[i][2] - center[2]; + rsq = drx*drx + dry*dry + drz*drz; + if(rsq < radius_sq) + edpd_flux[i] += value*edpd_cv[i]; + } + else if(option == 1){ + drx = x[i][0] - center[0]; + dry = x[i][1] - center[1]; + drz = x[i][2] - center[2]; + if(abs(drx) <= 0.5*dLx && abs(dry) <= 0.5*dLy && abs(drz) <= 0.5*dLz) + edpd_flux[i] += value*edpd_cv[i]; + } + } + } +} diff --git a/src/USER-MESO/fix_edpd_source.h b/src/USER-MESO/fix_edpd_source.h new file mode 100644 index 0000000000..1ea8610ce9 --- /dev/null +++ b/src/USER-MESO/fix_edpd_source.h @@ -0,0 +1,44 @@ +/* -*- 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(edpd/source,FixEDPDSource) + +#else + +#ifndef LMP_FIX_EDPDSOURCE_H +#define LMP_FIX_EDPDSOURCE_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixEDPDSource : public Fix { + public: + FixEDPDSource(class LAMMPS *, int, char **); + ~FixEDPDSource(); + int setmask(); + void init(); + void post_force(int); + + protected: + int option; + double center[3], radius, dLx, dLy, dLz; + double value; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_mvv_dpd.cpp b/src/USER-MESO/fix_mvv_dpd.cpp new file mode 100644 index 0000000000..77a67273f6 --- /dev/null +++ b/src/USER-MESO/fix_mvv_dpd.cpp @@ -0,0 +1,136 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + This is a time integrator for position and velocity (x and v) using the + modified velocity-Verlet (MVV) algorithm. + Setting verlet = 0.5 recovers the standard velocity-Verlet algorithm. + + Contributing author: Zhen Li (Brown University) + Email: zhen_li@brown.edu +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_mvv_dpd.h" +#include "atom.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixMvvDPD::FixMvvDPD(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"mvv/dpd") != 0 && narg < 3) + error->all(FLERR,"Illegal fix mvv/dpd command"); + + verlet = 0.5; + if(narg > 3) verlet = force->numeric(FLERR,arg[3]); + + dynamic_group_allow = 1; + time_integrate = 1; +} + +/* ---------------------------------------------------------------------- */ + +int FixMvvDPD::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvDPD::init() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass +------------------------------------------------------------------------- */ + +void FixMvvDPD::initial_integrate(int vflag) +{ + double dtfm; + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double **vest = atom->vest; + 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; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + vest[i][0] = v[i][0] + dtfm * f[i][0]; + vest[i][1] = v[i][1] + dtfm * f[i][1]; + vest[i][2] = v[i][2] + dtfm * f[i][2]; + + x[i][0] += dtv * vest[i][0]; + x[i][1] += dtv * vest[i][1]; + x[i][2] += dtv * vest[i][2]; + v[i][0] += 2.0 * verlet * dtfm * f[i][0]; + v[i][1] += 2.0 * verlet * dtfm * f[i][1]; + v[i][2] += 2.0 * verlet * dtfm * f[i][2]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvDPD::final_integrate() +{ + double dtfm; + double **v = atom->v; + double **f = atom->f; + double **vest = atom->vest; + 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; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + v[i][0] = vest[i][0] + dtfm * f[i][0]; + v[i][1] = vest[i][1] + dtfm * f[i][1]; + v[i][2] = vest[i][2] + dtfm * f[i][2]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvDPD::reset_dt() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} diff --git a/src/USER-MESO/fix_mvv_dpd.h b/src/USER-MESO/fix_mvv_dpd.h new file mode 100644 index 0000000000..86cc79485f --- /dev/null +++ b/src/USER-MESO/fix_mvv_dpd.h @@ -0,0 +1,45 @@ +/* -*- 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(mvv/dpd,FixMvvDPD) + +#else + +#ifndef LMP_FIX_MVV_DPD_H +#define LMP_FIX_MVV_DPD_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMvvDPD : public Fix { + public: + FixMvvDPD(class LAMMPS *, int, char **); + virtual ~FixMvvDPD() {} + int setmask(); + virtual void init(); + virtual void initial_integrate(int); + virtual void final_integrate(); + virtual void reset_dt(); + + protected: + double dtv, dtf; + double verlet; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_mvv_edpd.cpp b/src/USER-MESO/fix_mvv_edpd.cpp new file mode 100644 index 0000000000..fe801d6d36 --- /dev/null +++ b/src/USER-MESO/fix_mvv_edpd.cpp @@ -0,0 +1,163 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + This is a time integrator for position, velocity and temperature (x, + v and edpd_T) using the modified velocity-Verlet (MVV) algorithm. + Setting verlet = 0.5 recovers the standard velocity-Verlet algorithm. + + Contributing author: Zhen Li (Brown University) + Email: zhen_li@brown.edu + + Please cite the related publication: + Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis. "Energy- + conserving dissipative particle dynamics with temperature-dependent + properties". Journal of Computational Physics, 2014, 265: 113-127. + + Z. Li, Y.-H. Tang , X. Li and G.E. Karniadakis. "Mesoscale modeling of + phase transition dynamics of thermoresponsive polymers". Chemical + Communications, 2015, 51: 11038-11040. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_mvv_edpd.h" +#include "atom.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixMvvEDPD::FixMvvEDPD(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"mvv/edpd") != 0 && narg < 3) + error->all(FLERR,"Illegal fix mvv/edpd command"); + + verlet = 0.5; + if(narg > 3) verlet = force->numeric(FLERR,arg[3]); + + dynamic_group_allow = 1; + time_integrate = 1; +} + +/* ---------------------------------------------------------------------- */ + +int FixMvvEDPD::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvEDPD::init() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass +------------------------------------------------------------------------- */ + +void FixMvvEDPD::initial_integrate(int vflag) +{ + double dtfm,dtT; + // update v and x and cc of atoms in group + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double *edpd_temp = atom->edpd_temp; + double *edpd_flux = atom->edpd_flux; + double *edpd_cv = atom->edpd_cv; + double **vest = atom->vest; + 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; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + dtT = 0.5 * dtv / edpd_cv[i]; + + vest[i][0] = v[i][0] + dtfm * f[i][0]; + vest[i][1] = v[i][1] + dtfm * f[i][1]; + vest[i][2] = v[i][2] + dtfm * f[i][2]; + vest[i][3] = edpd_temp[i] + dtT * edpd_flux[i]; + + x[i][0] += dtv * vest[i][0]; + x[i][1] += dtv * vest[i][1]; + x[i][2] += dtv * vest[i][2]; + v[i][0] += 2.0 * verlet * dtfm * f[i][0]; + v[i][1] += 2.0 * verlet * dtfm * f[i][1]; + v[i][2] += 2.0 * verlet * dtfm * f[i][2]; + edpd_temp[i] += 2.0 * verlet * dtT * edpd_flux[i]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvEDPD::final_integrate() +{ + double dtfm, dtT; + + // update v and edpd_temp of atoms in group + + double **v = atom->v; + double **f = atom->f; + double *edpd_temp = atom->edpd_temp; + double *edpd_flux = atom->edpd_flux; + double *edpd_cv = atom->edpd_cv; + double **vest = atom->vest; + 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; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + dtT = 0.5 * dtv / edpd_cv[i]; + + v[i][0] = vest[i][0] + dtfm * f[i][0]; + v[i][1] = vest[i][1] + dtfm * f[i][1]; + v[i][2] = vest[i][2] + dtfm * f[i][2]; + edpd_temp[i] = vest[i][3] + dtT * edpd_flux[i]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvEDPD::reset_dt() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} diff --git a/src/USER-MESO/fix_mvv_edpd.h b/src/USER-MESO/fix_mvv_edpd.h new file mode 100644 index 0000000000..0d9c5f195a --- /dev/null +++ b/src/USER-MESO/fix_mvv_edpd.h @@ -0,0 +1,45 @@ +/* -*- 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(mvv/edpd,FixMvvEDPD) + +#else + +#ifndef LMP_FIX_MVV_EDPD_H +#define LMP_FIX_MVV_EDPD_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMvvEDPD : public Fix { + public: + FixMvvEDPD(class LAMMPS *, int, char **); + virtual ~FixMvvEDPD() {} + int setmask(); + virtual void init(); + virtual void initial_integrate(int); + virtual void final_integrate(); + virtual void reset_dt(); + + protected: + double dtv, dtf; + double verlet; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_mvv_tdpd.cpp b/src/USER-MESO/fix_mvv_tdpd.cpp new file mode 100644 index 0000000000..382ce9033a --- /dev/null +++ b/src/USER-MESO/fix_mvv_tdpd.cpp @@ -0,0 +1,156 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + This is a time integrator for position, velocity and concentration (x, + v and cc) using the modified velocity-Verlet (MVV) algorithm. + Setting verlet = 0.5 recovers the standard velocity-Verlet algorithm. + + Contributing author: Zhen Li (Brown University) + Email: zhen_li@brown.edu + + Please cite the related publication: + Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis. "Transport + dissipative particle dynamics model for mesoscopic advection-diffusion + -reaction problems". The Journal of Chemical Physics, 2015, 143: 014101. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_mvv_tdpd.h" +#include "atom.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixMvvTDPD::FixMvvTDPD(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"tdpd/verlet") != 0 && narg < 3) + error->all(FLERR,"Illegal fix mvv/tdpd command"); + + verlet = 0.5; + if(narg > 3) verlet = force->numeric(FLERR,arg[3]); + + cc_species = atom->cc_species; + + dynamic_group_allow = 1; + time_integrate = 1; +} + +/* ---------------------------------------------------------------------- */ + +int FixMvvTDPD::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvTDPD::init() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass +------------------------------------------------------------------------- */ + +void FixMvvTDPD::initial_integrate(int vflag) +{ + double dtfm; + // update v and x and cc of atoms in group + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double **cc = atom->cc; + double **cc_flux = atom->cc_flux; + double **vest = atom->vest; + 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; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + vest[i][0] = v[i][0] + dtfm * f[i][0]; + vest[i][1] = v[i][1] + dtfm * f[i][1]; + vest[i][2] = v[i][2] + dtfm * f[i][2]; + + x[i][0] += dtv * vest[i][0]; + x[i][1] += dtv * vest[i][1]; + x[i][2] += dtv * vest[i][2]; + v[i][0] += 2.0 * verlet * dtfm * f[i][0]; + v[i][1] += 2.0 * verlet * dtfm * f[i][1]; + v[i][2] += 2.0 * verlet * dtfm * f[i][2]; + for(int k = 0; k < cc_species; k++) + cc[i][k] += 0.5 * dtv * cc_flux[i][k]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvTDPD::final_integrate() +{ + double dtfm; + + // update v of atoms in group + + double **v = atom->v; + double **f = atom->f; + double **cc = atom->cc; + double **cc_flux = atom->cc_flux; + double **vest = atom->vest; + 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; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + v[i][0] = vest[i][0] + dtfm * f[i][0]; + v[i][1] = vest[i][1] + dtfm * f[i][1]; + v[i][2] = vest[i][2] + dtfm * f[i][2]; + for(int k = 0; k < cc_species; k++) + cc[i][k] += 0.5 * dtv * cc_flux[i][k]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvTDPD::reset_dt() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} diff --git a/src/USER-MESO/fix_mvv_tdpd.h b/src/USER-MESO/fix_mvv_tdpd.h new file mode 100644 index 0000000000..7adb23af69 --- /dev/null +++ b/src/USER-MESO/fix_mvv_tdpd.h @@ -0,0 +1,46 @@ +/* -*- 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(mvv/tdpd,FixMvvTDPD) + +#else + +#ifndef LMP_FIX_MVV_TDPD_H +#define LMP_FIX_MVV_TDPD_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMvvTDPD : public Fix { + public: + FixMvvTDPD(class LAMMPS *, int, char **); + virtual ~FixMvvTDPD() {} + int setmask(); + virtual void init(); + virtual void initial_integrate(int); + virtual void final_integrate(); + virtual void reset_dt(); + + protected: + double dtv, dtf; + double verlet; + int cc_species; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_tdpd_source.cpp b/src/USER-MESO/fix_tdpd_source.cpp new file mode 100644 index 0000000000..3dfeba4787 --- /dev/null +++ b/src/USER-MESO/fix_tdpd_source.cpp @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------- + 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_tdpd_source.h" +#include "atom.h" +#include "comm.h" +#include "update.h" +#include "modify.h" +#include "domain.h" +#include "lattice.h" +#include "input.h" +#include "variable.h" +#include "error.h" +#include "force.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixTDPDSource::FixTDPDSource(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"tdpd/source") != 0 && narg < 4) + error->all(FLERR,"Illegal fix tdpd/source command"); + + int iarg = 3; + cc_index = force->inumeric(FLERR,arg[iarg++]); + + if (strcmp(arg[iarg],"sphere") == 0) option = 0; + else if (strcmp(arg[iarg],"cuboid") == 0) option = 1; + else error->all(FLERR,"Illegal fix tdpd/source command"); + iarg++; + + if(option == 0){ + if (narg != 10 ) error->all(FLERR,"Illegal fix tdpd/source command (5 args for sphere)"); + center[0] = force->numeric(FLERR,arg[iarg++]); + center[1] = force->numeric(FLERR,arg[iarg++]); + center[2] = force->numeric(FLERR,arg[iarg++]); + radius = force->numeric(FLERR,arg[iarg++]); + value = force->numeric(FLERR,arg[iarg++]); + } + else if(option == 1){ + if (narg != 12 ) error->all(FLERR,"Illegal fix tdpd/edpd command (7 args for cuboid)"); + center[0] = force->numeric(FLERR,arg[iarg++]); + center[1] = force->numeric(FLERR,arg[iarg++]); + center[2] = force->numeric(FLERR,arg[iarg++]); + dLx = force->numeric(FLERR,arg[iarg++]); + dLy = force->numeric(FLERR,arg[iarg++]); + dLz = force->numeric(FLERR,arg[iarg++]); + value = force->numeric(FLERR,arg[iarg++]); + } + else error->all(FLERR,"Illegal fix tdpd/source command"); +} + +/* ---------------------------------------------------------------------- */ + +FixTDPDSource::~FixTDPDSource() +{ +} + +/* ---------------------------------------------------------------------- */ + +int FixTDPDSource::setmask() +{ + int mask = 0; + mask |= POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixTDPDSource::init() +{ +} + +/* ---------------------------------------------------------------------- */ + +void FixTDPDSource::post_force(int vflag) +{ + double **x = atom->x; + double **cc_flux = atom->cc_flux; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double drx, dry, drz, rsq; + double radius_sq = radius*radius*radius; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + if(option == 0){ + drx = x[i][0] - center[0]; + dry = x[i][1] - center[1]; + drz = x[i][2] - center[2]; + rsq = drx*drx + dry*dry + drz*drz; + if(rsq < radius_sq) + cc_flux[i][cc_index-1] += value; + } + else if(option == 1){ + drx = x[i][0] - center[0]; + dry = x[i][1] - center[1]; + drz = x[i][2] - center[2]; + if(abs(drx) <= 0.5*dLx && abs(dry) <= 0.5*dLy && abs(drz) <= 0.5*dLz) + cc_flux[i][cc_index-1] += value; + } + } + } +} diff --git a/src/USER-MESO/fix_tdpd_source.h b/src/USER-MESO/fix_tdpd_source.h new file mode 100644 index 0000000000..302fe82090 --- /dev/null +++ b/src/USER-MESO/fix_tdpd_source.h @@ -0,0 +1,45 @@ +/* -*- 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(tdpd/source,FixTDPDSource) + +#else + +#ifndef LMP_FIX_TDPDSOURCE_H +#define LMP_FIX_TDPDSOURCE_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixTDPDSource : public Fix { + public: + FixTDPDSource(class LAMMPS *, int, char **); + ~FixTDPDSource(); + int setmask(); + void init(); + void post_force(int); + + protected: + int option; + int cc_index; + double center[3], radius, dLx, dLy, dLz; + double value; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/pair_edpd.cpp b/src/USER-MESO/pair_edpd.cpp new file mode 100644 index 0000000000..c1c100db43 --- /dev/null +++ b/src/USER-MESO/pair_edpd.cpp @@ -0,0 +1,551 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Zhen Li (Brown University) + Email: zhen_li@brown.edu +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "pair_edpd.h" +#include "atom.h" +#include "atom_vec.h" +#include "comm.h" +#include "update.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "random_mars.h" +#include "citeme.h" +#include "memory.h" +#include "error.h" +#include +#include + +using namespace LAMMPS_NS; + +#define MIN(A,B) ((A) < (B) ? (A) : (B)) +#define MAX(A,B) ((A) > (B) ? (A) : (B)) + +#define EPSILON 1.0e-10 + +static const char cite_pair_edpd[] = + "pair edpd command:\n\n" + "@Article{ZLi2014_JCP,\n" + " author = {Li, Z. and Tang, Y.-H. and Lei, H. and Caswell, B. and Karniadakis, G.E.},\n" + " title = {Energy-conserving dissipative particle dynamics with temperature-dependent properties},\n" + " journal = {Journal of Computational Physics},\n" + " year = {2014},\n" + " volume = {265},\n" + " pages = {113--127}\n" + "}\n\n" + "@Article{ZLi2015_CC,\n" + " author = {Li, Z. and Tang, Y.-H. and Li, X. and Karniadakis, G.E.},\n" + " title = {Mesoscale modeling of phase transition dynamics of thermoresponsive polymers},\n" + " journal = {Chemical Communications},\n" + " year = {2015},\n" + " volume = {51},\n" + " pages = {11038--11040}\n" + "}\n\n"; +; + +/* ---------------------------------------------------------------------- */ + +PairEDPD::PairEDPD(LAMMPS *lmp) : Pair(lmp) +{ + if (lmp->citeme) lmp->citeme->add(cite_pair_edpd); + writedata = 1; + random = NULL; + randomT = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairEDPD::~PairEDPD() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(cutT); + + memory->destroy(a0); + memory->destroy(gamma); + memory->destroy(power); + memory->destroy(kappa); + memory->destroy(powerT); + } + if (power_flag) memory->destroy(sc); + if (kappa_flag) memory->destroy(kc); + + if (random) delete random; + if (randomT) delete randomT; +} + +/* ---------------------------------------------------------------------- */ + +void PairEDPD::compute(int eflag, int vflag) +{ + double evdwl = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double *T = atom->edpd_temp; + double *Q = atom->edpd_flux; + double *cv = atom->edpd_cv; + int *type = atom->type; + double *mass = atom->mass; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double dtinvsqrt = 1.0/sqrt(update->dt); + double kboltz = 1.0; + + int inum = list->inum; + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + double xtmp = x[i][0]; + double ytmp = x[i][1]; + double ztmp = x[i][2]; + double vxtmp = v[i][0]; + double vytmp = v[i][1]; + double vztmp = v[i][2]; + int itype = type[i]; + int *jlist = firstneigh[i]; + int jnum = numneigh[i]; + + for (int jj = 0; jj < jnum; jj++) { + int j = jlist[jj]; + double factor_dpd = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + double delx = xtmp - x[j][0]; + double dely = ytmp - x[j][1]; + double delz = ztmp - x[j][2]; + double rsq = delx*delx + dely*dely + delz*delz; + int jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + double r = sqrt(rsq); + if (r < EPSILON) continue; + double rinv = 1.0/r; + double delvx = vxtmp - v[j][0]; + double delvy = vytmp - v[j][1]; + double delvz = vztmp - v[j][2]; + double dot = delx*delvx + dely*delvy + delz*delvz; + double vijeij = dot*rinv; + double randnum = random->gaussian(); + + double T_ij=0.5*(T[i]+T[j]); + double T_pow[4]; + T_pow[0] = T_ij - 1.0; + T_pow[1] = T_pow[0]*T_pow[0]; + T_pow[2] = T_pow[0]*T_pow[1]; + T_pow[3] = T_pow[0]*T_pow[2]; + + double power_d = power[itype][jtype]; + if(power_flag){ + double factor = 1.0; + for(int k = 0; k < 4; k++) + factor += sc[itype][jtype][k]*T_pow[k]; + power_d *= factor; + } + + power_d = MAX(0.01,power_d); + double wc = 1.0 - r/cut[itype][jtype]; + wc = MAX(0.0,MIN(1.0,wc)); + double wr = pow(wc, 0.5*power_d); + + double GammaIJ = gamma[itype][jtype]; + double SigmaIJ = 4.0*GammaIJ*kboltz*T[i]*T[j]/(T[i]+T[j]); + SigmaIJ = sqrt(SigmaIJ); + + double fpair = a0[itype][jtype]*T_ij*wc; + fpair -= GammaIJ *wr*wr *dot*rinv; + fpair += SigmaIJ * wr *randnum * dtinvsqrt; + fpair *= factor_dpd*rinv; + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + + // heat transfer + double dQc,dQd,dQr; + if( r < cutT[itype][jtype]) { + double wrT = 1.0 - r/cutT[itype][jtype]; + wrT = MAX(0.0,MIN(1.0,wrT)); + wrT = pow(wrT, 0.5*powerT[itype][jtype]); + double randnumT = randomT->gaussian(); + randnumT = MAX(-5.0,MIN(randnum,5.0)); + + double kappaT = kappa[itype][jtype]; + if(kappa_flag) { + double factor = 1.0; + for(int k = 0; k < 4; k++) + factor += kc[itype][jtype][k]*T_pow[k]; + kappaT *= factor; + } + + double kij = cv[i]*cv[j]*kappaT * T_ij*T_ij; + double alphaij = sqrt(2.0*kboltz*kij); + + dQc = kij * wrT*wrT * ( T[j] - T[i] )/(T[i]*T[j]); + dQd = wr*wr*( GammaIJ * vijeij*vijeij - SigmaIJ*SigmaIJ/mass[itype] ) - SigmaIJ * wr *vijeij *randnum; + dQd /= (cv[i]+cv[j]); + dQr = alphaij * wrT * dtinvsqrt * randnumT; + Q[i] += (dQc + dQd + dQr ); + } + //----------------------------------------------------------- + + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + Q[j] -= ( dQc - dQd + dQr ); + } + + if (eflag) { + evdwl = 0.5*a0[itype][jtype]*T_ij*cut[itype][jtype] * wc*wc; + evdwl *= factor_dpd; + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair,evdwl,0.0,fpair,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairEDPD::allocate() +{ + int i,j; + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (i = 1; i <= n; i++) + for (j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq,n+1,n+1,"pair:cutsq"); + + memory->create(cut,n+1,n+1,"pair:cut"); + memory->create(cutT,n+1,n+1,"pair:cutT"); + memory->create(a0,n+1,n+1,"pair:a0"); + memory->create(gamma,n+1,n+1,"pair:gamma"); + memory->create(power,n+1,n+1,"pair:power"); + memory->create(kappa,n+1,n+1,"pair:kappa"); + memory->create(powerT,n+1,n+1,"pair:powerT"); + +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairEDPD::settings(int narg, char **arg) +{ + if (narg != 2) error->all(FLERR,"Illegal pair_style command"); + + cut_global = force->numeric(FLERR,arg[0]); + seed = force->inumeric(FLERR,arg[1]); + + // initialize Marsaglia RNG with processor-unique seed + + if (seed <= 0 ) { + struct timespec time; + clock_gettime( CLOCK_REALTIME, &time ); + seed = time.tv_nsec; // if seed is non-positive, get the current time as the seed + } + delete random; + random = new RanMars(lmp,(seed + comm->me) % 900000000); + randomT = new RanMars(lmp,(2*seed + comm->me) % 900000000); + + // reset cutoffs that have been explicitly set + + if (allocated) { + int i,j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i+1; j <= atom->ntypes; j++) + if (setflag[i][j]) + cut[i][j] = cut_global; + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairEDPD::coeff(int narg, char **arg) +{ + if (narg < 9) + error->all(FLERR,"Incorrect args for pair edpd coefficients"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + double a0_one = force->numeric(FLERR,arg[2]); + double gamma_one = force->numeric(FLERR,arg[3]); + double power_one = force->numeric(FLERR,arg[4]); + double cut_one = force->numeric(FLERR,arg[5]); + double kappa_one = force->numeric(FLERR,arg[6]); + double powerT_one= force->numeric(FLERR,arg[7]); + double cutT_one = force->numeric(FLERR,arg[8]); + + int iarg = 9; + power_flag = kappa_flag = 0; + double sc_one[4], kc_one[4]; + int n = atom->ntypes; + while (iarg < narg) { + if (strcmp(arg[iarg],"power") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal pair edpd coefficients"); + for (int i = 0; i < 4; i++) + sc_one[i] = force->numeric(FLERR,arg[iarg+i+1]); + iarg += 5; + power_flag = 1; + memory->create(sc,n+1,n+1,4,"pair:sc"); + } else if (strcmp(arg[iarg],"kappa") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal pair edpd coefficients"); + for (int i = 0; i < 4; i++) + kc_one[i] = force->numeric(FLERR,arg[iarg+i+1]); + iarg += 5; + kappa_flag = 1; + memory->create(kc,n+1,n+1,4,"pair:kc"); + } else error->all(FLERR,"Illegal pair edpd coefficients"); + } + + int count = 0; + for (int i = ilo; i <= ihi; i++) + for (int j = MAX(jlo,i); j <= jhi; j++) { + a0[i][j] = a0_one; + gamma[i][j] = gamma_one; + power[i][j] = power_one; + cut[i][j] = cut_one; + kappa[i][j] = kappa_one; + powerT[i][j]= powerT_one; + cutT[i][j] = cutT_one; + + if(power_flag) + for (int k = 0; k < 4; k++) + sc[i][j][k] = sc_one[k]; + + if(kappa_flag) + for (int k = 0; k < 4; k++) + kc[i][j][k] = kc_one[k]; + + setflag[i][j] = 1; + count++; + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairEDPD::init_style() +{ + if (comm->ghost_velocity == 0) + error->all(FLERR,"Pair edpd requires ghost atoms store velocity"); + + // if newton off, forces between atoms ij will be double computed + // using different random numbers + + if (force->newton_pair == 0 && comm->me == 0) error->warning(FLERR, + "Pair tdpd needs newton pair on for momentum conservation"); + + neighbor->request(this,instance_me); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairEDPD::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + cut[j][i] = cut[i][j]; + cutT[j][i] = cutT[i][j]; + a0[j][i] = a0[i][j]; + gamma[j][i] = gamma[i][j]; + power[j][i] = power[i][j]; + kappa[j][i] = kappa[i][j]; + powerT[j][i]= powerT[i][j]; + + if(power_flag) + for (int k = 0; k < 4; k++) + sc[j][i][k] = sc[i][j][k]; + + if(kappa_flag) + for (int k = 0; k < 4; k++) + kc[j][i][k] = kc[i][j][k]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairEDPD::write_restart(FILE *fp) +{ + write_restart_settings(fp); + + for (int i = 1; i <= atom->ntypes; i++) + for (int j = i; j <= atom->ntypes; j++) { + fwrite(&setflag[i][j],sizeof(int),1,fp); + if (setflag[i][j]) { + fwrite(&a0[i][j],sizeof(double),1,fp); + fwrite(&gamma[i][j],sizeof(double),1,fp); + fwrite(&power[i][j],sizeof(double),1,fp); + fwrite(&cut[i][j],sizeof(double),1,fp); + fwrite(&kappa[i][j],sizeof(double),1,fp); + fwrite(&powerT[i][j],sizeof(double),1,fp); + fwrite(&cutT[i][j],sizeof(double),1,fp); + if(power_flag) + for (int k = 0; k < 4; k++) + fwrite(&sc[i][j][k],sizeof(double),1,fp); + + if(kappa_flag) + for (int k = 0; k < 4; k++) + fwrite(&kc[i][j][k],sizeof(double),1,fp); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairEDPD::read_restart(FILE *fp) +{ + read_restart_settings(fp); + + allocate(); + + int me = comm->me; + for (int i = 1; i <= atom->ntypes; i++) + for (int j = i; j <= atom->ntypes; j++) { + if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp); + MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); + if (setflag[i][j]) { + if (me == 0) { + fread(&a0[i][j],sizeof(double),1,fp); + fread(&gamma[i][j],sizeof(double),1,fp); + fread(&power[i][j],sizeof(double),1,fp); + fread(&cut[i][j],sizeof(double),1,fp); + fread(&kappa[i][j],sizeof(double),1,fp); + fread(&powerT[i][j],sizeof(double),1,fp); + fread(&cutT[i][j],sizeof(double),1,fp); + if(power_flag) + for (int k = 0; k < 4; k++) + fread(&sc[i][j][k],sizeof(double),1,fp); + + if(kappa_flag) + for (int k = 0; k < 4; k++) + fread(&kc[i][j][k],sizeof(double),1,fp); + } + MPI_Bcast(&a0[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&gamma[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&power[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&kappa[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&powerT[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cutT[i][j],1,MPI_DOUBLE,0,world); + if(power_flag) + for (int k = 0; k < 4; k++) + MPI_Bcast(&sc[i][j][k],1,MPI_DOUBLE,0,world); + + if(kappa_flag) + for (int k = 0; k < 4; k++) + MPI_Bcast(&kc[i][j][k],1,MPI_DOUBLE,0,world); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairEDPD::write_restart_settings(FILE *fp) +{ + fwrite(&cut_global,sizeof(double),1,fp); + fwrite(&seed,sizeof(int),1,fp); + fwrite(&mix_flag,sizeof(int),1,fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairEDPD::read_restart_settings(FILE *fp) +{ + if (comm->me == 0) { + fread(&cut_global,sizeof(double),1,fp); + fread(&seed,sizeof(int),1,fp); + fread(&mix_flag,sizeof(int),1,fp); + } + MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); + MPI_Bcast(&seed,1,MPI_INT,0,world); + MPI_Bcast(&mix_flag,1,MPI_INT,0,world); + + // initialize Marsaglia RNG with processor-unique seed + // same seed that pair_style command initially specified + + if (random) delete random; + random = new RanMars(lmp,seed + comm->me); + if (randomT) delete randomT; + randomT = new RanMars(lmp,seed + comm->me); +} + +/* ---------------------------------------------------------------------- */ + +double PairEDPD::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_dpd, double &fforce) +{ + double r,rinv,wc,phi; + double *T = atom->edpd_temp; + + r = sqrt(rsq); + if (r < EPSILON) { + fforce = 0.0; + return 0.0; + } + double T_ij = 0.5*(T[i]+T[j]); + rinv = 1.0/r; + wc = 1.0 - r/cut[itype][jtype]; + fforce = a0[itype][jtype]*T_ij*wc*factor_dpd*rinv; + + phi = 0.5*a0[itype][jtype]*T_ij*cut[itype][jtype]*wc*wc; + return factor_dpd*phi; +} diff --git a/src/USER-MESO/pair_edpd.h b/src/USER-MESO/pair_edpd.h new file mode 100644 index 0000000000..9ab0ad9670 --- /dev/null +++ b/src/USER-MESO/pair_edpd.h @@ -0,0 +1,85 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(edpd,PairEDPD) + +#else + +#ifndef LMP_PAIR_EDPD_H +#define LMP_PAIR_EDPD_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairEDPD : public Pair { + public: + PairEDPD(class LAMMPS *); + virtual ~PairEDPD(); + virtual void compute(int, int); + virtual void settings(int, char **); + virtual void coeff(int, char **); + void init_style(); + double init_one(int, int); + virtual void write_restart(FILE *); + virtual void read_restart(FILE *); + virtual void write_restart_settings(FILE *); + virtual void read_restart_settings(FILE *); + double single(int, int, int, int, double, double, double, double &); + + protected: + double cut_global; + int seed; + double **cut,**cutT; + double **a0,**gamma; + double **power; + double **slope; + double **kappa; + double **powerT; + int power_flag, kappa_flag; + double ***sc,***kc; + class RanMars *random; + class RanMars *randomT; + + void allocate(); +}; + +} + +#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: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +W: Pair tdpd needs newton pair on for momentum conservation + +Self-explanatory. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +*/ diff --git a/src/USER-MESO/pair_mdpd.cpp b/src/USER-MESO/pair_mdpd.cpp new file mode 100644 index 0000000000..bf78ea5af7 --- /dev/null +++ b/src/USER-MESO/pair_mdpd.cpp @@ -0,0 +1,425 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Zhen Li (Brown University) + Email: zhen_li@brown.edu +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "pair_mdpd.h" +#include "atom.h" +#include "atom_vec.h" +#include "comm.h" +#include "update.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "random_mars.h" +#include "citeme.h" +#include "memory.h" +#include "error.h" +#include + +using namespace LAMMPS_NS; + +#define EPSILON 1.0e-10 + +static const char cite_pair_mdpd[] = + "pair mdpd command:\n\n" + "@Article{ZLi2013_POF,\n" + " author = {Li, Z. and Hu, G.H. and Wang, Z.L. and Ma Y.B. and Zhou, Z.W.},\n" + " title = {Three dimensional flow structures in a moving droplet on substrate: a dissipative particle dynamics study},\n" + " journal = {Physics of Fluids},\n" + " year = {2013},\n" + " volume = {25},\n" + " pages = {072103}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +PairMDPD::PairMDPD(LAMMPS *lmp) : Pair(lmp) +{ + if (lmp->citeme) lmp->citeme->add(cite_pair_mdpd); + + writedata = 1; + random = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairMDPD::~PairMDPD() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(cut_r); + memory->destroy(A_att); + memory->destroy(B_rep); + memory->destroy(gamma); + memory->destroy(sigma); + } + if (random) delete random; +} + +/* ---------------------------------------------------------------------- */ + +void PairMDPD::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double vxtmp,vytmp,vztmp,delvx,delvy,delvz; + double rsq,r,rinv,dot,wc,wc_r, wr,randnum,factor_dpd; + int *ilist,*jlist,*numneigh,**firstneigh; + double rhoi, rhoj; + + evdwl = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double *rho= atom->rho; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double dtinvsqrt = 1.0/sqrt(update->dt); + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + vxtmp = v[i][0]; + vytmp = v[i][1]; + vztmp = v[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + rhoi = rho[i]; + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_dpd = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in MDPD systems + rinv = 1.0/r; + delvx = vxtmp - v[j][0]; + delvy = vytmp - v[j][1]; + delvz = vztmp - v[j][2]; + dot = delx*delvx + dely*delvy + delz*delvz; + + wc = 1.0 - r/cut[itype][jtype]; + wc_r = 1.0 - r/cut_r[itype][jtype]; + wc_r = MAX(wc_r,0.0); + wr = wc; + + rhoj = rho[j]; + randnum = random->gaussian(); + + // conservative force = A_att * wc + B_rep*(rhoi+rhoj)*wc_r + // drag force = -gamma * wr^2 * (delx dot delv) / r + // random force = sigma * wr * rnd * dtinvsqrt; + + fpair = A_att[itype][jtype]*wc + B_rep[itype][jtype]*(rhoi+rhoj)*wc_r; + fpair -= gamma[itype][jtype]*wr*wr*dot*rinv; + fpair += sigma[itype][jtype]*wr*randnum*dtinvsqrt; + fpair *= factor_dpd*rinv; + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (eflag) { + // unshifted eng of conservative term: + // eng shifted to 0.0 at cutoff + evdwl = 0.5*A_att[itype][jtype]*cut[itype][jtype] * wr*wr + 0.5*B_rep[itype][jtype]*cut_r[itype][jtype]*(rhoi+rhoj)*wc_r*wc_r; + evdwl *= factor_dpd; + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair,evdwl,0.0,fpair,delx,dely,delz); + } + } + } + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairMDPD::allocate() +{ + int i,j; + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (i = 1; i <= n; i++) + for (j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq,n+1,n+1,"pair:cutsq"); + + memory->create(cut,n+1,n+1,"pair:cut"); + memory->create(cut_r,n+1,n+1,"pair:cut_r"); + memory->create(A_att,n+1,n+1,"pair:A_att"); + memory->create(B_rep,n+1,n+1,"pair:B_rep"); + memory->create(gamma,n+1,n+1,"pair:gamma"); + memory->create(sigma,n+1,n+1,"pair:sigma"); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairMDPD::settings(int narg, char **arg) +{ + if (narg != 3) error->all(FLERR,"Illegal pair_style command"); + + temperature = force->numeric(FLERR,arg[0]); + cut_global = force->numeric(FLERR,arg[1]); + seed = force->inumeric(FLERR,arg[2]); + + // initialize Marsaglia RNG with processor-unique seed + + if (seed <= 0 ) { + struct timespec time; + clock_gettime( CLOCK_REALTIME, &time ); + seed = time.tv_nsec; // if seed is non-positive, get the current time as the seed + } + delete random; + random = new RanMars(lmp,(seed + comm->me) % 900000000); + + // reset cutoffs that have been explicitly set + + if (allocated) { + int i,j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i+1; j <= atom->ntypes; j++) + if (setflag[i][j]) cut[i][j] = cut_global; + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairMDPD::coeff(int narg, char **arg) +{ + if(narg != 7 ) error->all(FLERR,"Incorrect args for pair coefficients\n itype jtype A B gamma cutA cutB"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + double A_one = force->numeric(FLERR,arg[2]); + double B_one = force->numeric(FLERR,arg[3]); + double gamma_one = force->numeric(FLERR,arg[4]); + double cut_one = force->numeric(FLERR,arg[5]); + double cut_two = force->numeric(FLERR,arg[6]); + + if(cut_one < cut_two) error->all(FLERR,"Incorrect args for pair coefficients\n cutA should be larger than cutB."); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + A_att[i][j] = A_one; + B_rep[i][j] = B_one; + gamma[i][j] = gamma_one; + cut[i][j] = cut_one; + cut_r[i][j] = cut_two; + setflag[i][j] = 1; + count++; + } + } + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairMDPD::init_style() +{ + if (comm->ghost_velocity == 0) + error->all(FLERR,"Pair mdpd requires ghost atoms store velocity"); + + // if newton off, forces between atoms ij will be double computed + // using different random numbers + + if (force->newton_pair == 0 && comm->me == 0) error->warning(FLERR, + "Pair mdpd needs newton pair on for momentum conservation"); + + neighbor->request(this,instance_me); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairMDPD::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + sigma[i][j] = sqrt(2.0*force->boltz*temperature*gamma[i][j]); + + cut[j][i] = cut[i][j]; + cut_r[j][i] = cut_r[i][j]; + A_att[j][i] = A_att[i][j]; + B_rep[j][i] = B_rep[i][j]; + gamma[j][i] = gamma[i][j]; + sigma[j][i] = sigma[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairMDPD::write_restart(FILE *fp) +{ + write_restart_settings(fp); + + int i,j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i; j <= atom->ntypes; j++) { + fwrite(&setflag[i][j],sizeof(int),1,fp); + if (setflag[i][j]) { + fwrite(&A_att[i][j],sizeof(double),1,fp); + fwrite(&B_rep[i][j],sizeof(double),1,fp); + fwrite(&gamma[i][j],sizeof(double),1,fp); + fwrite(&cut[i][j],sizeof(double),1,fp); + fwrite(&cut_r[i][j],sizeof(double),1,fp); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairMDPD::read_restart(FILE *fp) +{ + read_restart_settings(fp); + + allocate(); + + int i,j; + int me = comm->me; + for (i = 1; i <= atom->ntypes; i++) + for (j = i; j <= atom->ntypes; j++) { + if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp); + MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); + if (setflag[i][j]) { + if (me == 0) { + fread(&A_att[i][j],sizeof(double),1,fp); + fread(&B_rep[i][j],sizeof(double),1,fp); + fread(&gamma[i][j],sizeof(double),1,fp); + fread(&cut[i][j],sizeof(double),1,fp); + fread(&cut_r[i][j],sizeof(double),1,fp); + } + MPI_Bcast(&A_att[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&B_rep[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&gamma[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut_r[i][j],1,MPI_DOUBLE,0,world); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairMDPD::write_restart_settings(FILE *fp) +{ + fwrite(&temperature,sizeof(double),1,fp); + fwrite(&cut_global,sizeof(double),1,fp); + fwrite(&seed,sizeof(int),1,fp); + fwrite(&mix_flag,sizeof(int),1,fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairMDPD::read_restart_settings(FILE *fp) +{ + if (comm->me == 0) { + fread(&temperature,sizeof(double),1,fp); + fread(&cut_global,sizeof(double),1,fp); + fread(&seed,sizeof(int),1,fp); + fread(&mix_flag,sizeof(int),1,fp); + } + MPI_Bcast(&temperature,1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); + MPI_Bcast(&seed,1,MPI_INT,0,world); + MPI_Bcast(&mix_flag,1,MPI_INT,0,world); + + // initialize Marsaglia RNG with processor-unique seed + // same seed that pair_style command initially specified + + if (random) delete random; + random = new RanMars(lmp,seed + comm->me); +} + +/* ---------------------------------------------------------------------- + proc 0 writes to data file +------------------------------------------------------------------------- */ + +void PairMDPD::write_data(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) + fprintf(fp,"%d %g %g %g\n",i,A_att[i][i],B_rep[i][i],gamma[i][i]); +} + +/* ---------------------------------------------------------------------- + proc 0 writes all pairs to data file +------------------------------------------------------------------------- */ + +void PairMDPD::write_data_all(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) + for (int j = i; j <= atom->ntypes; j++) + fprintf(fp,"%d %d %g %g %g %g %g\n",i,j,A_att[i][j],B_rep[i][j],gamma[i][j],cut[i][j],cut_r[i][j]); +} + diff --git a/src/USER-MESO/pair_mdpd.h b/src/USER-MESO/pair_mdpd.h new file mode 100644 index 0000000000..ea0389c7fe --- /dev/null +++ b/src/USER-MESO/pair_mdpd.h @@ -0,0 +1,84 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(mdpd,PairMDPD) + +#else + +#ifndef LMP_PAIR_MDPD_H +#define LMP_PAIR_MDPD_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairMDPD : public Pair { + public: + PairMDPD(class LAMMPS *); + virtual ~PairMDPD(); + virtual void compute(int, int); + virtual void settings(int, char **); + virtual void coeff(int, char **); + void init_style(); + double init_one(int, int); + virtual void write_restart(FILE *); + virtual void read_restart(FILE *); + virtual void write_restart_settings(FILE *); + virtual void read_restart_settings(FILE *); + virtual void write_data(FILE *); + virtual void write_data_all(FILE *); + + protected: + double cut_global,temperature; + int seed; + double **cut, **cut_r; + double **A_att,**B_rep; + double **gamma,**sigma; + class RanMars *random; + + void allocate(); +}; + +} + +#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: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair dpd requires ghost atoms store velocity + +Use the comm_modify vel yes command to enable this. + +W: Pair dpd needs newton pair on for momentum conservation + +Self-explanatory. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +*/ diff --git a/src/USER-MESO/pair_mdpd_rhosum.cpp b/src/USER-MESO/pair_mdpd_rhosum.cpp new file mode 100644 index 0000000000..9c4d6f804f --- /dev/null +++ b/src/USER-MESO/pair_mdpd_rhosum.cpp @@ -0,0 +1,267 @@ +/* ---------------------------------------------------------------------- + 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. + ------------------------------------------------------------------------- */ + +/*----------------------------------------------------------------------- + This is a Child Class PairMDPD for taking care of density summation + before the force calculation. + The code uses 3D Lucy kernel, it can be modified for other kernels. + + Contributing author: Zhen Li (Brown University) +------------------------------------------------------------------------- */ + +#include +#include +#include "pair_mdpd_rhosum.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "memory.h" +#include "error.h" +#include "neighbor.h" +#include "update.h" +#include "domain.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairMDPDRhoSum::PairMDPDRhoSum(LAMMPS *lmp) : Pair(lmp) +{ + restartinfo = 0; + + // set comm size needed by this Pair + + comm_forward = 1; + first = 1; +} + +/* ---------------------------------------------------------------------- */ + +PairMDPDRhoSum::~PairMDPDRhoSum() { + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + } +} + +/* ---------------------------------------------------------------------- + init specific to this pair style + ------------------------------------------------------------------------- */ + +void PairMDPDRhoSum::init_style() { + // need a full neighbor list + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + +/* ---------------------------------------------------------------------- */ + +void PairMDPDRhoSum::compute(int eflag, int vflag) { + int i, j, ii, jj, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz; + double r, rsq, h, ih, ihsq; + int *jlist; + double wf; + // neighbor list variables + int inum, *ilist, *numneigh, **firstneigh; + + if (eflag || vflag) + ev_setup(eflag, vflag); + else + evflag = vflag_fdotr = 0; + + double **x = atom->x; + double *rho = atom->rho; + int *type = atom->type; + double *mass = atom->mass; + + // check consistency of pair coefficients + if (first) { + for (i = 1; i <= atom->ntypes; i++) + for (j = 1; i <= atom->ntypes; i++) + if (cutsq[i][j] > 0.0) + if (!setflag[i][i] || !setflag[j][j]) + if (comm->me == 0) + printf("mDPD particle types %d and %d interact, but not all of their single particle properties are set.\n", i, j); + + first = 0; + } + + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // recompute density + // we use a full neighborlist here + + // initialize density with zero self-contribution, + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + itype = type[i]; + + h = cut[itype][itype]; + // Lucy kernel, 3d + wf = 2.0889086280811262819e0 / (h * h * h); + rho[i] = 0; + } + + // add density at each atom via kernel function overlap + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + jtype = type[j]; + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + + if (rsq < cutsq[itype][jtype]) { + h = cut[itype][jtype]; + ih = 1.0 / h; + ihsq = ih * ih; + + // Lucy kernel, 3d + r = sqrt(rsq); + wf = (h - r) * ihsq; + wf = 2.0889086280811262819e0 * (h + 3. * r) * wf * wf * wf * ih; + rho[i] += mass[jtype]*wf; + } + } + } + + // communicate densities + comm->forward_comm_pair(this); +} + +/* ---------------------------------------------------------------------- + allocate all arrays + ------------------------------------------------------------------------- */ + +void PairMDPDRhoSum::allocate() { + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag, n + 1, n + 1, "pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); + + memory->create(cut, n + 1, n + 1, "pair:cut"); +} + +/* ---------------------------------------------------------------------- + global settings + ------------------------------------------------------------------------- */ + +void PairMDPDRhoSum::settings(int narg, char **arg) { + if (narg != 0) + error->all(FLERR,"Illegal number of setting arguments for pair_style mdpd/rhosum"); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + ------------------------------------------------------------------------- */ + +void PairMDPDRhoSum::coeff(int narg, char **arg) { + if (narg != 3) + error->all(FLERR,"Incorrect number of args for mdpd/rhosum coefficients"); + if (!allocated) + allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi); + force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi); + + double cut_one = force->numeric(FLERR,arg[2]); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + cut[i][j] = cut_one; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) + error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i + ------------------------------------------------------------------------- */ + +double PairMDPDRhoSum::init_one(int i, int j) { + if (setflag[i][j] == 0) { + error->all(FLERR,"All pair mdpd/rhosum coeffs are not set"); + } + + cut[j][i] = cut[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- */ + +double PairMDPDRhoSum::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, double &fforce) { + fforce = 0.0; + + return 0.0; +} + +/* ---------------------------------------------------------------------- */ + +int PairMDPDRhoSum::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) { + int i, j, m; + double *rho = atom->rho; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = rho[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void PairMDPDRhoSum::unpack_forward_comm(int n, int first, double *buf) { + int i, m, last; + double *rho = atom->rho; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + rho[i] = buf[m++]; +} diff --git a/src/USER-MESO/pair_mdpd_rhosum.h b/src/USER-MESO/pair_mdpd_rhosum.h new file mode 100644 index 0000000000..a972ec7ccf --- /dev/null +++ b/src/USER-MESO/pair_mdpd_rhosum.h @@ -0,0 +1,50 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(mdpd/rhosum,PairMDPDRhoSum) + +#else + +#ifndef LMP_PAIR_MDPD_RHOSUM_H +#define LMP_PAIR_MDPD_RHOSUM_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairMDPDRhoSum : public Pair { + public: + PairMDPDRhoSum(class LAMMPS *); + virtual ~PairMDPDRhoSum(); + void init_style(); + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + virtual double init_one(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + + protected: + double **cut; + int first; + + void allocate(); +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/pair_tdpd.cpp b/src/USER-MESO/pair_tdpd.cpp new file mode 100644 index 0000000000..22c856ee3f --- /dev/null +++ b/src/USER-MESO/pair_tdpd.cpp @@ -0,0 +1,477 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Zhen Li (Brown University) + Email: zhen_li@brown.edu +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "pair_tdpd.h" +#include "atom.h" +#include "atom_vec.h" +#include "comm.h" +#include "update.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "random_mars.h" +#include "citeme.h" +#include "memory.h" +#include "error.h" +#include + +using namespace LAMMPS_NS; + +#define MIN(A,B) ((A) < (B) ? (A) : (B)) +#define MAX(A,B) ((A) > (B) ? (A) : (B)) + +#define EPSILON 1.0e-10 + +static const char cite_pair_tdpd[] = + "pair tdpd command:\n\n" + "@Article{ZLi2015_JCP,\n" + " author = {Li, Z. and Yazdani, A. and Tartakovsky, A. and Karniadakis, G.E.},\n" + " title = {Transport dissipative particle dynamics model for mesoscopic advection-diffusion-reaction problems},\n" + " journal = {The Journal of Chemical Physics},\n" + " year = {2015},\n" + " volume = {143},\n" + " pages = {014101}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +PairTDPD::PairTDPD(LAMMPS *lmp) : Pair(lmp) +{ + if (lmp->citeme) lmp->citeme->add(cite_pair_tdpd); + cc_species = atom->cc_species; + + writedata = 1; + random = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairTDPD::~PairTDPD() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(cutcc); + + memory->destroy(a0); + memory->destroy(gamma); + memory->destroy(sigma); + + memory->destroy(power); + memory->destroy(kappa); + memory->destroy(epsilon); + memory->destroy(powercc); + } + + if (random) delete random; +} + +/* ---------------------------------------------------------------------- */ + +void PairTDPD::compute(int eflag, int vflag) +{ + double evdwl = 0.0; + double fpair; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double **cc = atom->cc; + double **cc_flux = atom->cc_flux; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double dtinvsqrt = 1.0/sqrt(update->dt); + + int inum = list->inum; + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + double xtmp = x[i][0]; + double ytmp = x[i][1]; + double ztmp = x[i][2]; + double vxtmp = v[i][0]; + double vytmp = v[i][1]; + double vztmp = v[i][2]; + int itype = type[i]; + int *jlist = firstneigh[i]; + int jnum = numneigh[i]; + + for (int jj = 0; jj < jnum; jj++) { + int j = jlist[jj]; + double factor_dpd = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + double delx = xtmp - x[j][0]; + double dely = ytmp - x[j][1]; + double delz = ztmp - x[j][2]; + double rsq = delx*delx + dely*dely + delz*delz; + int jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + double r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in DPD systems + double rinv = 1.0/r; + double delvx = vxtmp - v[j][0]; + double delvy = vytmp - v[j][1]; + double delvz = vztmp - v[j][2]; + double dot = delx*delvx + dely*delvy + delz*delvz; + double wc = 1.0 - r/cut[itype][jtype]; + wc = MAX(0,MIN(1.0,wc)); + double wr = pow(wc, 0.5*power[itype][jtype]); + double randnum = random->gaussian(); + + // conservative force = a0 * wc + // drag force = -gamma * wr^2 * (delx dot delv) / r + // random force = sigma * wr^(power/2) * rnd * dtinvsqrt; + + double fpair = a0[itype][jtype]*wc; + fpair -= gamma[itype][jtype]*wr*wr*dot*rinv; + fpair += sigma[itype][jtype]*wr*randnum*dtinvsqrt; + fpair *= factor_dpd*rinv; + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + + // chemical concentration transport + if( r < cutcc[itype][jtype]) { + for(int k=0; kgaussian(); + randnum = MAX(-5.0,MIN(randnum,5.0)); + double dQc = -kappa[itype][jtype][k] * wcr*wcr *(cc[i][k]-cc[j][k]); + double dQr = epsilon[itype][jtype][k] *wcr* (cc[i][k]+cc[j][k]) *randnum*dtinvsqrt; + cc_flux[i][k] += (dQc + dQr); + if (newton_pair || j < nlocal) + cc_flux[j][k] -= ( dQc + dQr ); + } + } + //----------------------------------------------------------- + + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (eflag) { + evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wc*wc; + evdwl *= factor_dpd; + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair,evdwl,0.0,fpair,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairTDPD::allocate() +{ + int i,j; + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (i = 1; i <= n; i++) + for (j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cutsq,n+1,n+1,"pair:cutsq"); + + memory->create(cut,n+1,n+1,"pair:cut"); + memory->create(cutcc,n+1,n+1,"pair:cutcc"); + memory->create(a0,n+1,n+1,"pair:a0"); + memory->create(gamma,n+1,n+1,"pair:gamma"); + memory->create(sigma,n+1,n+1,"pair:sigma"); + memory->create(power,n+1,n+1,"pair:power"); + memory->create(kappa,n+1,n+1,cc_species,"pair:kappa"); + memory->create(epsilon,n+1,n+1,cc_species,"pair:epsilon"); + memory->create(powercc,n+1,n+1,cc_species,"pair:powercc"); + + for (i = 0; i <= atom->ntypes; i++) + for (j = 0; j <= atom->ntypes; j++) + sigma[i][j] = gamma[i][j] = 0.0; +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairTDPD::settings(int narg, char **arg) +{ + if (narg != 3) error->all(FLERR,"Illegal pair_style command"); + + temperature = force->numeric(FLERR,arg[0]); + cut_global = force->numeric(FLERR,arg[1]); + seed = force->inumeric(FLERR,arg[2]); + + // initialize Marsaglia RNG with processor-unique seed + + if (seed <= 0 ) { + struct timespec time; + clock_gettime( CLOCK_REALTIME, &time ); + seed = time.tv_nsec; // if seed is non-positive, get the current time as the seed + } + delete random; + random = new RanMars(lmp,(seed + comm->me) % 900000000); + + // reset cutoffs that have been explicitly set + + if (allocated) { + int i,j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i+1; j <= atom->ntypes; j++) + if (setflag[i][j]) + cut[i][j] = cut_global; + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairTDPD::coeff(int narg, char **arg) +{ + if (narg != 7 + 3*cc_species) + error->all(FLERR,"Incorrect args for pair tdpd coefficients"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + double a0_one = force->numeric(FLERR,arg[2]); + double gamma_one = force->numeric(FLERR,arg[3]); + double power_one = force->numeric(FLERR,arg[4]); + double cut_one = force->numeric(FLERR,arg[5]); + double cutcc_one = force->numeric(FLERR,arg[6]); + double kappa_one[cc_species],epsilon_one[cc_species],powercc_one[cc_species]; + for(int k=0; knumeric(FLERR,arg[7+3*k]); + epsilon_one[k] = force->numeric(FLERR,arg[8+3*k]); + powercc_one[k] = force->numeric(FLERR,arg[9+3*k]); + } + + int count = 0; + for (int i = ilo; i <= ihi; i++) + for (int j = MAX(jlo,i); j <= jhi; j++) { + a0[i][j] = a0_one; + gamma[i][j] = gamma_one; + power[i][j] = power_one; + cut[i][j] = cut_one; + cutcc[i][j] = cutcc_one; + for(int k=0; kall(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairTDPD::init_style() +{ + if (comm->ghost_velocity == 0) + error->all(FLERR,"Pair tdpd requires ghost atoms store velocity"); + + // if newton off, forces between atoms ij will be double computed + // using different random numbers + + if (force->newton_pair == 0 && comm->me == 0) error->warning(FLERR, + "Pair tdpd needs newton pair on for momentum conservation"); + + neighbor->request(this,instance_me); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairTDPD::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + sigma[i][j] = sqrt(2.0*force->boltz*temperature*gamma[i][j]); + + cut[j][i] = cut[i][j]; + cutcc[j][i] = cutcc[i][j]; + a0[j][i] = a0[i][j]; + gamma[j][i] = gamma[i][j]; + sigma[j][i] = sigma[i][j]; + power[j][i] = power[i][j]; + for(int k=0; kntypes; i++) + for (int j = i; j <= atom->ntypes; j++) { + fwrite(&setflag[i][j],sizeof(int),1,fp); + if (setflag[i][j]) { + fwrite(&a0[i][j],sizeof(double),1,fp); + fwrite(&gamma[i][j],sizeof(double),1,fp); + fwrite(&power[i][j],sizeof(double),1,fp); + fwrite(&cut[i][j],sizeof(double),1,fp); + fwrite(&cutcc[i][j],sizeof(double),1,fp); + for(int k=0; kme; + for (int i = 1; i <= atom->ntypes; i++) + for (int j = i; j <= atom->ntypes; j++) { + if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp); + MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); + if (setflag[i][j]) { + if (me == 0) { + fread(&a0[i][j],sizeof(double),1,fp); + fread(&gamma[i][j],sizeof(double),1,fp); + fread(&power[i][j],sizeof(double),1,fp); + fread(&cut[i][j],sizeof(double),1,fp); + fread(&cutcc[i][j],sizeof(double),1,fp); + for(int k=0; kme == 0) { + fread(&temperature,sizeof(double),1,fp); + fread(&cut_global,sizeof(double),1,fp); + fread(&seed,sizeof(int),1,fp); + fread(&mix_flag,sizeof(int),1,fp); + } + MPI_Bcast(&temperature,1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); + MPI_Bcast(&seed,1,MPI_INT,0,world); + MPI_Bcast(&mix_flag,1,MPI_INT,0,world); + + // initialize Marsaglia RNG with processor-unique seed + // same seed that pair_style command initially specified + + if (random) delete random; + random = new RanMars(lmp,seed + comm->me); +} + +/* ---------------------------------------------------------------------- */ + +double PairTDPD::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_dpd, double &fforce) +{ + double r,rinv,wc,phi; + + r = sqrt(rsq); + if (r < EPSILON) { + fforce = 0.0; + return 0.0; + } + + rinv = 1.0/r; + wc = 1.0 - r/cut[itype][jtype]; + fforce = a0[itype][jtype]*wc*factor_dpd*rinv; + + phi = 0.5*a0[itype][jtype]*cut[itype][jtype]*wc*wc; + return factor_dpd*phi; +} diff --git a/src/USER-MESO/pair_tdpd.h b/src/USER-MESO/pair_tdpd.h new file mode 100644 index 0000000000..9245308d38 --- /dev/null +++ b/src/USER-MESO/pair_tdpd.h @@ -0,0 +1,81 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(tdpd,PairTDPD) + +#else + +#ifndef LMP_PAIR_TDPD_H +#define LMP_PAIR_TDPD_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairTDPD : public Pair { + public: + PairTDPD(class LAMMPS *); + virtual ~PairTDPD(); + virtual void compute(int, int); + virtual void settings(int, char **); + virtual void coeff(int, char **); + void init_style(); + double init_one(int, int); + virtual void write_restart(FILE *); + virtual void read_restart(FILE *); + virtual void write_restart_settings(FILE *); + virtual void read_restart_settings(FILE *); + double single(int, int, int, int, double, double, double, double &); + + protected: + double cut_global,temperature; + int seed,cc_species; + double **cut,**cutcc; + double **a0,**gamma,**sigma; + double **power; + double ***kappa,***epsilon; + double ***powercc; + class RanMars *random; + + void allocate(); +}; + +} + +#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: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +W: Pair tdpd needs newton pair on for momentum conservation + +Self-explanatory. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +*/ diff --git a/src/atom.cpp b/src/atom.cpp index e46b1a7242..d4c00bc0a5 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -105,6 +105,11 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) dpdTheta = NULL; ssaAIR = NULL; + // USER-MESO + + cc = cc_flux = NULL; + edpd_temp = edpd_flux = edpd_cv = NULL; + // USER-SMD contact_radius = NULL; @@ -169,7 +174,7 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) cs_flag = csforce_flag = vforce_flag = etag_flag = 0; rho_flag = e_flag = cv_flag = vest_flag = 0; - dpd_flag = 0; + dpd_flag = edpd_flag = tdpd_flag = 0; // USER-SMD @@ -302,6 +307,12 @@ Atom::~Atom() memory->destroy(duChem); memory->destroy(ssaAIR); + memory->destroy(cc); + memory->destroy(cc_flux); + memory->destroy(edpd_temp); + memory->destroy(edpd_flux); + memory->destroy(edpd_cv); + memory->destroy(nspecial); memory->destroy(special); @@ -2194,6 +2205,7 @@ void *Atom::extract(char *name) if (strcmp(name, "damage") == 0) return (void *) damage; if (strcmp(name,"dpdTheta") == 0) return (void *) dpdTheta; + if (strcmp(name,"edpd_temp") == 0) return (void *) edpd_temp; return NULL; } diff --git a/src/atom.h b/src/atom.h index 0f84c8242f..29a1c5d69e 100644 --- a/src/atom.h +++ b/src/atom.h @@ -95,6 +95,13 @@ class Atom : protected Pointers { int nspecies_dpd; int *ssaAIR; // Shardlow Splitting Algorithm Active Interaction Region number + // USER-MESO package + + double **cc, **cc_flux; // cc = chemical concentration + double *edpd_temp,*edpd_flux; // temperature and heat flux + double *edpd_cv; // heat capacity + int cc_species; + // molecular info int **nspecial; // 0,1,2 = cumulative # of 1-2,1-3,1-4 neighs @@ -138,7 +145,7 @@ class Atom : protected Pointers { int vfrac_flag,spin_flag,eradius_flag,ervel_flag,erforce_flag; int cs_flag,csforce_flag,vforce_flag,ervelforce_flag,etag_flag; int rho_flag,e_flag,cv_flag,vest_flag; - int dpd_flag; + int dpd_flag,edpd_flag,tdpd_flag; // USER-SMD package diff --git a/src/set.cpp b/src/set.cpp index 59625b7e6c..2b1c0edee2 100644 --- a/src/set.cpp +++ b/src/set.cpp @@ -41,11 +41,12 @@ using namespace LAMMPS_NS; using namespace MathConst; enum{ATOM_SELECT,MOL_SELECT,TYPE_SELECT,GROUP_SELECT,REGION_SELECT}; + enum{TYPE,TYPE_FRACTION,MOLECULE,X,Y,Z,CHARGE,MASS,SHAPE,LENGTH,TRI, DIPOLE,DIPOLE_RANDOM,QUAT,QUAT_RANDOM,THETA,THETA_RANDOM,ANGMOM,OMEGA, DIAMETER,DENSITY,VOLUME,IMAGE,BOND,ANGLE,DIHEDRAL,IMPROPER, - MESO_E,MESO_CV,MESO_RHO,SMD_MASS_DENSITY,SMD_CONTACT_RADIUS,DPDTHETA, - INAME,DNAME}; + MESO_E,MESO_CV,MESO_RHO,EDPD_TEMP,EDPD_CV,CC,SMD_MASS_DENSITY, + SMD_CONTACT_RADIUS,DPDTHETA,INAME,DNAME}; #define BIG INT_MAX @@ -419,6 +420,46 @@ void Set::command(int narg, char **arg) set(MESO_RHO); iarg += 2; + } else if (strcmp(arg[iarg],"edpd/temp") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + if (strcmp(arg[iarg+1],"NULL") == 0) dvalue = -1.0; + else if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1); + else { + dvalue = force->numeric(FLERR,arg[iarg+1]); + if (dvalue < 0.0) error->all(FLERR,"Illegal set command"); + } + if (!atom->edpd_flag) + error->all(FLERR,"Cannot set edpd/temp for this atom style"); + set(EDPD_TEMP); + iarg += 2; + + } else if (strcmp(arg[iarg],"edpd/cv") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + if (strcmp(arg[iarg+1],"NULL") == 0) dvalue = -1.0; + else if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1); + else { + dvalue = force->numeric(FLERR,arg[iarg+1]); + if (dvalue < 0.0) error->all(FLERR,"Illegal set command"); + } + if (!atom->edpd_flag) + error->all(FLERR,"Cannot set edpd/cv for this atom style"); + set(EDPD_CV); + iarg += 2; + + } else if (strcmp(arg[iarg],"cc") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal set command"); + if (strcmp(arg[iarg+1],"NULL") == 0) dvalue = -1.0; + else if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1); + else { + cc_index = force->inumeric(FLERR,arg[iarg+1]); + dvalue = force->numeric(FLERR,arg[iarg+2]); + if (cc_index < 1) error->all(FLERR,"Illegal set command"); + } + if (!atom->tdpd_flag) + error->all(FLERR,"Cannot set cc for this atom style"); + set(CC); + iarg += 3; + } else if (strcmp(arg[iarg],"smd/mass/density") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1); @@ -476,14 +517,28 @@ void Set::command(int narg, char **arg) } else error->all(FLERR,"Illegal set command"); // statistics + // for CC option, include species index MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world); if (comm->me == 0) { - if (screen) fprintf(screen," %d settings made for %s\n", - allcount,arg[origarg]); - if (logfile) fprintf(logfile," %d settings made for %s\n", - allcount,arg[origarg]); + + if (screen) { + if (strcmp(arg[origarg],"cc") == 0) + fprintf(screen," %d settings made for %s index %s\n", + allcount,arg[origarg],arg[origarg+1]); + else + fprintf(screen," %d settings made for %s\n", + allcount,arg[origarg]); + } + if (logfile) { + if (strcmp(arg[origarg],"cc") == 0) + fprintf(logfile," %d settings made for %s index %s\n", + allcount,arg[origarg],arg[origarg+1]); + else + fprintf(logfile," %d settings made for %s\n", + allcount,arg[origarg]); + } } } @@ -663,6 +718,11 @@ void Set::set(int keyword) else if (keyword == MESO_E) atom->e[i] = dvalue; else if (keyword == MESO_CV) atom->cv[i] = dvalue; else if (keyword == MESO_RHO) atom->rho[i] = dvalue; + + else if (keyword == EDPD_TEMP) atom->edpd_temp[i] = dvalue; + else if (keyword == EDPD_CV) atom->edpd_cv[i] = dvalue; + else if (keyword == CC) atom->cc[i][cc_index-1] = dvalue; + else if (keyword == SMD_MASS_DENSITY) { // set mass from volume and supplied mass density atom->rmass[i] = atom->vfrac[i] * dvalue; diff --git a/src/set.h b/src/set.h index dfb06a2e12..5584e228ba 100644 --- a/src/set.h +++ b/src/set.h @@ -35,7 +35,8 @@ class Set : protected Pointers { int style,ivalue,newtype,count,index_custom; int ximage,yimage,zimage,ximageflag,yimageflag,zimageflag; double dvalue,xvalue,yvalue,zvalue,wvalue,fraction; - + int cc_index; + int varflag,varflag1,varflag2,varflag3,varflag4; int ivar1,ivar2,ivar3,ivar4; double *vec1,*vec2,*vec3,*vec4; -- GitLab From aa1ce09b126414f3292a00992420511a8777fde7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 18 Aug 2017 20:03:47 -0400 Subject: [PATCH 272/337] more cleanup, checks and generalization of QEQ parameter file parsing --- src/QEQ/fix_qeq.cpp | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index 38bfec8b96..757eae5dd2 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -692,11 +692,13 @@ void FixQEq::vector_add( double* dest, double c, double* v, int k ) void FixQEq::read_file(char *file) { - int itype,ntypes; + int i; int params_per_line = 6; char **words = new char*[params_per_line+1]; - ntypes = atom->ntypes; + int ntypes = atom->ntypes; + int *setflag = new int[ntypes+1]; + for (i=0; i < params_per_line; ++i) setflag[i] = 0; memory->create(chi,ntypes+1,"qeq:chi"); memory->create(eta,ntypes+1,"qeq:eta"); @@ -719,10 +721,10 @@ void FixQEq::read_file(char *file) // read each line out of file, skipping blank lines or leading '#' // store line of params if all 3 element tags are in element list - int n,nwords,ielement,eof; + int n,nwords,eof,nlo,nhi; char line[MAXLINE],*ptr; - eof = ielement = 0; + eof = 0; while (1) { if (comm->me == 0) { @@ -737,10 +739,6 @@ void FixQEq::read_file(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); - ielement ++; - if (ielement > ntypes) - error->all(FLERR,"Invalid fix qeq parameter file"); - // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; @@ -752,21 +750,28 @@ void FixQEq::read_file(char *file) if (nwords < 6) error->all(FLERR,"Invalid fix qeq parameter file"); - // words = ptrs to first 6 words in line for (n=0, words[n] = strtok(line," \t\n\r\f"); n < 6; words[++n] = strtok(NULL," \t\n\r\f")); - itype = force->inumeric(FLERR,words[0]); - if ((itype < 1) || (itype > atom->ntypes)) - error->all(FLERR,"Invalid fix qeq parameter file"); - chi[itype] = force->numeric(FLERR,words[1]); - eta[itype] = force->numeric(FLERR,words[2]); - gamma[itype] = force->numeric(FLERR,words[3]); - zeta[itype] = force->numeric(FLERR,words[4]); - zcore[itype] = force->numeric(FLERR,words[5]); + force->bounds(FLERR,words[0],ntypes,nlo,nhi); + for (n=nlo; n <=nhi; ++n) { + chi[n] = force->numeric(FLERR,words[1]); + eta[n] = force->numeric(FLERR,words[2]); + gamma[n] = force->numeric(FLERR,words[3]); + zeta[n] = force->numeric(FLERR,words[4]); + zcore[n] = force->numeric(FLERR,words[5]); + setflag[n] = 1; + } } + + // check if all types are set + for (n=1; n <= ntypes; ++n) + if (setflag[n] == 0) + error->all(FLERR,"Invalid fix qeq parameter file"); + delete [] words; + delete [] setflag; } -- GitLab From c5ce3ffe60e40f186cb8b63b4233ccfed7d229dd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 20 Aug 2017 09:18:04 -0400 Subject: [PATCH 273/337] use list of bonds per atom instead of bondlist, as that will work with shake as well --- src/compute_fragment_atom.cpp | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/src/compute_fragment_atom.cpp b/src/compute_fragment_atom.cpp index 02a0b8e7dc..5024ada4f4 100644 --- a/src/compute_fragment_atom.cpp +++ b/src/compute_fragment_atom.cpp @@ -90,9 +90,6 @@ void ComputeFragmentAtom::compute_peratom() vector_atom = fragmentID; } - int nbondlist = neighbor->nbondlist; - int **bondlist = neighbor->bondlist; - // if group is dynamic, insure ghost atom masks are current if (group->dynamic[igroup]) { @@ -100,21 +97,17 @@ void ComputeFragmentAtom::compute_peratom() comm->forward_comm_compute(this); } - // every bond starts in its own fragment, - // with fragmentID = MIN(b1atomID,b2atomID) - // only bonds wholly contained in the group are considered + // each atom starts in its own fragment, + int nlocal = atom->nlocal; tagint *tag = atom->tag; int *mask = atom->mask; + int *num_bond = atom->num_bond; + tagint **bond_atom = atom->bond_atom; - for (i = 0; i < nbondlist; i++) { - const int b1 = bondlist[i][0]; - const int b2 = bondlist[i][1]; - - if ((mask[b1] & groupbit) && (mask[b2] & groupbit)) - fragmentID[b1] = fragmentID[b2] = MIN(tag[b1],tag[b2]); - else fragmentID[b1] = fragmentID[b2] = 0; - } + for (i = 0; i < nlocal + atom->nghost; i++) + if (mask[i] & groupbit) fragmentID[i] = tag[i]; + else fragmentID[i] = 0; // loop until no more changes on any proc: // acquire fragmentIDs of ghost atoms @@ -124,9 +117,6 @@ void ComputeFragmentAtom::compute_peratom() // then check if any proc made changes commflag = 1; - int nlocal = atom->nlocal; - int *num_bond = atom->num_bond; - tagint **bond_atom = atom->bond_atom; int change,done,anychange; @@ -138,9 +128,10 @@ void ComputeFragmentAtom::compute_peratom() done = 1; for (i = 0; i < nlocal; i++) { if (!(mask[i] & groupbit)) continue; - + for (j = 0; j < num_bond[i]; j++) { - k = bond_atom[i][j]; + k = atom->map(bond_atom[i][j]); + if (k < 0) continue; if (!(mask[k] & groupbit)) continue; if (fragmentID[i] == fragmentID[k]) continue; -- GitLab From 35fd82b602828463dfa151325086b2e2d67309b2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 20 Aug 2017 09:19:04 -0400 Subject: [PATCH 274/337] trim unneeded includes --- src/compute_fragment_atom.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/compute_fragment_atom.cpp b/src/compute_fragment_atom.cpp index 5024ada4f4..7417c26831 100644 --- a/src/compute_fragment_atom.cpp +++ b/src/compute_fragment_atom.cpp @@ -21,9 +21,7 @@ #include "atom_vec.h" #include "update.h" #include "modify.h" -#include "neighbor.h" #include "force.h" -#include "pair.h" #include "comm.h" #include "memory.h" #include "error.h" -- GitLab From 4dc1195cd8511cb08b203eef1da0ac3c5a10fd49 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 20 Aug 2017 09:41:49 -0400 Subject: [PATCH 275/337] add docs for compute fragment/atom --- doc/src/Section_commands.txt | 1 + doc/src/compute_cluster_atom.txt | 40 +++++++++++++++++++++----------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt index 571c6c4920..0211bbe055 100644 --- a/doc/src/Section_commands.txt +++ b/doc/src/Section_commands.txt @@ -775,6 +775,7 @@ KOKKOS, o = USER-OMP, t = OPT. "erotate/sphere"_compute_erotate_sphere.html, "erotate/sphere/atom"_compute_erotate_sphere_atom.html, "event/displace"_compute_event_displace.html, +"fragment/atom"_compute_cluster_atom.html, "global/atom"_compute_global_atom.html, "group/group"_compute_group_group.html, "gyration"_compute_gyration.html, diff --git a/doc/src/compute_cluster_atom.txt b/doc/src/compute_cluster_atom.txt index 147d06c2a8..c01c2010c5 100644 --- a/doc/src/compute_cluster_atom.txt +++ b/doc/src/compute_cluster_atom.txt @@ -7,37 +7,49 @@ :line compute cluster/atom command :h3 +compute fragment/atom command :h3 [Syntax:] -compute ID group-ID cluster/atom cutoff :pre +compute ID group-ID cluster/atom cutoff +compute ID group-ID fragment/atom :pre ID, group-ID are documented in "compute"_compute.html command -cluster/atom = style name of this compute command -cutoff = distance within which to label atoms as part of same cluster (distance units) :ul +{cluster/atom} or {fragment/atom} = style name of this compute command +cutoff = distance within which to label atoms as part of same cluster (distance units, cluster/atom only) :ul [Examples:] -compute 1 all cluster/atom 1.0 :pre +compute 1 all cluster/atom 3.5 +compute 1 all fragment/atom :pre [Description:] -Define a computation that assigns each atom a cluster ID. +Define a computation that assigns each atom a cluster ID or fragment ID. A cluster is defined as a set of atoms, each of which is within the cutoff distance from one or more other atoms in the cluster. If an atom has no neighbors within the cutoff distance, then it is a 1-atom -cluster. The ID of every atom in the cluster will be the smallest -atom ID of any atom in the cluster. +cluster. A fragment is similarly define as a set of atoms, each of +which has an explicit bond (i.e. defined via a "data file"_read_data.html, +the "create_bonds"_create_bonds.html command, or through fixes like +"fix bond/create"_fix_bond_create.html, "fix bond/swap"_fix_bond_swap.html, +or "fix bond/break"_fix_bond_break.html). The cluster ID or fragment ID +of every atom in the cluster will be set to the smallest atom ID of any atom +in the cluster or fragment, respectively. Only atoms in the compute group are clustered and assigned cluster -IDs. Atoms not in the compute group are assigned a cluster ID = 0. - -The neighbor list needed to compute this quantity is constructed each -time the calculation is performed (i.e. each time a snapshot of atoms -is dumped). Thus it can be inefficient to compute/dump this quantity -too frequently or to have multiple compute/dump commands, each of a -{cluster/atom} style. +IDs. Atoms not in the compute group are assigned a cluster ID = 0. +For fragments, only bonds where [both] atoms of the bond are included +in the compute group are assigned to fragments, so that only fragmets +are detected where [all] atoms are in the compute group. Thus atoms +may be included in the compute group, yes still have a fragment ID of 0. + +For compute {cluster/atom} the neighbor list needed to compute this quantity +is constructed each time the calculation is performed (i.e. each time a +snapshot of atoms is dumped). Thus it can be inefficient to compute/dump +this quantity too frequently or to have multiple compute/dump commands, +each of a {cluster/atom} style. NOTE: If you have a bonded system, then the settings of "special_bonds"_special_bonds.html command can remove pairwise -- GitLab From c895df73d624570703d2c56256c87abe92421ccf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 20 Aug 2017 09:47:51 -0400 Subject: [PATCH 276/337] skip over disabled bonds --- src/compute_fragment_atom.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/compute_fragment_atom.cpp b/src/compute_fragment_atom.cpp index 7417c26831..2dfb20a570 100644 --- a/src/compute_fragment_atom.cpp +++ b/src/compute_fragment_atom.cpp @@ -101,6 +101,7 @@ void ComputeFragmentAtom::compute_peratom() tagint *tag = atom->tag; int *mask = atom->mask; int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; tagint **bond_atom = atom->bond_atom; for (i = 0; i < nlocal + atom->nghost; i++) @@ -128,6 +129,7 @@ void ComputeFragmentAtom::compute_peratom() if (!(mask[i] & groupbit)) continue; for (j = 0; j < num_bond[i]; j++) { + if (bond_type[i][j] == 0) continue; k = atom->map(bond_atom[i][j]); if (k < 0) continue; if (!(mask[k] & groupbit)) continue; -- GitLab From 39e51df2c0045078591fc58d7ac6364ed06eaa6b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 20 Aug 2017 10:02:11 -0400 Subject: [PATCH 277/337] add missing entry in pdf manual --- doc/src/lammps.book | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 76b6743657..c444a6bb69 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -21,6 +21,7 @@ Section_python.html Section_errors.html Section_history.html +tutorial_bash_on_windows.html tutorial_drude.html tutorial_github.html tutorial_pylammps.html -- GitLab From f5b8f722eee363909877e0120529520ace068e5d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 20 Aug 2017 10:09:21 -0400 Subject: [PATCH 278/337] remove non-portable non-ascii blanks from fix wall/ees docs --- doc/src/fix_wall_ees.txt | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/doc/src/fix_wall_ees.txt b/doc/src/fix_wall_ees.txt index a8688e8e41..f141a19405 100644 --- a/doc/src/fix_wall_ees.txt +++ b/doc/src/fix_wall_ees.txt @@ -50,17 +50,17 @@ fix ees_cube all wall/region/ees myCube 1.0 1.0 2.5 :pre Fix {wall/ees} bounds the simulation domain on one or more of its faces with a flat wall that interacts with the ellipsoidal atoms in the group by generating a force on the atom in a direction perpendicular to -the wall and a torque parallel with the wall.  The energy of +the wall and a torque parallel with the wall. The energy of wall-particle interactions E is given by: :c,image(Eqs/fix_wall_ees.jpg) Introduced by Babadi and Ejtehadi in "(Babadi)"_#BabadiEjtehadi. Here, {r} is the distance from the particle to the wall at position {coord}, -and Rc is the {cutoff} distance at which the  particle and wall no -longer interact. Also,  sigma_n is the distance between center of -ellipsoid and the nearest point of its surface to the wall  The energy -of the wall (see the image below). +and Rc is the {cutoff} distance at which the particle and wall no +longer interact. Also, sigma_n is the distance between center of +ellipsoid and the nearest point of its surface to the wall. The energy +of the wall is: :c,image(JPG/fix_wall_ees_image.jpg) @@ -68,21 +68,22 @@ Details of using this command and specifications are the same as fix/wall command. You can also find an example in USER/ees/ under examples/ directory. -The prefactor {epsilon} can be thought of as an -effective Hamaker constant with energy units for the strength of the -ellipsoid-wall interaction.  More specifically, the {epsilon} pre-factor -= 8 * pi^2 * rho_wall * rho_ellipsoid * epsilon -* sigma_a * sigma_b * sigma_c, where epsilon is the LJ parameters for -the constituent LJ particles and sigma_a, sigma_b, and sigma_c are radii -of ellipsoidal particles. Rho_wall and rho_ellipsoid are the number +The prefactor {epsilon} can be thought of as an +effective Hamaker constant with energy units for the strength of the +ellipsoid-wall interaction. More specifically, the {epsilon} pre-factor += 8 * pi^2 * rho_wall * rho_ellipsoid * epsilon +* sigma_a * sigma_b * sigma_c, where epsilon is the LJ parameters for +the constituent LJ particles and sigma_a, sigma_b, and sigma_c are radii +of ellipsoidal particles. Rho_wall and rho_ellipsoid are the number density of the constituent particles, in the wall and ellipsoid respectively, in units of 1/volume. NOTE: You must insure that r is always bigger than sigma_n for -all particles in the group, or LAMMPS will generate an error.  This +all particles in the group, or LAMMPS will generate an error. This means you cannot start your simulation with particles touching the wall -position {coord} (r = sigma_n) or with particles penetrating the wall (0 =< r < sigma_n) or with particles on the wrong side of the -wall (r < 0). +position {coord} (r = sigma_n) or with particles penetrating the wall +(0 =< r < sigma_n) or with particles on the wrong side of the +wall (r < 0). Fix {wall/region/ees} treats the surface of the geometric region defined @@ -93,7 +94,7 @@ Other details of this command are the same as for the "fix wall/region"_fix_wall_region.html command. One may also find an example of using this fix in the examples/USER/misc/ees/ directory. -[Restrictions:] +[Restrictions:] This fix is part of the USER-MISC package. It is only enabled if LAMMPS was built with that package. See the "Making -- GitLab From d1a0c040c9f8cb9da218cfe5ae11fea15ac9fcf5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 20 Aug 2017 23:28:13 -0400 Subject: [PATCH 279/337] add initializers for nmatch/nwant variables in molecule file parser --- src/molecule.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/molecule.cpp b/src/molecule.cpp index b0fec4bcbc..ff209fda21 100644 --- a/src/molecule.cpp +++ b/src/molecule.cpp @@ -1219,7 +1219,7 @@ void Molecule::shakeflag_read(char *line) void Molecule::shakeatom_read(char *line) { - int tmp, nmatch, nwant; + int tmp, nmatch=0, nwant=0; for (int i = 0; i < natoms; i++) { readline(line); if (shake_flag[i] == 1) { @@ -1262,7 +1262,7 @@ void Molecule::shakeatom_read(char *line) void Molecule::shaketype_read(char *line) { - int tmp,nmatch,nwant; + int tmp, nmatch=0, nwant=0; for (int i = 0; i < natoms; i++) { readline(line); if (shake_flag[i] == 1) { -- GitLab From 5a0c3aea8ac1413ae026e011171a70b37378ec28 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 21 Aug 2017 13:12:43 -0400 Subject: [PATCH 280/337] add a compute aggregate/atom, that combines the rules for compute cluster/atom and fragment/atom --- doc/src/compute_cluster_atom.txt | 33 ++-- src/compute_aggregate_atom.cpp | 270 +++++++++++++++++++++++++++++++ src/compute_aggregate_atom.h | 70 ++++++++ 3 files changed, 363 insertions(+), 10 deletions(-) create mode 100644 src/compute_aggregate_atom.cpp create mode 100644 src/compute_aggregate_atom.h diff --git a/doc/src/compute_cluster_atom.txt b/doc/src/compute_cluster_atom.txt index c01c2010c5..0aa38ae590 100644 --- a/doc/src/compute_cluster_atom.txt +++ b/doc/src/compute_cluster_atom.txt @@ -8,29 +8,35 @@ compute cluster/atom command :h3 compute fragment/atom command :h3 +compute aggregate/atom command :h3 [Syntax:] compute ID group-ID cluster/atom cutoff -compute ID group-ID fragment/atom :pre +compute ID group-ID fragment/atom +compute ID group-ID aggregate/atom cutoff :pre ID, group-ID are documented in "compute"_compute.html command -{cluster/atom} or {fragment/atom} = style name of this compute command -cutoff = distance within which to label atoms as part of same cluster (distance units, cluster/atom only) :ul +{cluster/atom} or {fragment/atom} or {aggregate/atom} = style name of this compute command +cutoff = distance within which to label atoms as part of same cluster (distance units) :ul [Examples:] compute 1 all cluster/atom 3.5 compute 1 all fragment/atom :pre +compute 1 all aggregate/atom 3.5 :pre [Description:] -Define a computation that assigns each atom a cluster ID or fragment ID. +Define a computation that assigns each atom a cluster, fragement, +or aggregate ID. A cluster is defined as a set of atoms, each of which is within the cutoff distance from one or more other atoms in the cluster. If an atom has no neighbors within the cutoff distance, then it is a 1-atom -cluster. A fragment is similarly define as a set of atoms, each of +cluster. + +A fragment is similarly defined as a set of atoms, each of which has an explicit bond (i.e. defined via a "data file"_read_data.html, the "create_bonds"_create_bonds.html command, or through fixes like "fix bond/create"_fix_bond_create.html, "fix bond/swap"_fix_bond_swap.html, @@ -38,6 +44,12 @@ or "fix bond/break"_fix_bond_break.html). The cluster ID or fragment ID of every atom in the cluster will be set to the smallest atom ID of any atom in the cluster or fragment, respectively. +An aggregate is defined by combining the rules for clusters and +fragments, i.e. a set of atoms, where each of it is within the cutoff +distance from one or more atoms within a fragment that is part of +the same cluster. This measure can be used to track molecular assemblies +like micelles. + Only atoms in the compute group are clustered and assigned cluster IDs. Atoms not in the compute group are assigned a cluster ID = 0. For fragments, only bonds where [both] atoms of the bond are included @@ -45,11 +57,12 @@ in the compute group are assigned to fragments, so that only fragmets are detected where [all] atoms are in the compute group. Thus atoms may be included in the compute group, yes still have a fragment ID of 0. -For compute {cluster/atom} the neighbor list needed to compute this quantity -is constructed each time the calculation is performed (i.e. each time a -snapshot of atoms is dumped). Thus it can be inefficient to compute/dump -this quantity too frequently or to have multiple compute/dump commands, -each of a {cluster/atom} style. +For computes {cluster/atom} and {aggregate/atom} the neighbor list needed +to compute this quantity is constructed each time the calculation is +performed (i.e. each time a snapshot of atoms is dumped). Thus it can be +inefficient to compute/dump this quantity too frequently or to have +multiple compute/dump commands, each of a {cluster/atom} or +{aggregate/atom} style. NOTE: If you have a bonded system, then the settings of "special_bonds"_special_bonds.html command can remove pairwise diff --git a/src/compute_aggregate_atom.cpp b/src/compute_aggregate_atom.cpp new file mode 100644 index 0000000000..1155ac437a --- /dev/null +++ b/src/compute_aggregate_atom.cpp @@ -0,0 +1,270 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Axel Kohlmeyer (Temple U) +------------------------------------------------------------------------- */ + +#include +#include "compute_aggregate_atom.h" +#include "atom.h" +#include "atom_vec.h" +#include "update.h" +#include "modify.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "pair.h" +#include "force.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +#include "group.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeAggregateAtom::ComputeAggregateAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), + aggregateID(NULL) +{ + if (narg != 4) error->all(FLERR,"Illegal compute aggregate/atom command"); + + double cutoff = force->numeric(FLERR,arg[3]); + cutsq = cutoff*cutoff; + + if (atom->avec->bonds_allow == 0) + error->all(FLERR,"Compute aggregate/atom used when bonds are not allowed"); + + peratom_flag = 1; + size_peratom_cols = 0; + comm_forward = 1; + + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +ComputeAggregateAtom::~ComputeAggregateAtom() +{ + memory->destroy(aggregateID); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeAggregateAtom::init() +{ + if (atom->tag_enable == 0) + error->all(FLERR,"Cannot use compute aggregate/atom unless atoms have IDs"); + if (force->bond == NULL) + error->all(FLERR,"Compute aggregate/atom requires a bond style to be defined"); + + if (force->pair == NULL) + error->all(FLERR,"Compute cluster/atom requires a pair style to be defined"); + if (sqrt(cutsq) > force->pair->cutforce) + error->all(FLERR, + "Compute cluster/atom cutoff is longer than pairwise cutoff"); + + // need an occasional full neighbor list + // full required so that pair of atoms on 2 procs both set their clusterID + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->compute = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->occasional = 1; + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"aggregate/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute aggregate/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeAggregateAtom::init_list(int id, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeAggregateAtom::compute_peratom() +{ + int i,j,k; + + invoked_peratom = update->ntimestep; + + // grow aggregateID array if necessary + + if (atom->nmax > nmax) { + memory->destroy(aggregateID); + nmax = atom->nmax; + memory->create(aggregateID,nmax,"aggregate/atom:aggregateID"); + vector_atom = aggregateID; + } + + // invoke full neighbor list (will copy or build if necessary) + + neighbor->build_one(list); + + // if group is dynamic, insure ghost atom masks are current + + if (group->dynamic[igroup]) { + commflag = 0; + comm->forward_comm_compute(this); + } + + // each atom starts in its own aggregate, + + int nlocal = atom->nlocal; + int inum = list->inum; + tagint *tag = atom->tag; + int *mask = atom->mask; + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; + tagint **bond_atom = atom->bond_atom; + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + double **x = atom->x; + + for (i = 0; i < nlocal + atom->nghost; i++) + if (mask[i] & groupbit) aggregateID[i] = tag[i]; + else aggregateID[i] = 0; + + // loop until no more changes on any proc: + // acquire aggregateIDs of ghost atoms + // loop over my atoms, and check atoms bound to it + // if both atoms are in aggregate, assign lowest aggregateID to both + // then loop over my atoms, checking distance to neighbors + // if both atoms are in cluster, assign lowest clusterID to both + // iterate until no changes in my atoms + // then check if any proc made changes + + commflag = 1; + + int change,done,anychange; + + while (1) { + comm->forward_comm_compute(this); + + change = 0; + while (1) { + done = 1; + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + + for (j = 0; j < num_bond[i]; j++) { + if (bond_type[i][j] == 0) continue; + k = atom->map(bond_atom[i][j]); + if (k < 0) continue; + if (!(mask[k] & groupbit)) continue; + if (aggregateID[i] == aggregateID[k]) continue; + + aggregateID[i] = aggregateID[k] = MIN(aggregateID[i],aggregateID[k]); + done = 0; + } + } + + for (int ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) continue; + + const double xtmp = x[i][0]; + const double ytmp = x[i][1]; + const double ztmp = x[i][2]; + int *jlist = firstneigh[i]; + const int jnum = numneigh[i]; + + for (int jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + if (!(mask[j] & groupbit)) continue; + if (aggregateID[i] == aggregateID[j]) continue; + + const double delx = xtmp - x[j][0]; + const double dely = ytmp - x[j][1]; + const double delz = ztmp - x[j][2]; + const double rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) { + aggregateID[i] = aggregateID[j] + = MIN(aggregateID[i],aggregateID[j]); + done = 0; + } + } + } + if (!done) change = 1; + if (done) break; + } + + // stop if all procs are done + + MPI_Allreduce(&change,&anychange,1,MPI_INT,MPI_MAX,world); + if (!anychange) break; + } +} + +/* ---------------------------------------------------------------------- */ + +int ComputeAggregateAtom::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + + m = 0; + if (commflag) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = aggregateID[j]; + } + } else { + int *mask = atom->mask; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(mask[j]).d; + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeAggregateAtom::unpack_forward_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + if (commflag) + for (i = first; i < last; i++) aggregateID[i] = buf[m++]; + else { + int *mask = atom->mask; + for (i = first; i < last; i++) mask[i] = (int) ubuf(buf[m++]).i; + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeAggregateAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/compute_aggregate_atom.h b/src/compute_aggregate_atom.h new file mode 100644 index 0000000000..8170aabc7f --- /dev/null +++ b/src/compute_aggregate_atom.h @@ -0,0 +1,70 @@ +/* -*- 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 COMPUTE_CLASS + +ComputeStyle(aggregate/atom,ComputeAggregateAtom) + +#else + +#ifndef LMP_COMPUTE_AGGREGATE_ATOM_H +#define LMP_COMPUTE_AGGREGATE_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeAggregateAtom : public Compute { + public: + ComputeAggregateAtom(class LAMMPS *, int, char **); + ~ComputeAggregateAtom(); + void init(); + void init_list(int, class NeighList *); + void compute_peratom(); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + double memory_usage(); + + private: + int nmax,commflag; + double cutsq; + class NeighList *list; + double *aggregateID; +}; + +} + +#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: Cannot use compute aggregate/atom unless atoms have IDs + +Atom IDs are used to identify aggregates. + +E: Compute aggregate/atom requires a bond style to be defined + +This is so that a bond list is generated which is used to find aggregates. + +W: More than one compute aggregate/atom + +It is not efficient to use compute aggregate/atom more than once. + +*/ -- GitLab From 24c00b1f7a202b45100eb59f94843b484bcc5c3a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 21 Aug 2017 13:12:48 -0400 Subject: [PATCH 281/337] fix typo --- src/compute_cluster_atom.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compute_cluster_atom.cpp b/src/compute_cluster_atom.cpp index 80c002d39f..5ee6368504 100644 --- a/src/compute_cluster_atom.cpp +++ b/src/compute_cluster_atom.cpp @@ -63,7 +63,7 @@ void ComputeClusterAtom::init() if (atom->tag_enable == 0) error->all(FLERR,"Cannot use compute cluster/atom unless atoms have IDs"); if (force->pair == NULL) - error->all(FLERR,"Compute cluster/atom requires a pair style be defined"); + error->all(FLERR,"Compute cluster/atom requires a pair style to be defined"); if (sqrt(cutsq) > force->pair->cutforce) error->all(FLERR, "Compute cluster/atom cutoff is longer than pairwise cutoff"); -- GitLab From 090c792d9070f4687931131df26043f8f4a04d58 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 22 Aug 2017 13:42:02 -0600 Subject: [PATCH 282/337] Update Kokkos library to v2.04.00 --- lib/kokkos/CHANGELOG.md | 17 + lib/kokkos/Makefile.kokkos | 101 +- lib/kokkos/Makefile.targets | 11 + lib/kokkos/README | 22 + lib/kokkos/config/kokkos-promotion.txt | 140 ++ lib/kokkos/config/master_history.txt | 1 + lib/kokkos/config/test_all_sandia | 1 - lib/kokkos/core/cmake/KokkosCore_config.h.in | 22 +- lib/kokkos/core/src/CMakeLists.txt | 24 - lib/kokkos/core/src/Kokkos_Array.hpp | 12 +- lib/kokkos/core/src/Kokkos_Atomic.hpp | 18 + lib/kokkos/core/src/Kokkos_Complex.hpp | 19 +- lib/kokkos/core/src/Kokkos_Core.hpp | 4 + lib/kokkos/core/src/Kokkos_Core_fwd.hpp | 11 + lib/kokkos/core/src/Kokkos_Crs.hpp | 102 +- lib/kokkos/core/src/Kokkos_Macros.hpp | 61 +- lib/kokkos/core/src/Kokkos_MemoryPool.hpp | 14 +- .../core/src/Kokkos_Parallel_Reduce.hpp | 4 +- lib/kokkos/core/src/Kokkos_ROCm.hpp | 220 +++ lib/kokkos/core/src/Kokkos_ROCmSpace.hpp | 622 ++++++++ lib/kokkos/core/src/Kokkos_TaskScheduler.hpp | 61 + lib/kokkos/core/src/Kokkos_View.hpp | 1 + .../core/src/ROCm/Kokkos_ROCm_Atomic.hpp | 439 ++++++ .../core/src/ROCm/Kokkos_ROCm_Config.hpp | 51 + lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.cpp | 133 ++ lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp | 137 ++ lib/kokkos/core/src/ROCm/Kokkos_ROCm_Impl.cpp | 753 ++++++++++ .../core/src/ROCm/Kokkos_ROCm_Invoke.hpp | 138 ++ lib/kokkos/core/src/ROCm/Kokkos_ROCm_Join.hpp | 72 + .../core/src/ROCm/Kokkos_ROCm_Parallel.hpp | 1265 +++++++++++++++++ .../core/src/ROCm/Kokkos_ROCm_Reduce.hpp | 193 +++ .../core/src/ROCm/Kokkos_ROCm_ReduceScan.hpp | 605 ++++++++ lib/kokkos/core/src/ROCm/Kokkos_ROCm_Scan.hpp | 157 ++ .../core/src/ROCm/Kokkos_ROCm_Space.cpp | 726 ++++++++++ lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.cpp | 174 +++ lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.hpp | 458 ++++++ lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp | 518 +++++++ .../src/ROCm/Kokkos_ROCm_Vectorization.hpp | 346 +++++ lib/kokkos/core/src/ROCm/hc_math_std.hpp | 367 +++++ .../Kokkos_Atomic_Compare_Exchange_Strong.hpp | 2 + .../core/src/impl/Kokkos_Atomic_Fetch_Add.hpp | 2 + .../core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp | 3 + .../core/src/impl/Kokkos_Atomic_Generic.hpp | 4 +- lib/kokkos/core/src/impl/Kokkos_BitOps.hpp | 8 + lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp | 4 + lib/kokkos/core/src/impl/Kokkos_Core.cpp | 27 +- lib/kokkos/core/src/impl/Kokkos_Error.hpp | 2 +- .../core/src/impl/Kokkos_HostThreadTeam.cpp | 4 +- .../core/src/impl/Kokkos_Memory_Fence.hpp | 2 + lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp | 6 - .../core/src/impl/Kokkos_TaskQueue_impl.hpp | 4 +- .../core/src/impl/Kokkos_ViewMapping.hpp | 36 +- lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp | 2 +- lib/kokkos/core/unit_test/CMakeLists.txt | 4 + lib/kokkos/core/unit_test/Makefile | 68 + .../core/unit_test/TestCompilerMacros.hpp | 13 + lib/kokkos/core/unit_test/TestComplex.hpp | 6 +- lib/kokkos/core/unit_test/TestCrs.hpp | 98 ++ lib/kokkos/core/unit_test/TestRange.hpp | 6 +- lib/kokkos/core/unit_test/TestScan.hpp | 4 +- .../core/unit_test/TestTaskScheduler.hpp | 36 +- lib/kokkos/core/unit_test/TestViewAPI.hpp | 20 +- .../unit_test/TestViewCtorPropEmbeddedDim.hpp | 1 + .../core/unit_test/TestViewMapping_a.hpp | 3 +- .../core/unit_test/TestViewMapping_b.hpp | 84 +- .../core/unit_test/cuda/TestCuda_Crs.cpp | 45 + .../default/TestDefaultDeviceType_c.cpp | 2 + .../core/unit_test/openmp/TestOpenMP_Crs.cpp | 45 + .../rocm/TestROCmHostPinned_Category.hpp | 65 + .../rocm/TestROCmHostPinned_SharedAlloc.cpp | 55 + .../rocm/TestROCmHostPinned_ViewAPI.cpp | 45 + .../rocm/TestROCmHostPinned_ViewMapping_a.cpp | 46 + .../rocm/TestROCmHostPinned_ViewMapping_b.cpp | 46 + ...TestROCmHostPinned_ViewMapping_subview.cpp | 46 + .../core/unit_test/rocm/TestROCm_All.cpp | 33 + .../rocm/TestROCm_AtomicOperations.cpp | 46 + .../unit_test/rocm/TestROCm_AtomicViews.cpp | 47 + .../core/unit_test/rocm/TestROCm_Atomics.cpp | 46 + .../core/unit_test/rocm/TestROCm_Category.hpp | 65 + .../core/unit_test/rocm/TestROCm_Complex.cpp | 47 + .../core/unit_test/rocm/TestROCm_Init.cpp | 50 + .../core/unit_test/rocm/TestROCm_Other.cpp | 52 + .../unit_test/rocm/TestROCm_RangePolicy.cpp | 47 + .../unit_test/rocm/TestROCm_Reductions.cpp | 48 + .../core/unit_test/rocm/TestROCm_Scan.cpp | 47 + .../unit_test/rocm/TestROCm_SharedAlloc.cpp | 55 + .../core/unit_test/rocm/TestROCm_Spaces.cpp | 196 +++ .../unit_test/rocm/TestROCm_SubView_a.cpp | 104 ++ .../unit_test/rocm/TestROCm_SubView_b.cpp | 63 + .../unit_test/rocm/TestROCm_SubView_c01.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c02.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c03.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c04.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c05.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c06.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c07.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c08.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c09.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c10.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c11.cpp | 54 + .../unit_test/rocm/TestROCm_SubView_c12.cpp | 54 + .../core/unit_test/rocm/TestROCm_Team.cpp | 75 + .../rocm/TestROCm_TeamReductionScan.cpp | 82 ++ .../unit_test/rocm/TestROCm_TeamScratch.cpp | 83 ++ .../unit_test/rocm/TestROCm_ViewAPI_b.cpp | 45 + .../unit_test/rocm/TestROCm_ViewMapping_a.cpp | 46 + .../unit_test/rocm/TestROCm_ViewMapping_b.cpp | 46 + .../rocm/TestROCm_ViewMapping_subview.cpp | 46 + .../unit_test/rocm/TestROCm_ViewOfClass.cpp | 46 + .../core/unit_test/serial/TestSerial_Crs.cpp | 45 + .../unit_test/threads/TestThreads_Crs.cpp | 45 + lib/kokkos/generate_makefile.bash | 22 +- 112 files changed, 10885 insertions(+), 154 deletions(-) create mode 100644 lib/kokkos/config/kokkos-promotion.txt create mode 100644 lib/kokkos/core/src/Kokkos_ROCm.hpp create mode 100644 lib/kokkos/core/src/Kokkos_ROCmSpace.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Atomic.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Config.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.cpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Impl.cpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Invoke.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Join.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Reduce.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_ReduceScan.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Scan.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.cpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp create mode 100644 lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp create mode 100644 lib/kokkos/core/src/ROCm/hc_math_std.hpp create mode 100644 lib/kokkos/core/unit_test/TestCrs.hpp create mode 100644 lib/kokkos/core/unit_test/cuda/TestCuda_Crs.cpp create mode 100644 lib/kokkos/core/unit_test/openmp/TestOpenMP_Crs.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_Category.hpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_SharedAlloc.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewAPI.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_a.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_b.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_subview.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_All.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_AtomicOperations.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_AtomicViews.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_Atomics.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_Category.hpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_Complex.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_Init.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_Other.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_RangePolicy.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_Reductions.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_Scan.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SharedAlloc.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_Spaces.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_a.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_b.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c01.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c02.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c03.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c04.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c05.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c06.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c07.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c08.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c09.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c10.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c11.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c12.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_Team.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_TeamReductionScan.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_TeamScratch.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_ViewAPI_b.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_a.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_b.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_subview.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_ViewOfClass.cpp create mode 100644 lib/kokkos/core/unit_test/serial/TestSerial_Crs.cpp create mode 100644 lib/kokkos/core/unit_test/threads/TestThreads_Crs.cpp diff --git a/lib/kokkos/CHANGELOG.md b/lib/kokkos/CHANGELOG.md index 3fe9e46111..43d3f17d63 100644 --- a/lib/kokkos/CHANGELOG.md +++ b/lib/kokkos/CHANGELOG.md @@ -1,5 +1,22 @@ # Change Log +## [2.04.00](https://github.com/kokkos/kokkos/tree/2.04.00) (2017-08-16) +[Full Changelog](https://github.com/kokkos/kokkos/compare/2.03.13...2.04.00) + +**Implemented enhancements:** + +- Added ROCm backend to support AMD GPUs +- Kokkos::complex\ behaves slightly differently from std::complex\ [\#1011](https://github.com/kokkos/kokkos/issues/1011) +- Kokkos::Experimental::Crs constructor arguments were in the wrong order [\#992](https://github.com/kokkos/kokkos/issues/992) +- Work graph construction ease-of-use (one lambda for count and fill) [\#991](https://github.com/kokkos/kokkos/issues/991) +- when\_all returns pointer of futures (improved interface) [\#990](https://github.com/kokkos/kokkos/issues/990) +- Allow assignment of LayoutLeft to LayoutRight or vice versa for rank-0 Views [\#594](https://github.com/kokkos/kokkos/issues/594) +- Changed the meaning of Kokkos\_ENABLE\_CXX11\_DISPATCH\_LAMBDA [\#1035](https://github.com/kokkos/kokkos/issues/1035) + +**Fixed bugs:** + +- memory pool default constructor does not properly set member variables. [\#1007](https://github.com/kokkos/kokkos/issues/1007) + ## [2.03.13](https://github.com/kokkos/kokkos/tree/2.03.13) (2017-07-27) [Full Changelog](https://github.com/kokkos/kokkos/compare/2.03.05...2.03.13) diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index d2967cf9a3..b8236e8fd1 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -4,10 +4,16 @@ KOKKOS_PATH=../../lib/kokkos CXXFLAGS=$(CCFLAGS) -# Options: Cuda,OpenMP,Pthreads,Qthreads,Serial +# Options: Cuda,ROCm,OpenMP,Pthreads,Qthreads,Serial KOKKOS_DEVICES ?= "OpenMP" #KOKKOS_DEVICES ?= "Pthreads" -# Options: KNC,SNB,HSW,Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61,ARMv80,ARMv81,ARMv8-ThunderX,BGQ,Power7,Power8,Power9,KNL,BDW,SKX +# Options: +# Intel: KNC,KNL,SNB,HSW,BDW,SKX +# NVIDIA: Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61 +# ARM: ARMv80,ARMv81,ARMv8-ThunderX +# IBM: BGQ,Power7,Power8,Power9 +# AMD-GPUS: Kaveri,Carrizo,Fiji,Vega +# AMD-CPUS: AMDAVX,Ryzen,Epyc KOKKOS_ARCH ?= "" # Options: yes,no KOKKOS_DEBUG ?= "no" @@ -43,8 +49,8 @@ KOKKOS_INTERNAL_CUDA_USE_UVM := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | gr KOKKOS_INTERNAL_CUDA_USE_RELOC := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | grep "rdc" | wc -l)) KOKKOS_INTERNAL_CUDA_USE_LAMBDA := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | grep "enable_lambda" | wc -l)) + # Check for Kokkos Host Execution Spaces one of which must be on. -KOKKOS_INTERNAL_USE_OPENMPTARGET := $(strip $(shell echo $(KOKKOS_DEVICES) | grep OpenMPTarget | wc -l)) KOKKOS_INTERNAL_USE_OPENMP := $(strip $(shell echo $(subst OpenMPTarget,,$(KOKKOS_DEVICES)) | grep OpenMP | wc -l)) KOKKOS_INTERNAL_USE_PTHREADS := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Pthread | wc -l)) KOKKOS_INTERNAL_USE_QTHREADS := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Qthreads | wc -l)) @@ -60,6 +66,8 @@ endif # Check for other Execution Spaces. KOKKOS_INTERNAL_USE_CUDA := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Cuda | wc -l)) +KOKKOS_INTERNAL_USE_ROCM := $(strip $(shell echo $(KOKKOS_DEVICES) | grep ROCm | wc -l)) +KOKKOS_INTERNAL_USE_OPENMPTARGET := $(strip $(shell echo $(KOKKOS_DEVICES) | grep OpenMPTarget | wc -l)) ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_INTERNAL_NVCC_PATH := $(shell which nvcc) @@ -87,6 +95,7 @@ ifneq ($(MPICH_CXX),) endif KOKKOS_INTERNAL_COMPILER_CLANG := $(strip $(shell $(CXX) --version 2>&1 | grep clang | wc -l)) KOKKOS_INTERNAL_COMPILER_APPLE_CLANG := $(strip $(shell $(CXX) --version 2>&1 | grep "apple-darwin" | wc -l)) +KOKKOS_INTERNAL_COMPILER_HCC := $(strip $(shell $(CXX) --version 2>&1 | grep HCC | wc -l)) ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 2) KOKKOS_INTERNAL_COMPILER_CLANG = 1 @@ -99,6 +108,10 @@ endif ifeq ($(KOKKOS_INTERNAL_COMPILER_APPLE_CLANG), 1) KOKKOS_INTERNAL_COMPILER_CLANG = 0 endif +# AMD HCC passes both clang and hcc test so turn off clang +ifeq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) + KOKKOS_INTENAL_COMPILER_CLANG = 0 +endif ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) KOKKOS_INTERNAL_COMPILER_CLANG_VERSION := $(shell clang --version | grep version | cut -d ' ' -f3 | tr -d '.') @@ -183,8 +196,12 @@ else ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1) KOKKOS_INTERNAL_CXX11_FLAG := -hstd=c++11 else - KOKKOS_INTERNAL_CXX11_FLAG := --std=c++11 - KOKKOS_INTERNAL_CXX1Z_FLAG := --std=c++1z + ifeq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) + KOKKOS_INTERNAL_CXX11_FLAG := + else + KOKKOS_INTERNAL_CXX11_FLAG := --std=c++11 + KOKKOS_INTERNAL_CXX1Z_FLAG := --std=c++1z + endif endif endif endif @@ -259,6 +276,13 @@ KOKKOS_INTERNAL_USE_ARCH_IBM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_ # AMD based. KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $(strip $(shell echo $(KOKKOS_ARCH) | grep AMDAVX | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_RYZEN := $(strip $(shell echo $(KOKKOS_ARCH) | grep Ryzen | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_EPYC := $(strip $(shell echo $(KOKKOS_ARCH) | grep Epyc | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_KAVERI := $(strip $(shell echo $(KOKKOS_ARCH) | grep Kaveri | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_CARRIZO := $(strip $(shell echo $(KOKKOS_ARCH) | grep Carrizo | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_FIJI := $(strip $(shell echo $(KOKKOS_ARCH) | grep Fiji | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_VEGA := $(strip $(shell echo $(KOKKOS_ARCH) | grep Vega | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_GFX901 := $(strip $(shell echo $(KOKKOS_ARCH) | grep gfx901 | wc -l)) # Any AVX? KOKKOS_INTERNAL_USE_ARCH_SSE42 := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_WSM) | bc )) @@ -271,6 +295,7 @@ KOKKOS_INTERNAL_USE_ARCH_AVX512XEON := $(strip $(shell echo $(KOKKOS_INTERNAL_US KOKKOS_INTERNAL_USE_ISA_X86_64 := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_WSM)+$(KOKKOS_INTERNAL_USE_ARCH_SNB)+$(KOKKOS_INTERNAL_USE_ARCH_HSW)+$(KOKKOS_INTERNAL_USE_ARCH_BDW)+$(KOKKOS_INTERNAL_USE_ARCH_KNL)+$(KOKKOS_INTERNAL_USE_ARCH_SKX) | bc )) KOKKOS_INTERNAL_USE_ISA_KNC := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_KNC) | bc )) KOKKOS_INTERNAL_USE_ISA_POWERPCLE := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_POWER8)+$(KOKKOS_INTERNAL_USE_ARCH_POWER9) | bc )) +KOKKOS_INTERNAL_USE_ISA_POWERPCBE := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_POWER7) | bc )) # Decide whether we can support transactional memory KOKKOS_INTERNAL_USE_TM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_BDW)+$(KOKKOS_INTERNAL_USE_ARCH_SKX) | bc )) @@ -319,8 +344,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) tmp := $(shell echo "\#define KOKKOS_HAVE_CUDA 1" >> KokkosCore_config.tmp ) endif +ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) + tmp := $(shell echo '\#define KOKKOS_ENABLE_ROCM 1' >> KokkosCore_config.tmp) +endif + ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) - tmp := $(shell echo '\#define KOKKOS_ENABLE_OPENMPTARGET 1' >> KokkosCore_config.tmp) + tmp := $(shell echo '\#define KOKKOS_ENABLE_OPENMPTARGET 1' >> KokkosCore_config.tmp) endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) @@ -363,6 +392,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_ISA_POWERPCLE), 1) tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp ) endif +ifeq ($(KOKKOS_INTERNAL_USE_ISA_POWERPCBE), 1) + tmp := $(shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_USE_ISA_POWERPCBE" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp ) +endif + tmp := $(shell echo "/* General Settings */" >> KokkosCore_config.tmp) ifeq ($(KOKKOS_INTERNAL_ENABLE_CXX11), 1) KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX11_FLAG) @@ -561,6 +596,18 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX), 1) endif endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_POWER7), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_POWER7 1" >> KokkosCore_config.tmp ) + + ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1) + + else + # Assume that this is a really a GNU compiler or it could be XL on P8. + KOKKOS_CXXFLAGS += -mcpu=power7 -mtune=power7 + KOKKOS_LDFLAGS += -mcpu=power7 -mtune=power7 + endif +endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_POWER8), 1) tmp := $(shell echo "\#define KOKKOS_ARCH_POWER8 1" >> KokkosCore_config.tmp ) @@ -742,7 +789,49 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) endif endif +# Figure out the architecture flag for ROCm. +ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) + # Lets start with adding architecture defines + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KAVERI), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 701" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_KAVERI 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx701 + endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_CARRIZO), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 801" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_CARRIZO 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx801 + endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_FIJI), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 803" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_FIJI 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx803 + endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 900" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_VEGA 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx900 + endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_GFX901), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 901" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_GFX901 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx901 + endif + + + KOKKOS_INTERNAL_HCC_PATH := $(shell which $(CXX)) + ROCM_HCC_PATH ?= $(KOKKOS_INTERNAL_HCC_PATH:/bin/clang++=) + + KOKKOS_CXXFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --cxxflags) + KOKKOS_LDFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --ldflags) -lhc_am -lm + KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_ROCM_ARCH_FLAG) + + KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.cpp) + KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.hpp) +endif + KOKKOS_INTERNAL_LS_CONFIG := $(shell ls KokkosCore_config.h 2>&1) + ifeq ($(KOKKOS_INTERNAL_LS_CONFIG), KokkosCore_config.h) KOKKOS_INTERNAL_NEW_CONFIG := $(strip $(shell diff KokkosCore_config.h KokkosCore_config.tmp | grep define | wc -l)) else diff --git a/lib/kokkos/Makefile.targets b/lib/kokkos/Makefile.targets index a9341a907c..964ec966d5 100644 --- a/lib/kokkos/Makefile.targets +++ b/lib/kokkos/Makefile.targets @@ -42,6 +42,17 @@ Kokkos_Cuda_Locks.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_C $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Locks.cpp endif +ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) +Kokkos_ROCm_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Exec.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Exec.cpp +Kokkos_ROCm_Space.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Space.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Space.cpp +Kokkos_ROCm_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Task.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Task.cpp +Kokkos_ROCm_Impl.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Impl.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Impl.cpp +endif + ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) Kokkos_ThreadsExec_base.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec_base.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec_base.cpp diff --git a/lib/kokkos/README b/lib/kokkos/README index 257a2e5db4..e5ed39ef53 100644 --- a/lib/kokkos/README +++ b/lib/kokkos/README @@ -80,6 +80,9 @@ Other compilers working: X86: Cygwin 2.1.0 64bit with gcc 4.9.3 +Limited testing of the following compilers on POWER7+ systems: + GCC 4.8.5 (on RHEL7.1 POWER7+) + Known non-working combinations: Power8: Pthreads backend @@ -171,3 +174,22 @@ Contributions to Kokkos are welcome. In order to do so, please open an issue where a feature request or bug can be discussed. Then issue a pull request with your contribution. Pull requests must be issued against the develop branch. +=========================================================================== +====Citing Kokkos========================================================== +=========================================================================== + +If you publish work which mentions Kokkos, please cite the following paper: + +@article{CarterEdwards20143202, +title = "Kokkos: Enabling manycore performance portability through polymorphic memory access patterns ", +journal = "Journal of Parallel and Distributed Computing ", +volume = "74", +number = "12", +pages = "3202 - 3216", +year = "2014", +note = "Domain-Specific Languages and High-Level Frameworks for High-Performance Computing ", +issn = "0743-7315", +doi = "https://doi.org/10.1016/j.jpdc.2014.07.003", +url = "http://www.sciencedirect.com/science/article/pii/S0743731514001257", +author = "H. Carter Edwards and Christian R. Trott and Daniel Sunderland" +} diff --git a/lib/kokkos/config/kokkos-promotion.txt b/lib/kokkos/config/kokkos-promotion.txt new file mode 100644 index 0000000000..d56298b416 --- /dev/null +++ b/lib/kokkos/config/kokkos-promotion.txt @@ -0,0 +1,140 @@ +Summary: + +- Step 1: Testing Kokkos itself using test_all_sandia + +- Step 2: Testing of Kokkos integrated into Trilinos (config/trilinos-integration/*.sh) + +- Step 3: Locally update CHANGELOG, merge into master, edit config/master_history.txt + +- Step 4: Locally snapshot new master into corresponding Trilinos branch (develop or temporary), push with checking-test-sems.sh + +- Step 5: Push local Kokkos master to GitHub (need Owner approval) + +Steps 1, 2, and 4 include testing that may fail. These failures must be fixed either by pull requests to Kokkos develop, or by creating a new Trilinos branch for parts of Trilinos that must be updated. This is what usually takes the most time. + + +// -------------------------------------------------------------------------------- // + + +Step 1: The following should be repeated on enough machines to cover all +supported compilers. Those machines are: + + kokkos-dev + ??? <- TODO: identify other machines + + 1.1. Clone kokkos develop branch (or just switch to it) + + git clone -b develop git@github.com:kokkos/kokkos.git + cd kokkos + + 1.2. Create a testing directory + + mkdir testing + cd testing + + 1.3. Run the test_all_sandia script with no options to test all compilers + + nohup ../config/test_all_sandia & + tail -f nohup.out # to watch progress + +// -------------------------------------------------------------------------------- // + +Step 2: + 2.1. Build and test Trilinos with 4 different configurations; Run scripts for white and shepard that are provided in kokkos/config/trilinos-integration. These scripts load their own modules/environment, so don't require preparation. You can run all four at the same time, use separate directories for each. + + mkdir serial + cd serial + nohup KOKKOS_PATH/config/trilinos-integration/shepard_jenkins_run_script_serial_intel & + + 2.2. Compare the compile errors and test failures between updated and pristine versions. There may be compile failures that happen in both, tests that fail in both, and there may be tests that only fail some times (thus, rerun tests manually as needed). + +// -------------------------------------------------------------------------------- // + +Step 3: This step should be run on kokkos-dev + + 3.1. If you don't have a GitHub token already, generate one for yourself (this will give you TOKEN): + + https://github.com/settings/tokens + + 3.2. Get a clean copy of the Kokkos develop branch + + git clone -b develop git@github.com:kokkos/kokkos.git + cd kokkos + + 3.3. Generate the initial changelog. Use the most recent tag as OLDTAG (`git tag -l` can show you all tags). The NEWTAG is the new version number, e.g. "2.04.00". RUN THIS OUTSIDE THE KOKKOS SOURCE TREE! + + module load ruby/2.3.1/gcc/5.3.0 + gitthub_changelog_generator kokkos/kokkos --token TOKEN --no-pull-requests --include-labels 'InDevelop' --enhancement-labels 'enhancement,Feature Request' --future-release 'NEWTAG' --between-tags 'NEWTAG,OLDTAG' + cat CHANGELOG.md + + 3.4. Manually cleanup and commit the change log. Pushing to develop requires Owner permission. + (Copy the new section from the generated CHANGELOG.md to KOKKOS_PATH/CHANGELOG.md) + (Make desired changes to CHANGELOG.md to enhance clarity (remove issues not noteworthy)) + (Commit and push the CHANGELOG.md to develop) + + 3.5. Merge develop into master. DO NOT FAST-FORWARD THE MERGE!!!! + + (From kokkos directory): + git checkout master + git merge --no-ff origin/develop + + 3.6. Update the tag in kokkos/config/master_history.txt + + Tag description: MajorNumber.MinorNumber.WeeksSinceMinorNumberUpdate + Tag field widths: #.#.## + date description: month:day:year + date field widths: ##:##:#### + master description: SHA1 of previous master commit (use `git log`?) + develop description: SHA1 of merged develop branch + SHA1 field width: ######## (8 chars) + + # Append to config/master_history.txt: + + tag: 2.03.13 date: 07:27:2017 master: da314444 develop: 29ccb58a + + git commit --amend -a + + + 3.7. Create the new tag: + + git tag -a #.#.## + + (type the following into the tag message (same as for step 4.3)) + tag: #.#.## + date: mm/dd/yyyy + master: sha1 + develop: sha1 + + 3.8. DO NOT PUSH YET !!! + + +// -------------------------------------------------------------------------------- // + +Step 4: This step can be done on any SEMS machine (e.g. kokkos-dev). Actually, the checkin step requires lots of disk space and RAM. Use ceerws1113 if you have access to it. + + 4.1 Clone the Trilinos corresponding branch (or just switch to it) + + git clone -b develop git@github.com:trilinos/Trilinos.git + TRILINOS_PATH=$PWD/Trilinos + + 4.2 Snapshot Kokkos into Trilinos - this requires python/2.7.9 and that both Trilinos and Kokkos be clean - no untracked or modified files. Run the following outside of the Kokkos and Trilinos source trees. + + module load sems-python/2.7.9 + python KOKKOS_PATH/config/snapshot.py KOKKOS_PATH TRILINOS_PATH/packages + + 4.3. Run checkin-test to push to trilinos using the CI build modules (gcc/4.9.3) + + cd TRILINOS_PATH + mkdir CHECKIN + cd CHECKIN + nohup ../cmake/std/sems/checkin-test-sems.sh --do-all --push & + + 4.4. If there are failures, fix and backtrack. Otherwise, go to next step + +// -------------------------------------------------------------------------------- // + +Step 5: Push Kokkos master to GitHub (requires Owner permission). + + cd KOKKOS_PATH + git push --follow-tags origin master + diff --git a/lib/kokkos/config/master_history.txt b/lib/kokkos/config/master_history.txt index 0447db4b2b..96b05c02e1 100644 --- a/lib/kokkos/config/master_history.txt +++ b/lib/kokkos/config/master_history.txt @@ -8,3 +8,4 @@ tag: 2.02.15 date: 02:10:2017 master: 8c64cd93 develop: 28dea8b6 tag: 2.03.00 date: 04:25:2017 master: 120d9ce7 develop: 015ba641 tag: 2.03.05 date: 05:27:2017 master: 36b92f43 develop: 79073186 tag: 2.03.13 date: 07:27:2017 master: da314444 develop: 29ccb58a +tag: 2.04.00 date: 08:16:2017 master: 54eb75c0 develop: 32fb8ee1 diff --git a/lib/kokkos/config/test_all_sandia b/lib/kokkos/config/test_all_sandia index 005cd20721..e6fcaad261 100755 --- a/lib/kokkos/config/test_all_sandia +++ b/lib/kokkos/config/test_all_sandia @@ -167,7 +167,6 @@ if [ "$MACHINE" = "sems" ]; then "intel/15.0.2 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" "intel/16.0.1 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" "intel/16.0.3 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "intel/17.0.1 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" "clang/3.6.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" "clang/3.7.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" "clang/3.8.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" diff --git a/lib/kokkos/core/cmake/KokkosCore_config.h.in b/lib/kokkos/core/cmake/KokkosCore_config.h.in index 621cd54e1c..599c6b0224 100644 --- a/lib/kokkos/core/cmake/KokkosCore_config.h.in +++ b/lib/kokkos/core/cmake/KokkosCore_config.h.in @@ -1,15 +1,15 @@ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Don't include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif - /* The trivial 'src/build_common.sh' creates a config * that must stay in sync with this file. */ #cmakedefine KOKKOS_FOR_SIERRA -#ifndef KOKKOS_FOR_SIERRA +#if !defined(KOKKOS_FOR_SIERRA) + +#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) +#error "Don't include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." +#else +#define KOKKOS_CORE_CONFIG_H +#endif #cmakedefine KOKKOS_HAVE_CUDA #cmakedefine KOKKOS_HAVE_OPENMP @@ -93,12 +93,6 @@ #cmakedefine KOKKOS_ARCH_PASCAL60 1 #cmakedefine KOKKOS_ARCH_PASCAL61 1 -// Don't forbid users from defining this macro on the command line, -// but still make sure that CMake logic can control its definition. -#ifndef KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA -#cmakedefine KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA 1 -#endif - // TODO: These are currently not used in Kokkos. Should they be removed? #cmakedefine KOKKOS_HAVE_MPI #cmakedefine KOKKOS_HAVE_CUSPARSE @@ -107,4 +101,4 @@ #cmakedefine KOKKOS_USING_DEPRECATED_VIEW #cmakedefine KOKKOS_HAVE_CXX11 -#endif // KOKKOS_FOR_SIERRA +#endif // !defined(KOKKOS_FOR_SIERRA) diff --git a/lib/kokkos/core/src/CMakeLists.txt b/lib/kokkos/core/src/CMakeLists.txt index 492470d05d..0d5d97a829 100644 --- a/lib/kokkos/core/src/CMakeLists.txt +++ b/lib/kokkos/core/src/CMakeLists.txt @@ -9,30 +9,6 @@ TRIBITS_ADD_OPTION_AND_DEFINE( ASSERT_DEFINED(${PROJECT_NAME}_ENABLE_CXX11) ASSERT_DEFINED(${PACKAGE_NAME}_ENABLE_CUDA) -# Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA governs whether Kokkos allows -# use of lambdas at the outer level of parallel dispatch (that is, as -# the argument to an outer parallel_for, parallel_reduce, or -# parallel_scan). This works with non-CUDA execution spaces if C++11 -# is enabled. It does not currently work with public releases of -# CUDA. If that changes, please change the default here to ON if CUDA -# and C++11 are ON. -IF (${PROJECT_NAME}_ENABLE_CXX11) - IF (${PACKAGE_NAME}_ENABLE_CUDA) - SET(Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA_DEFAULT OFF) - ELSE () - SET(Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA_DEFAULT ON) - ENDIF () -ELSE () - SET(Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA_DEFAULT OFF) -ENDIF () - -TRIBITS_ADD_OPTION_AND_DEFINE( - Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA - KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA - "Whether Kokkos allows use of lambdas at the outer level of parallel dispatch (that is, as the argument to an outer parallel_for, parallel_reduce, or parallel_scan). This requires C++11. It also does not currently work with public releases of CUDA. As a result, even if C++11 is enabled, this will be OFF by default if CUDA is enabled. If this option is ON, the macro KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA will be defined. For compatibility with Kokkos' Makefile build system, it is also possible to define that macro on the command line." - ${Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA_DEFAULT} - ) - TRIBITS_CONFIGURE_FILE(${PACKAGE_NAME}_config.h) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) diff --git a/lib/kokkos/core/src/Kokkos_Array.hpp b/lib/kokkos/core/src/Kokkos_Array.hpp index abb263b7cc..43e6386b54 100644 --- a/lib/kokkos/core/src/Kokkos_Array.hpp +++ b/lib/kokkos/core/src/Kokkos_Array.hpp @@ -152,10 +152,10 @@ public: KOKKOS_INLINE_FUNCTION pointer data() { return pointer(0) ; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return const_pointer(0); } - ~Array() = default ; - Array() = default ; - Array( const Array & ) = default ; - Array & operator = ( const Array & ) = default ; + KOKKOS_FUNCTION_DEFAULTED ~Array() = default ; + KOKKOS_FUNCTION_DEFAULTED Array() = default ; + KOKKOS_FUNCTION_DEFAULTED Array( const Array & ) = default ; + KOKKOS_FUNCTION_DEFAULTED Array & operator = ( const Array & ) = default ; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. @@ -209,7 +209,7 @@ public: KOKKOS_INLINE_FUNCTION pointer data() { return m_elem ; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return m_elem ; } - ~Array() = default ; + KOKKOS_FUNCTION_DEFAULTED ~Array() = default ; Array() = delete ; Array( const Array & rhs ) = delete ; @@ -278,7 +278,7 @@ public: KOKKOS_INLINE_FUNCTION pointer data() { return m_elem ; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return m_elem ; } - ~Array() = default ; + KOKKOS_FUNCTION_DEFAULTED ~Array() = default ; Array() = delete ; Array( const Array & ) = delete ; diff --git a/lib/kokkos/core/src/Kokkos_Atomic.hpp b/lib/kokkos/core/src/Kokkos_Atomic.hpp index 3c8673c66a..54a97a16c1 100644 --- a/lib/kokkos/core/src/Kokkos_Atomic.hpp +++ b/lib/kokkos/core/src/Kokkos_Atomic.hpp @@ -80,6 +80,11 @@ // Compiling NVIDIA device code, must use Cuda atomics: #define KOKKOS_ENABLE_CUDA_ATOMICS + +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU) + +#define KOKKOS_ENABLE_ROCM_ATOMICS + #endif #if ! defined( KOKKOS_ENABLE_GNU_ATOMICS ) && \ @@ -154,6 +159,19 @@ const char * atomic_query_version() } // namespace Kokkos +#if defined( KOKKOS_ENABLE_ROCM ) +#include +namespace Kokkos { +namespace Impl { +extern KOKKOS_INLINE_FUNCTION +bool lock_address_rocm_space(void* ptr); + +extern KOKKOS_INLINE_FUNCTION +void unlock_address_rocm_space(void* ptr); +} +} +#endif + #ifdef _WIN32 #include "impl/Kokkos_Atomic_Windows.hpp" #else diff --git a/lib/kokkos/core/src/Kokkos_Complex.hpp b/lib/kokkos/core/src/Kokkos_Complex.hpp index 1fe964a6d2..26b47a8b74 100644 --- a/lib/kokkos/core/src/Kokkos_Complex.hpp +++ b/lib/kokkos/core/src/Kokkos_Complex.hpp @@ -107,6 +107,11 @@ public: re_ (val), im_ (0.0) {} + // BUG HCC WORKAROUND + KOKKOS_INLINE_FUNCTION complex( const RealType& re, const RealType& im): + re_ (re), im_ (im) + {} + //! Constructor that takes the real and imaginary parts. template KOKKOS_INLINE_FUNCTION complex (const RealType1& re, const RealType2& im) : @@ -227,6 +232,16 @@ public: return re_; } + //! Set the imaginary part of this complex number. + KOKKOS_INLINE_FUNCTION void imag (RealType v) { + im_ = v; + } + + //! Set the real part of this complex number. + KOKKOS_INLINE_FUNCTION void real (RealType v) { + re_ = v; + } + KOKKOS_INLINE_FUNCTION complex& operator += (const complex& src) { re_ += src.re_; @@ -299,7 +314,7 @@ public: // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. - const RealType s = ::fabs (y.real ()) + ::fabs (y.imag ()); + const RealType s = std::fabs (y.real ()) + std::fabs (y.imag ()); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, @@ -537,7 +552,7 @@ operator / (const complex& x, const complex& y) { // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. - const RealType s = ::fabs (real (y)) + ::fabs (imag (y)); + const RealType s = std::fabs (real (y)) + std::fabs (imag (y)); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, diff --git a/lib/kokkos/core/src/Kokkos_Core.hpp b/lib/kokkos/core/src/Kokkos_Core.hpp index ddb11d2894..3748c35eb0 100644 --- a/lib/kokkos/core/src/Kokkos_Core.hpp +++ b/lib/kokkos/core/src/Kokkos_Core.hpp @@ -74,6 +74,10 @@ #include #endif +#if defined( KOKKOS_ENABLE_ROCM ) +#include +#endif + #include #include #include diff --git a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp index 8c080f7a8f..29001e19ed 100644 --- a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp +++ b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp @@ -122,6 +122,13 @@ class CudaHostPinnedSpace; ///< Memory space on Host accessible to Cuda GPU class Cuda; ///< Execution space for Cuda GPU #endif +#if defined( KOKKOS_ENABLE_ROCM ) +namespace Experimental { +class ROCmSpace ; ///< Memory space on ROCm GPU +class ROCm ; ///< Execution space for ROCm GPU +} +#endif + template struct Device; @@ -140,6 +147,8 @@ namespace Kokkos { typedef Cuda DefaultExecutionSpace; #elif defined ( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET ) typedef Experimental::OpenMPTarget DefaultExecutionSpace ; +#elif defined ( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM ) + typedef Experimental::ROCm DefaultExecutionSpace ; #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP ) typedef OpenMP DefaultExecutionSpace; #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS ) @@ -185,6 +194,8 @@ namespace Impl { #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA ) && defined( KOKKOS_ENABLE_CUDA ) typedef Kokkos::CudaSpace ActiveExecutionMemorySpace; +#elif defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU ) +typedef Kokkos::HostSpace ActiveExecutionMemorySpace ; #elif defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) typedef Kokkos::HostSpace ActiveExecutionMemorySpace; #else diff --git a/lib/kokkos/core/src/Kokkos_Crs.hpp b/lib/kokkos/core/src/Kokkos_Crs.hpp index 93b3fa5ca9..f089c16ad2 100644 --- a/lib/kokkos/core/src/Kokkos_Crs.hpp +++ b/lib/kokkos/core/src/Kokkos_Crs.hpp @@ -98,18 +98,18 @@ public: typedef View row_map_type; typedef View entries_type; - entries_type entries; row_map_type row_map; + entries_type entries; //! Construct an empty view. - Crs () : entries(), row_map() {} + Crs() : row_map(), entries() {} //! Copy constructor (shallow copy). - Crs (const Crs& rhs) : entries (rhs.entries), row_map (rhs.row_map) + Crs(const Crs& rhs) : row_map(rhs.row_map), entries(rhs.entries) {} template - Crs (const EntriesType& entries_,const RowMapType& row_map_) : entries (entries_), row_map (row_map_) + Crs(const RowMapType& row_map_, const EntriesType& entries_) : row_map(row_map_), entries(entries_) {} /** \brief Assign to a view of the rhs array. @@ -117,8 +117,8 @@ public: * then allocated memory is deallocated. */ Crs& operator= (const Crs& rhs) { - entries = rhs.entries; row_map = rhs.row_map; + entries = rhs.entries; return *this; } @@ -151,7 +151,7 @@ void get_crs_transpose_counts( template< class OutCounts, class InCrs> -void get_crs_row_map_from_counts( +typename OutCounts::value_type get_crs_row_map_from_counts( OutCounts& out, InCrs const& in, std::string const& name = "row_map"); @@ -204,18 +204,20 @@ class CrsRowMapFromCounts { using execution_space = typename InCounts::execution_space; using value_type = typename OutRowMap::value_type; using index_type = typename InCounts::size_type; + using last_value_type = Kokkos::View; private: - InCounts in; - OutRowMap out; + InCounts m_in; + OutRowMap m_out; + last_value_type m_last_value; public: KOKKOS_INLINE_FUNCTION void operator()(index_type i, value_type& update, bool final_pass) const { - update += in(i); - if (final_pass) { - out(i + 1) = update; - if (i == 0) { - out(0) = 0; - } + if (i < m_in.size()) { + update += m_in(i); + if (final_pass) m_out(i + 1) = update; + } else if (final_pass) { + m_out(0) = 0; + m_last_value() = update; } } KOKKOS_INLINE_FUNCTION @@ -226,12 +228,16 @@ class CrsRowMapFromCounts { } using self_type = CrsRowMapFromCounts; CrsRowMapFromCounts(InCounts const& arg_in, OutRowMap const& arg_out): - in(arg_in),out(arg_out) { + m_in(arg_in), m_out(arg_out), m_last_value("last_value") { + } + value_type execute() { using policy_type = RangePolicy; using closure_type = Kokkos::Impl::ParallelScan; - closure_type closure(*this, policy_type(0, in.size())); + closure_type closure(*this, policy_type(0, m_in.size() + 1)); closure.execute(); - execution_space::fence(); + auto last_value = Kokkos::create_mirror_view(m_last_value); + Kokkos::deep_copy(last_value, m_last_value); + return last_value(); } }; @@ -297,13 +303,14 @@ void get_crs_transpose_counts( template< class OutRowMap, class InCounts> -void get_crs_row_map_from_counts( +typename OutRowMap::value_type get_crs_row_map_from_counts( OutRowMap& out, InCounts const& in, std::string const& name) { out = OutRowMap(ViewAllocateWithoutInitializing(name), in.size() + 1); Kokkos::Impl::Experimental:: CrsRowMapFromCounts functor(in, out); + return functor.execute(); } template< class DataType, @@ -328,6 +335,65 @@ void transpose_crs( FillCrsTransposeEntries entries_functor(in, out); } +template< class CrsType, + class Functor> +struct CountAndFill { + using data_type = typename CrsType::size_type; + using size_type = typename CrsType::size_type; + using row_map_type = typename CrsType::row_map_type; + using entries_type = typename CrsType::entries_type; + using counts_type = row_map_type; + CrsType m_crs; + Functor m_functor; + counts_type m_counts; + struct Count {}; + KOKKOS_INLINE_FUNCTION void operator()(Count, size_type i) const { + m_counts(i) = m_functor(i, nullptr); + } + struct Fill {}; + KOKKOS_INLINE_FUNCTION void operator()(Fill, size_type i) const { + auto j = m_crs.row_map(i); + data_type* fill = &(m_crs.entries(j)); + m_functor(i, fill); + } + using self_type = CountAndFill; + CountAndFill(CrsType& crs, size_type nrows, Functor const& f): + m_crs(crs), + m_functor(f) + { + using execution_space = typename CrsType::execution_space; + m_counts = counts_type("counts", nrows); + { + using count_policy_type = RangePolicy; + using count_closure_type = + Kokkos::Impl::ParallelFor; + const count_closure_type closure(*this, count_policy_type(0, nrows)); + closure.execute(); + } + auto nentries = Kokkos::Experimental:: + get_crs_row_map_from_counts(m_crs.row_map, m_counts); + m_counts = counts_type(); + m_crs.entries = entries_type("entries", nentries); + { + using fill_policy_type = RangePolicy; + using fill_closure_type = + Kokkos::Impl::ParallelFor; + const fill_closure_type closure(*this, fill_policy_type(0, nrows)); + closure.execute(); + } + crs = m_crs; + } +}; + +template< class CrsType, + class Functor> +void count_and_fill_crs( + CrsType& crs, + typename CrsType::size_type nrows, + Functor const& f) { + Kokkos::Experimental::CountAndFill(crs, nrows, f); +} + }} // namespace Kokkos::Experimental #endif /* #define KOKKOS_CRS_HPP */ diff --git a/lib/kokkos/core/src/Kokkos_Macros.hpp b/lib/kokkos/core/src/Kokkos_Macros.hpp index 250ef6630a..7137eaae4b 100644 --- a/lib/kokkos/core/src/Kokkos_Macros.hpp +++ b/lib/kokkos/core/src/Kokkos_Macros.hpp @@ -96,6 +96,14 @@ //---------------------------------------------------------------------------- +#if defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_THREADS) || \ + defined(KOKKOS_ENABLE_OPENMP) || defined(KOKKOS_ENABLE_QTHREADS) || \ + defined(KOKKOS_ENABLE_ROCM) || defined(KOKKOS_ENABLE_OPENMPTARGET) + #define KOKKOS_INTERNAL_ENABLE_NON_CUDA_BACKEND +#endif + +#define KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA + #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) // Compiling with a CUDA compiler. // @@ -133,6 +141,9 @@ #if ( CUDA_VERSION < 8000 ) && defined( __NVCC__ ) #define KOKKOS_LAMBDA [=]__device__ + #if defined( KOKKOS_INTERNAL_ENABLE_NON_CUDA_BACKEND ) + #undef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA + #endif #else #define KOKKOS_LAMBDA [=]__host__ __device__ @@ -141,16 +152,13 @@ #endif #endif - #define KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA 1 - #endif -#endif // #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) - -#if defined( KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA ) - // Cuda version 8.0 still needs the functor wrapper - #if /* ( CUDA_VERSION < 8000 ) && */ defined( __NVCC__ ) + #if defined( __NVCC__ ) #define KOKKOS_IMPL_NEED_FUNCTOR_WRAPPER - #endif -#endif + #endif + #else // !defined(KOKKOS_ENABLE_CUDA_LAMBDA) + #undef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA + #endif // !defined(KOKKOS_ENABLE_CUDA_LAMBDA) +#endif // #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) //---------------------------------------------------------------------------- // Language info: C++, CUDA, OPENMP @@ -161,8 +169,20 @@ #define KOKKOS_FORCEINLINE_FUNCTION __device__ __host__ __forceinline__ #define KOKKOS_INLINE_FUNCTION __device__ __host__ inline #define KOKKOS_FUNCTION __device__ __host__ + #ifdef KOKKOS_COMPILER_CLANG + #define KOKKOS_FUNCTION_DEFAULTED KOKKOS_FUNCTION + #endif #endif // #if defined( __CUDA_ARCH__ ) +#if defined( KOKKOS_ENABLE_ROCM ) && defined( __HCC__ ) + + #define KOKKOS_FORCEINLINE_FUNCTION __attribute__((amp,cpu)) inline + #define KOKKOS_INLINE_FUNCTION __attribute__((amp,cpu)) inline + #define KOKKOS_FUNCTION __attribute__((amp,cpu)) + #define KOKKOS_LAMBDA [=] __attribute__((amp,cpu)) + #define KOKKOS_FUNCTION_DEFAULTED KOKKOS_FUNCTION +#endif + #if defined( _OPENMP ) // Compiling with OpenMP. // The value of _OPENMP is an integer value YYYYMM @@ -179,15 +199,6 @@ // Host code is compiled again with another compiler. // Device code is compile to 'ptx'. #define KOKKOS_COMPILER_NVCC __NVCC__ -#else - #if !defined( KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA ) - #if !defined( KOKKOS_ENABLE_CUDA ) // Compiling with clang for Cuda does not work with LAMBDAs either - // CUDA (including version 6.5) does not support giving lambdas as - // arguments to global functions. Thus its not currently possible - // to dispatch lambdas from the host. - #define KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA 1 - #endif - #endif #endif // #if defined( __NVCC__ ) #if !defined( KOKKOS_LAMBDA ) @@ -321,6 +332,10 @@ //#define KOKKOS_ENABLE_PRAGMA_LOOPCOUNT 1 //#define KOKKOS_ENABLE_PRAGMA_VECTOR 1 //#define KOKKOS_ENABLE_PRAGMA_SIMD 1 + + #if ! defined( KOKKOS_ENABLE_ASM ) + #define KOKKOS_ENABLE_ASM 1 + #endif #endif //---------------------------------------------------------------------------- @@ -397,6 +412,10 @@ #define KOKKOS_FUNCTION /**/ #endif +#if !defined( KOKKOS_FUNCTION_DEFAULTED ) + #define KOKKOS_FUNCTION_DEFAULTED /**/ +#endif + //---------------------------------------------------------------------------- // Define empty macro for restrict if necessary: @@ -424,6 +443,7 @@ // There is zero or one default execution space specified. #if 1 < ( ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA ) ? 1 : 0 ) + \ + ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM ) ? 1 : 0 ) + \ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET ) ? 1 : 0 ) + \ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP ) ? 1 : 0 ) + \ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS ) ? 1 : 0 ) + \ @@ -435,6 +455,7 @@ // If default is not specified then chose from enabled execution spaces. // Priority: CUDA, OPENMP, THREADS, QTHREADS, SERIAL #if defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA ) +#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS ) @@ -442,6 +463,8 @@ #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL ) #elif defined( KOKKOS_ENABLE_CUDA ) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA +#elif defined( KOKKOS_ENABLE_ROCM ) + #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM #elif defined( KOKKOS_ENABLE_OPENMPTARGET ) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET #elif defined( KOKKOS_ENABLE_OPENMP ) @@ -459,6 +482,8 @@ #if defined( __CUDACC__ ) && defined( __CUDA_ARCH__ ) && defined( KOKKOS_ENABLE_CUDA ) #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA +#elif defined( __HCC__ ) && defined( __HCC_ACCELERATOR__ ) && defined( KOKKOS_ENABLE_ROCM ) + #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU #else #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST #endif diff --git a/lib/kokkos/core/src/Kokkos_MemoryPool.hpp b/lib/kokkos/core/src/Kokkos_MemoryPool.hpp index 1da936067d..4ba5812f9e 100644 --- a/lib/kokkos/core/src/Kokkos_MemoryPool.hpp +++ b/lib/kokkos/core/src/Kokkos_MemoryPool.hpp @@ -233,12 +233,24 @@ public: //-------------------------------------------------------------------------- - MemoryPool() = default ; MemoryPool( MemoryPool && ) = default ; MemoryPool( const MemoryPool & ) = default ; MemoryPool & operator = ( MemoryPool && ) = default ; MemoryPool & operator = ( const MemoryPool & ) = default ; + MemoryPool() + : m_tracker() + , m_sb_state_array(0) + , m_sb_state_size(0) + , m_sb_size_lg2(0) + , m_max_block_size_lg2(0) + , m_min_block_size_lg2(0) + , m_sb_count(0) + , m_hint_offset(0) + , m_data_offset(0) + , m_unused_padding(0) + {} + /**\brief Allocate a memory pool from 'memspace'. * * The memory pool will have at least 'min_total_alloc_size' bytes diff --git a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp index 9df6d4ba09..c392fc5b9a 100644 --- a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp +++ b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp @@ -1016,7 +1016,7 @@ parallel_reduce( std::string const & arg_label //------------------------------ - #if (KOKKOS_ENABLE_PROFILING) + #if defined(KOKKOS_ENABLE_PROFILING) uint64_t kpID = 0; if(Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginParallelReduce(arg_label, 0, &kpID); @@ -1042,7 +1042,7 @@ parallel_reduce( std::string const & arg_label //------------------------------ - #if (KOKKOS_ENABLE_PROFILING) + #if defined(KOKKOS_ENABLE_PROFILING) if(Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endParallelReduce(kpID); } diff --git a/lib/kokkos/core/src/Kokkos_ROCm.hpp b/lib/kokkos/core/src/Kokkos_ROCm.hpp new file mode 100644 index 0000000000..b13b0b01de --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_ROCm.hpp @@ -0,0 +1,220 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_ROCM_HPP +#define KOKKOS_ROCM_HPP + +#include + +#if defined( KOKKOS_ENABLE_ROCM ) +#include +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*--------------------------------------------------------------------------*/ + +#include +#include +#include + +#if defined( __HCC_ACCELERATOR__ ) + +using namespace ::Concurrency::precise_math ; + +#endif + +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { +class ROCmExec ; +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { +/// \class ROCm +/// \brief Kokkos device for multicore processors in the host memory space. +class ROCm { +public: + //------------------------------------ + //! \name Type declarations that all Kokkos devices must provide. + //@{ + + //! Tag this class as a kokkos execution space + typedef ROCm execution_space ; + typedef ROCmSpace memory_space ; + typedef Kokkos::Device device_type; + + typedef LayoutLeft array_layout ; + typedef HostSpace::size_type size_type ; + + typedef ScratchMemorySpace< ROCm > scratch_memory_space ; + + ~ROCm() {} + ROCm(); +// explicit ROCm( const int instance_id ); + + ROCm( ROCm && ) = default ; + ROCm( const ROCm & ) = default ; + ROCm & operator = ( ROCm && ) = default ; + ROCm & operator = ( const ROCm & ) = default ; + + + //@} + //------------------------------------ + //! \name Functions that all Kokkos devices must implement. + //@{ + + KOKKOS_INLINE_FUNCTION static int in_parallel() { +#if defined( __HCC_ACCELERATOR__ ) + return true; +#else + return false; +#endif + } + + /** \brief Set the device in a "sleep" state. */ + static bool sleep() ; + + /** \brief Wake the device from the 'sleep' state. A noop for OpenMP. */ + static bool wake() ; + + /** \brief Wait until all dispatched functors complete. A noop for OpenMP. */ + static void fence() ; + + /// \brief Print configuration information to the given output stream. + static void print_configuration( std::ostream & , const bool detail = false ); + + /// \brief Free any resources being consumed by the device. + static void finalize() ; + + /** \brief Initialize the device. + * + */ + struct SelectDevice { + int rocm_device_id ; + SelectDevice() : rocm_device_id(1) {} + explicit SelectDevice( int id ) : rocm_device_id( id+1 ) {} + }; + + int rocm_device() const { return m_device ; } + bool isAPU(); + bool isAPU(int device); + + static void initialize( const SelectDevice = SelectDevice()); + + static int is_initialized(); + +// static size_type device_arch(); + +// static size_type detect_device_count(); + + + static int concurrency() ; + static const char* name(); +private: + int m_device ; + +}; +} +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { + +template<> +struct MemorySpaceAccess + < Kokkos::Experimental::ROCmSpace + , Kokkos::Experimental::ROCm::scratch_memory_space + > +{ + enum { assignable = false }; + enum { accessible = true }; + enum { deepcopy = false }; +}; + +template<> +struct VerifyExecutionCanAccessMemorySpace + < Kokkos::Experimental::ROCm::memory_space + , Kokkos::Experimental::ROCm::scratch_memory_space + > +{ + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify( void ) { } + KOKKOS_INLINE_FUNCTION static void verify( const void * ) { } +}; + +template<> +struct VerifyExecutionCanAccessMemorySpace + < Kokkos::HostSpace + , Kokkos::Experimental::ROCm::scratch_memory_space + > +{ + enum { value = false }; + inline static void verify( void ) { Experimental::ROCmSpace::access_error(); } + inline static void verify( const void * p ) { Experimental::ROCmSpace::access_error(p); } +}; +} // namespace Experimental +} // namespace Kokkos + + +#include +#include + +#endif +#endif + + diff --git a/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp b/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp new file mode 100644 index 0000000000..dce6a3cb3f --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp @@ -0,0 +1,622 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_ROCMSPACE_HPP +#define KOKKOS_ROCMSPACE_HPP + +#include + +#if defined( KOKKOS_ENABLE_ROCM ) + +#include +#include +#include + +#include + + +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { +/** \brief ROCm on-device memory management */ + +class ROCmSpace { +public: + + //! Tag this class as a kokkos memory space + typedef ROCmSpace memory_space ; + typedef Kokkos::Experimental::ROCm execution_space ; + typedef Kokkos::Device device_type; + + typedef unsigned int size_type ; + + /*--------------------------------*/ + + ROCmSpace(); + ROCmSpace( ROCmSpace && rhs ) = default ; + ROCmSpace( const ROCmSpace & rhs ) = default ; + ROCmSpace & operator = ( ROCmSpace && rhs ) = default ; + ROCmSpace & operator = ( const ROCmSpace & rhs ) = default ; + ~ROCmSpace() = default ; + + /**\brief Allocate untracked memory in the rocm space */ + void * allocate( const size_t arg_alloc_size ) const ; + + /**\brief Deallocate untracked memory in the rocm space */ + void deallocate( void * const arg_alloc_ptr + , const size_t arg_alloc_size ) const ; + + /**\brief Return Name of the MemorySpace */ + static constexpr const char* name() { return m_name; }; + + /*--------------------------------*/ + /** \brief Error reporting for HostSpace attempt to access ROCmSpace */ + static void access_error(); + static void access_error( const void * const ); + +private: + + int m_device ; ///< Which ROCm device + + static constexpr const char* m_name = "ROCm"; + friend class Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > ; +}; + +} // namespace Experimental + +namespace Impl { + +void * rocm_device_allocate(int); +void * rocm_hostpinned_allocate(int); +void rocm_device_free(void * ); + +/// \brief Initialize lock array for arbitrary size atomics. +/// +/// Arbitrary atomics are implemented using a hash table of locks +/// where the hash value is derived from the address of the +/// object for which an atomic operation is performed. +/// This function initializes the locks to zero (unset). +void init_lock_arrays_rocm_space(); + +/// \brief Retrieve the pointer to the lock array for arbitrary size atomics. +/// +/// Arbitrary atomics are implemented using a hash table of locks +/// where the hash value is derived from the address of the +/// object for which an atomic operation is performed. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* atomic_lock_array_rocm_space_ptr(bool deallocate = false); + +/// \brief Retrieve the pointer to the scratch array for team and thread private global memory. +/// +/// Team and Thread private scratch allocations in +/// global memory are aquired via locks. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* scratch_lock_array_rocm_space_ptr(bool deallocate = false); + +/// \brief Retrieve the pointer to the scratch array for unique identifiers. +/// +/// Unique identifiers in the range 0-ROCm::concurrency +/// are provided via locks. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* threadid_lock_array_rocm_space_ptr(bool deallocate = false); +} +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + + +namespace Kokkos { +namespace Experimental { +/** \brief Host memory that is accessible to ROCm execution space + * through ROCm's host-pinned memory allocation. + */ +class ROCmHostPinnedSpace { +public: + + //! Tag this class as a kokkos memory space + /** \brief Memory is in HostSpace so use the HostSpace::execution_space */ + typedef HostSpace::execution_space execution_space ; + typedef ROCmHostPinnedSpace memory_space ; + typedef Kokkos::Device device_type; + typedef unsigned int size_type ; + + /*--------------------------------*/ + + ROCmHostPinnedSpace(); + ROCmHostPinnedSpace( ROCmHostPinnedSpace && rhs ) = default ; + ROCmHostPinnedSpace( const ROCmHostPinnedSpace & rhs ) = default ; + ROCmHostPinnedSpace & operator = ( ROCmHostPinnedSpace && rhs ) = default ; + ROCmHostPinnedSpace & operator = ( const ROCmHostPinnedSpace & rhs ) = default ; + ~ROCmHostPinnedSpace() = default ; + + /**\brief Allocate untracked memory in the space */ + void * allocate( const size_t arg_alloc_size ) const ; + + /**\brief Deallocate untracked memory in the space */ + void deallocate( void * const arg_alloc_ptr + , const size_t arg_alloc_size ) const ; + + /**\brief Return Name of the MemorySpace */ + static constexpr const char* name() { return m_name; }; + +private: + + static constexpr const char* m_name = "ROCmHostPinned"; + + /*--------------------------------*/ +}; +} // namespace Experimental +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { + +static_assert( Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmSpace >::assignable , "" ); + +//---------------------------------------- + +template<> +struct MemorySpaceAccess< Kokkos::HostSpace , Kokkos::Experimental::ROCmSpace > { + enum { assignable = false }; + enum { accessible = false }; + enum { deepcopy = true }; +}; + +template<> +struct MemorySpaceAccess< Kokkos::HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace > { + // HostSpace::execution_space == ROCmHostPinnedSpace::execution_space + enum { assignable = true }; + enum { accessible = true }; + enum { deepcopy = true }; +}; + +//---------------------------------------- + +template<> +struct MemorySpaceAccess< Kokkos::Experimental::ROCmSpace , Kokkos::HostSpace > { + enum { assignable = false }; + enum { accessible = false }; + enum { deepcopy = true }; +}; + +template<> +struct MemorySpaceAccess< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmHostPinnedSpace > { + // ROCmSpace::execution_space != ROCmHostPinnedSpace::execution_space + enum { assignable = false }; + enum { accessible = true }; // ROCmSpace::execution_space + enum { deepcopy = true }; +}; + + +//---------------------------------------- +// ROCmHostPinnedSpace::execution_space == HostSpace::execution_space +// ROCmHostPinnedSpace accessible to both ROCm and Host + +template<> +struct MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::HostSpace > { + enum { assignable = false }; // Cannot access from ROCm + enum { accessible = true }; // ROCmHostPinnedSpace::execution_space + enum { deepcopy = true }; +}; + +template<> +struct MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmSpace > { + enum { assignable = false }; // Cannot access from Host + enum { accessible = false }; + enum { deepcopy = true }; +}; + +}; +//---------------------------------------- + +} // namespace Kokkos::Impl + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { + +hc::completion_future DeepCopyAsyncROCm( void * dst , const void * src , size_t n); + +template<> struct DeepCopy< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm> +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template<> struct DeepCopy< Kokkos::Experimental::ROCmSpace , HostSpace , Kokkos::Experimental::ROCm > +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template<> struct DeepCopy< HostSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm > +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template struct DeepCopy< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + hc::completion_future fut = DeepCopyAsyncROCm (dst,src,n); + fut.wait(); +// DeepCopy (dst,src,n); + } +}; + +template struct DeepCopy< Kokkos::Experimental::ROCmSpace , HostSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmSpace , HostSpace , Kokkos::Experimental::ROCm>( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + DeepCopy (dst,src,n); + } +}; + +template +struct DeepCopy< HostSpace , Kokkos::Experimental::ROCmSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< HostSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + DeepCopy (dst,src,n); + } +}; + +template<> struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCm> +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template<> struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , HostSpace , Kokkos::Experimental::ROCm > +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template<> struct DeepCopy< HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCm > +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template +struct DeepCopy< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmHostPinnedSpace , ExecutionSpace> +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmSpace , HostSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + hc::completion_future fut = DeepCopyAsyncROCm (dst,src,n); + fut.wait(); +// DeepCopyROCm (dst,src,n); + } +}; + +template struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< HostSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + hc::completion_future fut = DeepCopyAsyncROCm (dst,src,n); + fut.wait(); +// DeepCopyROCm (dst,src,n); + } +}; + + + +template struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmHostPinnedSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); +// hc::completion_future fut = DeepCopyAsyncROCm (dst,src,n); +// fut.wait(); +// DeepCopyAsyncROCm (dst,src,n); + DeepCopy (dst,src,n); + } +}; + +template struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , HostSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , HostSpace , Kokkos::Experimental::ROCm>( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + DeepCopy (dst,src,n); + } +}; + +template +struct DeepCopy< HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + DeepCopy (dst,src,n); + } +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +/** Running in ROCmSpace attempting to access HostSpace: error */ +template<> +struct VerifyExecutionCanAccessMemorySpace< Kokkos::Experimental::ROCmSpace , Kokkos::HostSpace > +{ + enum { value = false }; + KOKKOS_INLINE_FUNCTION static void verify( void ) + { Kokkos::abort("ROCm code attempted to access HostSpace memory"); } + + KOKKOS_INLINE_FUNCTION static void verify( const void * ) + { Kokkos::abort("ROCm code attempted to access HostSpace memory"); } +}; + +/** Running in ROCmSpace accessing ROCmHostPinnedSpace: ok */ +template<> +struct VerifyExecutionCanAccessMemorySpace< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmHostPinnedSpace > +{ + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify( void ) { } + KOKKOS_INLINE_FUNCTION static void verify( const void * ) { } +}; + +/** Running in ROCmSpace attempting to access an unknown space: error */ +template< class OtherSpace > +struct VerifyExecutionCanAccessMemorySpace< + typename enable_if< ! is_same::value , Kokkos::Experimental::ROCmSpace >::type , + OtherSpace > +{ + enum { value = false }; + KOKKOS_INLINE_FUNCTION static void verify( void ) + { Kokkos::abort("ROCm code attempted to access unknown Space memory"); } + + KOKKOS_INLINE_FUNCTION static void verify( const void * ) + { Kokkos::abort("ROCm code attempted to access unknown Space memory"); } +}; + +//---------------------------------------------------------------------------- +/** Running in HostSpace attempting to access ROCmSpace */ +template<> +struct VerifyExecutionCanAccessMemorySpace< Kokkos::HostSpace , Kokkos::Experimental::ROCmSpace > +{ + enum { value = false }; + inline static void verify( void ) { Kokkos::Experimental::ROCmSpace::access_error(); } + inline static void verify( const void * p ) { Kokkos::Experimental::ROCmSpace::access_error(p); } +}; + +/** Running in HostSpace accessing ROCmHostPinnedSpace is OK */ +template<> +struct VerifyExecutionCanAccessMemorySpace< Kokkos::HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace > +{ + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify( void ) {} + KOKKOS_INLINE_FUNCTION static void verify( const void * ) {} +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template<> +class SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > + : public SharedAllocationRecord< void , void > +{ +private: + + + typedef SharedAllocationRecord< void , void > RecordBase ; + + SharedAllocationRecord( const SharedAllocationRecord & ) = delete ; + SharedAllocationRecord & operator = ( const SharedAllocationRecord & ) = delete ; + + static void deallocate( RecordBase * ); + + static RecordBase s_root_record ; + + const Kokkos::Experimental::ROCmSpace m_space ; + +protected: + + ~SharedAllocationRecord(); + + SharedAllocationRecord( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + , const RecordBase::function_type arg_dealloc = & deallocate + ); + +public: + + std::string get_label() const ; + + static SharedAllocationRecord * allocate( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size ); + + /**\brief Allocate tracked memory in the space */ + static + void * allocate_tracked( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size ); + + /**\brief Reallocate tracked memory in the space */ + static + void * reallocate_tracked( void * const arg_alloc_ptr + , const size_t arg_alloc_size ); + + /**\brief Deallocate tracked memory in the space */ + static + void deallocate_tracked( void * const arg_alloc_ptr ); + + static SharedAllocationRecord * get_record( void * arg_alloc_ptr ); + + static void print_records( std::ostream & , const Kokkos::Experimental::ROCmSpace & , bool detail = false ); +}; + +template<> +class SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void > + : public SharedAllocationRecord< void , void > +{ +private: + + typedef SharedAllocationRecord< void , void > RecordBase ; + + SharedAllocationRecord( const SharedAllocationRecord & ) = delete ; + SharedAllocationRecord & operator = ( const SharedAllocationRecord & ) = delete ; + + static void deallocate( RecordBase * ); + + static RecordBase s_root_record ; + + const Kokkos::Experimental::ROCmHostPinnedSpace m_space ; + +protected: + + ~SharedAllocationRecord(); + SharedAllocationRecord() : RecordBase(), m_space() {} + + SharedAllocationRecord( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + , const RecordBase::function_type arg_dealloc = & deallocate + ); + +public: + + std::string get_label() const ; + + static SharedAllocationRecord * allocate( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + ); + /**\brief Allocate tracked memory in the space */ + static + void * allocate_tracked( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size ); + + /**\brief Reallocate tracked memory in the space */ + static + void * reallocate_tracked( void * const arg_alloc_ptr + , const size_t arg_alloc_size ); + + /**\brief Deallocate tracked memory in the space */ + static + void deallocate_tracked( void * const arg_alloc_ptr ); + + + static SharedAllocationRecord * get_record( void * arg_alloc_ptr ); + + static void print_records( std::ostream & , const Kokkos::Experimental::ROCmHostPinnedSpace & , bool detail = false ); +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_ROCM ) */ +#endif /* #define KOKKOS_ROCMSPACE_HPP */ + diff --git a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp index fcfc91a4ee..079f80f556 100644 --- a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp +++ b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp @@ -681,6 +681,67 @@ public: return f ; } + template < class F > + KOKKOS_FUNCTION + Future< execution_space > + when_all( int narg , F const func ) + { + using input_type = decltype( func(0) ); + using future_type = Future< execution_space > ; + using task_base = Kokkos::Impl::TaskBase< void , void , void > ; + + static_assert( is_future< input_type >::value + , "Functor must return a Kokkos::Future" ); + + future_type f ; + + if ( 0 == narg ) return f ; + + size_t const alloc_size = m_queue->when_all_allocation_size( narg ); + + f.m_task = + reinterpret_cast< task_base * >( m_queue->allocate( alloc_size ) ); + + if ( f.m_task ) { + + // Reference count starts at two: + // +1 to match decrement when task completes + // +1 for the future + + new( f.m_task ) task_base(); + + f.m_task->m_queue = m_queue ; + f.m_task->m_ref_count = 2 ; + f.m_task->m_alloc_size = alloc_size ; + f.m_task->m_dep_count = narg ; + f.m_task->m_task_type = task_base::Aggregate ; + + // Assign dependences, reference counts were already incremented + + task_base * volatile * const dep = + f.m_task->aggregate_dependences(); + + for ( int i = 0 ; i < narg ; ++i ) { + const input_type arg_f = func(i); + if ( 0 != arg_f.m_task ) { + + if ( m_queue != static_cast< queue_type * >( arg_f.m_task->m_queue ) ) { + Kokkos::abort("Kokkos when_all Futures must be in the same scheduler" ); + } + // Increment reference count to track subsequent assignment. + Kokkos::atomic_increment( &(arg_f.m_task->m_ref_count) ); + dep[i] = arg_f.m_task ; + } + } + + Kokkos::memory_fence(); + + m_queue->schedule_aggregate( f.m_task ); + // this when_all may be processed at any moment + } + return f ; + } + //---------------------------------------- KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/Kokkos_View.hpp b/lib/kokkos/core/src/Kokkos_View.hpp index 1754e4a8fb..47b105cfdc 100644 --- a/lib/kokkos/core/src/Kokkos_View.hpp +++ b/lib/kokkos/core/src/Kokkos_View.hpp @@ -2429,6 +2429,7 @@ template < class ValueType > struct CommonViewAllocProp< void, ValueType > { using value_type = ValueType; + using scalar_array_type = ValueType; template < class ... Views > CommonViewAllocProp( const Views & ... ) {} diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Atomic.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Atomic.hpp new file mode 100644 index 0000000000..a93f488203 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Atomic.hpp @@ -0,0 +1,439 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +//#include + +#ifdef KOKKOS_ENABLE_ROCM_ATOMICS +namespace Kokkos { + //ROCm can do: + //Types int/unsigned int + //variants: atomic_exchange/compare_exchange/fetch_add/fetch_sub/fetch_max/fetch_min/fetch_and/fetch_or/fetch_xor/fetch_inc/fetch_dec + + + KOKKOS_INLINE_FUNCTION + int atomic_exchange(int* dest, const int& val) { + return hc::atomic_exchange_int(dest, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned int atomic_exchange(unsigned int* dest, const unsigned int& val) { + return hc::atomic_exchange_unsigned(dest, val); + } + + KOKKOS_INLINE_FUNCTION + int64_t atomic_exchange(int64_t* dest, const int64_t& val) { + return (int64_t)hc::atomic_exchange_uint64((uint64_t*)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + uint64_t atomic_exchange(uint64_t* dest, const uint64_t& val) { + return hc::atomic_exchange_uint64(dest, val); + } + + KOKKOS_INLINE_FUNCTION + long long atomic_exchange(long long* dest, const long long& val) { + return (long long)hc::atomic_exchange_uint64((uint64_t*)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + unsigned long long atomic_exchange(unsigned long long* dest, const unsigned long long& val) { + return (unsigned long long)hc::atomic_exchange_uint64((uint64_t*)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + float atomic_exchange(float* dest, const float& val) { + union U { + int i ; + float f ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,ival; + idest.f = *dest; + ival.f = val; + idest.i = hc::atomic_exchange_int((int*)dest, ival.i); + return idest.f; + } + + KOKKOS_INLINE_FUNCTION + double atomic_exchange(double* dest, const double& val) { + union U { + uint64_t i ; + double d ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,ival; + idest.d = *dest; + ival.d = val; + idest.i = hc::atomic_exchange_uint64((uint64_t*)dest, ival.i); + return idest.d; + } + + KOKKOS_INLINE_FUNCTION + int atomic_compare_exchange(int* dest, int compare, const int& val); + + KOKKOS_INLINE_FUNCTION + int64_t atomic_compare_exchange(int64_t* dest, int64_t compare, const int64_t& val); + + template + KOKKOS_INLINE_FUNCTION + T atomic_exchange(T* dest, typename std::enable_if::type val) { + union U { + int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + assume.i = oldval.i ; + newval.t = val ; + atomic_compare_exchange( reinterpret_cast(dest) , assume.i, newval.i ); + + return oldval.t ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_exchange(T* dest, typename std::enable_if::type val) { + union U { + uint64_t i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + assume.i = oldval.i ; + newval.t = val ; + atomic_compare_exchange( (int64_t*)(dest) , assume.i, newval.i ); + + return oldval.t ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_exchange(T* dest, typename std::enable_if::type val) { + return val; + } + + KOKKOS_INLINE_FUNCTION + int atomic_compare_exchange(int* dest, int compare, const int& val) { + return hc::atomic_compare_exchange_int(dest, compare, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned int atomic_compare_exchange(unsigned int* dest, unsigned int compare, const unsigned int& val) { + return hc::atomic_compare_exchange_unsigned(dest, compare, val); + } + + KOKKOS_INLINE_FUNCTION + int64_t atomic_compare_exchange(int64_t* dest, int64_t compare, const int64_t& val) { + return (int64_t) hc::atomic_compare_exchange_uint64((uint64_t*)dest, (uint64_t)compare, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + uint64_t atomic_compare_exchange(uint64_t* dest, uint64_t compare, const uint64_t& val) { + return hc::atomic_compare_exchange_uint64(dest, compare, val); + } + + KOKKOS_INLINE_FUNCTION + long long atomic_compare_exchange(long long* dest, long long compare, const long long& val) { + return (long long)hc::atomic_compare_exchange_uint64((uint64_t*)(dest), (uint64_t)(compare), (const uint64_t&)(val)); + } + + KOKKOS_INLINE_FUNCTION + float atomic_compare_exchange(float* dest, float compare, const float& val) { + union U { + int i ; + float f ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,icompare,ival; + idest.f = *dest; + icompare.f = compare; + ival.f = val; + idest.i = hc::atomic_compare_exchange_int(reinterpret_cast(dest), icompare.i, ival.i); + return idest.f; + } + + KOKKOS_INLINE_FUNCTION + double atomic_compare_exchange(double* dest, double compare, const double& val) { + union U { + uint64_t i ; + double d ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,icompare,ival; + idest.d = *dest; + icompare.d = compare; + ival.d = val; + idest.i = hc::atomic_compare_exchange_uint64(reinterpret_cast(dest), icompare.i, ival.i); + return idest.d; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_compare_exchange(volatile T* dest, T compare, typename std::enable_if::type val) { + union U { + int i ; + T f ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,icompare,ival; + idest.f = *dest; + icompare.f = compare; + ival.f = val; + idest.i = hc::atomic_compare_exchange_int((int*)(dest), icompare.i, ival.i); + return idest.f; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_compare_exchange(volatile T* dest, T compare, typename std::enable_if::type val) { + union U { + uint64_t i ; + T f ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,icompare,ival; + idest.f = *dest; + icompare.f = compare; + ival.f = val; + idest.i = hc::atomic_compare_exchange_uint64((uint64_t*)(dest), icompare.i, ival.i); + return idest.f; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_compare_exchange(volatile T* dest, T compare, typename std::enable_if<(sizeof(T) != sizeof(int32_t)) && (sizeof(T) != sizeof(int64_t)), const T&>::type val) { + return val; + } + + KOKKOS_INLINE_FUNCTION + int atomic_fetch_add (volatile int * dest, const int& val) { + return hc::atomic_fetch_add((int *)dest, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned int atomic_fetch_add(unsigned int* dest, const unsigned int& val) { + return hc::atomic_fetch_add(dest, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned long atomic_fetch_add(volatile unsigned long* dest, const unsigned long& val) { + return (unsigned long)hc::atomic_fetch_add((uint64_t *)dest, (const uint64_t)val); + } + + KOKKOS_INLINE_FUNCTION + int64_t atomic_fetch_add(volatile int64_t* dest, const int64_t& val) { + return (int64_t)hc::atomic_fetch_add((uint64_t *)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + char atomic_fetch_add(volatile char * dest, const char& val) { + unsigned int oldval,newval,assume; + oldval = *(int *)dest ; + + do { + assume = oldval ; + newval = assume&0x7fffff00 + ((assume&0xff)+val)&0xff ; + oldval = hc::atomic_compare_exchange_unsigned((unsigned int*)dest, assume,newval); + } while ( assume != oldval ); + + return oldval ; + } + + + KOKKOS_INLINE_FUNCTION + short atomic_fetch_add(volatile short * dest, const short& val) { + unsigned int oldval,newval,assume; + oldval = *(int *)dest ; + + do { + assume = oldval ; + newval = assume&0x7fff0000 + ((assume&0xffff)+val)&0xffff ; + oldval = hc::atomic_compare_exchange_unsigned((unsigned int*)dest, assume,newval); + } while ( assume != oldval ); + + return oldval ; + } + + KOKKOS_INLINE_FUNCTION + long long atomic_fetch_add(volatile long long * dest, const long long& val) { + return (long long)hc::atomic_fetch_add((uint64_t*)dest, (const uint64_t&)val); + } + + + + KOKKOS_INLINE_FUNCTION + int atomic_fetch_sub (volatile int * dest, const int& val) { + return hc::atomic_fetch_sub((int *)dest, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned int atomic_fetch_sub(volatile unsigned int* dest, const unsigned int& val) { + return hc::atomic_fetch_sub((unsigned int *)dest, val); + } + + KOKKOS_INLINE_FUNCTION + int64_t atomic_fetch_sub(int64_t* dest, const int64_t& val) { + return (int64_t)hc::atomic_fetch_add((uint64_t *)dest, -(const uint64_t&)val); +// return (int64_t)hc::atomic_fetch_sub_uint64((uint64_t*)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + char atomic_fetch_sub(volatile char * dest, const char& val) { + unsigned int oldval,newval,assume; + oldval = *(int *)dest ; + + do { + assume = oldval ; + newval = assume&0x7fffff00 + ((assume&0xff)-val)&0xff ; + oldval = hc::atomic_compare_exchange_unsigned((unsigned int*)dest, assume,newval); + } while ( assume != oldval ); + + return oldval ; + } + + KOKKOS_INLINE_FUNCTION + short atomic_fetch_sub(volatile short * dest, const short& val) { + unsigned int oldval,newval,assume; + oldval = *(int *)dest ; + + do { + assume = oldval ; + newval = assume&0x7fff0000 + ((assume&0xffff)-val)&0xffff; + oldval = hc::atomic_compare_exchange_unsigned((unsigned int*)dest, assume,newval); + } while ( assume != oldval ); + + return oldval ; + } + + KOKKOS_INLINE_FUNCTION + long long atomic_fetch_sub(volatile long long * dest, const long long& val) { + return (long long)hc::atomic_fetch_add((uint64_t*)dest, -(const uint64_t&)val); + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_add(volatile T* dest, typename std::enable_if::type val) { + union U { + unsigned int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + do { + assume.i = oldval.i ; + newval.t = assume.t + val ; + oldval.i = atomic_compare_exchange( (unsigned int*)(dest) , assume.i , newval.i ); + } while ( assume.i != oldval.i ); + + return oldval.t ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_add(volatile T* dest, typename std::enable_if::type val) { + union U { + uint64_t i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + do { + assume.i = oldval.i ; + newval.t = assume.t + val ; + oldval.i = atomic_compare_exchange( (uint64_t*)dest , assume.i , newval.i ); + } while ( assume.i != oldval.i ); + + return oldval.t ; + } + + + //WORKAROUND + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_add(volatile T* dest, typename std::enable_if::type val) { + return val ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_sub(volatile T* dest, typename std::enable_if::type & val) { + union U { + int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + do { + assume.i = oldval.i ; + newval.t = assume.t - val ; + oldval.i = Kokkos::atomic_compare_exchange( (int*)dest , assume.i , newval.i ); + } while ( assume.i != oldval.i ); + + return oldval.t ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_sub(volatile T* dest, typename std::enable_if::type val) { + union U { + int64_t i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + do { + assume.i = oldval.i ; + newval.t = assume.t - val ; + oldval.i = atomic_compare_exchange( (int64_t*)dest , assume.i , newval.i ); + } while ( assume.i != oldval.i ); + + return oldval.t ; + } +} +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Config.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Config.hpp new file mode 100644 index 0000000000..83b5792a64 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Config.hpp @@ -0,0 +1,51 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef GUARD_CORE_KOKKOS_ROCM_CONFIG_HPP +#define GUARD_CORE_KOKKOS_ROCM_CONFIG_HPP + +#ifndef KOKKOS_ROCM_HAS_WORKAROUNDS +#define KOKKOS_ROCM_HAS_WORKAROUNDS 1 +#endif + +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.cpp new file mode 100644 index 0000000000..e919d35903 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.cpp @@ -0,0 +1,133 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#ifndef KOKKOS_ROCMEXEC_HPP +#define KOKKOS_ROCMEXEC_HPP + +#include +#include +#include +//#include +#include + +#define ROCM_SPACE_ATOMIC_MASK 0x1FFFF +#define ROCM_SPACE_ATOMIC_XOR_MASK 0x15A39 +#define ROCM_CONCURRENCY 20480 +//#define ROCM_CONCURRENCY 81920 # for fiji + +namespace Kokkos { + static int rocm_space_atomic_locks[ROCM_SPACE_ATOMIC_MASK+1]; + static int rocm_space_scratch_locks[ROCM_CONCURRENCY]; + static int rocm_space_threadid_locks[ROCM_CONCURRENCY]; +namespace Impl { +// TODO: mimic cuda implemtation, add dgpu capability + + void init_rocm_atomic_lock_array() { + static int is_initialized = 0; + if(!is_initialized) + { + for(int i = 0; i < ROCM_SPACE_ATOMIC_MASK+1; i++) + rocm_space_atomic_locks[i] = 0; + is_initialized = 1; + } + } + + void init_rocm_scratch_lock_array() { + static int is_initialized = 0; + if(!is_initialized) + { + for(int i = 0; i < ROCM_CONCURRENCY; i++) + rocm_space_scratch_locks[i] = 0; + is_initialized = 1; + } + } + + void init_rocm_threadid_lock_array() { + static int is_initialized = 0; + if(!is_initialized) + { + for(int i = 0; i < ROCM_CONCURRENCY; i++) + rocm_space_threadid_locks[i] = 0; + is_initialized = 1; + } + } + + void init_lock_arrays_rocm_space() { + init_rocm_atomic_lock_array(); +// init_rocm_scratch_lock_array(); +// init_rocm_threadid_lock_array(); + } +} + +} // namespace Kokkos +#if 0 +namespace Kokkos { +namespace Impl { +KOKKOS_INLINE_FUNCTION +bool lock_address_rocm_space(void* ptr) { +#if 0 +return(Kokkos::Impl::lock_address_host_space(ptr)); +#else + size_t offset = size_t(ptr); + offset = offset >> 2; + offset = offset & ROCM_SPACE_ATOMIC_MASK; + return (0 == hc::atomic_compare_exchange(&rocm_space_atomic_locks[offset],0,1)); +#endif +} + +KOKKOS_INLINE_FUNCTION +void unlock_address_rocm_space(void* ptr) { +#if 0 +Kokkos::Impl::unlock_address_host_space(ptr) ; +#else + size_t offset = size_t(ptr); + offset = offset >> 2; + offset = offset & ROCM_SPACE_ATOMIC_MASK; + hc::atomic_exchange( &rocm_space_atomic_locks[ offset ], 0); +#endif +} + +} +} // namespace Kokkos +#endif + +#endif /* #ifndef KOKKOS_ROCMEXEC_HPP */ diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp new file mode 100644 index 0000000000..48a27eb11d --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp @@ -0,0 +1,137 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#ifndef KOKKOS_ROCMEXEC_HPP +#define KOKKOS_ROCMEXEC_HPP + +#include +#include + +#if defined(__HCC_ACCELERATOR__) +#define printf(...) +#endif + +namespace Kokkos { +namespace Impl { +struct ROCmTraits { +// TODO: determine if needed + enum { WavefrontSize = 64 /* 64 */ }; + enum { WorkgroupSize = 64 /* 64 */ }; + enum { WavefrontIndexMask = 0x001f /* Mask for warpindex */ }; + enum { WavefrontIndexShift = 5 /* WarpSize == 1 << WarpShift */ }; + + enum { SharedMemoryBanks = 32 /* Compute device 2.0 */ }; + enum { SharedMemoryCapacity = 0x0C000 /* 48k shared / 16k L1 Cache */ }; + enum { SharedMemoryUsage = 0x04000 /* 16k shared / 48k L1 Cache */ }; + + enum { UpperBoundExtentCount = 65535 /* Hard upper bound */ }; +#if 0 + KOKKOS_INLINE_FUNCTION static + ROCmSpace::size_type wavefront_count( ROCmSpace::size_type i ) + { return ( i + WavefrontIndexMask ) >> WavefrontIndexShift ; } + + KOKKOS_INLINE_FUNCTION static + ROCmSpace::size_type wavefront_align( ROCmSpace::size_type i ) + { + enum { Mask = ~ROCmSpace::size_type( WavefrontIndexMask ) }; + return ( i + WavefrontIndexMask ) & Mask ; + } +#endif +}; +size_t rocm_internal_cu_count(); +size_t rocm_internal_maximum_workgroup_count(); + +size_t * rocm_internal_scratch_flags( const size_t size ); +size_t * rocm_internal_scratch_space( const size_t size ); + +} +} // namespace Kokkos +#define ROCM_SPACE_ATOMIC_MASK 0x1FFFF +#define ROCM_SPACE_ATOMIC_XOR_MASK 0x15A39 +//int rocm_space_atomic_locks[ROCM_SPACE_ATOMIC_MASK+1]; +extern int + *rocm_space_atomic_locks; + +namespace Kokkos { +namespace Impl { + void init_lock_arrays_rocm_space(); + + void* rocm_resize_scratch_space(size_t bytes, bool force_shrink = false); + +// TODO: determine if needed +KOKKOS_INLINE_FUNCTION +bool lock_address_rocm_space(void* ptr) { +#if 0 +return(Kokkos::Impl::lock_address_host_space(ptr)); +#else + size_t offset = size_t(ptr); + offset = offset >> 2; + offset = offset & ROCM_SPACE_ATOMIC_MASK; + return (0 == hc::atomic_compare_exchange(&rocm_space_atomic_locks[offset],0,1)); +#endif +} +KOKKOS_INLINE_FUNCTION +void unlock_address_rocm_space(void* ptr) { +#if 0 +Kokkos::Impl::unlock_address_host_space(ptr) ; +#else + size_t offset = size_t(ptr); + offset = offset >> 2; + offset = offset & ROCM_SPACE_ATOMIC_MASK; + hc::atomic_exchange( &rocm_space_atomic_locks[ offset ], 0); +#endif +} + +} +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { +//extern +//KOKKOS_INLINE_FUNCTION +//void init_lock_arrays_rocm_space(); + + +} +} // namespace Kokkos + +#endif /* #ifndef KOKKOS_ROCMEXEC_HPP */ diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Impl.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Impl.cpp new file mode 100644 index 0000000000..1322391d92 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Impl.cpp @@ -0,0 +1,753 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +/*--------------------------------------------------------------------------*/ +/* Kokkos interfaces */ + +#include + +/* only compile this file if ROCM is enabled for Kokkos */ +#ifdef KOKKOS_ENABLE_ROCM + +//#include +#include +#include +#include + +/*--------------------------------------------------------------------------*/ +/* Standard 'C' libraries */ +#include + +/* Standard 'C++' libraries */ +#include +#include +#include +#include + + + +//KOKKOS_INLINE_FUNCTION +// Kokkos::Impl::ROCmLockArraysStruct kokkos_impl_rocm_lock_arrays ; + + +/*--------------------------------------------------------------------------*/ +namespace Kokkos { +namespace Impl { + +#if 0 +namespace { +__global__ +void query_rocm_kernel_arch( int * d_arch ) +{ +#if defined( __HCC_ACCELERATOR__ ) + *d_arch = OCM_ARCH__ ; +#else + *d_arch = 0 ; +#endif +} + +/** Query what compute capability is actually launched to the device: */ +int rocm_kernel_arch() +{ + int * d_arch = 0 ; + rocmMalloc( (void **) & d_arch , sizeof(int) ); + query_rocm_kernel_arch<<<1,1>>>( d_arch ); + int arch = 0 ; + rocmMemcpy( & arch , d_arch , sizeof(int) , rocmMemcpyDefault ); + rocmFree( d_arch ); + return arch ; +} +bool rocm_launch_blocking() +{ + const char * env = getenv("ROCM_LAUNCH_BLOCKING"); + + if (env == 0) return false; + + return atoi(env); +} + +} +#endif + +// true device memory allocation, not visible from host +void * rocm_device_allocate(int size) +{ + void * ptr; + hc::accelerator acc; + ptr = hc::am_alloc(size,acc,0); + return ptr; +} + +// host pinned allocation +// flag = 1, non-coherent, host resident, but with gpu address space pointer +// flag = 2, coherent, host resident, but with host address space pointer +void * rocm_hostpinned_allocate(int size) +{ + void * ptr; + hc::accelerator acc; + ptr = hc::am_alloc(size,acc,2); + return ptr; +} +// same free used by all rocm memory allocations +void rocm_device_free(void * ptr) +{ + hc::am_free(ptr); +} + + +KOKKOS_INLINE_FUNCTION +void rocm_device_synchronize() +{ + hc::accelerator_view av = hc::accelerator().get_default_view(); + hc::completion_future fut = av.create_marker(); + fut.wait(); +} + +void rocm_internal_error_throw( const char * name, const char * file, const int line ) +{ +#if 0 + std::ostringstream out ; + out << name << " error( " << rocmGetErrorName(e) << "): " << rocmGetErrorString(e); + if (file) { + out << " " << file << ":" << line; + } + throw_runtime_exception( out.str() ); +#endif +} + +//---------------------------------------------------------------------------- +// Some significant rocm device properties: +// +// rocmDeviceProp::name : Text label for device +// rocmDeviceProp::major : Device major number +// rocmDeviceProp::minor : Device minor number +// rocmDeviceProp::workgroupSize : number of threads per workgroup +// rocmDeviceProp::multiProcessorCount : number of multiprocessors +// rocmDeviceProp::sharedMemPerBlock : capacity of shared memory per wavefront +// rocmDeviceProp::totalConstMem : capacity of constant memory +// rocmDeviceProp::totalGlobalMem : capacity of global memory +// rocmDeviceProp::maxGridSize[3] : maximum grid size + +// +// +// the data we have available from a ROCm accelerator +// std::wstring get_device_path() +// std::wstring get_description() +// unsigned int get_version() +// bool get_has_display() +// size_t get_dedicated_memory() +// bool get_supports_double_precision() +// bool get_supports_limited_double_precision() +// bool get_is_debug() +// bool get_supports_cpu_shared_memory() +// size_t get_max_tile_static_size() +// unsigned int get_cu_count() +// bool has_cpu_accessible_am() +struct rocmDeviceProp { + char name[256]; + char description[256]; + unsigned int version; + int device_type; + int device_ordinal; + int major; + int minor; + size_t totalGlobalMem; + size_t sharedMemPerWavefront; + int WavefrontSize; + int WorkgroupSize; + int MaxTileCount; + int maxThreadsPerWorkgroup; + int multiProcessorCount; + int canMapHostMemory; + bool APU; +}; + + + +void rocmGetDeviceProperties(struct rocmDeviceProp* devProp, int device) +{ + std::wstring s; + int i,n; + hc::accelerator acc; + std::vector accv = acc.get_all() ; + + hc::accelerator a = accv[device]; + + s=a.get_device_path(); + i = 0; + for(wchar_t c: s) + if((n=std::wctomb(&devProp->name[i],c))>0) + i+=n; + + /* assume a CPU */ + devProp->version = a.get_version(); + devProp->major = a.get_version()>>16; // for CPU, these are meaningless + devProp->minor = a.get_version()&0xff; + devProp->device_ordinal = 0; + + /* is this an AMD graphics card */ + if((devProp->name[0]=='g') && (devProp->name[1]=='f') + && (devProp->name[2]=='x')) { + /* for AMD cards, the name has the format gfxMmmO */ + + devProp->device_type = ((devProp->name[3]-0x30)<<16) + + ((devProp->name[4]-0x30)<<8) + + (devProp->name[5]-0x30); + devProp->device_ordinal = devProp->name[6]-0x30; + devProp->major = devProp->name[3]-0x30; + devProp->minor = devProp->name[5]-0x30; + } + + s=a.get_description(); + i = 0; + for(wchar_t c: s) + if((n=std::wctomb(&devProp->description[i],c))>0) + i+=n; + devProp->totalGlobalMem = a.get_dedicated_memory(); + devProp->sharedMemPerWavefront = a.get_max_tile_static_size(); + devProp->WavefrontSize = 64; + devProp->WorkgroupSize = 256; // preferred + devProp->MaxTileCount = 409600; // as defined in /opt/rocm/hcc-lc/include/hsa_new.h + devProp->maxThreadsPerWorkgroup = 1024; + devProp->multiProcessorCount = a.get_cu_count(); + devProp->canMapHostMemory = a.get_supports_cpu_shared_memory(); +// Kaveri has 64KB L2 per CU, 16KB L1, 64KB Vector Regs/SIMD, or 128 regs/thread +// GCN has 64KB LDS per CU + +//Kaveri APU is 7:0:0 +//Carrizo APU is 8:0:1 + devProp->APU = (((devProp->major==7)&&(devProp->minor==0))| + ((devProp->major==8)&&(devProp->minor==1)))?true:false; +} + +namespace { + + + +class ROCmInternalDevices { +public: + enum { MAXIMUM_DEVICE_COUNT = 64 }; + struct rocmDeviceProp m_rocmProp[ MAXIMUM_DEVICE_COUNT ] ; + int m_rocmDevCount ; + + ROCmInternalDevices(); + + static const ROCmInternalDevices & singleton(); +}; + +ROCmInternalDevices::ROCmInternalDevices() +{ + hc::accelerator acc; + std::vector accv = acc.get_all() ; + m_rocmDevCount = accv.size(); + + if(m_rocmDevCount > MAXIMUM_DEVICE_COUNT) { + Kokkos::abort("Sorry, you have more GPUs per node than we thought anybody would ever have. Please report this to github.com/kokkos/kokkos."); + } + for ( int i = 0 ; i < m_rocmDevCount ; ++i ) { + rocmGetDeviceProperties( m_rocmProp + i , i ); + } +} + +const ROCmInternalDevices & ROCmInternalDevices::singleton() +{ + static ROCmInternalDevices* self = nullptr; + if (!self) { + self = new ROCmInternalDevices(); + } + return *self; + +} + +} + +//---------------------------------------------------------------------------- + +class ROCmInternal { +private: + + ROCmInternal( const ROCmInternal & ); + ROCmInternal & operator = ( const ROCmInternal & ); + + +public: + + typedef Kokkos::Experimental::ROCm::size_type size_type ; + + int m_rocmDev ; + int m_rocmArch ; + unsigned m_multiProcCount ; + unsigned m_maxWorkgroup ; + unsigned m_maxSharedWords ; + size_type m_scratchSpaceCount ; + size_type m_scratchFlagsCount ; + size_type * m_scratchSpace ; + size_type * m_scratchFlags ; + + static int was_finalized; + + static ROCmInternal & singleton(); + + int verify_is_initialized( const char * const label ) const ; + + int is_initialized() const + { return 0 != m_scratchSpace && 0 != m_scratchFlags ; } + + void initialize( int rocm_device_id ); + void finalize(); + + void print_configuration( std::ostream & ) const ; + + + ~ROCmInternal(); + + ROCmInternal() + : m_rocmDev( -1 ) + , m_rocmArch( -1 ) + , m_multiProcCount( 0 ) + , m_maxWorkgroup( 0 ) + , m_maxSharedWords( 0 ) + , m_scratchSpaceCount( 0 ) + , m_scratchFlagsCount( 0 ) + , m_scratchSpace( 0 ) + , m_scratchFlags( 0 ) + {} + + size_type * scratch_space( const size_type size ); + size_type * scratch_flags( const size_type size ); +}; + +int ROCmInternal::was_finalized = 0; +//---------------------------------------------------------------------------- + + +void ROCmInternal::print_configuration( std::ostream & s ) const +{ + const ROCmInternalDevices & dev_info = ROCmInternalDevices::singleton(); + +#if defined( KOKKOS_ENABLE_ROCM ) + s << "macro KOKKOS_ENABLE_ROCM : defined" << std::endl ; +#endif +#if defined( __hcc_version__ ) + s << "macro __hcc_version__ = " << __hcc_version__ + << std::endl ; +#endif + + for ( int i = 0 ; i < dev_info.m_rocmDevCount ; ++i ) { + s << "Kokkos::Experimental::ROCm[ " << i << " ] " + << dev_info.m_rocmProp[i].name + << " version " << (dev_info.m_rocmProp[i].major) << "." << dev_info.m_rocmProp[i].minor + << ", Total Global Memory: " << human_memory_size(dev_info.m_rocmProp[i].totalGlobalMem) + << ", Shared Memory per Wavefront: " << human_memory_size(dev_info.m_rocmProp[i].sharedMemPerWavefront); + if ( m_rocmDev == i ) s << " : Selected" ; + s << std::endl ; + } +} + +//---------------------------------------------------------------------------- + +ROCmInternal::~ROCmInternal() +{ + if ( m_scratchSpace || + m_scratchFlags ) { + std::cerr << "Kokkos::Experimental::ROCm ERROR: Failed to call Kokkos::Experimental::ROCm::finalize()" + << std::endl ; + std::cerr.flush(); + } + + m_rocmDev = -1 ; + m_rocmArch = -1 ; + m_multiProcCount = 0 ; + m_maxWorkgroup = 0 ; + m_maxSharedWords = 0 ; + m_scratchSpaceCount = 0 ; + m_scratchFlagsCount = 0 ; + m_scratchSpace = 0 ; + m_scratchFlags = 0 ; +} + +int ROCmInternal::verify_is_initialized( const char * const label ) const +{ + if ( m_rocmDev < 0 ) { + std::cerr << "Kokkos::Experimental::ROCm::" << label << " : ERROR device not initialized" << std::endl ; + } + return 0 <= m_rocmDev ; +} + +ROCmInternal & ROCmInternal::singleton() +{ + static ROCmInternal* self = nullptr ; + if (!self) { + self = new ROCmInternal(); + } + return *self ; + +} + +void ROCmInternal::initialize( int rocm_device_id ) +{ + if ( was_finalized ) Kokkos::abort("Calling ROCm::initialize after ROCm::finalize is illegal\n"); + + if ( is_initialized() ) return; + + enum { WordSize = sizeof(size_type) }; + + if ( ! HostSpace::execution_space::is_initialized() ) { + const std::string msg("ROCm::initialize ERROR : HostSpace::execution_space is not initialized"); + throw_runtime_exception( msg ); + } + + const ROCmInternalDevices & dev_info = ROCmInternalDevices::singleton(); + + const bool ok_init = 0 == m_scratchSpace || 0 == m_scratchFlags ; + + const bool ok_id = 1 <= rocm_device_id && + rocm_device_id < dev_info.m_rocmDevCount ; + + // Need at least a GPU device + + const bool ok_dev = ok_id && + ( 1 <= dev_info.m_rocmProp[ rocm_device_id ].major && + 0 <= dev_info.m_rocmProp[ rocm_device_id ].minor ); + if ( ok_init && ok_dev ) { + + const struct rocmDeviceProp & rocmProp = + dev_info.m_rocmProp[ rocm_device_id ]; + + m_rocmDev = rocm_device_id ; + +// rocmSetDevice( m_rocmDev ) ); + Kokkos::Impl::rocm_device_synchronize(); + +/* + // Query what compute capability architecture a kernel executes: + m_rocmArch = rocm_kernel_arch(); + if ( m_rocmArch != rocmProp.major * 100 + rocmProp.minor * 10 ) { + std::cerr << "Kokkos::Experimental::ROCm::initialize WARNING: running kernels compiled for compute capability " + << ( m_rocmArch / 100 ) << "." << ( ( m_rocmArch % 100 ) / 10 ) + << " on device with compute capability " + << rocmProp.major << "." << rocmProp.minor + << " , this will likely reduce potential performance." + << std::endl ; + } +*/ + // number of multiprocessors + + m_multiProcCount = rocmProp.multiProcessorCount ; + + //---------------------------------- + // Maximum number of wavefronts, + // at most one workgroup per thread in a workgroup for reduction. + + + m_maxSharedWords = rocmProp.sharedMemPerWavefront/ WordSize ; + + //---------------------------------- + // Maximum number of Workgroups: + + m_maxWorkgroup = 5*rocmProp.multiProcessorCount; //TODO: confirm usage and value + + //---------------------------------- + // Multiblock reduction uses scratch flags for counters + // and scratch space for partial reduction values. + // Allocate some initial space. This will grow as needed. + + { + const unsigned reduce_block_count = m_maxWorkgroup * Impl::ROCmTraits::WorkgroupSize ; + + (void) scratch_flags( reduce_block_count * 2 * sizeof(size_type) ); + (void) scratch_space( reduce_block_count * 16 * sizeof(size_type) ); + } + //---------------------------------- + + } + else { + + std::ostringstream msg ; + msg << "Kokkos::Experimental::ROCm::initialize(" << rocm_device_id << ") FAILED" ; + + if ( ! ok_init ) { + msg << " : Already initialized" ; + } + if ( ! ok_id ) { + msg << " : Device identifier out of range " + << "[0.." << (dev_info.m_rocmDevCount-1) << "]" ; + } + else if ( ! ok_dev ) { + msg << " : Device " ; + msg << dev_info.m_rocmProp[ rocm_device_id ].major ; + msg << "." ; + msg << dev_info.m_rocmProp[ rocm_device_id ].minor ; + msg << " Need at least a GPU" ; + msg << std::endl; + } + Kokkos::Impl::throw_runtime_exception( msg.str() ); + } + + + // Init the array for used for arbitrarily sized atomics + Kokkos::Impl::init_lock_arrays_rocm_space(); + +// Kokkos::Impl::ROCmLockArraysStruct locks; +// locks.atomic = atomic_lock_array_rocm_space_ptr(false); +// locks.scratch = scratch_lock_array_rocm_space_ptr(false); +// locks.threadid = threadid_lock_array_rocm_space_ptr(false); +// rocmMemcpyToSymbol( kokkos_impl_rocm_lock_arrays , & locks , sizeof(ROCmLockArraysStruct) ); +} + +//---------------------------------------------------------------------------- + +typedef Kokkos::Experimental::ROCm::size_type ScratchGrain[ Impl::ROCmTraits::WorkgroupSize ] ; +enum { sizeScratchGrain = sizeof(ScratchGrain) }; + +void rocmMemset( Kokkos::Experimental::ROCm::size_type * ptr , Kokkos::Experimental::ROCm::size_type value , Kokkos::Experimental::ROCm::size_type size) +{ +char * mptr = (char * ) ptr; +#if 0 + parallel_for_each(hc::extent<1>(size), + [=, &ptr] + (hc::index<1> idx) __HC__ + { + int i = idx[0]; + ptr[i] = value; + }).wait(); +#else + for (int i= 0; i Record ; + + Record * const r = Record::allocate( Kokkos::HostSpace() + , "InternalScratchFlags" + , ( sizeScratchGrain * m_scratchFlagsCount ) ); + + Record::increment( r ); + + m_scratchFlags = reinterpret_cast( r->data() ); + + rocmMemset( m_scratchFlags , 0 , m_scratchFlagsCount * sizeScratchGrain ); + } + + return m_scratchFlags ; +} + +Kokkos::Experimental::ROCm::size_type * +ROCmInternal::scratch_space( const Kokkos::Experimental::ROCm::size_type size ) +{ + if ( verify_is_initialized("scratch_space") && m_scratchSpaceCount * sizeScratchGrain < size ) { + + m_scratchSpaceCount = ( size + sizeScratchGrain - 1 ) / sizeScratchGrain ; + + typedef Kokkos::Experimental::Impl::SharedAllocationRecord< Kokkos::HostSpace , void > Record ; + + Record * const r = Record::allocate( Kokkos::HostSpace() + , "InternalScratchSpace" + , ( sizeScratchGrain * m_scratchSpaceCount ) ); + + Record::increment( r ); + + m_scratchSpace = reinterpret_cast( r->data() ); + } + + return m_scratchSpace ; +} + +//---------------------------------------------------------------------------- + +void ROCmInternal::finalize() +{ + was_finalized = 1; + if ( 0 != m_scratchSpace || 0 != m_scratchFlags ) { + +// atomic_lock_array_rocm_space_ptr(false); +// scratch_lock_array_rocm_space_ptr(false); +// threadid_lock_array_rocm_space_ptr(false); + + typedef Kokkos::Experimental::Impl::SharedAllocationRecord< HostSpace > RecordROCm ; + typedef Kokkos::Experimental::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace > RecordHost ; + + RecordROCm::decrement( RecordROCm::get_record( m_scratchFlags ) ); + RecordROCm::decrement( RecordROCm::get_record( m_scratchSpace ) ); + + m_rocmDev = -1 ; + m_multiProcCount = 0 ; + m_maxWorkgroup = 0 ; + m_maxSharedWords = 0 ; + m_scratchSpaceCount = 0 ; + m_scratchFlagsCount = 0 ; + m_scratchSpace = 0 ; + m_scratchFlags = 0 ; + } +} + +//---------------------------------------------------------------------------- + +Kokkos::Experimental::ROCm::size_type rocm_internal_cu_count() +{ return ROCmInternal::singleton().m_multiProcCount ; } + +Kokkos::Experimental::ROCm::size_type rocm_internal_maximum_extent_size() +{ return ROCmInternal::singleton().m_maxWorkgroup ; } + +Kokkos::Experimental::ROCm::size_type rocm_internal_maximum_shared_words() +{ return ROCmInternal::singleton().m_maxSharedWords ; } + +Kokkos::Experimental::ROCm::size_type * rocm_internal_scratch_space( const Kokkos::Experimental::ROCm::size_type size ) +{ return ROCmInternal::singleton().scratch_space( size ); } + +Kokkos::Experimental::ROCm::size_type * rocm_internal_scratch_flags( const Kokkos::Experimental::ROCm::size_type size ) +{ return ROCmInternal::singleton().scratch_flags( size ); } + + + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Experimental { + +//ROCm::size_type ROCm::detect_device_count() +//{ return Impl::ROCmInternalDevices::singleton().m_rocmDevCount ; } + +int ROCm::concurrency() { +#if defined(KOKKOS_ARCH_KAVERI) + return 8*64*40; // 20480 kaveri +#else + return 32*8*40; // 81920 fiji and hawaii +#endif +} +int ROCm::is_initialized() +{ return Kokkos::Impl::ROCmInternal::singleton().is_initialized(); } + +void ROCm::initialize( const ROCm::SelectDevice config ) +{ + Kokkos::Impl::ROCmInternal::singleton().initialize( config.rocm_device_id ); + + #if defined(KOKKOS_ENABLE_PROFILING) + Kokkos::Profiling::initialize(); + #endif +} + +#if 0 +std::vector +ROCm::detect_device_arch() +{ + const Impl::ROCmInternalDevices & s = Impl::ROCmInternalDevices::singleton(); + + std::vector output( s.m_rocmDevCount ); + + for ( int i = 0 ; i < s.m_rocmDevCount ; ++i ) { + output[i] = s.m_rocmProp[i].major * 100 + s.m_rocmProp[i].minor ; + } + + return output ; +} + +ROCm::size_type ROCm::device_arch() +{ + return 1 ; +} +#endif + +void ROCm::finalize() +{ + Kokkos::Impl::ROCmInternal::singleton().finalize(); + + #if defined(KOKKOS_ENABLE_PROFILING) + Kokkos::Profiling::finalize(); + #endif +} + +ROCm::ROCm() + : m_device( Kokkos::Impl::ROCmInternal::singleton().m_rocmDev ) +{ + Kokkos::Impl::ROCmInternal::singleton().verify_is_initialized( "ROCm instance constructor" ); +} + +bool ROCm::isAPU(int device) { + const Kokkos::Impl::ROCmInternalDevices & dev_info = + Kokkos::Impl::ROCmInternalDevices::singleton(); + return (dev_info.m_rocmProp[device].APU); +} + +bool ROCm::isAPU() { + return ROCm::isAPU(rocm_device()); +} + +//ROCm::ROCm( const int instance_id ) +// : m_device( Impl::ROCmInternal::singleton().m_rocmDev ) +//{} + +void ROCm::print_configuration( std::ostream & s , const bool ) +{ Kokkos::Impl::ROCmInternal::singleton().print_configuration( s ); } + +bool ROCm::sleep() { return false ; } + +bool ROCm::wake() { return true ; } + +void ROCm::fence() +{ + Kokkos::Impl::rocm_device_synchronize(); +} + +const char* ROCm::name() { return "ROCm"; } + +} // namespace Experimental +} // namespace Kokkos + +#endif // KOKKOS_ENABLE_ROCM +//---------------------------------------------------------------------------- + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Invoke.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Invoke.hpp new file mode 100644 index 0000000000..481e7df3a4 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Invoke.hpp @@ -0,0 +1,138 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +#if !defined( KOKKOS_ROCM_INVOKE_H ) +#define KOKKOS_ROCM_INVOKE_H + +namespace Kokkos { +namespace Impl { + +template()), int>::type = 0> +KOKKOS_INLINE_FUNCTION void rocm_invoke(F&& f, Ts&&... xs) +{ + f(Tag(), static_cast(xs)...); +} + +template()), int>::type = 0> +KOKKOS_INLINE_FUNCTION void rocm_invoke(F&& f, Ts&&... xs) +{ + f(static_cast(xs)...); +} + + +template +struct rocm_invoke_fn +{ + F* f; + rocm_invoke_fn(F& f_) : f(&f_) + {} + + template + KOKKOS_INLINE_FUNCTION void operator()(Ts&&... xs) const + { + rocm_invoke(*f, static_cast(xs)...); + } +}; + +template +KOKKOS_INLINE_FUNCTION rocm_invoke_fn make_rocm_invoke_fn(F& f) +{ + return {f}; +} + +template +KOKKOS_INLINE_FUNCTION T& rocm_unwrap(T& x) +{ + return x; +} + +template +KOKKOS_INLINE_FUNCTION T& rocm_unwrap(std::reference_wrapper x) +{ + return x; +} + +template +struct rocm_capture_fn +{ + F f; + T data; + + KOKKOS_INLINE_FUNCTION rocm_capture_fn(F f_, T x) + : f(f_), data(x) + {} + + template + KOKKOS_INLINE_FUNCTION void operator()(Ts&&... xs) const + { + f(rocm_unwrap(data), static_cast(xs)...); + } +}; + +template +KOKKOS_INLINE_FUNCTION rocm_capture_fn rocm_capture(F f, T x) +{ + return {f, x}; +} + +template +KOKKOS_INLINE_FUNCTION auto rocm_capture(F f, T x, U y, Ts... xs) -> decltype(rocm_capture(rocm_capture(f, x), y, xs...)) +{ + return rocm_capture(rocm_capture(f, x), y, xs...); +} + +struct rocm_apply_op +{ + template + KOKKOS_INLINE_FUNCTION void operator()(F&& f, Ts&&... xs) const + { + f(static_cast(xs)...); + } +}; + +}} + +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Join.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Join.hpp new file mode 100644 index 0000000000..d3d150703e --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Join.hpp @@ -0,0 +1,72 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#if !defined( KOKKOS_ROCM_JOIN_H ) +#define KOKKOS_ROCM_JOIN_H + +namespace Kokkos { +namespace Impl { + + +// Adaptor to use ValueJoin with standard algorithms +template +struct join_operator +{ + const F* fp; + template + T operator()(T x, const U& y) const + { + Joiner::join(*fp, &x, &y); + return x; + } +}; + +template +join_operator make_join_operator(const F& f) +{ + return join_operator{&f}; +} + +}} + +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp new file mode 100644 index 0000000000..14ab52a1c2 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp @@ -0,0 +1,1265 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include +#include + + +namespace Kokkos { +namespace Impl { + +struct ROCmTeamMember ; + +template< class ... Properties > +class TeamPolicyInternal< Kokkos::Experimental::ROCm, Properties ... >: public PolicyTraits { +private: + int m_league_size ; + int m_team_size ; + int m_vector_length ; + int m_team_scratch_size[2] ; + int m_thread_scratch_size[2] ; + int m_chunk_size ; + + +public: + + using execution_policy = TeamPolicyInternal ; + using execution_space = Kokkos::Experimental::ROCm ; + typedef PolicyTraits traits; + + TeamPolicyInternal& operator = (const TeamPolicyInternal& p) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_vector_length = p.m_vector_length; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + return *this; + } + + TeamPolicyInternal() + : m_league_size( 0 ) + , m_team_size( 0 ) + , m_vector_length( 0 ) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + TeamPolicyInternal( const int arg_league_size + , const int arg_team_size ) + : m_league_size( arg_league_size ), + m_team_size( arg_team_size ) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + TeamPolicyInternal( const int arg_league_size + , const int arg_team_size + , const int vector_length_request=1) + : m_league_size( arg_league_size ), + m_team_size( arg_team_size ), + m_vector_length (vector_length_request) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + TeamPolicyInternal( const int arg_league_size + , const Kokkos::AUTO_t ) + : m_league_size( arg_league_size ), m_team_size( -1 ) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + TeamPolicyInternal( const int arg_league_size + , const Kokkos::AUTO_t + , const int vector_length_request) + : m_league_size( arg_league_size ), + m_team_size( -1 ), + m_vector_length (vector_length_request) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + inline int chunk_size() const { return m_chunk_size ; } + + /** \brief set chunk_size to a discrete value*/ + KOKKOS_INLINE_FUNCTION TeamPolicyInternal set_chunk_size(typename traits::index_type chunk_size_) const { + TeamPolicyInternal p = *this; + p.m_chunk_size = chunk_size_; + return p; + } + + /** \brief set per team scratch size for a specific level of the scratch hierarchy */ + inline TeamPolicyInternal set_scratch_size(const int& level, const PerTeamValue& per_team) const { + TeamPolicyInternal p = *this; + p.m_team_scratch_size[level] = per_team.value; + return p; + }; + + /** \brief set per thread scratch size for a specific level of the scratch hierarchy */ + inline TeamPolicyInternal set_scratch_size(const int& level, const PerThreadValue& per_thread) const { + TeamPolicyInternal p = *this; + p.m_thread_scratch_size[level] = per_thread.value; + return p; + }; + + /** \brief set per thread and per team scratch size for a specific level of the scratch hierarchy */ + inline TeamPolicyInternal set_scratch_size(const int& level, const PerTeamValue& per_team, const PerThreadValue& per_thread) const { + TeamPolicyInternal p = *this; + p.m_team_scratch_size[level] = per_team.value; + p.m_thread_scratch_size[level] = per_thread.value; + return p; + }; + +// TODO: evaluate proper team_size_max requirements + template< class Functor_Type> + KOKKOS_INLINE_FUNCTION static + int team_size_max( const Functor_Type & functor) + { + typedef typename Kokkos::Impl::FunctorValueTraits::value_type value_type; + return team_size_recommended(functor); + // return std::min(Kokkos::Impl::get_max_tile_size() / sizeof(value_type), Kokkos::Impl::get_max_tile_thread()); + } + + template< class Functor_Type> + KOKKOS_INLINE_FUNCTION static int team_size_recommended(const Functor_Type & functor) + { return Kokkos::Impl::get_tile_size::value_type>(); } + + template< class Functor_Type > + KOKKOS_INLINE_FUNCTION static int team_size_recommended(const Functor_Type &functor, const int vector_length) + { + int max = team_size_recommended( functor )/vector_length; + if(max < 1) max = 1; + return(max); + } + + template + KOKKOS_INLINE_FUNCTION int team_size(const F& f) const { return (m_team_size > 0) ? m_team_size : team_size_recommended(f); } + KOKKOS_INLINE_FUNCTION int team_size() const { return (m_team_size > 0) ? m_team_size : Impl::get_max_tile_thread(); ; } + KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size ; } + + + inline int vector_length() const { return m_vector_length ; } + inline int scratch_size(int level, int team_size_ = -1) const { + if(team_size_<0) team_size_ = m_team_size; + return m_team_scratch_size[level] + team_size_*m_thread_scratch_size[level]; + } + inline size_t team_scratch_size(int level) const { + return m_team_scratch_size[level]; + } + inline size_t thread_scratch_size(int level) const { + return m_thread_scratch_size[level]; + } + + typedef Impl::ROCmTeamMember member_type; +}; + + struct ROCmTeamMember { + typedef Kokkos::Experimental::ROCm execution_space ; + typedef Kokkos::ScratchMemorySpace scratch_memory_space ; + + KOKKOS_INLINE_FUNCTION + const scratch_memory_space & team_shmem() const + { return m_team_shared.set_team_thread_mode(0,1,0); } + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space & team_scratch(const int& level) const + { return m_team_shared.set_team_thread_mode(level,1,0) ; } + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space & thread_scratch(const int& level) const + { return m_team_shared.set_team_thread_mode(level, + team_size(), + team_rank()) ; } + + + /* Rank of this team within the league of teams */ + KOKKOS_INLINE_FUNCTION int league_rank() const { return m_idx.tile[0]; } + /* Number of teams in the league */ + KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size; } + /* Rank of this thread within this team */ + KOKKOS_INLINE_FUNCTION int team_rank() const { return m_idx.local[0] / m_vector_length; } + /* Rank of this thread within this thread */ + KOKKOS_INLINE_FUNCTION int vector_rank() const { return m_idx.local[0] % m_vector_length; } + KOKKOS_INLINE_FUNCTION int lindex() const { return m_idx.local[0]; } + KOKKOS_INLINE_FUNCTION int gindex() const { return m_idx.global[0]; } + KOKKOS_INLINE_FUNCTION int tindex() const { return m_idx.tile[0]; } + KOKKOS_INLINE_FUNCTION int tile_dim() const { return m_idx.tile_dim[0]; } + KOKKOS_INLINE_FUNCTION int team_size() const { return m_team_size; } + KOKKOS_INLINE_FUNCTION int vector_length() const { return m_vector_length; } + + + KOKKOS_INLINE_FUNCTION + ROCmTeamMember( const hc::tiled_index< 1 > & arg_idx, int league_size_,int team_size_ ) + : m_league_size( league_size_ ) + , m_team_size( team_size_ ) + , m_team_shared( nullptr, 0 ) + , m_vector_length( 1 ) + , m_idx( arg_idx ) + {} + + KOKKOS_INLINE_FUNCTION + ROCmTeamMember( const hc::tiled_index< 1 > & arg_idx, int league_size_,int team_size_, char * shared, std::size_t shsize, std::size_t scratch_size0, char * scratch_ptr, std::size_t scratch_size1, std::size_t vector_length) + : m_league_size( league_size_ ) + , m_team_size( team_size_ ) + , m_team_shared( shared + + arg_idx.tile[0]*(shsize+scratch_size0), + (shsize+scratch_size0)*league_size_, + scratch_ptr + arg_idx.tile[0]*scratch_size1, + scratch_size1*league_size_) + , m_vector_length( vector_length ) + , m_idx( arg_idx ) + {} + + KOKKOS_INLINE_FUNCTION + void team_barrier() const { + m_idx.barrier.wait(); + } + + template + KOKKOS_INLINE_FUNCTION + void team_broadcast(const ValueType& value, const int& thread_id ) const + { + static_assert(std::is_trivially_default_constructible(), "Only trivial constructible types can be broadcasted"); + tile_static ValueType local_value; + zero_init(local_value); + if (this->team_rank() == thread_id) { + local_value = value; + } + this->team_barrier(); + value = local_value; + } +// Reduce accross a team of threads. +// +// Each thread has vector_length elements. +// This reduction is for TeamThreadRange operations, where the range +// is spread across threads. Effectively, there are vector_length +// independent reduction operations. +// This is different from a reduction across the elements of a thread, +// which reduces every vector element. + + template< class ValueType, class JoinOp > + KOKKOS_INLINE_FUNCTION + ValueType team_reduce( const ValueType & value , const JoinOp & op_in) const + { + typedef JoinLambdaAdapter JoinOpFunctor ; + const JoinOpFunctor op(op_in); + + tile_static ValueType buffer[512]; + const auto local = lindex(); + const auto team = team_rank(); + auto vector_rank = local%m_vector_length; + auto thread_base = team*m_vector_length; + + const std::size_t size = next_pow_2(m_team_size+1)/2; +#if defined(ROCM15) + buffer[local] = value; +#else + // ROCM 1.5 handles address spaces better, previous version didn't + lds_for(buffer[local], [&](ValueType& x) + { + x = value; + }); +#endif + m_idx.barrier.wait(); + + for(std::size_t s = 1; s < size; s *= 2) + { + const std::size_t index = 2 * s * team; + if (index < size) + { +#if defined(ROCM15) + op.join(buffer[vector_rank+index*m_vector_length], + buffer[vector_rank+(index+s)*m_vector_length]); +#else + lds_for(buffer[vector_rank+index*m_vector_length], [&](ValueType& x) + { + lds_for(buffer[vector_rank+(index+s)*m_vector_length], + [&](ValueType& y) + { + op.join(x, y); + }); + }); +#endif + } + m_idx.barrier.wait(); + } + + if (local == 0) + { + for(int i=size*m_vector_length; i + KOKKOS_INLINE_FUNCTION + ValueType thread_reduce( const ValueType & value , const JoinOp & op_in) const + { + typedef JoinLambdaAdapter JoinOpFunctor ; + const JoinOpFunctor op(op_in); + + const auto local = m_idx.local[0]; + tile_static ValueType buffer[512]; + const std::size_t size = m_vector_length; //vector length must be power of 2 + auto vector_rank = local%m_vector_length; + auto thread_base = team_rank()*m_vector_length; + lds_for(buffer[local], [&](ValueType& x) + { + x = value; + }); + m_idx.barrier.wait(); + for(std::size_t s = 1; s < size; s *= 2) + { + const std::size_t index = 2 * s * vector_rank; + if (index < size) + { +#if defined(ROCM15) + op.join(buffer[thread_base+index], buffer[thread_base+index+s]); +#else + + lds_for(buffer[thread_base+index], [&](ValueType& x) + { + lds_for(buffer[thread_base+index+s], [&](ValueType& y) + { + op.join(x, y); + }); + }); +#endif + } + m_idx.barrier.wait(); + } + + m_idx.barrier.wait(); + return buffer[thread_base]; + } + + /** \brief Intra-team exclusive prefix sum with team_rank() ordering + * with intra-team non-deterministic ordering accumulation. + * + * The global inter-team accumulation value will, at the end of the + * league's parallel execution, be the scan's total. + * Parallel execution ordering of the league's teams is non-deterministic. + * As such the base value for each team's scan operation is similarly + * non-deterministic. + */ + template< typename Type > + KOKKOS_INLINE_FUNCTION Type team_scan( const Type & value , Type * const global_accum = nullptr ) const + { + #if 0 + const auto local = m_idx.local[0]; + const auto last = m_team_size - 1; + const auto init = 0; + tile_static Type buffer[256]; + + if (local == last) buffer[0] = init; + else buffer[local] = value; + + m_idx.barrier.wait(); + + for(std::size_t s = 1; s < m_team_size; s *= 2) + { + if (local >= s) buffer[local] += buffer[local - s]; + m_idx.barrier.wait(); + } + + if ( global_accum ) + { + if(local == last) + { + atomic_fetch_add(global_accum, buffer[local] + value); + } + m_idx.barrier.wait(); + buffer[local] += *global_accum; + } + m_idx.barrier.wait(); + return buffer[local]; +#else + tile_static Type sarray[2][256+1]; + int lid = m_idx.local[0]; + int lp1 = lid+1; + + int toggle = 1; + int _toggle = 0; + m_idx.barrier.wait(); + + if(lid == 0) + { + sarray[1][0] = 0; + sarray[0][0] = 0; + } + sarray[1][lp1] = value; + + m_idx.barrier.wait(); + for(int stride = 1; stride < m_team_size; stride*=2) + { + if(lid >= stride) + { + sarray[_toggle][lp1] = + sarray[toggle][lp1]+sarray[toggle][lp1-stride]; + } + else + { + sarray[_toggle][lp1] = sarray[toggle][lp1]; + } + toggle = _toggle; + _toggle = 1-toggle; + m_idx.barrier.wait(); + } + + if ( global_accum ) + { + if(m_team_size == lp1) + { + sarray[toggle][m_team_size] = atomic_fetch_add(global_accum,sarray[toggle][m_team_size]); + } + m_idx.barrier.wait(); + sarray[toggle][lid] += sarray[toggle][m_team_size]; + } + m_idx.barrier.wait(); + return sarray[toggle][lid]; +#endif + } + + private: + int m_league_size ; + int m_team_size ; + const scratch_memory_space m_team_shared; + + public: + int m_vector_length; + hc::tiled_index<1> m_idx; + }; +} +} // namespace Kokkos +#include + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- + +template< class FunctorType , class... Traits > +class ParallelFor< FunctorType + , Kokkos::RangePolicy< Traits... >, Kokkos::Experimental::ROCm > +{ +private: + + typedef Kokkos::RangePolicy< Traits... > Policy ; + +public: + + inline + ParallelFor( const FunctorType & f + , const Policy & policy ) + { + + + const auto len = policy.end()-policy.begin(); + const auto offset = policy.begin(); + if(len == 0) return; +// define a lambda to work around a compiler issue. The compiler does not +// properly dereference f inside the pfe. +auto foo = [=](size_t i){rocm_invoke(f, i);}; + +#if __hcc_workweek__ > 16600 + hc::parallel_for_each(hc::extent<1>(len) , [=](const hc::index<1> & idx) [[hc]] [[hc_max_workgroup_dim(1024,1,1)]] +#else + hc::parallel_for_each(hc::extent<1>(len).tile(256) , [=](const hc::index<1> & idx) [[hc]] +#endif + { + if(idx[0] +class ParallelFor< F + , Kokkos::TeamPolicy< Traits... > + , Kokkos::Experimental::ROCm > +{ + using Policy = Kokkos::Impl::TeamPolicyInternal< Kokkos::Experimental::ROCm, Traits... >; + typedef Kokkos::Impl::FunctorValueTraits ValueTraits; + +public: + inline + ParallelFor( const F & f + , const Policy & policy ) + { + const auto league_size = policy.league_size(); + const auto team_size = policy.team_size(); + const int vector_length = policy.vector_length(); + const auto total_size = league_size * team_size * vector_length; + const int scratch_size0 = policy.scratch_size(0,team_size); + const int scratch_size1 = policy.scratch_size(1,team_size); + + if(total_size == 0) return; + + const auto shared_size = FunctorTeamShmemSize< F >::value( f , team_size ); + char * scratch = NULL; + char * shared = (char *)rocm_device_allocate(shared_size * league_size + + scratch_size0*league_size); + if(0 flat_extent( total_size ); + + hc::tiled_extent< 1 > team_extent = flat_extent.tile(team_size*vector_length); + hc::parallel_for_each( team_extent , [=](hc::tiled_index<1> idx) [[hc]] + { + rocm_invoke(f, typename Policy::member_type(idx, league_size, team_size, shared, shared_size, scratch_size0, scratch, scratch_size1,vector_length)); + }).wait(); + + if(0 +class ParallelReduce< + FunctorType , Kokkos::RangePolicy< Traits... >, ReducerType, Kokkos::Experimental::ROCm > +{ +public: + + typedef Kokkos::RangePolicy< Traits... > Policy ; + + // TODO: Use generic lambdas instead + struct invoke_fn + { + template + KOKKOS_INLINE_FUNCTION void operator()(std::size_t size, F&& f, hc::tiled_index<1> idx, tile_desc td, Ts&&... xs) const + { + auto global = idx.global[0]; + if (global < size) f(idx.global[0], static_cast(xs)...); + } + }; + + template< class ViewType > + inline + ParallelReduce( const FunctorType & f, + const Policy & policy, + const ViewType & result_view, + typename std::enable_if< + Kokkos::is_view< ViewType >::value && + !Kokkos::is_reducer_type::value + ,void*>::type = NULL) + { + typedef typename Policy::work_tag Tag; + typedef Kokkos::Impl::FunctorValueTraits< FunctorType , Tag > ValueTraits; + typedef Kokkos::Impl::FunctorValueInit< FunctorType , Tag > ValueInit; + typedef typename ValueTraits::reference_type reference_type; + + const auto total_size = policy.end() - policy.begin(); + + if(total_size==0) { + if (result_view.data()) { + ValueInit::init( f , result_view.data() ); + } + return; + } + + Kokkos::Impl::reduce_enqueue< Tag > + ( total_size + , f + , InvalidType{} + , rocm_capture(invoke_fn{}, total_size) + , result_view.data() + , result_view.extent(0) + ); + } + + inline + ParallelReduce( const FunctorType & f, + Policy policy, + const ReducerType& reducer ) + { + typedef typename Policy::work_tag Tag; + + typedef Kokkos::Impl::if_c< std::is_same::value, FunctorType, ReducerType> ReducerConditional; + typedef typename ReducerConditional::type ReducerTypeFwd; + typedef Kokkos::Impl::FunctorValueTraits< FunctorType , Tag > ValueTraits; + typedef Kokkos::Impl::FunctorValueInit< ReducerType, Tag > ValueInit ; + + typedef typename ValueTraits::reference_type reference_type; + + const auto total_size = policy.end() - policy.begin(); + + if(total_size==0) { + if (reducer.view().data()) { + ValueInit::init( ReducerConditional::select(f,reducer), + reducer.view().data() ); + } + return; + } + + Kokkos::Impl::reduce_enqueue< Tag > + ( total_size + , f + , reducer + , rocm_capture(invoke_fn{}, total_size) + , reducer.view().data() + , reducer.view().extent(0) + ); + } + + KOKKOS_INLINE_FUNCTION + void execute() const {} + +}; + +template< class FunctorType, class ReducerType, class... Traits > +class ParallelReduce< + FunctorType , Kokkos::TeamPolicy< Traits... >, ReducerType, Kokkos::Experimental::ROCm > +{ + using Policy = Kokkos::Impl::TeamPolicyInternal< Kokkos::Experimental::ROCm, Traits... >; + typedef Kokkos::Impl::FunctorValueTraits ValueTraits; + +public: + + struct invoke_fn + { + template + KOKKOS_INLINE_FUNCTION void operator()(Create&& create, F&& f, hc::tiled_index<1> idx, tile_desc td, Ts&&... xs) const + { + f(create(idx, td), static_cast(xs)...); + } + }; + + template< class ViewType > + inline + ParallelReduce( const FunctorType & f, + const Policy & policy, + const ViewType & result_view, + typename std::enable_if< + Kokkos::is_view< ViewType >::value && + !Kokkos::is_reducer_type::value + ,void*>::type = NULL) + { + const int league_size = policy.league_size(); + const int team_size = policy.team_size(f); + const int vector_length = policy.vector_length(); + const int scratch_size0 = policy.scratch_size(0,team_size); + const int scratch_size1 = policy.scratch_size(1,team_size); + const int total_size = league_size * team_size ; + + if(total_size == 0) return; + + const int reduce_size = ValueTraits::value_size( f ); + const int shared_size = FunctorTeamShmemSize< FunctorType >::value( f , team_size ); + + char * shared; + char * scratch = NULL; + + shared = (char *)rocm_device_allocate(league_size * + (shared_size + scratch_size0)); + if(0 idx, tile_desc td) + { + + return typename Policy::member_type(idx, league_size, td.team_size, + shared, shared_size, scratch_size0, + scratch, scratch_size1, + vector_length); + }; + + Kokkos::Impl::reduce_enqueue< typename Policy::work_tag > + ( total_size*vector_length + , f + , InvalidType{} + , rocm_capture(invoke_fn{}, create_team_member) + , result_view.ptr_on_device() + , result_view.dimension_0() + , team_size + , vector_length + , shared_size + ); + + if(0::value( f , team_size ); + const int scratch_size0 = policy.scratch_size(0,team_size); + const int scratch_size1 = policy.scratch_size(1,team_size); + + char * shared; + char * scratch = NULL; + shared = (char *)rocm_device_allocate((shared_size + scratch_size0) * + league_size); + if(0 idx, tile_desc td) + { + return typename Policy::member_type(idx, league_size, td.tile_size, shared, shared_size, scratch_size0, scratch, scratch_size1, vector_length); + }; + + Kokkos::Impl::reduce_enqueue< typename Policy::work_tag > + ( league_size + , f + , reducer + , rocm_capture(invoke_fn{}, create_team_member) + , reducer.view().data() + , reducer.view().extent(0),team_size,vector_length + , shared_size + ); + + if(0 +class ParallelScan< FunctorType , Kokkos::RangePolicy< Traits... >, Kokkos::Experimental::ROCm > +{ +private: + + typedef Kokkos::RangePolicy< Traits... > Policy; + typedef typename Policy::work_tag Tag; + typedef Kokkos::Impl::FunctorValueTraits< FunctorType, Tag> ValueTraits; + +public: + + //---------------------------------------- + + inline + ParallelScan( const FunctorType & f + , const Policy & policy ) + { + const auto len = policy.end()-policy.begin(); + + + if(len==0) return; + + scan_enqueue(len, f, [](hc::tiled_index<1> idx, int, int) { return idx.global[0]; }); + } + + KOKKOS_INLINE_FUNCTION + void execute() const {} + + //---------------------------------------- +}; + +template< class FunctorType , class... Traits> +class ParallelScan< FunctorType , Kokkos::TeamPolicy< Traits... >, Kokkos::Experimental::ROCm > +{ +private: + + using Policy = Kokkos::Impl::TeamPolicyInternal< Kokkos::Experimental::ROCm, Traits... >; + typedef typename Policy::work_tag Tag; + typedef Kokkos::Impl::FunctorValueTraits< FunctorType, Tag> ValueTraits; + +public: + + //---------------------------------------- + + inline + ParallelScan( const FunctorType & f + , const Policy & policy ) + { + const auto league_size = policy.league_size(); + const auto team_size = policy.team_size(f); + const auto len = league_size * team_size; + + if(len == 0) return; + + scan_enqueue(len, f, [&](hc::tiled_index<1> idx, int n_teams, int n_leagues) { return typename Policy::member_type(idx,n_leagues,n_teams); }); + } + + KOKKOS_INLINE_FUNCTION + void execute() const {} + + //---------------------------------------- +}; + +} +} + +namespace Kokkos { +namespace Impl { + template + struct TeamThreadRangeBoundariesStruct { + typedef iType index_type; + const iType start; + const iType end; + const iType increment; + const ROCmTeamMember& thread; + +#if defined( __HCC_ACCELERATOR__ ) + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& count): + start( thread_.team_rank() ), + end( count ), + increment( thread_.team_size() ), + thread(thread_) + {} + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& begin_, const iType& end_): + start( begin_ + thread_.team_rank() ), + end( end_ ), + increment( thread_.team_size() ), + thread(thread_) + {} +#else + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& count): + start( 0 ), + end( count ), + increment( 1 ), + thread(thread_) + {} + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& begin_, const iType& end_): + start( begin_ ), + end( end_ ), + increment( 1 ), + thread(thread_) + {} +#endif + }; + template + struct ThreadVectorRangeBoundariesStruct { + typedef iType index_type; + const iType start; + const iType end; + const iType increment; + const ROCmTeamMember& thread; + +#if defined( __HCC_ACCELERATOR__ ) + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& count): + start( thread_.lindex()%thread_.vector_length() ), + end( count ), + increment( thread_.vector_length() ), + thread(thread_) + {} + +// KOKKOS_INLINE_FUNCTION +// ThreadVectorRangeBoundariesStruct (const iType& count): +// start( 0 ), +// end( count ), +// increment( 1 ) +// {} +#else + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& count): + start( 0 ), + end( count ), + increment( 1 ), + thread(thread_) + {} + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct (const iType& count): + start( 0 ), + end( count ), + increment( 1 ) + {} +#endif + }; + +} +} + +namespace Kokkos { + +template +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct + TeamThreadRange(const Impl::ROCmTeamMember& thread, const iType& count) { + return Impl::TeamThreadRangeBoundariesStruct(thread,count); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct::type,Impl::ROCmTeamMember> + TeamThreadRange(const Impl::ROCmTeamMember& thread, const iType1& begin, const iType2& end) { + typedef typename std::common_type< iType1, iType2 >::type iType; + return Impl::TeamThreadRangeBoundariesStruct(thread,begin,end); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::ThreadVectorRangeBoundariesStruct + ThreadVectorRange(const Impl::ROCmTeamMember& thread, const iType& count) { + return Impl::ThreadVectorRangeBoundariesStruct(thread,count); +} + +KOKKOS_INLINE_FUNCTION +Impl::ThreadSingleStruct PerTeam(const Impl::ROCmTeamMember& thread) { + return Impl::ThreadSingleStruct(thread); +} + +KOKKOS_INLINE_FUNCTION +Impl::VectorSingleStruct PerThread(const Impl::ROCmTeamMember& thread) { + return Impl::VectorSingleStruct(thread); +} + +template +KOKKOS_INLINE_FUNCTION +void single(const Impl::VectorSingleStruct& single_struct, const FunctorType& lambda) { + if(single_struct.team_member.vector_rank()==0) lambda(); +} + +template +KOKKOS_INLINE_FUNCTION +void single(const Impl::ThreadSingleStruct& single_struct, const FunctorType& lambda) { + if((single_struct.team_member.lindex()==0)) lambda(); +} + +template +KOKKOS_INLINE_FUNCTION +void single(const Impl::VectorSingleStruct& single_struct, const FunctorType& lambda, ValueType& val) { +#if defined(ROCM15) + // 1.5 needs this more proper restriction on which work units run + if( single_struct.team_member.vector_rank()==0) lambda(val); + val = shfl(val,0,single_struct.team_member.vector_length()); +#else + // but older compilers are fine with this (TestTeamVector::Test< Kokkos::Experimental::ROCm >(4)) + lambda(val); +#endif +} + +template +KOKKOS_INLINE_FUNCTION +void single(const Impl::ThreadSingleStruct& single_struct, const FunctorType& lambda, ValueType& val) { + if(single_struct.team_member.lindex()==0) lambda(val); + single_struct.team_member.team_broadcast(val,0); +} + +} + +namespace Kokkos { + + /** \brief Inter-thread parallel_for. Executes lambda(iType i) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all threads of the the calling thread team. + * This functionality requires C++11 support.*/ +template +KOKKOS_INLINE_FUNCTION +void parallel_for(const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, const Lambda& lambda) { + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) + lambda(i); +} + +/** \brief Inter-thread thread range parallel_reduce. Executes lambda(iType i, ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all threads of the the calling thread team and a summation of + * val is performed and put into result. This functionality requires C++11 support.*/ +template< typename iType, class Lambda, typename ValueType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, + const Lambda & lambda, ValueType& result) { + + result = ValueType(); + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + ValueType tmp = ValueType(); + lambda(i,tmp); + result+=tmp; + } + result = loop_boundaries.thread.team_reduce(result, + Impl::JoinAdd()); +// Impl::rocm_intra_workgroup_reduction( loop_boundaries.thread, result, +// Impl::JoinAdd()); +// Impl::rocm_inter_workgroup_reduction( loop_boundaries.thread, result, +// Impl::JoinAdd()); +} + +/** \brief Intra-thread thread range parallel_reduce. Executes lambda(iType i, ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread and a reduction of + * val is performed using JoinType(ValueType& val, const ValueType& update) and put into init_result. + * The input value of init_result is used as initializer for temporary variables of ValueType. Therefore + * the input value should be the neutral element with respect to the join operation (e.g. '0 for +-' or + * '1 for *'). This functionality requires C++11 support.*/ +template< typename iType, class Lambda, typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, + const Lambda & lambda, const JoinType& join, ValueType& result) { + +#if defined(ROCM15) + ValueType tmp = result; + // Simpler code works with ROCM1.5 + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i,tmp); + } + result = loop_boundaries.thread.team_reduce(tmp,join); +#else + // this workaround freezes up with ROCM1.5, but needed for earlier compilers + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + ValueType tmp = ValueType(); + lambda(i,tmp); + join(result,tmp); + } + result = loop_boundaries.thread.team_reduce(result,join); +#endif +// Impl::rocm_intra_workgroup_reduction( loop_boundaries.thread, result,join); +// Impl::rocm_inter_workgroup_reduction( loop_boundaries.thread, result,join); +} + +} //namespace Kokkos + + +namespace Kokkos { +/** \brief Intra-thread vector parallel_for. Executes lambda(iType i) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread. + * This functionality requires C++11 support.*/ +template +KOKKOS_INLINE_FUNCTION +void parallel_for(const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, const Lambda& lambda) { + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) + lambda(i); +} + +/** \brief Intra-thread vector parallel_reduce. Executes lambda(iType i, ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread and a summation of + * val is performed and put into result. This functionality requires C++11 support.*/ +template< typename iType, class Lambda, typename ValueType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce(const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, const Lambda & lambda, ValueType& result) { + result = ValueType(); + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + ValueType tmp = ValueType(); + lambda(i,tmp); + result+=tmp; + } + result = loop_boundaries.thread.thread_reduce(result,Impl::JoinAdd()); +} + +/** \brief Intra-thread vector parallel_reduce. Executes lambda(iType i, ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread and a reduction of + * val is performed using JoinType(ValueType& val, const ValueType& update) and put into init_result. + * The input value of init_result is used as initializer for temporary variables of ValueType. Therefore + * the input value should be the neutral element with respect to the join operation (e.g. '0 for +-' or + * '1 for *'). This functionality requires C++11 support.*/ +template< typename iType, class Lambda, typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce(const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, const Lambda & lambda, const JoinType& join, ValueType& result) { + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i,result); + loop_boundaries.thread.team_barrier(); + } + result = loop_boundaries.thread.thread_reduce(result,join); +} + +/** \brief Intra-thread vector parallel exclusive prefix sum. Executes lambda(iType i, ValueType & val, bool final) + * for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes in the thread and a scan operation is performed. + * Depending on the target execution space the operator might be called twice: once with final=false + * and once with final=true. When final==true val contains the prefix sum value. The contribution of this + * "i" needs to be added to val no matter whether final==true or not. In a serial execution + * (i.e. team_size==1) the operator is only called once with final==true. Scan_val will be set + * to the final sum value over all vector lanes. + * This functionality requires C++11 support.*/ +template< typename iType, class FunctorType > +KOKKOS_INLINE_FUNCTION +void parallel_scan(const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, const FunctorType & lambda) { + + typedef Kokkos::Impl::FunctorValueTraits< FunctorType , void > ValueTraits ; + typedef typename ValueTraits::value_type value_type ; + + value_type scan_val = value_type(); +#if (__ROCM_ARCH__ >= 800) +// adopt the cuda vector shuffle method + const int VectorLength = loop_boundaries.increment; + int lid = loop_boundaries.thread.lindex(); + int vector_rank = lid%VectorLength; + + iType loop_bound = ((loop_boundaries.end+VectorLength-1)/VectorLength) * VectorLength; + value_type val ; + for(int _i = vector_rank; _i < loop_bound; _i += VectorLength) { + val = value_type(); + if(_i 1) { + const value_type tmp2 = shfl_up(tmp, 1,VectorLength); + if(vector_rank > 0) + tmp+=tmp2; + } + if(vector_rank == 1) + result_i = tmp; + if (VectorLength > 3) { + const value_type tmp2 = shfl_up(tmp, 2,VectorLength); + if(vector_rank > 1) + tmp+=tmp2; + } + if ((vector_rank >= 2) && + (vector_rank < 4)) + result_i = tmp; + if (VectorLength > 7) { + const value_type tmp2 = shfl_up(tmp, 4,VectorLength); + if(vector_rank > 3) + tmp+=tmp2; + } + if ((vector_rank >= 4) && + (vector_rank < 8)) + result_i = tmp; + if (VectorLength > 15) { + const value_type tmp2 = shfl_up(tmp, 8,VectorLength); + if(vector_rank > 7) + tmp+=tmp2; + } + if ((vector_rank >= 8) && + (vector_rank < 16)) + result_i = tmp; + if (VectorLength > 31) { + const value_type tmp2 = shfl_up(tmp, 16,VectorLength); + if(vector_rank > 15) + tmp+=tmp2; + } + if ((vector_rank >=16) && + (vector_rank < 32)) + result_i = tmp; + if (VectorLength > 63) { + const value_type tmp2 = shfl_up(tmp, 32,VectorLength); + if(vector_rank > 31) + tmp+=tmp2; + } + + if (vector_rank >= 32) + result_i = tmp; + + val = scan_val + result_i - val; + scan_val += shfl(tmp,VectorLength-1,VectorLength); + if(_i + +#include +#include +#include +#include +#include +#include +#include + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +namespace Kokkos { +namespace Impl { + +template +T* reduce_value(T* x, std::true_type) [[hc]] +{ + return x; +} + +template +T& reduce_value(T* x, std::false_type) [[hc]] +{ + return *x; +} + +#if KOKKOS_ROCM_HAS_WORKAROUNDS +struct always_true +{ + template + bool operator()(Ts&&...) const + { + return true; + } +}; +#endif + +template< class Tag, class F, class ReducerType, class Invoker, class T > +void reduce_enqueue( + const int szElements, // size of the extent + const F & f, + const ReducerType& reducer, + Invoker invoke, + T * const output_result, + int const output_length, + const int team_size=64, + const int vector_size=1, + int const shared_size=0) +{ + using namespace hc ; + + typedef Kokkos::Impl::if_c< std::is_same::value, F, ReducerType> ReducerConditional; + typedef typename ReducerConditional::type ReducerTypeFwd; + + typedef Kokkos::Impl::FunctorValueTraits< ReducerTypeFwd , Tag > ValueTraits ; + typedef Kokkos::Impl::FunctorValueInit< ReducerTypeFwd , Tag > ValueInit ; + typedef Kokkos::Impl::FunctorValueJoin< ReducerTypeFwd , Tag > ValueJoin ; + typedef Kokkos::Impl::FunctorFinal< ReducerTypeFwd , Tag > ValueFinal ; + + typedef typename ValueTraits::pointer_type pointer_type ; + typedef typename ValueTraits::reference_type reference_type ; + + if (output_length < 1) return; + + assert(output_result != nullptr); + const auto td = get_tile_desc(szElements,output_length,team_size,vector_size, shared_size); + + // allocate host and device memory for the results from each team + std::vector result_cpu(td.num_tiles*output_length); + hc::array result(td.num_tiles*output_length); + + auto fut = tile_for(td, [=,&result](hc::tiled_index<1> t_idx, tile_buffer buffer) [[hc]] + { + const auto local = t_idx.local[0]; + const auto global = t_idx.global[0]; + const auto tile = t_idx.tile[0]; + + buffer.action_at(local, [&](T* state) + { + ValueInit::init(ReducerConditional::select(f, reducer), state); + invoke(make_rocm_invoke_fn(f), t_idx, td, reduce_value(state, std::is_pointer())); + }); + t_idx.barrier.wait(); + + // Reduce within a tile using multiple threads. +// even though buffer.size is always 64, the value 64 must be hard coded below +// due to a compiler bug +// for(std::size_t s = 1; s < buffer.size(); s *= 2) + for(std::size_t s = 1; s < 64; s *= 2) + { + const std::size_t index = 2 * s * local; +// if (index < buffer.size()) + if (index < 64) + { + buffer.action_at(index, index + s, [&](T* x, T* y) + { + ValueJoin::join(ReducerConditional::select(f, reducer), x, y); + }); + } + t_idx.barrier.wait(); + } + + // Store the tile result in the global memory. + if (local == 0) + { +#if KOKKOS_ROCM_HAS_WORKAROUNDS + // Workaround for assigning from LDS memory: std::copy should work + // directly + buffer.action_at(0, [&](T* x) + { +#if ROCM15 +// new ROCM 15 address space changes aren't implemented in std algorithms yet + auto * src = reinterpret_cast(x); + auto * dest = reinterpret_cast(result.data()+tile*output_length); + for(int i=0; i + +/* only compile this file if ROCM is enabled for Kokkos */ +#if defined( __HCC__ ) && defined( KOKKOS_ENABLE_ROCM ) + +//#include + +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl( T & out , T const & in , int lane , + typename std::enable_if< sizeof(int) == sizeof(T) , int >::type width ) +{ + *reinterpret_cast(&out) = + __shfl( *reinterpret_cast(&in) , lane , width ); +} + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl( T & out , T const & in , int lane , + typename std::enable_if + < ( sizeof(int) < sizeof(T) ) && ( 0 == ( sizeof(T) % sizeof(int) ) ) + , int >::type width ) +{ + enum : int { N = sizeof(T) / sizeof(int) }; + + for ( int i = 0 ; i < N ; ++i ) { + reinterpret_cast(&out)[i] = + __shfl( reinterpret_cast(&in)[i] , lane , width ); + } +} + +//---------------------------------------------------------------------------- + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl_down( T & out , T const & in , int delta , + typename std::enable_if< sizeof(int) == sizeof(T) , int >::type width ) +{ + *reinterpret_cast(&out) = + __shfl_down( *reinterpret_cast(&in) , delta , width ); +} + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl_down( T & out , T const & in , int delta , + typename std::enable_if + < ( sizeof(int) < sizeof(T) ) && ( 0 == ( sizeof(T) % sizeof(int) ) ) + , int >::type width ) +{ + enum : int { N = sizeof(T) / sizeof(int) }; + + for ( int i = 0 ; i < N ; ++i ) { + reinterpret_cast(&out)[i] = + __shfl_down( reinterpret_cast(&in)[i] , delta , width ); + } +} + +//---------------------------------------------------------------------------- + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl_up( T & out , T const & in , int delta , + typename std::enable_if< sizeof(int) == sizeof(T) , int >::type width ) +{ + *reinterpret_cast(&out) = + __shfl_up( *reinterpret_cast(&in) , delta , width ); +} + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl_up( T & out , T const & in , int delta , + typename std::enable_if + < ( sizeof(int) < sizeof(T) ) && ( 0 == ( sizeof(T) % sizeof(int) ) ) + , int >::type width ) +{ + enum : int { N = sizeof(T) / sizeof(int) }; + + for ( int i = 0 ; i < N ; ++i ) { + reinterpret_cast(&out)[i] = + __shfl_up( reinterpret_cast(&in)[i] , delta , width ); + } +} +#if 0 +//---------------------------------------------------------------------------- +/** \brief Reduce within a workgroup over team.vector_length(), the "vector" dimension. + * + * This will be called within a nested, intra-team parallel operation. + * Use shuffle operations to avoid conflicts with shared memory usage. + * + * Requires: + * team.vector_length() is power of 2 + * team.vector_length() <= 32 (one workgroup) + * + * Cannot use "butterfly" pattern because floating point + * addition is non-associative. Therefore, must broadcast + * the final result. + */ +template< class Reducer > +KOKKOS_INLINE_FUNCTION +void rocm_intra_workgroup_vector_reduce( Reducer const & reducer ) +{ + static_assert( + std::is_reference< typename Reducer::reference_type >::value , "" ); + + if ( 1 < team.vector_length() ) { + + typename Reducer::value_type tmp ; + + for ( int i = team.vector_length() ; ( i >>= 1 ) ; ) { + + rocm_shfl_down( tmp , reducer.reference() , i , team.vector_length() ); + + if ( team.vector_rank() < i ) { reducer.join( reducer.data() , & tmp ); } + } + + // Broadcast from root "lane" to all other "lanes" + + rocm_shfl( reducer.reference() , reducer.reference() , 0 , team.vector_length() ); + } +} + +/** \brief Inclusive scan over team.vector_length(), the "vector" dimension. + * + * This will be called within a nested, intra-team parallel operation. + * Use shuffle operations to avoid conflicts with shared memory usage. + * + * Algorithm is concurrent bottom-up reductions in triangular pattern + * where each ROCM thread is the root of a reduction tree from the + * zeroth ROCM thread to itself. + * + * Requires: + * team.vector_length() is power of 2 + * team.vector_length() <= 32 (one workgroup) + */ +template< typename ValueType > +KOKKOS_INLINE_FUNCTION +void rocm_intra_workgroup_vector_inclusive_scan( ValueType & local ) +{ + ValueType tmp ; + + // Bottom up: + // [t] += [t-1] if t >= 1 + // [t] += [t-2] if t >= 2 + // [t] += [t-4] if t >= 4 + // ... + + for ( int i = 1 ; i < team.vector_length() ; i <<= 1 ) { + + rocm_shfl_up( tmp , local , i , team.vector_length() ); + + if ( i <= team.vector_rank() ) { local += tmp ; } + } +} +#endif + +//---------------------------------------------------------------------------- +/* + * Algorithmic constraints: + * (a) threads with same team.team_rank() have same value + * (b) team.vector_length() == power of two + * (c) blockDim.z == 1 + */ + +template< class ValueType , class JoinOp> +KOKKOS_INLINE_FUNCTION +void rocm_intra_workgroup_reduction( const ROCmTeamMember& team, + ValueType& result, + const JoinOp& join) { + + unsigned int shift = 1; + int max_active_thread = team.team_size(); + + //Reduce over values from threads with different team.team_rank() + while(team.vector_length() * shift < 32 ) { + const ValueType tmp = shfl_down(result, team.vector_length()*shift,32u); + //Only join if upper thread is active (this allows non power of two for team.team_size() + if(team.team_rank() + shift < max_active_thread) + join(result , tmp); + shift*=2; + } + + result = shfl(result,0,32); +} + +template< class ValueType , class JoinOp> +KOKKOS_INLINE_FUNCTION +void rocm_inter_workgroup_reduction( const ROCmTeamMember& team, + ValueType& value, + const JoinOp& join) { + + #define STEP_WIDTH 4 + + tile_static ValueType sh_result[256]; + int max_active_thread = team.team_size(); + ValueType* result = (ValueType*) & sh_result; + const unsigned step = 256 / team.vector_length(); + unsigned shift = STEP_WIDTH; + const int id = team.team_rank()%step==0?team.team_rank()/step:65000; + if(id < STEP_WIDTH ) { + result[id] = value; + } + team.team_barrier(); + + while (shift<=max_active_thread/step) { + if(shift<=id && shift+STEP_WIDTH>id && team.vector_rank()==0) { + join(result[id%STEP_WIDTH],value); + } + team.team_barrier(); + shift+=STEP_WIDTH; + } + + + value = result[0]; + for(int i = 1; (i*step +KOKKOS_INLINE_FUNCTION +void rocm_intra_block_reduction( ROCmTeamMember& team, + ValueType& value, + const JoinOp& join, + const int max_active_thread) { + rocm_intra_workgroup_reduction(team,value,join,max_active_thread); + rocm_inter_workgroup_reduction(team,value,join,max_active_thread); +} + +template< class FunctorType , class JoinOp , class ArgTag = void > +KOKKOS_INLINE_FUNCTION +bool rocm_inter_block_reduction( ROCmTeamMember& team, + typename FunctorValueTraits< FunctorType , ArgTag >::reference_type value, + typename FunctorValueTraits< FunctorType , ArgTag >::reference_type neutral, + const JoinOp& join, + ROCm::size_type * const m_scratch_space, + typename FunctorValueTraits< FunctorType , ArgTag >::pointer_type const result, + ROCm::size_type * const m_scratch_flags, + const int max_active_thread) { +#ifdef __ROCM_ARCH__ + typedef typename FunctorValueTraits< FunctorType , ArgTag >::pointer_type pointer_type; + typedef typename FunctorValueTraits< FunctorType , ArgTag >::value_type value_type; + + //Do the intra-block reduction with shfl operations and static shared memory + rocm_intra_block_reduction(value,join,max_active_thread); + + const unsigned id = team.team_rank()*team.vector_length() + team.vector_rank(); + + //One thread in the block writes block result to global scratch_memory + if(id == 0 ) { + pointer_type global = ((pointer_type) m_scratch_space) + blockIdx.x; + *global = value; + } + + //One workgroup of last block performs inter block reduction through loading the block values from global scratch_memory + bool last_block = false; + + team.team_barrier(); + if ( id < 32 ) { + ROCm::size_type count; + + //Figure out whether this is the last block + if(id == 0) + count = Kokkos::atomic_fetch_add(m_scratch_flags,1); + count = Kokkos::shfl(count,0,32); + + //Last block does the inter block reduction + if( count == gridDim.x - 1) { + //set flag back to zero + if(id == 0) + *m_scratch_flags = 0; + last_block = true; + value = neutral; + + pointer_type const volatile global = (pointer_type) m_scratch_space ; + + //Reduce all global values with splitting work over threads in one workgroup + const int step_size = team.vector_length()*team.team_size() < 32 ? team.vector_length()*team.team_size() : 32; + for(int i=id; i 1) { + value_type tmp = Kokkos::shfl_down(value, 1,32); + if( id + 1 < gridDim.x ) + join(value, tmp); + } + if (team.vector_length()*team.team_size() > 2) { + value_type tmp = Kokkos::shfl_down(value, 2,32); + if( id + 2 < gridDim.x ) + join(value, tmp); + } + if (team.vector_length()*team.team_size() > 4) { + value_type tmp = Kokkos::shfl_down(value, 4,32); + if( id + 4 < gridDim.x ) + join(value, tmp); + } + if (team.vector_length()*team.team_size() > 8) { + value_type tmp = Kokkos::shfl_down(value, 8,32); + if( id + 8 < gridDim.x ) + join(value, tmp); + } + if (team.vector_length()*team.team_size() > 16) { + value_type tmp = Kokkos::shfl_down(value, 16,32); + if( id + 16 < gridDim.x ) + join(value, tmp); + } + } + } + + //The last block has in its thread=0 the global reduction value through "value" + return last_block; +#else + return true; +#endif +} +#endif +#if 0 + +//---------------------------------------------------------------------------- +// See section B.17 of ROCm C Programming Guide Version 3.2 +// for discussion of +// __launch_bounds__(maxThreadsPerBlock,minBlocksPerMultiprocessor) +// function qualifier which could be used to improve performance. +//---------------------------------------------------------------------------- +// Maximize shared memory and minimize L1 cache: +// rocmFuncSetCacheConfig(MyKernel, rocmFuncCachePreferShared ); +// For 2.0 capability: 48 KB shared and 16 KB L1 +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +/* + * Algorithmic constraints: + * (a) team.team_size() is a power of two + * (b) team.team_size() <= 512 + * (c) team.vector_length() == blockDim.z == 1 + */ + +template< bool DoScan , class FunctorType , class ArgTag > +KOKKOS_INLINE_FUNCTION +void rocm_intra_block_reduce_scan( const FunctorType & functor , + const typename FunctorValueTraits< FunctorType , ArgTag >::pointer_type base_data ) +{ + typedef FunctorValueTraits< FunctorType , ArgTag > ValueTraits ; + typedef FunctorValueJoin< FunctorType , ArgTag > ValueJoin ; + + typedef typename ValueTraits::pointer_type pointer_type ; + + const unsigned value_count = ValueTraits::value_count( functor ); + const unsigned BlockSizeMask = team.team_size() - 1 ; + + // Must have power of two thread count + + if ( BlockSizeMask & team.team_size() ) { Kokkos::abort("ROCm::rocm_intra_block_scan requires power-of-two blockDim"); } + +#define BLOCK_REDUCE_STEP( R , TD , S ) \ + if ( ! ( R & ((1<<(S+1))-1) ) ) { ValueJoin::join( functor , TD , (TD - (value_count< +KOKKOS_INLINE_FUNCTION +bool rocm_single_inter_block_reduce_scan( const FunctorType & functor , + const ROCm::size_type block_id , + const ROCm::size_type block_count , + ROCm::size_type * const shared_data , + ROCm::size_type * const global_data , + ROCm::size_type * const global_flags ) +{ + typedef ROCm::size_type size_type ; + typedef FunctorValueTraits< FunctorType , ArgTag > ValueTraits ; + typedef FunctorValueJoin< FunctorType , ArgTag > ValueJoin ; + typedef FunctorValueInit< FunctorType , ArgTag > ValueInit ; + typedef FunctorValueOps< FunctorType , ArgTag > ValueOps ; + + typedef typename ValueTraits::pointer_type pointer_type ; + typedef typename ValueTraits::reference_type reference_type ; + typedef typename ValueTraits::value_type value_type ; + + // '__ffs' = position of the least significant bit set to 1. + // 'team.team_size()' is guaranteed to be a power of two so this + // is the integral shift value that can replace an integral divide. + const unsigned BlockSizeShift = __ffs( team.team_size() ) - 1 ; + const unsigned BlockSizeMask = team.team_size() - 1 ; + + // Must have power of two thread count + if ( BlockSizeMask & team.team_size() ) { Kokkos::abort("ROCm::rocm_single_inter_block_reduce_scan requires power-of-two blockDim"); } + + const integral_nonzero_constant< size_type , ValueTraits::StaticValueSize / sizeof(size_type) > + word_count( ValueTraits::value_size( functor ) / sizeof(size_type) ); + + // Reduce the accumulation for the entire block. + rocm_intra_block_reduce_scan( functor , pointer_type(shared_data) ); + + { + // Write accumulation total to global scratch space. + // Accumulation total is the last thread's data. + size_type * const shared = shared_data + word_count.value * BlockSizeMask ; + size_type * const global = global_data + word_count.value * block_id ; + +#if (__ROCM_ARCH__ < 500) + for ( size_type i = team.team_rank() ; i < word_count.value ; i += team.team_size() ) { global[i] = shared[i] ; } +#else + for ( size_type i = 0 ; i < word_count.value ; i += 1 ) { global[i] = shared[i] ; } +#endif + + } + + // Contributing blocks note that their contribution has been completed via an atomic-increment flag + // If this block is not the last block to contribute to this group then the block is done. + team.team_barrier(); + const bool is_last_block = + ! team.team_reduce( team.team_rank() ? 0 : ( 1 + atomicInc( global_flags , block_count - 1 ) < block_count ) ,Impl::JoinAdd()); + + if ( is_last_block ) { + + const size_type b = ( long(block_count) * long(team.team_rank()) ) >> BlockSizeShift ; + const size_type e = ( long(block_count) * long( team.team_rank() + 1 ) ) >> BlockSizeShift ; + + { + void * const shared_ptr = shared_data + word_count.value * team.team_rank() ; + reference_type shared_value = ValueInit::init( functor , shared_ptr ); + + for ( size_type i = b ; i < e ; ++i ) { + ValueJoin::join( functor , shared_ptr , global_data + word_count.value * i ); + } + } + + rocm_intra_block_reduce_scan( functor , pointer_type(shared_data) ); + + if ( DoScan ) { + + size_type * const shared_value = shared_data + word_count.value * ( team.team_rank() ? team.team_rank() - 1 : team.team_size() ); + + if ( ! team.team_rank() ) { ValueInit::init( functor , shared_value ); } + + // Join previous inclusive scan value to each member + for ( size_type i = b ; i < e ; ++i ) { + size_type * const global_value = global_data + word_count.value * i ; + ValueJoin::join( functor , shared_value , global_value ); + ValueOps ::copy( functor , global_value , shared_value ); + } + } + } + + return is_last_block ; +} + +// Size in bytes required for inter block reduce or scan +template< bool DoScan , class FunctorType , class ArgTag > +inline +unsigned rocm_single_inter_block_reduce_scan_shmem( const FunctorType & functor , const unsigned BlockSize ) +{ + return ( BlockSize + 2 ) * Impl::FunctorValueTraits< FunctorType , ArgTag >::value_size( functor ); +} +#endif + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( __ROCMCC__ ) */ +#endif /* KOKKOS_ROCM_REDUCESCAN_HPP */ + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Scan.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Scan.hpp new file mode 100644 index 0000000000..acf75f6f13 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Scan.hpp @@ -0,0 +1,157 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Kokkos { +namespace Impl { + +template< class Tag, class F, class TransformIndex> +void scan_enqueue( + const int len, + const F & f, + TransformIndex transform_index) +{ + typedef Kokkos::Impl::FunctorValueTraits< F, Tag> ValueTraits; + typedef Kokkos::Impl::FunctorValueInit< F, Tag> ValueInit; + typedef Kokkos::Impl::FunctorValueJoin< F, Tag> ValueJoin; + typedef Kokkos::Impl::FunctorValueOps< F, Tag> ValueOps; + + typedef typename ValueTraits::value_type value_type; + typedef typename ValueTraits::pointer_type pointer_type; + typedef typename ValueTraits::reference_type reference_type; + + const auto td = get_tile_desc(len); + std::vector result_cpu(td.num_tiles); + hc::array result(td.num_tiles); + hc::array scratch(len); + + tile_for(td, [&,len,td](hc::tiled_index<1> t_idx, tile_buffer buffer) [[hc]] + { + const auto local = t_idx.local[0]; + const auto global = t_idx.global[0]; + const auto tile = t_idx.tile[0]; + + // Join tile buffer elements + const auto join = [&](std::size_t i, std::size_t j) + { + buffer.action_at(i, j, [&](value_type& x, const value_type& y) + { + ValueJoin::join(f, &x, &y); + }); + }; + + // Copy into tile + buffer.action_at(local, [&](value_type& state) + { + ValueInit::init(f, &state); + if (global < len) rocm_invoke(f, transform_index(t_idx, td.tile_size, td.num_tiles), state, false); + }); + t_idx.barrier.wait(); + // Up sweep phase + for(std::size_t d=1;d0;d/=2) + { + auto d2 = 2*d; + auto i = local*d2; + if(i1) +// std::partial_sum(result_cpu.data(), result_cpu.data()+(td.num_tiles-1)*sizeof(value_type), result_cpu.data(), make_join_operator(f)); +// use this implementation instead. + for(int i=1; i(len).tile(td.tile_size), [&,len,td](hc::tiled_index<1> t_idx) [[hc]] + { +// const auto local = t_idx.local[0]; + const auto global = t_idx.global[0]; + const auto tile = t_idx.tile[0]; + + if (global < len) + { + auto final_state = scratch[global]; + +// the join is locking up, at least with 1.6 + if (tile != 0) final_state += result[tile-1]; +// if (tile != 0) ValueJoin::join(f, &final_state, &result[tile-1]); + rocm_invoke(f, transform_index(t_idx, td.tile_size, td.num_tiles), final_state, true); + } + }).wait(); +} + +} // namespace Impl +} // namespace Kokkos diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp new file mode 100644 index 0000000000..e2b6738076 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp @@ -0,0 +1,726 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include +#include +#include +#include + +/* only compile this file if ROCM is enabled for Kokkos */ +#ifdef KOKKOS_ENABLE_ROCM + +#include +#include +#include + +#include + +#if defined(KOKKOS_ENABLE_PROFILING) +#include +#endif + + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +#define ROCM_SAFE_CALL +namespace Kokkos { +namespace Impl { +using namespace hc; + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + + + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + + +hc::completion_future DeepCopyAsyncROCm( void * dst , const void * src , size_t n) { + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + return(av.copy_async( src , dst , n)); +} + +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + + +namespace Kokkos { + +void Experimental::ROCmSpace::access_error() +{ + const std::string msg("Kokkos::Experimental::ROCmSpace::access_error attempt to execute Experimental::ROCm function from non-ROCm space" ); + Kokkos::Impl::throw_runtime_exception( msg ); +} + +void Experimental::ROCmSpace::access_error( const void * const ) +{ + const std::string msg("Kokkos::Experimental::ROCmSpace::access_error attempt to execute Experimental::ROCm function from non-ROCm space" ); + Kokkos::Impl::throw_runtime_exception( msg ); +} + +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { + +ROCmSpace::ROCmSpace() + : m_device( ROCm().rocm_device() ) +{ +} + +ROCmHostPinnedSpace::ROCmHostPinnedSpace() +{ +} + +void * ROCmSpace::allocate( const size_t arg_alloc_size ) const +{ + void * ptr = Kokkos::Impl::rocm_device_allocate( arg_alloc_size ); + return ptr ; +} + +void * Experimental::ROCmHostPinnedSpace::allocate( const size_t arg_alloc_size ) const +{ + void * ptr = Kokkos::Impl::rocm_hostpinned_allocate( arg_alloc_size ); + return ptr ; +} + +void ROCmSpace::deallocate( void * const arg_alloc_ptr , const size_t /* arg_alloc_size */ ) const +{ + Kokkos::Impl::rocm_device_free(arg_alloc_ptr); +} + +void Experimental::ROCmHostPinnedSpace::deallocate( void * const arg_alloc_ptr , const size_t /* arg_alloc_size */ ) const +{ + Kokkos::Impl::rocm_device_free(arg_alloc_ptr); +} + +} // namespace Experimental +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +SharedAllocationRecord< void , void > +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::s_root_record ; + +SharedAllocationRecord< void , void > +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::s_root_record ; + + +std::string +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::get_label() const +{ + SharedAllocationHeader header ; + + Kokkos::Impl::DeepCopy< Kokkos::HostSpace , Kokkos::Experimental::ROCmSpace >( & header , RecordBase::head() , sizeof(SharedAllocationHeader) ); + + return std::string( header.m_label ); +} + +std::string +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::get_label() const +{ + return std::string( RecordBase::head()->m_label ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > * +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +allocate( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + ) +{ + return new SharedAllocationRecord( arg_space , arg_label , arg_alloc_size ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void > * +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +allocate( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + ) +{ + return new SharedAllocationRecord( arg_space , arg_label , arg_alloc_size ); +} + +void +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +deallocate( SharedAllocationRecord< void , void > * arg_rec ) +{ + delete static_cast(arg_rec); +} + +void +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +deallocate( SharedAllocationRecord< void , void > * arg_rec ) +{ + delete static_cast(arg_rec); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +~SharedAllocationRecord() +{ + #if defined(KOKKOS_ENABLE_PROFILING) + if(Kokkos::Profiling::profileLibraryLoaded()) { + + SharedAllocationHeader header ; + Kokkos::Impl::DeepCopy( & header , RecordBase::m_alloc_ptr , sizeof(SharedAllocationHeader) ); + + Kokkos::Profiling::deallocateData( + Kokkos::Profiling::SpaceHandle(Kokkos::Experimental::ROCmSpace::name()),header.m_label, + data(),size()); + } + #endif + + m_space.deallocate( SharedAllocationRecord< void , void >::m_alloc_ptr + , SharedAllocationRecord< void , void >::m_alloc_size + ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +~SharedAllocationRecord() +{ + #if defined(KOKKOS_ENABLE_PROFILING) + if(Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::deallocateData( + Kokkos::Profiling::SpaceHandle(Kokkos::Experimental::ROCmHostPinnedSpace::name()),RecordBase::m_alloc_ptr->m_label, + data(),size()); + } + #endif + + m_space.deallocate( SharedAllocationRecord< void , void >::m_alloc_ptr + , SharedAllocationRecord< void , void >::m_alloc_size + ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +SharedAllocationRecord( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + , const SharedAllocationRecord< void , void >::function_type arg_dealloc + ) + // Pass through allocated [ SharedAllocationHeader , user_memory ] + // Pass through deallocation function + : SharedAllocationRecord< void , void > + ( & SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::s_root_record + , reinterpret_cast( arg_space.allocate( sizeof(SharedAllocationHeader) + arg_alloc_size ) ) + , sizeof(SharedAllocationHeader) + arg_alloc_size + , arg_dealloc + ) + , m_space( arg_space ) +{ + #if defined(KOKKOS_ENABLE_PROFILING) + if(Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::allocateData(Kokkos::Profiling::SpaceHandle(arg_space.name()),arg_label,data(),arg_alloc_size); + } + #endif + + SharedAllocationHeader header ; + + // Fill in the Header information + header.m_record = static_cast< SharedAllocationRecord< void , void > * >( this ); + + strncpy( header.m_label + , arg_label.c_str() + , SharedAllocationHeader::maximum_label_length + ); + + // Copy to device memory + Kokkos::Impl::DeepCopy( RecordBase::m_alloc_ptr , & header , sizeof(SharedAllocationHeader) ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +SharedAllocationRecord( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + , const SharedAllocationRecord< void , void >::function_type arg_dealloc + ) + // Pass through allocated [ SharedAllocationHeader , user_memory ] + // Pass through deallocation function + : SharedAllocationRecord< void , void > + ( & SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::s_root_record + , reinterpret_cast( arg_space.allocate( sizeof(SharedAllocationHeader) + arg_alloc_size ) ) + , sizeof(SharedAllocationHeader) + arg_alloc_size + , arg_dealloc + ) + , m_space( arg_space ) +{ + #if defined(KOKKOS_ENABLE_PROFILING) + if(Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::allocateData(Kokkos::Profiling::SpaceHandle(arg_space.name()),arg_label,data(),arg_alloc_size); + } + #endif + // Fill in the Header information, directly accessible via host pinned memory + + RecordBase::m_alloc_ptr->m_record = this ; + + strncpy( RecordBase::m_alloc_ptr->m_label + , arg_label.c_str() + , SharedAllocationHeader::maximum_label_length + ); +} + +//---------------------------------------------------------------------------- + +void * SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +allocate_tracked( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_alloc_label + , const size_t arg_alloc_size ) +{ + if ( ! arg_alloc_size ) return (void *) 0 ; + + SharedAllocationRecord * const r = + allocate( arg_space , arg_alloc_label , arg_alloc_size ); + + RecordBase::increment( r ); + + return r->data(); +} + +void SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +deallocate_tracked( void * const arg_alloc_ptr ) +{ + if ( arg_alloc_ptr != 0 ) { + SharedAllocationRecord * const r = get_record( arg_alloc_ptr ); + + RecordBase::decrement( r ); + } +} + +void * SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +reallocate_tracked( void * const arg_alloc_ptr + , const size_t arg_alloc_size ) +{ + SharedAllocationRecord * const r_old = get_record( arg_alloc_ptr ); + SharedAllocationRecord * const r_new = allocate( r_old->m_space , r_old->get_label() , arg_alloc_size ); + + Kokkos::Impl::DeepCopy( r_new->data() , r_old->data() + , std::min( r_old->size() , r_new->size() ) ); + + RecordBase::increment( r_new ); + RecordBase::decrement( r_old ); + + return r_new->data(); +} + +#if 0 +void * SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +allocate_tracked( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_alloc_label + , const size_t arg_alloc_size ) +{ + if ( ! arg_alloc_size ) return (void *) 0 ; + + SharedAllocationRecord * const r = + allocate( arg_space , arg_alloc_label , arg_alloc_size ); + + RecordBase::increment( r ); + + return r->data(); +} + +void SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +deallocate_tracked( void * const arg_alloc_ptr ) +{ + if ( arg_alloc_ptr != 0 ) { + SharedAllocationRecord * const r = get_record( arg_alloc_ptr ); + + RecordBase::decrement( r ); + } +} + +void * SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +reallocate_tracked( void * const arg_alloc_ptr + , const size_t arg_alloc_size ) +{ + SharedAllocationRecord * const r_old = get_record( arg_alloc_ptr ); + SharedAllocationRecord * const r_new = allocate( r_old->m_space , r_old->get_label() , arg_alloc_size ); + + Kokkos::Impl::DeepCopy( r_new->data() , r_old->data() + , std::min( r_old->size() , r_new->size() ) ); + + RecordBase::increment( r_new ); + RecordBase::decrement( r_old ); + + return r_new->data(); +} +#endif + +//---------------------------------------------------------------------------- + +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > * +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::get_record( void * alloc_ptr ) +{ + using Header = SharedAllocationHeader ; + using RecordBase = SharedAllocationRecord< void , void > ; + using RecordROCm = SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > ; + +#if 0 + // Copy the header from the allocation + Header head ; + + Header const * const head_rocm = alloc_ptr ? Header::get_header( alloc_ptr ) : (Header*) 0 ; + + if ( alloc_ptr ) { + Kokkos::Impl::DeepCopy( & head , head_rocm , sizeof(SharedAllocationHeader) ); + } + + RecordROCm * const record = alloc_ptr ? static_cast< RecordROCm * >( head.m_record ) : (RecordROCm *) 0 ; + + if ( ! alloc_ptr || record->m_alloc_ptr != head_rocm ) { + Kokkos::Impl::throw_runtime_exception( std::string("Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::get_record ERROR" ) ); + } + +#else + + // Iterate the list to search for the record among all allocations + // requires obtaining the root of the list and then locking the list. + + RecordROCm * const record = static_cast< RecordROCm * >( RecordBase::find( & s_root_record , alloc_ptr ) ); + + if ( record == 0 ) { + Kokkos::Impl::throw_runtime_exception( std::string("Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::get_record ERROR" ) ); + } + +#endif + + return record ; +} + +#if 0 +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void > * +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::get_record( void * alloc_ptr ) +{ + using Header = SharedAllocationHeader ; + using RecordROCm = SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void > ; + + Header * const h = alloc_ptr ? reinterpret_cast< Header * >( alloc_ptr ) - 1 : (Header *) 0 ; + + if ( ! alloc_ptr || h->m_record->m_alloc_ptr != h ) { + Kokkos::Impl::throw_runtime_exception( std::string("Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::get_record ERROR" ) ); + } + + return static_cast< RecordROCm * >( h->m_record ); +} +#endif + +// Iterate records to print orphaned memory ... +void +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +print_records( std::ostream & s , const Kokkos::Experimental::ROCmSpace & space , bool detail ) +{ + SharedAllocationRecord< void , void > * r = & s_root_record ; + + char buffer[256] ; + + SharedAllocationHeader head ; + + if ( detail ) { + do { + if ( r->m_alloc_ptr ) { + Kokkos::Impl::DeepCopy( & head , r->m_alloc_ptr , sizeof(SharedAllocationHeader) ); + } + else { + head.m_label[0] = 0 ; + } + + //Formatting dependent on sizeof(uintptr_t) + const char * format_string; + + if (sizeof(uintptr_t) == sizeof(unsigned long)) { + format_string = "ROCm addr( 0x%.12lx ) list( 0x%.12lx 0x%.12lx ) extent[ 0x%.12lx + %.8ld ] count(%d) dealloc(0x%.12lx) %s\n"; + } + else if (sizeof(uintptr_t) == sizeof(unsigned long long)) { + format_string = "ROCm addr( 0x%.12llx ) list( 0x%.12llx 0x%.12llx ) extent[ 0x%.12llx + %.8ld ] count(%d) dealloc(0x%.12llx) %s\n"; + } + + snprintf( buffer , 256 + , format_string + , reinterpret_cast( r ) + , reinterpret_cast( r->m_prev ) + , reinterpret_cast( r->m_next ) + , reinterpret_cast( r->m_alloc_ptr ) + , r->m_alloc_size + , r->m_count + , reinterpret_cast( r->m_dealloc ) + , head.m_label + ); + std::cout << buffer ; + r = r->m_next ; + } while ( r != & s_root_record ); + } + else { + do { + if ( r->m_alloc_ptr ) { + + Kokkos::Impl::DeepCopy( & head , r->m_alloc_ptr , sizeof(SharedAllocationHeader) ); + + //Formatting dependent on sizeof(uintptr_t) + const char * format_string; + + if (sizeof(uintptr_t) == sizeof(unsigned long)) { + format_string = "ROCm [ 0x%.12lx + %ld ] %s\n"; + } + else if (sizeof(uintptr_t) == sizeof(unsigned long long)) { + format_string = "ROCm [ 0x%.12llx + %ld ] %s\n"; + } + + snprintf( buffer , 256 + , format_string + , reinterpret_cast< uintptr_t >( r->data() ) + , r->size() + , head.m_label + ); + } + else { + snprintf( buffer , 256 , "ROCm [ 0 + 0 ]\n" ); + } + std::cout << buffer ; + r = r->m_next ; + } while ( r != & s_root_record ); + } +} +#if 0 +void +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +print_records( std::ostream & s , const Kokkos::Experimental::ROCmHostPinnedSpace & space , bool detail ) +{ + SharedAllocationRecord< void , void >::print_host_accessible_records( s , "ROCmHostPinned" , & s_root_record , detail ); +} +#endif + +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +namespace Kokkos { +namespace { +#if 0 + KOKKOS_INLINE_FUNCTION void init_lock_array_kernel_atomic() { + unsigned i = tindex()*team_size() + lindex(); + + if(i>>(); + init_lock_array_kernel_scratch_threadid<<<(Kokkos::Experimental::ROCm::concurrency()+255)/256,256>>>(Kokkos::Experimental::ROCm::concurrency()); + } +} +#endif + +void* rocm_resize_scratch_space(size_t bytes, bool force_shrink) { + static void* ptr = NULL; + static size_t current_size = 0; + if(current_size == 0) { + current_size = bytes; + ptr = Kokkos::kokkos_malloc("ROCmSpace::ScratchMemory",current_size); + } + if(bytes > current_size) { + current_size = bytes; + ptr = Kokkos::kokkos_realloc(ptr,current_size); + } + if((bytes < current_size) && (force_shrink)) { + current_size = bytes; + Kokkos::kokkos_free(ptr); + ptr = Kokkos::kokkos_malloc("ROCmSpace::ScratchMemory",current_size); + } + return ptr; +} + +} +} + +#endif // KOKKOS_ENABLE_ROCM + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.cpp new file mode 100644 index 0000000000..317995c4f4 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.cpp @@ -0,0 +1,174 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +#if defined( KOKKOS_ENABLE_ROCM ) && defined( KOKKOS_ENABLE_TASKDAG ) + +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template class TaskQueue< Kokkos::Experimental::ROCm > ; + + +//---------------------------------------------------------------------------- +KOKKOS_INLINE_FUNCTION +void TaskQueueSpecialization< Kokkos::Experimental::ROCm >::driver + ( TaskQueueSpecialization< Kokkos::Experimental::ROCm >::queue_type * const queue, + hc::tiled_index<3> threadIdx ) +{ + using Member = TaskExec< Kokkos::Experimental::ROCm > ; + using Queue = TaskQueue< Kokkos::Experimental::ROCm > ; + using task_root_type = TaskBase< void , void , void > ; + + task_root_type * const end = (task_root_type *) task_root_type::EndTag ; + + Member single_exec( 1, threadIdx ); + Member team_exec( threadIdx.tile_dim[0], threadIdx ); + + const int wavefront_lane = threadIdx.local[0] + threadIdx.local[1]* threadIdx.tile_dim[0] ; + + union { + task_root_type * ptr ; + int raw[2] ; + } task ; + + // Loop until all queues are empty and no tasks in flight + + do { + + // Each team lead attempts to acquire either a thread team task + // or collection of single thread tasks for the team. + + if ( 0 == wavefront_lane ) { + + task.ptr = 0 < *((volatile int *) & queue->m_ready_count) ? end : 0 ; + + // Loop by priority and then type + for ( int i = 0 ; i < Queue::NumQueue && end == task.ptr ; ++i ) { + for ( int j = 0 ; j < 2 && end == task.ptr ; ++j ) { + task.ptr = Queue::pop_ready_task( & queue->m_ready[i][j] ); + } + } + +#if 0 +printf("TaskQueue::driver(%d,%d) task(%lx)\n",threadIdx.z,blockIdx.x + , uintptr_t(task.ptr)); +#endif + + } + + // shuffle broadcast + + task.raw[0] = hc::__shfl( task.raw[0] , 0 ); + task.raw[1] = hc::__shfl( task.raw[1] , 0 ); + + if ( 0 == task.ptr ) break ; // 0 == queue->m_ready_count + + if ( end != task.ptr ) { + if ( task_root_type::TaskTeam == task.ptr->m_task_type ) { + // Thread Team Task + (*task.ptr->m_apply)( task.ptr , & team_exec ); + } + else if ( 0 == threadIdx.local[1] ) { + // Single Thread Task + (*task.ptr->m_apply)( task.ptr , & single_exec ); + } + + if ( 0 == wavefront_lane ) { + queue->complete( task.ptr ); + } + } + } while(1); +} +#if 0 +namespace { +KOKKOS_INLINE_FUNCTION +void rocm_task_queue_execute( TaskQueue< Kokkos::Experimental::ROCm > * queue, + hc::tiled_index<3> threadIdx ) +{ TaskQueueSpecialization< Kokkos::Experimental::ROCm >::driver( queue, threadIdx ); } + +} +#endif +void TaskQueueSpecialization< Kokkos::Experimental::ROCm >::execute + ( TaskQueue< Kokkos::Experimental::ROCm > * const queue ) +{ + const int workgroups_per_wavefront = 4 ; + const int wavefront_size = Kokkos::Impl::ROCmTraits::WavefrontSize ; + const int cu_count = Kokkos::Impl::rocm_internal_cu_count(); +// const dim3 grid( Kokkos::Impl::rocm_internal_cu_count() , 1 , 1 ); +// const dim3 block( 1 , Kokkos::Impl::ROCmTraits::WorkGroupSize , workgroups_per_wavefront ); + + + + // Query the stack size, in bytes: + // If not large enough then set the stack size, in bytes: + +// adapted from the cuda code. TODO: Not at all sure that this is the proper +// to map the cuda grid/blocks/3D tiling to HCC +#if 0 + hc::extent< 3 > flat_extent( cu_count, + wavefront_size, workgroups_per_wavefront ); + hc::tiled_extent< 3 > team_extent = flat_extent.tile(1, + wavefront_size,workgroups_per_wavefront); + + hc::parallel_for_each( team_extent , [&](hc::tiled_index<3> idx) [[hc]] + { + TaskQueueSpecialization< Kokkos::Experimental::ROCm >::driver( queue,idx ); + }).wait(); +#endif +} + + +}} /* namespace Kokkos::Impl */ + +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_ROCM ) && defined( KOKKOS_ENABLE_TASKDAG ) */ + + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.hpp new file mode 100644 index 0000000000..16badcc1d4 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.hpp @@ -0,0 +1,458 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_ROCM_TASK_HPP +#define KOKKOS_IMPL_ROCM_TASK_HPP + +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template< class > class TaskExec ; + +template<> +class TaskQueueSpecialization< Kokkos::Experimental::ROCm > +{ +public: + + using execution_space = Kokkos::Experimental::ROCm ; + using queue_type = Kokkos::Impl::TaskQueue< execution_space > ; + using task_base_type = Kokkos::Impl::TaskBase< execution_space , void , void > ; + using member_type = TaskExec< execution_space > ; + + // Must specify memory space + using memory_space = Kokkos::HostSpace ; + + static + void iff_single_thread_recursive_execute( queue_type * const ) {} + + KOKKOS_INLINE_FUNCTION + static void driver( queue_type * const, hc::tiled_index<3> ); + + // Must provide task queue execution function + static void execute( queue_type * const ); + + // Must provide mechanism to set function pointer in + // execution space from the host process. + template< typename FunctorType > + static + void proc_set_apply( typename TaskBase< Kokkos::Experimental::ROCm + , typename FunctorType::value_type + , FunctorType + >::function_type * ptr ) + { + using TaskType = TaskBase< Kokkos::Experimental::ROCm + , typename FunctorType::value_type + , FunctorType + > ; + hc::extent< 1 > flat_extent( 1 ); + hc::tiled_extent< 1 > team_extent = flat_extent.tile( 1); + + hc::parallel_for_each( team_extent , [&](hc::tiled_index<1> idx) [[hc]] + { + *ptr = TaskType::apply ; + }).wait(); + } +}; + +/*template<> +KOKKOS_FUNCTION +void TaskQueue::decrement( typename TaskQueue::task_root_type * +) {} +*/ +extern template class TaskQueue< Kokkos::Experimental::ROCm > ; + +//---------------------------------------------------------------------------- +/**\brief Impl::TaskExec is the TaskScheduler::member_type + * passed to tasks running in a ROCm space. + * + * ROCm thread blocks for tasking are dimensioned: + * idx.tile_dim[0] == vector length + * idx.tile_dim[1] == team size + * idx.tile_dim[2] == number of teams + * where + * idx.tile_dim[0] * idx.tile_dim[1] == WavefrontSize + * + * Both single thread and thread team tasks are run by a full ROCm warp. + * A single thread task is called by warp lane #0 and the remaining + * lanes of the warp are idle. + */ +template<> +class TaskExec< Kokkos::Experimental::ROCm > +{ +private: + + TaskExec( TaskExec && ) = delete ; + TaskExec( TaskExec const & ) = delete ; + TaskExec & operator = ( TaskExec && ) = delete ; + TaskExec & operator = ( TaskExec const & ) = delete ; + + + friend class Kokkos::Impl::TaskQueue< Kokkos::Experimental::ROCm > ; + friend class Kokkos::Impl::TaskQueueSpecialization< Kokkos::Experimental::ROCm > ; + + int m_team_size ; + hc::tiled_index<3> m_idx; + +// KOKKOS_INLINE_FUNCTION TaskExec( int arg_team_size ) //TODO: tile_dim[0] +// : m_team_size( arg_team_size ) {} + + KOKKOS_INLINE_FUNCTION TaskExec( int arg_team_size, + hc::tiled_index<3> tidx) + : m_team_size( arg_team_size), + m_idx( tidx ) {} + +public: +// const auto local = t_idx.local[0]; +// const auto global = t_idx.global[0]; +// const auto tile = t_idx.tile[0]; + + hc::tiled_index<3> idx() const { return m_idx;} + +#if defined( __HCC_ACCELERATOR__ ) + KOKKOS_INLINE_FUNCTION void team_barrier() { /* __threadfence_block(); */ } + KOKKOS_INLINE_FUNCTION int team_rank() const { return m_idx.local[1] ; } // t_idx.tile[0]; + KOKKOS_INLINE_FUNCTION int team_size() const { return m_team_size ; } +#else + KOKKOS_INLINE_FUNCTION void team_barrier() {} + KOKKOS_INLINE_FUNCTION int team_rank() const { return 0 ; } + KOKKOS_INLINE_FUNCTION int team_size() const { return 0 ; } +#endif +}; + +}} /* namespace Kokkos::Impl */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +namespace Kokkos { + +template +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct > +TeamThreadRange + ( Impl::TaskExec< Kokkos::Experimental::ROCm > & thread, const iType & count ) +{ + return Impl::TeamThreadRangeBoundariesStruct >(thread,count); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct< typename std::common_type< iType1, iType2 >::type, + Impl::TaskExec< Kokkos::Experimental::ROCm > > +TeamThreadRange + ( Impl:: TaskExec< Kokkos::Experimental::ROCm > & thread, const iType1 & begin, const iType2 & end ) +{ + typedef typename std::common_type::type iType; + return Impl::TeamThreadRangeBoundariesStruct >(thread, begin, end); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::ThreadVectorRangeBoundariesStruct > +ThreadVectorRange + ( Impl::TaskExec< Kokkos::Experimental::ROCm > & thread + , const iType & count ) +{ + return Impl::ThreadVectorRangeBoundariesStruct >(thread,count); +} + +/** \brief Inter-thread parallel_for. Executes lambda(iType i) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all threads of the the calling thread team. + * This functionality requires C++11 support. +*/ +template +KOKKOS_INLINE_FUNCTION +void parallel_for + ( const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries + , const Lambda& lambda + ) +{ + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i); + } +} + +// reduce across corresponding lanes between team members within workgroup +// assume stride*team_size == workgroup_size +template< typename ValueType > +KOKKOS_INLINE_FUNCTION +void strided_shfl_workgroup_reduction + (const ValueType& f(), + ValueType& val, + int team_size, + int stride) +{ + for (int lane_delta=(team_size*stride)>>1; lane_delta>=stride; lane_delta>>=1) { + f(val, Kokkos::shfl_down(val, lane_delta, team_size*stride)); + } +} + +template< typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void strided_shfl_workgroup_reduction + (const JoinType& join, + ValueType& val, + int team_size, + int stride) +{ + for (int lane_delta=(team_size*stride)>>1; lane_delta>=stride; lane_delta>>=1) { + join(val, shfl_down(val, lane_delta, team_size*stride)); + } +} + +// multiple within-workgroup non-strided reductions +template< typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void multi_shfl_workgroup_reduction + (const JoinType& join, + ValueType& val, + int vec_length) +{ + for (int lane_delta=vec_length>>1; lane_delta; lane_delta>>=1) { + join(val, shfl_down(val, lane_delta, vec_length)); + } +} + +// broadcast within workgroup +template< class ValueType > +KOKKOS_INLINE_FUNCTION +ValueType shfl_workgroup_broadcast + (ValueType& val, + int src_lane, + int width) +{ + return shfl(val, src_lane, width); +} + +// all-reduce across corresponding vector lanes between team members within workgroup +// assume vec_length*team_size == workgroup_size +// blockDim.x == vec_length == stride +// blockDim.y == team_size +// threadIdx.x == position in vec +// threadIdx.y == member number + +template +KOKKOS_INLINE_FUNCTION +void parallel_reduce + ( const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries + , const Lambda& lambda + , ValueType& initialized_result) +{ + int team_rank = loop_boundaries.thread.team_rank(); // member num within the team + ValueType result = initialized_result; + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i, result); + } + initialized_result = result; + + strided_shfl_workgroup_reduction( + [&] (ValueType& val1, const ValueType& val2) { val1 += val2; }, + initialized_result, + loop_boundaries.thread.team_size(), + idx.tile_dim[0]); + initialized_result = shfl_workgroup_broadcast( initialized_result, idx.local[0], Impl::ROCmTraits::WavefrontSize ); + +} + +template< typename iType, class Lambda, typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce + (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda, + const JoinType & join, + ValueType& initialized_result) +{ + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + int team_rank = loop_boundaries.thread.team_rank(); // member num within the team + ValueType result = initialized_result; + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i, result); + } + + strided_shfl_workgroup_reduction( + join, + initialized_result, + loop_boundaries.thread.team_size(), + idx.tile_dim[0]); + initialized_result = shfl_workgroup_broadcast( initialized_result, idx.local[0], Impl::ROCmTraits::WavefrontSize ); +} + +// placeholder for future function +template< typename iType, class Lambda, typename ValueType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda, + ValueType& initialized_result) +{ + ValueType result = initialized_result; + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i,result); + } + + initialized_result = result; + + //initialized_result = multi_shfl_workgroup_reduction( + multi_shfl_workgroup_reduction( + [&] (ValueType& val1, const ValueType& val2) { val1 += val2; }, + initialized_result, + idx.tile_dim[0]); + initialized_result = shfl_workgroup_broadcast( initialized_result, 0, idx.tile_dim[0] ); +} + +// placeholder for future function +template< typename iType, class Lambda, typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda, + const JoinType & join, + ValueType& initialized_result) +{ + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + ValueType result = initialized_result; + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i,result); + } + initialized_result = result; + + multi_shfl_workgroup_reduction(join, initialized_result, idx.tile_dim[0]); + initialized_result = shfl_workgroup_broadcast( initialized_result, 0, idx.tile_dim[0] ); +} + +template< typename ValueType, typename iType, class Lambda > +KOKKOS_INLINE_FUNCTION +void parallel_scan + (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda) +{ + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + ValueType accum = 0 ; + ValueType val, y, local_total; + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + val = 0; + lambda(i,val,false); + + // intra-idx.tile_dim[0] exclusive scan on 'val' + // accum = accumulated, sum in total for this iteration + + // INCLUSIVE scan + for( int offset = idx.tile_dim[0] ; offset < Impl::ROCmTraits::WavefrontSize ; offset <<= 1 ) { + y = shfl_up(val, offset, Impl::ROCmTraits::WavefrontSize); + if(idx.local[1]*idx.tile_dim[0] >= offset) { val += y; } + } + + // pass accum to all threads + local_total = shfl_workgroup_broadcast(val, + idx.local[0]+Impl::ROCmTraits::WavefrontSize-idx.tile_dim[0], + Impl::ROCmTraits::WavefrontSize); + + // make EXCLUSIVE scan by shifting values over one + val = shfl_up(val, idx.tile_dim[0], Impl::ROCmTraits::WavefrontSize); + if ( idx.local[1] == 0 ) { val = 0 ; } + + val += accum; + lambda(i,val,true); + accum += local_total; + } +} + +// placeholder for future function +template< typename iType, class Lambda, typename ValueType > +KOKKOS_INLINE_FUNCTION +void parallel_scan + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda) +{ + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + ValueType accum = 0 ; + ValueType val, y, local_total; + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + val = 0; + lambda(i,val,false); + + // intra-idx.tile_dim[0] exclusive scan on 'val' + // accum = accumulated, sum in total for this iteration + + // INCLUSIVE scan + for( int offset = 1 ; offset < idx.tile_dim[0] ; offset <<= 1 ) { + y = shfl_up(val, offset, idx.tile_dim[0]); + if(idx.local[0] >= offset) { val += y; } + } + + // pass accum to all threads + local_total = shfl_workgroup_broadcast(val, idx.tile_dim[0]-1, + idx.tile_dim[0]); + + // make EXCLUSIVE scan by shifting values over one + val = shfl_up(val, 1, idx.tile_dim[0]); + if ( idx.local[0] == 0 ) { val = 0 ; } + + val += accum; + lambda(i,val,true); + accum += local_total; + } +} + + +} /* namespace Kokkos */ +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_ROCM_TASK_HPP */ + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp new file mode 100644 index 0000000000..e1a89e3794 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp @@ -0,0 +1,518 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include +#include + +#if !defined( KOKKOS_ROCM_TILE_H ) +#define KOKKOS_ROCM_TILE_H + +// Macro to abstract out the enable_if craziness +#define KOKKOS_ROCM_REQUIRES(...) \ + bool KokkosROCmRequiresBool ## __LINE__ = true, typename std::enable_if::type = 0 + +// This number uniquely identifies the 1.5 release build. +#if __hcc_workweek__ > 17160 +#define ROCM15 1 +#endif + +namespace Kokkos { +namespace Impl { + +template + +#if defined(ROCM15) +using lds_t = T; +#else +// prior to 1.5, needed to decorate LDS addresses +using lds_t = __attribute__((address_space(3))) T; +#endif + +#define KOKKOS_ROCM_TILE_RESTRIC_CPU restrict(cpu, amp) + +// a set of routines to the replace the std::routines +// that will operate on address space 3 types + +#if defined(ROCM15) +// 1.5 can't use std::copy et al for LDS access, so we define our own +// set of routines +template +void rcopy(I first, I last, O out) [[hc]] +{ + while (first != last) *out++ = *first++; +} +template +void rfor_each(I first, I last, F f) [[hc]] +{ + for(;first!=last;++first) f(*first); +} + +template +void rtransform(I first, I last, O out, F f) [[hc]] +{ + while(first!=last) *out++ = f(*first++); +} +#endif + + +inline std::size_t get_max_tile_size() KOKKOS_ROCM_TILE_RESTRIC_CPU +{ + return hc::accelerator().get_max_tile_static_size() - 1024; +} + +inline std::size_t get_max_tile_thread() KOKKOS_ROCM_TILE_RESTRIC_CPU +{ + return 64; +} + +inline int next_pow_2(int x) restrict(cpu, amp) +{ + --x; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x+1; +} + +template +inline std::size_t get_tile_size(std::size_t n = 1, + std::size_t team = 64, + std::size_t vector = 1) + KOKKOS_ROCM_TILE_RESTRIC_CPU +{ + const auto size = sizeof(T) * n; + const auto group_size = get_max_tile_size(); + if (size == 0 || size > group_size) return 0; + // Assume that thread size is a power of 2 + auto thread_size = std::min(team*vector,4*get_max_tile_thread()); + // ensure that we have enough tile static memory to keep + // threadsize * size elements for reductions + while(size > (group_size / thread_size) && thread_size > 2) +{ thread_size /= 2; +} + return thread_size; +} + +template +struct array_view +{ + T* x; + std::size_t n; + + array_view(T* xp, std::size_t np) [[hc]] [[cpu]] + : x(xp), n(np) + {} + + array_view(T* xp, T* yp) [[hc]] [[cpu]] + : x(xp), n(yp-xp) + {} + + T& operator[](std::size_t i) const [[hc]] [[cpu]] + { + return x[i]; + } + + std::size_t size() const [[hc]] [[cpu]] + { + return this->n; + } + + T* data() const [[hc]] [[cpu]] + { + return x; + } + + T* begin() const [[hc]] [[cpu]] + { + return x; + } + + T* end() const [[hc]] [[cpu]] + { + return x+this->size(); + } +}; + +template +struct rocm_char +{ using type=char; }; + +template +struct rocm_char +: std::add_const::type> +{}; +#if !defined(ROCM15) +// earlier compilers required explicit address space decorations +template +struct rocm_char<__attribute__((address_space(3))) T> +{ using type = __attribute__((address_space(3))) typename rocm_char::type; }; + +template +struct rocm_char +{ using type = const __attribute__((address_space(3))) typename rocm_char::type; }; +#endif + +template::type> +Char* rocm_byte_cast(T& x) restrict(cpu, amp) +{ + return reinterpret_cast(&x); +} + +template +void rocm_raw_assign(T& x, const U& y) restrict(cpu, amp) +{ + auto * src = rocm_byte_cast(y); + auto * dest = rocm_byte_cast(x); +#if defined (ROCM15) + rcopy(src, src+sizeof(T), dest); +#else + std::copy(src, src+sizeof(T), dest); +#endif +} + +template +void rocm_assign_impl(T& x, const U& y, std::true_type) restrict(cpu, amp) +{ + rocm_raw_assign(x, y); +} + +template +void rocm_assign_impl(T& x, const U& y, std::false_type) restrict(cpu, amp) +{ + x = y; +} + +// Workaround for assigning in and out of LDS memory +template +void rocm_assign(T& x, const U& y) restrict(cpu, amp) +{ + rocm_assign_impl(x, y, std::integral_constant()); +} + +// Compute the address space of tile +template +struct tile_type +{ +#if defined (ROCM15) + typedef T type; +#else + typedef __attribute__((address_space(3))) T type; +#endif +}; + +#if !defined (ROCM15) +template +void lds_for(__attribute__((address_space(3))) T& value, Body b) [[hc]] +{ + T state = value; + b(state); + value = state; +} +#endif + +template +void lds_for(T& value, Body b) [[hc]] +{ + b(value); +} + + +constexpr std::size_t get_max_tile_array_size() +{ + return 24; +} + +template +struct single_action +{ + template + void action_at(std::size_t i, Action a) [[hc]] + { + auto& value = static_cast(*this)[i]; +#if KOKKOS_ROCM_HAS_WORKAROUNDS + T state = value; + a(state); + value = state; +#else + a(value); +#endif + } + + template + void action_at(std::size_t i, std::size_t j, Action a) [[hc]] + { + static_cast(*this).action_at(i, [&](T& x) + { + static_cast(*this).action_at(j, [&](T& y) + { + a(x, y); + }); + }); + } +}; + +template +struct tile_buffer +: array_view::type>, single_action, T> +{ + typedef typename tile_type::type element_type; + typedef array_view base; + + using base::base; + + tile_buffer(element_type* xp, std::size_t np, std::size_t) [[hc]] [[cpu]] + : base(xp, np) + {} + + tile_buffer(T* xp, T* yp, std::size_t) [[hc]] [[cpu]] + : base(xp, yp) + {} +}; + +template +struct tile_buffer +{ + typedef typename tile_type::type element_type; + typedef typename tile_type::type tchar_type; + element_type* element_data; + std::size_t n, m; + + tile_buffer(element_type* xp, std::size_t np, std::size_t mp) [[hc]] [[cpu]] + : element_data(xp), n(np), m(mp) + {} + + tile_buffer(element_type* xp, element_type* yp, std::size_t mp) [[hc]] [[cpu]] + : element_data(xp), n(yp-xp), m(mp) + {} + + element_type* operator[](std::size_t i) const [[hc]] [[cpu]] + { + return element_data+i*m; + } + + template + typename Impl::enable_if< (sizeof(Q) <= 8) , void >::type + action_at(std::size_t i, Action a) [[hc]] + { + element_type* value = (*this)[i]; +#if defined (ROCM15) + a(value); +#else +#if KOKKOS_ROCM_HAS_WORKAROUNDS + if (m > get_max_tile_array_size()) return; + T state[get_max_tile_array_size()]; + // std::copy(value, value+m, state); + // Workaround for assigning from LDS memory + std::transform(value, value+m, state, [](element_type& x) + { + T result; + rocm_assign(result, x); + return result; + }); + a(state); + std::copy(state, state+m, value); +#endif +#endif + } + + template + typename Impl::enable_if< !(sizeof(Q) <= 8) , void >::type + action_at(std::size_t i, Action a) [[hc]] + { + element_type* value = (*this)[i]; +#if defined (ROCM15) + a(value); +#else +//#if KOKKOS_ROCM_HAS_WORKAROUNDS + if (m > get_max_tile_array_size()) return; + T state[get_max_tile_array_size()]; + // std::copy(value, value+m, state); + // Workaround for assigning from LDS memory + std::transform(value, value+m, state, [](element_type& x) + { + T result; + rocm_assign(result, x); + return result; + }); + a(state); + // this workaround required when T is greater than 8 bytes + tile_static char tv[64*sizeof(T)]; + size_t sT = sizeof(T); + for (int j = 0; j + void action_at(std::size_t i, std::size_t j, Action a) [[hc]] + { + this->action_at(i, [&](T* x) + { + this->action_at(j, [&](T* y) + { + a(x, y); + }); + }); + } + + std::size_t size() const [[hc]] [[cpu]] + { + return this->n; + } + + element_type* data() const [[hc]] [[cpu]] + { + return element_data; + } +}; + +// Zero initialize LDS memory +struct zero_init_f +{ + template +#if defined (ROCM15) + void operator()(T& x, std::size_t=1) const [[hc]] + { + auto * start = reinterpret_cast(&x); + for(int i=0; i(&x); + std::fill(start, start+sizeof(T), 0); + rocm_raw_assign(x, T()); + } +#endif + + template +#if defined (ROCM15) + void operator()(T* x, std::size_t size) const [[hc]] + { + rfor_each(x, x+size, *this); + } +#else + void operator()(__attribute__((address_space(3))) T* x, std::size_t size) const [[hc]] + { + std::for_each(x, x+size, *this); + } +#endif +}; + +static constexpr zero_init_f zero_init = {}; + +struct tile_desc +{ + // Number of work items, or size of extent + std::size_t elements; + // number of threads in team + std::size_t team_size; + // vector length of team + std::size_t vector_length; + // Size of tile + std::size_t tile_size; + // Size of array + std::size_t array_size; + // Number of tiles + std::size_t num_tiles; + // Per team reserved LDS memory, used for reduction + std::size_t reduce_size; + // Per team shared memory in LDS, this in addition to reduce shared mem + std::size_t shared_size; + std::size_t size; +}; + +template +tile_desc get_tile_desc(std::size_t size, + std::size_t array_size=1, + std::size_t team_size=64, + std::size_t vector_size=1, + std::size_t shared_size=0) +{ + tile_desc result; + result.elements = size; + result.array_size = array_size; + result.vector_length = vector_size; + result.team_size = team_size; + result.tile_size = get_tile_size(array_size,team_size,vector_size); + result.num_tiles = std::ceil(1.0 * size / result.tile_size); + result.reduce_size = result.tile_size * sizeof(T) * array_size; + result.shared_size = shared_size; + result.size = result.tile_size * result.num_tiles; + + return result; +} + +template::type> +hc::completion_future tile_for(tile_desc td, F f) +{ + assert(td.array_size <= get_max_tile_array_size() && "Exceed max array size"); + assert(((td.size % td.tile_size) == 0) && "Tile size must be divisible by extent"); + auto grid = hc::extent<1>(td.size).tile_with_dynamic( + td.tile_size, td.reduce_size + td.shared_size); + // grid.set_dynamic_group_segment_size(td.reduce_size + td.shared_size); + return parallel_for_each(grid, [=](hc::tiled_index<1> t_idx) [[hc]] + { +#if defined (ROCM15) + typedef T group_t; +#else + typedef __attribute__((address_space(3))) T group_t; +#endif + group_t * buffer = (group_t *)hc::get_dynamic_group_segment_base_pointer(); + tile_buffer tb(buffer, td.tile_size, td.array_size); + zero_init(tb[t_idx.local[0]], td.array_size); + f(t_idx, tb); + }); +} + +}} + +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp new file mode 100644 index 0000000000..ac166f9ad8 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp @@ -0,0 +1,346 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#ifndef KOKKOS_ROCM_VECTORIZATION_HPP +#define KOKKOS_ROCM_VECTORIZATION_HPP + +#include + +/* only compile this file if ROCM is enabled for Kokkos */ +#ifdef KOKKOS_ENABLE_ROCM + +#include + +namespace Kokkos { +using namespace hc; + +// Shuffle only makes sense on >= Fiji GPUs; it doesn't work on CPUs +// or other GPUs. We provide a generic definition (which is trivial +// and doesn't do what it claims to do) because we don't actually use +// this function unless we are on a suitable GPU, with a suitable +// Scalar type. (For example, in the mat-vec, the "ThreadsPerRow" +// internal parameter depends both on the ExecutionSpace and the Scalar type, +// and it controls whether shfl_down() gets called.) +namespace Impl { + + template< typename Scalar > + struct shfl_union { + enum {n = sizeof(Scalar)/4}; + float fval[n]; + KOKKOS_INLINE_FUNCTION + Scalar value() { + return *(Scalar*) fval; + } + KOKKOS_INLINE_FUNCTION + void operator= (Scalar& value_) { + float* const val_ptr = (float*) &value_; + for(int i=0; i + KOKKOS_INLINE_FUNCTION + Scalar shfl(const Scalar &val, const int& srcLane, const typename Impl::enable_if< (sizeof(Scalar) == 4) , int >::type& width + ) { + Scalar tmp1 = val; + float tmp = *reinterpret_cast(&tmp1); + tmp = __shfl(tmp,srcLane,width); + return *reinterpret_cast(&tmp); + } + + KOKKOS_INLINE_FUNCTION + double shfl(const double &val, const int& srcLane, const int& width) { + int lo = __double2loint(val); + int hi = __double2hiint(val); + lo = __shfl(lo,srcLane,width); + hi = __shfl(hi,srcLane,width); + return __hiloint2double(hi,lo); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl(const Scalar &val, const int& srcLane, const typename Impl::enable_if< (sizeof(Scalar) == 8) ,int>::type& width) { + int lo = __double2loint(*reinterpret_cast(&val)); + int hi = __double2hiint(*reinterpret_cast(&val)); + lo = __shfl(lo,srcLane,width); + hi = __shfl(hi,srcLane,width); + const double tmp = __hiloint2double(hi,lo); + return *(reinterpret_cast(&tmp)); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl(const Scalar &val, const int& srcLane, const typename Impl::enable_if< (sizeof(Scalar) > 8) ,int>::type& width) { + Impl::shfl_union s_val; + Impl::shfl_union r_val; + s_val = val; + + for(int i = 0; i + KOKKOS_INLINE_FUNCTION + Scalar shfl_down(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) == 4) , int >::type & width) { + Scalar tmp1 = val; + float tmp = *reinterpret_cast(&tmp1); + tmp = __shfl_down(tmp,delta,width); + return *reinterpret_cast(&tmp); + } + + KOKKOS_INLINE_FUNCTION + long shfl_down(const long &val, const int& delta, const int& width) { + int lo = __long2loint(val); + int hi = __long2hiint(val); + lo = __shfl_down(lo,delta,width); + hi = __shfl_down(hi,delta,width); + return __hiloint2long(hi,lo); + } + + KOKKOS_INLINE_FUNCTION + double shfl_down(const double &val, const int& delta, const int& width) { + int lo = __double2loint(val); + int hi = __double2hiint(val); + lo = __shfl_down(lo,delta,width); + hi = __shfl_down(hi,delta,width); + return __hiloint2double(hi,lo); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl_down(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) == 8) , int >::type & width) { + int lo = __double2loint(*reinterpret_cast(&val)); + int hi = __double2hiint(*reinterpret_cast(&val)); + lo = __shfl_down(lo,delta,width); + hi = __shfl_down(hi,delta,width); + const double tmp = __hiloint2double(hi,lo); + return *(reinterpret_cast(&tmp)); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl_down(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) > 8) , int >::type & width) { + Impl::shfl_union s_val; + Impl::shfl_union r_val; + s_val = val; + + for(int i = 0; i + KOKKOS_INLINE_FUNCTION + Scalar shfl_up(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) == 4) , int >::type & width) { + Scalar tmp1 = val; + float tmp = *reinterpret_cast(&tmp1); + tmp = __shfl_up(tmp,delta,width); + return *reinterpret_cast(&tmp); + } + + KOKKOS_INLINE_FUNCTION + double shfl_up(const double &val, const int& delta, const int& width ) { + int lo = __double2loint(val); + int hi = __double2hiint(val); + lo = __shfl_up(lo,delta,width); + hi = __shfl_up(hi,delta,width); + return __hiloint2double(hi,lo); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl_up(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) == 8) , int >::type & width) { + int lo = __double2loint(*reinterpret_cast(&val)); + int hi = __double2hiint(*reinterpret_cast(&val)); + lo = __shfl_up(lo,delta,width); + hi = __shfl_up(hi,delta,width); + const double tmp = __hiloint2double(hi,lo); + return *(reinterpret_cast(&tmp)); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl_up(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) > 8) , int >::type & width) { + Impl::shfl_union s_val; + Impl::shfl_union r_val; + s_val = val; + + for(int i = 0; i + inline + Scalar shfl(const Scalar &val, const int& srcLane, const int& width) { + if(width > 1) Kokkos::abort("Error: calling shfl from a device with CC<8.0."); + return val; + } + + template + inline + Scalar shfl_down(const Scalar &val, const int& delta, const int& width) { + if(width > 1) Kokkos::abort("Error: calling shfl_down from a device with CC<8.0."); + return val; + } + + template + inline + Scalar shfl_up(const Scalar &val, const int& delta, const int& width) { + if(width > 1) Kokkos::abort("Error: calling shfl_down from a device with CC<8.0."); + return val; + } +#endif + + + +} + +#endif // KOKKOS_ENABLE_ROCM +#endif diff --git a/lib/kokkos/core/src/ROCm/hc_math_std.hpp b/lib/kokkos/core/src/ROCm/hc_math_std.hpp new file mode 100644 index 0000000000..56c2e634e4 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/hc_math_std.hpp @@ -0,0 +1,367 @@ +#pragma once + +#include "hc.hpp" +#include + +// Math functions with integer overloads will be converted to +// this floating point type. +#define HC_IMPLICIT_FLOAT_CONV double + +#ifdef __KALMAR_ACCELERATOR__ + +#define HC_MATH_WRAPPER_1(function, arg1) \ +template \ +inline T function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define KALMAR_MATH_WRAPPER_1(function, arg1) HC_MATH_WRAPPER_1(function, arg1) + +#define HC_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) \ +template \ +inline \ +typename std::enable_if::value,HC_IMPLICIT_FLOAT_CONV>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(static_cast(arg1)); \ +} \ +template \ +inline \ +typename std::enable_if::value,T>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) HC_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) + +#define HC_MATH_WRAPPER_2(function, arg1, arg2) \ +template \ +inline T function(T arg1, T arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2); \ +} + +#define HC_MATH_ALIAS_2(alias, function, arg1, arg2) \ +template \ +inline T alias(T arg1, T arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2); \ +} + +#define HC_MATH_WRAPPER_3(function, arg1, arg2, arg3) \ +template \ +inline T function(T arg1, T arg2, T arg3) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2, arg3); \ +} + +#define HC_MATH_WRAPPER_TQ(function, arg1) \ +template \ +inline T function(Q arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_TQ(function, T, arg1) \ +template \ +inline \ +typename std::enable_if::value,T>::type \ +function(Q arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(static_cast(arg1)); \ +}\ +template \ +inline \ +typename std::enable_if::value,T>::type \ +function(Q arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define HC_MATH_WRAPPER_TTQ(function, arg1, arg2) \ +template \ +inline T function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_TTQ(function, arg1, arg2) \ +template \ +inline \ +typename std::enable_if::value||std::is_integral::value,HC_IMPLICIT_FLOAT_CONV>::type \ +function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(static_cast(arg1),static_cast(arg2)); \ +}\ +template \ +inline \ +typename std::enable_if::value&&std::is_floating_point::value,T>::type \ +function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1,arg2); \ +} + +#define HC_MATH_WRAPPER_TTTQ(function, arg1, arg2, arg3) \ +template \ +inline T function(T arg1, T arg2, Q arg3) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2, arg3); \ +} + +#define HC_MATH_WRAPPER_VTQQ(function, arg1, arg2, arg3) \ +template \ +inline void function(T arg1, Q arg2, Q arg3) __attribute__((hc,cpu)) { \ + hc::precise_math::function(arg1, arg2, arg3); \ +} + +#else + +#define HC_MATH_WRAPPER_1(function, arg1) \ +template \ +inline T function(T arg1) __attribute__((hc,cpu)) { \ + return std::function(arg1); \ +} + +#define KALMAR_MATH_WRAPPER_1(function, arg1) \ +template \ +inline T function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) \ +template \ +inline \ +typename std::enable_if::value,HC_IMPLICIT_FLOAT_CONV>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return ::function(static_cast(arg1)); \ +} \ +template \ +inline \ +typename std::enable_if::value,T>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return std::function(arg1); \ +} + +#define KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) \ +template \ +inline \ +typename std::enable_if::value,HC_IMPLICIT_FLOAT_CONV>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(static_cast(arg1)); \ +} \ +template \ +inline \ +typename std::enable_if::value,T>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define HC_MATH_WRAPPER_2(function, arg1, arg2) \ +template \ +inline T function(T arg1, T arg2) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2); \ +} + +#define HC_MATH_ALIAS_2(alias, function, arg1, arg2) \ +template \ +inline T alias(T arg1, T arg2) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2); \ +} + +#define HC_MATH_WRAPPER_3(function, arg1, arg2, arg3) \ +template \ +inline T function(T arg1, T arg2, T arg3) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2, arg3); \ +} + +#define HC_MATH_WRAPPER_TQ(function, arg1) \ +template \ +inline T function(Q arg1) __attribute__((hc,cpu)) { \ + return std::function(arg1); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_TQ(function, T, arg1) \ +template \ +inline \ +typename std::enable_if::value,T>::type \ +function(Q arg1) __attribute__((hc)) { \ + return std::function(static_cast(arg1)); \ +}\ +template \ +inline \ +typename std::enable_if::value,T>::type \ +function(Q arg1) __attribute__((hc)) { \ + return std::function(arg1); \ +} + +#define HC_MATH_WRAPPER_TTQ(function, arg1, arg2) \ +template \ +inline T function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_TTQ(function, arg1, arg2) \ +template \ +inline \ +typename std::enable_if::value||std::is_integral::value,HC_IMPLICIT_FLOAT_CONV>::type \ +function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return std::function(static_cast(arg1),static_cast(arg2)); \ +}\ +template \ +inline \ +typename std::enable_if::value&&std::is_floating_point::value,T>::type \ +function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return std::function(arg1,arg2); \ +} + +#define HC_MATH_WRAPPER_TTTQ(function, arg1, arg2, arg3) \ +template \ +inline T function(T arg1, T arg2, Q arg3) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2, arg3); \ +} + +#define HC_MATH_WRAPPER_VTQQ(function, arg1, arg2, arg3) \ +template \ +inline void function(T arg1, Q arg2, Q arg3) __attribute__((hc,cpu)) { \ + std::function(arg1, arg2, arg3); \ +} + +#endif + + +// override global math functions +namespace std { + +// following math functions are NOT available because they don't have a GPU implementation +// +// erfinv +// erfcinv +// fpclassify +// +// following math functions are NOT available because they don't have a CPU implementation +// +// cospif +// cospi +// rsqrtf +// rsqrt +// sinpif +// sinpi +// tanpi +// + +HC_MATH_WRAPPER_TQ(ilogbf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(ilogb, int, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(isfinite, bool, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(isinf, bool, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(isnan, bool, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(isnormal, bool, x) +HC_MATH_WRAPPER_TQ(nanf, tagp) +HC_MATH_WRAPPER_TQ(nan, tagp) +//HC_MATH_WRAPPER_TQ(signbitf, x) +HC_MATH_WRAPPER_TQ(signbit, x) +HC_MATH_WRAPPER_TTQ(frexpf, x, exp) +HC_MATH_WRAPPER_TTQ(frexp, x, exp) +HC_MATH_WRAPPER_TTQ(ldexpf, x, exp) +HC_MATH_WRAPPER_TTQ(ldexp, x, exp) +HC_MATH_WRAPPER_TTQ(lgammaf, x, exp) +HC_MATH_WRAPPER_TTQ(lgamma, x, exp) +HC_MATH_WRAPPER_TTQ(modff, x, exp) +HC_MATH_WRAPPER_TTQ(modf, x, exp) +HC_MATH_WRAPPER_TTQ(scalbnf, x, exp) +HC_MATH_WRAPPER_TTQ(scalbn, x, exp) +HC_MATH_WRAPPER_TTTQ(remquof, x, y, quo) +HC_MATH_WRAPPER_TTTQ(remquo, x, y, quo) +HC_MATH_WRAPPER_VTQQ(sincosf, x, s, c) +HC_MATH_WRAPPER_VTQQ(sincos, x, s, c) + +HC_MATH_WRAPPER_1(acosf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(acos, x) +HC_MATH_WRAPPER_1(acoshf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(acosh, x) +HC_MATH_WRAPPER_1(asinf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(asin, x) +HC_MATH_WRAPPER_1(asinhf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(asinh, x) +HC_MATH_WRAPPER_1(atanf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(atan, x) +HC_MATH_WRAPPER_1(atanhf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(atanh, x) +HC_MATH_WRAPPER_2(atan2f, x, y) +HC_MATH_WRAPPER_2(atan2, x, y) +HC_MATH_WRAPPER_1(cbrtf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(cbrt, x) +HC_MATH_WRAPPER_1(ceilf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(ceil, x) +HC_MATH_WRAPPER_2(copysignf, x, y) +HC_MATH_WRAPPER_2(copysign, x, y) +HC_MATH_WRAPPER_1(cosf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(cos, x) +HC_MATH_WRAPPER_1(coshf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(cosh, x) +KALMAR_MATH_WRAPPER_1(cospif, x) +KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(cospi, x) +HC_MATH_WRAPPER_1(erff, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(erf, x) +HC_MATH_WRAPPER_1(erfcf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(erfc, x) +HC_MATH_WRAPPER_1(expf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(exp, x) +HC_MATH_WRAPPER_1(exp2f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(exp2, x) +HC_MATH_WRAPPER_1(exp10f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(exp10, x) +HC_MATH_WRAPPER_1(expm1f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(expm1, x) +HC_MATH_WRAPPER_1(fabsf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(fabs, x) +HC_MATH_WRAPPER_2(fdimf, x, y) +HC_MATH_WRAPPER_2(fdim, x, y) +HC_MATH_WRAPPER_1(floorf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(floor, x) +HC_MATH_WRAPPER_3(fmaf, x, y, z) +HC_MATH_WRAPPER_3(fma, x, y, z) +HC_MATH_WRAPPER_2(fmaxf, x, y) +HC_MATH_WRAPPER_2(fmax, x, y) +HC_MATH_WRAPPER_2(fminf, x, y) +HC_MATH_WRAPPER_2(fmin, x, y) +HC_MATH_WRAPPER_2(fmodf, x, y) +HC_MATH_WRAPPER_2(fmod, x, y) +HC_MATH_WRAPPER_2(hypotf, x, y) +HC_MATH_WRAPPER_2(hypot, x, y) +HC_MATH_WRAPPER_1(logf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(log, x) +HC_MATH_WRAPPER_1(log10f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(log10, x) +HC_MATH_WRAPPER_1(log2f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(log2, x) +HC_MATH_WRAPPER_1(log1pf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(log1p, x) +HC_MATH_WRAPPER_1(logbf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(logb, x) +HC_MATH_WRAPPER_1(nearbyintf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(nearbyint, x) +HC_MATH_WRAPPER_2(nextafterf, x, y) +HC_MATH_WRAPPER_2(nextafter, x, y) +HC_MATH_WRAPPER_2(powf, x, y) +HC_MATH_WRAPPER_FP_OVERLOAD_TTQ(pow,x,y) +//HC_MATH_WRAPPER_1(rcbrtf, x) +//HC_MATH_WRAPPER_1(rcbrt, x) +HC_MATH_WRAPPER_2(remainderf, x, y) +HC_MATH_WRAPPER_2(remainder, x, y) +HC_MATH_WRAPPER_1(roundf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(round, x) +KALMAR_MATH_WRAPPER_1(rsqrtf, x) +KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(rsqrt, x) +HC_MATH_WRAPPER_2(scalbf, x, exp) +HC_MATH_WRAPPER_2(scalb, x, exp) +HC_MATH_WRAPPER_1(sinf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(sin, x) +HC_MATH_WRAPPER_1(sinhf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(sinh, x) +KALMAR_MATH_WRAPPER_1(sinpif, x) +KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(sinpi, x) +HC_MATH_WRAPPER_1(sqrtf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(sqrt, x) +HC_MATH_WRAPPER_1(tgammaf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(tgamma, x) +HC_MATH_WRAPPER_1(tanf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(tan, x) +HC_MATH_WRAPPER_1(tanhf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(tanh, x) +HC_MATH_WRAPPER_1(truncf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(trunc, x) + +//HC_MATH_ALIAS_2(min, fmin, x, y) +//HC_MATH_ALIAS_2(max, fmax, x, y) + +} // namespace + diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp index 5b894b037b..49fca9c855 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp @@ -125,6 +125,7 @@ T atomic_compare_exchange( volatile T * const dest , const T & compare , //---------------------------------------------------------------------------- // GCC native CAS supports int, long, unsigned int, unsigned long. // Intel native CAS support int and long with the same interface as GCC. +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -280,6 +281,7 @@ T atomic_compare_exchange( volatile T * const dest, const T compare, const T val #endif #endif +#endif // !defined ROCM_ATOMICS template KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp index 084c55efed..2af1737c31 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp @@ -158,6 +158,7 @@ T atomic_fetch_add( volatile T * const dest , #endif #endif //---------------------------------------------------------------------------- +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -355,6 +356,7 @@ T atomic_fetch_add( volatile T * const dest , const T val ) #endif #endif +#endif // !defined ROCM_ATOMICS //---------------------------------------------------------------------------- // Simpler version of atomic_fetch_add without the fetch diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp index 038cc13e9a..b7c14052eb 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp @@ -135,6 +135,7 @@ T atomic_fetch_sub( volatile T * const dest , #endif #endif //---------------------------------------------------------------------------- +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -263,6 +264,8 @@ T atomic_fetch_sub( volatile T * const dest , const T val ) #endif #endif +#endif // !defined ROCM_ATOMICS + // Simpler version of atomic_fetch_sub without the fetch template KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp index 65578156d5..f47ba1a98a 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp @@ -238,7 +238,7 @@ T atomic_fetch_oper( const Oper& op, volatile T * const dest , *dest = Oper::apply(return_val, val); Impl::unlock_address_host_space( (void*) dest ); return return_val; -#else +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) // This is a way to (hopefully) avoid dead lock in a warp T return_val; int done = 0; @@ -277,7 +277,7 @@ T atomic_oper_fetch( const Oper& op, volatile T * const dest , *dest = return_val; Impl::unlock_address_host_space( (void*) dest ); return return_val; -#else +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) T return_val; // This is a way to (hopefully) avoid dead lock in a warp int done = 0; diff --git a/lib/kokkos/core/src/impl/Kokkos_BitOps.hpp b/lib/kokkos/core/src/impl/Kokkos_BitOps.hpp index df16b3738b..3d3029535e 100644 --- a/lib/kokkos/core/src/impl/Kokkos_BitOps.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_BitOps.hpp @@ -62,6 +62,8 @@ int bit_first_zero( unsigned i ) noexcept #if defined( __CUDA_ARCH__ ) return full != i ? __ffs( ~i ) - 1 : -1 ; +#elif defined( __HCC_ACCELERATOR__ ) + return full != i ? (int)hc::__firstbit_u32_u32(~i) : -1 ; #elif defined( KOKKOS_COMPILER_INTEL ) return full != i ? _bit_scan_forward( ~i ) : -1 ; #elif defined( KOKKOS_COMPILER_IBM ) @@ -82,6 +84,8 @@ int bit_scan_forward( unsigned i ) { #if defined( __CUDA_ARCH__ ) return __ffs(i) - 1; +#elif defined( __HCC_ACCELERATOR__ ) + return (int)hc::__firstbit_u32_u32(i); #elif defined( KOKKOS_COMPILER_INTEL ) return _bit_scan_forward(i); #elif defined( KOKKOS_COMPILER_IBM ) @@ -106,6 +110,8 @@ int bit_scan_reverse( unsigned i ) enum { shift = static_cast( sizeof(unsigned) * CHAR_BIT - 1 ) }; #if defined( __CUDA_ARCH__ ) return shift - __clz(i); +#elif defined( __HCC_ACCELERATOR__ ) + return (int)hc::__firstbit_u32_u32(i); #elif defined( KOKKOS_COMPILER_INTEL ) return _bit_scan_reverse(i); #elif defined( KOKKOS_COMPILER_IBM ) @@ -130,6 +136,8 @@ int bit_count( unsigned i ) { #if defined( __CUDA_ARCH__ ) return __popc(i); +#elif defined( __HCC_ACCELERATOR__ ) + return (int)hc::__popcount_u32_b32(i); #elif defined ( __INTEL_COMPILER ) return _popcnt32(i); #elif defined( KOKKOS_COMPILER_IBM ) diff --git a/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp b/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp index 92111c3c59..c59c59d497 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp @@ -72,6 +72,10 @@ uint64_t clock_tic(void) noexcept return clock64(); +#elif defined(__HCC_ACCELERATOR__) + // Get clock register + return hc::__clock_u64(); + #elif defined( __i386__ ) || defined( __x86_64 ) // Return value of 64-bit hi-res clock register. diff --git a/lib/kokkos/core/src/impl/Kokkos_Core.cpp b/lib/kokkos/core/src/impl/Kokkos_Core.cpp index f52cc469ac..ab6cffc7c3 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Core.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Core.cpp @@ -80,7 +80,7 @@ setenv("MEMKIND_HBW_NODES", "1", 0); const int num_threads = args.num_threads; const int use_numa = args.num_numa; #endif // defined( KOKKOS_ENABLE_OPENMP ) || defined( KOKKOS_ENABLE_THREADS ) -#if defined( KOKKOS_ENABLE_CUDA ) +#if defined( KOKKOS_ENABLE_CUDA ) || defined( KOKKOS_ENABLE_ROCM ) const int use_gpu = args.device_id; #endif // defined( KOKKOS_ENABLE_CUDA ) @@ -162,6 +162,18 @@ setenv("MEMKIND_HBW_NODES", "1", 0); } #endif +#if defined( KOKKOS_ENABLE_ROCM ) + if( std::is_same< Kokkos::Experimental::ROCm , Kokkos::DefaultExecutionSpace >::value || 0 < use_gpu ) { + if (use_gpu > -1) { + Kokkos::Experimental::ROCm::initialize( Kokkos::Experimental::ROCm::SelectDevice( use_gpu ) ); + } + else { + Kokkos::Experimental::ROCm::initialize(); + } + std::cout << "Kokkos::initialize() fyi: ROCm enabled and initialized" << std::endl ; + } +#endif + #if defined(KOKKOS_ENABLE_PROFILING) Kokkos::Profiling::initialize(); #endif @@ -181,6 +193,13 @@ void finalize_internal( const bool all_spaces = false ) } #endif +#if defined( KOKKOS_ENABLE_ROCM ) + if( std::is_same< Kokkos::Experimental::ROCm , Kokkos::DefaultExecutionSpace >::value || all_spaces ) { + if(Kokkos::Experimental::ROCm::is_initialized()) + Kokkos::Experimental::ROCm::finalize(); + } +#endif + #if defined( KOKKOS_ENABLE_OPENMPTARGET ) if( std::is_same< Kokkos::Experimental::OpenMPTarget , Kokkos::DefaultExecutionSpace >::value || all_spaces ) { if(Kokkos::Experimental::OpenMPTarget::is_initialized()) @@ -225,6 +244,12 @@ void fence_internal() } #endif +#if defined( KOKKOS_ENABLE_ROCM ) + if( std::is_same< Kokkos::Experimental::ROCm , Kokkos::DefaultExecutionSpace >::value ) { + Kokkos::Experimental::ROCm::fence(); + } +#endif + #if defined( KOKKOS_ENABLE_OPENMP ) if( std::is_same< Kokkos::OpenMP , Kokkos::DefaultExecutionSpace >::value || std::is_same< Kokkos::OpenMP , Kokkos::HostSpace::execution_space >::value ) { diff --git a/lib/kokkos/core/src/impl/Kokkos_Error.hpp b/lib/kokkos/core/src/impl/Kokkos_Error.hpp index 4bc2637c57..b4390f14a1 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Error.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Error.hpp @@ -75,7 +75,7 @@ void abort( const char * const message ) { #ifdef __CUDA_ARCH__ Kokkos::Impl::cuda_abort(message); #else - #ifndef KOKKOS_ENABLE_OPENMPTARGET + #if !defined(KOKKOS_ENABLE_OPENMPTARGET) && !defined(__HCC_ACCELERATOR__) Kokkos::Impl::host_abort(message); #endif #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp index d2446bde09..047b262422 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp @@ -275,7 +275,9 @@ int HostThreadTeamData::rendezvous( int64_t * const buffer for ( int i = 0 ; i < end ; ++i ) { ((int8_t*) & value )[i] = int8_t( step ); } - + // Do not REMOVE this store fence!!! + // Makes stuff hang on GCC with more than 8 threads + store_fence(); spinwait_until_equal( buffer[ (rank << shift_mem_cycle) + sync_offset ] , value ); } diff --git a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp b/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp index 7a887a9e29..eedf3d559e 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp @@ -53,6 +53,8 @@ void memory_fence() { #if defined( __CUDA_ARCH__ ) __threadfence(); +#elif defined( KOKKOS_ENABLE_ROCM_ATOMICS ) + amp_barrier(CLK_LOCAL_MEM_FENCE | CLK_GLOBAL_MEM_FENCE); #elif defined( KOKKOS_ENABLE_ASM ) && defined( KOKKOS_ENABLE_ISA_X86_64 ) asm volatile ( "mfence" ::: "memory" diff --git a/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp b/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp index 15ce6964a0..a408199088 100644 --- a/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp @@ -140,12 +140,6 @@ #endif #endif -#ifdef KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA -#ifndef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA -#define KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA -#endif -#endif - #ifdef KOKKOS_HAVE_CXX1Z #ifndef KOKKOS_ENABLE_CXX1Z #define KOKKOS_ENABLE_CXX1Z KOKKOS_HAVE_CXX1Z diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp index 1974f7e1ca..0cce45b2e7 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp @@ -456,10 +456,11 @@ void TaskQueue< ExecSpace >::schedule_aggregate // task->m_next == member of linked list (queue) #if KOKKOS_IMPL_DEBUG_TASKDAG_SCHEDULING - printf( "schedule_aggregate( 0x%lx { 0x%lx 0x%lx %d %d %d }\n" + printf( "schedule_aggregate( 0x%lx { 0x%lx 0x%lx %d %d %d %d }\n" , uintptr_t(task) , uintptr_t(task->m_wait) , uintptr_t(task->m_next) + , task->m_dep_count , task->m_task_type , task->m_priority , task->m_ref_count ); @@ -597,7 +598,6 @@ void TaskQueue< ExecSpace >::complete , task->m_task_type , task->m_priority , task->m_ref_count ); - fflush( stdout ); #endif task_root_type volatile & t = *task ; diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp index d346f9e639..b2adcc9f06 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp @@ -1015,8 +1015,13 @@ struct ViewOffset< Dimension , Kokkos::LayoutLeft constexpr ViewOffset( const ViewOffset< DimRHS , Kokkos::LayoutRight , void > & rhs ) : m_dim( rhs.m_dim.N0, 0, 0, 0, 0, 0, 0, 0 ) { - static_assert( DimRHS::rank == 1 && dimension_type::rank == 1 && dimension_type::rank_dynamic == 1 - , "ViewOffset LayoutLeft and LayoutRight are only compatible when rank == 1" ); + static_assert( + ( DimRHS::rank == 0 && + dimension_type::rank == 0 ) || + ( DimRHS::rank == 1 && + dimension_type::rank == 1 && + dimension_type::rank_dynamic == 1 ) + , "ViewOffset LayoutLeft and LayoutRight are only compatible when rank <= 1" ); } template< class DimRHS > @@ -1024,8 +1029,13 @@ struct ViewOffset< Dimension , Kokkos::LayoutLeft ViewOffset( const ViewOffset< DimRHS , Kokkos::LayoutStride , void > & rhs ) : m_dim( rhs.m_dim.N0, 0, 0, 0, 0, 0, 0, 0 ) { - static_assert( DimRHS::rank == 1 && dimension_type::rank == 1 && dimension_type::rank_dynamic == 1 - , "ViewOffset LayoutLeft and LayoutStride are only compatible when rank == 1" ); + static_assert( + ( DimRHS::rank == 0 && + dimension_type::rank == 0 ) || + ( DimRHS::rank == 1 && + dimension_type::rank == 1 && + dimension_type::rank_dynamic == 1 ) + , "ViewOffset LayoutLeft and LayoutStride are only compatible when rank <= 1" ); if ( rhs.m_stride.S0 != 1 ) { Kokkos::abort("Kokkos::Impl::ViewOffset assignment of LayoutLeft from LayoutStride requires stride == 1" ); } @@ -1493,8 +1503,13 @@ struct ViewOffset< Dimension , Kokkos::LayoutRight constexpr ViewOffset( const ViewOffset< DimRHS , Kokkos::LayoutLeft , void > & rhs ) : m_dim( rhs.m_dim.N0, 0, 0, 0, 0, 0, 0, 0 ) { - static_assert( DimRHS::rank == 1 && dimension_type::rank == 1 && dimension_type::rank_dynamic == 1 - , "ViewOffset LayoutRight and LayoutLeft are only compatible when rank == 1" ); + static_assert( + ( DimRHS::rank == 0 && + dimension_type::rank == 0 ) || + ( DimRHS::rank == 1 && + dimension_type::rank == 1 && + dimension_type::rank_dynamic == 1 ) + , "ViewOffset LayoutRight and LayoutLeft are only compatible when rank <= 1" ); } template< class DimRHS > @@ -1502,8 +1517,13 @@ struct ViewOffset< Dimension , Kokkos::LayoutRight ViewOffset( const ViewOffset< DimRHS , Kokkos::LayoutStride , void > & rhs ) : m_dim( rhs.m_dim.N0, 0, 0, 0, 0, 0, 0, 0 ) { - static_assert( DimRHS::rank == 1 && dimension_type::rank == 1 && dimension_type::rank_dynamic == 1 - , "ViewOffset LayoutLeft/Right and LayoutStride are only compatible when rank == 1" ); + static_assert( + ( DimRHS::rank == 0 && + dimension_type::rank == 0 ) || + ( DimRHS::rank == 1 && + dimension_type::rank == 1 && + dimension_type::rank_dynamic == 1 ) + , "ViewOffset LayoutRight and LayoutString are only compatible when rank <= 1" ); if ( rhs.m_stride.S0 != 1 ) { Kokkos::abort("Kokkos::Impl::ViewOffset assignment of LayoutLeft/Right from LayoutStride requires stride == 1" ); } diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp index 5a8600e0ae..37367f68e4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp @@ -143,7 +143,7 @@ public: //---------------------------------------- - ~ViewOffset() = default ; + KOKKOS_FUNCTION_DEFAULTED ~ViewOffset() = default ; KOKKOS_INLINE_FUNCTION ViewOffset() = default ; KOKKOS_INLINE_FUNCTION ViewOffset( const ViewOffset & ) = default ; KOKKOS_INLINE_FUNCTION ViewOffset & operator = ( const ViewOffset & ) = default ; diff --git a/lib/kokkos/core/unit_test/CMakeLists.txt b/lib/kokkos/core/unit_test/CMakeLists.txt index 475b6bb48a..8aeae1199f 100644 --- a/lib/kokkos/core/unit_test/CMakeLists.txt +++ b/lib/kokkos/core/unit_test/CMakeLists.txt @@ -57,6 +57,7 @@ IF(Kokkos_ENABLE_Serial) serial/TestSerial_ViewMapping_b.cpp serial/TestSerial_ViewMapping_subview.cpp serial/TestSerial_ViewOfClass.cpp + serial/TestSerial_Crs.cpp serial/TestSerial_WorkGraph.cpp COMM serial mpi NUM_MPI_PROCS 1 @@ -103,6 +104,7 @@ IF(Kokkos_ENABLE_Pthread) threads/TestThreads_ViewMapping_b.cpp threads/TestThreads_ViewMapping_subview.cpp threads/TestThreads_ViewOfClass.cpp + threads/TestThreads_Crs.cpp threads/TestThreads_WorkGraph.cpp COMM serial mpi NUM_MPI_PROCS 1 @@ -149,6 +151,7 @@ IF(Kokkos_ENABLE_OpenMP) openmp/TestOpenMP_ViewMapping_b.cpp openmp/TestOpenMP_ViewMapping_subview.cpp openmp/TestOpenMP_ViewOfClass.cpp + openmp/TestOpenMP_Crs.cpp openmp/TestOpenMP_WorkGraph.cpp openmp/TestOpenMP_UniqueToken.cpp COMM serial mpi @@ -241,6 +244,7 @@ IF(Kokkos_ENABLE_Cuda) cuda/TestCuda_ViewMapping_b.cpp cuda/TestCuda_ViewMapping_subview.cpp cuda/TestCuda_ViewOfClass.cpp + cuda/TestCuda_Crs.cpp cuda/TestCuda_WorkGraph.cpp COMM serial mpi NUM_MPI_PROCS 1 diff --git a/lib/kokkos/core/unit_test/Makefile b/lib/kokkos/core/unit_test/Makefile index c877aa7dd2..07859f7ac3 100644 --- a/lib/kokkos/core/unit_test/Makefile +++ b/lib/kokkos/core/unit_test/Makefile @@ -10,6 +10,8 @@ vpath %.cpp ${KOKKOS_PATH}/core/unit_test/openmp vpath %.cpp ${KOKKOS_PATH}/core/unit_test/openmptarget vpath %.cpp ${KOKKOS_PATH}/core/unit_test/qthreads vpath %.cpp ${KOKKOS_PATH}/core/unit_test/cuda +vpath %.cpp ${KOKKOS_PATH}/core/unit_test/rocm + TEST_HEADERS = $(wildcard $(KOKKOS_PATH)/core/unit_test/*.hpp) TEST_HEADERS += $(wildcard $(KOKKOS_PATH)/core/unit_test/*/*.hpp) @@ -62,6 +64,7 @@ endif OBJ_CUDA += TestCuda_TeamReductionScan.o OBJ_CUDA += TestCuda_Other.o OBJ_CUDA += TestCuda_MDRange.o + OBJ_CUDA += TestCuda_Crs.o OBJ_CUDA += TestCuda_Task.o TestCuda_WorkGraph.o OBJ_CUDA += TestCuda_Spaces.o OBJ_CUDA += TestCuda_UniqueToken.o @@ -71,6 +74,58 @@ endif TEST_TARGETS += test-cuda endif +ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) + OBJ_ROCM = UnitTestMainInit.o gtest-all.o + OBJ_ROCM += TestROCm_Init.o + OBJ_ROCM += TestROCm_Complex.o +# OBJ_ROCM += TestROCm_RangePolicy.o +# rocm.range_scan locking up + OBJ_ROCM += TestROCm_AtomicOperations.o + OBJ_ROCM += TestROCm_Atomics.o +# complex failing + OBJ_ROCM += TestROCm_AtomicViews.o + OBJ_ROCM += TestROCm_Other.o +# rocm.memory_pool + OBJ_ROCM += TestROCm_Scan.o + OBJ_ROCM += TestROCm_SharedAlloc.o + OBJ_ROCM += TestROCm_SubView_a.o +# OBJ_ROCM += TestROCm_SubView_b.o +# relies on host accessable device memory +# OBJ_ROCM += TestROCm_SubView_c01.o +# OBJ_ROCM += TestROCm_SubView_c02.o +# OBJ_ROCM += TestROCm_SubView_c03.o +# OBJ_ROCM += TestROCm_SubView_c04.o +# OBJ_ROCM += TestROCm_SubView_c05.o +# OBJ_ROCM += TestROCm_SubView_c06.o +# OBJ_ROCM += TestROCm_SubView_c07.o +# OBJ_ROCM += TestROCm_SubView_c08.o +# OBJ_ROCM += TestROCm_SubView_c09.o +# OBJ_ROCM += TestROCm_SubView_c10.o +# OBJ_ROCM += TestROCm_SubView_c11.o +# OBJ_ROCM += TestROCm_SubView_c12.o +# all of the above use UVM or Host accessable memory +# OBJ_ROCM += TestROCm_Team.o +# compile fails +# OBJ_ROCM += TestROCm_TeamReductionScan.o +# compile fails +# OBJ_ROCM += TestROCm_TeamScratch.o +# compile fails + OBJ_ROCM += TestROCm_ViewAPI_b.o +# test fail in view_api + OBJ_ROCM += TestROCm_ViewMapping_a.o + OBJ_ROCM += TestROCm_ViewMapping_b.o + OBJ_ROCM += TestROCm_ViewMapping_subview.o + OBJ_ROCM += TestROCmHostPinned_ViewAPI.o + OBJ_ROCM += TestROCmHostPinned_ViewMapping_a.o + OBJ_ROCM += TestROCmHostPinned_ViewMapping_b.o + OBJ_ROCM += TestROCmHostPinned_ViewMapping_subview.o + OBJ_ROCM += TestROCm_ViewOfClass.o + OBJ_ROCM += TestROCm_Spaces.o + + TARGETS += KokkosCore_UnitTest_ROCm + TEST_TARGETS += test-rocm +endif + ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) OBJ_THREADS = UnitTestMainInit.o gtest-all.o @@ -122,6 +177,7 @@ endif OBJ_OPENMP += TestOpenMP_TeamReductionScan.o OBJ_OPENMP += TestOpenMP_Other.o OBJ_OPENMP += TestOpenMP_MDRange.o + OBJ_OPENMP += TestOpenMP_Crs.o OBJ_OPENMP += TestOpenMP_Task.o TestOpenMP_WorkGraph.o OBJ_OPENMP += TestOpenMP_UniqueToken.o @@ -209,7 +265,11 @@ endif OBJ_SERIAL += TestSerial_Team.o TestSerial_TeamScratch.o OBJ_SERIAL += TestSerial_TeamReductionScan.o OBJ_SERIAL += TestSerial_Other.o + #HCC_WORKAROUND + ifneq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) OBJ_SERIAL += TestSerial_MDRange.o + endif + OBJ_SERIAL += TestSerial_Crs.o OBJ_SERIAL += TestSerial_Task.o TestSerial_WorkGraph.o TARGETS += KokkosCore_UnitTest_Serial @@ -223,8 +283,10 @@ TEST_TARGETS += test-hwloc OBJ_DEFAULT = UnitTestMainInit.o gtest-all.o ifneq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) +ifneq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) OBJ_DEFAULT += TestDefaultDeviceType.o TestDefaultDeviceType_a.o TestDefaultDeviceType_b.o TestDefaultDeviceType_c.o TestDefaultDeviceType_d.o endif +endif TARGETS += KokkosCore_UnitTest_Default TEST_TARGETS += test-default @@ -239,6 +301,9 @@ TEST_TARGETS += ${INITTESTS_TEST_TARGETS} KokkosCore_UnitTest_Cuda: $(OBJ_CUDA) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_CUDA) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Cuda +KokkosCore_UnitTest_ROCm: $(OBJ_ROCM) $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) $(OBJ_ROCM) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_ROCm + KokkosCore_UnitTest_Threads: $(OBJ_THREADS) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_THREADS) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Threads @@ -272,6 +337,9 @@ ${INITTESTS_TARGETS}: KokkosCore_UnitTest_DefaultDeviceTypeInit_%: TestDefaultDe test-cuda: KokkosCore_UnitTest_Cuda ./KokkosCore_UnitTest_Cuda +test-rocm: KokkosCore_UnitTest_ROCm + ./KokkosCore_UnitTest_ROCm + test-threads: KokkosCore_UnitTest_Threads ./KokkosCore_UnitTest_Threads diff --git a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp index fddcc4a2e6..f0391134ba 100644 --- a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp +++ b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp @@ -43,6 +43,19 @@ #include +#if defined(KOKKOS_ENABLE_CUDA) && \ + ( !defined(KOKKOS_ENABLE_CUDA_LAMBDA) || \ + ( ( defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_OPENMP) ) && \ + ( (CUDA_VERSION < 8000) && defined( __NVCC__ )))) + #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + #error "Macro bug: KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA shouldn't be defined" + #endif +#else + #if !defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + #error "Macro bug: KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA should be defined" + #endif +#endif + #define KOKKOS_PRAGMA_UNROLL(a) namespace TestCompilerMacros { diff --git a/lib/kokkos/core/unit_test/TestComplex.hpp b/lib/kokkos/core/unit_test/TestComplex.hpp index 36f05612e0..ce5537fed3 100644 --- a/lib/kokkos/core/unit_test/TestComplex.hpp +++ b/lib/kokkos/core/unit_test/TestComplex.hpp @@ -158,7 +158,8 @@ struct TestComplexBasicMath { d_results(1) = a-b; d_results(2) = a*b; d_results(3) = a/b; - d_results(4) = Kokkos::complex(1.0,2.0); + d_results(4).real(1.0); + d_results(4).imag(2.0); d_results(4) += a; d_results(5) = Kokkos::complex(1.0,2.0); d_results(5) -= a; @@ -173,7 +174,8 @@ struct TestComplexBasicMath { d_results(9) = a-c; d_results(10) = a*c; d_results(11) = a/c; - d_results(12) = Kokkos::complex(1.0,2.0); + d_results(12).real(1.0); + d_results(12).imag(2.0); d_results(12) += c; d_results(13) = Kokkos::complex(1.0,2.0); d_results(13) -= c; diff --git a/lib/kokkos/core/unit_test/TestCrs.hpp b/lib/kokkos/core/unit_test/TestCrs.hpp new file mode 100644 index 0000000000..90f4036868 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestCrs.hpp @@ -0,0 +1,98 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +#include + +namespace Test { + +namespace { + +template< class ExecSpace > +struct CountFillFunctor { + KOKKOS_INLINE_FUNCTION + std::int32_t operator()(std::int32_t row, std::int32_t* fill) const { + auto n = (row % 4) + 1; + if (fill) { + for (std::int32_t j = 0; j < n; ++j) { + fill[j] = j + 1; + } + } + return n; + } +}; + +template< class ExecSpace > +void test_count_fill(std::int32_t nrows) { + Kokkos::Experimental::Crs graph; + Kokkos::Experimental::count_and_fill_crs(graph, nrows, CountFillFunctor()); + ASSERT_EQ(graph.numRows(), nrows); + auto row_map = Kokkos::create_mirror_view(graph.row_map); + Kokkos::deep_copy(row_map, graph.row_map); + auto entries = Kokkos::create_mirror_view(graph.entries); + Kokkos::deep_copy(entries, graph.entries); + for (std::int32_t row = 0; row < nrows; ++row) { + auto n = (row % 4) + 1; + ASSERT_EQ(row_map(row + 1) - row_map(row), n); + for (std::int32_t j = 0; j < n; ++j) { + ASSERT_EQ(entries(row_map(row) + j), j + 1); + } + } +} + +} // anonymous namespace + +TEST_F( TEST_CATEGORY, crs_count_fill ) +{ + test_count_fill(0); + test_count_fill(1); + test_count_fill(2); + test_count_fill(3); + test_count_fill(13); + test_count_fill(100); + test_count_fill(1000); + test_count_fill(10000); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/TestRange.hpp b/lib/kokkos/core/unit_test/TestRange.hpp index 3cea1ad4a0..e6857a4d2f 100644 --- a/lib/kokkos/core/unit_test/TestRange.hpp +++ b/lib/kokkos/core/unit_test/TestRange.hpp @@ -301,19 +301,19 @@ TEST_F( TEST_CATEGORY, range_scan ) { { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(0); f.test_scan(); } { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(0); f.test_scan(); } -#ifndef KOKKOS_ENABLE_CUDA +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(0); f.test_dynamic_policy(); } #endif { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(2); f.test_scan(); } { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(3); f.test_scan(); } -#ifndef KOKKOS_ENABLE_CUDA +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(3); f.test_dynamic_policy(); } #endif { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(1000); f.test_scan(); } { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(1001); f.test_scan(); } -#ifndef KOKKOS_ENABLE_CUDA +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(1001); f.test_dynamic_policy(); } #endif } diff --git a/lib/kokkos/core/unit_test/TestScan.hpp b/lib/kokkos/core/unit_test/TestScan.hpp index fa7669c5ed..823f0c99a8 100644 --- a/lib/kokkos/core/unit_test/TestScan.hpp +++ b/lib/kokkos/core/unit_test/TestScan.hpp @@ -92,7 +92,7 @@ struct TestScan { Kokkos::deep_copy( errors_a, 0 ); errors = errors_a; - parallel_scan( N , *this ); + Kokkos::parallel_scan( N , *this ); } TestScan( const WorkSpec & Start , const WorkSpec & N ) @@ -103,7 +103,7 @@ struct TestScan { Kokkos::deep_copy( errors_a, 0 ); errors = errors_a; - parallel_scan( exec_policy( Start , N ) , *this ); + Kokkos::parallel_scan( exec_policy( Start , N ) , *this ); } static void test_range( const WorkSpec & begin, const WorkSpec & end ) diff --git a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp index 4e66543857..a3f59a2b9e 100644 --- a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp +++ b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp @@ -250,34 +250,23 @@ struct TestTaskDependence { const int n = CHUNK < m_count ? CHUNK : m_count; if ( 1 < m_count ) { - // Test use of memory pool for temporary allocation: - // Raw allocation: - future_type * const f = - (future_type *) m_sched.memory()->allocate( sizeof(future_type) * n ); + const int increment = ( m_count + n - 1 ) / n; - // In-place construction: - for ( int i = 0; i < n; ++i ) new(f+i) future_type(); + future_type f = + m_sched.when_all( n , [this,increment]( int i ) { + const long inc = increment ; + const long begin = i * inc ; + const long count = begin + inc < m_count ? inc : m_count - begin ; - const int inc = ( m_count + n - 1 ) / n; - - for ( int i = 0; i < n; ++i ) { - long begin = i * inc; - long count = begin + inc < m_count ? inc : m_count - begin; - - f[i] = Kokkos::task_spawn( Kokkos::TaskSingle( m_sched ) - , TestTaskDependence( count, m_sched, m_accum ) ); - } + return Kokkos::task_spawn + ( Kokkos::TaskSingle( m_sched ) + , TestTaskDependence( count, m_sched, m_accum ) ); + }); m_count = 0; - Kokkos::respawn( this, Kokkos::when_all( f, n ) ); - - // In-place destruction to release future: - for ( int i = 0; i < n; ++i ) (f+i)->~future_type(); - - // Raw deallocation: - m_sched.memory()->deallocate( f , sizeof(future_type) * n ); + Kokkos::respawn( this, f ); } else if ( 1 == m_count ) { Kokkos::atomic_increment( & m_accum() ); @@ -372,7 +361,9 @@ struct TestTaskTeam { , begin - 1 ) ); + #ifndef __HCC_ACCELERATOR__ assert( !future.is_null() ); + #endif Kokkos::respawn( this, future ); } @@ -664,6 +655,7 @@ TEST_F( TEST_CATEGORY, task_fib ) TEST_F( TEST_CATEGORY, task_depend ) { for ( int i = 0; i < 25; ++i ) { +printf("\nTest::task_depend %d\n",i); TestTaskScheduler::TestTaskDependence< TEST_EXECSPACE >::run( i ); } } diff --git a/lib/kokkos/core/unit_test/TestViewAPI.hpp b/lib/kokkos/core/unit_test/TestViewAPI.hpp index 232163f11e..721ffd8378 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI.hpp @@ -1324,10 +1324,14 @@ TEST_F( TEST_CATEGORY, view_remap ) #ifdef KOKKOS_ENABLE_CUDA #define EXECSPACE std::conditional::value,Kokkos::CudaHostPinnedSpace,TEST_EXECSPACE>::type #else - #ifdef KOKKOS_ENABLE_OPENMPTARGET - #define EXECSPACE Kokkos::HostSpace + #ifdef KOKKOS_ENABLE_ROCM + #define EXECSPACE std::conditional::value,Kokkos::Experimental::ROCmHostPinnedSpace,TEST_EXECSPACE>::type #else - #define EXECSPACE TEST_EXECSPACE + #if defined(KOKKOS_ENABLE_OPENMPTARGET) + #define EXECSPACE Kokkos::HostSpace + #else + #define EXECSPACE TEST_EXECSPACE + #endif #endif #endif @@ -1375,4 +1379,14 @@ TEST_F( TEST_CATEGORY, view_remap ) } } +TEST_F( TEST_CATEGORY, view_mirror_nonconst ) +{ + Kokkos::View d_view("d_view", 10); + Kokkos::View d_view_const = d_view; + auto h_view = Kokkos::create_mirror(d_view_const); + Kokkos::deep_copy(h_view, d_view_const); + auto h_view2 = Kokkos::create_mirror(Kokkos::HostSpace(), d_view_const); + Kokkos::deep_copy(h_view2, d_view_const); +} + } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestViewCtorPropEmbeddedDim.hpp b/lib/kokkos/core/unit_test/TestViewCtorPropEmbeddedDim.hpp index 305ddb2a1d..61b43a588a 100644 --- a/lib/kokkos/core/unit_test/TestViewCtorPropEmbeddedDim.hpp +++ b/lib/kokkos/core/unit_test/TestViewCtorPropEmbeddedDim.hpp @@ -107,6 +107,7 @@ struct TestViewCtorProp_EmbeddedDim { Kokkos::deep_copy( hcv1, cv1 ); ASSERT_EQ( (std::is_same< CommonViewValueType, double >::value) , true ) ; + ASSERT_EQ( (std::is_same< typename decltype(view_alloc_arg)::scalar_array_type, CommonViewValueType>::value) , true ) ; #if 0 // debug output for ( int i = 0; i < N0*N1; ++i ) { diff --git a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp index 810ae72e73..f963875ae1 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp @@ -1012,7 +1012,7 @@ void test_view_mapping() ASSERT_EQ( a.use_count(), 1 ); ASSERT_EQ( b.use_count(), 0 ); -#if !defined( KOKKOS_ENABLE_CUDA_LAMBDA ) +#if !defined( KOKKOS_ENABLE_CUDA_LAMBDA ) && !defined( KOKKOS_ENABLE_ROCM ) // Cannot launch host lambda when CUDA lambda is enabled. typedef typename Kokkos::Impl::HostMirror< Space >::Space::execution_space host_exec_space; @@ -1021,6 +1021,7 @@ void test_view_mapping() // 'a' is captured by copy, and the capture mechanism converts 'a' to an // unmanaged copy. When the parallel dispatch accepts a move for the // lambda, this count should become 1. + ASSERT_EQ( a.use_count(), 2 ); V x = a; ASSERT_EQ( a.use_count(), 2 ); diff --git a/lib/kokkos/core/unit_test/TestViewMapping_b.hpp b/lib/kokkos/core/unit_test/TestViewMapping_b.hpp index ee1c96b423..d0cbfe9e7d 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_b.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_b.hpp @@ -133,11 +133,15 @@ TEST_F( TEST_CATEGORY , view_mapping_atomic ) f.run(); } +} + /*--------------------------------------------------------------------------*/ + namespace Test { -struct ValueType { + +struct MappingClassValueType { KOKKOS_INLINE_FUNCTION - ValueType() + MappingClassValueType() { #if 0 #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA ) @@ -150,7 +154,7 @@ struct ValueType { #endif } KOKKOS_INLINE_FUNCTION - ~ValueType() + ~MappingClassValueType() { #if 0 #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA ) @@ -163,7 +167,6 @@ struct ValueType { #endif } }; -} template< class Space > void test_view_mapping_class_value() @@ -172,7 +175,7 @@ void test_view_mapping_class_value() ExecSpace::fence(); { - Kokkos::View< Test::ValueType, ExecSpace > a( "a" ); + Kokkos::View< MappingClassValueType, ExecSpace > a( "a" ); ExecSpace::fence(); } ExecSpace::fence(); @@ -184,3 +187,74 @@ TEST_F( TEST_CATEGORY , view_mapping_class_value ) } } + +/*--------------------------------------------------------------------------*/ + +namespace Test { + +TEST_F( TEST_CATEGORY , view_mapping_assignable ) +{ + typedef TEST_EXECSPACE exec_space ; + + { // Assignment of rank-0 Left = Right + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( mapping::is_assignable , "" ); + + Kokkos::View src ; + Kokkos::View dst( src ); + dst = src ; + } + + { // Assignment of rank-0 Right = Left + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( mapping::is_assignable , "" ); + + Kokkos::View src ; + Kokkos::View dst( src ); + dst = src ; + } + + { // Assignment of rank-1 Left = Right + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( mapping::is_assignable , "" ); + + Kokkos::View src ; + Kokkos::View dst( src ); + dst = src ; + } + + { // Assignment of rank-1 Right = Left + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( mapping::is_assignable , "" ); + + Kokkos::View src ; + Kokkos::View dst( src ); + dst = src ; + } + + { // Assignment of rank-2 Left = Right + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( ! mapping::is_assignable , "" ); + } + + { // Assignment of rank-2 Right = Left + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( ! mapping::is_assignable , "" ); + } + +} + +} + diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_Crs.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_Crs.cpp new file mode 100644 index 0000000000..a90e88933e --- /dev/null +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_Crs.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_c.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_c.cpp index e11996e8f9..4500392b27 100644 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_c.cpp +++ b/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_c.cpp @@ -46,6 +46,7 @@ #include #if !defined( KOKKOS_ENABLE_CUDA ) || defined( __CUDACC__ ) +#if !defined( KOKKOS_ENABLE_ROCM ) #include #include @@ -60,3 +61,4 @@ TEST_F( defaultdevicetype, reduce_instantiation_c ) } // namespace Test #endif +#endif diff --git a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Crs.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Crs.cpp new file mode 100644 index 0000000000..54b283f539 --- /dev/null +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Crs.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_Category.hpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_Category.hpp new file mode 100644 index 0000000000..94e778b3bc --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_Category.hpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_TEST_THREADS_HPP +#define KOKKOS_TEST_THREADS_HPP + +#include + +namespace Test { + +class rocm_hostpinned : public ::testing::Test { +protected: + static void SetUpTestCase() { + } + + static void TearDownTestCase() { + } +}; + +} // namespace Test + +#define TEST_CATEGORY rocm_hostpinned +#define TEST_EXECSPACE Kokkos::Experimental::ROCmHostPinnedSpace + +#endif diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_SharedAlloc.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_SharedAlloc.cpp new file mode 100644 index 0000000000..2f8f379db0 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_SharedAlloc.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + + +TEST_F( TEST_CATEGORY, impl_shared_alloc ) +{ + test_shared_alloc< TEST_EXECSPACE, Kokkos::DefaultHostExecutionSpace >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewAPI.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewAPI.cpp new file mode 100644 index 0000000000..32ecbbb48f --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewAPI.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_a.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_a.cpp new file mode 100644 index 0000000000..5523fac7fc --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_a.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_b.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_b.cpp new file mode 100644 index 0000000000..5e29612d72 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_b.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_subview.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_subview.cpp new file mode 100644 index 0000000000..6a6194b38f --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_subview.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_All.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_All.cpp new file mode 100644 index 0000000000..a9c7e51b62 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_All.cpp @@ -0,0 +1,33 @@ +#include "rocm/TestROCm_Init.cpp" + +//#include "rocm/TestROCm_Complex.cpp" +#include "rocm/TestROCm_Reductions.cpp" +//#include "rocm/TestROCm_RangePolicy.cpp" +//#include "rocm/TestROCm_AtomicOperations.cpp" +//#include "rocm/TestROCm_Atomics.cpp" +//#include "rocm/TestROCm_AtomicViews.cpp" +//#include "rocm/TestROCm_Other.cpp" +//#include "rocm/TestROCm_Scan.cpp" +//#include "rocm/TestROCm_SharedAlloc.cpp" +//#include "rocm/TestROCm_SubView_a.cpp" +//#include "rocm/TestROCm_SubView_b.cpp" +//#include "rocm/TestROCm_SubView_c01.cpp" +//#include "rocm/TestROCm_SubView_c02.cpp" +//#include "rocm/TestROCm_SubView_c03.cpp" +//#include "rocm/TestROCm_SubView_c04.cpp" +//#include "rocm/TestROCm_SubView_c05.cpp" +//#include "rocm/TestROCm_SubView_c06.cpp" +//#include "rocm/TestROCm_SubView_c07.cpp" +//#include "rocm/TestROCm_SubView_c08.cpp" +//#include "rocm/TestROCm_SubView_c09.cpp" +//#include "rocm/TestROCm_SubView_c10.cpp" +//#include "rocm/TestROCm_SubView_c11.cpp" +//#include "rocm/TestROCm_SubView_c12.cpp" +//#include "rocm/TestROCm_Team.cpp" +//#include "rocm/TestROCm_TeamReductionScan.cpp" +//#include "rocm/TestROCm_TeamScratch.cpp" +//#include "rocm/TestROCm_ViewAPI_b.cpp" +//#include "rocm/TestROCm_ViewMapping_a.cpp" +//#include "rocm/TestROCm_ViewMapping_b.cpp" +//#include "rocm/TestROCm_ViewMapping_subview.cpp" +//#include "rocm/TestROCm_ViewOfClass.cpp" diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicOperations.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicOperations.cpp new file mode 100644 index 0000000000..e6b7a25316 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicOperations.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicViews.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicViews.cpp new file mode 100644 index 0000000000..d5f82826b0 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicViews.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Atomics.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Atomics.cpp new file mode 100644 index 0000000000..5944830c43 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Atomics.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Category.hpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Category.hpp new file mode 100644 index 0000000000..a34068f533 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Category.hpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_TEST_ROCM_HPP +#define KOKKOS_TEST_ROCM_HPP + +#include + +namespace Test { + +class rocm : public ::testing::Test { +protected: + static void SetUpTestCase() { + } + + static void TearDownTestCase() { + } +}; + +} // namespace Test + +#define TEST_CATEGORY rocm +#define TEST_EXECSPACE Kokkos::Experimental::ROCm + +#endif diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Complex.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Complex.cpp new file mode 100644 index 0000000000..2b72cdee88 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Complex.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Init.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Init.cpp new file mode 100644 index 0000000000..dafe9fb529 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Init.cpp @@ -0,0 +1,50 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include + + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Other.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Other.cpp new file mode 100644 index 0000000000..3e182dacba --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Other.cpp @@ -0,0 +1,52 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +//include +#include +#include + +#include diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_RangePolicy.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_RangePolicy.cpp new file mode 100644 index 0000000000..ef7dad95a3 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_RangePolicy.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Reductions.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Reductions.cpp new file mode 100644 index 0000000000..33c4d960f8 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Reductions.cpp @@ -0,0 +1,48 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Scan.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Scan.cpp new file mode 100644 index 0000000000..ae0a016af3 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Scan.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SharedAlloc.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SharedAlloc.cpp new file mode 100644 index 0000000000..7a038edf4b --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SharedAlloc.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + + +TEST_F( TEST_CATEGORY, impl_shared_alloc ) +{ + test_shared_alloc< Kokkos::Experimental::ROCmSpace, Kokkos::DefaultHostExecutionSpace >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Spaces.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Spaces.cpp new file mode 100644 index 0000000000..d44e7afec3 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Spaces.cpp @@ -0,0 +1,196 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +KOKKOS_INLINE_FUNCTION +void test_abort() +{ + Kokkos::abort( "test_abort" ); +} + +KOKKOS_INLINE_FUNCTION +void test_rocm_spaces_int_value( int * ptr ) +{ + if ( *ptr == 42 ) { *ptr = 2 * 42; } +} + +TEST_F( rocm, space_access ) +{ + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace, Kokkos::HostSpace >::assignable, "" ); + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace, Kokkos::Experimental::ROCmSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace, Kokkos::Experimental::ROCmSpace >::accessible, "" ); + + //-------------------------------------- + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::Experimental::ROCmSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::assignable, "" ); + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::accessible, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::HostSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::HostSpace >::accessible, "" ); + + //-------------------------------------- + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::HostSpace >::assignable, "" ); + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::HostSpace >::accessible, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::Experimental::ROCmSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::Experimental::ROCmSpace >::accessible, "" ); + + //-------------------------------------- + + static_assert( + ! Kokkos::Impl::SpaceAccessibility< Kokkos::Experimental::ROCm, Kokkos::HostSpace >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility< Kokkos::Experimental::ROCm, Kokkos::Experimental::ROCmSpace >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility< Kokkos::Experimental::ROCm, Kokkos::Experimental::ROCmHostPinnedSpace >::accessible, "" ); + + static_assert( + ! Kokkos::Impl::SpaceAccessibility< Kokkos::HostSpace, Kokkos::Experimental::ROCmSpace >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility< Kokkos::HostSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::accessible, "" ); + + static_assert( + std::is_same< Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCmSpace >::Space + , Kokkos::HostSpace >::value, "" ); + + static_assert( + std::is_same< Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCmHostPinnedSpace >::Space + , Kokkos::Experimental::ROCmHostPinnedSpace >::value, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility + < Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCm >::Space + , Kokkos::HostSpace + >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility + < Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCmSpace >::Space + , Kokkos::HostSpace + >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility + < Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCmHostPinnedSpace >::Space + , Kokkos::HostSpace + >::accessible, "" ); +} + +template< class MemSpace, class ExecSpace > +struct TestViewROCmAccessible { + enum { N = 1000 }; + + using V = Kokkos::View< double*, MemSpace >; + + V m_base; + + struct TagInit {}; + struct TagTest {}; + + KOKKOS_INLINE_FUNCTION + void operator()( const TagInit &, const int i ) const { m_base[i] = i + 1; } + + KOKKOS_INLINE_FUNCTION + void operator()( const TagTest &, const int i, long & error_count ) const + { if ( m_base[i] != i + 1 ) ++error_count; } + + TestViewROCmAccessible() + : m_base( "base", N ) + {} + + static void run() + { + TestViewROCmAccessible self; + Kokkos::parallel_for( Kokkos::RangePolicy< typename MemSpace::execution_space, TagInit >( 0, N ), self ); + MemSpace::execution_space::fence(); + + // Next access is a different execution space, must complete prior kernel. + long error_count = -1; + Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace, TagTest >( 0, N ), self, error_count ); + EXPECT_EQ( error_count, 0 ); + } +}; + +TEST_F( rocm, impl_view_accessible ) +{ + TestViewROCmAccessible< Kokkos::Experimental::ROCmSpace, Kokkos::Experimental::ROCm >::run(); + + TestViewROCmAccessible< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::Experimental::ROCm >::run(); + TestViewROCmAccessible< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::HostSpace::execution_space >::run(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_a.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_a.cpp new file mode 100644 index 0000000000..ea39a25b5c --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_a.cpp @@ -0,0 +1,104 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_auto_1d_left ) +{ + TestViewSubview::test_auto_1d< Kokkos::LayoutLeft, TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_auto_1d_right ) +{ + TestViewSubview::test_auto_1d< Kokkos::LayoutRight, TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_auto_1d_stride ) +{ + TestViewSubview::test_auto_1d< Kokkos::LayoutStride, TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_assign_strided ) +{ + TestViewSubview::test_1d_strided_assignment< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_left_0 ) +{ + TestViewSubview::test_left_0< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_left_1 ) +{ + TestViewSubview::test_left_1< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_left_2 ) +{ + TestViewSubview::test_left_2< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_left_3 ) +{ + TestViewSubview::test_left_3< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_right_0 ) +{ + TestViewSubview::test_right_0< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_right_1 ) +{ + TestViewSubview::test_right_1< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_right_3 ) +{ + TestViewSubview::test_right_3< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_b.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_b.cpp new file mode 100644 index 0000000000..00a3a341bb --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_b.cpp @@ -0,0 +1,63 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_layoutleft_to_layoutleft ) +{ + TestViewSubview::test_layoutleft_to_layoutleft< TEST_EXECSPACE >(); + TestViewSubview::test_layoutleft_to_layoutleft< TEST_EXECSPACE, Kokkos::MemoryTraits >(); + TestViewSubview::test_layoutleft_to_layoutleft< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +TEST_F( TEST_CATEGORY, view_subview_layoutright_to_layoutright ) +{ + TestViewSubview::test_layoutright_to_layoutright< TEST_EXECSPACE >(); + TestViewSubview::test_layoutright_to_layoutright< TEST_EXECSPACE, Kokkos::MemoryTraits >(); + TestViewSubview::test_layoutright_to_layoutright< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c01.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c01.cpp new file mode 100644 index 0000000000..c17b0722e9 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c01.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_1d_assign ) +{ + TestViewSubview::test_1d_assign< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c02.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c02.cpp new file mode 100644 index 0000000000..e723b43323 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c02.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_1d_assign_atomic ) +{ + TestViewSubview::test_1d_assign< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c03.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c03.cpp new file mode 100644 index 0000000000..b1170a70f5 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c03.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_1d_assign_randomaccess ) +{ + TestViewSubview::test_1d_assign< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c04.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c04.cpp new file mode 100644 index 0000000000..0788a82ba4 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c04.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_2d_from_3d ) +{ + TestViewSubview::test_2d_subview_3d< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c05.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c05.cpp new file mode 100644 index 0000000000..8d075a37c0 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c05.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_2d_from_3d_atomic ) +{ + TestViewSubview::test_2d_subview_3d< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c06.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c06.cpp new file mode 100644 index 0000000000..b9dc782571 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c06.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_2d_from_3d_randomaccess ) +{ + TestViewSubview::test_2d_subview_3d< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c07.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c07.cpp new file mode 100644 index 0000000000..54c46095aa --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c07.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_left ) +{ + TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c08.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c08.cpp new file mode 100644 index 0000000000..369e16a795 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c08.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_left_atomic ) +{ + TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c09.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c09.cpp new file mode 100644 index 0000000000..b97926f98e --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c09.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_left_randomaccess ) +{ + TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c10.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c10.cpp new file mode 100644 index 0000000000..a1d47e0fbd --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c10.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_right ) +{ + TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c11.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c11.cpp new file mode 100644 index 0000000000..5be70dc22e --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c11.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_right_atomic ) +{ + TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c12.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c12.cpp new file mode 100644 index 0000000000..8135476662 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c12.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_right_randomaccess ) +{ + TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Team.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Team.cpp new file mode 100644 index 0000000000..054bbd83c8 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Team.cpp @@ -0,0 +1,75 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, team_for ) +{ + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 0 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 0 ); + + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 2 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 2 ); + + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 1000 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 1000 ); +} + + +TEST_F( TEST_CATEGORY, team_reduce ) +{ + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 0 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 0 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 2 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 2 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 1000 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 1000 ); +} +} + +#include + + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_TeamReductionScan.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_TeamReductionScan.cpp new file mode 100644 index 0000000000..ba0eb0e1bd --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_TeamReductionScan.cpp @@ -0,0 +1,82 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +#if !defined(KOKKOS_ROCM_CLANG_WORKAROUND) +TEST_F( TEST_CATEGORY, team_scan ) +{ + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 10 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 10 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 10000 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 10000 ); +} +#endif + +TEST_F( TEST_CATEGORY, team_long_reduce ) +{ + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 3 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 3 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 100000 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 100000 ); +} + +TEST_F( TEST_CATEGORY, team_double_reduce ) +{ + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 3 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 3 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 100000 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 100000 ); +} + +} // namespace Test + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_TeamScratch.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_TeamScratch.cpp new file mode 100644 index 0000000000..351dfee2b5 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_TeamScratch.cpp @@ -0,0 +1,83 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, team_shared_request ) +{ + TestSharedTeam< TEST_EXECSPACE, Kokkos::Schedule >(); + TestSharedTeam< TEST_EXECSPACE, Kokkos::Schedule >(); +} + +TEST_F( TEST_CATEGORY, team_scratch_request ) +{ + TestScratchTeam< TEST_EXECSPACE, Kokkos::Schedule >(); + TestScratchTeam< TEST_EXECSPACE, Kokkos::Schedule >(); +} + +#if defined( KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA ) +#if !defined(KOKKOS_ENABLE_ROCM) || ( 8000 <= ROCM_VERSION ) +TEST_F( TEST_CATEGORY, team_lambda_shared_request ) +{ + TestLambdaSharedTeam< Kokkos::HostSpace, TEST_EXECSPACE, Kokkos::Schedule >(); + TestLambdaSharedTeam< Kokkos::HostSpace, TEST_EXECSPACE, Kokkos::Schedule >(); +} +#endif +#endif + +TEST_F( TEST_CATEGORY, shmem_size ) +{ + TestShmemSize< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, multi_level_scratch ) +{ + TestMultiLevelScratchTeam< TEST_EXECSPACE, Kokkos::Schedule >(); + TestMultiLevelScratchTeam< TEST_EXECSPACE, Kokkos::Schedule >(); +} + +} // namespace Test + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewAPI_b.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewAPI_b.cpp new file mode 100644 index 0000000000..3e6f559438 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewAPI_b.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_a.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_a.cpp new file mode 100644 index 0000000000..a7b2b9695d --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_a.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_b.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_b.cpp new file mode 100644 index 0000000000..fa5b209f1b --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_b.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_subview.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_subview.cpp new file mode 100644 index 0000000000..0af114c7ea --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_subview.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewOfClass.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewOfClass.cpp new file mode 100644 index 0000000000..f0b95c0e00 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewOfClass.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/serial/TestSerial_Crs.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_Crs.cpp new file mode 100644 index 0000000000..5799ab816c --- /dev/null +++ b/lib/kokkos/core/unit_test/serial/TestSerial_Crs.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/threads/TestThreads_Crs.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_Crs.cpp new file mode 100644 index 0000000000..25243273fe --- /dev/null +++ b/lib/kokkos/core/unit_test/threads/TestThreads_Crs.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/generate_makefile.bash b/lib/kokkos/generate_makefile.bash index 6d636dc7e4..b4a69d30fd 100755 --- a/lib/kokkos/generate_makefile.bash +++ b/lib/kokkos/generate_makefile.bash @@ -31,6 +31,9 @@ do KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" CUDA_PATH="${key#*=}" ;; + --with-rocm) + KOKKOS_DEVICES="${KOKKOS_DEVICES},ROCm" + ;; --with-openmp) KOKKOS_DEVICES="${KOKKOS_DEVICES},OpenMP" ;; @@ -56,6 +59,9 @@ do --with-hwloc*) HWLOC_PATH="${key#*=}" ;; + --with-memkind*) + MEMKIND_PATH="${key#*=}" + ;; --arch*) KOKKOS_ARCH="${key#*=}" ;; @@ -117,6 +123,7 @@ do echo " ARMv81 = ARMv8.1 Compatible CPU" echo " ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU" echo " [IBM]" + echo " Power7 = IBM POWER7 and POWER7+ CPUs" echo " Power8 = IBM POWER8 CPUs" echo " Power9 = IBM POWER9 CPUs" echo " [Intel]" @@ -151,7 +158,8 @@ do echo " -lpthread, etc.)." echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" echo " tests.)" - echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc." + echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." + echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." echo "--with-options=[OPT]: Additional options to Kokkos:" echo " compiler_warnings" echo " aggressive_vectorization = add ivdep on loops" @@ -228,7 +236,17 @@ else fi if [ ${#HWLOC_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HWLOC_PATH=${HWLOC_PATH} KOKKOS_USE_TPLS=hwloc" + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HWLOC_PATH=${HWLOC_PATH}" + KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},hwloc" +fi + +if [ ${#MEMKIND_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} MEMKIND_PATH=${MEMKIND_PATH}" + KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},experimental_memkind" +fi + +if [ ${#KOKKOS_USE_TPLS} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_USE_TPLS=${KOKKOS_USE_TPLS}" fi if [ ${#QTHREADS_PATH} -gt 0 ]; then -- GitLab From 26c15140be2059151e57dda6e59b04b57a15cb1d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 22 Aug 2017 23:46:09 -0400 Subject: [PATCH 283/337] add USER-MESO files to .gitignore --- src/.gitignore | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/.gitignore b/src/.gitignore index 80166e260e..ff589bc701 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -60,6 +60,35 @@ /intel_preprocess.h /intel_simd.h +/atom_vec_edpd.cpp +/atom_vec_edpd.h +/atom_vec_mdpd.cpp +/atom_vec_mdpd.h +/atom_vec_tdpd.cpp +/atom_vec_tdpd.h +/compute_edpd_temp_atom.cpp +/compute_edpd_temp_atom.h +/compute_tdpd_cc_atom.cpp +/compute_tdpd_cc_atom.h +/fix_edpd_source.cpp +/fix_edpd_source.h +/fix_mvv_dpd.cpp +/fix_mvv_dpd.h +/fix_mvv_edpd.cpp +/fix_mvv_edpd.h +/fix_mvv_tdpd.cpp +/fix_mvv_tdpd.h +/fix_tdpd_source.cpp +/fix_tdpd_source.h +/pair_edpd.cpp +/pair_edpd.h +/pair_mdpd.cpp +/pair_mdpd.h +/pair_mdpd_rhosum.cpp +/pair_mdpd_rhosum.h +/pair_tdpd.cpp +/pair_tdpd.h + /compute_sna_atom.cpp /compute_sna_atom.h /compute_snad_atom.cpp -- GitLab From 79d5ca669dcb22fc78108d97ff321045e2a54c43 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 22 Aug 2017 23:46:32 -0400 Subject: [PATCH 284/337] fix issues indicated by compiler warnings --- src/USER-MESO/atom_vec_edpd.cpp | 4 ++-- src/USER-MESO/atom_vec_tdpd.cpp | 4 ++-- src/USER-MESO/pair_tdpd.cpp | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/USER-MESO/atom_vec_edpd.cpp b/src/USER-MESO/atom_vec_edpd.cpp index 635743cc9e..385e8fd426 100644 --- a/src/USER-MESO/atom_vec_edpd.cpp +++ b/src/USER-MESO/atom_vec_edpd.cpp @@ -136,7 +136,7 @@ void AtomVecEDPD::force_clear(int n, size_t nbytes) int AtomVecEDPD::pack_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { - int i,j,k,m; + int i,j,m; double dx,dy,dz; m = 0; @@ -182,7 +182,7 @@ int AtomVecEDPD::pack_comm(int n, int *list, double *buf, int AtomVecEDPD::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, int *pbc) { - int i,j,k,m; + int i,j,m; double dx,dy,dz,dvx,dvy,dvz; m = 0; diff --git a/src/USER-MESO/atom_vec_tdpd.cpp b/src/USER-MESO/atom_vec_tdpd.cpp index ce9e492029..34f2b1a031 100644 --- a/src/USER-MESO/atom_vec_tdpd.cpp +++ b/src/USER-MESO/atom_vec_tdpd.cpp @@ -851,8 +851,8 @@ void AtomVecTDPD::write_data(FILE *fp, int n, double **buf) (int) ubuf(buf[i][5]).i,(int) ubuf(buf[i][6]).i, (int) ubuf(buf[i][7]).i); for(int k = 0; k < cc_species; k++) - fprintf(fp,TAGINT_FORMAT " %-1.16e",buf[i][8+k]); - fprintf(fp,TAGINT_FORMAT "\n"); + fprintf(fp," %-1.16e",buf[i][8+k]); + fprintf(fp,"\n"); } } diff --git a/src/USER-MESO/pair_tdpd.cpp b/src/USER-MESO/pair_tdpd.cpp index 22c856ee3f..1f2bd4eb6c 100644 --- a/src/USER-MESO/pair_tdpd.cpp +++ b/src/USER-MESO/pair_tdpd.cpp @@ -91,7 +91,6 @@ PairTDPD::~PairTDPD() void PairTDPD::compute(int eflag, int vflag) { double evdwl = 0.0; - double fpair; if (eflag || vflag) ev_setup(eflag,vflag); else evflag = vflag_fdotr = 0; -- GitLab From b80752a40c564e70c5b7b91f5ddb610a8376409d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 23 Aug 2017 00:01:19 -0400 Subject: [PATCH 285/337] restore changes to read_data docs, that would have been lost due to merging an outdated version --- doc/src/read_data.txt | 48 +++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/doc/src/read_data.txt b/doc/src/read_data.txt index 747c3e752d..6000a80976 100644 --- a/doc/src/read_data.txt +++ b/doc/src/read_data.txt @@ -14,7 +14,7 @@ read_data file keyword args ... :pre file = name of data file to read in :ulb,l zero or more keyword/arg pairs may be appended :l -keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/types} or {extra/angle/types} or {extra/dihedral/types} or {extra/improper/types} or {group} or {nocoeff} or {fix} :l +keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/types} or {extra/angle/types} or {extra/dihedral/types} or {extra/improper/types} or {extra/bond/per/atom} or {extra/angle/per/atom} or {extra/dihedral/per/atom} or {extra/improper/per/atom} or {group} or {nocoeff} or {fix} :l {add} arg = {append} or {Nstart} or {merge} append = add new atoms with IDs appended to current IDs Nstart = add new atoms with IDs starting with Nstart @@ -32,6 +32,11 @@ keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/type {extra/angle/types} arg = # of extra angle types {extra/dihedral/types} arg = # of extra dihedral types {extra/improper/types} arg = # of extra improper types + {extra/bond/per/atom} arg = leave space for this many new bonds per atom + {extra/angle/per/atom} arg = leave space for this many new angles per atom + {extra/dihedral/per/atom} arg = leave space for this many new dihedrals per atom + {extra/improper/per/atom} arg = leave space for this many new impropers per atom + {extra/special/per/atom} arg = leave space for extra 1-2,1-3,1-4 interactions per atom {group} args = groupID groupID = add atoms in data file to this group {nocoeff} = ignore force field parameters @@ -57,7 +62,7 @@ simulation. The file can be ASCII text or a gzipped text file atom coordinates; see the "read_restart"_read_restart.html and "create_atoms"_create_atoms.html commands for alternative methods. Also see the explanation of the "-restart command-line -switch"_Section_start.html#start_7 which can convert a restart file to +switch"_Section_start.html#start_6 which can convert a restart file to a data file. This command can be used multiple times to add new atoms and their @@ -264,11 +269,11 @@ is different than the default. {angle types} = # of angle types in system {dihedral types} = # of dihedral types in system {improper types} = # of improper types in system -{extra bond per atom} = leave space for this many new bonds per atom -{extra angle per atom} = leave space for this many new angles per atom -{extra dihedral per atom} = leave space for this many new dihedrals per atom -{extra improper per atom} = leave space for this many new impropers per atom -{extra special per atom} = leave space for this many new special bonds per atom +{extra bond per atom} = leave space for this many new bonds per atom (deprecated, use extra/bond/per/atom keyword) +{extra angle per atom} = leave space for this many new angles per atom (deprecated, use extra/angle/per/atom keyword) +{extra dihedral per atom} = leave space for this many new dihedrals per atom (deprecated, use extra/dihedral/per/atom keyword) +{extra improper per atom} = leave space for this many new impropers per atom (deprecated, use extra/improper/per/atom keyword) +{extra special per atom} = leave space for this many new special bonds per atom (deprecated, use extra/special/per/atom keyword) {ellipsoids} = # of ellipsoids in system {lines} = # of line segments in system {triangles} = # of triangles in system @@ -367,25 +372,32 @@ read_data command will generate an error in this case. The "extra bond per atom" setting (angle, dihedral, improper) is only needed if new bonds (angles, dihedrals, impropers) will be added to the system when a simulation runs, e.g. by using the "fix -bond/create"_fix_bond_create.html command. This will pre-allocate -space in LAMMPS data structures for storing the new bonds (angles, +bond/create"_fix_bond_create.html command. Using this header flag +is deprecated; please use the {extra/bond/per/atom} keyword (and +correspondingly for angles, dihedrals and impropers) in the +read_data command instead. Either will pre-allocate space in LAMMPS + data structures for storing the new bonds (angles, dihedrals, impropers). The "extra special per atom" setting is typically only needed if new bonds/angles/etc will be added to the system, e.g. by using the "fix bond/create"_fix_bond_create.html command. Or if entire new molecules -will be added to the system, e.g. by using the "fix -deposit"_fix_deposit.html or "fix pour"_fix_pour.html commands, which -will have more special 1-2,1-3,1-4 neighbors than any other molecules -defined in the data file. Using this setting will pre-allocate space -in the LAMMPS data structures for storing these neighbors. See the +will be added to the system, e.g. by using the +"fix deposit"_fix_deposit.html or "fix pour"_fix_pour.html commands, +which will have more special 1-2,1-3,1-4 neighbors than any other +molecules defined in the data file. Using this header flag is +deprecated; please use the {extra/special/per/atom} keyword instead. +Using this setting will pre-allocate space in the LAMMPS data +structures for storing these neighbors. See the "special_bonds"_special_bonds.html and "molecule"_molecule.html doc pages for more discussion of 1-2,1-3,1-4 neighbors. -NOTE: All of the "extra" settings are only used if they appear in the -first data file read; see the description of the {add} keyword above -for reading multiple data files. If they appear in later data files, -they are ignored. +NOTE: All of the "extra" settings are only applied in the first data +file read and when no simulation box has yet been created; as soon as +the simulation box is created (and read_data implies that), these +settings are {locked} and cannot be changed anymore. Please see the +description of the {add} keyword above for reading multiple data files. +If they appear in later data files, they are ignored. The "ellipsoids" and "lines" and "triangles" and "bodies" settings are only used with "atom_style ellipsoid or line or tri or -- GitLab From cdfb1aa0437591029e6c71bb802119a267fa9f2d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 23 Aug 2017 00:39:52 -0400 Subject: [PATCH 286/337] make links unique, fix doc format warnings and add entries to administrative files --- doc/src/compute_edpd_temp_atom.txt | 5 +++-- doc/src/compute_tdpd_cc_atom.txt | 4 ++-- doc/src/computes.txt | 2 ++ doc/src/fix_dpd_source.txt | 8 ++++---- doc/src/fix_mvv_dpd.txt | 4 ++-- doc/src/fixes.txt | 2 ++ doc/src/lammps.book | 6 +++++- doc/src/pair_dpd.txt | 4 ++-- doc/src/pair_snap.txt | 14 ++++++-------- doc/src/pairs.txt | 1 + doc/src/read_data.txt | 7 +++---- 11 files changed, 32 insertions(+), 25 deletions(-) diff --git a/doc/src/compute_edpd_temp_atom.txt b/doc/src/compute_edpd_temp_atom.txt index 30f8c1043a..5b8c8ebd67 100644 --- a/doc/src/compute_edpd_temp_atom.txt +++ b/doc/src/compute_edpd_temp_atom.txt @@ -26,7 +26,8 @@ for each eDPD particle in a group. The temperature is a local temperature derived from the internal energy of each eDPD particle based on the local equilibrium hypothesis. -For more details please see "(Espanol1997)"_#Espanol1997 and "(Li2014)"_#Li2014. +For more details please see "(Espanol1997)"_#Espanol1997 and +"(Li2014)"_#Li2014a. [Output info:] @@ -55,7 +56,7 @@ LAMMPS"_Section_start.html#start_3 section for more info. [(Espanol1997)] Espanol, Europhys Lett, 40(6): 631-636 (1997). DOI: 10.1209/epl/i1997-00515-8 -:link(Li2014) +:link(Li2014a) [(Li2014)] Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, 265: 113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003. diff --git a/doc/src/compute_tdpd_cc_atom.txt b/doc/src/compute_tdpd_cc_atom.txt index 58a49fa59f..a6a12dc52c 100644 --- a/doc/src/compute_tdpd_cc_atom.txt +++ b/doc/src/compute_tdpd_cc_atom.txt @@ -28,7 +28,7 @@ group. The chemical concentration of each species is defined as the number of molecules carried by a tDPD particle for dilute solution. For more -details see "(Li2015)"_#Li2015. +details see "(Li2015)"_#Li2015a. [Output info:] @@ -54,7 +54,7 @@ LAMMPS"_Section_start.html#start_3 section for more info. :line -:link(Li2015) +:link(Li2015a) [(Li2015)] Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, 143: 014101 (2015). DOI: 10.1063/1.4923254 diff --git a/doc/src/computes.txt b/doc/src/computes.txt index 5a6ca66c46..c443bfaba2 100644 --- a/doc/src/computes.txt +++ b/doc/src/computes.txt @@ -30,6 +30,7 @@ Computes :h1 compute_displace_atom compute_dpd compute_dpd_atom + compute_edpd_temp_atom compute_erotate_asphere compute_erotate_rigid compute_erotate_sphere @@ -95,6 +96,7 @@ Computes :h1 compute_sna_atom compute_stress_atom compute_tally + compute_tdpd_cc_atom compute_temp compute_temp_asphere compute_temp_body diff --git a/doc/src/fix_dpd_source.txt b/doc/src/fix_dpd_source.txt index de035a94b4..b6decc657c 100644 --- a/doc/src/fix_dpd_source.txt +++ b/doc/src/fix_dpd_source.txt @@ -46,8 +46,8 @@ where the {source} is in units of mole/volume/time. This command can be used to give an additional heat/concentration source term to atoms in a simulation, such as for a simulation of a -heat conduction with a source term (see Fig.12 in "(Li2014)"_#Li2014) -or diffusion with a source term (see Fig.1 in "(Li2015)"_#Li2015), as +heat conduction with a source term (see Fig.12 in "(Li2014)"_#Li2014b) +or diffusion with a source term (see Fig.1 in "(Li2015)"_#Li2015b), as an analog of a periodic Poiseuille flow problem. If the {sphere} keyword is used, the {cx,cy,cz,radius} defines a @@ -88,13 +88,13 @@ tdpd/cc/atom"_compute_tdpd_cc_atom.html :line -:link(Li2014) +:link(Li2014b) [(Li2014)] Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis, "Energy-conserving dissipative particle dynamics with temperature-dependent properties", J. Comput. Phys., 265: 113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003 -:link(Li2015) +:link(Li2015b) [(Li2015)] Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis, "Transport dissipative particle dynamics model for mesoscopic advection-diffusion-reaction problems", J. Chem. Phys., 143: 014101 diff --git a/doc/src/fix_mvv_dpd.txt b/doc/src/fix_mvv_dpd.txt index 75e13744ea..3c1c1a7cba 100644 --- a/doc/src/fix_mvv_dpd.txt +++ b/doc/src/fix_mvv_dpd.txt @@ -48,7 +48,7 @@ case-by-case basis. Specification of a {lambda} value is opttional. If specified, the setting must be from 0.0 to 1.0. If not specified, a default value of 0.5 is used, which effectively reproduces the standard velocity-Verlet (VV) scheme. For more details, see -"Groot"_#Groot. +"Groot"_#Groot2. Fix {mvv/dpd} updates the position and velocity of each atom. It can be used with the "pair_style mdpd"_pair_meso.html command or other @@ -91,7 +91,7 @@ The default value for the optional {lambda} parameter is 0.5. :line -:link(Groot) +:link(Groot2) [(Groot)] Groot and Warren, J Chem Phys, 107: 4423-4435 (1997). DOI: 10.1063/1.474784 diff --git a/doc/src/fixes.txt b/doc/src/fixes.txt index 3dc5e77e14..7000a66c51 100644 --- a/doc/src/fixes.txt +++ b/doc/src/fixes.txt @@ -33,6 +33,7 @@ Fixes :h1 fix_drude fix_drude_transform fix_dpd_energy + fix_dpd_source fix_dt_reset fix_efield fix_ehex @@ -71,6 +72,7 @@ Fixes :h1 fix_move fix_mscg fix_msst + fix_mvv_dpd fix_neb fix_nh fix_nh_eff diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 76b6743657..37587937e7 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -156,6 +156,7 @@ fix_controller.html fix_deform.html fix_deposit.html fix_dpd_energy.html +fix_dpd_source.html fix_drag.html fix_drude.html fix_drude_transform.html @@ -197,6 +198,7 @@ fix_momentum.html fix_move.html fix_mscg.html fix_msst.html +fix_mvv_dpd.html fix_neb.html fix_nh.html fix_nh_eff.html @@ -315,6 +317,7 @@ compute_dipole_chunk.html compute_displace_atom.html compute_dpd.html compute_dpd_atom.html +compute_edpd_temp_atom.html compute_erotate_asphere.html compute_erotate_rigid.html compute_erotate_sphere.html @@ -380,6 +383,7 @@ compute_smd_vol.html compute_sna_atom.html compute_stress_atom.html compute_tally.html +compute_tdpd_cc_atom.html compute_temp.html compute_temp_asphere.html compute_temp_body.html @@ -457,6 +461,7 @@ pair_mdf.html pair_meam.html pair_meam_spline.html pair_meam_sw_spline.html +pair_meso.html pair_mgpt.html pair_mie.html pair_momb.html @@ -644,4 +649,3 @@ USER/atc/man_unfix_flux.html USER/atc/man_unfix_nodes.html USER/atc/man_write_atom_weights.html USER/atc/man_write_restart.html - diff --git a/doc/src/pair_dpd.txt b/doc/src/pair_dpd.txt index 9dd204ad2d..8d194bb092 100644 --- a/doc/src/pair_dpd.txt +++ b/doc/src/pair_dpd.txt @@ -36,7 +36,7 @@ pair_coeff 1 1 1.0 1.0 :pre [Description:] Style {dpd} computes a force field for dissipative particle dynamics -(DPD) following the exposition in "(Groot)"_#Groot. +(DPD) following the exposition in "(Groot)"_#Groot1. Style {dpd/tstat} invokes a DPD thermostat on pairwise interactions, which is equivalent to the non-conservative portion of the DPD force @@ -196,7 +196,7 @@ langevin"_fix_langevin.html, "pair_style srp"_pair_srp.html :line -:link(Groot) +:link(Groot1) [(Groot)] Groot and Warren, J Chem Phys, 107, 4423-35 (1997). :link(Afshar) diff --git a/doc/src/pair_snap.txt b/doc/src/pair_snap.txt index fa90dc34e9..593765aa63 100644 --- a/doc/src/pair_snap.txt +++ b/doc/src/pair_snap.txt @@ -10,8 +10,7 @@ pair_style snap command :h3 [Syntax:] -pair_style snap -:pre +pair_style snap :pre [Examples:] @@ -20,17 +19,16 @@ pair_coeff * * InP.snapcoeff In P InP.snapparam In In P P :pre [Description:] -Pair style {snap} computes interactions -using the spectral neighbor analysis potential (SNAP) -"(Thompson)"_#Thompson20142. Like the GAP framework of Bartok et al. -"(Bartok2010)"_#Bartok20102, "(Bartok2013)"_#Bartok2013 -which uses bispectrum components +Pair style {snap} computes interactions using the spectral +neighbor analysis potential (SNAP) "(Thompson)"_#Thompson20142. +Like the GAP framework of Bartok et al. "(Bartok2010)"_#Bartok20102, +"(Bartok2013)"_#Bartok2013 which uses bispectrum components to characterize the local neighborhood of each atom in a very general way. The mathematical definition of the bispectrum calculation used by SNAP is identical to that used by "compute sna/atom"_compute_sna_atom.html. In SNAP, the total energy is decomposed into a sum over -atom energies. The energy of atom {i } is +atom energies. The energy of atom {i} is expressed as a weighted sum over bispectrum components. :c,image(Eqs/pair_snap.jpg) diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt index 2c1b20f4d3..ec21b7a02e 100644 --- a/doc/src/pairs.txt +++ b/doc/src/pairs.txt @@ -58,6 +58,7 @@ Pair Styles :h1 pair_meam pair_meam_spline pair_meam_sw_spline + pair_meso pair_mgpt pair_mie pair_momb diff --git a/doc/src/read_data.txt b/doc/src/read_data.txt index 6000a80976..8c9aa02e22 100644 --- a/doc/src/read_data.txt +++ b/doc/src/read_data.txt @@ -374,10 +374,9 @@ needed if new bonds (angles, dihedrals, impropers) will be added to the system when a simulation runs, e.g. by using the "fix bond/create"_fix_bond_create.html command. Using this header flag is deprecated; please use the {extra/bond/per/atom} keyword (and -correspondingly for angles, dihedrals and impropers) in the -read_data command instead. Either will pre-allocate space in LAMMPS - data structures for storing the new bonds (angles, -dihedrals, impropers). +correspondingly for angles, dihedrals and impropers) in the read_data +command instead. Either will pre-allocate space in LAMMPS data +structures for storing the new bonds (angles, dihedrals, impropers). The "extra special per atom" setting is typically only needed if new bonds/angles/etc will be added to the system, e.g. by using the "fix -- GitLab From 57aafba7c3bdf188481634761b209b15d6c9d20e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 23 Aug 2017 07:54:05 -0400 Subject: [PATCH 287/337] remove old moltemplate version --- tools/moltemplate/LICENSE.TXT | 28 - tools/moltemplate/README.TXT | 61 - tools/moltemplate/examples/README.TXT | 24 - .../README.TXT | 28 - .../README_run.sh | 31 - .../README_setup.sh | 25 - .../README_visualize.txt | 87 - .../images/cyclododecane+watMW_t=0ps_LR.jpg | Bin 51874 -> 0 bytes .../images/cyclododecane+watMW_t=400ps_LR.jpg | Bin 39434 -> 0 bytes .../images/cyclododecane+watMW_t=50ps_LR.jpg | Bin 39341 -> 0 bytes .../images/cyclopentane.jpg | Bin 12330 -> 0 bytes .../images/cyclopentane_unrelaxed.jpg | Bin 12835 -> 0 bytes .../images/watMW.jpg | Bin 3141 -> 0 bytes .../moltemplate_files/README.sh | 11 - .../moltemplate_files/cyclododecane.lt | 55 - .../moltemplate_files/system.lt | 62 - .../moltemplate_files/trappe1998.lt | 50 - .../version_more_comments/system.lt | 80 - .../moltemplate_files/watmw.lt | 54 - .../run.in.npt | 61 - .../run.in.nvt | 81 - .../DPPC_bilayer_formation_PACKMOL/README.TXT | 15 - .../README_run.sh | 21 - .../README_setup.sh | 28 - .../README_visualize.txt | 87 - .../images/DPPC_martini_LR.jpg | Bin 12907 -> 0 bytes .../images/t=0_after_minimization_LR.jpg | Bin 43653 -> 0 bytes .../images/t=13ns_450K_NVT_LR.jpg | Bin 45240 -> 0 bytes .../images/t=26ns_300K_NPT_LR.jpg | Bin 44951 -> 0 bytes .../images/t=6ns_300K_NPT_LR.jpg | Bin 46724 -> 0 bytes .../images/water_martini_LR.jpg | Bin 1660 -> 0 bytes .../moltemplate_files/lipid.lt | 78 - .../moltemplate_files/system.lt | 24 - .../moltemplate_files/water.lt | 17 - .../packmol_files/README.TXT | 8 - .../packmol_files/lipid.xyz | 14 - .../packmol_files/mix_lipids+water.inp | 34 - .../packmol_files/water.xyz | 3 - .../DPPC_bilayer_formation_PACKMOL/run.in.min | 31 - .../DPPC_bilayer_formation_PACKMOL/run.in.npt | 117 - .../DPPC_bilayer_formation_PACKMOL/run.in.nvt | 50 - .../DPPC_bilayer_preformed/README.TXT | 13 - .../DPPC_bilayer_preformed/README_run.sh | 21 - .../DPPC_bilayer_preformed/README_setup.sh | 23 - .../README_visualize.txt | 87 - .../images/DPPC_martini_LR.jpg | Bin 12907 -> 0 bytes .../images/t=0_bilayer_preformed_GL_LR.jpg | Bin 40709 -> 0 bytes .../images/t=4ns_bilayer_preformed_GL_LR.jpg | Bin 57230 -> 0 bytes .../images/water_martini_LR.jpg | Bin 1660 -> 0 bytes .../moltemplate_files/lipid.lt | 78 - .../moltemplate_files/system.lt | 27 - .../moltemplate_files/water.lt | 17 - .../DPPC_bilayer_preformed/run.in.min | 31 - .../DPPC_bilayer_preformed/run.in.npt | 66 - .../DPPC_bilayer_preformed/run.in.nvt | 47 - .../abstract_2bead_heteropolymer/README.TXT | 17 - .../README_run.sh | 20 - .../README_setup.sh | 23 - .../README_visualize.txt | 86 - .../images/polymer.png | Bin 53044 -> 0 bytes .../images/t=0ns.png | Bin 101303 -> 0 bytes .../images/t=40ns_occ.png | Bin 29838 -> 0 bytes .../images/t=4ns_occ.png | Bin 37734 -> 0 bytes .../moltemplate_files/README.sh | 6 - .../moltemplate_files/forcefield.lt | 139 - .../moltemplate_files/monomers.lt | 86 - .../moltemplate_files/polymer.lt | 64 - .../moltemplate_files/system.lt | 36 - .../abstract_2bead_heteropolymer/run.in.nvt | 32 - .../abstract_random_heteropolymer/README.TXT | 19 - .../README_run.sh | 14 - .../README_setup.sh | 23 - .../README_visualize.txt | 87 - .../images/2bead.jpg | Bin 2713 -> 0 bytes .../images/3bead.jpg | Bin 4410 -> 0 bytes .../images/random_heteropolymer_30_20_t=0.jpg | Bin 52135 -> 0 bytes .../random_heteropolymer_30_20_t=700ps.jpg | Bin 46460 -> 0 bytes .../moltemplate_files/forcefield.lt | 107 - .../moltemplate_files/monomers.lt | 62 - .../moltemplate_files/polymer.lt | 163 - .../moltemplate_files/system.lt | 11 - .../abstract_random_heteropolymer/run.in.nvt | 29 - .../abstract_translocation/README.TXT | 23 - .../abstract_translocation/README_run.sh | 28 - .../abstract_translocation/README_setup.sh | 23 - .../README_visualize.txt | 87 - .../images/polymer_LR.jpg | Bin 5568 -> 0 bytes .../images/solvent_LR.jpg | Bin 23407 -> 0 bytes .../images/walls+solvent+polymer_t=0.jpg | Bin 105467 -> 0 bytes .../images/walls_LR.jpg | Bin 13280 -> 0 bytes .../moltemplate_files/monomer.lt | 111 - .../moltemplate_files/polymer.lt | 32 - .../moltemplate_files/solvent.lt | 23 - .../moltemplate_files/solvent_single.lt | 22 - .../moltemplate_files/system.lt | 57 - .../moltemplate_files/wall_single.lt | 21 - .../moltemplate_files/walls.lt | 23 - .../abstract_translocation/run.in.npt | 120 - .../abstract_translocation/run.in.nvt | 53 - .../README_FIRST.txt | 48 - ...EADME_NUCLEAR_VOLUME_FRACTION_ESTIMATE.txt | 29 - .../README_run.sh | 7 - .../README_setup.sh | 58 - .../README_visualize.txt | 131 - .../images/stage2_interior.jpg | Bin 40803 -> 0 bytes .../images/stage2_interior_rotated.jpg | Bin 25429 -> 0 bytes .../images/t=0_before_minimizaion.jpg | Bin 79709 -> 0 bytes .../images/vmd_colorscale_jet.tcl | 87 - .../README_how_to_generate_system_lt.sh | 19 - .../README_length_flexibility_details.txt | 57 - .../moltemplate_files/calc_table.sh | 8 - .../moltemplate_files/condensin.lt | 47 - .../moltemplate_files/coords_orig.raw | 32768 ---------------- .../moltemplate_files/generate_system_lt.py | 301 - .../moltemplate_files/interpolate_coords.py | 74 - .../moltemplate_files/monomer.lt | 84 - .../moltemplate_files/table_bonds_stage2.dat | 4011 -- .../run.in.min | 41 - .../run.in.stage1 | 110 - .../run.in.stage2 | 90 - .../membrane+protein/README.TXT | 70 - .../membrane+protein/README_WARNING.TXT | 10 - .../membrane+protein/README_run.sh | 33 - .../membrane+protein/README_setup.sh | 28 - .../membrane+protein/README_visualize.txt | 87 - .../4HelixOrig+Lipid2005_t=1290ps_LR.jpg | Bin 85276 -> 0 bytes .../images/membrane+protein_t=0ps_LR.jpg | Bin 71073 -> 0 bytes .../membrane+protein_t=0ps_no_pbc_LR.jpg | Bin 51659 -> 0 bytes .../images/membrane+protein_t=0ps_top_LR.jpg | Bin 67085 -> 0 bytes .../images/membrane+protein_t=5000ps_LR.jpg | Bin 71011 -> 0 bytes .../moltemplate_files/1beadProtSci2010.lt | 233 - .../1beadProtSci2010_variations.lt | 225 - .../moltemplate_files/CGLipidBr2005.lt | 196 - .../calc_table/calc_CGLipidTableINTvsINT.py | 29 - .../version_charmm_cutoff/calc_table.py | 70 - .../moltemplate_files/system.lt | 178 - .../moltemplate_files/table_int.dat | 1139 - .../membrane+protein/run.in.min | 35 - .../membrane+protein/run.in.npt | 66 - .../membrane+protein/run.in.nvt | 71 - .../membrane_BranniganPRE2005/README.TXT | 33 - .../membrane_BranniganPRE2005/README_run.sh | 33 - .../membrane_BranniganPRE2005/README_setup.sh | 28 - .../README_visualize.txt | 87 - .../membrane_BranniganPRE2005/images/DLPC.jpg | Bin 4915 -> 0 bytes .../DPPC+DLPC_bilayer32x37_t=0ps_LR.jpg | Bin 58412 -> 0 bytes ...DPPC+DLPC_bilayer32x37_t=0ps_no_pbc_LR.jpg | Bin 36618 -> 0 bytes .../DPPC+DLPC_bilayer32x37_t=500ps_LR.jpg | Bin 62029 -> 0 bytes .../membrane_BranniganPRE2005/images/DPPC.jpg | Bin 5834 -> 0 bytes .../moltemplate_files/CGLipidBr2005Orig.lt | 208 - .../calc_table/calc_table.py | 29 - .../version_charmm_cutoff/calc_table.py | 70 - .../moltemplate_files/system.lt | 94 - .../moltemplate_files/table_int.dat | 1139 - .../membrane_BranniganPRE2005/run.in.min | 28 - .../membrane_BranniganPRE2005/run.in.npt | 57 - .../membrane_BranniganPRE2005/run.in.nvt | 45 - .../1bead+chaperone/README.TXT | 33 - .../frustrated+chaperonin/README.TXT | 32 - .../frustrated+chaperonin/README_run.sh | 31 - .../frustrated+chaperonin/README_setup.sh | 24 - .../README_visualize.txt | 87 - .../psf_file_created_by_topotools/system.psf | 86 - .../images/misfolded+chaperonin_t=0tau_LR.jpg | Bin 15784 -> 0 bytes .../unfolded+chaperonin_t=508750tau_LR.jpg | Bin 17080 -> 0 bytes .../moltemplate_files/1beadFrustrated.lt | 216 - .../1beadFrustrated_variants.lt | 85 - .../moltemplate_files/chaperonin.lt | 41 - .../generate_tables/calc_chaperone_table.py | 87 - .../generate_tables/calc_dihedral_table.py | 67 - .../moltemplate_files/system.lt | 45 - .../table_chaperonin_h=0.475.dat | 1188 - .../table_chaperonin_h=0.dat | 1187 - .../table_dihedral_frustrated.dat | 735 - .../frustrated+chaperonin/run.in.min | 25 - .../frustrated+chaperonin/run.in.nvt | 48 - .../frustrated+minichaperone/README.TXT | 38 - .../frustrated+minichaperone/README_run.sh | 31 - .../frustrated+minichaperone/README_setup.sh | 24 - .../README_visualize.txt | 87 - .../psf_file_created_by_topotools/system.psf | 476 - ...ein2x2x2+minichaperones2x2x2_t=0tau_LR.jpg | Bin 31162 -> 0 bytes ...x2x2+minichaperones2x2x2_t=67500tau_LR.jpg | Bin 26258 -> 0 bytes .../moltemplate_files/1beadFrustrated.lt | 216 - .../1beadFrustrated_variants.lt | 85 - .../generate_tables/calc_chaperone_table.py | 87 - .../generate_tables/calc_dihedral_table.py | 67 - .../moltemplate_files/minichaperone.lt | 41 - .../moltemplate_files/system.lt | 72 - .../table_dihedral_frustrated.dat | 735 - .../table_minichaperone_h=0.6.dat | 988 - .../table_minichaperone_h=0.dat | 989 - .../frustrated+minichaperone/run.in.min | 24 - .../frustrated+minichaperone/run.in.nvt | 46 - .../1bead+chaperone/frustrated/README.TXT | 29 - .../1bead+chaperone/frustrated/README_run.sh | 21 - .../frustrated/README_setup.sh | 24 - .../frustrated/README_visualize.txt | 87 - .../psf_file_created_by_topotools/system.psf | 85 - .../images/initial_conformation_t=0tau.jpg | Bin 23358 -> 0 bytes .../misfolded_conformation_t=1250tau.jpg | Bin 23090 -> 0 bytes .../moltemplate_files/1beadFrustrated.lt | 216 - .../1beadFrustrated_variants.lt | 85 - .../generate_tables/calc_dihedral_table.py | 67 - .../frustrated/moltemplate_files/system.lt | 20 - .../table_dihedral_frustrated.dat | 735 - .../1bead+chaperone/frustrated/run.in.min | 19 - .../frustrated/run_short_sim.in.nvt | 50 - .../unfrustrated+chaperonin/README.TXT | 32 - .../unfrustrated+chaperonin/README_run.sh | 31 - .../unfrustrated+chaperonin/README_setup.sh | 24 - .../README_visualize.txt | 87 - .../psf_file_created_by_topotools/system.psf | 98 - .../unfrustrated+chaperonin_t=0tau_LR.jpg | Bin 16267 -> 0 bytes .../unfrustrated+chaperonin_t=105tau_LR.jpg | Bin 14944 -> 0 bytes .../moltemplate_files/1beadUnfrustrated.lt | 255 - .../1beadUnfrustrated_variants.lt | 45 - .../moltemplate_files/chaperonin.lt | 41 - .../generate_tables/calc_chaperone_table.py | 87 - .../moltemplate_files/system.lt | 45 - .../table_chaperonin_h=0.475.dat | 1188 - .../table_chaperonin_h=0.dat | 1187 - .../unfrustrated+chaperonin/run.in.min | 19 - .../unfrustrated+chaperonin/run.in.nvt | 48 - .../1bead+chaperone/unfrustrated/README.TXT | 27 - .../unfrustrated/README_run.sh | 31 - .../unfrustrated/README_setup.sh | 23 - .../unfrustrated/README_visualize.txt | 87 - .../psf_file_created_by_topotools/system.psf | 97 - .../images/unfrustrated_t=0tau_LR.jpg | Bin 7690 -> 0 bytes .../images/unfrustrated_t=200tau_LR.jpg | Bin 7821 -> 0 bytes .../moltemplate_files/1beadUnfrustrated.lt | 255 - .../1beadUnfrustrated_variants.lt | 45 - .../unfrustrated/moltemplate_files/system.lt | 11 - .../1bead+chaperone/unfrustrated/run.in.min | 19 - .../1bead+chaperone/unfrustrated/run.in.nvt | 46 - .../1beadProtSci2010/README.TXT | 44 - .../1beadProtSci2010/README_run.sh | 31 - .../1beadProtSci2010/README_setup.sh | 23 - .../1beadProtSci2010/README_visualize.txt | 87 - .../images/4HelixBundle_t=0.jpg | Bin 38619 -> 0 bytes .../images/4SheetBundle_t=0.jpg | Bin 49905 -> 0 bytes .../psf_file_created_by_topotools/system.psf | 214 - .../moltemplate_files/1beadProtSci2010.lt | 274 - .../moltemplate_files/README.sh | 13 - .../other_implementations/README.TXT | 13 - .../charmm/1beadProtSci2010.lt | 411 - .../class2/1beadProtSci2010.lt | 385 - .../moltemplate_files/system.lt | 12 - .../1beadProtSci2010/run.in.min | 19 - .../1beadProtSci2010/run.in.nvt | 44 - .../README.TXT | 114 - .../README_WARNING.TXT | 20 - .../README_run.sh | 24 - .../README_setup.sh | 65 - .../README_visualize.txt | 87 - .../images/vesicle_membrane+protein_L.jpg | Bin 284201 -> 0 bytes .../moltemplate_files/1beadProtSci2010.lt | 233 - .../1beadProtSci2010_variations.lt | 225 - .../moltemplate_files/CGLipidBr2005.lt | 196 - .../moltemplate_files/README.sh | 22 - .../calc_table/calc_CGLipidTableINTvsINT.py | 29 - .../version_charmm_cutoff/calc_table.py | 70 - .../moltemplate_files/system.lt | 166 - .../moltemplate_files/table_int.dat | 1139 - .../packmol_files/README.sh | 33 - .../packmol_files/step1_proteins.inp | 49 - .../packmol_files/step2_innerlayer.inp | 70 - .../packmol_files/step3_outerlayer.inp | 70 - .../run.in.min | 50 - .../run.in.nvt | 63 - .../cnad-cnt/README_FIRST.TXT | 83 - .../cnad-cnt/README_step1_run_ltemplify.sh | 13 - .../cnad-cnt/README_step2_run_moltemplate.sh | 22 - .../cnad-cnt/README_step3_run_lammps.sh | 16 - .../cnad-cnt/README_visualize.txt | 50 - .../cnad-cnt/cnad-cnt.data | 1157 - .../cnad-cnt/cnad-cnt.in | 49 - .../images/cnad-cnt_after_rotate_copy.jpg | Bin 29386 -> 0 bytes .../cnad-cnt/images/cnad-cnt_orig.jpg | Bin 19144 -> 0 bytes .../cnad-cnt/images/cnad.jpg | Bin 18403 -> 0 bytes .../cnad-cnt/images/cnt.jpg | Bin 20633 -> 0 bytes .../cnad-cnt_after_rotate_and_copy.psf | 598 - .../cnad-cnt_orig.psf | 489 - .../cnad-cnt/run.in.nvt | 46 - .../cnad-cnt/system.lt | 29 - .../waterSPCE_from_PDBfile/README.TXT | 10 - .../waterSPCE_from_PDBfile/README_run.sh | 31 - .../waterSPCE_from_PDBfile/README_setup.sh | 32 - .../README_visualize.txt | 64 - .../moltemplate_files/.0 | 0 .../moltemplate_files/README.sh | 11 - .../moltemplate_files/solvate.pdb | 782 - .../moltemplate_files/spce.lt | 52 - .../moltemplate_files/system.lt | 16 - .../waterSPCE_from_PDBfile/run.in.npt | 48 - .../waterSPCE_from_PDBfile/run.in.nvt | 61 - .../examples/force_field_AMBER/WARNING.TXT | 54 - .../force_field_AMBER/benzene/README.TXT | 10 - .../force_field_AMBER/benzene/README_run.sh | 39 - .../force_field_AMBER/benzene/README_setup.sh | 26 - .../benzene/README_visualize.txt | 87 - .../benzene/moltemplate_files/benzene.lt | 51 - .../benzene/moltemplate_files/system.lt | 14 - .../README_remove_irrelevant_info.sh | 63 - .../force_field_AMBER/benzene/run.in.npt | 72 - .../force_field_AMBER/benzene/run.in.nvt | 51 - .../ethylene+benzene/README.TXT | 13 - .../ethylene+benzene/README_run.sh | 39 - .../ethylene+benzene/README_setup.sh | 25 - .../ethylene+benzene/README_visualize.txt | 87 - .../ethylene+benzene/images/benzene.jpg | Bin 15032 -> 0 bytes .../ethylene+benzene_box80x80x80_LR.jpg | Bin 130048 -> 0 bytes .../ethylene+benzene/images/ethylene.jpg | Bin 11657 -> 0 bytes .../moltemplate_files/benzene.lt | 47 - .../oplsaa_subset.prm | 94 - .../moltemplate_files/ethylene.lt | 38 - .../moltemplate_files/system.lt | 29 - .../README_remove_irrelevant_info.sh | 63 - .../ethylene+benzene/run.in.npt | 53 - .../ethylene+benzene/run.in.nvt | 46 - .../force_field_AMBER/hexadecane/README.TXT | 44 - .../hexadecane/README_run.sh | 39 - .../hexadecane/README_setup.sh | 26 - .../hexadecane/README_visualize.txt | 87 - .../force_field_AMBER/hexadecane/WARNING.TXT | 16 - .../images/hexadecane_12x12x2_t=0_LR.jpg | Bin 27017 -> 0 bytes .../hexadecane_12x12x2_t=10ps_npt_LR.jpg | Bin 36181 -> 0 bytes .../hexadecane/images/hexadecane_LR.jpg | Bin 5237 -> 0 bytes .../hexadecane/moltemplate_files/ch2group.lt | 59 - .../hexadecane/moltemplate_files/ch3group.lt | 65 - .../moltemplate_files/hexadecane.lt | 89 - .../hexadecane/moltemplate_files/system.lt | 18 - .../README_remove_irrelevant_info.sh | 63 - .../force_field_AMBER/hexadecane/run.in.npt | 86 - .../force_field_AMBER/hexadecane/run.in.nvt | 43 - .../waterTIP3P+isobutane/README.TXT | 41 - .../waterTIP3P+isobutane/README_run.sh | 39 - .../waterTIP3P+isobutane/README_setup.sh | 26 - .../waterTIP3P+isobutane/README_visualize.txt | 87 - .../waterTIP3P+isobutane/images/isobutane.jpg | Bin 24301 -> 0 bytes .../images/water+isobutane_t=0_LR.jpg | Bin 104035 -> 0 bytes .../images/water+isobutane_t=840ps_LR.jpg | Bin 73375 -> 0 bytes .../waterTIP3P+isobutane/images/water.jpg | Bin 10076 -> 0 bytes .../moltemplate_files/isobutane.lt | 56 - .../moltemplate_files/system.lt | 29 - .../README_remove_irrelevant_info.sh | 63 - .../waterTIP3P+isobutane/run.in.npt | 44 - .../waterTIP3P+isobutane/run.in.nvt | 52 - .../examples/force_field_OPLSAA/WARNING.TXT | 28 - .../alkane_chain_single/README.TXT | 40 - .../alkane_chain_single/README_run.sh | 34 - .../alkane_chain_single/README_setup.sh | 26 - .../alkane_chain_single/README_visualize.txt | 87 - .../alkane_chain_single/images/ch2_ry90.jpg | Bin 4680 -> 0 bytes .../alkane_chain_single/images/ch3_ry60.jpg | Bin 6951 -> 0 bytes .../alkane_chain_single/images/t=0.jpg | Bin 51583 -> 0 bytes .../alkane_chain_single/images/t=1ns.jpg | Bin 60111 -> 0 bytes .../moltemplate_files/alkane50.lt | 138 - .../moltemplate_files/ch2group.lt | 82 - .../moltemplate_files/ch3group.lt | 83 - .../oplsaa_lt_generator/AUTHOR.TXT | 3 - .../oplsaa_lt_generator/README.TXT | 109 - .../oplsaa_lt_generator/oplsaa_subset.prm | 151 - .../moltemplate_files/system.lt | 31 - .../alkane_chain_single/run.in.min | 37 - .../alkane_chain_single/run.in.nvt | 38 - .../ethylene+benzene/README.TXT | 12 - .../ethylene+benzene/README_run.sh | 34 - .../ethylene+benzene/README_setup.sh | 26 - .../ethylene+benzene/README_visualize.txt | 87 - .../ethylene+benzene/images/benzene.jpg | Bin 15032 -> 0 bytes .../ethylene+benzene_box80x80x80_LR.jpg | Bin 130048 -> 0 bytes .../ethylene+benzene/images/ethylene.jpg | Bin 11657 -> 0 bytes .../moltemplate_files/benzene.lt | 45 - .../moltemplate_files/ethylene.lt | 43 - .../oplsaa_lt_generator/AUTHOR.TXT | 3 - .../oplsaa_lt_generator/README.TXT | 110 - .../minimal_versions/README.TXT | 16 - .../oplsaa_subset_minimal.prm | 37 - .../oplsaa_subset_simplified.prm | 49 - .../oplsaa_lt_generator/oplsaa_subset.prm | 5129 --- .../moltemplate_files/system.lt | 28 - .../ethylene+benzene/run.in.npt | 58 - .../ethylene+benzene/run.in.nvt | 51 - .../ethylene+benzene_PACKMOL/README.TXT | 23 - .../ethylene+benzene_PACKMOL/README_run.sh | 34 - .../ethylene+benzene_PACKMOL/README_setup.sh | 37 - .../README_visualize.txt | 87 - .../images/benzene.jpg | Bin 15032 -> 0 bytes .../ethylene+benzene_box80x80x80_LR.jpg | Bin 130048 -> 0 bytes .../images/ethylene.jpg | Bin 11657 -> 0 bytes .../moltemplate_files/benzene.lt | 51 - .../moltemplate_files/ethylene.lt | 40 - .../oplsaa_lt_generator/AUTHOR.TXT | 3 - .../oplsaa_lt_generator/README.TXT | 110 - .../minimal_versions/README.TXT | 16 - .../oplsaa_subset_minimal.prm | 37 - .../oplsaa_subset_simplified.prm | 49 - .../oplsaa_lt_generator/oplsaa_subset.prm | 5129 --- .../moltemplate_files/system.lt | 21 - .../moltemplate_files/system.xyz | 12002 ------ .../packmol_files/README.TXT | 5 - .../packmol_files/benzene.xyz | 14 - .../packmol_files/ethylene.xyz | 8 - .../packmol_files/mix_ethylene+benzene.inp | 31 - .../ethylene+benzene_PACKMOL/run.in.npt | 58 - .../ethylene+benzene_PACKMOL/run.in.nvt | 51 - .../force_field_OPLSAA/hexadecane/README.TXT | 43 - .../hexadecane/README_run.sh | 34 - .../hexadecane/README_setup.sh | 29 - .../hexadecane/README_visualize.txt | 87 - .../force_field_OPLSAA/hexadecane/WARNING.TXT | 15 - .../images/hexadecane_12x12x2_t=0_LR.jpg | Bin 27017 -> 0 bytes .../hexadecane_12x12x2_t=10ps_npt_LR.jpg | Bin 36181 -> 0 bytes .../hexadecane/images/hexadecane_LR.jpg | Bin 5237 -> 0 bytes .../hexadecane/moltemplate_files/ch2group.lt | 82 - .../hexadecane/moltemplate_files/ch3group.lt | 83 - .../moltemplate_files/hexadecane.lt | 79 - .../oplsaa_lt_generator/AUTHOR.TXT | 3 - .../oplsaa_lt_generator/README.TXT | 108 - .../oplsaa_lt_generator/oplsaa_subset.prm | 151 - .../hexadecane/moltemplate_files/system.lt | 18 - .../force_field_OPLSAA/hexadecane/run.in.npt | 87 - .../force_field_OPLSAA/hexadecane/run.in.nvt | 44 - .../force_field_OPLSAA/methane/README.TXT | 24 - .../force_field_OPLSAA/methane/README_run.sh | 34 - .../methane/README_setup.sh | 28 - .../methane/README_visualize.txt | 87 - .../methane/moltemplate_files/methane.lt | 32 - .../oplsaa_lt_generator/AUTHOR.TXT | 3 - .../oplsaa_lt_generator/README.TXT | 108 - .../oplsaa_lt_generator/oplsaa_subset.prm | 115 - .../methane/moltemplate_files/system.lt | 15 - .../force_field_OPLSAA/methane/run.in.npt | 51 - .../force_field_OPLSAA/methane/run.in.nvt | 42 - .../waterSPCE+methane/README.TXT | 30 - .../waterSPCE+methane/README_run.sh | 34 - .../waterSPCE+methane/README_setup.sh | 28 - .../waterSPCE+methane/README_visualize.txt | 87 - .../moltemplate_files/methane.lt | 32 - .../oplsaa_lt_generator/AUTHOR.TXT | 3 - .../oplsaa_lt_generator/README.TXT | 111 - .../oplsaa_lt_generator/oplsaa_subset.prm | 126 - .../moltemplate_files/spce.lt | 52 - .../moltemplate_files/system.lt | 26 - .../waterSPCE+methane/run.in.npt | 52 - .../waterSPCE+methane/run.in.nvt | 42 - .../waterSPC_using_OPLSAA/README.TXT | 18 - .../waterSPC_using_OPLSAA/README_run.sh | 20 - .../waterSPC_using_OPLSAA/README_setup.sh | 28 - .../README_visualize.txt | 87 - .../TEST_density_estimate.txt | 20 - .../oplsaa_lt_generator/AUTHOR.TXT | 3 - .../oplsaa_lt_generator/README.TXT | 115 - .../oplsaa_lt_generator/oplsaa_subset.prm | 112 - .../moltemplate_files/spc.lt | 86 - .../moltemplate_files/system.lt | 16 - .../waterSPC_using_OPLSAA/run.in.npt | 52 - .../waterSPC_using_OPLSAA/run.in.nvt | 42 - .../propane/README.TXT | 21 - .../propane/README_run.sh | 34 - .../propane/README_setup.sh | 33 - .../propane/README_visualize.txt | 87 - .../propane/moltemplate_files/propane.lt | 31 - .../propane/moltemplate_files/system.lt | 37 - .../propane/run.in.npt | 43 - .../propane/run.in.nvt | 39 - .../aluminum_crystal_strain/README.TXT | 54 - .../aluminum_crystal_strain/README_setup.sh | 29 - .../README_visualize.txt | 87 - .../images/AlCell_LR.jpg | Bin 2364 -> 0 bytes .../images/AlCrystal10x10x10_t=0steps_LR.jpg | Bin 30158 -> 0 bytes .../AlCrystal10x10x10_t=20000steps_LR.jpg | Bin 29910 -> 0 bytes .../moltemplate_files/README.sh | 22 - .../moltemplate_files/al_cell.lt | 64 - .../moltemplate_files/system.lt | 35 - .../aluminum_crystal_strain/run.in | 76 - .../ice_crystal/README_run.sh | 33 - .../ice_crystal/README_setup.sh | 23 - .../ice_crystal/README_visualize.txt | 87 - .../images/ice_rect8_crystal_3x2x2_LR.jpg | Bin 25820 -> 0 bytes .../ice_crystal/images/ice_rect8_unitcell.png | Bin 21951 -> 0 bytes .../ice_crystal/moltemplate_files/spce.lt | 52 - .../moltemplate_files/spce_ice_rect16.lt | 81 - .../moltemplate_files/spce_ice_rect32.lt | 129 - .../moltemplate_files/spce_ice_rect8.lt | 57 - .../ice_crystal/moltemplate_files/system.lt | 11 - .../ice_crystal/run.in.npt | 48 - .../ice_crystal/run.in.nvt | 45 - .../nanotube+water/README.TXT | 51 - .../README_realistic_junctions.txt | 22 - .../nanotube+water/README_run.sh | 24 - .../nanotube+water/README_setup.sh | 23 - .../nanotube+water/README_visualize.txt | 77 - .../images/graphene_unit_cell.jpg | Bin 13144 -> 0 bytes ...nanotube+walls+water_side_pbc_t=0ps_LR.jpg | Bin 30772 -> 0 bytes ...notube+walls+water_side_pbc_t=108ps_LR.jpg | Bin 28367 -> 0 bytes ...notube+walls+water_side_pbc_t=305ps_LR.jpg | Bin 27305 -> 0 bytes .../nanotube+walls+water_top_nopbc_t=0_LR.jpg | Bin 33740 -> 0 bytes .../images/nanotube+walls_side_nopbc_LR.jpg | Bin 18748 -> 0 bytes .../images/water_side_nopbc_LR.jpg | Bin 26968 -> 0 bytes .../moltemplate_files/README.sh | 32 - .../moltemplate_files/graphene.lt | 55 - .../moltemplate_files/graphene_walls.lt | 57 - .../moltemplate_files/graphite.lt | 61 - .../moltemplate_files/nanotube.lt | 101 - .../nanotube+water/moltemplate_files/spce.lt | 52 - .../moltemplate_files/system.lt | 29 - .../moltemplate_files/water_box.lt | 20 - .../nanotube+water/moltemplate_files/watmw.lt | 54 - .../nanotube+water/run.in.npt | 147 - .../nanotube+water/run.in.nvt | 78 - .../waterSPCE+Na+Cl/README_run.sh | 33 - .../waterSPCE+Na+Cl/README_setup.sh | 23 - .../waterSPCE+Na+Cl/README_visualize.txt | 87 - .../waterSPCE+Na+Cl/images/Cl.jpg | Bin 1577 -> 0 bytes .../waterSPCE+Na+Cl/images/Na.jpg | Bin 1595 -> 0 bytes .../waterSPCE+Na+Cl/images/wat.jpg | Bin 5644 -> 0 bytes .../images/waterSPCE+Na+Cl_t=0.jpg | Bin 169027 -> 0 bytes .../images/waterSPCE+Na+Cl_t=100ps.jpg | Bin 144377 -> 0 bytes .../waterSPCE+Na+Cl/moltemplate_files/ions.lt | 67 - .../waterSPCE+Na+Cl/moltemplate_files/spce.lt | 52 - .../moltemplate_files/system.lt | 49 - .../waterSPCE+Na+Cl/run.in.npt | 48 - .../waterSPCE+Na+Cl/run.in.nvt | 58 - .../misc_examples/menger_sponge/README.TXT | 45 - .../menger_sponge/README_setup.sh | 29 - .../menger_sponge/README_visualize.txt | 87 - .../menger_sponge/images/AlCell_LR.jpg | Bin 2364 -> 0 bytes .../menger_sponge/images/lvl1_LR.jpg | Bin 2623 -> 0 bytes .../menger_sponge/images/lvl2_LR.jpg | Bin 7722 -> 0 bytes .../menger_sponge/images/lvl3_LR.jpg | Bin 16455 -> 0 bytes ...er_sponge_lattice_8cells_t=0_zoom1_LR2.jpg | Bin 82092 -> 0 bytes ...menger_sponge_lattice_8cells_t=7400_LR.jpg | Bin 21718 -> 0 bytes .../moltemplate_files/al_cell.lt | 64 - .../elegant_inefficient_version/al_cell.lt | 64 - .../menger_cubes.lt | 34 - .../elegant_inefficient_version/system.lt | 34 - .../moltemplate_files/menger_cubes.lt | 66 - .../menger_sponge/moltemplate_files/system.lt | 34 - .../misc_examples/menger_sponge/run.in | 38 - .../pyramids_vs_gravity/README.TXT | 23 - .../README_VMD_graphene.txt | 28 - .../pyramids_vs_gravity/README_setup.sh | 23 - .../pyramids_vs_gravity/README_visualize.txt | 76 - .../pyramids_vs_gravity_t=04800steps_LR.jpg | Bin 88094 -> 0 bytes .../pyramids_vs_gravity_t=12200steps_LR.jpg | Bin 91240 -> 0 bytes .../pyramids_vs_gravity_t=33000steps_LR.jpg | Bin 98828 -> 0 bytes .../moltemplate_files/README.sh | 15 - .../moltemplate_files/graphene.lt | 61 - .../moltemplate_files/graphene_wall.lt | 21 - .../moltemplate_files/pyramids.lt | 283 - .../moltemplate_files/system.lt | 80 - .../misc_examples/pyramids_vs_gravity/run.in | 68 - tools/moltemplate/moltemplate_manual.pdf | Bin 716411 -> 0 bytes tools/moltemplate/src/bonds_by_type.py | 370 - tools/moltemplate/src/chargepairs_by_type.py | 389 - tools/moltemplate/src/dump2data.py | 1290 - tools/moltemplate/src/extract_lammps_data.py | 119 - tools/moltemplate/src/ltemplify.py | 3361 -- tools/moltemplate/src/lttree.py | 744 - tools/moltemplate/src/lttree_check.py | 2222 -- tools/moltemplate/src/lttree_postprocess.py | 335 - tools/moltemplate/src/lttree_styles.py | 239 - tools/moltemplate/src/moltemplate.sh | 2110 - .../docs_dump2data.txt | 121 - .../docs_extract_lammps_data.txt | 60 - .../docs_raw2data.txt | 56 - .../moltemplate_force_fields/amber/README.TXT | 74 - .../amber/amberparm2lt.sh | 203 - .../amber/amberparm_angle_to_lt.py | 50 - .../amber/amberparm_bond_to_lt.py | 47 - .../amber/amberparm_dihedral_to_lt.py | 157 - .../amber/amberparm_improper_to_lt.py | 90 - .../amber/amberparm_mass_to_lt.py | 19 - .../amber/amberparm_pair_to_lt.py | 57 - .../src/moltemplate_force_fields/gaff.lt | 11789 ------ .../src/moltemplate_force_fields/graphene.lt | 55 - .../src/moltemplate_force_fields/graphite.lt | 61 - .../images/graphene_unit_cell.jpg | Bin 13144 -> 0 bytes .../images/ice_rect8_unitcell.png | Bin 21951 -> 0 bytes .../images/spce_ball_and_stick.jpg | Bin 5644 -> 0 bytes .../src/moltemplate_force_fields/loplsaa.lt | 153 - .../src/moltemplate_force_fields/oplsaa.lt | 8934 ----- .../oplsaa/AUTHOR.TXT | 3 - .../oplsaa/README.TXT | 125 - .../oplsaa/loplsaa_ext.prm | 87 - .../src/moltemplate_force_fields/spce.lt | 52 - .../spce_ice_rect16.lt | 81 - .../spce_ice_rect32.lt | 129 - .../spce_ice_rect8.lt | 57 - .../moltemplate_force_fields/tip3p_1983.lt | 119 - .../tip3p_1983_charmm.lt | 119 - .../moltemplate_force_fields/tip3p_2004.lt | 107 - .../moltemplate_force_fields/trappe1998.lt | 53 - .../src/moltemplate_force_fields/watmw.lt | 77 - .../oplsaa_moltemplate.py | 489 - tools/moltemplate/src/nbody_Angles.py | 52 - tools/moltemplate/src/nbody_Bonds.py | 31 - tools/moltemplate/src/nbody_Dihedrals.py | 53 - tools/moltemplate/src/nbody_Impropers.py | 62 - .../nbody_alternate_symmetry/class2_dih.py | 40 - .../nbody_alternate_symmetry/class2_imp.py | 41 - .../src/nbody_alternate_symmetry/gaff_imp.py | 74 - .../nbody_Dihedrals_nosym.py | 32 - .../nbody_Impropers_Icenter_swapJK.py | 49 - .../nbody_Impropers_Icenter_swapJKL.py | 43 - .../nbody_Impropers_Jcenter.py | 64 - .../nbody_Impropers_Jcenter_nosym.py | 33 - .../src/nbody_alternate_symmetry/opls_imp.py | 72 - tools/moltemplate/src/nbody_by_type.py | 665 - tools/moltemplate/src/nbody_by_type_lib.py | 394 - .../src/nbody_fix_ttree_assignments.py | 149 - tools/moltemplate/src/nbody_graph_search.py | 976 - tools/moltemplate/src/nbody_reorder_atoms.py | 74 - tools/moltemplate/src/ordereddict.py | 258 - tools/moltemplate/src/pdbsort.py | 138 - .../src/postprocess_input_script.py | 147 - tools/moltemplate/src/raw2data.py | 103 - .../moltemplate/src/remove_duplicate_atoms.py | 53 - .../src/remove_duplicates_nbody.py | 49 - .../src/renumber_DATA_first_column.py | 69 - tools/moltemplate/src/tinkerparm2lt.py | 581 - tools/moltemplate/src/ttree.py | 5383 --- tools/moltemplate/src/ttree_lex.py | 2088 - tools/moltemplate/src/ttree_matrix_stack.py | 710 - tools/moltemplate/src/ttree_render.py | 115 - 628 files changed, 146906 deletions(-) delete mode 100644 tools/moltemplate/LICENSE.TXT delete mode 100644 tools/moltemplate/README.TXT delete mode 100644 tools/moltemplate/examples/README.TXT delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=0ps_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=400ps_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=50ps_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane_unrelaxed.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/watMW.jpg delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/README.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/cyclododecane.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/trappe1998.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/version_more_comments/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/watmw.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/run.in.npt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/DPPC_martini_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=0_after_minimization_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=13ns_450K_NVT_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=26ns_300K_NPT_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=6ns_300K_NPT_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/water_martini_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/lipid.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/water.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/README.TXT delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/lipid.xyz delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/mix_lipids+water.inp delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/water.xyz delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.npt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/DPPC_martini_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=0_bilayer_preformed_GL_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=4ns_bilayer_preformed_GL_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/water_martini_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/lipid.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/water.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.npt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/polymer.png delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=0ns.png delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=40ns_occ.png delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=4ns_occ.png delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/README.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/forcefield.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/monomers.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/2bead.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/3bead.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=0.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=700ps.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/forcefield.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/monomers.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/polymer.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/polymer_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/solvent_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/walls+solvent+polymer_t=0.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/walls_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/monomer.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/polymer.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/solvent.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/solvent_single.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/wall_single.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/walls.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.npt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_FIRST.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_NUCLEAR_VOLUME_FRACTION_ESTIMATE.txt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/stage2_interior.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/stage2_interior_rotated.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/t=0_before_minimizaion.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/vmd_colorscale_jet.tcl delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/calc_table.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/condensin.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/coords_orig.raw delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/interpolate_coords.py delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/monomer.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/table_bonds_stage2.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage1 delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage2 delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README.TXT delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_WARNING.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/4HelixOrig+Lipid2005_t=1290ps_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_no_pbc_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_top_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=5000ps_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010_variations.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/CGLipidBr2005.lt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/table_int.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.npt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DLPC.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_no_pbc_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=500ps_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/CGLipidBr2005Orig.lt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/table_int.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.npt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/README.TXT delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/misfolded+chaperonin_t=0tau_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/unfolded+chaperonin_t=508750tau_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated_variants.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/chaperonin.lt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_dihedral_table.py delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_dihedral_frustrated.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/for_visualization/psf_file_created_by_topotools/system.psf delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=0tau_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=67500tau_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated_variants.lt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_chaperone_table.py delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_dihedral_table.py delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/minichaperone.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_dihedral_frustrated.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.6.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/for_visualization/psf_file_created_by_topotools/system.psf delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/initial_conformation_t=0tau.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/misfolded_conformation_t=1250tau.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated_variants.lt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/table_dihedral_frustrated.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run_short_sim.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=0tau_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=105tau_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated_variants.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/chaperonin.lt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/for_visualization/psf_file_created_by_topotools/system.psf delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=0tau_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=200tau_LR.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated_variants.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/4HelixBundle_t=0.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/4SheetBundle_t=0.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/for_visualization/psf_file_created_by_topotools/system.psf delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/1beadProtSci2010.lt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/README.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/README.TXT delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/charmm/1beadProtSci2010.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/class2/1beadProtSci2010.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.nvt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README.TXT delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_WARNING.TXT delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_run.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_setup.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/images/vesicle_membrane+protein_L.jpg delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010_variations.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/CGLipidBr2005.lt delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/table_int.dat delete mode 100755 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step1_proteins.inp delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step2_innerlayer.inp delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step3_outerlayer.inp delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.min delete mode 100644 tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.nvt delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.TXT delete mode 100755 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step1_run_ltemplify.sh delete mode 100755 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step2_run_moltemplate.sh delete mode 100755 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step3_run_lammps.sh delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_visualize.txt delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/cnad-cnt.data delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/cnad-cnt.in delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnad-cnt_after_rotate_copy.jpg delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnad-cnt_orig.jpg delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnad.jpg delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnt.jpg delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_after_rotate_and_copy.psf delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_orig.psf delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/run.in.nvt delete mode 100644 tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/system.lt delete mode 100644 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.TXT delete mode 100755 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_run.sh delete mode 100755 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_setup.sh delete mode 100644 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_visualize.txt delete mode 100644 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/.0 delete mode 100755 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/README.sh delete mode 100644 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/solvate.pdb delete mode 100644 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/spce.lt delete mode 100644 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/run.in.npt delete mode 100644 tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/WARNING.TXT delete mode 100644 tools/moltemplate/examples/force_field_AMBER/benzene/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_AMBER/benzene/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_AMBER/benzene/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/system.lt delete mode 100755 tools/moltemplate/examples/force_field_AMBER/benzene/optional_cleanup/README_remove_irrelevant_info.sh delete mode 100644 tools/moltemplate/examples/force_field_AMBER/benzene/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/benzene/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/benzene.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/charges_come_from_OPLSAA/oplsaa_subset.prm delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/system.lt delete mode 100755 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/optional_cleanup/README_remove_irrelevant_info.sh delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_AMBER/hexadecane/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/WARNING.TXT delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt delete mode 100755 tools/moltemplate/examples/force_field_AMBER/hexadecane/optional_cleanup/README_remove_irrelevant_info.sh delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=0_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water.jpg delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt delete mode 100755 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/optional_cleanup/README_remove_irrelevant_info.sh delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=1ns.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.min delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/benzene.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/ethylene.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/benzene.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/ethylene.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.xyz delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/benzene.xyz delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/ethylene.xyz delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/mix_ethylene+benzene.inp delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/WARNING.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/methane/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README.TXT delete mode 100755 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCell_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg delete mode 100755 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/run.in delete mode 100755 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_unitcell.png delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.nvt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README.TXT delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_realistic_junctions.txt delete mode 100755 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/graphene_unit_cell.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=0ps_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls_side_nopbc_LR.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/water_side_nopbc_LR.jpg delete mode 100755 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene_walls.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphite.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/nanotube.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/watmw.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.nvt delete mode 100755 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh delete mode 100755 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Cl.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Na.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/wat.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=100ps.jpg delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt delete mode 100644 tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/README.TXT delete mode 100755 tools/moltemplate/examples/misc_examples/menger_sponge/README_setup.sh delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/README_visualize.txt delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/images/AlCell_LR.jpg delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/images/lvl1_LR.jpg delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/images/lvl2_LR.jpg delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/images/lvl3_LR.jpg delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/images/menger_sponge_lattice_8cells_t=0_zoom1_LR2.jpg delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/images/menger_sponge_lattice_8cells_t=7400_LR.jpg delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/al_cell.lt delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/al_cell.lt delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/menger_cubes.lt delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/system.lt delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/menger_cubes.lt delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/misc_examples/menger_sponge/run.in delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README.TXT delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_VMD_graphene.txt delete mode 100755 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_setup.sh delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_visualize.txt delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=04800steps_LR.jpg delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=12200steps_LR.jpg delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=33000steps_LR.jpg delete mode 100755 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/README.sh delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene.lt delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene_wall.lt delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/pyramids.lt delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/system.lt delete mode 100644 tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/run.in delete mode 100644 tools/moltemplate/moltemplate_manual.pdf delete mode 100644 tools/moltemplate/src/bonds_by_type.py delete mode 100644 tools/moltemplate/src/chargepairs_by_type.py delete mode 100644 tools/moltemplate/src/dump2data.py delete mode 100644 tools/moltemplate/src/extract_lammps_data.py delete mode 100644 tools/moltemplate/src/ltemplify.py delete mode 100644 tools/moltemplate/src/lttree.py delete mode 100644 tools/moltemplate/src/lttree_check.py delete mode 100644 tools/moltemplate/src/lttree_postprocess.py delete mode 100644 tools/moltemplate/src/lttree_styles.py delete mode 100755 tools/moltemplate/src/moltemplate.sh delete mode 100644 tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_dump2data.txt delete mode 100644 tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_extract_lammps_data.txt delete mode 100644 tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_raw2data.txt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/amber/README.TXT delete mode 100755 tools/moltemplate/src/moltemplate_force_fields/amber/amberparm2lt.sh delete mode 100755 tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_angle_to_lt.py delete mode 100755 tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_bond_to_lt.py delete mode 100755 tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_dihedral_to_lt.py delete mode 100755 tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_improper_to_lt.py delete mode 100755 tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_mass_to_lt.py delete mode 100755 tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_pair_to_lt.py delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/gaff.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/graphene.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/graphite.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/images/graphene_unit_cell.jpg delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/images/ice_rect8_unitcell.png delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/images/spce_ball_and_stick.jpg delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/loplsaa.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/oplsaa.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/oplsaa/AUTHOR.TXT delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/oplsaa/README.TXT delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/oplsaa/loplsaa_ext.prm delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/spce.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect16.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect32.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect8.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/tip3p_1983.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/tip3p_1983_charmm.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/tip3p_2004.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/trappe1998.lt delete mode 100644 tools/moltemplate/src/moltemplate_force_fields/watmw.lt delete mode 100755 tools/moltemplate/src/moltemplate_scripts_depreciated/oplsaa_moltemplate.py delete mode 100644 tools/moltemplate/src/nbody_Angles.py delete mode 100644 tools/moltemplate/src/nbody_Bonds.py delete mode 100644 tools/moltemplate/src/nbody_Dihedrals.py delete mode 100644 tools/moltemplate/src/nbody_Impropers.py delete mode 100644 tools/moltemplate/src/nbody_alternate_symmetry/class2_dih.py delete mode 100644 tools/moltemplate/src/nbody_alternate_symmetry/class2_imp.py delete mode 100644 tools/moltemplate/src/nbody_alternate_symmetry/gaff_imp.py delete mode 100644 tools/moltemplate/src/nbody_alternate_symmetry/nbody_Dihedrals_nosym.py delete mode 100644 tools/moltemplate/src/nbody_alternate_symmetry/nbody_Impropers_Icenter_swapJK.py delete mode 100644 tools/moltemplate/src/nbody_alternate_symmetry/nbody_Impropers_Icenter_swapJKL.py delete mode 100644 tools/moltemplate/src/nbody_alternate_symmetry/nbody_Impropers_Jcenter.py delete mode 100644 tools/moltemplate/src/nbody_alternate_symmetry/nbody_Impropers_Jcenter_nosym.py delete mode 100644 tools/moltemplate/src/nbody_alternate_symmetry/opls_imp.py delete mode 100644 tools/moltemplate/src/nbody_by_type.py delete mode 100644 tools/moltemplate/src/nbody_by_type_lib.py delete mode 100644 tools/moltemplate/src/nbody_fix_ttree_assignments.py delete mode 100644 tools/moltemplate/src/nbody_graph_search.py delete mode 100644 tools/moltemplate/src/nbody_reorder_atoms.py delete mode 100644 tools/moltemplate/src/ordereddict.py delete mode 100644 tools/moltemplate/src/pdbsort.py delete mode 100644 tools/moltemplate/src/postprocess_input_script.py delete mode 100644 tools/moltemplate/src/raw2data.py delete mode 100644 tools/moltemplate/src/remove_duplicate_atoms.py delete mode 100644 tools/moltemplate/src/remove_duplicates_nbody.py delete mode 100644 tools/moltemplate/src/renumber_DATA_first_column.py delete mode 100644 tools/moltemplate/src/tinkerparm2lt.py delete mode 100644 tools/moltemplate/src/ttree.py delete mode 100644 tools/moltemplate/src/ttree_lex.py delete mode 100644 tools/moltemplate/src/ttree_matrix_stack.py delete mode 100644 tools/moltemplate/src/ttree_render.py diff --git a/tools/moltemplate/LICENSE.TXT b/tools/moltemplate/LICENSE.TXT deleted file mode 100644 index 73eec32380..0000000000 --- a/tools/moltemplate/LICENSE.TXT +++ /dev/null @@ -1,28 +0,0 @@ - -Author: Andrew Jewett, Shea Group, http://www.chem.ucsb.edu/~sheagroup/ -Copyright (c) 2014, Regents of the University of California -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the University of California, Santa Barbara nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/tools/moltemplate/README.TXT b/tools/moltemplate/README.TXT deleted file mode 100644 index 773464d01b..0000000000 --- a/tools/moltemplate/README.TXT +++ /dev/null @@ -1,61 +0,0 @@ - -- Description: -- - -Moltemplate is a cross-platform text-based molecule builder for LAMMPS. - - -- Typical usage: -- - -moltemplate.sh [-atomstyle style] [-pdb/-xyz coord_file] [-vmd] system.lt - - -- Web page: -- - -Documentation, examples, and supporting code can be downloaded at: - - http://www.moltemplate.org -The most up-to-date version of moltemplate can be downloaded here. -(After download, you can unpack the archive using: - tar xzf moltemplate_2012-3-31.tar.gz -The date will vary from version to version.) - ----------------------------------------------------- ----------- INSTALLATION INSTRUCTIONS: ------------ ----------------------------------------------------- - -This directory should contain two folders: - src/ <-- location of all python and bash scripts - common/ <-- location of shared force fields and molecules - -The ``moltemplate.sh'' script and the python scripts that it invokes are -located in the ``src/'' subdirectory. You should update your PATH environment -variable to include this directory. - -If you do not know what a PATH environment variable is, read: - http://www.linfo.org/path_env_var.html -(I receive this question often.) - -It is also a good idea to set your MOLTEMPLATE_PATH environment variable to -point to the ``common/'' subdirectory. -(Force fields and commonly used molecules will eventually be located here.) - - -- Installation example --- - -Suppose the directory with this README.TXT file is located at ~/moltemplate. - -If you use the bash shell, typically you would edit your -~/.profile, ~/.bash_profile or ~/.bashrc files to contain the following lines: - export PATH="$PATH:$HOME/moltemplate/src" - export MOLTEMPLATE_PATH="$HOME/moltemplate/common" -If you use the tcsh shell, typically you would edit your -~/.login, ~/.cshrc, or ~/.tcshrc files to contain the following lines: - setenv PATH "$PATH:$HOME/moltemplate/src" - setenv MOLTEMPLATE_PATH "$HOME/moltemplate/common" - - -- Requirements: -- - -Moltemplate requires the Bourne-shell, and a recent version of python -(2.7, 3.0 or higher), and can run on OS X, linux, or windows (if a -suitable shell environment has been installed). - - -- License: -- - -Moltemplate is available under the terms of the open-source 3-clause BSD -license. (See LICENSE.TXT.) diff --git a/tools/moltemplate/examples/README.TXT b/tools/moltemplate/examples/README.TXT deleted file mode 100644 index e3602541c7..0000000000 --- a/tools/moltemplate/examples/README.TXT +++ /dev/null @@ -1,24 +0,0 @@ -These are examples for the "moltemplate" molecule builder for LAMMPS. -http://www.moltemplate.org - -Each directory contains one or more examples. - -Each example directory contains: - - images/ This folder has pictures of the molecules in the system - moltemplate_files/ This folder contains LT files and other auxiliary files - README_setup.sh Instructions for how to use moltemplate (executable) - README_visualize.txt Instructions for viewing in DATA/DUMP files in VMD - - ...and one or more LAMMPS input scripts with names like - - run.in.min - run.in.npt - run.in.nvt - -You can run these scripts using - lmp_linux -i run.in.npt -(The name of your lammps binary, "lmp_linux" in this example, may vary. - Sometimes, these scripts must be run in a certain order. For example - it may be necessary to run run.in.min to minimize the system before you can use run.in.npt, and later run.in.nvt. The README_run.sh file in each subdirectory - specifies indicates the order. These files have not been optimized.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README.TXT deleted file mode 100644 index 33eeddda6e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README.TXT +++ /dev/null @@ -1,28 +0,0 @@ -# -------- REQUIREMENTS: --------- -# 1) This example requires the "MANYBODY" package. -# As of 2012-9, it is included by default, but this may change in the future. -# If lammps complains of a missing pair style enter "make yes-MANYBODY" -# into the shell before compiling lammps. For details see: -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -This is a relatively complex example containing two different types of -molecules, and a hybrid of Lennard-Jones and 3-body SW "pair" styles. - -The cyclododecane molecule uses the -TraPPE force field for hydrocarbon chains. -The parameters for the TraPPE force field are -in a file named "trappe1998.lt" which should be -located in the MOLTEMPLATE_PATH. -(See moltemplate installation instructions.) - -The water solvent is implemented using the 3-body single-particle -coarse-grained "mW" water model: -Molinero, V. and Moore, E.B., J. Phys. Chem. B 2009, 113, 4008-4016 - -More detailed instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step 2) -README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh deleted file mode 100755 index 68acee49b9..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh +++ /dev/null @@ -1,31 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data, system.in.sw -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation are ignored when beginning the simulation at constant volume. -# This can be fixed. Read "run.in.nvt" for equilibration instructions.) - - - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh deleted file mode 100755 index cb4d908984..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh +++ /dev/null @@ -1,25 +0,0 @@ - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh -a "@atom:/WatMW/mW 1" system.lt - - # Here we just want to make sure that the "mW" atom type is assigned to - # number "1". It should be by default, so usually you can leave out - # -a "@atom:/WatMW/mW 1". - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=0ps_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=0ps_LR.jpg deleted file mode 100644 index 5123dc7f60bec04fb5d42fab3e70027ed9516826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51874 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 Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/polymer.png b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/polymer.png deleted file mode 100644 index 304dbdeb9dfeb449299bd1df6b3804075acdaa59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53044 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=0ns.png b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=0ns.png deleted file mode 100644 index beadf7e1bb999c282e4bb87e63b51d810f889b20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101303 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 *}JdJ1SEDHO4`<4z2ea!sW z`IGniJ?s4I>rDEObF^AGe7jfeZ4vshLdJkW#(*cefw9t3pRYtyc5>n>qtEWy10t_`p|Bf5@{Lp{B`|-yg=jK{Z*NDlSTa`T6<`Ix#x})Fvx7uUe(GHf(i( z#-FBovbS?g^X7nL?f@G!jJ`~BX>$H%j?v$saA^-%fspqc*=Xb|$C!J9WXH>aPQ zGt(^h)`JHN!d9DLT8$b(!qxXBA}~#qSuwPk~RO7f=6t(U(rS8Z_GV;Q&Z-w&mOngwB2;aaJuR_)T78#{e#y7#O^iDf~R zTcbQfL(QgsD&DE8_vy;Y;In7XTJ(uu4if5Yx&3zC>ebF{WxM}=y&ix5X;Ja>bD^uR z8qGZO{yRGp{T595ZJI8D}XfeLKn_E?9} zXJ==pZqiN<@pFw(Oi4`q`RAZ}VFs)1V)hGDw;q&dkI)uKn8_o)VCkPEBc9?lk;;5* z4eg6nf^+@FTOblD}jM{@Dv#Sc3VvoJ6m zcv_?>(zWPu#?~m$Njkp@7(RSDt>53*rx&$_!!pZm{`&pcth zKKrZ2Zb^aBOdq9*0xW{vN8glLca^P++`Mens;rER4uuYSn?KL>8!Y^MpD{&Kp zNQ2~q_g)c+3@il|GO6vCj(=}t*4t>!!H~9D^6w&vV?HWEK`Tq{#2%kt_v_`;)6>I4 zLo-dJX8O2IN>Q6!`RSzk^D{Fy*ZeG+>9Z~Qc%Os9f~#5CSy@Fp@4URcyw@$+Xy%%= zYhAh0w?_S~tM>(gUI&E@x8HgkUK5t>>)U(!Y0&DcK`TSFrh2IeP4#+Ow)<__?#nN) zy#Bg5{k)u5+{1?t7ag4H`m~NOSf}N>-)7EfnvBQ)a}-EB@H#Xt(^d<}ZqR;WbU@?? z>mL(8{j{wgVm`<}{=nN1$zXHfv4yVoUe_OME$(po?pY?5QF;Hr-DK_B0I^;-hM=8u zlCQ5j-032sz-AEfZ1PctoyU$zs%U=tdFT5*?d7@lF{>0bX9-pEYuGZ|sa&*VxFoFu-F{ zirswuUj+;aX0v1UrXPMNAuC(^^Xc?btGgE$yVrkNEU!7$OXhg3U3_}_a`5p_kXw9G z($m#<&HeiN`u6SH>;Jxv&(Fz;*;ljkXi}oYv+w)=|J_shd0AS$zS{J{^?}o}+a5U{ zEm$TTplIQY>xHT<_0U)YYg(!X92oMsK#I(ChZ*FUOYInH?e z^VBy-4s;eYbDx=lvn3p4gyhwmwkZ@(YP3rbdHQV1MFz{c>*gL`%{XDt z&u9Io>P$M0pM9aHTXKh~+{(5#t?1dBA8WS$+uD7&TmPw?-S0P>-4<_LwrttbrL0qL z{`~u|#A@#O=eu|BzF+_UFX&{_o9XkfW^IK`PCYD`;iJ}lG|6aY(8>@Ek*=djY|RH> ze_eI;)vH&p0yJ89dfXNtOnC6I;$p^?hXp_W{tM7>37m5Oy}4AcSohJat$Hy#J{;z^ z|Fi!8Fa7!Fr+cVm%;IBV(wpwBAyQ={*L}3;*%`?tO$-;VUfr5}yl>mKZ4o-t&Oi5` zZ}%2-RqO42wZFTxIx=!|uf8nt*tRuFw=bS|F}wF6F2&PR+56-fW^i8UdfeKT_MO2c z{d|~S6bpmhih`^b<|hxYoL+uzU!mA8#&b?Kftkmih&rxcDK3BXBU9gUZQK0?f65pd zJwgPy7!|r7FHKLsC0n+jG5eujOKZ|RIjB$n$u6Gg6DBBT)42l{_pGif8UkY?U&b_bN{`&dr#i> z+gV$sc-r3AJhui-x21w+<*vV8zyIE~Yhs-)0Y|=GSsCoNy!hs()Vp`@da#1#g0io# zTf1`Q#g`?J3z1icub0a&;5+)*XR24JU3JmX!ku#jH*HWTIH1UFvft_Oqy4Nq+*h*j zG#AV`QYh@JuaP{PxkGKT{Ibhi8PpiuZS4HjCi`uvPPwYg?=ClOW$J>qCCZ$JJGdh1 ziY(W#@U;gEh!tr2ZJ%;GNVMVYuh;ueJU!INtkz(3SU{q|;)&8uTmN^7pLj$Pj`Lcd zs@ul#qsWfIA^PUmLk~ZwU-UUJqwCs{PWGXWz$canwg35wO886c}~jO8l^YA`)E?9%Ot<$7YpZJez|7Vs$UQJ z>wo;d|33~i{P^x`mFJ|8l_5?G4M3;bd`mJAW{9hPyA^c405dal&`Oi}=NAW+&p!L@ z_Wgfld!(0Nep&bX_WgThw{wej{%MoWE3lBcn6YK`>eVS#>RRU=q+6>_`5d|Zz<2A? zRkv5&4ccy*uUD|XD^XZDp>@L3M@{mF6YUyg4ltFxe!`y5B#`n+a*z1(=~Il;7-DjB zCFS_-eq{(85bO8X*UYyrtEoNAw)bq=rd6w$514o!`TVNu*MrpsJA^|DuTFp9?O#1l zuZ6p?bdS%bYN3Wd51RK1dCE439$@=0^-{MNqi`~JeuTvf37^(eyRSd54J-fqwQ8r$ z_L7xp-*TMo-ajtb7jUp5CSwcB`@P@e3?y>$^Tj(|7#4)BR@XJ&UvO=0^!Bu~Qd6dN zo;ow}gk-T#;Uk#6URWEy4GHa2>(x92=pHKY!yuc!Ceca!-`SsCilS@lVa&B%) zEhq@k5qti*veV^J(N3mD2Y>(b3!U4$;%50Rul{sW{r~&_|K6|NelIICbLHyQpDS$Q z|Npvvo-<9UK<0Si9*rW^`{N&XOZ@%w8Rr{a$NuL=~r_G@a~X&?IA5OSm3IGdB6ESu943(kVjs*4e{J)uoA&JRpWtV~4;UhX zZY3P=%g?!CQ1t4Gc2TA7frzIUq#GPo&uxFq+sMH1;9|y_B`IPD8Jbr&>o`bFsy(^* z$;GDS42~N(bmtaZsY~6fe*Y(S_b0B_X{SS(CorV6-gPt(RqdPocwO1Lu+vwAT1#ft zMqQit*CNzP>+JLNC6_jMiB3BG_hib;^R`uAUfkJPY$?OXV8Ek1(PM(snwXuNR=i%n z@7Jn>2^m>gPO1-Eoen-Ny7!3ZXac4IA9@Rd~*BWqUA+C(?y-8*%$x+_mahTX({@j<lh3D9=I;^% z!=A8gd64$_Ebk;XC6AWg#7ka>_KMeT*VoGb_k8yDzc0<^O<2Av{N~)Uw&G5U~JhHN~SFc{xnyNL?V~%ZgnBMf)Uw`G8?M^v4>DH}V&*xR2d;Rs= zl`A3P;md)pim!xK+GZ94eC*Zl66N8S3ja?EC*U3M{J0vD4* zdirx=f18cv@9(+G*M{g#KR??%zo0;Xq3+k^`S&Uw_dZ|Kwr>BjWo{ZGT2s9m9Rk*c z)z;W-mQnXNOT6JTJNM;>f?6%nKUdeEdfFs1J!zT0xZj^56Dd}~0_mL%jTsX)OpQdh z&Ya$I+Lhz{<;K*V6&?444i+(Jb`&X9um{Dj_|R|H{rJip%Yt7fCk>NuuXozF2VNWlFIajIpM!-_HpHLGW<#1z^?uLd7(w?>vf+qO-hS)1}y)~ z%@TIy@kW(L9XpPNDtCGo{flYSGr#h-%Za67kGZ77wl$*d!4B&==I3SJ)SZ<$D{%6P zNY$8B6RF1^Ez)ye9$$Sj#VOI}i|?b46-JRdQ-5_I|8-h_zm1vMwydjKOM`Y+eSH<7 z^Q>&Q=cGH^a&LEuY6omQXnfx0@z<)YQMsk1rDn6=zJ6^i!86fg$-aGd6Fp}5s4c#z zA=J6)W=?GE+^Dr~f$q~!KP}qXNrBZ#y ztu2`reb=vCQ4!*l>;LZm|I4FJ;kOdogdEs}Mcyr)9=GZC+lv_?Dngw{AH93`uEgqX ziB+InT4-pfjhwrrhFm}U*Q~&mAsT8YpB9O7wMMP|R<+lI^=;YjUh{iDE_v(6Hm!XM zD!)MoQ@l8vaCcX!=$#$@`=nEsbS7Gu-QE)6bNt~M)0sc&>R+CTIB-DwLs4stPlF|^ z=pJ^xZ_lSKU;FgzBq2`s#e$4W7@3y(9$TQG)8pbkLxtIyp*+5+b}o~ic>jddEdasnwpi9qa)Qj&p(2n!GNdRZEZgdDpw98}qCwSi3^-iph1e>$hLGhAF0(WwP_xE^c-5QhCJDnri#e z{_jhFSy|cnYt9;QwI&r51ZYiN7qM~Ck1zMPW=}umgNJbU+tck;F$e)ynhXWf4JtrhQHzI<3<5w$jKX%H(D?eAtSoAI4r*%T`&W^&zs_&|e?)}y6JbdxYLybG{*yigC@&xe&|GNMBKtq#)NvBI` ze0;}o?YS>EXQzm-`5E%ila8O~SaOs#$YYlWuNw|4E_Mw8W!%UhS_BqSu< z+f%uMD`N4*Cq+BA->jE7%$fh_V?|b0)~1^}tK=tmElt{JG1qVLzjJ!iPiJlY_hq?#=<2Jt zx97`CNgXPbDdh-W86v}{KG(0mx3{;iFYo@oy(wZ(U6oY5Q$O%9EIG2$M=!WY&i3$u z6CH;#a(LU*=U4`xcwWoZnzU%-}(}wC(h<^A|=~f&+YR6-pBVD7#a*`{abJ+_mXq?ynnt+uB`hn8O9OG zz))9sSYNKsKIVGV^l3|M^Za*ii+F6Yo@LX~b4R`Q6@|TCGb@Alahgcr(Ixe+55q60 zoYgnZVz-?FS`)fxdeTOV$tPuODhl4-+PXRItkx`9n~H*hf`VUPUWSH-&h%LppfSg; zHcCO@Nzu-U6DKw{HioVaOEsGL_;~;7kX6Tyx!KL{pSRQXc+#rmHO? z1sYE|cFe6U@zc*g3!U3NCb^gibsl;BRq1Py)!Y?FIfHa&`lyL@2lD%DxxGTA=5QPD z@jh8+-Fbo422;J3257J_IckV(y8V`|dEt#;uRk7_cegdTXu#6w&>-YeT~);=Zx^#r z@Q z-MutPtXnunZ~L63CR(ApuU_uC?4lQFA|>j!c?lEbJ#;XShoAsu@-t~H2vIJpdhef z<;qSMrKF7#$3OPl|C_Pw<*i#$B|fPeBktsFKmF9HSMvC=W6OTcE_B@U>6CWa?!Rr) zc@GLKbaizPCQL|_n0@x!t?c!srKJmXZOh)=XqT^B5w`mE>({PI6K}sQ+kLmufq`L3 z(8`l3MxabnTeVkC_8DiZ)04dmHB`0AgSDm>?VO{)5u)3-Xv&FWIcDeQSQckwbR2*D zw8(PSvWXGTK3AG>o_Ja$Dw_BA*H`y`x!S*9uTR`A&cTv)ZcgUrn>BX#FI>1VJAa>L z+{0_@aY>?cI=mwFo;or#tm<)L*kzX>G}V@sLwwit|1bjlADmQVEgvz#~*+E`RC)h zP7qxq*U!!{>Ex22l~YcpusC|C2b11)rh>&mz#ijTPyq zDx?=*oN+S6LdMT-{_@OOi!@rD6sLN*DhXEgI&f_-eSPiRxpVjK-79XI`St5px&Gs6 zn|b;8`oedBm(Oei^-fdB;KF!^3uYKc3)h6RD|Qp`oFzb=}L>`5%mX z%<#$ouWf4P5Gco77HHWFA#Wea1!^W z^B2n8cYdy(wtv!TSB~|6BCbsJ?OycsoAP$^&$C%u6mmG+4+p;Cp8Cl0`Q`mt=jYj8 zkFU3FKOCqvRU@-W<>cDv?PVn;YofMtolLB+|36XL{h0UT2M-q9e=pvBRK@d=Mcs!7 zj{V0Um+h{#i?6NS>$ceOQtLl~QjKpvYcx(W_4)^|zN$1aBPWOFspPGkZ4)O>oHlJ* ziV^s@9wpD9g#k-0XSO9yI;m3B#>URxFK27@H124tK>zXi)$c4z0+xrZPTnYywd_sV z?x#hS8X}WCRFXDUl$4lEKizxZXAAS;!-q{xO+Qx1JYA>(I;?+DfJV~B8Rwrn&$hI& z`EyJTbM2C;>ECCq;(R`{zpVhD+jaNuU8RXD z_U-$3QhmOS`@<5eyS(Oi8q)Ml%*~~H-RAn0-;}$iCBmh_Apdy%y6Cm+wby2ZdWZ_2 z&Dh0%e82nUAKdzXCMGUo*!xuK`-LxhGVbk_WwX{zNjSUe!Siz>+=)+_eWrP{9X7D( zQs+M9q9o`!$tf!0Tv0~Gip7hWeJdOnyX@Y*JJl%CkeT(E>O$~p?o9~>C!T)}bWUtb zbaQwA{rmU(J)ixW4;t9m#KgwN)@)^G=sxIP=!)uZtecKAH0C>-ze;SFe`#Wl!=^6W5Ir>2%o>xBh0%zNgco=T$zN zdHUPTYP&DrzU}+@Y&KWxqJ;|`wWj|1TUWx-e(sf&l+>h?Pkt<$F2koT!nM#~+3mOQ z-oLN^bW%OO`mN~}*A>ECw=N~QY+1JKS+DuM3!wWy-p$!;wJ;!KYm{bJ)TWe^+j4LJ zD^gEgd8Mi`VRO{lxUE^C3IZK2N{=TOY6Wb&!7$@;G3Yd>XX4MlChgUK_gnJYX74=@ zjb`#>cjZa|dOLOfto|oUpKia+H)y=)X_nZN@ zLbE!LKVC6mUBm|y3yTh?xW~DCayBo(w+Al|(b{}-&GE;IoEoOK>8H)9l#dlQeC^K5FTcIH8ML&i^6Av@3oYA9ta_E^OSJv`TetnTt(DcUH=EBd z3P?{+fBv}NzV6G5i}U|HQ7_s#CsAU_`jsKC7Pian5@PS|dp`UApS0@g-C?U;)yr1A zf*fu-ZJHQ(62(O+@M5*|#Xqh9pKI5yZOgyEZ+d*)&K*l3hbZ_g zD}8-!;k_A0`D6Fj*)rJtd@?ySG}Qb~!QlrF611lN0v!Mr^zcVb-A1d;P6sO%9@rRl zn`6r6{p8c9&S)eRQ<@_wV03 zW8TdzzxVU*`?~T+&lep_IQrSLN#Rs%qL%8(w9b-Q9!ooX)Fz*w&Sz=BvwVO2%Oc<4 z)yt)MY#7{cR*NyR-B5q4f4c6?(bl@}Su3;?7{fT$7tZl}{_t>nAkSn4j``=W-@h;4 ze|%zj>*F2ZOWAMcn91-h{=>~6Aua9vDQ)}hr9mrizYWuxI@5iWa4Wtz8+g{`|*hI!hnpNoSc*tmR7@um$#kUyLYd3 z*&7K-$-tE%>i+Z2q;0MPpZq$1hRl_lHzVWY%cS=pgS*oS?kSlNZFW0{_=k+w%rY7!W zh)~>9R{8hq^^1nl&d$sX3)XP8AAb1x=c?7K179gz;%Q48P!marRk+ z&b2F7TDI^m4evOb#B;dDPTuOI^Gi|pKADRzOF-?Q7Yo~;6z%j-aavx*%gd|LR_S+F z&Z;#lKi_>_TxjUj(@&WiT$Dau3HCob-@g74=(NujSF@G|aWb$trfj}hl-a^_EahX) z$I7{i>wauo^!wY}+dB#u$E~k_v9MjJlf^ZVnVI=$$yBAebLXxOTg%1PeD>^FUS8g` z%`+7`u3fwIcl(5H%S>lewq(Dv)}it7^Y`dwPMWnxF#qSIok{&0{r~M>a`7<#e)a;VKSGWKF-!-b-aTD&=u+D$K$;WbyK-}UtH#f73-p(|UnxxV# zsUgYFX1jq6EDAX5oYLW z_XlO9ub)oqzrVfxJ!rVNIK^*{MWBX=)4~hM{kGe3Zte{4Xv=U{nh4o-Ir}Wz{NoL8 znAR5*oI7Y-e7-~a=rlv_9SO$UDp&277Uw!_AkhX2wuFR+!w=uw+`RnLmXDs|U#eak ztU3C4<@PAiPL~}kJ!8*ZQvaZ;(%H1-g8J*^6I?rwBr&{PUbN!YhQuH5c6-k|UBvLn zOEoU|a+*=?0fTvyvhV)Ay4$>_)Opzi$or*HNDzt^u=SGi{!XRA}mj}{@p_V)JwUzXc1bbq_P?(1r1c0QYL zH{0UK5ZULkG$MsA)|NO{9w+s znP+dgEIOORr#|_SsP?B+aasEdJ9_wxd}JC9KYez6O{Txfij++52Vo^hDz zv#sv$uW#SJ)&FR(zwokTb@+NS37(Z9SvNPOJ`FMi-OJ`X$L7JZ-j~b`Il9yap`Q#b4FeWg# z&HA_F(Ax{kBmO2^>c88WF2sCId5>79+v3>RSo!)t8?R<<1@(#k=Kp(^Kd<_orAoeQ z?(I#fr$2ny5Thr~!NS+BEZ1NE-1`2`*Xwqx>D{<_bLHiit5&UQaZ>d1T~ovOJh-2q zp_S?R-|wYthjSKg$jdpy_F!I46@lHzA)B<19$c`Y?HHGMkG*8R3tMfH}Jy2_uY-|c)S zqF-uOB&IWY&ZW8iS$Q`$h(6%sV?X*Ug(3BEOMi*&r-COBgU`=>BwXXcG{d3nxafP) zUqAoNFgZ5)V^xZ+&#E_NwtqgnX4qaoYqBSUhu5r=DMk!zhn>!z?TuS+C|AxrW&R}_ zrjlvfB69`UD!3QyVR`*Edi|4qwmRX)YXstoW6JNA%JrvTTNAl4LPvt56*7GhX+R8x&{0S-o_7M;-g||9y!m3@Qf# zp7KvWnewGQ{IuVun8_QQD$Y)P{&XUj->c__JbS*!t&X^3XR>9<{`jK?58u~qcS&rg4q{;kOOp#9vsb4Jl6Ovm$2 zKfT4s#ZcE^&u9}@R{uiWe)?%+iDgyI5$i%1UG%TJc+IR+RlDW7%&o{<*SD@;F1AEy z=8=e;Gp{y<*(`FN)L9p6$uON=p~XqHeKLChlgnu-F$SRz_h!FeIz!|L;}?bBv))MG zZ+NcO!*TVc6r-PkkM`jL#u$^m>p!i%_$51d@9y9h-XNc>D`s4Z4RQ_nQ%%?0`SNqo zp>K7GJ9BpSv=r>oK2Q``$bHAC^UVD3?LiAq=CnQzdOlTD*OftYrq7{=5sZ5nlApeL zvDV~Yt&K~o0`mi=s%X{oIb8C0!UevVNyYay3pFtP+PnJ5<}e^Z>+o&c?Ron9H|z}fAY->jb7BSe0|ker zE&;y`rQ+Bta)m@wEbCwNXZ}(+yGnukbo{~8CxV+|lqwoDH+*w_`_sqnhJ4E>)q1N~ zWd>QUm-nkqPd%^B_{Jpmr3dHneAWq!1q^PPx59sFy%2t*JiE2^>81wJL)rZz27=Gd z{7#?rN9EbE8HR4(mU1b+6y`BDpZbWog`rJb-{&&>@?ZBNA|fK}z?pH$Jnv39p_`i4 z&c+W|e=s~axapY5-)|xD`rO>yr{kS1YW7V7Wr8LDv{iTcvQ#$2c~l08?^6KDrg}Rc zR$&7*AeP)q`P$#w+RFN%=!BGRkWO7nA_(kE@!2cj7xnr4ArL6~IHL-*3@tG+@#h^* z-&^`mg2Btu5)*gM(zLgGCk*2)122PYZGAec4YXiSOl(@VR2WAj$j$3A^^_HD{+C(k zfWg#{KhIq+devHR>6tlLK&Rd`>#GV|us(Qgr{Q_~`iI#YHpIk$jovA8B1L>38~15f z@IpXTbHOSS6L)eITAjcC$w=tX=llt$K+Zl?G;c-7WC@T@Zt+cR1%aoJ48J;^081LR zZg4tLR4Lf&_f-_Mwlx{Vjl6Kp>}vRdLx+k=6HVr=SJei)M*Rq5Q-=VH0E?&3*R30T zRJo3V0uQvBvQprPVpE5(%d#~GxtNL;JkVOA(8?oV9if||c{)|4<@tThIiO{sYI4gt z4>=1kKjq4xC7qBVR1`GPJ@3PCJ}Q7=vWrif}fFiI-? z3pu1C*U#**FoB2V4bNrXf=hY&7u8B68OW}0N z22h9_ak6}ra^(5{ZTquLY_B;37^WX*6?DjzoE^>i!6|rCrtX@fZ3YtB+asD1FR8rL z6NzDPY;}q|#m1~~u1h?xPIgMnzHr#PL^HP?TfC+ychCb>GaaH@9+HU3}12> zfRmY)qkuKTG{%ygI~KhPeACTVvG(;A%h$!{E)&a1D8HpX>rH)uz01K5eTn~{{XOH! zc5YgPnp7{7fP~s4FKL4{j0?70nQL{`x>zkTbn3;IL7$(g8mwvI4LcAL7uvlvbynT1 za|;f0No?3KrLopKDRF0+;yED$X$OV`##K|b5*^ksMCeanUScI7(ZTRwsd$&e!T1}W zFUe_nJF@f?_wHhg6y9p$BV^hwZq;#FJM~| z#Ct%qL9k)#(rZjQ&0Ei9n*QJ|d3at@@8b`a(!z|TN=;)x&Yk3Igle12Wk)m5RUrl#PrpNT3zzg+hJfA{|1yCM0Or&CXX60*H@ zS8MCj;>P@k_xFGKm%itGOPli%ZkDaBTB%dLmMSfrAbWr<;NS8o3_J#GGbZ^xjxA?o zSW~d>!U|KNolDMMR8xQYG)#y?W2upbh}z|sLf1c^F+P8%>h)S1IsW5?GeP(8-miYY z*J8Dgsx#1b8qoX6v zYM;`4)86juahu8Q95r9|_N&cmaZ+SZoUZ+_poM{#;pHUlt!mN1GpDF6W^7pI6a13d zl5I*|>g1g(4KHVy%`WuhJP2CWb!MhW+#5G*S>~*19xAo9wR`vO=_nTV+y&j@nc& zX(=gd0kNk|O@it5!2lYn{-Vnx(MM^}u(=XN)F{ ziRv16LoyU=qVmJV(%wd`c5~jc?Gd-wmt&8YYHOVH^x$ki{9K~N$=YMmn^&)dI$ey@ z&Tz0bGko~-`TY60*5xlRE#*0E^Y_c;R;Psv7doyCsj`{JZ};Os-uBBTxo?`}T=ijxnvAJ{S&YQB`lTR-3S~|&VY1URNsb27cjx-Y~(2At> zn>QC{nN53o3RE9VJ1^h#L-+s}gJ47NqFG+jnvBXDch1>)_~pYGMe+XQsgtK!*RIp~ zpzC3}?AD`PuKi7Y7bJqCggBMLV&AS?E2=Kk7@}o*@xj*XanalJWZM#J?B*+U_^5q; zxBLCGqMb{wi$yO~#hfZ5>^9dw%letMH*UU%$_7!@mJ106E3RfW zIyBUEKmIXM**$DcgyK}Mi}T;y+Isr=XHyfCkkC+3F4pzeqcubdWZb#br=F{Lz!)7I z?6^7?eBbuvw9Pl)mhHbE9~vsk!7|}cC}59hYufSaePu_xi`)~@XAc%^m{d*eZyEI&k1i^ zFt7D#jbexUmMCTi(S}J1Oiy`##;ki8|F3m@Knp_;%g4)?!U8oWuy!AuB1%#>Nr;xI)Y%g!PE6B{-nD!8+p^!w zd}kkeSm5m3?6$aYXNKE5#uthmHjWIAH?(pRnojfHFA?TH9?VeKRI#Ne(qcY;{;e(gQnkDfuKfGE zecHB53~Glel;oCAWA5^<+WfKN&(G)c+3vr0%kO`!uwh8p zej9W*@uCy0P78ByZ;M=eEk;kg|F|K~>v!)!$6&T4_V)G)b*ALxoXIem<+JSJ!^DXm zDcf(`%K2-Ec&Sa6;cHKn_!7GL=AMLuP0#05uiLuSRH$=;iX;!)+p_A?(ozi(qnSRC z0o4=D{B|4+bLY;TZJrN0Hs-K0Z$|Gvo+5)&!1QEMqPkoir3RUm7f_LlqSYp zx|_07r_;^8`Qw##H}$!)XNu+txN}6XDzG)FY1DKX>Fe2dZ0CsJoxtQ3S?1pnFHj(@ zvGbINV$jE@2FDGqr4*?hp21M_`@6nIvfAMdXU@#*W@pQpd1mRi&uT~Ww#(a87=YK7 z3b8yav2tD*0KSwAyk7Upl`9gx$6md9_3Kxa-TeHmQE$t3pMGjI8#GLpwKZyGNEi6L zqSs=JFTNZ{txZl&w*PUEe}ek<%Foa4 z-Mc4iUDngn^T6WX-MeQEdal2|yR-PY<-C~e?Cjj!wPCAcH>aI_@Ic|P!Kxt9@b~?D z?PHB)86?_Hb{O*{I3m?r71|im7?ym0&tF4m8s^M$VjFZDhx+4kvY+oni;2QG)`f0K_+j{BeVJ!xuy>2X8%?8{uoTW+lJzR2@= z@ArGwb$=>CLq#u1Z@&4az~W3=vC_l`1r|j+V|2uR|E+6vT6p=T(aaw3E$?N!|Gv4o z*=lazq7^lE{Xr&Ai!A4#U#`KWy6w;D{eQTHcHX;pZ?1JYA3uNk=19Hi+EcwAf2^pl z|1bal$MKKzV$#!}xA98XeVRP~Maiyn=gv)>I5Ed8+Gw8TzNb+;>oT1~oezI*Uz@$= z*n)|Cm+l|kSIucQ`RS^MMqIsd%>pj`juL8{Z*nUfG_Y%U^6mEN+lCF68}$qJFW}8e zWLc2E>it_KXMuc%HGAIgOKUnId}Ma&TM>ojPwKhrPk$^v!2MB3cfSJYh+Ct5XD;X4 z%(b4|TzBLD+P|sOCNpt_uF910vvs(cGE>qxY3tURt5%g17gyceqtZ52@8V>)C0W~d zoxO6+=9Uhx*J;(j5}!`7-D=n$kKvg>Z%^2?ol-$9F9BzV}s zw}tQjJoo(!pJn&|zAL}H%-35*Xk)|~&`}}l0yLf!Sg^6N)%`pj-)Fz2`pw4Ud3(QJ ztFc>uF+-vad`weaeUgo_2-iakJpqmhd$vxkEWQ4E`Ana;d-oQ%wOLhHi5WdL&-$dd zR7YoNg6$#AW(78eXUqkhN*;l;CYgP#kU6mSa^W=n_S)YuJdc$+;sdX26Izy-pmgS) z?ruvbz9s7t6zBXrn7{G1c@xh8K2h)2Mn;lti2~hA8CH2k-FRDeg6XdJ_a#*l`pkMA z*QT936T;B`z(g;Hr-x1Jk55QwYV*O9`3tvQTYB|b_ zqQ`sx*R}0dR#sc0);cZha8X(ja5rh=pWFNY&c6S?{?Etbfr3n*zP)<&YE9Vcqe+Gm zJpFdRG%js8ckZ10zYp!l`{nQNsoWf+=f59XL(8kIKdx?D^?R*3e8-|8*1D(rXX4XFK9vLoPt7k^q3!;t_1F$q=Xncmx0>V$Ky z5vV)&p#NckegoG5_7dNnKW{k*+&{cw_cH(IQ93tk?7Rh{HC{CuZS$P}{sz1J3yEXQ z4XLR%WVYqrys2>3Ep87$e?yWBEcc{T8qLp#+sdrn-w{J zT%O;?(8f4zn%P;V_Vb>*FZXm}2R%mGG)Z>pI7VQ+@SDf^*p7D>agY5wWPd&Tmt9QomF=SfNL_H#UZKE?K;>@ZSlJy7RVA&joki7iDt@xYfcO z!8ZG@)$PoJWkxHnExX2j-+x**yO~MVz8k`2ciJBx{-IK4+<5wNQbVK6hwoYv#x?tD z-$n^=eP#H|FzwScmA0oLtK7cKF0hEI^GuL;La(Zt}(sC9B4}QH~Ki{_6Z2IY^pMS1c^zLr?eP0!!6QG5~b~QgXgssla z$r0&vX>M)?-~70!=lH1(-l_d^=}9w$4s$g074N%n{kr>QlUEMUO013_J9ci4<>lMa z;XL7GWo3D{w!HjyJD(1xIS}nElqlKJV7Fi$7!1Nmc=Po+_~*v#ohRO zaZ~@jxUXeyGxW-S7=U4)AA38mWeB^cYokI!Baoe zRqb@D$B)fRR&JDgSlRgg;KQ^AsRpS7{f|n*GsF4+Tg&Vg{vCbu{x|3S_tvE^5)Hb3 z!bk1G-Mij_?-@kQ^4@6VYd$JED#6C^sYthzES>>;m%J9rf+bFfpmTzkO(zln_O!_n#p~(h z-|wqa*RS$_j=>=Vo>ie0zu#`pHH$WyX(E+xRrlxp`N)>jPqn6=+O=y}iIwj3)2A!r z&7wCu1UxM={ZV7st{nbrD>w7{1KHDN?zPPC>05j1s*lOezu)FF)l5D;m+b)i48DLv z*;7uYFr3V}wm0|o>zy$&2b3n?wYk`1cYXSIegS`#B4gMFkC25@A#3$+Z<(8Nz3i6SwiNZ7rJa}W z-#zkiw(q8iPg3ru{JpL6Zkx`|BhyrOp30h*GgI%?q|h6l6BIZWedpu(_2=IX5ueEn zE~eLhSAKf3aK+<;514k{w|qX&X_6a*sl${-T+{AvT;LQjv1!WPeEpD5qU;|IEG*}{ z=rn8Fr3K7C-0}|l&XzLE@B3UKWL8~h^pdsX$?hdi6PIXM?Y{oxG@HUDm)>n@iuH*m zQl-1^T1Nl&=ip#^vb5;-bF*8n`Egr!E_k~%_(^{5&QLE8Q>U|Y`Ybu4nBDyQ>ddoglTR+W{IbUG{+h_m8MB^!{yBH<+?OT0Hf;)0n`|k=xAkJQi-L^mdy=L+9jsFtYP1q=Y z==H_Wt~<_$co_m0WUX{cd!ono*o}=jNK?+UEbz*jIcdJRzAeoYWm;hulOsQuU&)1V(wCpFREEn>QXRZ&)@e zET4HbtJSe^)jZDI^BVfX7#KEB;$&(_h+AFxxkkv-Lxn3We76KoawB)w9;KPlYGqx` z6YosFy)pUts?gOHHgZ-gCZB#PD=Vubmi_Y5(u`l{-`(B4HEM0p$`H`;ZF?3kUc7y~ zxeQ-;SXkO#+x_?B<3QkCiqY4qy(d$QW}mg1yKc!67E>PZ0q+8H4=mJ6O4}T{`YNd6 zT&=ezNl-`b!=afQ9_&!ql(pi7si~=>L`Ry^6Mjc~2kQgdi}#5-scA3F+<7?h-mb6h zmj8YQc~0$Q*_nU;&$@M~dFDTAzNMZ{Qm(kM;Pc;E3pnih&p+FEkXzvNL_w+Ec@IC= zzbI3``;L#n_&{7k{rSp`8DDOC-(zPhKH9TaAg=htU6nN~4$GaaCe4}`&E0%ZprQ6- zQl%&7oBR0-GP^Hogsd*EyePTAw&eW9c@Y+F>=_=-_7Be2ayT*+RY?CLu6_wQf5@OOFX^Xvar#>U2ed)RRP`Fy)t zD-o`%*ZEl%^|~n+JqF!tFT%yyB*4KEw_e;d@7?Ryv+e8mUCk=BnyYcEbCPc0VV{tE zg~=ydoEADLXlQ8#X^6ZmiCTYMxqQRctzVBx=f8RNO370wbo%03)=df*7A8bTgEmYy zFnnmRS}~8i`1`i^t)CfI7wwg_5AgE}(QabMnKRWok&A(Y$*A&~ret={6`wBa=G*?? z&5zIC&uq$b>`Tq`ljWbv1=S|6)Y8>e>zHXW_f+mB)-O4`zWQXhoobM7ICb}fj#O>q z`TeX7Yz8iiS)K1loGDEf;!74F^oRTeJJ-@vqi`OKMW zU%L+NBd3f~_ivQcRf3=FT_#Rd{Cj;(0chz(1x1m=-E4WZ0BTY z+J3Lun`0A@gJMX+Ln|(IzN@vy@`!?+-*TgQay0(6I>AMB? zCsscYje3@oCeUy+$?;zFwE91f<^7fy-`i8^we-^S&nKT2UAZGv`acS^5TW?F-yDmD z0U8seuV263eu|T!;bh99gtY8z?XI$}qe-*Rw*A?2?_S*e^UH%)UV2$#AQ7S=a^m*m zqMdg0`KQibAG^Ek_O@IGm&lv)Y3F)Qr2I-Tn(3hup%Z2zwe@Dsin+@obj+lBA2jbf z|Lcxyp272OJ|>RFTlazZy(@L z3hc{2vCMZqlZgNe!v%&^S69oT;wxFE4mvZpl$DoXDzSIiA2DZfd(4-TDfQa+rsk}L z4g8FGr+!a&_4s2<+s71Pr^P2Z;xsmidA107ceDOFu)<)K_NT4)c|ZP4 z+POzh<{I;j&v8@sy;vr|;wZqn%iQo%PyU==$9!hYTxjgK{POkJr_+BPWS3tMmHfqh z^G%x??fV;(+wbPZZ%Al#S{ShWb0#skkkLk{|U_AG7w`S9rI)j=zhHcAvd))DIt zTfKJGDx;Y`K`TWnt6wxS_x>}S=@YfK?DRBUh6Xjcl)ZcFe{Zk1uKcv*^2;|bUi`TG zzOH@M>0UQw-_xbLSY`OO@7w39HhE>ps%zK6)?fdqw7!NV!rfFW}1Dr?)Tg6i!Z+T^z<|% zgRT_AY=t0G)2|mZF1){PB++QYYH#k+Uc zUd{SD{c2&E&B5pOALrUse|s}wp*=gFOh$ILwytid)>IMKK#|rI z{@q#p{7I4Jtcr$H#{$#Tita86TIr$k==0B`M~^ODx)gi_#Qmg=61~Svv#*^<*>rHN z(bJ-x5jxuDVA>Y_nR4^vu0^LANK_aXS)8idAFm*A;HZA0 zf`G)IyRYB8VNo=2>4}`W`PSsOTc)LLj7Zw}El z9=6|Re8h0=*|W!%`D#+REDh}Pf9#{TKg+i6JLsdLwpf6xLHp^cS1FE}0&gCCt^Qou za`b3tiIsGma*bX5Ib)}tK6<4duW!BfvQcGgKKT6f>*rs;e_tJ9+(=aNmEgluINEPegr z#e)J18#(^oeAo0+q0S}Sw~L!{UVi;`|KGRyo7Wn}*L-w+@>X^7$yu|cR$tB98Z})v zdRyx0X$R$md@o(g%Jy8bWY3tEIec1;oO;d0;Y98&Xgmw5M4 zqbH274>U4Y?ftiGcAl25t}4f)7Z(>V_n*(l)?EDjT8D_H;nGDn4{P_5I z%hWct7w_J&F>H)jbN%(#D%cpuvaN`;R8QeDmf>fyG1*7Sn@H^Lhg`wt%jH zx{$PS26&C_-XD*;7u($VI;-HpfyT}0>57Uz%Z=Up<=(!1%ge$vb?VfNQ;lJ(_ZB>4 znt$GXzvE4f3^^v>%X-tbC3uu7g*jM~HdcH%>{wX%vHJbq=U=PXPe*HrtXjKvYt&k| z#T(bI%{@I$x7qtN=s?T4*5!G3cZrJbnXGa$ZS#JSGcFzttU7k{=g*C{o^x|Evr?eN zQ4Z-W-jBa_>^^lj@=m5{B>U|T%{5CyBadk=o+ILHXJUUM!(^Tf=+dwb7bUaVYeTf& zmi?Zl8=bfRZ&}Ep9m&V}rk`FKwpvxF^I*b-mnDA7g|9M|m6UARw(Z#C!mUxf)e3_C zH>z?TH2!@4On7O_!2}28yMg=q&p*HX`m0oL%i)(dwq{>w5VvDrdfj-&m zZ?d${YX5xtCnz#==H{L^%AH3m4+og|ZoVlvWx`DT(?WAS7Jm8VqSR=%c;38u+qP}1 z{QPWf7c(9qDB z7#Y6y&0N>--i?imdskr5bZ~)>nsE0~rbY)9Aw_>y&6vo@n->?mf32!bPJXJ~{(We-PuVT!uM@DT-^nmQ?9%=Bi!=A0Oi9{&Gi|fwZnYY_ zc%_L2J7b)v~B;qvm((6-FWGag3#5Y3$Jn<%V(w07dYgRQSX=lZW*>+0*? z>XaB9e7Rk|Zb#Blt}ipbo>ZSd$FkT>Z@PZe77e-n-+$}&#;p&~;ApZac`@N`UVe6V zvVlZsXsC{u_wvhMzkmP!^(!k=V~Ez$01XwP&H#-m9x6pU|9p%F&1Jal4OE)A=AZp) zP;+--KnIhMtE;O}=aSvKcduX1zqS6bR>#bs9&W`w(=I5KdS&0v&R!Xn*l!@g^UV5u zc5W_cC}3M;$hnp?-|yG&-@7+KKQ6jhOKPQbyM*?^|WYd(904lUp3)ZU*f~UzI{5azyHst(-~~OI%3?dP8z<8 z*RNl{e}DY?>-Ik$G{3&So}HoBZSlnnDJiK7BIYYYZe6)Dvr_R2rAtOKEzTm-uH}2`L z^DbZ2e065OdH2yrAzDWh4CeTy8%Vr)@j_ys4lge+c+cUr>(@8m%$a@GEcezH?b}~C z6{c;~^*&)NUl(=zj*b7q84E9e<;$G<{A<aqfky81re~j=q-r#C&5j)v z@9*smTDfKO=FMx@<~}_&)oix!`s<6$Ozh_KS5}L4FWt3EO4lPeSh)EhXh+%c$FZ@o zZi_drU%!6QA|=p4-;7&IG>+Z7d$-r9ZJK_3-?4k==Gj)?-j*918+$S(NNeh%;-{?K zVxU=8VZ#*-2YC)Y+`;qsq*_bR$|+~l`1z9OS(UC@wk*x#*eU7!J&i&}szN7wB#rOn znXi(&oV9iB+O?p*6rAF<89euVNJXF{+CNKGgpRaZM~VJ z@%ciE(bnzTuV1;c;9>5GtImgSS5;NT=!ti|wEc3y+2i57ibtKtjvWJ?YN9kzW2Vm} zmCjke%FD~`e?FP)d~S}3)LGDRDD(fmNjEh$-MV$Ft*vd{{`zAsr%wuV@G-2}{r}(p zxpuWyS~dk%$uHJ#xpksX_P_S@)6@0-9_^8oTNu!>=%CTep2H7+{H>eow>|CbEb+Js zM;$R|o(%KaIkh$$>;k?A#YRR(`ug@BeweT^;{MNb zpK`0Kv9VsW&rZ7BBmd<2Y7P6MCnq|E)$?{f6`SbsWqtks@EzPDU%Pg_+O^L|K7d)Z z$HX^0G<4y`t?&2$-*+`@>glH%t*^ekyxi%sXwf1kz3I_w!|28@4o+6FU;|binC$Uy&sdkIL@Yh29*L?SG6Xoa5e>Ki1?@(OZD1) zzf=7A*;(gxao-I5*M=4Ej9GlK;>iiY*=MKus7>7PvBIWANmZ;{TU*;whR-T@Q-n@! zZSBX3IVV$;_VdoYG*M-y*V2GJ=aM$QDA{#(wz;{9Ny_obi)LgQNQA7uYBrlUH$s2U zheHXi*%=utR(Z!6=(5VqRd0AOS7HnH;j`zLKG7;cmJN(df?%YM2jMh3W6y*XP*MGKZ z@9%fJFEX<*fIhz%YYTT%FxtNIx5W$-PNsmj z2MBe#$ndF4Kbv|oC3<^a?ZZ~_Em65j6CD;NtPFWoVDY7@HaPh5?)Uq;_eA%)eLfxk z@6%cH`+puZ^NVn``Yq>XVFDds-)1jaU?DTn9l@&`*z!(PbT~N`tsZT zSP-N4yujjxbLjcVhZ+cdlNY`Z++Wd;N{&6SV&vtxG>7S=P?| zjHOqrDV^oR+QxTJnhrOeSZld;Lz_ZX*jg|5#TUPQD--KZ-5Bxb-^0tCO&@ot%-qwh z^51@G(9XQOyRKckR$yVnF1jrBA#?Zfq!kh;O~m)bq|Tqrqg-5Z?BTlBSkA&jiG_C_ zYZ$E0D)@a<|JVmJbMyWG|NUOE<8%GL=amgFxmZKv_IWI~W)sNC$=PxYC z!y|SUsd8o7{eH9gg{1fDtD7Qp)?e@T3$p+B?=5@G!I7)yAM* z<@t+}s}nnxZ!-FC?O1u#f#JaGf7iD=^~JsCYGqQ;6qyzlGUfYMLq@iF-uG(1$L@`b zkBaI#=ALtBN7?5z|NQrYd;du^$Ubn&ejU!RVArl$XVboa`=*q>ZtK?4(3@KOy6bm5 z{?Jw`9iulrM$cS=r);;ZD+g%x$JVI5Syxw?->)hD|L-qTqrz0L(2$TDIotN_+h_mp zV}ElpvsCZ1f4|?~-;#Ox%gf74gECcwA~&a<<#3v1Igejx&yj;&&3&nT&mKLSqWv}e z(faFuvYQX~)E}EJ@aymNSi6a9&#YdxO3Cw5k>KW=G8`;jU0r9=HoGXDY%^qJ5OrVt zKR++-#m7Ay3-tBtmo8dl`TEt`$j!%ImMjupsg^c5V}Hils<(lk13MbhcCtN{2VH(q zV;8^t^1{i7=G5IgptU(dxif{0scYFXrCD)HuAi3ad$B5%l|3mY=R~Ei07njkQN!km zCtlrQvlltQ?|5v=&)~YKDbY)M-IN0atfZ8#utYGRO_-EB3(08ZmLf{ z`J`y)#TmP^&7w@!hp!Bnuu;NZBBW}sQB}YWL#FO_cPua#cT56ZjGS3%M6YUj{B}zHife=t#@ExaNt5<6Q+d<5KmTX-rxc;61Fz3p|C_n~nf7#TN2Y*Tw;K+6 ztdB^X9^S@#nfLAH+p|s2rsr8CuRLLR#6jiLsi&3m+2U%yUcGebl54lv*%^k57cF9H zVDZq8w{zEt;|Z9Z-%(f+E}~QL?e6AX<|P~WAJl)2m0NU?f6+yI_r>*HZt<@2=2{P5 zynOlc-Me=$UtY{GaqpMQ&B&hi}2 z&F2{=e5{c4b&e}P&-{RW|Ka&B&pAlTz3H22Gvh3?{fVd3&E&-89-er(|8)CohEhjB(1`@Y!-TBC+*w!KKK5*UoZXZ zyW}?Jnn_PS`R8@~|6LUylN$KH{#rbfM|gqg0`9#mv(Kh&WSiEiz_I-DNu@|;O^Kj} z9QR_TU1?>N&ns)Q;@tz=4?owCSuQi>NZY~Z@e*1qn-hV%yv@ye^OYPmiKhN#u=d|3saA84!hFs;7 ziMMXuI(5oxuHW~)?`z+8oxUWUZaVMsoXLKZrGD{9FaFu4$GPeLQh&Rb_ctW&Xyj2? zd2vN_)Q*J#m*n>;q|2^`3H|{?rt`m;d!n?(CJsX^@B$CG)=}F z0o}8^%>_N3bOYNJ-+Zk8ar`Im#I|kQwx!Rny_RBh^zp~5tHbyIdbOH?K_DZ)zWcN& z^A1KHsk6^6fk4pKC|R!70H*U z#Y#~Rm+tjACiY7_Zcp-s$yM_YJP-f5RZ&+~SLVg!m@l8xm_%+=%D&uEdwbjWrh^s@ z><^e5+ z2-n_w6-Fm-?<%c5x7slHr~eGLjXRPHbJuKBib%{dvYfk<;4upNm)sZ35GK}k9NDhee2o4(tY&))@<=r2bde?&68VvamDr5+1b0lR&Bih zo}q)W#C`E^?mOvU4m|ZWUY=tXvdktvqqY z%gD8iw;l8;a&zYR`Db4ByNCIAqvB3v9A(xK)aK2c<^MVUnfrg;<94Ygk_XvR z&lzRkdG+?&rQ?}w&5A;ut5&U2n&@F66St>gV}uSLTQh@5|M4j&m$f?iG!z&}H0i5f zi~o~YkW>6%z1`musp-+zFKybhGt%$!yZL{XEZMg?PBzegyYKs#FAI0yjdyYIT##9n zAiw^^?{n{VJeF+O>gpPLam9g$7VHV<(j|NMoqGQN%KPn%E{r7?U)*Ej7OQ<66kW-t zz@W<>HK|i2C80UVxh{Cp$tQ+0g&I=q+NXLK<{REIx^5Ak8B+Ai;>esmpUpF7J#%Ga zDm>ht|K`RRO$-j}!%jf^g_?T258Y(*b?6ucl=gytW zu&yHJ$EVZ&%qXdtDOVIVPU_UzB8cVe_FZ030_UA1DxhTCtQ z+0uA_v8WzgFz2*xnbpf#Qbx;r4<7jbThwUgruF)NzOFxBw10+x#AQhb<`oIWzn{4$ zyvR&fDT-0}AwTz>Fay&8`OYV&ztv1%_M9<7dE&9xyDSbHN*#RN+SeCY7s>O?YsWjM z6VJ<;&s6*^t@!)(UPeij-)!HrHEx`bpPT>vv-LpsJ3I3ywslOm+~?ma?K+uw$%I$s zL&YAO(qxs%nlft&a&wLU{3}u`{`d3qA(unn=f2;-kZ_c1anQ-N>(Zjv>RwzS$l&S9 zmXIM)TybuBh*qlzM|SJ1mr}a!-ti}13%V`N|M>HN>AyeL43Z4e2O=BdpPAP!Te&iF zab!Vm*nF0iQL`qd%ZRbx_@tNR>Dja_lVQ;+t#b)a?986I?I`Ns;}6#c@1*8kTzoO(fkMFhdwHVD*ng4(P#TSPUpEc9Hzx`zW z@z2)t`qdu^FlrbCPvd{eeMjx1XXY7)x7$3P1Ztf4RFr7(#%rmD$vcI)&z4<26yn7Zz&2sm z-*0p4e_bwONZ5Rnt5s=rN76x|IJNWfvE)f4%-$j>C0v{gco8xeu^q^ts*U z(tl$b?6@N(NsWP_d1BnoPlp~I<(Yr}`RAVzYqnaRjnNa=vSVaubhvQs+OedKuU@~t zn16x6b=ER*-KZmJn;(DNan$I-WS-Ks+FDwlDr}5qu354~Wu{MAdHHM~H4X~IQSVD8iF*rSV}b1H*eoA&buddv$f}?^G}P;rfrVVOE-{MabVrz#g9SvG4=9Y zWO)<4N8iNQg@bdidp+~}HtpR#AzG{oE{lYE)5_xS|J*Zw0^gg=-GArE@(5JgmA^0& zlH7aq^ohO94E^lq=Ce2KX$qgwF2}@hV-stLR>Uq5ZKY>cmo6KBXb!2$e5@_v^iR)j zbt5Z-W?EN$pM2~bf9}gH7gfd1vsiE^+}*DK{+r{5j#)EJYbV;Ba?ahA9Nakl-yznN z1IxG0-?V&lboe&2spc2se%T$XJ&|^hDcF@YHZ=A6>#up+r5TK7a`-a8vgbNbZm~yK zS65Y4RfdoK<%$3eo61iq8X`;{9Y^mR?M{`Iy;Wkxl(2I3Z!HFcnP=wBlbe5jy6@-3 zX2DP1dxp>Fep8_T`raXJvEF@^N9Vto>d3J1(w?GOIa2q}et-Sv=*vAXe`w6>tShsc z>-=b@+v1PS{B{xhYAQWFPkwrOI@c^(N37Utu6)gh#)M?YwW^ZC^cIp^0Z`nxq|2GaiT~>vd!xAw#G4VFv&3fxc)G_bB_cg!{U=G*2(NGH@~r$x#9Ekg}bF0*13FO zc<^p_;xQf#efFtY4}xyKRVfWOfiy_`d&DR}ia3!^u>kK&FmAnNv;fEZMy>C`>c`^xLrA`)~gb zyz3r6=TfYTj##?U%r$XcE{nEpGh>ir*uKW+(v^_8Crj?u|3BVu7qu_vrqLu7as9YA zpMUho(Z-MC><|F34I&omDejwS=C-t+eV|I9MYes*T2vQXy*kyVQp zDNXef?R5j4Sad~b^Qu){=bvxiw$04koSmsL^YSvysb1@^cSkk7{94t2{BVj9b0dQk zTZ^0SqOjF!lUJ@@{d#8lyo(to*5&VN-tBy@G||JrVuIin22-JQL5ql+Hymq4VA{$1SxqQJmyw{Dnz(B%A zzFU()=cl&_|K%-ebJ-f^c|7rG6yM{gCBf4a$ImdmFTJm2_xrZlc}xreE7`c3+PS4q zY5#iZ|L{X%#g~ivb@ma0g(pOe+hRHe*qR+b9GV#3cOg?sgF%~RztEZR#v=(FkvfwU zv@&i@e&6IWYX$f9t87`Wj)I5JJ}@Zix18#=w8lO@Gpx%+>6EYQ8YtqjS7=bYE1R&KVJOnOD2QWT)xth3}Z>-2H^#ZcU4XGP}vlr z6TL0RvDed5rq4m)$LIOt|DM;^xm{k$@GSn%qI)k(q(GMzT)BPw_O)xzcC5K6mwakt z^6@7{mERfK@)owoMup)*-MbfHm1|Y@=Eeu6-O>4buRi{$ z6S-;0(xpoaxOZjy#m35Raj13O+y1g}e%W*VoQuEy8a9|Tm0$FZ z>y9>&F&MR-re*djIx8{yh#gh{gH*GQ!>uxP8TN=d4;KNp2 zdi2$_0B^M!jM_OjH?fN99DiJRC2Y1rM}^J5=l0tFKHG1#n#*~B`NFpB>*pnS+WeNE z=Gz~tHTCAQ+x>RCf)oTo!tdvqNbTOe`)u0h50!$C=g3-@sZ2g8oxdkgYbqBD(-WuC zl9DZ3wt$YXzq%^)_xJbZR&!Svnn+#AGmx0$m!6xeTl64fR+@ptiiuqpGhFtlZ~pL#oLBMOw15Bo=bv@s_WYQcK2K7o zNUFC@p<}K!`=k;t?@CkC>`zl?s-I~5$mi);WD?!GTKnpQHf4R;g_BJz6h2L_d0w`@ z=a#Nw(J|xo$M&8+W-Q7z;q-d%J3)&Z*G4~FZr|F+_v4AMjM32^+i+;Jj9xAu?L{>fV zn0){J@4N5oI(J1Ya)zu7;TF?zm~H*)h}u-I;FVLtR=ZBVaQpUcemNV9z_hZ(d#3uR zHBU1B{p;73sI|u*D|#9UaD4drXWhDW&z_|I$?!Dc9I3Ody?->7er#jdvEl2vwc+(! zPp1~xe9pQQDsWi3$cOl?syT{mlq za^!)J!d$jNE2EVPTMq|L*>2Rb*uDSOTU~B(y_g*ZiP_oO{l^~{?F7|?ck||37N=EK zTFz3K;kSJC>eZZ07haa^-MiOs`Q{}{p8P-c@BM$1zy3kf6slj^eR&$!^`m=nPA7Pbf-hKE9lrkFrc~~z_8gnf7Zy4TbuL-HTwQ`^UG(;M z&+Y&J{1E-9Xs1wT%kjqxm#w$VpS|qhOPLi8<`P;ii<(rIcWjh6BvJW%*Y$aeE1sG9 zhc{~XruQ*T=b6c5=W-;*ZvFl`$z$OfEm?c3*s|SLuHCYKzy0z(j13nv_7ps9a$3m1 zurR>m@|TZ~kE;rue2}~fG&i$(^X4T>T+}9i1x?g5&ORF!6Enw0EjlV{)~s0<9!?Hg zsiUudepjK};)_WeRfIS@T|OEAJm2D^SZ^1vAW&d2C#PrK-o3T&@9njw9*laXQ0;Yti|CkLs)WTwf{w z|HtvoX=k-GH9<#9TMGAXTD@WgsNH`~B#Nceb7$HT@MzvRPT*@|M{m-C(Eo^N1lJSmFtht(bLu4di$-% z|6jj;ty;Z$^{Q2ylzjpXCLeydATL_uR_7(dD_LJJE%oM?u>fsj=5BS8>%V^OTHB#{ zH*cCpUdj5pcKf}mhlg5kZcb-!c3gjbcCMAxzsTKXZ+p$}c}!AiKIo8Mr#5-z?%lsv zE}wTP!^GFu_x842=X-HV6IZNQ@u6z3-t^TwcS@$_r>$RnF+;BQ%f_qDK9TA zjg5_Ub#?Wgu6Oq5BIT12ob9T+%fn~-n9s3RKbvxA|NmM(*2$-zGTc0_`La)T(b~#I z{cB8CFI)8N&`EAdf3^74A3q-6sj zi!WCE`0&s)`x*xeQ>)WNucZ<^ZvOuM)z!c6>@2>%CQ@0blTX$Pbb?!0nA+r%GJMBR zPFD9-3pS9LW0>rwHd)bg)8@^amo9bHni>`wdNj#!ZCH2TYb$GOZEfvXz3^*=j?6{B zfBgzzS-*R?^wnvM2hPp4p14QR-CaT8M~&Uuu;0z{e;9t6b8L**Q}_4RuV24F8{xXe zbe&Qk-~a#b`{%ho7cSa$DEQoQMHWXErpEaHzph)CzjM*cude<*&$jx)?JF53{`P-M zf`czJ^V9}Xmao1aO)A`0V<&IY{BHg||1)YCa=Bk5uU2Ly zm%X_lcx2L{>65%vKe*Z}THSxZ@uH!{;N!E$`A!@QSRbt07+1ouW8Ty90>gQhKdEn9ug^cVd^j;t`T6eqd|ed^RX@wkdcm6It(FTei= z9oD<)%H_+KZ{D=ru`TECudl1a*8ciD|NolnuLI*xRoML7y1q7d0~ep0(!`X{g`XUa zUwpHC`zA8S`m|h8tJVxr14j?F$#(PKZ#*tnyfbE^hl|q0lu(0ix5Yc3PK&mYJOAqH z>ged`R;R>$S3BHVH%dtMb2lGMT0ecZwScE{_m-o}KLj$Jnp;+{{HNDu`!UsyqFHH- zA5Wv`hihP!G}sYsrUEp-|y%9Fvm~b%g7~|b=9g> zLY*w1J_o!#$Y1xNnVFq$f{JASapuMbA2s3bqdaVfpMRct_Sw97^QKMfJ(+U&(a{SR z7C3fF{Qmy_`RAWGX1n+9ox5novSrK8+yAfexYQN3_TRhm{l7n*)?Xj7@leu67N*7; z^-u;E6{WAgQy&_fe<|WOd)oE87eAJ6X)0^B7T~UF{&g&(-a+}P{lCZd-`?Gg4hctBW6(JE*2d`K&?a?dC`2(i~*$Vy<5ge_xW; zTgw$`Rej_C(zKY!8AqVt=1SwyVnhUmg(U7Ex$f(&c`#_VY|P+c3=F5uUSIK=+S=Ow{~G^)>RB_F&{SVv zUw+#!0j{pD;068Q>+E*lwcOM4>C>lY&(gjWH@?i9$+LNBs-M=x;$J}AdZ9LEXpsCYo)>OXJheSM8T{x$onVPorv&5z6=T0(C5!b6Q zp6T-Mbzx@Ik(5&mSAOnNa?>eqM(UVPr_yexQT^*hOlHBDh5%@^=gq~0^J{(f#*G%z25yJ;h(BBJtp8=F60WMqc!6(XKbPz+S0(wF z{om*5$38v9lE0yv-C~}lphQsl#J_hopHt$SnZ#9`spz9NnXkS1@WTilvHs(iFJAok z`~Lqrk5EaiL)9-9wr6E!wKyqexzAj$7^!q{ai)FY#G2Mr$+Tw&&M@~?_Hj3HYv#X_ zK9m1szq_4p`h>~bD>px#7_-p_H2Lj*a>=}9oDFpid)9eA;TJskmnng%#QDkPPUAh& zu4?+R=MJcF{JIvcJ$v>_mqQz~uEu|oIbqs%xZu+gxdWU9LJz`sUVn9D#XA3UpLVbA zOn+1|_2iKcySm?$Gq?K~w(i^_@bAZQ`?~jgzu&9>UppOi>B+u-U)S>o9@J5q*l{*Z zn5FU9yC=IB+}F>~58oK^`TTrwE184y|Fi_eeDT?L<>D;1hHm8ttRFhRP3E1Df2=C$ zXOXXkOsCsz2A!Yxz1+*onH2aI^ty1B$~rg~sEP5vscHD3cQ9Or+kF|L=%}7a+c+hgadHr)A@hch67-eeSZk-;qQp17afpf$BXL}M|rRV=UcXjk{iuKV?s-=>QlIv5pXc4& z{GZ8z!9-N<1KVQj>(wTmdjtjlEPwDMTV0Xs0_()Nm2+<$y7$2}z2&9W%rhP9+8)oG zaoTk)+tw-<#o#}&vuYN^KAP0?pl8DDD`&5CKJS>V;%iu+Bf3*-zwX?VDKmVQOgZ}V ztVPVaPtRs+>%|mYG&%7!XuWxRU`h0p{|5g<9*D>;bL74__hQZT;MJ#HDNw+`>#{xE@Ng0+xjcpvQ>a#(SPZu<{u7nT%4zo;C8Gu^x*68y5|K4 zYQHlwyt&O@d2WH>jO@dzuk{K}l&mVuRNV7;rgcZ@5eH^LCb<`t3h9@+B6Qd~3N5O{ zynO{~P43Rte{Lsr_u%vUqTQj4Hx^yI&b7a4i=g)d34>ox%X@p1|IRZE?$5c~dYpN8 z*~1AhucWe^G!kOqyAxFH&A(bb)61!t@$%)`TFHjT415iD8SGD|i}&s`yp}K1eEPkC zL_>F}I4`e7idE^(Edp-ydq2&8V88YA$_OPky@t&{br zr7^_RwIA$h@ow{BydLW#@JV+2)8rK2?f%XoqOB?p!Y=)yU7>cLPMnvke3Gub>zTrn zPmS_to&`oN^W@aqe>hH55%^Y2X&wYA{_;p!P`b_InZDAGz_MO%yV`zYfjwznD6XFWzG5L-6!P-UFmO&DgOV@ z{$Aa0_Jsle4>q?4t;}l>IB?c7ZZ_iq_9g|kU-8fKLoH1m_1F(MRJ@tgqp$cz^6k#G z;Y^@-SSIr1xylrV(3$4asYma7{IJ_#oFnx@WTMx82cvq6gdUN?zf~(%8#Ae7-nw)B z`aF*c2A$vE&r8;6wjbs^kiI$9>uJp9nT!uk{Or1V@l}PEpMXo-IR*yh%AdWj44Wmy zojSJt`^W~e$lytwP#BX4<4h&ZFge{P%nQ~3y_{Ch=)ER|?xBJJ&AxQ}c7rlRZ9a$=h#7W*hqfp~{;l3<6{O?SD-k(wNf($hYpJp&OnfOdKk(zLN;l_>a$CLFV7e#Mape^%F z-qPso%NBNd7KR(UL>V4@yL~WgYtha-2SEpBY3u5q{r9m|Jnlo)UeGPfD??ZuRfIY> zr=Nd!XXj_@`#;Y`=>K6!Tg3J7!Kd91-`!2!n8(u-qp$p*milStl9X zCe2of_RNa&(^X-pnRr68eet|yyBVw)@?`T$-fybj{&{=%>7$3V5(DJ-gxBPs6JOhT z?Z_m?pJJO{XnD~iPqG`;=xcFWwhO3O87`TLR|yX9-7 zglJ?j=rB~8F)=Z)g=#+GbeML_%lrKFbN*-jmtQX1y*DfOYJv1zzvUrXu1bOj9F)%d z|6QM}Gwo1Xp=M*ZCiMtQBkC7&ff#PS3kzaUnyry!%+fG8wxDgBNxeTGLx! z7MnyAS5+}MFnn-PGHpJ{x`O4!`OG7Io5g>KdpHRNIxHz$xil_w-*ieau0{gUBh_uap-;Gxa#+MkpC-=%G=IeOGZ{Pp7%<=hz8LJa&I3J!k z%75J0P~uF1S$+CvxBqVQCL9;ru#iU~^1w6(1-+~=wdJhV=hhisy&_o3wfRtj!H1)k zQuFry{dT+f`MIfHOJ(@fCwed(czC#7lN)3Wi^`0@_2!-t5?<;Iwdp)4~Z}OPLxQjz5mn5lgvn z@7}*_(fKPs_8iGRxI@5cqePC`kE`p8I3Bj~TEwz8&-9oue=>uEuI%DO4i*OXO~*@r zHqDgrD>^F`?8>@+4bPiz*8)7||4tHLEiz&9_3PKgxmqXeQQVey_f^r(fLC1+I^TZ( z1rGz5n48D%C`kPF=BBQ$E)N^?QDe=nSMT4O&-7tyR-EWDK}B<_*Tn7WB3zr-&AXWK z=H<(uufprIjo!X|@#4Y9ij^T+GJL0>7EMuGb^Z11S+l;qzuzDFA<9s%#Xw!!{7~+8 z#{yS>oQ)BE z(Ra7y&JJ3sqpKULA+j)_L&dYzX=CZ@Yd1HiuaDb1YuQWN>Tf@4>{NvH-$$q(G-`E6%sC%(S++UOm3^T8M~l}fGzvxfPLR(+DX$|R`##Am1d zV}JF_Zqox}ZEpQ9xykvB_pJGp<)=@_KHaIZa?oBhSEayfSCb7S*!ksR_EwpG z`qp&t!93gQJ#qP&nJc}Pb{$RfXvvu6xBPO{+HGss_MS{(a`5!@G%G!tVl>l7&1`nA z(aZ^Z6vO)uCRoh%OIdI=YktKe&i><@%irJY>+1t=TR-%$AT)I9&761d-{)s$-rStd zU-b1z(#Kz4Ur+UV`t0oNnLf*6^!kq`nfO}I3yXEZNr6 z8tfr(M`OD9!$Rdd3bHa)^W7d>zu&XD=;^6NiJOe|Kl+ z8ZM@WsI_%J9=1RJXwiQ>dQU}RZm#a+lQBCA7Fta2TR7#)8~Ojg!Y%4#%<}$BI@`>D z=*`WF`Fos>O?S7L(Z-gM(J(vj*Q1H-)$I~zOj}gynG4Jv3o>Uh2F$&0!08h$IhF?twZ^;OMVsK#aVGJ(bye#tmoDZsQKi}5;`FQ+zpDgHfzo3;OT&+{5PObj_ zPStbM`t|ea7n+xKm){+>5$S@22`*T9Db5n5A?W}X3G1{NJ1z4_yrudlD4pJ!WrdYUd|klejr zj*)sh{ z=^ct|vp$4b3LRT7pk$WQaCLR!b-f!l7xwa>R%9#YJh9y~f_VYcf(9jS7IjIUwzuc3 zP2KyJ?2WVbe7AVTf8#qZj*8cp{QrA4EPM6Il6lK6GhB39@5{h&!Qt==v;8&S@0MFz zTX%PNhiZxTA2*(Tc7Dw#&QqS8EKD_a``513o#~?`(sk)lkX(Pe$hj1w(vlJl5w0hK zUQ2^!`lyL;-OMrTYMpiV*_sn~t6r~--j)L@i9i2*St50E_Vw3S!NcBP5BoHlozshmCA2TOPah=8$Q(_*6t{Cys=vL7|MzKn=H+Fq%?C3~UVW_aQJZ}DVTaq|vfZ)kuVy(EHcO|D;{{#_Q#BPwFS8$a8WxvP?30 z607uSw@O69!jy+|3)CEe@RP*Un=ib@t?Bb!jQ7d6my*?*ISy{pIEU{H;zCJyaxkUX|>cH*cP* z_q0EsrtgmwxzI|5HS074RSz@(%$)%c585RadfgbOk zeh()9Q_+E&nl#i7gr5+2J9*-X3u}e+v=%uSY~>Slw|G-_h(nR-C?i|_G3&Aet3p5A zNDh9Hn9k%lNu4ooj%BdRq=`;tISl8I&bMW_w{hS5i>)g03ZBNEQF@8X8I+t(IJhn8 zWJ;I%?zdk&>B7d{k3UqmzZ5nxaWA2L;O*JwC@yICw%Q_SGyyWsB^v zgu7PH*KYrIP~*7m=g$|M`9;OWy_W{*P48ymsjLQFsaIW91-jyW*WGso7BXC|IcBr3 zX7wI_%-6nn_wL{B_P;J3=C_|CYT4`d`NLuU<(D%%U5ak!Zue9XS{P7qJ+}O5P2d-w z2~*e2dAH!?lbpVH-k@qmyhr`f1GGY}X**8L|M9wjD<6~la zwv|qj;oWXG6SQMJa&ua%lcI>=)vT@d|9_spzCNCxftQyTv|=iJ->0b#3IcrXN0SPR zi#K1)`14f1{^o@X22XK+Ldl|j?*q5v8rQYvaJ@stgQ{yL$EM%7ZDBtdHD2-5IyQKDy-Fnon;mKU(g-Fz<5O z<74L;RCw6tD=aZtduNAX{Q2N$wZ}L2)y_WqP458X)?F&g1xqI^`sWikTl3XV?KP)e z6fZNicLeLEShaBKv~a|fRIF97SND|nw9@~na9*_|z>~B2paEYblZ~whm+;3%V9UT>A_xH=?*L%->tgsQ_ z*z@bv>bUjSQ;clC-zm0qH{1}RV>X+Y!Nm8uu;r|_e*1Y_i=VIBTOBTIRq}ZC`gIFm z+Qhrq2^d^BZF1J*`A$ryKmRe#&d^CpYQZ`_aoIS_CwxNJ_*yP{uzRj7vaeukc4T<)vFH1p%};(l|2nZl z_LF+@o$B{u=<2dvk+jWr$R-8)uV;+T;~0O9~4&#;tch`f>%Qq?YA{mnBha%S5Kl zJp6Ei%Fd#vr?zd|wrP`5!-a(@A%t%46^cNFkqO)b&sj?qN?VTr<{8ag{u8CWMGI$d8jcrUh?(S-C36y z#2&E!j8PZg#kh-mh8N?HsZ(ba-0%v#cXsysbLrtzw73o(Xx?SDPH)2GlYJXi<2t8k ze{Hdy!;!wjF**71#^mE+>*LNQ7=*2hk?eG-u$g!GA?Pd%@Df`|-^;hR<(^J4y19`P zyaMLM*Q%L5(@v%Y%r@*lt~~iy2}&1cuGTX#@5WSzX-{poV-Tt|%iWmhK}Ex-Bp z^!d4ymt9`B|F7=-OB*?vGG;L>U|ja}+cM4u7MJS9R&9Je3{?%GJJ-7g{&${K&U``S z>#?tKUD|B2N=!T&j~*m^6L6igfOo$8j<^1DiY^Nl9lo9S`%-(C-Nn7ti8mO3s-*9( zvi4wzVDM7#pLpfdov0gEF0s^2h)gZLS~~ab+!Fh>zb1Fxn&)r9%EOla@KD>bW%E)l z?XUd2{qtU{$v>AC3+ipZkYSNmaX?d~YGw{+^_uW^s}dPxms#7r>6jq+qNzIdd)!}D z@lqYF&(qg>tlhEjYnz9PQ;quZJUJe==7SFs!rN3lulViSvq$Fdv$fmrUCP>e^ypDl zRaF(wc~+&T-hba6vu@F%MIl;OZ{50e<;s&1tBEXPqM{4aW~YHx@GYL;pd;oi`iQB~ zK|$bx$=d6$&!%lYnv|KBSNH$#clUG~0p2YeZ_Uu~jL=^5ZNl9tW*3imT#78ded4K6 z1CQslP8S`%^faAo6E9EtHAU(F)SjhDwQY6iOKsDO-d+%b2b(8ZiFSSY@{UX20hS(Q91Szd6_M-z=Z>bG-+1#esW? z_lpzxbr&eI{g&UAGTr0XB=^dsjlXB#e-pi_<#mBYjoti^S?2#VMYudab?*<=5J}#3 z;5vtpNNJag4x=%HOyyb=spYq0Lt|w6-5$HT>hYy7IsPqgd-aL@9=FHyY^#qXfx1bK z0uKvztXOg4ZQ1RdZRYnXlHc9gsU5cF#@6icG7lX`0k-CYDMkx3UmB;Mb72|!yVRazR_H-gLR@ zS1#9eDqHh2u1*!c?5*WtmcsR6>0jg5;XW@WWZJ1M7f@T$>p|FH|X^`dx<}XeKh5s6sGwdjO_vYy4=&ftF zY`>6P>dNXWz`QRuG_>h(r?^4dW=%cwrhn!d^3S+?+#c_%{heZTbB?9!@9)eE8X|AJ zzdfGeqakwc=4Si&os)76B$yf*X4`5nkM#CFy(V(=q?3(P(>LE-yLPQmXUfqo(TpO2 zS6ehEpY-zfRu$^J{IXRW{_+zuAAZ&H$>Z{YH zPPLqSEAM*vgO> z86TG0|IIx7qCMt>_wullPmLHJe4N28K5g5UAD1(mL#*uk-x|(JYdb8)Anm$0=E1Bh zorY4@Hc<-si7M?Kk8_px8mVm-P~z$-ld_+$^xl9!k3}_{GqHhR;oI9g@1(Q3mj)bp zw`X$2-%@|2#PF46!B^fFOXdH&^{n??@3ye$T}Hf&4Ngt04$K!EdKBV|pPiX^>C%T) zp>Ni$TL(Hd{rtJiG!v;>JNZ}2JuPPw4EB6JXT3T7{JCYxHNRdiSNEGU!E33gsHo2~ zhevI<=Xxx?Gks5QVc)TZiCQx^-`)H-u>OGPgk4LN|L~tp`#eGNh1+65U)EX1>3)TU zA0Hj<{#&>IXp&&}QIFft&de0N;HniTT(e!XTG;K<;?sHhUbBzA`N!E?X-z|~h7`U)a88 zEVZY;V*DWPWweB`ML|pWC#QXf{>61m)uNR7Pl|FLUGzYyZ}wpgO_2r8k(?g)+Vbx( zd^l(QK4a^xqut`#Q@wV^_+2hho2=-0DaA;Vhpqc)P<;IVpU>wno~*Sr=wymf?zTn~ zfo|2xA0MKVe^$nDtJrmVt)8VmN1TJ@PM&%Ak+YfK?p43njoC5bWXdAV^{%e2a{bS5 zrq7Svo_BYSWwDD=U~=-~iOTLGT&|IkGefk#R@mt8{Sp)(AFm*gurb2p_O4yK9(~;5 zw9sLB16wmA=R)w^3kMSntaTk#gifXyt-hMI{q{wP8#$SlQZp`Gyy!S7MQbWo`(YDb z_U411pP!evD#4=Jzb}@7bud>+k=w>F~pV zl_6eBCoOx~*T>g<@WI!rR;NS_5hc$}d-v|$xzkdF>*|#&3nXIe>-XQZnQ-UF`u|a^ z!t)g+d+y%7D=RD8tS!8$E-p4!HcRN)_uq5h0|Xohj<7bn)%>`}eL~5$Qi({_f69*_EVw@G-P0yw`f&cbW6W8mE3OJJd-rHwwOf|u))s+_7Z~QwEqHTd zdKX`&)V5q{Wy>DNW0P-guJ_jvT%>IB#o1uWZv%g=sZ1Xvc!HKjWo(>a^45IzXE(u{ zh2OkxpE3%MoHh5`4jUci>?g8H*4Eb3bs~+9oUi`-^?I(^?LC#BySlrtuZjHps9S$g zikh-*MB@%Lqt_owQj%s z%?KUl-MOwuBmTeMnYAtde%)!^?Fr&{LJ#d&*o`z_~YYZet1 z^{m12B14n z^7GX_gEU0uS(ocg^!W1qJ7|CLVbOIfR(LE75D^t+WSD$XgoEX$*5^4({lZL7$K`$R z+Vd@Gca))7I?okuk)0D-DjA+PWX*r_yzFt8XIQzRXsdvpnC!Ld{535v3coe7GcbI6 z+q~4ydS!Gsp&)a-H^XKPh$cokgFK?rnE~cmJ_W$4ce4epXuix^` z%a*bItUM9ysUl=*YMN2(zOM6X*4tOFR;^gU0lFF{L`BGRY0$y|jj3M0fB%lv6VK{1 z&AlaiypNHgW@q(vmctn)@9yq4pXoDg+B7jy(NrVJu0=6=;_Zh$mtS7HcI{22FN$?? zR_7mo{+YH}GE@50y%eLFD=ZEsZJcrTSzlkDZS}W`z4yf9Yc}rPJNNkGg$FCX-z~rY z^78V%aqIn-OJDL3_C5Xk=J~p7w{Kf#Ut1HRm1-h&eNANWfm46?pbm-0?l)0F_el2hj0isuh!W#m*d?IW`>0O`vP^W zmN4EpAXprsDQ2NRk#&2?%B4$M%!|`}GgnSL{`&dHke@o$)zyrxZu;-C-TP!Bx98nW zu;*X8+Cyd1&(F`fTb*{_?MvG>QRU>rf-O;Re|~-*xQ*2-)6q=hsz7PgmIxgUhxT); zk0fn$Q98Lx&290=XS4JF{e545|Hh4uW39^eZdz0QW}ESz?Rx#{)vvqn>%zmYf9S72 z(6Vgf#*aTfJ~o=UX3ZKOrHMOY^sXcyeOVF~9{#(=Zi`FYdhxl>747*~CiwfG|MTFUbbee{%^qa+Vo`{BT_u(l$@073If z5p(^X7g*?sb^9&9y(Lrl)^t-TUuWmT-TM1(T)XBrNySk>-G82sijdy)*ZK9oXS*$) z`Qq>Ub{`LS#>CZEZ{5E?-)m`(ne-*Ik|pXBJu+s!d;QwE`{vD?JFCCvZH)rWuB*?l z2~rVC<^I~$-5ogh{w&k%x*vz-`6QeFeO+H4yZUNaNC;@})aK2T&!#=kR`wHZlIuVIu)t_057&iAooVmhz0-}}cH-$L z^ZPZzQ>QEq(iHjTGA|%Lety_$(4LbAd?%!OpRHUz?-yus;+q>AUAx6njU<;}mh5#i z72bQ0@qmBbr^%U@mo5CG(4_F|_wUVh_x4nN4w%d7b##i?QlU;49kJIXR$FGQUAtDk z<^v;F$h!Fbb>H6Hl&}4A@!sC*pEdh@)U0cNnK0zs*r0enXU{|*KBfi_m!dxvt~UD& zBzz=#4{kE@tGnH3+qi6D!0|l0263-tQ!RM-HZaXN_RIJ{k8xXz54-t)nKd2PO;ct) z-)O)d!Lk2Hfu+m*n_vGOcoMdARm4;el{tRtlTO|3dNbMI&a&{)kxx%gSK8dWv$ObX zm2LashXocMH>9Mb!q&xPnn-8UT?a0;N&M6%NH(8JlZ9y;<@OM^%LG`ooRi2 zeS53Fue$nb*|KFhyS%LC^075PefpHI-Ff}>^^u#?Ksze_*zAn?_wl&=;+`daeSHNM zF+r1dFKJVI!ScSl?w+FSiUYN`a&qSSrEFKP-B)4P8olumV?+L?2v=3rBDUl-D_`%W zlkQCa&6C0S_hPsF#Y8Edf}@Wc4JOZ1T$|OV{b*b6f}q~Av||Dr1fD5Gr%voGi4V6d z*%=d~C$6Wax#8xU@AvEL|NZ&dy!mbU`+IjUUv54$BggD^*4Aa0UpgoR#Kg?;TkfiK zab@uGbMtIp7wz=&_C9_3^yWwjkB2dO;*(FFVKewyv(G^xVPk~fa^uxas;a8LzrSa1 zcznFy{`Z^BHFokpD>as-gQiVtGc#X)e0;n;=Z;h_o9fXuF*`41ZTOxs4&7Bd zu5=^+dD4)I-zWNM&niS zq(8xGk4C>m{an)z@wrfxIn$oxa z`s=k}+OJNqGTdxx@ljhGpb_w|w!Yq8X!*W<`_|XK&3?c4yWFSG8eL9xaXMnomc4F^ zH}2p6f7|W6>K_l=FUGFC`s(K9^z_ToEKH8>?(O&AzkmC-_Wj=PMf(KJW}kihF@c4% zeM*Pbz8@B*^Sdrxw5y+gFhSz=`JY*yYLo5euV1|QFzCLCzJ2@lZOy*UXL+8Pq1UbX zQwAtIY>fC*SKp{q(j}xW^e3W6zMnf*FH&vt|Cam@RpM2<9tgC!C<(eR4w~Q3FK{-$ zvT>1-uI^ukxQ5FN_GhXmKi~K-QE#?lsrXMmL3hj3BHRyE9Tv~+limHT=*Ep36|b&n zcDe+`#pwxkf_6v9d8!Cy==eoPM;8|xPe1Lu{Bmk)DpxC0t6?r^R^#o~(m`*vlWXRScYA)?mn)Sc6Wzb!xOc_f zD=qm;*%&5zsEBpXwJP<}5D605TJiDG8|9;-#cv`^CtI%FU;p#x=dO@bzb`oN+ufcb#;^yj6rwEL*%-xq8O(u+$@9h-$UQgB#(PNZjW`h-}!V(dws{zN6~pZQ(s?OtHG^2)r+gf?Xp@MCe78##bRtLH#NpiU;%gQiIA@F2fm6sO{6Lr9y)EE z5Th{T$fDG4tA&^EKH8V^z2T%w{`wW$x8Hg^^ZMmrq0S0%U9Ar-h8AL4yZ?Uc*L>CX z(CtcL*B|E0+)eK;y!B|mw1D+v_~$%Pk*{YW^cmPDi*GrYccXy!mENYk&RT9Ucdafx zOqXD(s<144gf&N^bUCtHY;nyt$NtN5jD9le5S6WzNr?3s_bh|FBRt?ND=<-lB^OZ|gAFd|)^;i`2JH*i*DwWSYFK|mJcP}5>O3Cf$@j~i?3~Ned~oIZ^#NMpOd{eN7MBGtV2HzbAP$|&XdBb>UMMfJ$yHFH-D&H*C*~L3pa2q`t<1hRcZ5Qbu5D2M;REq zHraeW^IGI8#|J~#+;iowuS8t`&Rz7+De(V{589mvdDM2FWbezZ&Ua|wk&aYmzDj~ppE7L{4SquC_=G?GO ze}8+{_U+l*_S?Vx+a!B8qakPRzM99!n4I5Dp4s#HKqLRJ-{p*R*ng}!;JR|T#;fll zTW8La$^3qM_xAdi{f%#b=FVh!sG&E_OXV`d9fogvyj}kCK8Ufo$8>>bL-CsXN^Hhy z3npmZ$~4dYHA!jFU$fO6;mmf*d!qDKzc7&N-+lKTs2WQ#Vr@S7?%g}k!N-=foy9~& zHK(3Bb;@gFL`+ziSg+e$zw~|89!qz~`LDbhCC1TFYq#*A0vDTe(ngK>f5mrd{R|Dz z5o0ch)QQ*;aPi(de>GdyqIa5E(w_gaEo2xt7`FspIk@p(gqxsX1D692k0`Shx2qxJ zF5{V#jvcd|=_7H#HLzYU!7EU|_p9{bgkyrr>v!*9+8_`oEhUxk@{+f>tX}M{D_L8Q zB^l0IR%tUYM(@1&^=P%p2d77;iGTPk#Oaruy!EWv*|hH8HF^#6_LzGyZ)jwjm3BFx z?Bx0T(*4o@KK7Rjb!s$7KPYX8e`36JMfkCA$`Zyi9Da1%%G~N1eo6R)!@rl3B3tLH z{8ybE$Z&))it%5KfgVcx8B;hGNkd}gd@`@Cwz(v)0@uB-SxUF zyT#O{tAXRrKd*c08eLUF4{~hoIbGIekPi+y9oc zuG|*c+PWxi;fmtq+WQh`SlrhBQ%bRFS!1#)M0u~&H;(m&S*A9hIPR21zgu)z#N6~o z#fKH&A8y(1{pdIJzJvoxcWiko=@8f9~(B5GMuQ@VLeg(ZP~hzX3;P6U-ITK z%Pu&`bfvqM@0CVY(|NaD{{r3zJTaOy&)-?-0ZTybr_-$I zlW*NRt#RPEQ-!Rg-RVPzd~ZET51zU*&#(N3bemJ{)XXMz4#+I!rpAd~QbI%}Yss%kMH=V_IMIe(%D! zw|yA`8_c?_?62iZH6KhUn#`LYCw!K92iw}~9Vbl$(*GR(E!tlw>>RxQVxyi1>qD76 zN4lQA*7BaTpJjythn#OU;~SB$Un1`RD?O6YB5BOPAXh6=`>s*pZEQqZa%g5{JW)^v$kC-D0}ezXVwSJS4NB3 zBzV}0=k7dZBDSQGA-rx$`PqX`7OOg3A5CAjzvTYG-wJFOn3l)&@~+<`@ps`A2_Ck| zlUMsB?|d$|V)gD-Ceto5&KK;n_4ReOW@9|CuXe)n=VzX<%oj{DNcJ}1sQbUwCs}g- ztm(pU1p91%cJZ0#Hr>wKy~nd%f``pm=vd;bXA(`ehd#OnU%v3JQhAQ6<;9a#E%$%R z<=nNpR^EKjM`>N?E43b1snahSS_^C@1@ozYKbUC1;ibwT=EU<%OQMo})101MkSVPN ze~gws5#Uy2D~|Npcjc@h3-`l{Z#ct!C^R~rl*p9lPAC5G|BfSCJy1^ zGS+3CAg81iHC&Exlh9H4Mf{675->MA)eiCfqktzST-l?-@IB;_Ej#Es{lGjD9?eR8By&U1jUgKt= z=vZme{9iHm9#8pw+s4&8A0!piE*aSLKHX&U{$6#V)ai`o)&eHu7{2(L!bM`TNs32& zT-ugzj9K^0w}UTbvYbwf@Vq%i77ssVY!FB~W*NS+l3_!o@wGjLTw;ejosyN`+%j!^ zD!{Fn7GwCtZBwr_dtLKWf##D&phRcT%ep+z&#oY&q^QZwI`yf5;k<6X z!VHn(+=DA;&zRV3d+4O+zD0-6&ieO5=Dt_ZIRAvE*SVnLx z=X$*71;}|8*R^_C%M}ibuyH@Ul5_{;(>ae~mOguEB6j9#Lu-MS5nngoMgc$B0x9ma zJ&lu7mnre`286eF^BG>3z0=5Jta!l5!d24d7N@vu(mJ_0yEc9w)hQ?43>_%sXsQ3i(=iaQ*E6XI*uOu zwYJZ`fZd4a*{{Y{f#OOYdkdC^$?EGJr?U2&e>f~6?lk9E)4?922oA$=r*jwm!Xry8 zSX%|k6%HpHV+IMH+p23d=Z;fHu({!kLT)jqGgph&uF_GPEbs_q9Sak;;R)XS@1OtgPQ`!u#nKv8+F(aB<1)2{g7z9h{v`Fx+L diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=40ns_occ.png b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=40ns_occ.png deleted file mode 100644 index 49b3c63e5c973ab87aabfd14ca88efeeb463ad80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29838 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 JtaD0e0sz}=Ukm^M diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=4ns_occ.png b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=4ns_occ.png deleted file mode 100644 index bd2eb8a27dc138bb97d18f93d863a5cfeb363531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37734 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 q3dA "HR" or "PR" - } - - # dihedral-type AtomType1 AtomType2 AtomType3 AtomType4 - - write_once("Data Dihedrals By Type") { - @dihedral:CCCC @atom:CA @atom:CA @atom:CA @atom:CA - @dihedral:RCCR @atom:*R @atom:CA @atom:CA @atom:*R #"*R" <--> "HR" or "PR" - } - - # 3-body interactions in this example are listed by atomType and bondType - # The atomIDs involved are determined automatically. The forumula used is: - # - # Uangle(theta) = (k/2)*(theta-theta0)^2 - # (k in kcal/mol/rad^2, theta0 in degrees) - # - # The corresponding command is: - # - # angle_coeff angleType anglestylename k theta0 - - write_once("In Settings") { - angle_coeff @angle:Backbone harmonic 30.00 114 - angle_coeff @angle:Sidechain harmonic 30.00 123 - } - - - # 4-body interactions in this example are listed by atomType and bondType - # The atomIDs involved are determined automatically. The forumula used is: - # - # Udihedral(phi) = K * (1 + cos(n*phi - d)) - # - # The d parameter is in degrees, K is in kcal/mol/rad^2. - # - # The corresponding command is - # dihedral_coeff dihedralType dihedralstylename K n d w (ignore "w") - - write_once("In Settings") { - dihedral_coeff @dihedral:CCCC charmm -0.5 1 -180 0.0 - dihedral_coeff @dihedral:RCCR charmm -1.5 1 -180 0.0 - } # write_once("In Settings") - - - # LAMMPS supports a large number of force-field styles. We must select - # which ones we need. This information belongs in the "In Init" section. - # (Hybrid styles used for portability. These choices can be overridden later.) - - write_once("In Init") { - # -- Default styles for "2bead" -- - # (Hybrid force fields were not necessary but are used for portability.) - units real - atom_style full - bond_style hybrid harmonic - angle_style hybrid harmonic - dihedral_style hybrid charmm - pair_style hybrid lj/cut 11.0 - - # If charges are needed, (assuming biopolymers), try one of: - #dielectric 80.0 - #pair_style hybrid lj/cut/coul/debye 0.1 11.0 - # or (for short distances, below a couple nm) - #pair_style hybrid lj/charmm/coul/charmm/implicit 9.0 11.0 - - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 0.0 - } - - -} # 2beadFF - diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/monomers.lt b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/monomers.lt deleted file mode 100644 index 98aece5b8f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/monomers.lt +++ /dev/null @@ -1,86 +0,0 @@ -# In this example, we define two types of molecules: "H" and "P", -# both containing two atoms, whose ids (names) are "ca" and "r", -# and whose atom-types vary. -# -# "H" molecules: "P" molecules: -# -# @HR @PR -# | | -# @CA @CA -# -# Eventually, we will connect multiple "H" and "P" molecules -# together to form a polymer, as shown below: -# -# @HR @HR -# | | -# _@CA_ _@CA_ -# ... -.@CA-' `-@CA-' ` ... -# | | -# @PR @PR -# -# The "H" and "P" molecules both share the same type of -# backbone atom ("CA"), but have their own custom "r" -# sidechain atoms with different properties: -# The "HR" atoms belonging to "H" molecules are attracted to each other. -# The "PR" atoms in "P" molecules are not. - - - - - -import "forcefield.lt" # defines "2beadFF" - - - - - -# Define the "H" monomer type ("H" <--> "hydrophobic") - -H inherits 2beadFF { - # atom-id(name) mol-id atom-type charge x y z - write("Data Atoms") { - $atom:ca $mol:... @atom:CA 0.0 0.000 1.0000 0.0000000 - $atom:r $mol:... @atom:HR 0.0 0.000 4.4000 0.0000000 - } - - write("Data Bond List") { - $bond:cr $atom:ca $atom:r - } - - # This will look up the bond-parameters according to atom type. - # Use "Data Bonds" instead if you prefer to assign the bond type manually: - # write("Data Bonds") { - # $bond:cr @bond:Sidechain $atom:ca $atom:r - # } - -} - - - -# Define the "P" monomer type ("P" <--> "polar") - -P inherits 2beadFF { - - # atom-id(name) mol-id atom-type charge x y z - write("Data Atoms") { - $atom:ca $mol:... @atom:CA 0.0 0.000 1.0000 0.0000000 - $atom:r $mol:... @atom:PR 0.0 0.000 4.4000 0.0000000 - } - - write("Data Bond List") { - $bond:CR $atom:ca $atom:r - } - - # This will look up the bond-parameters according to atom type. - # Use "Data Bonds" instead if you prefer to assign the bond type manually: - # write("Data Bonds") { - # $bond:cr @bond:Sidechain $atom:ca $atom:r - # } - -} - - - -# Note: The "..." in "$mol:..." tells moltemplate that this molecule may -# be a part of a larger molecule, and (if so) to use the larger -# molecule's id number as it's own. diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt deleted file mode 100644 index 5be93322d8..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt +++ /dev/null @@ -1,64 +0,0 @@ - -import "monomers.lt" # This defines the monomer types named "H" and "P" - - - -Polymer { - - create_var {$mol} # optional:force all monomers to share the same molecule-ID - # (The "Data Atoms" in H and P must use "$mol:..." notation.) - - # This causes mon1,mon2,mon3,...,mon14 to share the same molecule counter - # because in the 2bead.lt file, the "..." in "$mol:..." preferentially looks - # for a counter of that type in a parent molecule or earlier ancestor. - - - # A polymer of alternating "H" and "P" monomers: - - mon1 = new P - mon2 = new P.rot(180.0, 1,0,0).move(3.2,0,0) - mon3 = new H.rot( 0.0, 1,0,0).move(6.4,0,0) - mon4 = new H.rot(180.0, 1,0,0).move(9.6,0,0) - mon5 = new H.rot( 0.0, 1,0,0).move(12.8,0,0) - mon6 = new H.rot(180.0, 1,0,0).move(16.0,0,0) - mon7 = new P.rot( 0.0, 1,0,0).move(19.2,0,0) - mon8 = new P.rot(180.0, 1,0,0).move(22.4,0,0) - mon9 = new P.rot( 0.0, 1,0,0).move(25.6,0,0) - mon10 = new H.rot(180.0, 1,0,0).move(28.8,0,0) - mon11 = new H.rot( 0.0, 1,0,0).move(32.0,0,0) - mon12 = new H.rot(180.0, 1,0,0).move(35.2,0,0) - mon13 = new P.rot( 0.0, 1,0,0).move(38.4,0,0) - mon14 = new P.rot(180.0, 1,0,0).move(41.6,0,0) - - - # Now, link the monomers together this way: - write("Data Bond List") { - $bond:backbone1 $atom:mon1/ca $atom:mon2/ca - $bond:backbone2 $atom:mon2/ca $atom:mon3/ca - $bond:backbone3 $atom:mon3/ca $atom:mon4/ca - $bond:backbone4 $atom:mon4/ca $atom:mon5/ca - $bond:backbone5 $atom:mon5/ca $atom:mon6/ca - $bond:backbone6 $atom:mon6/ca $atom:mon7/ca - $bond:backbone7 $atom:mon7/ca $atom:mon8/ca - $bond:backbone8 $atom:mon8/ca $atom:mon9/ca - $bond:backbone9 $atom:mon9/ca $atom:mon10/ca - $bond:backbone10 $atom:mon10/ca $atom:mon11/ca - $bond:backbone11 $atom:mon11/ca $atom:mon12/ca - $bond:backbone12 $atom:mon12/ca $atom:mon13/ca - $bond:backbone13 $atom:mon13/ca $atom:mon14/ca - } - - - # Use "Data Bonds" instead if you prefer to assign the bond types manually: - # write("Data Bonds") { - # $bond:backbone1 @bond:Backbone $atom:mon1/ca $atom:mon2/ca - # $bond:backbone2 @bond:Backbone $atom:mon2/ca $atom:mon3/ca - # : : : : - # } - -} # Polymer - - - -# Angle, dihedral and improper interactions between monomers will be generated -# automatically according to the instructions in the "force_field.lt" file. diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/system.lt deleted file mode 100644 index e3d8317aa0..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/system.lt +++ /dev/null @@ -1,36 +0,0 @@ -import "polymer.lt" - - -# Specify the periodic boundary conditions: -write_once("Data Boundary") { - 0 180.0 xlo xhi - 0 180.0 ylo yhi - 0 180.0 zlo zhi -} - - -# Create 27 polymers (=3x3x3) in a rectangular grid - -polymers = new Polymer [3].move(60.0, 0, 0) - [3].move(0, 60.0, 0) - [3].move(0, 0, 60.0) - - - - - - - - -# ----- everything below is optional: ----- -# Shift some of the polymers in the Z direction by a distance of 20.0 - -polymers[1][*][*].move(0,0,20) - -# We applied this move command to all the -# polymers in the middle slab (with constant X). -# More examples of applying the "move" command: - -polymers[*][1][*].move(20,0,0) -polymers[*][*][1].move(0,20,0) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/run.in.nvt b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/run.in.nvt deleted file mode 100644 index 35488d6590..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/run.in.nvt +++ /dev/null @@ -1,32 +0,0 @@ -# -- Init Section -- - -include system.in.init - -# -- Atom Definition Section -- - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run Section -- - - -timestep 2.0 -dump 1 all custom 2500 traj_nvt.lammpstrj id mol type x y z ix iy iz - -# To use Langevin dynamics in LAMMPS you need both "fix langevin" and "fix nve". -# (See http://lammps.sandia.gov/doc/fix_langevin.html for details.) - -fix fxlan all langevin 300.0 300.0 5000.0 48279 -fix fxnve all nve - - -thermo_style custom step temp pe etotal press vol epair ebond eangle edihed -thermo 2500 # time interval for printing out "thermo" data - -run 20000000 - -write_data system_after_nvt.data - diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README.TXT deleted file mode 100644 index 15638c1536..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README.TXT +++ /dev/null @@ -1,19 +0,0 @@ -This is an example of how to build a polymer out of randomly-chosen monomers. -In this case, monomers will be chosen at random from two types -(denoted "2bead" and "3bead", although you can have as many types as you like). -You can also constrain the end-caps to be a particular type (eg "3bead"). - -The properties of the bonds connecting monomers (ie length, rigidity) will -be automatically determined, depending on the type of monomers at that location -in the polymer. The same is true for the 3-body angle, and 4-body dihedral -interactions. - - -Instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step2) -README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_run.sh b/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_run.sh deleted file mode 100755 index 9343d763f7..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_run.sh +++ /dev/null @@ -1,14 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The "run.in.nvt" file is a LAMMPS input script containing -# references to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_setup.sh b/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_setup.sh deleted file mode 100755 index acc5fbbaad..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_setup.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/2bead.jpg b/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/2bead.jpg deleted file mode 100644 index f67da797f1f677383bad0885cc112812ddcbc182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2713 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 y=BOY4e-i*2tM7UM diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=700ps.jpg b/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=700ps.jpg deleted file mode 100644 index 8f1c6f99bf5291386fd31dd53c8de62db5aa0f9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46460 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 z 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 Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/polymer_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/polymer_LR.jpg deleted file mode 100644 index 5529fc74b9006e8f3e1e896a64f671c2ff902f40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5568 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 z zD|4orHrJcB{|sVw%l~c+{j}t~_nEDVddsvpKb&Mwn))7VKy(ZY1v-gybCjXChCnl^|;k{(Vjz?}GhWDB8|FvA3vO{P~%b^v$ zIUkCGF1fMa2z%*vH0Rp=ZMkJ9CcS%;$~n(d(@{B7fw`%0;{4=$d)1Eb%+lm8^7_6u z<{>8o|AIBsnijI!ygQes@G8e)Yr8_t6t1!bGxJ)dKH66WS|w!OT&FN)!33|VKa;n5 zm~7j(+4tIaZr^=bOO7=PKNHuC2sjZH*x(?ev078&JlB(Jo4ziV=~&eH@MfTaL%TXx zM#_^3hWECbP0RVVRXViq+SzSVVlsuiPgZ^}sClR9veJcBWVy;)mdBE&4UaBPJKb~2 z>SN5Q&eYAW#{&F!kwMDqiypNS?kg&ZTUr ziCoyDDH8&>+n!)$;rZNPJn#9d`Kh9og^~$n=hKe}eo+m+HLFOm_haJ};kxbC)#g9+ zmS47N%A2;ubF$!0qi4Q}T)BQLc5h+%Szw*(VRyIv*1lZ*ovQBzuZz4sCwnUDoLA>p zwZ&4dug@)enKpChjdkAJPr7b3l&Q^a_nsXj9eG^BdbWz(kKfl$&ImtiClOO>@VQq# zF=T?5|8(gNxdor!&ine=>Q=IMunPN!9sPxy?loL-xNaxm*kdAgFrr!9?rk6C0z{zucLs`u=XK!3)IBh1x zIi@FD?TcgzwTnzzR{Gn#yEJ8aU4iuT!pCz2U(ee9=Je+7tXs2gIemN`+PAft@ueOc zQ^Dk&T>pY2igonF=7zEuTN|dWF=zi`?>lXs?Aaw}a!yz5HS$zZ|1quN`~}8|UslWe z%;1{!I5>c5X2F(MoGc5ScUb({zck?TqAc;e33cObPs&1%h(nXIHZ-lDxT9ug_(ZM8Z=)-(Puj3%hsW!0sW0u)1B8Idq!k_5m|pY?2_Z!O=~YCWH#Cw2~Aa%KFR(v^y=eCliluTYc8cUoQez1 zU0s-?@j>+MyV~{}U0ZHli{;eHOwjE&$o8%AP@s<^9yc_?8FScdD-*&D?A- z*J9?&3f8yhtCr-IYiR9F;<@&;Wr3*fzJn1g%U}0gZ~8Uq=7oumkL=#jJ?E&{zd*^q zr>bQpS%0^wmb)5VvcKu6OxZlOBhQ3f+72D~Q>D50ajdCUN(W!eMLA>N6@L!3y%%(7 z+$i(6`t$3)E55s&zn$dTzM)h2kE&SEL%Gt&jgybp*V$cV-DK6!cIi>jA`WF`3%jpH znX_d&!ya04AG_!3*>3iFweO7S`@+BbuF+wO+h+6r(blkSra5PIHLt(@Zf%lc);391 zc2#MG^_3~YPZ=JwGf1sfjgm`KS*?A3isrLZLO=Yf|1*f$U$&ncE!7`oozs{5Nqld* zB5(8k*I(qLIyn4e=4Sppo1^XDaf6{}$v1^xef;)b7R;MgX_>hTXU_X`?s{>NyY<(< zVz-xDC5PKSy1Rb6$9c9WpNbw=_M~V(zNabthITW)TdKx*l!|SRk#G~aDtzw9Qk$vr zSwFTJ*KfXYcOvhHjt zU#s=>G9sEZ44#=yGq||7_3JDD(A}AnE2cbIx>WN+*;JPKhj%<+s`bCLMmng}*i6-w zH?z#{PHvEq`^&C%Yo@iWD=$mg*3P|B;jPyRua0wElW$C%_n#p@F|7RCN-HOBpF1b= zkH@!M@;F)OBD{tF#I*><@bsF(lR7_hc#rG7@3i^HHRDQdOm5WF*R2n$ZjJTJR4*JyrN)6iE|`*(Hv`uy!D%a-ovyB1w7Az{6(KeV{#(dysI zGybGZojg^vT>V;K`NQaQip$la#q&0A*|-0S7;m7`xv#5oI`h4q4W+!jK1@0HE_?#V zF~g||kJYznIj&E+f6u*}i@DeA<=ju%Pf_xXaI!&Yl$vHu<^RFW0lC#ph3(IpN}O z&E-uE&x@REsGI)22D7Fn=*sH`tM} zcH*K)Ueo>(<|6Cm2jmvI>m1#Cf`upK+-s)d3u`Bp{5DKcWzC!_dYw6XJA=U9<3ECm zyxi4o%2q7v={Y@p|CBi!=5`&ld~oG@Fh|(7ro>Zz??aZxbeXL5I(Ee+p}0H$vh(}s zx2mgCqt<GE_(Fn%G)z4%M!~L2-wxHdUH(8WeR7v=JaphKU@>-zqEJNS&|zUI2Lci+lRjue|o(}m2LnwI=p$Zq+D)`E%~< zKJZ>vZ}BYkkoxQ`J9cxt%BW~vu(!)gR#EfLlDy}6kCyzsl;!RfFnjizW0$VAO|BPN zs?GMka_f!UW3~6P1C?7@D*EJJ**3_Y{Ka)>q5}8Sxn3W;wQO#zoGg0bwbuzQdFST8 zuGPUQ+0CuTPEWH_>?-v?64!Gv`flL_$=qufEFEkAXfzcWZ{)N*#=fqaZ#e^Fg8}=} zqHXi}viAR7FrB-}OYH2{=UpGzm?F~;NIdz^AnE^SH{Z(jiMQtOXlm=I<2c+u`|SCX zfox09ee?>N`uG~L-884F?Y6(`J@U@EpNL+#jq~6`?WmyjS5^AYExRiDinsBu@8#~L zi;SF>tljXK;p5bWj+yfF?$nh|+%?CAy{T$l+2v1BWzN33iOL(*mVC}Pyj$V6@n@7f z*VI>={|VIE?b{mi=XCEH_o%Sjv%guiGI15&5qx=DV&&duqq(_lKh?YLC$HPP)@0|F zeO(TBciujorm{R{O6zy$Q`(+?dXw*270phaBc{0RGUusD(DqavtDns1di?r! z@7o0lb?Ne#R&{TZOmp6(7M1Rmv&~tv%aTvHarcd?=PzI0N$8eteO8!bW*#`Fx0s>y z&DnGN;uwc-I&#mO(L ze*4_}&yaFQsw&Hjg&}NeRrR$?k5@j)I(>20w{MG-Ps?|)6+ZT zkEF9t6#E!A!PNBMZ?Ww1Xzz_TPqD<$s6JA>@m|Q9dHmCv`{RAWriE^L%2u&+Bje0y z$H2s_1M%$4Uyu6a_AXh=>T#+ztK_p($;+iXRdcrm%?nxFBX{`Ml}~9`vro1k^mo&o z7ZaTw_p9;B)QFdJt4glU{I2ej8+3JUkIDm9;X_5mH>&<}u1o*X=(DqG-SwIoKPzt* zPP=t&-S0_z{>|SbA-m(z`n}Ql3EqXeD(^ERnOOwCi$-P7K6BSNyK&6|kDR??0j&?_ zF7?!QnkFVxyKO?<J6H;z9$&cHK0JQQna;_&0RsJE_YTF)_;l`w z>5f#*H${u5{N^`!zR&XUqFCpNR%$DanC|ZODl*7DIw9b)Ctu2A`ED({C1r2>O&*nX zYbv-{P2F-uciVT19oxQd%lr24YN`J6u*3IDZ9G^7M{-a=hT)9n$l3jsI1PCP<3U#M|QR8K5wSr ztXd(l+c_;NlU@dGd#b*Hq4<2AHD6Y8$^|p+vlCaB%qR>OoT93`;dNrB2Qvdh@r}a3 zwb9Eir%ei!bd+`z3Ot_wWu0VZ-om`o&OtBdNeAYK?_#)g`}L#kR=Ym43LCOs?Ef%p z{k!Q2%dUj%xl)#U_S>DHn1XjQ#ZjrdD|esD6J5sB*}vyigj1BKWz-2TN82_}*;nlz zYv%26yKS*{jdh1=s`i`3{ns|f?%oxBu;lUk;NS61_pXGg&1rhmt#adHz~xg@P8}{% zVNqFqVvVNFE)U$*in?q4?I8fOM9Ym0C|iuUd%Gvh10cHOSK9!st$ zOswdbAgin}RZ}adu(?Mxo$GmnvE(&bo;?N+_kDSJ?A^Cc=A(Jy9YUWql`T9288hGa zIkh<)JeKA1)JnQFO}umG+bxf^clO_ZKdEC9r) zOeY5J@8_(qpPp46qj=P0t>lX4W`^b8vTr_lP|v^e?fam&@)zdjuX@L0zhaSf!sbaL zukI@v#rRcvNk3T{Qyw94u3+62BfTwC*D^g=%QoZXw^diI(()EwDr=Kz75&e^{PdP) zX5MP)X#tZP3e5ic6&Sf`dlp@u{<`?QUfRT+P7@}?lwMcR-Mm3?r&rj$;M?==uHI~N zrB{D>$$~9WvqPjyS7x@i3pi?P9k)qY>1AoRFK6D@w z*G_sE#dPXK&O1)&gA7mP4m|j_f+>I1qkTIc)ZSqEa@%*hc67?}BoEVsn_Iu^c3l~G zY2ya|s7qgsmxuGs%rY!a+&}-a-^qIow>G`jo#fxPx$SspF;&g&}nD$Snn zp6(e7k!dsT_^}zz^Z#3`^=-D<>y>=!l`e{H*Y^Ib)ZJ{}zJB^jbIDafQ-1X^?QfN9 z{<8Ag#BClyP0~}9qCQMn>aT4bF#piRJ_Dny)!X+e{X74&@xf-*Cz~JZpPKSScwXJr z{1eKtTAA&7w8+;h&$do^m;01qLhjb@*N^%= z^>Zp&a+~!kw@>B7>#~QMTXTcF{P-6>TV;Ct@qv&P`Ek$U5X_}A4M2D}j3=PCF^clrDjo5|{j{Jz`R zm5cNTCs?0Hkp_E)yD>rD0f-e;&g7O%L%FSIPm_2xCtj!6>UKi>5`{;Ms%Mw~OM z=_*@|nd+hW`88ID*Y+M{d7!Z(C57?z9ru&?DEW7^MT(dBJqpV>{ z$9G?c9>q=b+p&e`o0$J=5E_ z#6JDBI<0psVA_P~PSwAzYF2k$iQbfQ{80I7E|0Ijt{slfy7BGy^pghyikx?9_*HoP zOaAih`&!vG>%8|HY94yM>fO@%>+)Ha2XE=^5WL-TxPH;?%YPECGc7~Pw{U~Q5_+_k$B4<1kX+ncgs;=(8q!{99^PDOUlc`kit za`G9zuGO0p-H#NyW(S^{vUrlO=YNJR1v$bG7u7iJc)zrM&yCQj4QAUW*mq3+Yw^o< zv0KsY3W2*}!Sl8L9*y}{Yj@!C${Eug;_iH3v3b$Wsq1R=I@jwIJ~NkEFPpjaO`ii- zrtVsm^vrkmH~y|#-7Iooznb*vzc($t&aYT0x9}>@?M1tu%#5DpbUKsMQaj=w)lEmae_i;AgIVBW?RN>y++ElO>H}HPux_CmF{{tzRmrVzjzLGrC3W z^op=Ab5cZB+V1_Ntzvac=Zu=*G`A0OW&1C$>QyXw8tb+A&XGUcnjTGJ@Cpf@G>?zZ zKE7&R=3HC3R~v411-}fPyNPr28MFTk({h_c=a@~HvikMW=v`G83)AkY8+kCK^(g(; zDtP9}!(=&s=HnuFQ~q6-AQ8`aRwm9pooG$@utYTl9ZJK|`Zsyzh+pjHpz_!}(xK81-IooZ|uU?=$eQR{nO}mp>LedqDJ&#Q}cHY(f z$g*OE#> zws=PcTnmwmGHR8t>2v&Bf6rxhhS=GsCuf*F^;$bO=St`0kGW<$Hb!}K1}DWd#1wk` z<56#zyZC-tf!)qKQKjql?l|cv{#|V2%LgWmzZ-f&t;K9s$1D`fR$b1%e4*TftKCcI zO}l)evh7sEH_>Q`dx=?>FFCKQW<4LUwqw`zfLn+77H(5=W@(7;Gt*SQpPyRqHRtv^ zgLT`!_-;Sx{6>G%glhTZH+5|*_XgLOeO#P&b5Anw_s46e*iD>ttILDy&%Vd+v_mhQ zbuPa=eaE%iUr!l5v}rlYnKNbEMfuj0`9XgCc|XrOWk_dlEi#m`i{5gSw{2&K6?g9P zt`}B)*|DPO*Q-i*+dd7Nx3#c3w`ty|yS%==vs` zv?-rgee-fu`PXpGcGd69y&IP22G5!_<)6ZwR`qw2o9w+hOIN-9Exw>?QA8N`gfoGC z{~7iLWdCQlytd0KIXGBG=FS7#XQw0IJZQS4o98v}M{ujs)0JQAHcX%Ncqz~O6Q4DY zt~~njr}Ecz^H!xlth=_m-f{Mfy*qZCuk$LfWxKZX`Q62D|1EpA?t1nsmmhnc1~7A5#{R|$PuQQTB8ee!Yko6cA2YCBA8{GaTWC=K2B=G_vpt(s4NbO+5TJruHZ z#gi5DJk{?l3p;iuJm^c?hsKlYTf=vyeH7EVVr}ZEt9)ir<%5v6mn-A1Y;w*u|FrE% zWx%28^?$tWmi#W0kNdjox_+q0b;h+^+rP@N zQ+N3jt6TF!%6>*GXv^i4+53NA&2*P>`CRV`2B}H=FLzhvt~=j%nRm~FQ&*-mgnzf& zw^iL_hpyBvcY|ZndSQ3&2v&a)f0`PU`FmB8PiEey2FGVh#dBl+t(eg9=HIg$=Q%P8 zA5Hv|_5ByW|6UhU)AdiqK1m<)S9p9S{AgE{qmxMC%aA6=O|#v?+xAbIAAQp?D9ByZ zzI%Djr#DOUG!-jW{d>Pc=a=8zoT^8^eGE0Xhb^BnY0VUtpF->_@6Ic*SR1=NDCR5c z#+he4i%h~V@8sP&=Y@ znqLO42!EY7JGd{atyr-N(+9p^t7=DrYYxk9B>2lNQ=CX%Zz1not=TF10BhnVp+0m=! zWZsQV_IFRn(k#6Gxmd7G`SF=YJ8!LDRXQ&CfeC|Ts*%nI*|D*)2_bjE8pG93KkU3 z3T9oZ>+h@gRIm9*(8PJRwzfatXy5p|;_`>Wh3e`Xm)|Y>D?ax?c1qXOwb`7kM`DUD zeYfMfv3u=X6ZfWfjB;O@_uZc}FJ$}l$x+?Uc1|v}tgT(8Z1-!z&CmZCqJHjP61VWG zgL&*V?_YUu>yBQ!bxOWVL`d2*FlO?cAGs~fQzwWxoH%D-7r)&F?Z@I23^94iZdR(cFZHv}-YJ0_1 zm;31569sK)cTKsU781-VWu;4RH(yJW*>y~C=}Pq@89Ms;>XOP$g*}gZo{O$mJ|KH8 z``PjS$bk6B>@Bkys`rVDTdlcu@zq?%zjL-4YM9-+^7>_pYBuK=EsK+Kopy`=YF7s6 zEqZlUH%ljCtM1mBXFW25zIgII3U}3UUc2Ta>mrHp$dKK7Q60gWivS~ zy|vgYDrlVT6AU|6RrN!I2pKSTc z_Hub%(4^N5KQ0DL5eT~f=;ULGLzCwGUh?bN#_W~T+iu8ZxfX19+;#gp+f%`rfzx}> z+Duq7N2ZVe3Uk2UQthya+_IL8*+xr`=BBnUI>O2Ar4qxo$<-@8{XAF$(l3w!p~XjqgRLBTV|Y6`(04+#D>6LvZ? z;cWW;yjg$Bey*#TT6D=|SK$cVOk=UdS!YBV|N-(6)NoL-sb#&{UwUZyS zL_awi-^LVnTH8}s@Yp5xoU)_oSN&EdvqdasKJu#G@eOy)#?1z=3qr#9`Y&C(E;&_K zEvDT-;O*J7ue6R;cx_<(&GRutJaT!)(ro4BChz8Kb}N$l6W#OUV?gWl>K_RW*5!d; z)nyW%FEFj0JG=dq|76kj#RvJUJ{CF6P?QUDb7N#tR}o@!Dvohyd#d%YbaL5@hebZy zrz<{Py=&T5QQ=>cLubYtH!mqvKU%Wk#%G^mUZxF_+alMMbzD@Pu{mneg^CTFsvCDS zPJXe@mM`nv1*vc!$88*fiN>On%0(6wEiEt?s#Iqvs(cVyyx{Ewl~^-_!#*o7nXlAj zSUtJt-?BAlgVQGFT-r1_d-|tObNaTJys)^jX%f?Z<*wU_((C=bjvEQ66&T(4-oS9{ z`=(3Te|2*X&33!G*pj8(^Sfx|?Q*AG9qY9fwT`{JDfjgwdszIET~}A04ynjJ+^4*z zow@b6qhwr=UwwB|g?fM1-9uZJML)d$>2dq@t*+M!cZU@GT)MV#(@DwXpUn?y=d0%3 zS`g(o)u&%jdfW58p|ci;b(D)nC$2v_Va=TMQ#ZcbzYTJES$$&bRQJ*^Tl)@1uA1~Z zap%qV@6XJ7IjMb)mfmAlyOYW_048z*yU&_6E`_`lhwW~HY@`YYG>buV)DVSgNTiCM0op%@+G}U)J`S`DP z)$L6#`(EA-il1#*tfH~zVg|$Ox)+@oD(;gJ@#e4immPV^lYKk z^JOP{jh{_yd#aG@-E0vcdC242$@hWLR&!h~3O?L=WOb%!>Z{m*nLU~({Zu&}P6qX7 ztx-GUbieGaEH|&wtvNwml>r{-nHGIu+!20K&Ov@zURl`F`A$wfZcDO^GiL?Pm%dWi z(|FtBvF*pBS?_Pn4V+PEyi}EUaZ^bB^7}6%%4*B?{AMF(GqSPHAE| z$@2Yt5~KW#Rfi*boxUyh-u!s2*|QG;OXe(D^Ihwk&4cv6zNzPQrC66bcO12~T(Mj{ zQ+?{z=k?cT-Ltd|UwN{0+G*bY+>zGp2Pix69ksL)%3H!wID1!NN9pq z(%omDldA3-@kr($`PhF}Vok+4md6dk%?F>)_u;QPoKvcu7I~Y8e?_%-hxi6@^^U3wd-c1L-4e%q!uWtVPx%~k&~rItVO&flZiZ@mlK_r+eBVljEEr(N6nmAB^3 zJ~pLiqCUBL!DPF-qNW#=LVyPMVPH?>f3D#vjZMpxO8wH$ETP({r0AM zTcVzy-RzM&b=Rr*RNsoVGMdtp+@8#LGM*TJnq%k7+uq-PFTLR_CncG=W%EPTB@0%+ zD)M{tZ}02GC139@6YX%T&y2G;aMp3_war-~>Fabhg)G%jTq5A0WxM&yyLv5l2EFyg z3X|NfoH?7kx8M8S{#}zo!tQ21wV3cBEMVe~j<1iFisdaln|5Y~?}4B{JML^{?Ekzf z>D=#2Pi7X&1)twhv~9~YqNh0(w`MXP z_Y-sauw?P|eA)B)e*b=~s9m^R(MtJ5YR-;6E-?ewlEPh?(q=ue$G$CSJ9b4?Q+mqQ z6%SOEuT1{8jYTJ}%BWVC`r3SZT?NolPsMAJ+P_SY2W);5WRY zTiW@@rd8GQ;OfA?KFKd47xAzyi3ya<>N(w>5#6Ys<@tr>L1^XWBZor|AJ`$X)YC#? ze$@1A(dfhtJmJFg7p~cQOSdV~Kycryoj%t~Ri|>z&YdpiCCz$#iQ$8H<(Ad~l?UG5 z{&nTNa~8MjzFXVgsd5BWsJcrW4gEDcYSFzH+no<@j*)!wRG0b2{Pi3DGb~=c_5Gyx z{hCLu9`$*KU%ydR7s~XuBx<6|jTtvsTA$>3?!5Q=hqiNY`~&YDngKFi7x+KOTs5^1 z^|>Nmx{Z5{gQv7aP?=^-o$BxB7pjx5t(|M0lTU9r_*rXyt562e0bTjf^jEz~6g9YX-8tA`ca)?3`pu)#d`fd85oCYnSBtR{L-N3bE~;a{J2rTjuWF=T|B! z-{h2?H1P$S|11BsUb=6Eg4VVyTf_ExC%4a{Pg#r0r>&o@vgO|V(5pqWIkP+q6b-LV zo+>zTp5ea;wZ-|jpWK>b-5KQg;4w?M`^}im+?hU8l*??h)?fE^G@fI)vH4C&+|kp0 zoxQWtd#)GmTlRR_ToEqYgXNu_Kd)B2*-*Bnoh@j75&KTN{aN#FD(yDrNR&LjHT0~- zjP0rmWs2v7E?o4rb=^tHo8baWRk!5bnmASah28S4j%~MBuYC5fsdDAsZBPHsu~RuP z?ZUiQ@eFmPi>}_<#rr{Qk;!ro`CiS(Url*-zc$;dvU}>S&z9ZA0ZrZlUX3RMR2WaF z_q{&Oeu3-W&BexsJZn@I>Zxe3@(9i^49{EW9PJw)sGR)u@x@zm^-K%i-SgoPf_1G7 zcc>;?*gbxI^4ZGRck;euQ=9>~$h%SN*%BGDYRnv?mOU*l(&c?G}%5 zYMR-%%+5^a+d7xm#sQDMeh-!oS+ZX?*e2~>euLMfsdEH-9=d#f-Sg!8x+R<4{%+6d zv^>t!>Y2*ds`2jJljh^E2TYWm8mUbEHA(h{C$X1@DyC8cV`{6{wb1W%rLV=2zFmRl&2v2ekO z%Jugu^i=r-dt|1}`FP@;;n~Vekv-@3wq{%@UlP5>-stm7pETy^`^DBlo93u;a)mh_ zlu2mdb3dWd(%>1Ebmgj#6P{4?Xe*IHi-gnmuU-mu8^nDhxb zvq(wj69)s&OE7EP-fj7$r+C&HtCuVPGo)o_Tzh@D|67lVvrw*wi=uMPq(!2W9G_YT zm3`tk=5CWWU+U4t^tz{OzjjNN33YPhPL&jz9~fxuz~038Kw%E!BnHVW-kPV{JF1K4q)Q%6^1c-HJ?NEK z-gW6a(af2tyweo(Di3ar-l5Vk$x((=;eoI=kXt@UAkog)0F$1>>1(fmvPw7b>3CDcKZ6Y<@$0OW!kJfe=g)K+6kTm| z=}fM6r}ELFn+Cc$Yox5F_WrTi<284wXOz$u4NWacE_Q|fs%tS{?#>tuL>=4Ho1xj-Ea1rIz=S2lLHyCM_*|x&4A* zv~}yb+nJr8!#zJPG@QFnr9J4D=Ru2;wm)oYwWF?C=`Jfjx@P5*7kkSu?>_YI8~3dD z+m_v~-S+ma!IWK>!pfT#EtMB$<@B`gc>GCNBR1^PrR6(0{cUbfoW!$z+Jv^nlN>&a z3e-A2kmI-8I%D6m7h!jG=Q^G0`0DJZQ@2nh#5lNQv3IF((EgP=Q3qeVJNecm<4JWODUy3C}-x8KLeCtsdi5U@O2!>cQ33v+8jMZh^e{yMj;(ks2S#vxg0TRw+R zJ-hklq#3U&?LvGeOl;lbzTVQ~TmhrP&)(WYZC{KoschKRbwS1>;MkLS$KQrIiW}`s z6ZV%&>x^NZyE%W|e4%|g-&XhTe6nBg@t)!znd`oWtqhx8*l@Yk>u~C^pC2y2T7UW1 z#IU^ntb1FRczYGTp7rIr*y@0Uox^x~0tPPd8KZQu7r&ecwLl(lYuk=_5dLSXh3lc;yMANQ`+d7klx zH@enrXVkukWl6Vg=?|SFf?TeXmj%`_%?3!bfZm>%{TkRY6 z#Pi%9r{ImX2iNuoY~@{cS=c)Rd3_yE20vx1R7`Y4-Iix>?S*lq*VL9S2KuSnK^2g(^3i z88@{)W>=P2;Wmq7_qLgCOb?bm7YUX<5VSp5i@E&oDB)(=)Tvo-237`^xpjidsR53jdyNK30FkedoXC&nsKk=4?6lb)|-r z+f&d*F|T}+Ue$_qyL?xTp2aIN|DI7}%ls8`ZF{$D_PMLFO!}c#?!k?j;R?+M*;X@b zd9_(MUiif1pf!E7ZFqI|lYKk36@(5!ww_!8&mzbPBFTWsi)hyn3Vuus;)!R3nxF$7; zcd3!8IHQxFKtpBJULm`$jQxc(Yi52n4sQ{jVl?@w!+(b0uPfcwzU;Z(&EpZ$$+L1& z$b^~`fp(AY_x)!G4*0QgX;fOxoMYcC<{iK2d`If=X6B^DhSM$1zgqcrnzEloO9Icw zuxMG^?!rx)=aoLq5m}KU_*FFSWkrzsTGhtM(b7xq)+b(FzfRfDqv=c8?ZmWz+!d?X z&xG{7vOVWu`|+G%*p_aMN1{QO56Jr+`W};EY8II5yXbQ2l*iw`{jps#bq=#v+Onigf=lbrw24r{z{o`#XMJk$W1Ob5=#v zbjPdGvs0GGgsW|{64+V)YH8Q4bD=XcDk~%pNq=5#KdJEN)wr)`ZB*5ZIuCd}nfx|< z{h_s6cYe2ZUa4X*RkvlUnAMeefxC;QH{Z74czgbJWRB5E;in1jwq3VrJ=?zJ-?x~m zGcJZR^;gE4dj;+6KD!icKbn^kf#X!P!XNpaPTd*%Y>6PL<=fdfrsDM)*cI|i7C-w(6RWq+NW6g@2c2C#WOk80@ zTtY6(bb<0E{7GeR&tF@qylh?7_lFl(Z;{^JU3BT(nm$0T73UP z`Prq1ZmL_{iK>}7^U0~IM|B>kGR7a8?-=D%^=;#c zIA+F8Gxc&$y?S-+^U-P3{3J3SDpU*KxxV4jq;-ZeJ}e3z${In(9K&nm7rv?c`Zc@n z@ekf5^SAox7*EbDk>p^0A8x|D>&1D26208@g{h(UwyaxR_E7ERibn@~UNuE0&QOew zc5-CavYFFU{=Cmqy~E|9lFhS-VmpbjN44jd|GMtL0eUJ7K>-K%-Q*6a86xL++qx1ZJma0B~wsjs-iC?0F zb>jS}NNec(!5A)$MF+HMYA<+hVSh=pw|K(^vTY#Gl?0vCS8M zm4z(Cmbzs8b}{1*k3hRuTtW3G)OO`B&bKdmDK~G&!c9Rl4)%Qi_hQ=l{|qxj z^aFFsb3L_=i=ED^DmnaU@u5WPX=~mnGk>yQ8^53LddIBlMZs&L)~Jc>4(_V;DCk)@ z-D}E(!gFs=7N5R9!TN*U{GPDjtKYo3-?Iz$ZC$6II3stzLd|q>{xzv;#yZu{q$^(3 zg-3?Hu3O){YVq;96tOiQpRcOkbm`OSPi&8zL?+*Lx3K&Yw9|I=@sM-vR>{k(F6^1a z;d%aN*uKXrq?$FqLUJw1KJVS`mw zW_!1+-B7u6f6%hKO5Ka|uCb?PO?9jKaHXlKd-CIR4UArgL<-jZ_Eh*Zf4!OE&ZCz! zcE;*QwcVNRBoX{!(KaU$X}=Js;5jn9D;bsN=ge9?_44!i+iDI8&ojQYy4LUBnys9L zZ?D_-?m5u2W$)CL94vEJsC<~b0wGub=JlV~2umOSFr`ZgqKiJP~kDjZd$K0h{`%EL7dBVtDT+N+?bOpefB#fi zK}ZWv!sB^IgyuaiIQpq|;ju%vqrxVi2=a4WXOi!7Xll9Z#lY@KmzJ#2dD44WLe;iY zLiYI5=vl?9#MfHg7W?a%FRZZGa>510kCXiT{6tT_J^m|f%7)Cc*2nQTU;S7z$;o+! zrvfjBtl6)X;!&o*tGvAyUCp1gcc7LvB(l!>oGrzHa>Iac({e}1j`csWsfSK z%({Ie*5yF6#8kzY1rwXx7p`z^)Dd7Yd&c|+s9&H7eHgLI!6w@)xUn-?Lt>Z?$v z%m?YDbJ=s>RpstBe${vFq2S?`hRU43{69nPJ0G7|wENk^;=1f}Q2U456=@k$D0%xUbf|=_uEZt`jcl}-xj>+nO&FK70y|wr@g6)FRi(glY48e zlD9XfLi*m&?|);a$@~nph_C6__OzS#{6^UHxUWKQwcTgzQ@VBQaq5vzlOCD#EdTuY zMJ3zfRag45s-M4Q*Ij%2M(z@mQ;eR09&$?<=kI*J*JqFHw9Ol%riE^r;9fStvtDuE zwCz{(0|j4iYI-Kv^F)!Ep?+=tgO`=6YcCvL`FNM-n(Qdihg;sat?howrQBNEzcxC` zt%l=G%gJ2Zy{?{X*h{ao84FHrwx70oUg^FWSMMXk=ik{X)0I^f{%ZB@KI)^rqjtVlSS9nl)zwC`Ti3mC&b4-3za!|b ztlE3qZ)=YoHh=b~bnVU5t*R|1>{C>0r}$MT+wiZ``MhG;Eu|Ufh1d)O`{up+UBY1} zvPr1$py}FIayzyf9G+a`e|K?%fKiBl0{hDIe_rL*w!Yi?B2naRwQ6Ctr{3<~w{^}7 zxK9VhMofsA@Vmpwzf|Kvh}@ko%k)l7W@TAi_GIGgEFlxhxGR+-Ua`MTvdoNjIL@{*`{=2M#n<|zoB1}hapq3D>nSPu zwC4B3`!~2=#ab?T5cA;Ysq&;)be<$C3~Uv;7U6sx7JV{o{4uP?%tES z87`JCBs3@F*V*dc)GFgmO`Ww*He3=gS}s=P~kXiT15+-#H9TPCMP^az3|IW$La^-*-IP z8?yLS#i~zl*97ZDEw~lZUMsG?%ki84&R^etU%B@%TQpU>LS${ulXT_i+`6*hym?tO zwoNZPeN4-Bjp@{V)z!%wp`kh3+4-J(22Cj{ejgm2*Bg3vj=8KBOY&C7h1WI&b+K2y zTC(@m^Yz=?buYweHk|4b+cL=}m5={ly#M;T8*9H#-J;5QKy=f-lFr@E-Bq_vEnIKC zNAKe@1ZrLjre`;UT?UfdqrabF1-)l+Atf|Y~y5G+0(xr`$>~%ToC4OCd+Y)|_kAwvM}HnWcr(p$+7kFOLznLF1(>E#Re=_0RJ*1k#q5zypT_e%CZgVr^p?sYOVn)Q6I zgnQi7xB49IdbzA+t?MOm#VUmxP3*1DDJP>j!eLcD!1? z^LXfy=>n$wmVCFg?8Co&cPW{@FlyTKgvL#ep2$!ByI9xtCzsy8*QflLIQeAWaLO%_ z3A_Ao)3xq;hXgM#p{eI5{h9hez>{0I=kuEz-yX{sFZ!{1*H-DJ*LFM9YSyJ5v5@*2 zox5%A@i!vd{xbxI-Rs<3pI%j*yh)(krRB2s9fNX~-aECQlUetr zX5878{wO5xD_5LXfAsshXM*21 zTnYM@_Dn9v{AX;aT8m{!Y{CVfXw$n#qnxByrs}S9S;46Oox?jZyHb7P!v~X3O4#rx za&Gqe5Y*r=dUx|f_nlEoZZF*?)33U8(<{-No&gHYKZRo?i?-b{Ikt56@^@#aJw05q zWrHJQ#G8flUMjQ52e=k1)n2dXTv4z)?)AL5_=|D7xSpnE-PgQib*`PmE1K19)4M4D5QnqJ&L;Ji=jMp*i@my3PO7iI z^4Wu)s`9l*H)+3Fsjs6c9xZ?f1X9~AfR!Z4^|ruQBXKaT|Wij$7kL85a{D#*xhvo3#f zb=F$zznvE^URHV#_cP4BQ}f{V%C8o(oBWyQJDv@d3J=peu3;5=;CS>z;PKe#D)3y%mPi0XhE}r0?yY z@SmaTqQ|CF^KLbt6AJyaXj|F003iddqnDymfp2bU0oOqEZ5IH=Jf5&DxK6@dRxQK zEz@aj z^}OO+8%p^W`mNbwD$6IaY*DtV}w|95h`qg|hx80tw#Id8Tdx>V2q^i5b zlX<@0hDFbRu{yuL9q6wXv8LGU_T18+)q6r*b53McU7IFz!|%b`<)UVnrM~(0&gaqY zkD7V#!n-?4Qy0q3yUKC(m*WqQ0>vrq?aDT+#V72qgz%*9YTa%kW42?%Gv!JB_exXF zX08g={cbEcd1Kq9n&o%vgX&MqM@_tSX~L8TAy&C>SAO5Nhnq>~&8Ab)91^UDU->bd zzrTO^QvWR}DR-7FTvUBcdSTQJ+u-Fb-rC$U5ST~3=U_*%HPH$?@AOG`F#J+l6el_?XFgqwsyUkGii_C^%s^Jb*r}< zEER9g40QZ<&b9ib_Ub~tT-`@zO_ruFwyDK#e%!LHwVun};@7NWVz1k#?~h&|@K#9g zVx$(IYfj2Li(6|1ij42~zwiy5_U!fC&V5-K@u4iKPk7s&KU=>tYSW35>wMcM^n8CC z!h1VteZW1rB<|U{zq`C9-@RA;{Ac~Sty1&iR+Jsr%l;@TS~M+WTlDdFL5t5bZ*!|I zJAY|kNr?Em;#=DffB2I$X}#692KFNV1#85G-mDJY(a^-G>+!Ig>Gh}mszzI#ay2|S znbySGE}6Y+F}oG0t3ysYC}y=Epmg>9Lj^(=bU7v8drd`59)SBdMg zwtZJZH)~nRW_)gbQG4*qs>0t%Z-vEqR@N~c0Rm0feqHI8ywTC8dgTDjcO zOJve3zXuIP^$W(=LFMlu2ZTzx!+Fd`pwr#UkuQF=wy*^*nmGe+QeW!baeN2eU zG^w>*5=n<23m!7s5Oe!%Y8G$U6?2!QrS_`H8ma1+@631n&k)zPB_ql8Ze~&1g?SG- zB$yUXGnbvIS)8h~wcSaK;GM3Ixnmu_T7`nt)FNr zeJ$2*$C=EjrmDwIYiaXZ&h551{`%K<)6y3w4JD&$N_uLutJef)OwHF$PYAQsdMu#m zRp$1Rg)gmr*3)SJZo&K0C)}D<%Fe1Kp|p&9r*+O|r3Y>0+vJ?{EF5oL3MmL%Q&m-a zV!du?ZhrmQEfZw&cYc?LBSmZOO)cW>#X>n##_X zkNSRjx7h2U$K=e~BE=2QTV^V%Y7{gWZ@2wW|N7E~_tU@LF_N(~-F~HN-HDvsBiolw zo1M$Zk-Ma2DFY7!!yDFsS^bf_m0s<3U3y{ea{hhIr~E%H`6XZcGHjPOtCc3NsWq$f zW*hGKnbENhzqRM|GiFA=w9s@{sr|dUIOEFn7lF<`>`aBXOWkxf225#k^L#S-&ehiC zZ`XQHXuH}Y)sUAP`tk5l%X3}3u5X{~mb0!xFjaKd8r^T3e=jKy+GJf_SMSx6d8x&u zr#d{sZ7zIpeO&dAJ5ipGAG#YEf&wrjB#gFcp?~C z$)bHG@Hjv3Zp~vouUMjUS3kYa+<0)U-^!~O-xZyj8E`Zt=Z;8Y!~WOqdhGi?&st#b ztrxAvYq@h}&FoFi=~^pPes2;jt!VB0&+syun|0UEwWc|~#)&C=^@0v)AG~qM_*r2} znU~{9`w1r%!h_}8;wG(K@?%@&(zl)7eaos3taaY?aW}*2D}0s@xR!Z_+wB)(Xj^Ar z_U=}IXN3IRm|C?LPgdVOc6asG2U#~0J_hXA@a!S?4*gw1LF>-WNoPq--f-}2)Lz4v ze<%CDp54v$a!Gd8Lz{=)CAHl3Cq&!2^L8vv_43pT^fSEOC!`+r-Fa@h(5)5M+jWE2 zUaCv8nX>h{k2TTEki1j@LW1BRr1zF-ZRAI=w1vb$)Jn#4{G*V&4;o`qGwex-cnPPQg)O zN^7#k33k~XYr2BEwP*c$^4hBZk+W0A*H4%IjF#_t&>&aA%2Oq~w)yLcU*TTirkOJy zht-td*W0O`cJYzChN`0PwiyRx=J7r9za#ILy)^r3*`y1H-QDb266TxFIU2|Z**^a? z^rcr&$CRZSoy1e2`f-aql6@k#h6r|+RX53aef;6H!SU^%7p~EvGS|1co67sB{d($(ba&kyuRq_r)3Zi~sbx-;kkj^L#u*aE^vFzk?iKqNxl855mDu=34f1^re_zquF<>mfytDGy1LAV6;y2-IXr*Oy>~UL4tEN_tShL_^EP{0 zdws{@SNRg9f3Ewy;&orP<=s^0ev9_hU2_aYH$N}=&#dWs3Otm+y3t!1q6+DkS z%aX^)!$Us!&XuU!TE5pZclZ{17glg`g*gdXGyZ3Y{Tv)!Wi&y^IGkPl-L5Z%cZ57Q z#^0#Q)$i>!;`|*_9bmZpZQ4tz4`FA1+>=srb*?OOn#Rb&A9&ZMc#?%_Zsu~yo?qTC zCC*!ls$N<5^5q7pNpCFHc_helUR@w+KCyYrcS*UcMrTc;BJP@8Wt{Tmoz4}Z2l@-1 z>=+ToD7PSe{>xc6BI3NF9M0x%wUUfp*Ya4>l)LF?>QhzqDcYiI+=7;T z<4D~R_Qdpfcbf< zI;BUzO8^mKST0CrA3B|qM~-5N;>f6 z`NCaJG1E=&zV|$y;KAt?z-hs#Y%G3VwVZ!)ep%EyJ^wb(PWt64 ze)YQc7wb}^)`>mgeSCydzSE}O>+tUQ^fsw2;xSJ0_Io@}Si4#L`Ok1~{oB&Z&!sl( z$bDya`Cq82x1@}QjQl>1Kd&ZUU9s=(yZKx7GdnK#Y@0SCNi)zpL;mpOe=&bwKLw4b zXD##G@g~)za*@K_>o>k^e_uL3`PQ@vtp2%z^9q)FI9jYacG5ugh^pHzbtlu@x-()A z{oYhvd2D{MENP{n`>fkKx8)YPZtUlMz%I8{=-Ty)>!O+-x92adES376yHQh-``+hv z-c9!(1^#Dnd{=+HYvp=z@5R&7-}&!aVs_J0cl%9EErv<81)P>|k7v!EXBIHcLm~TB zv+n_w+XrHk;tvVx^7HW(WT!4G72a04qEhRD)D4$n-&eeDv*Tu_21WM^==sdiSn4Na zcxXST!o>dAmTS4ET~;phZZpjP<0-M~Oxkzu`K=-U8HAUMPBhtK^-K24#q_Lu>+S!} z6MQT(({DcSg39MtCca_+dVH_rn_kVM)9*zVUKib&9bPJYXV&F2m&GNmUft%^W;GI1 z-r{kR+tQ|g9jm9X@Hf|wzXPWnnd%;Q=(Wn*@YhXR%7*6Jg5j<&=XHEeZ>+8;eX;b~ zwh3Vq+(q+V&bD0_!ehJH;_C{rX_w#KiQr>Ard@4%vP|T0Aw$^Vve=XDqI1lw&PA;) zO>7r^I?e2@-Bq{Pwaa*KtkY?K^!~)XL*M39^>1A5AMh&dj$_F7OB1S@D(w^RT&*v1 zz8=ayH8+CYdYWOVXY!^i>z1Wl_^_1meyGLE-eY%JpUtRfS*VNfeby(f%JyH8p zH{gi9{;aT0A&9)rW)7A3~Z&`cugd5)@`_rFSr0a6W9&cj4 zqdPrSac9=@yzk;lx8`W{O`WpJ$zLzwKLh8#`1R|5zR?Z4*1)n{<-7XM6?tcc{~5flXZ@RPmauZ=N2Uvv>=FvUn}d7x zi$b?&&2eK`yKUwE!#ko+70h|G{uD>}=_5uRr}Yk>ExPnp|K-nzQ&+5=RMY*R!TIY- z*+m}|?k8Isv7DU1t!=HeW$B~`Z$yH7_}tg;uL(OI?3U-uS72l*?;Pc8UQ=|{ly70g z!MC%nf931$?F{&+RB9X-A$ulI^f%j)PbMwi-ES;Kze{>|XC7=-m^er9MV55w?j0AS z^Y*qZw^aF{eaSzhr`x?@k&&C$#H&&}f4}|v+9jN!b?a@4<0Q(;D3hsV2OXfxvS|1PInL4S+ulDuUw^4bQjm}S9D!p;m8q;+%yKb-B5Hxk$I>X2shF6xl>5jbK zr;}AI_dSh>yvL%#wdu>7$a&$nJRi@w8gW{COI%%KmX?F1SO1E2trvpdYHwO%v4k~w z)?vPFT7~D5GIv}liewJ;Z0CM@Po=O&s_A~ZQugWMec6R;)16$Jl-Jr%T=mcOh{$}? zsOO)eH%iG{2%9lEezql^EefMQ{ z`m;2vQ}arnOlNy4vUtL+AWu&Jyyq5bYjjm>>H{;&^3J;yS;Yo^=@e zJF1>!M zHY;~0Z$eY6rlyw6gu)xYeucR$b$zmRNn_E{(#Lw<0SoL6Kex@u^;`4tP>@me-_@tC zoVoGMA}1!!`Le(%q2C=UOT8KL6y|xHtG?pBrriI=U(PF^{@klbGoQZyeFt<4ZE;|r z4D&||{>n|_kvqFq)rmdy+~Ie1*P)_0g*W{d&X;ugdChB1vCXHVCGzKA$I6EKA6`2p z%1V&&5ku_J?`iAVZOw5?}vuyp^_v)`42b%xNCrIlZ^2rOOz z-35c8M9V+IwSMW}_|A221LcZNmk0J2_Z_%X6DoUTsruCjF8PoZDXd&O7pv(vK04xU zCw+hKy$cd??vGBqpV*hp92AlCDp%j=q+y=fotE5>QWnu!??m`_D6N+3$+B+UReF4x z)r={zy4g{WSGxbc_C3`>_|(p@2em=#6JvimZ`86g_;*QwdDpa0_NO;~*!nG`@A2Cc zf36&kDLL$u{q5vlr64)pH{NS(f}5DWY3C;e#RRg;Es^Qd?*01Qe`{UCj&=8I8y-E< z^yIlS!!e}1&5!L(qSmMRiU;L$gl}1SM%^r0CL3~?XTt=c6MTwUQJ>0navmu3B*;~# z%RIBazAbwCh1Ext7Rg6AuW4vndvq!L6pQ~1%-QR-J=yhM=XI@b(Q^y%+x~N1&_+*A zC!va?u~I@e&K`Bx;adEMQ^G4`a`0K(b$2eGS@~4BrRPD_U-m2C);_bky}p>|iP3?Z zF~5$^E}Ok&Rq`i+OAZGlpSs`R5B{=ho!jD_cQ(yfD>ln^%FC0=Z>;N!@hs#*WU@ee>+pC6MC+l>QWuqr-7ZLnf^`F7#O4os) zwgA@p{AopZ_ij^Jski5nkk|$et^k>df3w50raqW3sX``{A!2pJWtr(k+j0uzX7}@| zTsJBGbmHsuwVU^Zv~>0ut1|EuZcv#2*LT&f^UJHl05s@UFV;?uY2mP?K3q#-F9%?fB4mU zwW@}v-XoblpV z3-hm4r;OJbJ({#dmsQK+4#%UVWp8th&hlmpiA=jNX{kUpRyq=?~@Td#`nCvJJ03Sbu7Z?2=m7s98?(Z#6ygHcQ=EFmdU^ z>wB+kcX!?HSfRS2$Dmcas5yg^W!{s=*VaUz*kYS(?PQ+2;`gtN1KZmtA7jhnuehS; zoO@)?59f??A&VQd(|)?GdVW;adA7D}!d2m`-)?M@Dcq{A>9t*@$&vlO(gL$j3f@sd zA^sg+T~j;*zpMNU)tz1Wcgdrcu$U70$Kg}tw^ja|x;Sp$oF}a(ye7@Pf4Kka+VrfF zsIMY#YW8H@GS02e&NnT1!CT11qHy^M6Z_h%UsJDS^d95vV4ftWsxy zljj7V*WNYtG~a9?$35BF-1i>Zd&GE~kt z@8K())tK!oa7bvyr^ib(-*L*f{B920J3mP4w)ElRKHDtaHTpVtJT(uR7SG}c%$WJf za#G{uNzbQ0KDEi>wI)~Gy#R-k%69jDtj>47vu65TS25Fd(r1rn89BeVn#6SPu|mqc zo67x(pq*aUnFlJ8HBFx}z&Qr z=INY#q6T6vC2~xG^Z0Df8D;rTU-Z&!?S&0S-wT6P@2202Ra{cDo8{xgsT03`kx%?} zEl1bn)B$OcMRi-BW@IXIK3cf)FW=4LYaef))? z#k-=OFMH=5vMI%6>(rV9vL`J+^E<~LINEnv?U*OW-EAxHCMWmYez!?rs$!(X(bNyk z+f|nzZdx;^>0H+8H|LwTFo(^Xwb^q<%Z?j1Raf04LzlgaJgM6}<@v4k^X9zr&JJLb zk7C;RIv{c5#-P4*w@bP!qD5oUZ_d22Xn~e?0 z$(?&`xJ7K?tF(+ME4Qq5S8_TvuVBUR$x%DauPoi<^)Ybyx)ol0VfInCGqq)69Sh8L zonBvjBe-Gt9#)1glj^y1o6m9n@jfPGRQ*6=`j@Csi^&RU>AMa_MM*#WlpefAx@uM0 zqN$0|=XDJQRy2Oub>hHB!@Vl0(GAZxoKNDdmT#5yxVQfAq_tr&+ov7w+_63XP_@ib zPraX^6Rh(dJbxM992<3M+Tz^H*KX);-8iY?w6~Y?(cC5cN+E1~Yz!W9^X8L+}jRuruJSlFJC`>yKr5vm(RAPuH2=|rc9kQ z<)N!;<}Htd$1EP7KHKWmSG1}`xA4sG$=O+zqS9Mla;(YNoN$HDyzb+)`|HX{OkH>%P!u^ zkGOrAKQLK8M{%Ifh zXKL8wJ?YsNw0Pn{(TgHK>J$2x~EUxS2dsM&1Am+SM;5pj%AW~n$Y7n zn*B2zGA)BHZ!frI>nYpn_QgCPch)PZdrhZiL`Cz9g>2ZWs1?+3zp-WY>A5?e2Jx8>FQPF~@~QHqHRrpGe~Z`F=_`py2twOZ@% z>pgE;+$vP_R$nbqeEw5YU0KMv>K4ANPnXQnzIu&dZnfpx)p)-#sTs8X==7Sh zt|1L4!H zul}3=I(||3jI!$1wvgyQ5kVL~w(K$(S(o*e1fl+M&A?6})Iqj1C)zvR#x_v5%YwH%^D^94q^7e7+^t1>L57Fd^ zHSf>n=yIxrdZx`0c*N9OBG<6zc5uE|Y!Fk!*R?NB#O<8QI&sp)qJ7atzWrPZ%SG4h zf9-0|nNfH_h+RvaAxu1|^ohtF`;t^?I z?w7Z2TmI%cw)>^hk))kGEXvzL4DWZXyf}H)x@A+3@AF-=u;Bgs=;+`T6$>?`JHIh4 zn$;hE{{h?AZ2z@EVVmW-EI(XWvYMg%n5BH|vF%n}r+x?AbxA5HoH9S>^It8)l~Esm z#G|}|9#9z zy|UP@Q=7~F@5yzWQy9L=T-&!WNa{sj z)4}-f?^Z|OyzIB<(Yb3ECkdZazftR-wItLkZuy?sJrB1^{=F=DBBy@kcT@h|F|pIj zdhY)0hl;Pt@wxp(x?49V zyko+UEy&Di3_srsklbQnt!Jpl!bQLQhsL7J=F{`1i;%-sFjpfUi3ixVPZ+%~UH+t4t!-eUG0_3xn>;2lg zd&QzYtd^+Qe|DA90^S5Sw`QxIv zyW*@znlqy73U9vj)j7T;TXF*ts+M=$56Q+NFC+ZFbFGO|79{ybo}kEhs5 zCY56$mpi}M?azAC8^2UxJIjt!!E-_xSG~z7(9Ll87*I5o?>|G<+K>DZy5hk{tzBKT zkDb~t>gi$o>e_~vKfSwVax$c!I>zQSyvNYQvz+Y*zq|DW| zD~lz|xTmh3STQpvW7Ad*p6V-BAB&ByE!B-&yKT!}mnyGjZua?J>z~|lssnx%Yw92RRd%G)3F-`(MU;~L+pU5bLALjO1|J{ubl{NrfW&RgqbUET^! zHLLs2pnCE5ajyMV*G}wXS@N`0rtD42@~QpTmd&+%DYo&|)Qi)VkCxp{;9~u~rbT4Q za%IH{?(fBW9?J#3a$h5>I&I6+tTLGQIxY-2jhM8=LB<&v{ejzwRsB!bv&XZv?p} zNZbd3i(1DjPRgD$JkPeG;EXZTo{}F^)~(!pE2m8P^~JQzdyQY_``XBNFInt6!Tx<- zR>=OCCZUHKEY&T|!OwNgmY4t7b|U-U#nkGVo_B7Z3#fRiUbM-&sP?tdRNt#hrsr)j zDsk(ZncvIiH*NDyDb2vd$%4{RcYkc_DV!f)b#Ea@?v{m|oL+8BK?V%pME|Z8TQz-! zVpPP$&p-d%cHh^wcJEe9PH;JMrst7F`RS+L-3&`5zpBXl zC(k1;AxTR&MUp=%1C#Vmy^FtVz2#^1v{(tX$4(1(nXmj69CJ8uk5W&d7K`p9&TC3oo70u^`WV|`0SHKz(Ke7IgyBI5RmwR}5Yw9UF&T%Ubw zZruDm?IJH{^2%6kD&CoS;&b}k1I;JT)hcPek`LVFYif3H$!*#FkzRW&uFsgEZ6V1p zxnXfbMV#oNz7W>D{|sEq)=O?U{(b+CyNlbu`v-^d{dTIx>jKfC}JID#44!upJ8>B;@sFJf|}h`Pw(n>|Ljg$te?JJeaRHJgPkr@OIXh8NqC-et&GAzh|$qt?Z4t z|Lp!5Ejc6W&iAq0TE@Z&d-=R<+~jh7EqW&I)RItEo_B2L?)7(7wnlDImRj%QG(nun z(Rlm5?NcI)vz#_<6>eFf-uPmx@QqnJ)>{=lUh!3Rb-=AsX5Q#;2G1^?`zoSZrxq1f zVBW;2lFm@%c+~sJv7{9BMP8YD8$OBL?p>3jtCGsQF`)qllzetA~@HrK8*T-M^{xkpTMI@b9e zO?c{g;M|{Dew$g7RMyYhv#@$oi#qeW>i-N&bGCk$(vM|LPRTeC+L+WObR%ffQaP{A zlj`q-BXs*LR`kw25Y(V`@v@n?`W6{xrEQP7FJ2bgINe%PY;u}Hshv^q&ui(yZ&uA; zx^RD@H}_1gC{>Pk>yuPeSeb5hd{K=2-FRz5TJ-(Riz`kXSaJ1o$lgz{o$ekAvQ+uN z8uK_YY0E|)GaDCy=jAdw?oI3RJofv|wR*Zz=y1_|O{a*|)XZE?37LNt$88wThF_n? z^me*NqM~b#ewP2f%l)srHmti|aYd`>!TUzdoN$epH(?+;q~*{_YvkD0&oUW=*4 zq9a9ooDaQ~_dnsYkNTy4tJ%5G;(6Nn1iRbwmrm#2JekoaxnO5@?>_mfK1*WKU#(s^ z+xo=Gu;`x2Pu=g|`J3gQzg>ZW$u(2wg;%r()3UH4rbA91psk?A#P~lc6z0Z|b%6ky8vd_wUU$Z4VQ$Coo4%0`h{4dRP@ov zQtyJbv1cnzT`s!e7a3{q%C)oP+PtjdPHu+h_m-5Oo4@7imR&78k4^130;g$}S-3q; z3YR>UR9toNd%D54^BnmF50+HdRsPK?Pc6yu^)wBelX>8=o*C1mn&mRh0V}v;EaSN6 zUMk4y*~xWD9WQr4(z9DZkloRdxMTV_t1cIcL}+xs)_?k|w)T(fw>tG!vNP<)iqNgoaLJ{miJv=vkwV_cQ2cz*Zv&SP53O7d#L&*YfgFV)}lMSaOO zvx}c@iCz12c~Yo_R+=Y+{QIsQkGChj?AmatWg#PnhnIT-8^ijyTCJNrt(R(g=_o4j zOm2)?Ew*UOD+{IAWsaqbCT!fPsA@hYd_=jqFYzp4k+27^`7hD;@H;AAe#`6 z%qwd>0^(DbFdv#YHCMLno#AV>h7zrrbCumPj{dRw9Xi=-?H2K%C$D;4wT{}|S@Bt- z@QQ9zlWflv8K&>cp4PWte;MX0bLsB2q?wzVqEFm3FrHH!_}#>BW_fgP)b6speL=B& zI;vh?WvX6oWh)(RnB3ghtV5cnHso&Fc$V*us+R2<$t&+}K3?r@F;P)SX!%VoFYdDm zO%pc%@bmI>-zc~Ba%-Nkl4mECj7 zoWl<}SBAx1@F) zR@wA0fL(57py%-&Cv2|eno8+3-DD`Zk|&}cno+s^Z*t!L==aBN?Krc_dgX_j*q2&d ztab@P>mFO!9^dM#=_TZ`$;@o)(F0lKUdQKuQoE`AZT{&$)7#d|KP!Cr=J@QgcZPjG zA1#`-eq|Z2!OnmS>u-g7ywUvX*!RfM%l)&)9KPeHjMfwhWi3kg|7yHWSYpThCF>3^ z3tBJQlA~Z@JRv$`&WZ;QtoGL|DHpwU_(QqRJzM7^fqm)qJd2AKyqsOrdu4@xfbK6d z_kig3OChnMhW{A^+aKRPsB0rKX)2rhBTj`C8uJxBPZb%@>v-|3d&djE=^N8`i?uwD zkC{HC_jJ2gi^!^uLbP<&SvLc}=os z%k!SzGt)g8`T7FZ^ts!9eBtY%8QkZ79?ksh+&{;5oyds5|_qb zE`^Uu4xO3o&bT?wT+Y2<>#fJq-nrGekHq`7UkHy4ULiG|?Z+98cWyqOoYAa#ii}=? z!7dsMi+8BcJ3QYAg{Mb18dja%64qmT8xF`Zg@(-TP_Dib<6!v)=S- zoc-CWD!SKe+ti}Z;zE~BH*#vJYG~W6XqnPf>+!C7mhz+Z?kiuXu8w!=S*j=hhv&Ia zNWrP8(>i4vxPy*WJUw9fScYxSGlsd-{)tG6{PB+1U+Q*Co$Zc8;M?$T4Occuv`w+v z()@K@YPX6=6K`(diYL)Zx>qb}7B|jG`Ne;2d(?0JJk{(OQE#XIys~fM?S!L(NpB}w zKK#8*sMb0!@QeKOm#@2Ob^P}1k>9!dk<2^Z#uoKA_V;I9y2aA@>8f4vsxs&0T0uLH zU#MmE%YCDwQW(Y*zw6GDZexe17i(NLDLSa~_Fvk3=aT>0-ba?ol5c}*?PZsG_)_4X@Q_E_{s zzgs8n5m1<#=zK+Z)`YM3opu+$u07CA@AC8>hhtwD_}m!$Y%gVtUTEL) z$1``Owub}b5gyjY0|9a~nJs=@-}bgo(L1*N;kzz}lw_kF#Zo5OZ&@pRG|znbwPN;( zJC!m27JB8ZXI;s8Hnz&%Z&8lR4mZzr6+CATj z%v&DXUt6pnrRP0orDhJp!k)C{1-cmr7@3v|l+4~NeMtBX?N^;K)cl*{5l_&P>RxY+?7WbsgQ~BKCT(Rh3|if`HurXBrc2pz)7K>%-TQMt3N|)|`aVib^SaIbK)&kc z-ZjfE`bW4d$=OgUd}5;F(VpVa*oT@)Z^SIP|1((4IX{ET&o?}3R#MRKtP>KUS*J=u zukT6Sb?@f;OSwRVB{aY%xZ%<9xZr8d~@H(^C{FBy# zJ90HnafNuwEhwHe!^(AebZ5s5&;JakUdm1Q((f0uPfquv>Av~>1x2qOz01lAPSi7e z#4sf%s$h#euZHa>u8vz{5I`Kd3@ey zRqxuCDU*UX%DKKj&Sjzbys;tl@`i*%+oB`3M=#nerc%N-GjR%w;+Dn+2HDo^FYl&p zcxhd{q2%vggBzuXUR{2qduXWuThSu_1dDU5dD{GC$;(a|Y;)W8Y1cdJ{|tVeUSS(v zaa)xNtw}4gtK{&ya*cm_`9qd(EWdc3Z{KmoK|M8j-nCbcQ#UWwj0g(dv)8+7!`GPs z`bLqVtD>_eTy);!*4M)F)Wf#3*yi(m|Ex`nEGaTw>wX@2csU3F~?71~* zqOAYkhoZ|XayjjaZ$^iROcHW4a`pHUd+cq=r4uvDn$@JHJZjdMawGGqiQ!gn2j)z5 zn}ouyjn{NpGmpfayeqkrJ)o*o{3om8Qq9n{NB`WKuxZ1@9SvL?Pcm=+Ise-JK8v=< z=ye*Z9G*c_Y8l>TzuMpB5#$xZ$db_f+9m3=+QKcbG@L?Lc~(jX?F$NW3Z1)rzVnuA zmll?HGw*U=zP+{N-nql!;Xo$Ghjjp_{cE z9*G&x3#zc``o7dPZqH)ZUM}fC#p78vWs?MM>nu>@@OZ-@!}w)=)ITAiNlOJ7BvpQe zTCcBqpS5MhO_S`bJ$LWPN&6ej7u>RZIlAP|`t58BkF%(VK3SP%J84SKRQUyLD^4E|Eqxxi?p)@*88_!A zX?4x2%Crb_v(zsCU}8|*GHHJjzv%nym%5)-}|H`&% z#%SGo`Fg2wh}FBFd<{ih-!_;;sA_s$2_kJq4yn-rpU`vdE!=*1ca+L)Js#B`o1%jC zwyitm)yDB}>$zV_KfZhXdbV$NY*I~cTh^5slSFsM8$3F}YqM0i&#A_E3y*N~p^BGM ztExUFx1H z!$Lvkxk}-AnO(OeS3Iw^S#&P(`qyvo#C)Blr%ZmGVRKy|%h%xTwBk=|s*nHtxS!b93+M5+S=`7c+BfASq4+=J1iYc+$5aQ$@dF=kzRkziWv-R%D zhHLV+1<&|;(^aR1?UL4kjYnd(3r%4v4lSJ*c42~_){B=YDU-we5e4 zqgijdbsL0owN3ZA9T|FGuvjHVc5{rtt4WQIjW+NZ&s|dcTk3LVXOq9r!=;g0DY}#A zFY2>jDEj@%b-i$3$Ys~qoc=Egqs#LA zHrezEMoU_`PEnZ__2GQIzNqNF1M}JL{BR0+prI-4=5b!~Xw8|Xt2b(job(<{RJX3( zr&qn|&aIlB=RY0a|NOq1?aC!5;n01vZr%3q-x?X#yw}6y>q?jP3$Dbx3)yz7@sYaH z+Pg|SGM$_k+Rt^=k*dAvqk3RccG>5mT+Q>!qT9~0UiVwrJI|P-v}?+1vA6FIh8>vm zXy^BUqd9AjG#Cc2Ubd+6+UeBv+j||}U1B=aY07@t(p-`tE)FZ+PWa>^-lxr1HJh z-M#Oh$p?M^zCv@S)x<;RUq`IJdu>8dR+`_cXIHj19d=coU&6?KHhN#z3+wohUyIG; z7PP%tt-DX?ZhdlBPQ_|#X}>2E9RFm=|Fw@=@%&zV?Gv}I%j-{+I&Qm_sp=KgdBDrz z$)o~?bw^$tU3LHBUW2*TE22uHCOv6;SMDz55tQ66`f$q$%TwEmCrqde+Bm1{`qZa) zudTQ5dDN3qrnmKqeE1(t$L3<^DF3)+R`dToV|}>x)jLKz?b^vFWESsZt6Uo_&r$1G z_+Vz$W`Cn=mC)V(uD9e`+7dxi=S}&aVk*BWD?YD_-4yk_uy4M>L#;pF3cr@^O7_T@ z?bqG*r8@a@JRgg4&32|!(hiEe%NZD^G!-6y9xbt}*#F>O+ltoY?QT2lcORX0rbO|& zxyHP5e|nv>IKxx6fibK|xHpS*&mvK9p`EZEw5@!!fbmp3*B&qp5S$S>5v(-c^4*b7_<7)WQ?;)kS7rEAP(Fnfa0LiR83UrDDCU58vpg zeqsBr=G0auvM_p*h0WyiqB)_FOY{CZ{b$(fS+@G?wii$GXH5uI&0%qNNiaH@o7}Yc zskB?@$@43P`{z%(zD9k=ZP^$z@$Ww>R{Kp^8n#_%%87HDE?#Xn*WEh!ZedLB_Gs^p zZ40m4aB4d6Rw(fEw3Y{*tCXAbJLJ@&zYdqb*ZMAs+Zw5-duZD7=wiL8s@sF6GDSyv zs4&?!zI_{%`D)e7CEeS;OT9dQ&`UGQSCj2?-eq04{nnzz=4)LIxw>$%(%rMTTl-y>Y74zA*&eCOe>d-PWILBtxz+Dex2E(wD1PV3!1rVVYwB7( z#kJz9zNuHj!@qL-yx3iQNpCZEzxnY~$E5F^^m`!sqNhJ}g5B1jtiB!hOMO58*1ohl zW%-h|uJXnY>wd-uOyx1^|7dysNASJvR@w_M&(!mK#rxL0(a>|E+U2c&Cd-3QdH1b! z^_w`a_}~F{g`~amAIt)d-TY{tx_8aN*Ar{&cQ23qc42M#sppvj`%k*W&b{((&*`7l z)m)o1!$o%=tK<^=wxs9t!3leQ$tWvtbIW@0@;`%D$$9@)tKS{_YvGYu`=I zFHS|){AcEbJk|6P5^8B#QpS+L_3x_ak1v~#zS#0s(D`Td`QOKjKYa*JagaG4G-auF z(^|@_T%@HmF^5+@Jo+L%UVN>xUT|6W3avbuvQ6z=SEtVo+Qj7K!R;Y=EV%J#N$%F! zDs#904yn*Kp5@(C%)7k!MF5NJgH(rx`4_^LuaMH?+kZiL%ayBb-3N3#rOU-+{WT;0 zGbq2~l-ufGW10QZaL&|AwZV_vcHO>H;N<-LOwgR^62BL-I`5xu*SS90TDB+g*ao4r zwuAq4p1e=D{WZ@!baAU9d-C?C7hTWuyM0ad%KA2D?Kr8Oby@M4O3RYDE9w)t)i1D` zP5Jz4W2|tX-_qO9Vyk>>wmEM5cd;y_p5+*Ws3uncx5oL8OIf}Ae>5C7eJYXjV0-fH zrgy5_Vz_z#GiWGW*>rlvyzN#~Ra24{TXp;1H%Yx|xbE8OB^r}NwmMcll=RX3cJN(L zwFcANlV8qnWO=mR)Vg@r_E}HgWM<7)X1-CPb$VZ^S8>^qBR$W4=6$&3uc&<0{e}I? zKd%fknjW8wHf&eoqdRHg0=dQk3;6XlbJ47mv69{xi&t6kDRAYOz}K z-qrle!p57e^Sn*}+OmC3E4yyHXvcX5u_==#A7m-ATM)9|@yo4~89ghmbtty%a+(tu z7&Xm(r~0q5H5R$B>juFSexU2;V? z%KfxSdY{fpO~E>+XJxz#-7Q45FJBH)G2ij)+Uy_&Mb(RU)lECO0&|vTglUIlgw3$g zw=Y@>@wHnw(dC0v-)sQao57PQkP=bnuK08{F3^*BkTKerm&ZmzpfsN z)mhuSM(E@ERX6?Sad#bBWnMIgN%YwoN%MjtuT{q7dsTTg-mkEHRVtdmy5~|A+s~`M z=|-oQFFn$)C!^|nW>HYq-Ops|wC`d+YrOKR`aDVw79J2e%qU$H?J0SG!XC>x4+L9&eVKaL`{nPo z-(;UX%&xF;XC0T*x&C?Ym8lv%b0$pi zGFK3&+ioJI^ar>dU`oDkj7){ZvTfRMK zo}cwRKi|B}fG`2RmtG%d+-c7}zg6%*1C!J3pr~@jXc2d=gC{I3OvNq;Zmo$@ zn&Xy;zjC36jVQ}Ig{lb_wyP^cZT>B}uTVPkuc47eU;nIrIUbd*kMy$r>dc$=HPM##@v$Z!gM9@H_r;pLp0s{K>e2YVpyTIEq$-ac3Vs&F{!lgg zgMkI}{$iD-T6*T@VJ_#Sne}{k&b>5cZRw`J>3ejK+}7juy5XU^=fQ&qQ|6swcsz09 ziSHsCgY+00{9Y$}1#MWepwMLXx46}(uIRtAIMG>9vTMe<-t`un`uPvtoxsIDrLpIU zN>$2vE!MSLc#j9Z>M+0U`*4Q;R>^{S&TlmjEW1)KRIsp>A@rE#36`Faw_7T57VbS2 zcBSQAQ}DZ$zxj`B{t3WE$@cC?`u!qKUo_zWrgmPrS4nfwqKs5cTeTMI*Y~r zcZ)X77yQ2e!-67rnR$n=bUlB)ZSO1nsC9aoe}%KlOy}%;=n*BOk;bcwb$`!0s_%G(}>>MmY>*YmaPQ>*6aJL)&yW(Ix;`kcD`gfff4$%j)Wu+Mnv zzAtpvCKGwbE$b$h*`9m#di(9mDw;;|e{cItykU01f_eL+yC=?zW?y@8bmfQTwlgBm zJpOm_aJteYz+lt0(yqb^9 z^{mgrjKTB>SE4 zaMq*otyj6)xO?aDoy)uQH3Y`bhbS9Iu-I* zWdfI{-vbecbB+&WuAO$e{Z(|g&)U5n%LIP+PnYOAwSAegb&$}t_dy(i7LU(19#~iR z^4{V-Uz#5&J-&Q5TJvPs@7*uFji0P^jqY>SW2(5d=1urU<_SW@S4HbA+pPI!m@bjH z$2`mJh!#AN;afY~y7k9jU&1cW&@MF3viksk~{@!c!r( z9M5(Juaf66D%mz`_p4gXRZ_8=c*0dJg`Phx)%5b}aPE`{JaB-8XP$9vd!XJ**N}T1 zSwB{=tS!r|cJO=Tk?O)zd$cg>ky)%pT20zn?az;W-)3%6-==kP^BP?b-!QSIZ=FOY z2d|d-&^{rgHhZDurtc#9ybRjsy)z%{wyarhx%Te4Q@g8G9g;=+7n<^zI68%GX=2SO zO{@3A+ZxMttWQY@Mgb5d<@-gK26zdFL#x-IvY z=AX5yc-oWA+`4RwYt^i0+D(<*?(el|8`n-wroCHb4|?ZpxfJra+d8PFXR7c4hN@Yw zyRRSG*1P*fcSwZ)&Xg+x4~!*mx468^3hv0&)Gl3oP-V%SB}*nP@-$tp(jfX&d-ZIQ zMX#qEIk^2}_~glDed1l4*5Bv;8@t8Eb!m6(-+5(PDqA+~NnzZnpTjVrxWVJW=i7#s zcg0?n?)xlvy?UF|7Hh@ja!yZub2B&`Bm;FtC!S;|y#Mkn^XCk)Jv+7tZrJ;tft7b= zNsv%|W!$f1kJ!@gQ#;Rg7iIe!JaFC|)wAjLyFB?F-t${@p6|2?_bfU6(CETrfl|5s z`_w+&KD%9Uc8bW_WgH3`72RQC8=GtvD8HU}^@8|Y)}-Ap%(kqNcysfSTa;{z!lo8A ztxH9drX=TCD)a{|zHPaxXVI@WJ1ttPpLU*Yc;(ibTk>VK_BXYN%P(_R7+jjM_PDd_ zgab})*S-mG6-=7LQ+Bla&Ren7cjPDUxvh9d`Q1IqX{TZx!Z^-}aGY14zc#BRZIauB zje7;dHN`c9;zMQ{-Dgxi&cWQ$CuA`3xZPIeRk7LM%VJJ!o^f1+=g!+rtG=H1dS8Aw zZuPsFR|3~A{o%2F&ygATlp=Gr)O8bj3OsHfUvG1Da#llkXqV{P?P0Hy3~nug!5;c4bS$ zvx|?EGv!KJ=A_@>vBrcc$7{;DYKfR*cfQ>8&5X-2TefK1r8&W?oSeL_-gV)7{yI=w zJ}@`@uT$=Y$99q-?Ma(ez5HYgH+X%R^E`iQ%;(#4Qo@|Q*Qa)>r?@VBcHK-aJAC=N zS#M+gXXoxYIQNshsj6qC52K{u=ij}3jL#yai>yDb`KuEZ)K_{*V@E>wZ%a?M(eG1=~(da(nXEtw>Aoa;#|GC0>ub&t`XCCoXYM z6ma_U(o_9N+yjHfJ3biq*LzJavs#tPa^l?6W4peDv1)oX-S7%py|(&VuI9oCe}bOB z^a6&Wvwz#&eeLb9_9tTIJeRRgtfgI9A?>d3^c%@~y7tc*V79jdH9@*wbTF zHwtNMYL|Y$!@F?H@0IQicFR`QI$y82&iOfKm*O`;MZ-gneP*0g3vPADNu1;~rRFe8 zpPz?UlV8F_-MOK!@17KXwr_RZY_C0TOYAPX6!smnW}hB<^6#t9J*!zQZijDcdzm-k zf?)j*8)2oYPq91C9NrXbANu%|T_;1~tIGB6cCyYb23^ZPYFV1@+PeJjqwoBFWuKvs{HRl zRnjFrp&IX}8#*qRPuzL2U-|CmXEH+7E46-wu5eIhNs;$@%Kfz0mg`4feZvEPUoABAVPZOB)_iV=3yO(m8FBkWoyUB9W?_4IKX{Yx&Ef8BU z@qU)q)VIfN!X`&V>PuZapS(Zg_Y$>`wvgYNGk0ux6zAj>bISOchfIO{jL+}2FK=s1 zxHRpz#-yG08iykFH4@e|o;>EqR?YLl;>&uKDCvEF4o%CHdv0_scZ>P!hY$8!s5_;d zUb!qf+3N8{>C$+u&z+ijTX(dqX5p(i_^ZiQJ6X)pk<0Vox+AamyI;Pt*XZn_Gc(R) zMHi@9pW~@H9W&|B6kFqGo|XqsJkWL9G54a?)uO7KW$j8l*F-noxD>6s&Lc*KI<_(_KrDTUet1XR;9oJ&Vv4Pn^j(IU$U61V*a@WObN#ytv6RoNYNH8 zOT8(o!m2sBoL#-v{ayH!rR?XUEX!3@CL%(R`9WvbX9gU&oR%F zT0wjLE-VtV4C7;UyriqO#=&sAYD7H0mEyT&U(a@Ky2*Fr%cqNWnPFUE?>rONq|aHY z>fU6wZ9#R{+uln1fZJ;f=U={<<`J}{#ZzD=-=1mPw5Kfj&(NVD+~i=nUT#*&ql1^; z%|CkSn#jt`d_9k8j~vQ^mpt{;>A%45!0=^7T$6vmhwXDQ5SJ)f;TVY`u;$~%^A9u5KitNiMD<4Tw8 z$@r_iLeD2ge^%A)f+>f}wtbl<^k~wABH>Avk|z&7p8P(r_u;xTPRrKK{dD+H?>DRL zT_-PJXIpp6>1t_`LC=*PIVYSsEqRw_aB<4;9eBK9?NkN^1~!H-BCD?5xR5nvX~x#6 zt$%$NKEJ8#Ef_ap%A1nsjGhq@>@shy3+h_Fzm1e$V=;k~>1n>ulC_GS0YUyre2(ki zx^KztdYrJ)TI!`~r;uE&|CHm7-abuJmLGQWRN>uu@|dUHo|(Kd3|2ZW&n+AFM0^Qd z@QU@KZ2H8d@+k^6hkcHr4Z3t*nH`r~wzPMhW zWyRFp%WgScUc^qgZ?bjlm`_ii}-L!VJw3{K<5VCD*gU8K?XQtQA=%*~r zT$r_*_t>|;%S0Z0nI;>|$FeZmdF8n$dB?cg_#D33UER5mC2zw?sozh{w{=F{e%p3= zrOxZE_mVgbrz}~+dsNG7QqfdZPlYATulRSo@y%Jaw#90q{F+TiRus!`v$ZY`;+g-$ z?crNxM(G{#%Dp?aB+qf0PV4@>XEOjp}U|e)KWvTYV>rsiV`+j$1F1r-Abxq4s1)fQsZ!}oHaBIKY zD%Br+qh#uYyIXmW?g(^h&eUS{Doo!L(9*PYb@L%d3zlzetKt^^agKcRcGcCzV%<{@ z9-YQ==+?B$*(aC}yD`?ftMD#SS4fR(Q(U&od;PDab#AL)`5voXckdC0w|9i_JbxBd zP0ri0izh#25N@7OBp$b_e{-dhXvN|mfhBgk_b~kZx^-)aRc_Jdpl#;oR%h*768${l zSM4L0c{Aq;CAh_%^zNTi(Puly#K@@ZK||R)_Nn<>*bgsVbXj%xwY{a?e=lljySOxe z%F&omyftRm`cnPoc}E(uZd{HE_Rr+jE?aAz*~?_b#^2H)^6+2k>RnR`?_7Jfa`qO! zCi6=V7q<&q|1;9vSnm5LC&!b^@bU!jCFb@j42%s1>`OJhK4+(rTqlsMK}+yz+}zv0 zCSJZ7mVPrOM%ro4_LC6@Q{NOmJE*AAAi`ewP1Jm8PSBN;-p1)IH_w{0CZ6RJ)1GZ7 zvGva}pL3I5xy2_v&JAAY%%32ls`d9tk>T8vfkAD>2Lm3cq%V0r)lS7E^|agT3fY8< zw;x(RR`4mZs^2xic^EcO8)9=o^re6Ll@od>XL&g)n3D%$T);=|z zG=XbFk4kF9NsAM9k8O`8zfzlj#eCX>=p$>_PhDm*U4S{ri|z4-C-V=VS162&jcnI@ zd|_`aldwnW_qRsUULlu%f0B)pDp|Lvzk3xKgsCDJl>t} zH$Bd8m+ODow^8e>aY)QN-DQ_PGe23lQnx+mLF8whrUEaH$L!7LZA!PzdU0?1rK-8J zdwWkBy!{xX@497cKjU(drl~6?ab2C$WGSJ1y{CBlAr()n;??5O+U2Kfp4`!`H~B5- zb;2PtlQU4utLDHSH+G3YON(`9*DcRdSiJ1Wl72q(w!?bQC+u5Zo3~}r{L9JNPp=(+ zG-avwxwTW4YKN~>^xv7uJ%>AF{t?wTo2wb{Z{Dp^ z(PhVehksjq)N4xr^tRJW@3U$;c%IswGI0){ZSkZ+gEc!Ca=2Rbi*Lw0yD`s8dFij# z%&WnN4QA9Xo9}g}?eh+Kqgx!TiME$GZPItJZ)D*tb<2@r_If${$?UDO?krQao2oF? zX6w=|E2F1OQFUo)s(k!sm2YHS^!E_WBMbM}I9k2EJZb%|oyk|s_v$i=xrtlO_&nju z?d)uhkZnI1m?}Q4SQ=qdIPWFH+g;`S0f#PfWP5_) z0TcUDua}YMik?J#Nh|#E>)y2wUSTS;*KU&ers%!HEy<_F;RRI-?yRlXJMxCb;IKJ!j$4@bImJX%zI$*)LPx#0f8T~F%Wu?r+AvtEG+3@He8qo6_1XIhzZox&c;>Es zyiw2Oe5aYGP2#o>HG=Pb@uB1xUa!J z85XP4LY6&?-N0RTO^mxirt*%>50B@nUSHl$J{lagFgEPfv#p^`=a$r`g>UtmbYJWn z+r_!B9|pxd{~)ig@b>tO^bG#C>nZEM?GK4{-lzD{b&~Qc&3lzv6JA&rR-P;H_|G6H z6YdoCHte+O+SR#>SSkXgB%E~=6qP^8?T>on8S2>NWy{dHl%eT4-wUgV?MJHJJGtXk zHti6XHeVhZU-Et7FMp?9vzJWae)?nXvFD~6yi??CM2e)3=k(R>c(mqL(4MQgrLH;4 zvZhbB`1-4e`9Q|DSr;xQOj)WO=t*+XNUnzLQr14UWtXn=+Lt&@=PTywd*Nr!u&`&j zLW6rj;T^80|N8Gqzt|q2mQm}uB6&xixuD2lk3eTFmZe5a=Q+7PHF2=?)a#Z`4UiX+ zHI$m~%$uIkF}ZB>f>rKq{nj6MuU5aFt|jlZ>Z|RnRVnK&LW55y&gg!-xP4XWjkxRE z9oMegnw4C*`9_ZWk&@tf%gtB!?9Se1opO2(i{jaj340$}#6MW*{UnuvHJPQT?yAYg zWAn~U-hO1Sg^I6F*zGBc%30TEaGm`6+~(KSipulSTXOOU-C+(a@+<-&b*tu zAGWp1_1;6n6`oPL6YdAxdM++KH78(`+S8s0{qy_V z8U9WDaW37@Dukn`bmg1xe{YFZ9{(}Rx2`Gt`Li{tdzJq)Y_UFiYr%yp7gN{&@RJYD z)98`^&!AEFZ{OBicb%`4^BOLlvBS~r*mX^wlhdO0IC4c+O!r{;z!fyl&1m8Mt+mQ; zWvYB#Weff@WDEOmum9C_xyg|yU+?Djpj$%h#ZkJ_<@0MUPSl&O(RZx&(jLWYr?Y~X zt_Wx~wKH9rvb_{RV#%!j~mD@9ai*z5o<K~q8m;AbH)#ZZHvI#SnuhX-+Q>kcKIEm@P z5*=MF$!|eH^;&(?KZFTAI^DQ-pZ0m*SF7um_q}>#sHMG@Wo6-0Rm}obXU#C7r93h+ z#V@j}18s#D1uu!7_h`_6-t?B;DUhyVeeaE&icBgh<$D~<0 zKU#B_rq=JaZaY-uo@6ake&*AZmEuASHdB3Cdy3~>T)o}vQm^7N;gwfcw07~o4V66> z-(vpmn0f7o>hEi>YH1z1Q0^79=-25LR>4k=-oM(OOuJtqbVRMaQ}I8;9}bzvf806c zmV{miJ{j;)L|3oy2CtV8!_J_tm0$le#N^ycI;a#jKXvut-aRW$O^dzF+s^P$wP)&_ zk6RfgIZBH9-TO83%DT<3%u9}SwY)aq_;9bA^O008d+(*C>XNd5IuzvY)f8ubdA*=; z%hi3xv$lQN{if~i&-ph`It4RMw>Wl0aB`D{4RhnuM|-0`Xw}HBnJrSGzr#kMbi4J$ z?SUsgsb<+lrfg`>e&z4a8gjEFJ#^Q@8sA^P)qGc7TH0E7VNO#kOCML_@i+Z{YR{_| zTCy+sV(#~4xxdbS#pSvubB{KD7LNUVVp8p$_~Q4C4Mqj5UMpkXL~kjTXm;UcvT!?- z*L?f>(+jLM1#Q_oy@IAbzq*q6Lt&|-GXAKlwxiP}k*Pc)6DPRVXS&4ru1JijleSZr z*c+X^ujI^E&0Mpovg_Rf<+N3Pt=uZ$@O*R1_jMN=?PM=qm3p3EE2QL=slVxywJw*W zSNk2o0KKgxSLZD+Ipn)?KCgJj@@Ki{HOfl(0{j<+8BKmuP-x>Qh^~ zeZP{ipV5=_o=lz{LEd>ROI?^IIkkyc%70qVKjpT$YUM0Lb*{g!@(1Pz4?#3 z%N|!dsb|s2r}$JgSu9%D?)iA~K(5T3-(?JZueQWIy7%P|_ZcOh%#F9FoD4Xq5#=;_ z{)w(9`};I}+qZ-s(dN_eNp-%%&+7c={41^BFML1let-Dhv1WDl?KW)-nR|QYytno*<-V>LdQ$MJ zvwGrB&Q9I*R7)~J_q1y*{rrI;f>_lIOQok5|eTT-wFBJz>L=IQ;AT!U%PwT|Gt?n5wH$0Qd z;hkA^qPFw!|6p|Dz{z)>HY?@_d8%!j zvb5r)N=cu7<=Lwa5~gH708-x!lK=Z%})yXIU; z4tV|7c-fU@%X~jRQUB=P-7ePH^E9Sm{+X`T`Bs}lUd5jEoc>8*O8p-lr{IbIRR5{g zJAPSJ9p;}Ko_gz1qT!;stC%;}BQ` z%V0fMDaByLtLJ$k%j#3CZu;xEj@|ceZIu*K*!QYQ+GvmMsz3{7ji`-3AJk?YS%2R0 z@wMH`i>gjWonJCx$*BUp8leR5?^+JhA$6-99qog%H+zS^WSAXw`g-!-`4*nCe-6Cd zI&~7`0jOi{v)rZ5W5B8<(p^hIJA0Zz_(|K7Z0!Y zYybN3X0VBq+wJ+PLK|aB{xihvGS1)m;9YYQ0E8Tc3^n087pidyvgV&A^=FW0T+GiNGU zKSgE1Qq7tPlC_rqSbO+4O{&%2s-3*m!v4dqJrku5{rk+Xbop2AJDV#CJe7|G?@3jx zl7F<%X2o3T-qpHY-o864zJAzlLz{Q=;ilB4TTJKQg-zcrWbyaD`h}DSkJ)DZ zP}sfltm*1CTtN=~YBopIZRQJdJN4PNxAb4z^<_&yNLf%-!@(n6j_Ylf9e(!s-3P8s z$F?o8;Pr@&k3XuZ;TY8?#OC>J{o9%yEmoIi6)JiJXa@Nw@fXJN=B>Cl=X#iJpvkfA zoSH$igU@JwVQIhR)#P>Yq{XRrE{4BazJb2Fmw)R`-f3;c)7>(C%FVu$GyXGlC>u_w z5j((qdP?6-h$DW|ap_*)vSn$9`QO z@Ky4Xto?Ssj@wVR-HCAjXZi2J^cePRj)Rh%mNHM1FLQgA^slT<*|Rz{TYBxW^SPzW zIX_?AHHzXqcP;9H(LMeJ%x4V5&slZ5lz>*leL67PZ~E5lqAdJUPJ7OK1e~9F^n2iw zzib5zGU1yHAKK3O`Zh4gvW{)O+>+}547)K#{?x_V9=lD&ny0vU>=$!5NB-i&lvvhet(bT2R3e9gE*%rxN@^-wUVdl2; z=z>?`YqjIc_C@Ig{7d^-*w4F(@4je)=;Iw;)hqrosI87Z9=_BwYR08&Yt*-&Juh+I z_Rb`x^rFBO&GooiLd{9yRT|3NY#)U_gS}|>lH{7_hJvPEA z$o8ZSW9ZfIt0zeLH!gi7J^Q%Az8Aqci@!=w|CvymwPQx!^plHXzdcoY@Zpc*;V14A zpB5x)zJ0-#tvSOZQ!>CyNc+UKZ|gkuZn@nkwcmfWBF1^!rPE~rn+~tMe|N)=^-nLo zT(Q--%l!1@KBJ|1f>NK1`WJY-?=Kaq+tQz(yM%Xzm&4aJk=K8x?qp$Ink~w;^L1zO zGo|~vxi^Jm!;URJ<`{J+@XdsYC+!_$1Vw$bKifXVgI-+dQ4pEm8c zxA!FJ)NH5fr;aN9uR~hOLmrv0boB~XnLNoirmB9C)a$VP`rwmNWkT(|YuM)($bVo> zRQ}H(c>dB#kClb3>x^&LxJ?PzyNXMaot>qi?s3P_9_>E1v~I$0@x!t0Tx}l+#5@2>PSyJ7K$X^&Cu#^~4ynbWzBX3XE` z@Va8#lRr7j1DxZIulu`HGu|>9a%D#L`suIDW^S~v+<#~B?FR-%k3WfTRldPrRLx+i z-WZfDtK2N1=XXHSELy7JEBoqO&dYOtm~(Q^FAX?dw!>AcTK>$Q3DWLArns*&zO`cA zvKpV*cc0qky?iX3`=T;&%L(u3<)_qp*P1wfXtbSDwC@Jf-d&X+E>~ai@BSY8#G~bK zU&XOAXL{eCwBEeS`(~i!a|PKu-#s7gJ*uCYxUeHEc~ilyvV^a9fBz`f)egNpU1lTq zj}>$724C&(hz)u>>BI%IEBfDijJ9sg?dmg#FDUx7gPldr@zx}*zc2SYC%lwSF@4p2 zc-OR&qUF+A&Y3?wPOHdlxyjPI6pl>QhuLpJ9=i^p3qrszGK?SQ$fa0PpHOBs5o$3=F<1{ z*wXX2^7{p!oDdQ}{zx^_{(1Q9jJ7*2Ckwy*QB~2^@_gvf)1-YMDPpd-^#$p)y{CTG z>GoVbo*rzimy}m~f7KzwlylQmV^TflD$l>?QLv_G&I92aDf8Gx=gnAaaPRrFX_stY zdzM@a`@y@?aN8vNj#+JLe^+d+eG_H!gtJ^TTbb8jP771vPWMg1Cr(XqkXyE6!-ex9 zzh6D7oces_hg)6OpP3ihoSGX`>bvdMO`a)hov+)3X!)((9slm^tu+%<&d+#xNZHjf zs{cCkg{t}fQ5#LRA6|Ru!GqcB-`jDgbBX;f`n34GVxC~*+m`10AG!8y`8M_PF2CEK ztjf-d-8=awPN?RbeCe8}-u9tF*;g-?WpG;+zlpog_og9tZa{5U^QF5?SGGSo^EbEH zY)1EI2|HVc$%pMurIxcUs_!t+U8M8F?_%%Kw?ygfCC-B{Q zY}@LY88?qBVu4uiwzy-nx}*{_W~ZzZzJBffjlC&XzCE}U<&>wl>vo3Um8E?0f(kr5 zysPB>bGqK0dVIg5LWwcIQd~mhE$7s;_Md@s}CDQwRth4rhFx9F{2UXm-m zL;2pi{q1$@U*6SRtS6Nn9vjnfS^v)wRn6tH(qU|0cpDy{F;8Yl^|E}n{;%~_S>{#C zIl_E>MPGVZc=Ijw(M`XpS)j7w@8%e;4khD*NA~zxH(6ivl6|7db&!3>JMGsy>||RW zH$JjFF?)G?v;gPFt2NR>hhBfUE!FYn-Y)rx+FzQca=sM(RkrlS-mbSrszD)_W=6L> z+4*p-?|bz-Z%+Ptw(RPYR|%yy=UabonNZtyI&j&emtH|DA_?^}R_$JItDn7cug+vK znY62Q4Lq~6mos`r{PE4R>y{~JE<02my4dUXf_2lH7ETS2wrqR+{lc3Xk+=&FqQW)* zsFYe}r~aE7*WdP~UdVUL`qpGszs>yxUeoMee-q_+HTS{`{+=)9Qo=mZcXuD$wd)1^*Eo2>jmC9@%L7q_zP9-*yZo+w|?ne^>%mpIp;LD zH_6r)L~oS6kCysTd?Vt~@jUT}tSKw{cD@Rm@bc+i{a4l#eA?L}8f7Xr#lJrlE%Uhf znT5x3wVnPErR6LBW?e~lfAKq|?ZLjKroZ)=+rM{&OV0RVal2v75|QQXEUQIdeDFIR z`lz}4m5X`x7O@YnKfQ8V=6UO^xz@ice@iwRu9S}h9o@whh2h~MRd1v8cR-Sx;$<5>TvoJTU z6EDjTz1?==P4)Z0CtIs_87+#~?jHG5}cl)Y^vX(Etb-tWp z{G03kXK~gimZh_Vo-A#?YyH7&dE-+LhR5pav*ulz`uNpr_0?0(27G!hmzr<7aM3|c zudq$0f~G9OQ9yesktC;EyXbeueq+tsF5i|eQ(3NP|M0o4&CNp>7E}u!{ME#9Lg7k$ zgxS6YUzR-;caNDdA*R$PpQUBjvbmat8x}X%oKP-Tczom8f?c;>n=i9<+oN_;^1AHx z!b^8Ia@e`$om5=laf~4<*6YfmO5O73-TB@xZ%FyO-~RG;gZ9&fTOYRSOj^2PQpi>z zf33iv{wuRudW1|iya_Ejrka?%P3d&kx&jr~iApyM`rc%6oX#_ORko7-6>oOv>UX-g zB(`g;%`=$KQhb2(LA}>o+sw;vZP)4E6Fu8>Wef8I-}H8A_4_~DnVWwm?=4afvdUcX zh4+DFQJ-wXuWwszCwTj5OCJ0eD!_TGw$F$y`;2dE!QA_jvrqq8FKfqnpu8q6?ZKDN z;ckUOJ$ZCGw%Qy7U);XE%9pdv<|(iz9rLK?y2HKdvxVcgdrOmFc1^rAb*ss`S?*qc z?|9m!RwU@?2u)cUwh3P&8!ERr>bG0;uExu|=S|u9Git^)fo~VQ_4ood&JS3?e#uq}-QPWL>Z-R{?N_`- z3|3z3N{R`%#2Nh}ka6jQa!vL8om?JYnD$NmR(#9t;n%q4px3U7JJi#5uiu_;U9nc{ z#Ab7gr=P;+yKGh6{-2?At!CxUJ4w!+QVe}>I{DgW=O2p9KC^U1;}6>d-#8^aR$EQ~ z7$&eZ>Q~+^8`IuJUv(!fUF)ta_;>}+e+E9Web&9pn?sg$UX+c$zD*-a?YdCp7U#ek z&UY074@K9^J?&?6E?tF5WP#`b=2@@#rvI_c9_VoRK)Jr9v)SO|Q#kXq0MS1?H-z&C< zmx>3dp4)Ky>FOiZ&#uMn^nLr|(Ei;w3p#%)0^S)bT`IcycExRTI2H1| zuJ5!wdGd+8-{byZw@xkp)bJO5t1sRvkB$&czcTIGGk5hOk($++@n>53g6i)6mg&># znE#3c04e4=b5>*lk_A({D#s_U!z^Kw65O9HQx1rRUq}Vl+DtZKWJhk8ZJ!HP;KN*S5j#BSeoz&UP%NC{c z)cV+!B^sK4Qs&3sWt`JEKjiAo#aqp0?awlMzj-U`&f8nQwEUxS*q!Es)@*IEICH^!@6zT-)@&Ud$LoJb$et%s>aChIs%0 diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/walls_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/walls_LR.jpg deleted file mode 100644 index 319427ae61797777fb5b17a78d5a84c595aa7b86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13280 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 coords.raw - - # Then, build the "system.lt" file - - ./generate_system_lt.py 32768 51 < coords.raw > system.lt - - # 32768 is the number of monomers in the polymer - # (which may be different from the number of coordinates - # in the "coords_orig.raw" file) This number will vary - # depending on how long you want the polymer to be. - # The second argument "51" is the average interval between - # condensin anchors (IE the "loop size" in monomers.) - - - # Run moltemplate - - moltemplate.sh system.lt -a "@bond:stage1 1" \ - -a "@bond:stage2 2" \ - -a "@atom:Monomer/A 1" - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - # - # We used the "-a" command to set the variable @bond:condensin to "2" - # because we will refer to it later in the "run.in" LAMMPS input script. - # (Of coarse, LAMMPS knows nothing about moltemplate variables, - # so in that file we refer to it as dihedral type "1") - - mv -f system.in* system.data ../ - - # We also need the table of bond forces used during "stage 2". - # (Like the system.data and the various input scripts, this file is needed by - # LAMMPS, so we need to copy it to the directory where we will run the sim.) - cp -f table_bonds_stage2.dat ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - - # Optional: - # Remove the "system.lt" file created by "generate_system_lt.py" - #rm -f system.lt - -cd ../ - diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_visualize.txt deleted file mode 100644 index a5b46dc8a5..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_visualize.txt +++ /dev/null @@ -1,131 +0,0 @@ -NOTE: VMD DOES NOT ALLOW YOU TO VISUALIZE SYSTEMS WITH MANY BONDS ATTACHED - TO EACH ATOM. (IF IT DID, THE RESULTS WOULD BE UGLY ANWAY.) - -HOWEVER THIS MODEL ATTACHES APPROXIMATELY 60 BONDS TO EACH CONDENSIN ATOM. -IN ORDER TO PULL THE CONDENSIN MONOMERS TOGETHER. YOU MUST DELETE THOSE -BONDS (of type "1" or "2") FROM THE "system.data" FILE BEFORE YOU CARRY -OUT THE COMMANDS BELOW. (...And backup your "system.data" file. You'll need -all the bonds when you run the simulations.) - --------------- COLORS --------------- -In order to show how the polymer is distributed along the length of the -cylinder, I recommend to select the -Graphics->Graphical Representations -menu option, and select "Index" from the "Coloring Method" pull-down menu. - -After doing this, you can switch from a red-white-blue scheme, to a -rainbow ("jet") scheme, by selecting the Extensions->Tk Console menu option -and loading the "vmd_colorscale_jet.tcl" file located in the "images" directory. -------------------------------------------- - -First, if you have not done so, download and install VMD: - -http://www.ks.uiuc.edu/Research/vmd/ -http://www.ks.uiuc.edu/Development/Download/download.cgi?PackageName=VMD - - - ------- To view a lammps trajectory in VMD -------- - -The system coordinates are initialy stored in a LAMMPS' ".data" file. -(If that file was built with moltemplate, it will be named "system.data".) - -The first step is to view that file. -Then you should create a ".psf" file -(The .psf file is necessary after you run the simulation - for viewing trajectories.) - -1) Build a PSF file for use in viewing with VMD - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -You will see a snapshot of the system on the screen. -(presumably the initial conformation at t=0) - -2) - -Later once you have run a simulation, -to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file - (It usually has names like "traj.lammpstrj". It depends on how you saved it.) - If necessary, for "file type" select: "LAMMPS Trajectory". - (However VMD should recognize the file type by the file extension.) - Load it. - - - - - -##################### PERIODIC BOUNDARY CONDITIONS ##################### - If you are only simulating a single molecule and you are not - using periodic boundary conditions, then ignore everything below. -######################################################################## - - ---- A note on trajectory format: ----- -If the trajectory is the standard LAMMPS format, (aka a "DUMP" file with -a ".lammpstrj" extension), then it's a good idea when you run the simulation -to tell LAMMPS you want to store the information needed for showing periodic -boundary conditions. (Even if you are not using periodic boundaries. -It never hurts to include a tiny bit of extra information.) To do that, -I've been using this command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 traj.lammpstrj id mol type x y z ix iy iz - -(Also: it's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. I think this is needed -to wrap atom coordinates visually without breaking molecules in half. Again -you don't need to worry about this if you are not using periodic boundaries.) - - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {-0.5 -0.5 -0.5} - pbc box -shiftcenterrel {-0.5 -0.5 -0.5} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/stage2_interior.jpg b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/stage2_interior.jpg deleted file mode 100644 index 8765cec85eef46e965adfeecadef653fe18458c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40803 zcmex=3yBhzSCiS(!nAjfI7om7R^99fUbJ zxj8vFxH#C^xp=v_xOsSZc-T4l_<4EwKx~j9j7&^S%*@Pe%*<>&9PAt*6{O++hZqDo z808pVF*6D>FbOg;3o`yc!XV4Qz{tu7axMc5Ftf0-u`@ApaQ;8SAkE0gz{JeR2$N%A z0C7PI{@-HYVP<4t5?~f!U|{_7AF4vdG-u|;o&WYumNGZq$9bCTxbE5>x3{M2)@^_) zU|{h3yng$~a=Ad0bU78ji0l%Xt7_j8JrlMFn#7B;X`JwM}sC@-xMA6uDIiG*TeFa24R-3B|ml@j}F^? z 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⁢ta9NWvZ&#C_ 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 iN&RvkRae-i)(CLp!| diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/t=0_before_minimizaion.jpg b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/t=0_before_minimizaion.jpg deleted file mode 100644 index 06600ecc99c4afc901119c1d3159e10390547c51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79709 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/vmd_colorscale_jet.tcl b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/vmd_colorscale_jet.tcl deleted file mode 100644 index 7434eca99e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/vmd_colorscale_jet.tcl +++ /dev/null @@ -1,87 +0,0 @@ - -proc lerpcolor { col1 col2 alpha } { - set dc [vecsub $col2 $col1] - set nc [vecadd $col1 [vecscale $dc $alpha]] - return $nc -} - -proc coltogs { col } { - foreach {r g b} $col {} - set gray [expr ($r + $g + $b) / 3.0] - return [list $gray $gray $gray] -} - -proc jet_tricolor_scale {} { - display update off - set mincolorid [expr [colorinfo num] - 1] - set maxcolorid [expr [colorinfo max] - 1] - set colrange [expr $maxcolorid - $mincolorid] - set colhalf [expr $colrange / 2] - for {set i $mincolorid} {$i < $maxcolorid} {incr i} { - set colpcnt [expr ($i - $mincolorid) / double($colrange)] - - # The following color definitions for "jet" sort-of came from: - #http://stackoverflow.com/questions/7706339/grayscale-to-red-green-blue-matlab-jet-color-scale - # but it was missing "green", so I inserted a green somewhere in the middle. - - # darkblue/violet 0.0 - set color0 { 0.08 0.0 0.77 } - - # blue 0.19 - set color1 { 0.0 0.0 1.0 } - - # cyan 0.34 - set color2 { 0.0 1.0 1.0 } - - # turquoise 0.4001 - set color3 { 0.0 1.0 0.78 } - - # green 0.445 - set color4 { 0.0 1.0 0.0 } - - # chartreuse 0.535 - set color5 { 0.875 1.0 0.0 } - - # yellow 0.69 - set color6 { 1.0 1.0 0.0 } - - # orange 0.73 - set color7 { 1.0 0.25 0.0 } - - # red 0.755 - set color8 { 1.0 0.0 0.0 } - - # darkred 1.0 - set color9 { 0.93 0.0 0.0 } - - if { $colpcnt < 0.19 } { - set nc [lerpcolor $color0 $color1 [expr $colpcnt/(0.19-0.0)]] - } elseif { $colpcnt < 0.34 } { - set nc [lerpcolor $color1 $color2 [expr ($colpcnt-0.19)/(0.34-0.19)]] - } elseif { $colpcnt < 0.4001 } { - set nc [lerpcolor $color2 $color3 [expr ($colpcnt-0.34)/(0.4001-0.34)]] - } elseif { $colpcnt < 0.445 } { - set nc [lerpcolor $color2 $color3 [expr ($colpcnt-0.4001)/(0.445-0.4001)]] - } elseif { $colpcnt < 0.535 } { - set nc [lerpcolor $color3 $color4 [expr ($colpcnt-0.445)/(0.535-0.445)]] - } elseif { $colpcnt < 0.69 } { - set nc [lerpcolor $color4 $color5 [expr ($colpcnt-0.535)/(0.69-0.535)]] - } elseif { $colpcnt < 0.73} { - set nc [lerpcolor $color5 $color6 [expr ($colpcnt-0.69)/(0.73-0.69)]] - } elseif { $colpcnt < 0.755} { - set nc [lerpcolor $color6 $color7 [expr ($colpcnt-0.73)/(0.755-0.73)]] - } else { - set nc [lerpcolor $color7 $color8 [expr ($colpcnt-0.755)/(1.0-0.755)]] - } - - # set nc [coltogs $nc] - foreach {r g b} $nc {} - puts "index: $i $r $g $b -- $colpcnt" - display update ui - color change rgb $i $r $g $b - } - display update on -} - -jet_tricolor_scale - diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh deleted file mode 100755 index c23b222fa1..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh +++ /dev/null @@ -1,19 +0,0 @@ - # First, rescale and interpolate the positions - # where the monomers will be located. (This step is not needed - # if the coords_orig.raw file already has correct coordinates.) - # The first argument, 32768 is the number of atoms in the desired file. - # The second argument, 1.6198059 = 4.25^(1/3), tells interpolate_coords.py - # to multiply all the coordinates (scale them up) by 1.6198059. - - ./interpolate_coords.py 32768 1.6198059 < coords_orig.raw > coords.raw - - # Then, build the "system.lt" file - - ./generate_system_lt.py 32768 51 < coords.raw > system.lt - - # 32768 is the number of monomers in the polymer - # (which may be different from the number of coordinates - # in the "coords_orig.raw" file) This number will vary - # depending on how long you want the polymer to be. - # The second argument "51" is the average interval between - # condensin anchors (IE the "loop size" in monomers.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt deleted file mode 100644 index 1d30ceb170..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt +++ /dev/null @@ -1,57 +0,0 @@ ----- Andrew's comments ---- - -The two-stage model at the end of Naumova et al Science 2013 uses the "30nm-fiber" model, whose details are (somewhat vaguely) described in the supplemental materials section. - -For the 10nm model, - n=128000, - L=200, - U(alpha)=5*(1 - cos(alpha)) - bond_length=1.0 (=10nm) - sigma=1.0 (particle radius = 10nm) - -30nm-fiber model details: -"The 30nm-like fiber was modeled by increasing the volume of each monomer and the amount of DNA represented by each monomer by a factor of 4.25, while keeping other parameters the same at the monomer level." - -I interpret this to mean that, for the 30nm model, - n=128000/4.25~=30117 - L=200/4.25~=47 - U(alpha)=1.17647*(1 - cos(alpha)) (5/4.25=1.17647) -To increase the volume by a factor o 4.25, originally I thought I should increase the "sigma" parameter from 1.0 to 4.25^(1/3)~=1.6198. But I suspect that the bond-lengths between monomers should be fixed at 1.0. If that is the case, then, perhaps I should increase "sigma" from 1.0 to 4.25^(1/2)~=2.061552, and keep the bond-length fixed at 1.0 (which in the units used by thsi paper, corresponds to 10nm). (That would increase the volume of a cylinder of radius "sigma" and length="bond-length" by a factor of 4.25) - bond_length=1.0 (10nm again) - sigma=2.061552 (Yes, this is less than 3.0<-->30nm. See below.) - - - - ---- Excerpts from the Supplemental section of Naumova et al Science 2013 --- - -From p. 18 of the supplemental materials section of Naumova et al Science 2013. - - (This section was probably written by Maxim Imakaev.) - - In vivo, the structure of the chromatin fiber can be complicated and many details remain unknown, particularly in metaphase. Given this uncertainty, we simulated chromatin as a homogeneous “beads-on-a-string†polymer fiber. We consider a 10nm fiber, as the pervasiveness of the 30nm fiber in vivo has become increasingly contested. In our simulations, 77Mb is represented by a densely-packed 10nm fiber of 128,000 monomers. Each monomer represents a 10nm-sized DNA-histone complex containing 3 nucleosomes (around 600bp). The fiber has a persistence length of 4 monomers (~2.4Kb), which is based on earlier estimates of 5-10 nucleosomes for interphase (14). Those estimates arise from the assumption that 5-10 linker DNA fragments, each of 20-40bp, can collectively provide flexibility equal to that of the 150bp persistence length of DNA. Binding of proteins to the linker DNA (e.g. histone H1) and interactions between neighboring nucleosomes can further constrain dynamics, requiring more linkers to provide the persistence length. Due to the tight packing of nucleosomes in metaphase, we use the upper limit of this range, i.e. 12 nucleosomes. - For the consecutive loops on a scaffold model (the final folded state model with the best agreement with Hi-C data), we also performed simulations with a more flexible 10nm fiber, or with a 30nm fiber, and found similar results. The more flexible 10nm fiber was modeled by decreasing persistence length to 1.8 monomers. The 30nm-like fiber was modeled by increasing the volume of each monomer and the amount of DNA represented by each monomer by a factor of 4.25, while keeping other parameters the same at the monomer level. We note that a classic model of a 30nm fiber is much less dense than a compact metaphase chromosome. A textbook model of a 30nm fiber assumes packing of about 6 nucleosomes per 10nm of fiber length. This model predicts that only 28% of the volume of the fiber (a 30nm-diameter cylinder) is occupied by nucleosomes, assuming a nucleosome shell volume of 328 nm^3. This is much less than the estimated 30-50% density of nucleosomes in a metaphase chromosome, assuming a diameter of 600nm, a packing density of 50-70 Mb/um, and the same nucleosome volume. (See also (15), which gives an estimate of 0.14-0.18 pg/μm for DNA only, and would give about twice the density if DNA is counted with nucleosomes). As follows, these fibers would have to interdigitate, and fill in gaps within each other. We account for this overlap by assuming the effective diameter of the fiber to be less than 30nm. The effective diameter was chosen to make the volume of the fiber equal the total volume of all the nucleosomes. - - We accounted for topoisomerase II activity by allowing chromatin fibers to pass through each other, while still having excluded volume interactions. This was achieved by using a soft-core Lennard-Jones potential with 1kT energy cost for monomer overlap (see below). This allows for changes in the topological state of a chromosome that are known to occur during compaction in vivo. - -Our simulations of a two-step folding process show that Hi-C data for mitotic chromosomes is consistent with a linearly compressed array of consecutive chromatin loops. Whereas mechanisms for formation of consecutive chromatin loops have been proposed, the process of axial compression is less understood. Chromatid compression cannot be accomplished by increased chromatin-chromatin affinity alone, as this would lead to condensation into a globular geometry (14, 16, 17). However, mechanisms which locally compress the fiber of loop bases naturally allow for anisotropic compression into a shorter and thicker fiber, with the same width regardless of chromosome length (18). Differences in the duration or efficiency of the first and second stages of chromosomal condensation provide a natural mechanism for condensation-related proteins to separately affect mitotic chromosome length and width (19). We also note that the axis of loop-bases in our two-stage model does not necessarily form a continuous and rigid scaffold (Figure S26). As follows, we remain agnostic about the molecular details of the chromosomal scaffold, which might for example be formed by a network consisting of protein-protein and/or protein-DNA interactions (20). - - 1. Polymer simulations - - To perform Langevin dynamics polymer simulations we used OpenMM, a high-performance GPU-assisted molecular dynamics API (21, 22). To represent chromatin fibers as polymers, we used a sequence of spherical monomers of 1 unit of length in diameter. Here and below all distances are measured in monomer sizes, set to be 10nm unless specified otherwise. Neighboring monomers are connected by harmonic bonds, with a potential U = 100*(r - 1)^2 (here and below in units of kT). Polymer stiffness is modeled with a three point interaction term, with the potential U = 5*(1 - cos(alpha)), where alpha is the angle between neighboring bonds. All monomers interact via either a shifted Lennard-Jones (LJ) repulsive potential, or an attractive Lennard-Jones potential. At high densities in a confined volume, the details of the inter-monomer interactions become negligible due to screening (23), and we therefore used the computationally efficient shifted LJ potential. The shifted LJ potential allows for a short-range repulsion by truncating the LJ potential at its minimum and shifting the minimum to zero: U = 4 * (1/r^12 - 1/r^6) + 1, for r<2^(1/6); U=0 for r > 2^(1/6). The shifted LJ potential is one of the most computationally efficient repulsive potentials due to a very short cutoff radius. - - To allow chain passing, which represents activity of topoisomerase II, we softened the shifted LJ potential by truncating the interaction energy at Ecutoff = 1 kT. At energies more than 0.5 Ecutoff, the LJ potential was softened via: Usoftened = 0.5 * Ecutoff * (1 + tanh(2*U/Ecutoff - 1)). To avoid numerical 19instabilities in the calculation of U at r ~ 0, the interaction radius r was truncated at r=0.3 via: rtruncated = (r^10 + (0.3)^10)^0.1, which introduced negligible shift in a final softened potential. For an attractive LJ potential, we used: U = 4 * e * (1/r^12 - 1/r^6), with e = 0.46 kT, slightly below the theta-temperature. The attractive potential was similarly softened at 2 kT and cut off at r=2.5. Unless noted, we used a softened shifted LJ repulsive potential. - - Polymer models were visualized using Pymol and Rasmol. For images with loop bases highlighted, a base of each loop and 3 monomers surrounding it in each direction were labeled in red. - - SECTIONS 2-5 SKIPPED - -6. Two-stage process: linear compaction - axial compression - -To simulate the two-stage process of metaphase chromosome folding, we used the 30nm fiber representation described above for its computational efficiency. Simulations were initialized from 30000 monomer fractal globule conformations; fractal globule is a model for interphase chromatin organization. First, random consecutive loops with L=100 monomers (see above) were introduced, and anchors of neighboring loops were brought together using harmonic springs with a potential U = k * (r – r0)2; r0=0.5. To avoid abrupt motion of the loop anchors, the force was gradually turned on over the first -300000 timesteps, with k linearly increasing in time from 0 to 10 kT. We used softened shifted repulsive LJ potential for inter-monomer interaction. - -Upon completion of linear compaction, axial compression was initiated. This involves following changes: the repulsive LJ force is replaced with an attractive LJ force for all monomers, and the chromosomal core of loop anchors is homogeneously compressed. To achieve the latter, all anchor pairs separated by less than 30 anchors were attracted via a potential U = step(d-3) * abs(d-3) * 10 kT, which implements a constant attractive force between two anchors if they are separated by a distance larger than 3. The interactions between neighboring loop anchors were kept throughout this process. - -To obtain the contact map from this simulation, 50 independent runs of 1.5e7 timesteps were performed, and 250 conformations were collected from the second half of each run. The contact map was calculated from all conformations of all runs at a 30-monomer resolution, and was further averaged over three 10000-monomer blocks along the diagonal of the heatmap. The latter was done to show contact map at a relevant length scale (0 to 25 Mb), and to achieve a better averaging of the contact map. - diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/calc_table.sh b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/calc_table.sh deleted file mode 100755 index aed66719f0..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/calc_table.sh +++ /dev/null @@ -1,8 +0,0 @@ - - -for ((i=0; i<60; i++)); do echo "$((i+1)) " `echo "$i*0.05" | bc` 0 0; done - -echo 61 3.0 0 -5 - -for ((i=61; i<=4000; i++)); do echo "$((i+1)) " `echo "$i*0.05" | bc` `echo "($i-60)*0.5"|bc` -10; done - diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/condensin.lt b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/condensin.lt deleted file mode 100644 index f8dfea089b..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/condensin.lt +++ /dev/null @@ -1,47 +0,0 @@ -# This file contains the definition of a molecule named "CondensinMonomer". -# (This particular molecule contain only one atom, but that is up to you.) -# Later, multiple CondensinMonomers can be connected together to build a molecule. - - - -CondensinMonomer { - - # atom-id mol-id(ignore) atom-type q x y z - - write("Data Atoms") { - $atom:a $mol @atom:A 0.000 0.00000 0.00000 0.00000 - } - - # (The x y z positions will be changed later with move commands - # You can spedify charge and other properties by changing the atom_style.) - - - - # atom-type mass - - write_once("Data Masses") { - @atom:A 1.0 - } - - # pairwise interactions (between non-bonded atoms): - # - # U(r) = 4*eps*((r/sig)^12 - (r/sig)^6) - # - # Note: when sigma=0.8908987181403393=2^(1/6), the minimia is at r=1.0 - # - # atom-type atom-type pair_style epsilon sigma - - write_once("In Settings") { - # I usually use sigma = 2^(-(1/6)), with a cutoff of 1 - #pair_coeff @atom:A @atom:A lj/cut 1.0 0.8908987181403393 1.0 - # In the 2013 Science (metaphase) paper, Imakaev used sigma=1.0 - # with a cutoff of 2^(1/6). Here we are trying to reproduce his results. - # 10nm fiber - #pair_coeff @atom:A @atom:A lj/cut 1.0 1.0 1.122462048309373 - # 30nm fiber (4.25^(1/2)=2.0615528128088303) - #pair_coeff @atom:A @atom:A lj/cut 1.0 2.0615528128088303 2.314014792963349 - # 30nm fiber (4.25^(1/3)=1.6198059006387417) - pair_coeff @atom:A @atom:A lj/cut 1.0 1.6198059006387417 1.8181706490945708 - } - -} # CondensinMonomer diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/coords_orig.raw b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/coords_orig.raw deleted file mode 100644 index 9137c70616..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/coords_orig.raw +++ /dev/null @@ -1,32768 +0,0 @@ --25.8563 0.5868639 -10.5686 --26.7104 0.5123159 -10.988 --26.6472 -0.3489721 -10.3989 --27.477 0.09032793 -9.96323 --27.5656 0.5432849 -9.07679 --26.9532 1.30193 -9.02479 --27.7767 1.68179 -8.50491 --28.3972 2.40457 -8.91213 --28.6132 3.17136 -9.43966 --29.5915 2.93084 -9.73989 --29.9486 2.90331 -8.78678 --29.5668 3.82558 -8.58056 --29.4603 4.69627 -9.07626 --29.3895 5.66981 -9.03451 --30.1683 5.95262 -9.57885 --29.7252 6.82771 -9.62399 --29.3815 6.72967 -10.6049 --29.3359 7.11535 -11.5251 --28.6608 7.01853 -12.2411 --29.4269 7.23933 -12.8807 --28.8974 7.95352 -13.1355 --28.0615 8.41522 -13.369 --28.0899 7.83209 -14.2049 --28.9177 7.60378 -14.7609 --28.5783 7.72824 -15.6631 --28.8091 8.6176 -15.7699 --27.8292 8.72143 -15.4435 --27.0719 9.11061 -15.8328 --27.6533 9.78633 -16.3367 --27.7805 10.078 -15.4008 --27.4267 11.0102 -15.2806 --26.759 11.2425 -15.9727 --25.8124 10.7779 -16.0688 --25.9429 9.74176 -16.1052 --25.4567 8.84701 -16.0595 --25.0517 8.38721 -16.808 --24.4227 9.04521 -17.207 --23.8866 9.76185 -17.5133 --24.3909 10.0475 -16.6904 --25.0046 9.89792 -16.0027 --24.2884 10.043 -15.2759 --23.7492 10.8581 -14.9341 --23.4663 10.2023 -14.2305 --22.567 9.78524 -14.4336 --22.3801 10.3667 -13.6503 --22.207 11.2232 -14.0766 --22.1804 11.7239 -14.9411 --21.7644 12.6471 -14.7781 --20.9193 12.8327 -14.2212 --20.6343 13.0464 -15.1856 --20.0922 13.5451 -14.5286 --19.2983 13.914 -15.0082 --19.4023 13.0675 -15.5298 --18.5232 13.3107 -15.1504 --18.7586 12.7611 -14.334 --18.131 13.2514 -13.8647 --17.6729 12.5626 -13.1865 --16.7235 12.2766 -12.9417 --16.4151 12.9808 -12.2597 --16.515 12.6115 -11.3464 --17.2797 13.2961 -11.2699 --18.0935 13.8348 -11.2771 --19.1087 14.0856 -11.266 --20.0859 13.9469 -11.2803 --20.6702 13.1886 -11.171 --21.1132 13.6779 -10.4824 --20.7554 14.0923 -9.66475 --20.0092 13.3717 -9.46904 --20.2154 12.4286 -9.67692 --20.3212 12.0637 -10.6268 --20.6477 11.3656 -11.2997 --19.6829 11.205 -11.3344 --19.8476 11.8356 -12.123 --20.6059 11.9227 -12.7203 --19.6468 11.9213 -13.2611 --19.1986 11.5456 -14.0954 --19.4092 11.422 -15.1036 --18.97 10.6398 -15.5632 --19.2307 10.3891 -16.4246 --19.7998 9.63451 -16.5879 --19.0267 9.23752 -17.0947 --18.9718 8.51511 -16.4976 --18.5581 8.14381 -15.6756 --17.8601 8.72615 -16.1132 --16.8864 8.95457 -16.1283 --17.2573 8.65394 -17.0059 --16.8834 8.877 -17.9317 --16.9804 7.93611 -17.8517 --16.3517 7.18904 -18.1058 --15.44 7.46366 -18.4049 --14.6079 8.00931 -18.3901 --13.993 7.99908 -19.2032 --14.6716 7.33714 -19.1401 --15.2908 6.5047 -19.3095 --15.7928 5.64885 -19.0565 --14.9593 5.79763 -18.5547 --14.8818 5.10065 -19.2857 --14.9343 4.63209 -20.1751 --14.819 3.75787 -19.7859 --14.9014 2.77884 -19.7258 --15.8254 2.34137 -19.8546 --16.7518 2.11938 -19.9102 --17.2858 1.38873 -19.6316 --17.6051 2.23194 -19.3101 --17.4759 2.2122 -18.2935 --16.555 1.90863 -17.996 --16.3599 1.18543 -17.2873 --16.6597 0.2817609 -17.0068 --17.4192 -0.1762871 -16.5829 --17.5676 0.3030899 -15.6993 --18.4786 0.2816979 -16.1894 --19.3873 -0.03042487 -15.8965 --19.1305 -0.9198991 -16.3767 --18.8053 -1.89678 -16.5631 --17.8952 -2.29912 -16.367 --17.881 -1.7091 -15.4693 --18.034 -2.7152 -15.2978 --17.6676 -3.55164 -14.8756 --16.7023 -3.52134 -15.1619 --15.9315 -4.17398 -15.1337 --15.0123 -4.0393 -14.7833 --14.3289 -4.18259 -14.1178 --14.8199 -3.5703 -13.5025 --14.0673 -3.45279 -12.9118 --13.8652 -2.4677 -12.6746 --14.7013 -2.51433 -12.1349 --14.7591 -1.57501 -12.6047 --14.3849 -0.7913011 -12.8965 --15.0335 -0.6417921 -12.0814 --15.9264 -1.16147 -11.9717 --15.4966 -1.75734 -11.2786 --16.3186 -1.89513 -10.7004 --17.3447 -1.99074 -10.7706 --16.8078 -2.28381 -11.5947 --17.5234 -2.81286 -12.0644 --18.1535 -2.10741 -11.7565 --19.0461 -2.18436 -11.3109 --18.9286 -1.33458 -11.7392 --18.6673 -1.3773 -12.7462 --18.9847 -2.20517 -13.2055 --19.0146 -1.52805 -13.9914 --19.5602 -1.22894 -14.7766 --19.9174 -0.6614531 -13.9545 --19.3542 0.1054139 -14.1998 --20.0903 0.7562789 -14.2155 --20.2834 1.58939 -14.6348 --19.7527 2.45077 -14.9298 --20.7223 2.72193 -15.1458 --20.74 2.42061 -15.9961 --19.8152 2.19964 -16.3204 --18.971 2.3405 -15.7096 --18.6579 3.23116 -16.186 --17.7978 3.59352 -16.3547 --16.97 4.12994 -16.4791 --16.5011 3.5915 -15.7777 --16.0202 3.89081 -14.8962 --15.6429 3.25724 -14.3553 --14.7397 3.4752 -14.0485 --14.7642 3.81665 -13.1634 --14.4103 3.11518 -12.5644 --14.1883 3.73765 -11.7934 --14.3687 4.55216 -11.3856 --14.3268 4.88789 -12.3038 --15.1957 5.38065 -12.2756 --15.6408 5.01672 -13.0703 --15.754 4.13848 -12.5652 --16.3934 3.81218 -11.8968 --17.3731 3.98553 -11.5679 --17.384 4.61053 -12.3523 --17.0088 4.58629 -13.3268 --16.9114 5.16535 -14.0992 --16.9721 4.49621 -14.7963 --17.4023 3.56368 -14.6457 --18.2437 3.01085 -14.8456 --18.9477 3.16093 -14.2124 --19.6747 3.18298 -13.6077 --19.7802 2.66669 -12.7379 --20.4554 2.80231 -11.9906 --20.4431 2.28754 -11.1622 --21.1143 2.59765 -10.4807 --20.9793 1.72854 -10.0128 --21.0842 1.50483 -11.0246 --20.9463 1.76967 -12.0029 --21.5215 1.65595 -12.8724 --20.7484 1.53806 -13.5953 --21.5147 1.8493 -14.0826 --22.1459 1.33063 -14.7072 --22.9431 1.84812 -14.4744 --22.7432 1.55197 -13.5012 --22.5353 0.9422309 -12.7665 --23.4761 0.6851639 -12.5404 --23.8994 1.26011 -11.8804 --24.8117 1.00207 -12.25 --24.7453 0.6228869 -11.2856 --24.4099 1.46353 -10.7859 --24.2156 1.08345 -9.92118 --23.9937 2.01383 -9.72414 --23.8821 1.55967 -8.80694 --23.1616 1.83299 -8.1557 --22.9368 0.9799999 -7.79402 --22.7938 1.01153 -6.77103 --22.282 1.33482 -6.03303 --21.7229 1.39943 -6.76258 --21.5632 2.28103 -7.17858 --22.1153 2.04263 -7.95071 --21.1521 1.81223 -7.9383 --20.2267 1.89201 -7.51006 --20.4022 2.54211 -8.20325 --20.1076 3.39324 -7.89601 --19.5829 3.63982 -7.07314 --20.4682 4.13108 -7.05735 --21.4609 4.07088 -7.26429 --22.4326 4.22327 -6.95141 --22.893 4.43111 -6.15759 --23.7141 4.5535 -5.56708 --23.7779 5.31258 -6.18703 --23.8107 5.5558 -5.2089 --24.1892 5.16575 -4.31158 --24.2642 4.19842 -4.181 --24.2279 3.45123 -4.79567 --23.4687 2.77491 -4.99256 --23.0143 2.26585 -4.25556 --22.2432 2.16176 -4.87894 --21.7419 1.2533 -4.75704 --22.0968 1.21416 -3.8024 --22.7806 0.5350559 -4.01422 --23.6328 0.2559729 -4.35221 --24.0303 -0.3617141 -3.7317 --24.9241 -0.5948691 -3.83129 --25.6046 -1.01985 -4.47234 --26.5494 -0.6524121 -4.43946 --26.4332 -0.2285731 -3.51306 --26.922 0.4146309 -3.98824 --26.4263 0.8423219 -3.24398 --25.4875 0.9672159 -3.0102 --24.7855 0.3162459 -3.03382 --24.9032 -0.1652891 -2.20006 --24.1983 0.3436869 -1.65527 --24.2367 -0.1167971 -0.8324459 --23.3077 -0.04702097 -0.4668039 --23.1737 -0.7292341 0.2001991 --22.5559 -1.46595 0.4460061 --21.577 -1.35345 0.2161661 --20.8363 -1.9097 -0.1096419 --20.7858 -1.61539 -1.07873 --21.4913 -2.36956 -0.8332489 --22.0615 -1.61814 -1.21159 --22.6785 -1.58587 -2.02932 --22.7663 -2.63773 -2.08106 --23.7854 -2.85467 -2.09393 --24.4557 -2.43234 -2.47204 --25.0568 -1.88463 -3.05873 --25.9844 -1.50836 -2.92654 --26.2935 -2.2406 -3.56529 --25.8251 -2.26259 -4.43451 --26.2848 -2.88835 -5.07604 --25.5881 -2.8131 -5.77061 --25.9173 -1.98419 -5.91531 --25.277 -2.31206 -6.55531 --24.5189 -1.64248 -6.34188 --24.4214 -0.9918181 -7.13427 --24.1118 -0.7030901 -8.02954 --23.5344 -0.8902171 -8.84978 --22.9726 -1.68293 -8.90733 --22.2013 -1.96503 -9.50532 --21.3167 -2.39383 -9.55061 --20.3198 -2.15525 -9.52206 --19.4324 -2.51221 -9.13619 --19.1059 -2.8896 -10.0447 --19.506 -3.69665 -10.5051 --20.3179 -4.18677 -10.3733 --21.1743 -4.01533 -10.9126 --21.298 -4.49088 -11.774 --20.2387 -4.52844 -11.5665 --20.025 -5.19714 -12.1984 --20.0741 -5.31846 -13.2354 --20.1441 -4.34337 -13.4481 --20.4303 -4.25003 -14.3514 --21.0711 -3.57061 -14.0453 --21.8848 -3.75512 -13.5328 --22.8333 -3.96238 -13.6698 --23.0963 -4.29805 -12.7972 --23.897 -4.26723 -12.2585 --23.7472 -3.32062 -12.0912 --24.039 -2.43183 -11.8307 --24.1953 -1.43199 -11.9438 --23.5045 -1.71444 -12.517 --22.8381 -1.75465 -11.8201 --21.9794 -1.50973 -11.4719 --21.3081 -2.27073 -11.6703 --21.4259 -1.65348 -12.4337 --21.4072 -0.6430501 -12.7374 --21.2197 -1.15077 -13.5402 --21.4653 -1.61533 -14.3711 --21.678 -2.3134 -15.1053 --21.761 -1.80632 -15.8858 --22.3001 -2.39992 -16.4375 --21.8204 -3.30329 -16.4608 --22.7742 -3.17108 -16.1462 --23.0109 -4.12131 -16.396 --22.8974 -4.42068 -17.3218 --22.1833 -3.684 -17.5638 --22.0104 -2.63463 -17.5245 --22.3573 -1.72001 -17.4698 --22.6746 -1.38056 -18.3316 --21.701 -1.1273 -18.1019 --21.3841 -0.2681041 -17.7462 --20.8202 0.5212819 -17.5229 --20.7075 0.6440079 -16.5444 --20.3167 -0.3074361 -16.4489 --20.5917 -0.8066811 -15.6528 --20.3695 -1.45208 -16.4174 --20.322 -1.19686 -17.4115 --19.4338 -0.8807341 -17.9648 --18.7188 -1.56991 -17.9256 --18.0042 -2.10615 -18.4145 --17.217 -1.69111 -18.8235 --16.2306 -1.41386 -18.5311 --16.7092 -0.9373331 -17.9111 --16.4979 -1.22498 -16.9822 --15.8415 -0.7155781 -16.33 --16.0524 -1.64982 -16.0909 --16.0128 -1.34105 -15.1715 --15.6615 -2.09726 -14.6692 --15.7354 -1.26878 -14.055 --16.0778 -2.01875 -13.5013 --15.9748 -3.09989 -13.4163 --16.1937 -4.0262 -13.2199 --15.4769 -4.06166 -12.555 --15.7424 -4.9739 -12.405 --14.9714 -4.94772 -13.0002 --15.3565 -4.93115 -13.9477 --16.1099 -5.42589 -14.4363 --15.6769 -6.23915 -14.6239 --15.246 -5.98584 -13.7634 --14.6791 -5.83302 -14.4935 --14.4311 -5.99171 -15.4273 --13.591 -6.59059 -15.5913 --12.9453 -7.1745 -16.1371 --12.568 -6.26884 -16.5108 --11.6704 -6.64677 -16.5889 --11.2363 -6.5454 -15.7211 --10.6347 -5.81869 -15.9475 --10.0673 -5.08615 -15.5708 --9.45484 -4.91716 -14.7951 --8.75531 -4.93882 -14.1485 --8.40791 -4.1225 -14.7833 --9.14234 -3.81697 -14.2233 --9.77868 -4.5475 -13.8726 --10.0638 -4.62782 -12.9383 --10.4512 -3.63414 -12.8536 --11.0145 -3.87285 -11.9944 --10.0697 -3.81642 -11.6787 --9.31059 -4.30305 -11.26 --9.60032 -5.16846 -10.8412 --9.34082 -6.08307 -11.3031 --10.0144 -6.29671 -11.9917 --10.9442 -6.62142 -11.6513 --10.6611 -6.17844 -10.747 --11.6936 -6.10385 -10.6628 --11.5512 -6.26953 -9.73332 --12.0704 -7.02388 -9.51283 --11.4924 -7.47781 -10.1873 --11.1993 -7.43765 -11.1675 --12.1786 -7.27366 -10.9058 --13.1519 -7.2406 -10.5898 --13.6418 -7.28857 -11.4881 --13.5321 -8.25764 -11.6171 --14.2794 -8.84029 -11.7908 --13.6941 -8.99123 -12.5348 --14.1924 -9.78237 -12.7769 --14.6249 -10.3013 -13.5206 --14.3375 -11.2162 -13.6007 --13.5142 -11.1185 -14.1652 --12.5665 -11.3487 -14.1106 --11.8236 -11.9771 -14.3079 --11.394 -11.8163 -15.2164 --12.2585 -11.5803 -15.5423 --12.0044 -12.1814 -16.2783 --12.116 -11.7947 -17.174 --11.8405 -10.7974 -16.9867 --11.4812 -10.1428 -17.6056 --12.0887 -10.7471 -18.0865 --12.3105 -10.9978 -19.0697 --11.4504 -11.527 -18.9875 --10.5527 -11.2132 -19.4602 --10.5049 -10.2766 -19.2505 --10.4926 -10.2592 -18.2383 --9.96593 -9.93874 -17.4711 --8.98651 -10.233 -17.2828 --8.23076 -10.7276 -16.8663 --7.69255 -11.5365 -16.4764 --7.04511 -10.9534 -16.9666 --7.57158 -10.5399 -17.6979 --7.3741 -10.7509 -18.6718 --7.95722 -10.6033 -19.4512 --8.4977 -10.7575 -20.3146 --8.9983 -11.6007 -20.4842 --8.85562 -11.3792 -21.4364 --8.02492 -10.9297 -21.2218 --7.10975 -11.2055 -21.0615 --6.36105 -10.565 -20.9116 --7.07769 -9.84954 -20.876 --7.5931 -9.45155 -21.6635 --8.37761 -9.79051 -22.2354 --8.40777 -10.5986 -22.9075 --7.50114 -10.7609 -23.3428 --8.27201 -10.6911 -23.9728 --8.51983 -11.2028 -24.8071 --9.50126 -11.468 -25.0398 --9.8036 -10.5247 -25.2166 --9.80368 -11.1068 -26.0207 --9.06524 -11.337 -26.6722 --8.25793 -10.6206 -26.4318 --8.30776 -9.93345 -25.697 --8.54232 -9.00526 -25.8649 --8.68932 -8.4119 -25.0727 --9.11495 -7.70466 -25.6204 --8.89314 -6.76075 -25.8332 --9.63848 -6.21479 -25.4451 --9.90435 -5.35585 -25.9436 --10.286 -4.89325 -26.7268 --10.0949 -4.03774 -27.2203 --10.5785 -3.15085 -27.5332 --10.3264 -2.18899 -27.3749 --11.3071 -1.83547 -27.477 --11.0284 -2.1312 -28.4142 --10.5218 -2.40206 -29.2192 --11.4386 -2.85941 -29.2217 --11.7134 -2.42087 -30.0074 --12.5133 -2.94645 -30.3289 --13.3245 -3.45081 -30.1944 --12.6231 -3.87517 -29.6183 --13.2653 -4.14952 -28.9035 --13.5664 -3.70777 -28.0554 --14.3033 -3.36063 -27.4786 --14.5378 -3.87703 -26.5963 --15.5347 -3.94854 -27.021 --15.43 -2.90776 -26.9528 --15.0983 -2.34711 -27.7501 --15.8232 -2.5726 -28.3329 --16.691 -3.08293 -28.5635 --17.0077 -2.91261 -27.6673 --17.9846 -3.26305 -27.8179 --18.8816 -2.96541 -27.3956 --19.8258 -3.00054 -27.4892 --20.2731 -3.6932 -26.974 --21.0432 -3.71531 -26.4228 --22.0423 -3.58205 -26.3708 --22.2475 -4.41891 -26.9783 --22.7614 -3.68557 -27.1679 --23.3486 -2.99866 -26.6913 --23.3934 -3.3804 -25.8036 --24.3682 -3.6321 -25.579 --24.1188 -4.22707 -26.379 --25.0067 -3.70569 -26.4685 --24.3258 -3.06929 -26.4077 --24.7793 -2.28548 -26.1638 --23.8414 -1.85395 -26.3087 --24.1964 -1.43747 -25.4912 --24.2769 -1.18498 -24.5353 --24.4843 -0.2016161 -24.593 --23.5664 0.3086119 -24.5668 --23.2719 -0.3460051 -23.9883 --22.4987 -0.8680051 -23.4815 --22.1155 -1.4125 -22.7351 --22.784 -1.16018 -22.0382 --23.6298 -1.76748 -22.0793 --23.8022 -1.47638 -23.0535 --24.5079 -2.10188 -22.6156 --25.2085 -2.8521 -22.6358 --25.6327 -3.43621 -21.8898 --24.6709 -3.66382 -21.8703 --24.1058 -4.3945 -22.2365 --24.6879 -4.2968 -23.0118 --23.8328 -3.80287 -23.1386 --23.0237 -3.57034 -22.5497 --22.3468 -3.92298 -23.2242 --21.5371 -4.25193 -22.6711 --20.7385 -3.72843 -22.3017 --19.7313 -3.73469 -22.1907 --19.7719 -3.03947 -22.8797 --20.609 -2.94401 -23.3899 --21.5685 -2.7852 -23.3197 --21.9797 -2.04976 -23.7793 --21.1369 -1.83748 -24.2499 --20.3198 -1.39421 -23.8686 --19.9618 -0.4840651 -23.5973 --20.3029 -0.4283571 -22.7109 --19.3745 0.003753084 -22.7948 --18.5246 -0.06300757 -22.2009 --18.403 0.7198969 -22.7784 --19.0691 0.9318659 -23.5268 --19.9428 1.32639 -23.8487 --19.7276 1.94972 -24.6686 --19.4553 0.9763519 -24.8638 --19.6463 0.1258659 -25.2377 --19.7933 -0.1393001 -26.2108 --18.9664 -0.8306961 -26.3255 --19.0494 -0.9137051 -25.4034 --18.3153 -1.50045 -25.7667 --18.6257 -1.68272 -24.7786 --17.7605 -1.82306 -24.4216 --17.5338 -1.06268 -23.7354 --16.9073 -1.14972 -22.9642 --16.1363 -1.66513 -22.7661 --15.9561 -0.7064121 -22.7082 --15.1493 -0.1638731 -22.8609 --14.1708 0.1030579 -22.998 --13.5673 0.4471589 -23.6569 --13.1588 0.6514069 -24.5773 --13.8787 1.32222 -24.9563 --13.6371 1.7181 -25.8494 --13.4406 1.16625 -26.6492 --13.9156 1.4352 -27.4876 --14.3891 0.5685549 -27.7966 --14.412 0.1471539 -26.8736 --13.4903 -0.1858781 -26.9779 --13.7806 -0.3997161 -27.9497 --12.7852 -0.6466661 -28.164 --12.7712 0.2598879 -27.6997 --11.971 0.9045509 -27.9052 --11.4918 1.75427 -28.0334 --10.9562 1.77833 -28.9214 --11.2952 2.46877 -29.5439 --11.7232 3.33069 -29.3916 --12.5304 3.06653 -28.8165 --12.0592 3.28713 -28.0584 --12.7883 3.08135 -27.4393 --13.6429 2.6475 -27.1292 --14.2345 2.51575 -26.3703 --15.1804 2.17383 -26.4581 --15.9157 1.91143 -27.1101 --16.1481 0.9636179 -26.8481 --16.9105 0.7018659 -26.2791 --16.4335 0.2572729 -25.5955 --15.5872 0.3805739 -26.1178 --14.8654 1.01253 -25.9001 --14.5621 0.2318229 -25.3964 --14.0702 -0.4297191 -24.746 --13.0937 -0.8027531 -24.8256 --13.4949 -0.7447681 -25.7676 --14.4473 -0.9047931 -25.8069 --15.0988 -1.27633 -25.1426 --16.1185 -1.44734 -25.2172 --16.7215 -1.13494 -26.024 --17.0873 -0.6425631 -26.7745 --16.1534 -0.5712581 -27.136 --15.9354 -0.9912921 -28.0354 --16.2302 -1.0986 -28.9917 --15.3606 -0.7399631 -29.0913 --15.4607 0.1021469 -29.5757 --15.4081 1.0926 -29.7703 --15.683 1.97354 -29.3951 --16.7075 1.89867 -29.3432 --17.376 1.78135 -28.6269 --17.31 2.02941 -27.6077 --16.8212 2.83513 -27.1585 --16.8788 2.02027 -26.6443 --17.0923 2.50362 -25.7796 --17.6422 1.7203 -25.5951 --18.4417 1.81351 -25.0321 --17.8929 2.43164 -24.5866 --17.8667 3.29302 -24.8957 --17.069 3.68208 -24.5792 --16.1049 3.79114 -24.7344 --15.9806 4.48272 -25.4426 --15.5136 4.97326 -26.185 --15.2777 5.95951 -26.1206 --15.7975 6.47755 -25.3934 --14.9728 7.0361 -25.6069 --15.0511 7.9821 -25.3925 --14.7347 8.11099 -24.4858 --15.0234 8.28564 -23.62 --14.5984 7.62586 -23.0384 --13.8575 7.17583 -23.5805 --13.6437 6.5699 -24.3299 --14.3268 5.99542 -23.9076 --13.786 5.83896 -23.1077 --13.85 5.42903 -22.2 --13.5308 4.75701 -21.5152 --13.3157 5.44949 -20.8592 --12.7238 5.94298 -21.494 --12.3516 6.48505 -22.2703 --11.5198 6.70707 -22.6846 --11.8851 7.16386 -23.4582 --12.2304 7.38446 -24.3907 --11.65 8.13018 -24.1328 --11.4788 8.50117 -23.2482 --12.1581 9.21967 -23.3188 --13.0971 9.11135 -23.2279 --13.8029 8.97546 -22.5626 --14.1024 9.58313 -23.2839 --15.0245 9.44259 -23.7292 --15.1087 9.41592 -22.7526 --15.3262 8.96901 -21.8587 --15.0665 8.90728 -20.9134 --15.542 8.90633 -20.0151 --15.8199 8.48343 -19.0673 --15.5289 9.36219 -18.6891 --15.0782 10.1105 -18.2245 --14.4669 9.80677 -17.5089 --14.9014 9.06404 -17.0326 --15.1635 8.15976 -17.495 --14.9351 7.30085 -16.9297 --15.1475 6.98199 -16.0979 --14.7508 7.91614 -15.9661 --15.0764 7.46294 -15.1466 --14.3953 7.41372 -14.4446 --13.8092 6.65822 -14.8363 --13.292 6.4189 -13.9991 --13.2894 5.75966 -13.1682 --12.5019 5.29636 -12.9255 --11.5011 5.2434 -12.7439 --10.7536 4.70814 -13.0932 --10.4187 3.83934 -13.5491 --10.3923 2.95502 -13.2064 --10.7381 2.88137 -14.0818 --11.2661 3.43146 -14.7193 --11.6551 2.9874 -15.4448 --11.5854 3.91449 -15.7018 --11.5552 4.35131 -16.6595 --11.137 4.74654 -17.4655 --10.4221 5.02237 -16.9458 --9.71197 5.12683 -17.6277 --8.83725 4.83988 -17.2381 --8.88538 4.65888 -16.3297 --9.57604 5.35886 -16.1615 --9.13474 5.73116 -15.3628 --9.13042 6.21202 -14.5436 --9.94948 6.79624 -14.6417 --10.8865 6.48214 -14.7772 --11.9544 6.61477 -14.7121 --11.6597 7.00546 -15.5667 --12.4381 6.8123 -16.1907 --12.4057 6.03222 -15.5426 --11.5273 5.64895 -15.8117 --11.532 5.38656 -16.728 --11.591 5.66589 -17.6646 --12.5932 5.53358 -17.379 --12.6347 5.36413 -18.3777 --12.2989 5.81521 -19.1927 --11.6157 5.14812 -19.0257 --11.5948 5.45521 -20.0043 --11.3668 4.52142 -20.1566 --10.4705 4.69271 -19.83 --9.77194 5.40387 -19.7421 --9.77878 6.36477 -19.61 --9.40138 6.20925 -18.6334 --8.58776 6.4536 -18.0963 --7.74504 7.03884 -18.1918 --7.20188 7.76355 -18.6132 --7.7134 8.33719 -17.9293 --7.35443 7.69153 -17.2412 --6.48074 7.20294 -17.0333 --5.91669 6.64721 -17.5466 --5.20684 6.43124 -18.1012 --5.47036 7.30161 -18.5243 --5.54396 8.14056 -19.0888 --4.79284 8.67187 -18.9327 --4.38714 8.86877 -18.1019 --3.76949 9.70272 -18.1709 --4.48128 10.379 -18.5119 --4.79145 10.7156 -19.4329 --5.18038 9.99577 -20.2104 --5.61257 9.8526 -21.0794 --4.93884 9.52865 -21.7385 --5.20249 8.87644 -22.4878 --5.37311 8.60411 -21.4697 --5.7918 7.87792 -20.8753 --6.6202 7.36896 -20.6852 --7.15142 8.29436 -20.9982 --7.05435 9.33876 -21.2149 --7.96668 9.54404 -20.7737 --8.73077 9.70239 -20.0854 --8.47981 10.5871 -19.681 --8.19693 11.5536 -19.5107 --7.80598 11.9031 -20.3831 --7.56485 11.1827 -21.0652 --7.80432 11.8229 -21.7507 --8.03175 12.296 -22.5631 --7.34928 13.2119 -22.5716 --7.98101 13.34 -23.3127 --8.61221 13.7687 -23.9656 --9.54158 13.5263 -24.185 --9.77004 14.527 -24.1728 --9.43491 14.2821 -23.3086 --9.13346 14.3512 -22.3618 --9.36129 15.3342 -22.4936 --8.3367 15.2938 -22.7589 --7.41589 14.9901 -22.3982 --6.66353 14.3231 -22.4849 --6.49007 14.1959 -23.4769 --6.41634 14.2999 -24.4873 --5.6011 13.7938 -24.1463 --5.91981 12.8627 -23.8923 --6.16215 12.0831 -23.2633 --5.81201 12.4721 -22.3599 --5.5599 12.1475 -21.5351 --5.96835 12.2793 -20.6994 --5.00364 11.8383 -20.6168 --4.64198 12.6928 -20.3398 --4.05812 13.1228 -19.741 --3.60403 12.9907 -18.8149 --3.15329 12.2647 -18.2303 --2.30949 12.6965 -18.5033 --2.55074 12.8643 -19.4554 --1.63642 13.1478 -19.8705 --1.3597 13.6129 -19.06 --1.34937 14.3394 -18.3281 --1.35559 13.4486 -17.9689 --1.3002 12.706 -17.2235 --1.05004 13.1238 -16.3434 --1.49723 13.8118 -15.7247 --2.38258 14.3252 -15.9611 --2.99734 13.607 -16.3238 --2.84211 12.7632 -15.7478 --3.36914 12.0644 -16.1572 --3.9657 11.5672 -15.6938 --3.2478 11.832 -14.9438 --2.99585 10.8357 -15.1468 --2.56491 10.1104 -14.5974 --2.40933 9.13073 -14.3786 --3.36063 9.05637 -13.8779 --4.33247 9.27712 -13.7847 --4.99479 9.30484 -14.5985 --4.84807 8.35826 -15.0281 --5.77462 8.03437 -15.4531 --5.99319 8.74293 -14.8063 --6.31852 9.16294 -15.6597 --6.08742 10.0391 -15.8945 --5.91921 10.9666 -15.5192 --5.76961 11.4011 -16.4502 --5.41827 10.9374 -17.211 --4.81489 10.0796 -17.1079 --4.63718 10.9134 -16.5284 --3.82243 10.3758 -16.8657 --2.85741 10.4849 -16.7408 --2.30615 11.3129 -16.5077 --1.81277 11.2645 -17.3607 --0.840396 11.3652 -17.7354 --0.198197 11.9893 -17.2515 --0.01884423 11.3805 -16.4976 --0.752929 11.207 -15.8391 --1.0341 11.3315 -14.905 --0.714034 11.9221 -14.1348 --1.34841 11.8609 -13.3913 --1.63952 12.7005 -12.9051 --2.18417 12.5998 -13.7095 --2.24902 11.5828 -13.3987 --3.23614 11.4275 -13.7107 --3.74989 10.7502 -13.1799 --4.68411 10.8137 -12.7606 --4.92419 9.8593 -12.4386 --5.75549 9.2036 -12.3514 --6.16583 9.80532 -12.9615 --6.20426 10.475 -13.7062 --6.43772 11.0795 -14.4379 --7.20501 10.6198 -14.8933 --8.0165 10.1688 -14.8465 --8.63629 10.1431 -14.0581 --9.25197 10.5659 -14.7338 --8.81672 10.9947 -15.5471 --9.49481 10.3521 -15.8232 --10.2319 9.74245 -16.2206 --9.89958 10.4054 -16.8952 --10.4335 10.4479 -17.7681 --10.67 9.4728 -17.6017 --10.8786 8.53515 -17.8965 --11.7891 8.45758 -18.2489 --11.8777 7.53139 -18.3992 --12.1713 7.42677 -19.3116 --12.6844 7.29423 -20.1393 --11.7842 7.05778 -20.4534 --11.6284 7.96778 -20.7592 --12.5245 8.31246 -21.1789 --12.0089 9.1548 -21.3868 --11.1327 8.89798 -21.0663 --11.0813 9.88473 -20.9762 --11.6194 9.68921 -20.1269 --12.6093 9.71676 -20.2664 --13.6163 9.79655 -20.0931 --13.6504 10.1861 -21.0249 --13.0311 10.9462 -21.3592 --12.5307 10.5681 -22.1415 --11.991 11.4287 -22.2519 --11.2951 10.6241 -22.3841 --10.678 11.4285 -22.3333 --10.2719 11.149 -23.2077 --9.67635 10.4485 -23.6213 --10.4328 10.2984 -22.9904 --10.6665 9.88724 -23.8537 --11.0712 9.38184 -24.644 --10.9614 9.97458 -25.4246 --11.6713 10.5648 -25.7854 --11.4407 11.5036 -25.6859 --12.2005 12.1474 -25.6939 --11.6101 12.8345 -26.2027 --11.8256 13.7849 -26.1083 --10.8849 13.648 -25.8221 --10.3544 12.905 -25.4385 --9.83372 12.1079 -25.3286 --9.10863 11.9729 -24.5663 --8.24733 12.4259 -24.2467 --7.84933 12.8564 -25.0217 --7.59603 12.4778 -25.882 --6.83581 12.5847 -26.531 --7.30478 12.8352 -27.3951 --7.66747 12.0858 -27.8366 --7.89393 11.1603 -27.4827 --8.84208 10.797 -27.5523 --8.81668 11.7878 -27.7691 --9.54085 11.4194 -28.3533 --9.38809 11.4541 -29.336 --8.95109 11.7855 -30.1588 --8.86157 12.248 -31.1243 --8.84027 11.2373 -31.3378 --8.09185 10.9227 -31.9329 --7.68461 10.8415 -30.9864 --7.34468 9.94694 -30.8145 --7.59725 9.42885 -30.0005 --6.71674 9.43393 -29.4685 --5.81975 9.54084 -29.0788 --5.15482 8.81418 -29.1457 --5.13595 8.75231 -28.1364 --5.53545 9.13414 -27.2412 --5.88517 8.66464 -26.4563 --6.56028 8.22266 -25.8375 --6.46397 7.99074 -24.8309 --6.8106 7.06288 -25.0631 --5.88605 6.65292 -25.0386 --4.94506 6.42313 -25.0747 --4.03398 6.72634 -25.3896 --4.58623 6.2821 -26.0836 --5.2129 5.8494 -26.6915 --5.48835 5.1726 -27.3021 --6.00016 5.57662 -28.074 --5.56169 6.51913 -28.1246 --4.56557 6.6857 -28.1041 --4.89687 6.25895 -29.0359 --4.43688 5.56367 -29.568 --4.52641 4.59313 -29.8936 --5.39333 4.17028 -29.6387 --5.39954 4.90034 -28.9512 --6.33679 4.58825 -29.2605 --6.3002 3.77915 -29.8247 --6.71517 3.07819 -29.1702 --7.60913 3.56664 -29.0199 --8.44848 4.07393 -28.7565 --8.83271 5.01744 -28.4563 --9.11738 5.42913 -29.3571 --10.0974 5.24037 -29.3991 --11.0795 4.97349 -29.4387 --10.5449 5.16459 -28.5236 --11.2049 5.93098 -28.2954 --11.3447 6.43796 -29.1855 --11.067 6.50677 -30.1584 --11.9495 6.53043 -30.6313 --11.7867 5.83286 -29.9358 --12.6141 5.62445 -30.3733 --13.0057 6.50663 -30.5894 --13.6109 6.69925 -29.8516 --13.5891 7.64104 -29.6056 --14.1249 7.4484 -30.3611 --13.5283 7.96846 -30.9664 --12.7007 8.47657 -30.9103 --11.981 8.81888 -30.4023 --11.0093 8.69983 -30.4913 --11.1124 8.59187 -29.5845 --10.3085 8.94883 -29.0734 --10.7784 9.80614 -28.7684 --10.0983 9.64579 -28.0666 --9.70578 10.1412 -27.3079 --9.7016 9.15713 -27.1018 --8.90857 8.46981 -27.0382 --9.29676 8.66718 -26.143 --9.37678 8.1671 -25.2922 --8.93205 8.70872 -24.6296 --9.48431 9.36024 -24.0977 --8.74272 9.45467 -23.4648 --7.91199 9.42553 -22.857 --8.40639 8.93988 -22.0876 --8.53644 8.3689 -21.27 --8.82862 9.29892 -21.0899 --8.63285 9.92067 -21.8582 --9.28205 10.7495 -21.9625 --8.88327 11.1102 -21.0753 --9.65291 11.7436 -20.8835 --9.55643 12.5677 -21.4828 --9.52448 13.2032 -20.7014 --9.03444 13.9323 -20.2626 --8.96044 14.9127 -19.917 --8.22267 15.0851 -19.3193 --7.33625 14.912 -19.4895 --7.88342 14.1668 -19.8706 --7.01692 13.7403 -19.4629 --6.21268 13.3191 -19.9231 --5.5082 13.3579 -19.1838 --6.16723 13.6787 -18.4414 --5.47532 14.4207 -18.3353 --5.3065 13.5481 -17.8596 --5.69651 13.1246 -17.0973 --5.08776 13.1197 -16.3101 --4.38563 13.7633 -16.5989 --4.4488 14.4334 -15.8491 --5.37335 14.6601 -16.0628 --5.87564 13.8002 -15.8378 --6.65798 13.5142 -15.1775 --7.39787 13.3369 -15.8583 --8.11089 13.1368 -15.1876 --8.93282 13.0613 -14.6012 --8.75013 12.0903 -14.6497 --7.79478 12.2616 -14.9781 --7.5959 12.4452 -14.0723 --6.93719 12.1 -13.4016 --7.10599 12.2072 -12.388 --7.68004 11.6434 -11.8283 --7.87251 11.4613 -12.7593 --7.19433 10.7912 -12.5637 --6.33868 11.0757 -12.1074 --6.55863 10.8774 -11.1718 --6.62067 11.2632 -10.22 --6.68299 11.4522 -9.26033 --7.68457 11.3516 -9.34793 --7.55667 11.8853 -10.1947 --7.23066 12.4485 -9.44352 --6.40759 12.7699 -9.82458 --6.21356 12.9267 -8.86006 --5.46219 13.4195 -9.37219 --5.23186 13.7009 -10.294 --5.0249 14.6666 -10.6695 --5.5473 14.6341 -9.81682 --5.70543 15.4688 -10.3522 --5.42229 16.2507 -9.76258 --5.05268 16.6456 -8.89764 --6.01752 16.5732 -8.74238 --6.62911 16.1008 -8.07648 --6.31691 15.9218 -7.16945 --6.75727 16.2534 -6.38673 --7.44906 16.3476 -7.10622 --7.70191 16.6848 -8.02413 --7.36285 17.6295 -7.75691 --7.10702 18.2831 -8.46273 --8.10953 18.3411 -8.26804 --8.69371 19.1442 -8.04799 --8.73203 19.7411 -7.24909 --9.441 19.7927 -6.62153 --8.87665 19.5024 -5.82869 --8.12414 18.9269 -5.73722 --7.39845 18.3899 -6.22259 --7.32706 17.8955 -5.39713 --7.59885 16.9699 -5.83055 --8.32335 16.999 -6.40057 --8.60232 16.1344 -5.9744 --9.25312 15.7062 -6.55112 --9.93262 16.0946 -5.8609 --10.8348 16.2408 -5.32242 --10.7397 15.9873 -4.41068 --10.8483 15.0473 -4.61938 --11.2239 14.4467 -3.81256 --11.2737 14.276 -2.86954 --12.2358 14.1116 -2.89413 --12.252 14.5285 -3.79552 --13.1726 14.591 -3.35383 --12.4961 15.3694 -3.43879 --12.2439 15.7341 -2.58923 --11.3841 15.4578 -2.26473 --11.1036 16.3508 -2.53392 --11.1473 16.9843 -3.34181 --11.0943 17.3355 -4.25812 --10.5575 18.0285 -3.84859 --9.81164 18.5607 -3.76729 --9.02434 19.1694 -3.52172 --9.03875 20.2052 -3.35068 --9.03034 20.2821 -4.30302 --9.90998 20.72 -4.49403 --10.552 21.3906 -4.74543 --10.0491 22.0122 -5.44036 --9.43635 21.3099 -5.83062 --8.70144 20.7891 -6.22122 --8.50298 21.0931 -7.21871 --7.87161 21.7378 -6.8709 --7.66742 22.6654 -7.17604 --7.48931 23.2181 -8.02182 --7.46265 24.2408 -8.19642 --7.14917 23.992 -9.09705 --7.64431 23.5154 -9.85873 --8.35374 24.188 -9.6397 --9.26145 23.7371 -9.60265 --9.69329 24.021 -10.5353 --8.95878 24.6742 -10.6669 --8.92723 24.5451 -11.6794 --9.07898 24.8834 -12.5727 --8.74298 25.7791 -13.0569 --8.07377 25.8316 -13.8465 --7.71686 25.6117 -12.909 --7.40328 25.0727 -13.7173 --6.62004 24.6951 -14.2192 --7.16876 24.1326 -13.6555 --7.98595 23.7591 -13.4645 --7.38097 23.4834 -12.7017 --7.86497 22.7313 -12.2631 --8.06629 21.7182 -12.2309 --8.35686 22.2414 -11.396 --7.83597 22.9864 -11.0938 --6.80798 22.9684 -11.099 --5.84453 23.3532 -11.2588 --5.7992 22.6729 -11.9171 --6.37186 22.4792 -12.6627 --5.62042 22.4701 -13.3353 --5.16033 21.7262 -13.8134 --4.92312 20.9147 -14.3171 --4.34958 21.3089 -14.9457 --3.45974 21.0543 -14.5971 --3.08799 20.1124 -14.7643 --3.52132 19.8524 -15.6208 --4.10587 20.0696 -16.4248 --4.63929 19.2318 -16.3324 --5.56699 19.1843 -16.0752 --5.97637 18.3971 -16.6007 --6.4876 17.9563 -17.2823 --7.40066 18.1673 -16.9129 --7.92915 17.3285 -17.2336 --7.81041 16.321 -17.0412 --8.01089 15.4336 -16.615 --8.40725 16.2607 -16.3026 --8.30766 16.2342 -15.3339 --9.06053 16.0441 -14.5637 --9.94426 15.7435 -14.6289 --9.81075 15.4061 -15.6041 --10.6846 15.8754 -15.7046 --11.4879 15.7415 -16.3153 --11.938 15.6974 -17.211 --12.6911 15.4863 -17.7974 --12.9398 14.4902 -17.6318 --13.0998 14.2006 -16.6606 --13.7845 14.9 -16.4361 --14.5738 14.8816 -15.748 --15.1198 15.6918 -15.6931 --14.6609 16.2475 -14.9097 --14.5919 15.5283 -14.1889 --14.7879 16.277 -13.5707 --15.842 16.2262 -13.4623 --15.7049 15.3865 -13.8956 --15.9816 15.0608 -12.9823 --15.6369 15.5146 -12.1715 --15.7606 14.794 -11.4569 --16.6453 15.1755 -11.3082 --17.2218 15.6922 -12.0367 --17.5977 16.2447 -11.2573 --18.0732 16.8713 -12.0066 --18.2866 16.8079 -13.0375 --19.0086 17.0397 -12.3424 --18.903 17.944 -12.0537 --18.9825 18.2895 -12.9553 --19.6997 17.7232 -13.3911 --20.0717 18.4491 -14.0011 --20.8306 18.6387 -14.5282 --21.6854 18.0822 -14.7946 --22.1024 18.8436 -15.3247 --22.6787 18.0656 -15.3652 --23.034 17.2768 -14.8665 --23.6267 16.5183 -14.9407 --23.0007 15.81 -15.3062 --22.3673 15.8483 -14.5818 --21.5114 15.9443 -14.165 --21.4138 15.2544 -14.7364 --20.5514 15.1988 -15.2355 --20.683 14.5479 -14.4978 --21.3071 14.1725 -15.2447 --22.2635 14.3645 -15.1455 --22.9047 14.0905 -14.3697 --23.8364 14.1286 -14.5894 --23.9613 13.1312 -14.6961 --24.7271 12.5144 -14.9604 --24.8189 12.5871 -13.9736 --25.6619 12.3705 -14.4284 --26.483 12.494 -13.764 --27.3443 11.9703 -13.4754 --27.6551 11.4477 -12.7068 --27.7581 10.4714 -12.4545 --27.7287 10.0806 -13.4089 --28.3284 10.1659 -14.1943 --29.2365 10.1411 -13.9867 --30.0324 10.4924 -14.5021 --30.573 10.729 -13.6865 --31.0133 9.77099 -13.4948 --30.7233 8.86599 -13.8294 --31.1793 8.81603 -12.9566 --31.8783 8.1708 -12.6912 --32.5963 8.09343 -12.0373 --33.4971 8.23352 -12.4577 --33.9419 7.84661 -11.6561 --34.0181 6.87722 -11.7534 --34.6612 6.18256 -11.5629 --35.0742 6.66139 -12.3504 --34.2041 6.08759 -12.5931 --33.4019 6.07228 -13.1654 --32.7463 6.5219 -13.6608 --32.8809 6.31311 -14.6489 --33.618 5.62674 -14.7963 --34.5162 5.7196 -14.7244 --35.282 6.0968 -15.3304 --35.0515 5.45537 -16.1148 --34.2724 6.02933 -16.3637 --33.9339 5.23007 -16.974 --33.1552 5.16241 -17.5752 --33.7516 4.9817 -18.3 --33.6843 5.8228 -18.832 --33.6578 6.75957 -18.5393 --32.7787 6.31146 -18.3152 --31.9556 6.71907 -17.9816 --31.0576 6.42412 -18.096 --30.7205 7.15985 -18.7699 --29.7438 7.33477 -19.027 --29.2126 6.6401 -19.4965 --29.2256 6.42344 -18.4874 --28.3242 6.50571 -18.0186 --28.0767 5.55244 -18.3024 --28.5948 4.86554 -18.8725 --28.3001 5.62413 -19.4981 --27.5485 5.02038 -19.6554 --27.4502 5.72467 -20.4039 --26.8666 6.27561 -19.8473 --26.0651 6.57334 -19.3783 --26.3357 7.47622 -19.3197 --25.9304 8.1933 -18.6886 --26.2324 9.20527 -18.68 --26.2092 8.73711 -19.5578 --25.2089 8.8877 -19.344 --24.844 9.52151 -18.7197 --24.8006 10.5485 -19.0004 --23.9539 10.7528 -19.5711 --23.001 11.2007 -19.4998 --22.6704 12.0216 -18.9145 --23.2087 12.8536 -18.9075 --23.1836 13.0499 -19.8592 --22.3841 13.5373 -19.4646 --21.8722 14.1032 -20.1754 --22.2211 14.8263 -19.5295 --22.2988 15.0292 -20.4628 --21.4158 15.3003 -20.4314 --20.8401 15.8031 -19.8128 --20.2297 15.9837 -19.0716 --20.9956 15.613 -18.5868 --21.2568 14.6864 -18.3197 --21.5641 13.9022 -18.7076 --21.2678 13.3029 -19.441 --20.4719 12.7184 -19.5171 --20.0559 13.5055 -19.123 --20.0186 14.1618 -19.8662 --19.114 13.8345 -20.2094 --18.3413 13.4294 -20.7518 --17.9386 12.5128 -20.5193 --16.9701 12.6392 -20.36 --16.7362 11.7357 -20.6216 --17.3205 11.4166 -19.8312 --16.939 12.1733 -19.2894 --16.2936 11.6888 -18.7263 --15.3265 11.7955 -18.778 --14.8316 11.1882 -18.065 --15.7392 11.3087 -17.6247 --16.012 11.7 -16.7402 --16.3903 10.8736 -16.1296 --15.4026 11.0541 -15.9139 --14.7383 11.5492 -15.2862 --14.2846 12.2994 -15.7144 --14.8362 12.9226 -15.3 --15.4459 12.2681 -14.8004 --14.8314 12.176 -13.9867 --14.0515 11.6611 -14.2213 --13.4492 10.976 -13.718 --13.2327 10.221 -14.4192 --14.0626 10.2318 -15.0111 --13.3039 9.76234 -15.4871 --13.4072 9.14027 -16.2241 --12.7828 8.74219 -16.8863 --12.9779 8.28706 -17.761 --13.2658 7.31958 -17.6865 --13.5936 7.09838 -16.7683 --13.7201 6.34969 -16.1261 --14.6298 5.89118 -16.1166 --15.2543 5.43877 -16.715 --16.0091 4.96097 -17.3208 --16.6034 4.24669 -17.6394 --15.6374 4.0503 -18.0545 --16.0006 3.57473 -17.2105 --15.6712 2.72174 -16.8691 --14.7838 3.21309 -16.6815 --14.1712 3.53582 -17.42 --13.3023 3.16923 -17.0605 --13.3787 2.21152 -17.2254 --13.4559 1.36747 -17.7489 --14.3763 1.78208 -17.9943 --14.6492 2.13757 -17.1416 --14.5477 1.08883 -17.2835 --14.0675 0.6063239 -18.1056 --13.5537 -0.1024331 -17.6276 --12.5668 0.02020193 -17.4539 --11.8988 -0.2837721 -16.743 --10.888 -0.1374441 -16.9168 --10.6578 -0.1781361 -15.971 --10.8687 -0.7140171 -15.2035 --11.2238 -1.22669 -14.4592 --11.4322 -2.06389 -14.988 --12.008 -2.26883 -14.2612 --11.8021 -2.98359 -13.6022 --11.7427 -2.42911 -12.7723 --12.4759 -1.83269 -12.5987 --12.3301 -1.2894 -11.7748 --11.4409 -1.54055 -11.4622 --10.6389 -1.3974 -12.1779 --10.4376 -0.6918561 -12.8097 --9.55442 -0.2919981 -13.1729 --9.05818 -0.8190191 -12.448 --9.32121 -1.74202 -12.3299 --8.78283 -2.51179 -11.9168 --8.66779 -2.72829 -12.9149 --7.82722 -3.14845 -12.4986 --7.10964 -2.49019 -12.4076 --6.8233 -1.53771 -12.2442 --7.37608 -0.8277261 -12.6125 --7.39569 -0.3250271 -11.7675 --6.96381 -0.7737071 -10.9432 --7.75423 -1.45378 -11.1053 --7.92566 -2.36644 -10.8302 --7.25855 -3.06364 -11.2714 --7.00364 -3.87577 -10.7336 --6.15385 -3.99123 -10.2302 --6.46917 -4.33442 -9.35048 --6.85588 -4.28688 -8.45322 --6.92485 -4.22438 -7.43521 --7.84734 -3.73364 -7.31931 --8.4827 -4.499 -7.42994 --8.14458 -4.92797 -6.61065 --7.32791 -4.85503 -5.95261 --6.4179 -5.07963 -6.21829 --6.13383 -4.3385 -5.66193 --6.49289 -3.59732 -6.19215 --6.53558 -3.18173 -7.10875 --5.79542 -2.83778 -7.72254 --4.96306 -2.57088 -7.23495 --5.37551 -3.15559 -6.56679 --5.89014 -2.37465 -6.14468 --5.2015 -2.52328 -5.34671 --4.78255 -1.58928 -5.40413 --4.6808 -0.5926911 -5.26923 --4.17532 0.06954653 -5.79454 --5.13747 0.3046149 -6.00534 --4.77446 0.9149219 -6.78899 --4.93364 -0.05221067 -7.07768 --5.06036 -0.7942051 -6.56268 --5.99724 -0.6720131 -6.74385 --6.46051 -0.8794221 -7.63638 --6.08269 -0.5644811 -8.56686 --5.15936 -1.04869 -8.73595 --4.67341 -1.8987 -8.7444 --5.33618 -2.07015 -9.52868 --5.74312 -3.03071 -9.30882 --6.634 -2.83491 -9.03202 --6.84945 -3.16207 -8.07494 --7.11651 -2.20951 -7.92142 --8.08585 -2.22528 -7.98588 --8.26313 -1.8554 -8.93226 --7.41993 -1.72948 -9.16865 --7.98307 -0.9160551 -9.15461 --8.42946 -0.06280867 -8.87139 --8.68347 -0.3167871 -7.91411 --9.71594 -0.4411641 -7.89211 --10.6843 -0.3265851 -7.79444 --10.3599 0.08134713 -8.58346 --10.2697 0.3620349 -9.52579 --11.0472 -0.08321347 -9.87653 --11.6286 0.3745759 -10.5749 --11.0632 0.4728539 -11.405 --10.8408 0.4587639 -12.2921 --10.9879 0.6791979 -13.3067 --10.7682 0.9769439 -14.1626 --11.8021 0.5710499 -14.2618 --12.4178 1.14122 -14.6624 --11.7973 1.7291 -15.222 --11.1754 1.44258 -15.9362 --10.9324 1.76607 -16.8363 --10.6796 1.01038 -17.4414 --9.93239 1.57646 -17.4858 --9.52978 2.42551 -17.775 --9.81727 3.1704 -17.1129 --8.87173 2.96992 -16.6664 --8.83067 2.79788 -15.6615 --8.05345 3.38484 -15.3465 --7.35256 3.5749 -14.7127 --6.5733 3.55457 -15.3277 --6.44216 4.51285 -15.5744 --5.84389 4.14217 -16.2522 --6.552 4.00952 -16.883 --6.97634 3.32496 -17.4312 --7.39032 3.92426 -18.123 --6.94919 3.90841 -18.9773 --5.99748 3.74981 -18.8278 --6.40755 2.81061 -19.0601 --6.33415 3.43249 -19.9122 --5.37771 3.67652 -20.0107 --5.88406 3.01556 -20.605 --5.17999 2.3568 -20.9473 --5.06615 2.74155 -21.856 --5.26278 3.72677 -21.7879 --4.30002 3.77711 -21.3256 --3.77028 3.35203 -22.073 --3.8274 4.0454 -22.8465 --4.32612 4.81192 -23.2454 --3.9924 5.34391 -23.9519 --3.29951 5.86792 -24.4538 --3.55941 6.78079 -24.0667 --3.66199 7.82679 -23.9944 --3.09838 8.35195 -23.2393 --2.39708 8.93836 -23.7103 --2.81642 8.93499 -24.6212 --3.69678 9.27277 -24.9233 --3.15622 9.38475 -25.7644 --2.52736 10.1475 -25.4687 --2.02056 9.99594 -24.5703 --1.61619 10.6391 -25.1887 --0.575806 10.8752 -25.2638 --0.576208 10.4627 -26.1316 --1.29127 11.0811 -26.4169 --1.2238 11.1625 -27.4079 --2.21955 11.2466 -27.1557 --1.73153 12.1049 -27.1706 --2.23972 12.1476 -28.0146 --1.82364 11.6517 -28.8169 --2.03138 10.7405 -28.3526 --2.77193 10.8821 -29.0649 --2.96615 9.97512 -29.244 --2.76195 8.95002 -29.2814 --2.96837 7.97131 -29.2474 --2.60937 7.98571 -28.2672 --1.71548 7.65307 -27.8894 --2.41524 7.3917 -27.2827 --3.16824 6.96128 -27.7384 --3.58609 6.32467 -28.3408 --3.34451 5.35763 -28.6647 --4.21983 4.97551 -28.3601 --4.67631 4.09073 -28.3093 --4.82122 3.97579 -27.3407 --4.9865 3.04585 -27.69 --4.26534 2.60873 -27.1357 --4.258 3.06644 -26.2343 --5.15702 3.16347 -26.6778 --5.53555 3.49575 -25.8098 --6.47363 3.68964 -26.0133 --6.86433 2.78527 -26.2337 --7.75779 2.39119 -26.1441 --7.80699 2.77001 -27.0486 --7.85402 3.67113 -26.682 --8.72688 3.39714 -27.1076 --9.26433 3.87325 -27.8314 --10.177 3.51913 -27.9967 --10.4123 3.61317 -27.0662 --10.5974 4.05461 -26.1122 --11.1944 4.0148 -25.3849 --11.5127 3.21405 -25.782 --10.9009 2.46984 -26.1587 --11.1829 2.37769 -25.1362 --10.7587 2.135 -24.2284 --9.78555 1.89015 -24.3035 --8.80475 2.04858 -23.9656 --8.38017 2.41382 -23.1069 --9.1574 2.45508 -22.5479 --8.74408 2.10007 -21.6586 --7.78668 2.11055 -21.8428 --6.90519 1.6771 -21.6878 --7.13302 1.59103 -22.673 --7.5773 0.6808489 -22.7767 --7.30064 -0.3216401 -22.8127 --6.49088 0.1078649 -23.1054 --6.05547 -0.6811391 -22.6558 --6.05819 -0.1165251 -21.857 --6.76015 -0.8738481 -21.895 --7.33437 -1.22359 -21.1919 --7.49293 -1.84768 -20.4371 --8.33566 -2.03589 -20.8533 --8.90608 -2.88281 -20.6183 --9.87231 -2.91319 -20.565 --10.2809 -2.44858 -21.3845 --10.5511 -2.5355 -22.3564 --10.9761 -1.7575 -22.8234 --10.652 -1.01868 -22.2269 --10.8785 -0.09519287 -22.3564 --11.6903 0.01200223 -21.7633 --11.8575 -0.9300531 -21.6613 --12.7164 -0.6115241 -21.367 --13.1645 0.2191039 -21.2934 --13.5917 1.13022 -21.0378 --14.1623 0.3625649 -20.6559 --13.4339 -0.2555331 -20.4428 --12.7703 0.4748269 -20.093 --12.4124 1.35699 -20.032 --11.8843 1.54311 -19.1593 --11.4435 2.52362 -19.1964 --10.9504 2.50442 -20.0941 --11.4767 2.26812 -20.9243 --11.7643 1.39854 -21.2397 --12.486 1.86139 -21.7758 --13.0447 2.27963 -21.1384 --13.1638 3.17036 -20.6783 --13.2167 3.36464 -21.6626 --13.3539 3.54612 -22.5999 --12.945 2.9075 -23.3811 --12.6076 3.79019 -23.7185 --12.0983 3.92915 -22.8481 --11.6124 4.52723 -22.1423 --11.1738 4.67255 -23.046 --10.3863 4.06756 -22.9736 --9.81443 3.43132 -22.4432 --9.16133 4.17778 -22.3416 --8.97829 5.10355 -21.8623 --8.60786 4.92606 -20.9822 --8.18039 5.20445 -20.114 --7.42459 4.83994 -20.5671 --6.91487 5.74478 -20.3797 --6.20013 5.15217 -20.2238 --5.53283 5.34937 -19.505 --4.81529 5.64898 -20.1327 --4.98706 5.43502 -21.1138 --3.97241 5.297 -21.2637 --4.3351 5.6571 -22.1392 --4.99583 6.26634 -22.6912 --5.90669 6.05253 -22.8991 --6.38701 6.54929 -23.625 --7.40862 6.86096 -23.8639 --7.51483 5.90886 -23.8326 --8.20067 5.3345 -23.5321 --7.96882 5.37396 -24.5222 --7.46409 4.51346 -24.5182 --6.61179 4.43492 -23.8849 --5.60487 4.44428 -24.1623 --6.04978 3.62774 -24.5164 --6.04976 2.72126 -24.2235 --6.68577 2.89559 -23.5188 --6.13064 2.47416 -22.8191 --5.18717 2.72152 -22.8849 --4.19448 2.76292 -23.0143 --3.72448 2.43844 -23.8854 --3.23201 3.24142 -23.6028 --2.28648 3.43257 -23.3487 --1.47867 3.66174 -22.9332 --2.05349 3.77633 -22.1064 --1.47398 4.54761 -22.186 --0.696783 4.30719 -21.6137 --0.869483 3.4877 -21.1113 --0.377217 2.98478 -20.4102 --0.03700603 2.06934 -20.1661 --0.478077 1.35643 -19.6521 -0.01687707 2.07746 -19.1468 --0.292439 1.76001 -18.2615 --0.209767 0.7147319 -18.3969 -0.573791 0.07830143 -18.2353 -1.36078 -0.5653901 -18.3291 -1.94696 -0.004090036 -18.9971 -2.04215 0.7259949 -19.7355 -1.76368 1.02627 -20.6321 -1.10006 1.11696 -21.3711 -0.817453 2.04055 -21.6373 --0.127485 2.34312 -22.0351 --0.714268 2.20727 -22.8277 --1.55228 2.15886 -23.3863 --1.78083 2.0164 -22.3756 --2.4023 2.35637 -21.7102 --2.04666 2.30657 -20.8 --1.21113 1.75894 -20.5395 --1.03124 0.7672019 -20.473 --1.05343 0.1444739 -21.2389 --0.394021 -0.1776601 -20.6084 --0.07389953 -1.16787 -20.3768 --0.581944 -1.75538 -19.6514 --0.612364 -2.44681 -18.8666 --0.818362 -2.48909 -17.9078 --1.32781 -2.61062 -17.0437 --1.91101 -1.834 -17.3121 --2.57667 -2.03142 -18.0795 --2.04413 -2.23353 -18.8832 --1.66868 -1.438 -19.3491 --1.40644 -0.7900331 -20.1231 --1.57166 0.08864263 -19.7735 --2.19981 0.8604669 -19.9974 --2.78511 1.46902 -20.5377 --3.84372 1.38883 -20.6488 --3.60937 2.1154 -21.4133 --3.02445 1.34139 -21.8372 --3.68985 0.5358409 -21.9488 --4.62719 0.1831939 -22.1096 --5.12174 0.08343353 -22.9469 --4.76847 0.4569399 -23.7974 --5.46121 1.04685 -24.0535 --6.32379 1.2623 -24.4599 --6.21944 0.7822289 -25.3677 --6.44456 -0.1819901 -25.4816 --5.93951 0.1071569 -24.6414 --4.97678 -0.1679141 -24.7357 --4.9974 -0.6186531 -25.664 --5.10653 -1.39953 -26.2785 --4.51117 -1.27568 -27.0773 --4.04899 -1.51147 -26.1824 --4.12228 -0.4955011 -26.2991 --4.64729 -0.08107977 -27.0188 --5.10231 0.7600629 -26.652 --5.59718 1.28566 -27.4049 --6.12703 0.4853809 -27.3447 --6.83257 -0.2407291 -26.9615 --7.35038 0.4825689 -26.4065 --7.21778 1.24268 -25.7504 --7.3245 1.11634 -24.7668 --7.35347 0.1660959 -25.1407 --8.10791 -0.3383031 -24.759 --7.70239 -0.9878641 -25.3411 --8.32342 -1.59023 -25.8182 --7.98929 -2.53591 -25.9186 --8.07641 -3.29097 -25.2649 --7.69529 -3.24653 -24.4139 --8.31085 -2.39995 -24.5227 --7.38956 -2.08627 -24.5449 --7.67036 -1.82566 -23.5838 --8.1021 -1.02404 -23.2032 --8.68283 -1.77197 -22.8547 --8.59697 -2.48785 -22.0829 --9.30183 -3.2078 -22.1508 --9.92702 -3.966 -22.0304 --9.54116 -4.88923 -22.0502 --10.4925 -4.96119 -22.0387 --10.3489 -4.70919 -21.0558 --10.3913 -5.71849 -20.8323 --10.7373 -6.10992 -21.7276 --10.1801 -6.85244 -22.1536 --9.67696 -6.05531 -22.1201 --8.7006 -5.98369 -21.8982 --8.17849 -6.12328 -21.0164 --7.46489 -6.75182 -21.2613 --7.24324 -6.54976 -20.2785 --7.73322 -7.36698 -20.3708 --7.06279 -7.78003 -19.8739 --7.29648 -7.06145 -19.2442 --7.0135 -6.67343 -18.4623 --6.94854 -6.33181 -17.4562 --7.50806 -7.13097 -17.5389 --8.15759 -7.87191 -17.4535 --8.72937 -7.3384 -18.0777 --9.14056 -7.00787 -18.9276 --9.64995 -7.91043 -18.9225 --9.91199 -7.3631 -19.7273 --9.47142 -7.68154 -20.5482 --10.2662 -8.07851 -20.8394 --11.1582 -8.52953 -20.8715 --10.7212 -9.53891 -20.7684 --11.0239 -9.27681 -21.6406 --11.8956 -9.17928 -22.0293 --12.327 -8.29755 -22.2749 --13.0917 -7.68188 -21.9664 --13.3443 -8.56513 -22.4357 --12.7379 -8.89373 -23.1247 --13.3013 -8.15384 -23.4115 --13.2879 -7.19698 -23.0231 --14.1224 -6.91586 -23.6426 --13.3139 -6.79764 -24.145 --13.4842 -7.7032 -24.5346 --12.6531 -7.36776 -24.2552 --11.6524 -7.14151 -24.3772 --11.2488 -6.25811 -24.2657 --11.387 -6.09491 -23.2574 --11.6474 -6.20918 -22.3023 --11.9277 -6.71253 -21.5029 --11.7672 -6.40091 -20.573 --11.3743 -6.59285 -19.5797 --10.7207 -6.79961 -18.8091 --11.2763 -6.33703 -18.123 --10.7561 -5.68487 -18.6585 --10.5342 -4.78076 -19.0594 --9.95742 -4.13113 -18.5441 --10.4737 -3.31963 -18.9365 --10.6685 -2.68903 -18.2338 --10.887 -1.7365 -17.9972 --11.452 -1.01273 -18.1522 --11.1847 -1.25594 -19.1097 --12.0307 -1.77306 -19.1736 --12.8225 -1.49943 -18.7032 --13.8416 -1.65464 -18.5113 --13.4999 -2.09367 -17.709 --13.0667 -3.09287 -17.6842 --13.3936 -3.62376 -16.8355 --12.6112 -3.22349 -16.3307 --12.5986 -2.25392 -16.0001 --12.3355 -1.7792 -16.8464 --11.3812 -2.13978 -16.7547 --10.531 -2.60804 -16.5696 --10.3785 -1.66827 -16.861 --9.89684 -1.24609 -17.67 --9.52174 -0.3540031 -17.3059 --9.72908 0.5838319 -17.5796 --9.48023 0.3136609 -18.5243 --8.80644 0.4816039 -19.1793 --8.24908 0.2286959 -19.9682 --8.05902 1.10012 -19.5216 --7.1688 0.7314319 -19.8173 --6.54267 0.8675609 -20.6536 --5.62662 1.26323 -20.5238 --5.90205 1.57938 -19.7461 --5.46748 2.03302 -18.9582 --5.0562 1.91884 -18.0211 --5.91616 2.29666 -17.7967 --6.59968 1.76066 -17.2503 --7.39147 1.13801 -17.1898 --7.61184 0.1386269 -17.2255 --7.26343 -0.7531761 -17.0601 --6.50474 -0.1313381 -16.7553 --6.06607 0.7909319 -16.7587 --6.66957 1.22931 -16.2108 --7.20544 0.9500489 -15.4237 --7.20934 0.2764489 -14.7218 --7.73708 -0.4985331 -15.1934 --8.28774 -1.29515 -15.5841 --8.11202 -2.10331 -14.9913 --8.73927 -1.47665 -14.5385 --9.56872 -2.03782 -14.4168 --10.2425 -2.69415 -14.6572 --10.9558 -3.36471 -14.3407 --11.3094 -4.3678 -14.3872 --11.452 -5.17618 -13.8347 --10.589 -5.73436 -13.9296 --11.0839 -6.58628 -14.0863 --12.0543 -6.78724 -14.2446 --11.9776 -7.71024 -14.6125 --12.9249 -7.6348 -14.3614 --13.6528 -8.35528 -14.0165 --13.7415 -8.71996 -14.9387 --14.4453 -8.39914 -15.5505 --14.5019 -9.42314 -15.5186 --14.3219 -9.78924 -16.4429 --14.6684 -10.4865 -17.0748 --14.7497 -9.90494 -17.9074 --15.0881 -9.70623 -18.8198 --14.702 -10.6158 -18.8908 --15.4085 -11.1206 -18.3204 --15.2795 -12.0479 -18.1841 --15.1234 -13.0117 -18.174 --14.6872 -12.9087 -19.0886 --13.9387 -12.4371 -19.3726 --14.0753 -11.4575 -19.6138 --14.3704 -11.9884 -20.4366 --13.4589 -12.4222 -20.5071 --12.5297 -12.0092 -20.6385 --12.6467 -12.7968 -21.2149 --12.1287 -13.6137 -21.385 --11.637 -13.2803 -22.2616 --10.9352 -13.4481 -22.8486 --10.7778 -14.4313 -22.8161 --10.2828 -14.5939 -23.6909 --11.1189 -14.0112 -23.9474 --11.5471 -13.0313 -24.1451 --12.1349 -13.415 -24.83 --11.8194 -13.6157 -25.822 --11.3534 -12.8346 -25.5698 --11.6247 -11.9632 -25.2023 --12.5283 -11.8303 -25.0344 --13.124 -11.9309 -24.1865 --13.5736 -11.0282 -24.506 --13.1856 -10.4954 -25.2868 --12.6276 -10.6937 -24.4525 --12.4765 -9.72747 -24.4072 --12.5294 -9.17438 -25.2038 --11.5615 -9.32736 -25.3386 --10.9793 -9.06238 -24.5746 --10.7861 -8.52407 -23.712 --10.0703 -9.13524 -24.0782 --10.4641 -9.42067 -23.2308 --11.2604 -9.98327 -23.3849 --10.6337 -10.7409 -23.7521 --10.4782 -11.134 -22.8782 --10.1941 -11.959 -22.4728 --9.99278 -12.6765 -23.2274 --10.1488 -12.4593 -24.259 --9.16389 -12.3275 -24.4171 --8.8463 -13.3131 -24.4965 --8.08752 -13.6097 -25.0685 --7.40153 -12.9535 -24.705 --6.62501 -13.6417 -24.7005 --6.26886 -12.6923 -24.7874 --6.49263 -12.3014 -23.9173 --5.9661 -11.3841 -23.817 --5.0069 -11.4474 -23.596 --4.20432 -11.9681 -23.3049 --4.3098 -12.1121 -22.3226 --3.37255 -11.9931 -22.7151 --2.55201 -11.6202 -22.3169 --2.36016 -12.3245 -23.0359 --1.66432 -12.4937 -22.3212 --0.877678 -13.0437 -22.2393 --0.143644 -12.9921 -21.5963 --0.143266 -13.347 -20.6835 --0.456282 -12.4764 -20.3587 --1.25598 -12.7606 -19.8421 --0.824622 -12.0684 -19.3582 --0.483981 -12.0755 -18.3567 --0.936557 -12.4102 -17.468 --1.28092 -11.6395 -17.0039 --1.86067 -10.8449 -17.2355 --2.43344 -11.1541 -17.9991 --2.25004 -11.7552 -18.8705 --2.74585 -11.4793 -19.705 --2.409 -10.5562 -20.0025 --3.2061 -10.0308 -20.276 --2.60351 -9.15348 -20.2096 --1.82688 -8.76926 -19.7009 --1.23887 -9.17842 -20.3841 --0.80811 -9.76637 -19.6578 --0.61057 -9.92543 -18.6508 -0.249303 -10.2977 -18.8486 -0.947343 -10.84 -18.3738 -1.67424 -10.8665 -19.0461 -1.82808 -11.8291 -19.2771 -2.57676 -11.5885 -18.6974 -2.30704 -10.9078 -17.9631 -2.55259 -11.6755 -17.3141 -2.94101 -11.7524 -16.4726 -3.15902 -10.8097 -16.3725 -3.31583 -9.87306 -16.1581 -2.43309 -9.54103 -16.4568 -2.32595 -10.0829 -17.2724 -1.56159 -10.6308 -17.0705 -1.61828 -10.3207 -16.1431 -1.81629 -9.6351 -15.3422 -1.79685 -10.5947 -15.0251 -2.30098 -11.3474 -14.8 -2.36427 -11.6409 -15.702 -3.29344 -11.7135 -15.2915 -3.77695 -12.6143 -15.1328 -3.48812 -12.2182 -14.1901 -2.60778 -12.739 -14.158 -2.97343 -12.5772 -13.2364 -3.7935 -12.9617 -12.9564 -4.59724 -13.3579 -12.6276 -5.52603 -13.3726 -12.3469 -5.82441 -12.3813 -12.0898 -6.76253 -12.455 -12.3918 -7.30936 -12.0032 -11.6409 -7.67569 -11.2004 -12.1933 -7.82304 -11.2496 -11.1677 -8.5846 -11.7688 -11.5204 -8.84253 -12.0202 -12.4776 -8.81581 -11.1792 -13.0266 -8.8424 -10.4253 -13.6648 -8.43789 -10.864 -14.4582 -8.15855 -11.836 -14.2218 -7.40815 -11.1984 -14.39 -7.50815 -10.3493 -13.833 -7.73919 -9.78851 -13.0602 -8.69194 -9.5251 -12.6894 -8.8771 -9.51789 -11.6972 -8.4554 -9.15536 -10.8237 -8.87759 -10.052 -10.5062 -8.65496 -10.61 -9.72589 -8.62205 -11.5521 -9.44363 -8.2884 -12.3513 -9.05721 -7.68595 -12.8646 -8.47714 -6.93661 -12.8435 -9.22012 -6.55986 -13.6916 -9.54576 -6.70145 -13.7537 -10.5393 -7.39232 -14.4503 -10.3409 -7.76018 -14.8882 -9.4393 -7.56342 -14.7948 -8.53601 -8.38479 -14.2832 -8.25175 -7.91057 -14.1773 -7.39615 -6.93806 -14.0688 -7.4368 -7.09775 -15.0221 -7.45542 -7.5277 -15.7643 -7.03764 -7.10024 -16.2367 -7.8377 -6.39862 -16.5571 -7.24068 -6.45542 -16.6141 -6.27711 -6.9382 -15.7375 -6.08447 -7.54399 -16.4932 -5.85333 -8.38355 -16.6557 -6.5119 -8.98168 -15.8332 -6.4327 -9.59853 -15.0467 -6.53628 -10.4048 -15.5745 -6.16371 -10.3533 -14.7571 -5.60759 -9.40528 -14.7894 -5.30358 -9.78853 -14.4462 -4.4502 -9.22517 -15.1867 -4.28488 -8.46034 -15.8291 -4.64717 -7.97392 -15.9049 -3.84282 -7.23768 -16.4916 -4.00835 -7.14843 -17.3246 -3.62494 -6.26529 -16.9677 -3.20357 -6.9008 -16.3477 -2.72829 -6.29827 -16.9441 -2.11066 -6.56759 -16.2965 -1.39074 -6.45277 -15.3779 -1.73354 -6.18603 -14.8944 -0.8646459 -7.20886 -14.7399 -0.7031989 -7.20508 -15.4899 -0.03741148 -7.87081 -15.8131 -0.6274159 -8.56897 -15.4552 -1.26276 -8.08718 -16.2482 -1.64878 -8.01027 -16.9547 -2.34229 -8.6823 -16.2388 -2.55132 -9.53846 -16.6617 -2.1021 -10.4549 -16.948 -1.76569 -10.6094 -17.9503 -1.65629 -10.3003 -18.6244 -2.33813 -10.9283 -18.3665 -3.0082 -10.8666 -17.4326 -2.93123 -11.2107 -17.0107 -3.82966 -12.0806 -16.6559 -3.38857 -11.2798 -16.0391 -3.23827 -11.3702 -15.2834 -3.81482 -10.9111 -15.0232 -2.93437 -10.234 -15.7092 -2.69967 -9.54151 -15.2703 -2.16359 -8.62893 -15.0166 -2.59885 -7.91824 -14.6397 -2.01552 -8.41877 -13.7612 -1.61467 -7.86414 -12.9334 -1.35217 -6.86709 -12.918 -1.23862 -6.99661 -13.1055 -0.2396639 -6.37191 -12.6925 0.4544401 -7.21537 -12.155 0.6467831 -6.96755 -11.2098 0.6621711 -6.10012 -11.4678 1.09045 -5.18656 -11.7317 1.05229 -4.64201 -12.6029 0.9085221 -3.96073 -12.6907 0.1999071 -4.24115 -12.9963 -0.7029599 -4.14116 -12.1537 -1.30164 -4.41584 -11.3046 -0.7857039 -4.54614 -10.7535 -1.60206 -4.96966 -11.0075 -2.4678 -4.56578 -10.0279 -2.31058 -3.99097 -10.0968 -3.13683 -4.38046 -10.1602 -4.05287 -3.44935 -10.3088 -4.42954 -2.75922 -10.6561 -3.796 -3.15894 -11.4051 -4.3193 -3.86987 -11.3728 -4.95634 -4.73141 -11.604 -5.38043 -4.71704 -11.9217 -4.41599 -5.00136 -11.819 -3.44411 -5.93799 -12.0209 -3.2228 -6.53213 -11.2204 -3.08825 -6.91413 -10.56 -3.59847 -7.03893 -10.2475 -2.64763 -7.54125 -9.42891 -2.79159 -7.77987 -9.33016 -1.81889 -8.37191 -8.94872 -1.08869 -9.33152 -9.42079 -1.02123 -9.55304 -8.45991 -1.26295 -10.1561 -8.78401 -2.04645 -11.1472 -8.49093 -1.9784 -11.0882 -8.27614 -0.9747249 -11.6988 -8.06292 -0.2589369 -12.0617 -7.46132 0.4891011 -13.0565 -7.34464 0.5661621 -13.3426 -8.28816 0.7858061 -14.2119 -7.91538 0.8524281 -14.266 -8.02555 -0.1710859 -13.3694 -7.84711 -0.5781579 -13.4122 -7.13814 -1.357 -12.4209 -6.788 -1.50552 -11.9655 -7.01482 -2.42397 -12.0363 -6.08248 -2.70237 -11.5488 -5.65784 -3.53724 -10.6407 -5.83002 -3.09309 -10.0679 -5.53119 -3.79976 -9.53158 -6.28542 -3.78973 -8.59791 -5.90835 -3.61802 -7.79096 -5.42077 -3.51839 -7.60621 -4.9503 -2.66599 -7.78089 -4.73546 -1.68444 -6.86221 -5.18376 -1.74862 -6.09004 -5.74975 -1.38276 -5.13523 -5.83403 -1.73495 -4.29457 -6.01257 -1.21094 -4.31118 -5.17223 -0.7511719 -3.91306 -4.18338 -0.7061149 -3.70608 -3.54983 -0.01380658 -3.35511 -4.00323 0.8552491 -3.67106 -4.87979 1.17929 -3.57215 -5.48052 1.9717 -4.39092 -4.82273 2.03693 -5.05281 -4.20025 1.69458 -5.67759 -3.96331 0.9142551 -6.47147 -3.33585 1.02416 -7.27254 -3.50517 1.57748 -7.42827 -3.41891 0.6020611 -6.69442 -3.33049 -0.02872248 -6.53198 -4.00995 -0.7389029 -6.60142 -4.62446 0.04610632 -6.70687 -5.57994 0.01449072 -7.05457 -5.85488 -0.8878029 -7.66146 -6.314 -1.49332 -8.00027 -7.28499 -1.30876 -8.57763 -7.59813 -0.5547109 -8.86358 -8.53546 -0.3417539 -9.00317 -9.06635 0.5594771 -8.30789 -9.57841 1.15268 -7.38742 -9.70226 0.6961601 -6.86897 -9.86302 -0.1731819 -6.58268 -8.95046 -0.4952539 -6.44067 -8.51472 -1.37293 -5.59091 -8.89991 -1.08258 -5.23648 -8.26992 -1.81345 -5.1861 -8.51143 -2.78537 -6.09208 -8.10927 -2.67162 -7.03601 -7.98396 -2.62204 -6.77415 -7.30499 -3.36455 -7.82985 -7.38092 -3.39608 -8.73781 -7.07884 -3.11437 -8.97148 -7.85212 -2.6308 -9.58131 -8.08004 -3.34803 -8.6426 -8.44359 -3.58101 -9.08103 -9.17499 -4.07645 -8.55998 -10.0267 -4.15071 -9.0453 -10.4298 -4.96676 -8.51897 -9.57066 -5.25595 -7.69199 -9.72929 -5.82812 -7.57013 -10.2593 -6.68073 -8.08105 -10.8022 -7.25719 -8.32954 -10.416 -8.14212 -8.23525 -9.52461 -8.37869 -9.26845 -9.50178 -8.11719 -9.14069 -8.50732 -7.90363 -9.16327 -7.72532 -7.21815 -9.83255 -7.58466 -7.94662 -10.1991 -8.00796 -7.13177 -10.4307 -8.90692 -7.39468 -11.4014 -9.13696 -7.48312 -11.7537 -9.93861 -6.95195 -10.8615 -9.96528 -6.5613 -10.2662 -9.27542 -6.1077 -10.5123 -9.9064 -5.33012 -11.1876 -9.23873 -4.9554 -10.4814 -8.52063 -5.02168 -10.0601 -7.76095 -5.51943 -9.32095 -7.31692 -5.03026 -8.66063 -6.83595 -5.58032 -7.96648 -6.17924 -5.24486 -7.2028 -5.60568 -5.03075 -6.88888 -5.57903 -5.9449 -7.36905 -5.04168 -6.54782 -6.69727 -4.25686 -6.54668 -5.75908 -4.48956 -6.36231 -5.11415 -4.49833 -7.14939 -5.74159 -5.33049 -7.00516 -5.65625 -6.36623 -6.84081 -4.93005 -5.89934 -6.39083 -5.64791 -5.5818 -5.72945 -5.46573 -6.22026 -4.97413 -5.71861 -7.08522 -5.42383 -5.36125 -7.864 -4.90879 -5.35857 -8.76861 -5.35921 -4.4655 -9.2829 -5.13587 -4.90013 -9.4516 -6.07981 -4.86943 -10.2455 -5.66286 -3.84154 -10.3872 -5.65353 -4.03772 -11.1442 -6.38544 -3.0985 -10.998 -6.50588 -3.66772 -10.4807 -7.1692 -3.38625 -9.8332 -7.90543 -2.80248 -9.06254 -7.98907 -3.04307 -8.43376 -7.26475 -3.94868 -8.67012 -6.94741 -4.60957 -8.72689 -7.6913 -5.37152 -9.33758 -7.44218 -6.23932 -8.81815 -7.23745 -6.36899 -8.44352 -8.11641 -6.49601 -8.37431 -9.10603 -6.65328 -9.20643 -9.43752 -7.63537 -9.21536 -9.13509 -8.13671 -8.4072 -8.70674 -8.6593 -7.56868 -8.88272 -9.51259 -8.00875 -9.09746 -9.39162 -8.78782 -9.75098 -10.2894 -8.41411 -9.75635 -10.1519 -7.43656 -10.0205 -9.44544 -7.12849 -10.5546 -9.84334 -6.3273 -10.0665 -10.6508 -6.73696 -10.5416 -11.1715 -7.51566 -10.9749 -12.0509 -7.50892 -10.5664 -12.5633 -8.36977 -10.6608 -13.2917 -8.98368 -10.4919 -13.3217 -9.57413 -11.3705 -12.9205 -10.1612 -10.7109 -11.9945 -10.1179 -10.4775 -11.951 -10.7835 -9.66425 -11.1633 -10.1636 -9.62402 -10.449 -10.6962 -10.2006 -10.3419 -10.9033 -11.1582 -10.6211 -9.89502 -11.0539 -10.5029 -9.91881 -12.0405 -9.91344 -10.5871 -12.533 -10.1415 -11.431 -12.0927 -10.2006 -11.3678 -13.1303 -11.0206 -11.6942 -12.6199 -10.476 -12.4276 -12.3438 -11.3275 -12.4508 -11.7907 -10.9038 -13.29 -11.7643 -10.1675 -13.0616 -11.0871 -10.8015 -13.4942 -10.4659 -10.387 -12.7948 -9.83815 -10.1815 -13.1578 -8.89406 -11.1659 -13.3811 -8.89382 -12.1579 -13.3209 -9.0368 -12.9412 -13.6016 -9.68723 -13.8545 -13.6618 -10.0882 -13.5176 -14.4636 -10.5042 -13.5372 -15.3427 -11.0052 -14.2379 -15.4298 -10.2369 -14.343 -15.7325 -9.31888 -13.5825 -16.3571 -9.32601 -13.5393 -16.7316 -10.2558 -12.8635 -17.3462 -10.6065 -13.5094 -18.0626 -10.4759 -13.0771 -18.5991 -11.1994 -13.8581 -19.2286 -11.1324 -14.3682 -18.9506 -11.9642 -13.793 -19.3385 -12.7049 -13.1012 -19.8477 -13.1889 -13.6837 -19.6585 -13.9591 -14.2178 -18.757 -13.8423 -15.0028 -18.2931 -13.4463 -14.5492 -17.7808 -14.1968 -13.6744 -17.7347 -13.7443 -14.1039 -17.272 -13.0026 -13.9141 -16.288 -12.7834 -12.9323 -16.4217 -12.4142 -12.8443 -17.2553 -11.9513 -12.1043 -16.5585 -11.5892 -11.5025 -15.8723 -11.2345 -10.9528 -15.458 -11.9245 -11.8432 -14.9268 -12.0277 -12.0531 -13.9814 -12.2129 -12.7299 -14.2439 -11.5528 -11.9269 -14.2866 -10.9462 -12.3234 -13.3737 -10.8919 -13.0738 -13.202 -11.4229 -13.1983 -12.8561 -12.3366 -13.5634 -12.1887 -11.7304 -14.2314 -11.4556 -11.8367 -14.9035 -11.8938 -12.4331 -15.0642 -11.402 -13.3015 -15.9437 -11.3659 -12.8802 -16.9942 -11.1167 -12.7179 -16.5841 -10.3728 -12.1884 -16.2366 -10.1869 -11.2895 -15.8715 -10.601 -10.4364 -15.098 -10.8969 -9.89738 -15.162 -11.8246 -10.3704 -14.999 -12.5722 -9.72839 -14.2773 -12.0192 -9.40972 -14.2035 -12.2367 -8.47922 -15.1465 -11.9505 -8.69266 -16.1651 -11.8852 -8.58495 -17.0461 -11.9676 -8.01577 -17.1838 -11.7005 -8.96081 -17.7621 -12.3705 -9.31126 -17.8324 -12.6803 -8.43652 -17.4395 -13.5977 -8.2515 -17.371 -13.5056 -7.27658 -17.697 -13.2494 -6.3019 -18.0262 -12.3565 -6.01589 -18.4708 -12.2315 -6.89595 -19.4783 -12.0107 -7.01584 -19.4295 -12.1998 -7.95609 -19.3597 -13.1947 -7.88341 -18.5657 -13.5319 -8.43073 -18.805 -14.1393 -7.72182 -19.4479 -14.6613 -8.26357 -20.1238 -15.3463 -8.13733 -21.0212 -15.2858 -7.74005 -21.5275 -16.077 -7.32583 -20.7691 -16.7182 -7.60817 -20.0434 -16.9472 -8.32499 -20.1211 -16.2948 -9.09327 -19.2413 -16.1437 -9.54523 -19.2876 -15.1832 -9.61484 -18.6011 -14.907 -9.0201 -17.7281 -15.2275 -8.56614 -16.8923 -15.5855 -9.07284 -16.081 -15.2415 -9.53921 -15.9845 -16.1793 -9.7063 -16.8438 -16.6794 -9.84755 -17.3405 -15.8706 -10.2263 -18.0538 -15.7868 -9.62154 -18.6771 -15.5842 -10.4056 -19.4133 -15.5924 -11.1085 -19.4698 -16.237 -11.8988 -18.462 -16.4008 -12.1568 -17.5854 -16.0136 -12.3078 -16.7478 -15.4853 -12.4281 -16.995 -14.6227 -11.959 -17.1927 -13.9676 -11.2897 -17.0253 -13.5483 -10.4025 -16.9613 -12.9715 -9.60839 -16.6911 -12.1332 -10.163 -17.0967 -11.8812 -11.0523 -17.138 -12.2771 -11.9959 -17.0523 -12.9294 -12.8103 -16.513 -13.6018 -12.4003 -15.5347 -13.8245 -12.433 -15.1871 -14.6953 -12.1941 -14.7378 -15.6371 -12.0042 -15.1014 -15.5918 -11.0842 -15.1467 -16.4987 -11.4604 -16.0669 -16.775 -11.1168 -15.6836 -17.4002 -10.4479 -16.447 -18.1136 -10.1934 -17.3356 -17.7362 -10.373 -17.2965 -18.6071 -9.74915 -16.7959 -19.3415 -10.1203 -15.949 -19.8304 -10.3409 -15.2045 -19.1408 -10.3459 -15.2186 -18.6679 -11.2383 -15.3279 -19.405 -11.8706 -16.0409 -18.9153 -12.4059 -16.7905 -18.8284 -11.7772 -16.893 -17.9398 -12.2336 -17.4359 -17.9876 -11.4317 -18.1628 -18.6201 -11.5541 -18.3827 -17.8354 -12.1461 -19.1593 -18.4759 -12.1199 -19.506 -19.4437 -11.9901 -19.3985 -20.2181 -11.3532 -18.6832 -20.7344 -11.1277 -18.3844 -21.6171 -10.8795 -19.1305 -22.2833 -11.2086 -19.9494 -21.6721 -11.0535 -20.3045 -20.8299 -11.5303 -20.6344 -20.8836 -10.5866 -20.2441 -20.8023 -9.62064 -20.4938 -20.843 -8.67102 -21.3998 -20.417 -8.81347 -21.9043 -19.9425 -8.0207 -21.4972 -20.4296 -7.24466 -21.1938 -21.2682 -6.94792 -20.306 -21.521 -6.69856 -20.1968 -20.5726 -6.42844 -20.0923 -19.5479 -6.38618 -19.2874 -20.0845 -6.52706 -19.5102 -20.5403 -5.60411 -18.5223 -20.5964 -5.76013 -18.021 -20.3406 -4.94868 -18.5771 -20.3351 -4.27859 -18.3386 -19.3562 -4.02526 -17.6744 -19.7346 -3.25588 -17.9455 -20.6628 -3.05037 -17.1369 -20.3427 -2.47726 -17.1675 -21.2103 -2.88548 -16.5949 -20.8714 -3.55979 -16.5705 -21.0056 -4.5522 -15.6983 -21.2738 -4.88471 -15.1821 -20.6324 -5.44226 -15.2781 -20.8128 -6.40552 -16.1035 -21.4459 -6.35505 -15.6041 -21.8431 -7.17012 -15.8767 -21.6715 -8.17596 -16.0761 -22.4329 -8.79514 -16.7757 -22.347 -9.38504 -15.8505 -22.2669 -9.77472 -15.2229 -21.4232 -9.77967 -14.2716 -21.0862 -9.79212 -14.1804 -21.8975 -9.30797 -13.6295 -21.9072 -10.181 -13.2349 -21.6702 -11.0806 -12.6004 -21.2858 -11.7254 -13.2407 -21.123 -12.4796 -12.4252 -20.5434 -12.3969 -11.6538 -20.0156 -11.8447 -11.2837 -19.0747 -11.5967 -11.61 -18.3593 -10.9807 -11.1581 -17.7233 -11.6149 -10.7744 -17.1943 -12.3802 -10.0304 -16.664 -12.6816 -10.6052 -16.7103 -13.4848 -10.4967 -17.5918 -13.9574 -10.0227 -17.9619 -14.845 -10.9374 -17.6287 -15.0543 -11.8211 -17.5962 -14.6991 -12.3735 -18.3216 -15.0652 -12.953 -18.1758 -15.8707 -12.1676 -18.3893 -16.3975 -11.8537 -17.4328 -16.4338 -11.692 -16.7108 -17.146 -12.0428 -16.1004 -17.8951 -12.6691 -15.4202 -18.1985 -11.6907 -15.2116 -18.3959 -11.3697 -14.4137 -18.8619 -10.7552 -13.8704 -18.3441 -11.0367 -13.8112 -17.3748 -11.8756 -13.6262 -17.8578 -12.8288 -13.4857 -18.179 -13.6459 -13.0231 -18.4467 -12.9723 -12.2996 -18.2031 -12.4534 -12.5593 -19.0844 -11.6648 -12.8487 -19.6514 -11.2092 -12.6971 -20.5448 -10.7487 -11.8201 -20.1334 -10.8937 -11.3722 -21.0044 -10.7009 -10.4508 -21.2679 -9.69529 -10.4289 -21.4727 -9.05949 -9.76 -21.1737 -9.29175 -8.77412 -21.4394 -9.92717 -9.00838 -22.1707 -10.7098 -9.13546 -22.7047 -11.1274 -8.98838 -23.5885 -10.6282 -8.84405 -24.5231 -10.2736 -8.5995 -25.4573 -10.7571 -9.05496 -26.1894 -11.7235 -9.19945 -26.5783 -12.038 -8.96956 -25.689 -12.434 -9.42547 -24.9038 -12.3539 -10.4895 -24.999 -12.3068 -11.4339 -25.01 -11.4115 -11.2497 -25.4261 -10.4777 -11.3579 -25.6515 -10.3325 -10.3294 -25.3209 -9.9904 -10.2232 -24.3782 -9.0149 -10.1112 -24.204 -8.1923 -10.1255 -23.6275 -7.71534 -9.31333 -23.3709 -7.10703 -9.07895 -24.196 -6.36254 -9.52666 -23.6437 -5.48575 -9.94006 -23.5653 -4.4855 -10.0848 -23.6982 -4.55219 -9.8755 -24.7236 -5.03996 -10.6665 -25.1191 -5.71951 -9.88415 -25.2155 -6.38372 -10.5937 -25.0992 -6.04027 -10.7708 -24.1219 -6.52838 -11.2158 -23.3637 -5.84321 -11.9558 -23.4396 -4.82979 -12.1253 -23.7253 -4.18847 -12.7165 -23.2207 -3.36575 -12.8884 -23.6483 -3.53699 -13.8485 -23.5635 -2.57767 -13.3872 -23.6244 -2.82372 -14.0861 -24.3806 -2.29729 -13.9253 -25.2147 -1.70206 -13.5929 -25.9415 -0.679832 -13.6076 -26.0561 -0.624631 -12.6524 -25.8032 -0.363763 -12.7929 -24.8744 --0.553066 -13.1349 -24.9577 --1.08198 -12.5739 -24.318 --1.18515 -11.6178 -24.6602 --1.53364 -10.7374 -24.704 --1.44942 -10.1147 -25.5357 --1.89679 -10.5634 -26.3497 --2.77312 -10.6566 -26.0663 --2.58796 -11.4316 -26.6232 --3.45545 -11.7596 -26.9972 --4.49246 -11.8389 -27.1338 --4.73709 -11.9121 -26.1114 --5.26404 -11.1867 -25.6341 --4.82201 -10.3591 -25.2223 --4.59079 -9.45452 -25.6798 --4.30582 -8.57349 -26.0146 --4.13153 -8.63267 -27.0338 --4.93398 -8.20025 -27.4668 --5.40559 -8.62589 -26.6373 --5.97947 -8.217 -25.9441 --6.10227 -7.52326 -25.2308 --6.02459 -8.21388 -24.4846 --5.17923 -8.19067 -24.9265 --4.26758 -8.17787 -24.4326 --3.31304 -8.50231 -24.3601 --2.37386 -8.81591 -24.6847 --2.14763 -8.49457 -25.6232 --2.47493 -9.11257 -26.3064 --2.43499 -8.24223 -26.7642 --2.05686 -7.82373 -27.5694 --2.87996 -7.30278 -27.8501 --2.47467 -6.86599 -28.7091 --2.55547 -6.17227 -29.4823 --2.77028 -5.51532 -30.2266 --3.56456 -5.22332 -30.6832 --4.46566 -5.00346 -31.0947 --4.25684 -5.90501 -31.4851 --4.83914 -6.12385 -32.2307 --4.23706 -6.67659 -32.8404 --5.02763 -7.0392 -33.3756 --5.41441 -6.25851 -33.7622 --5.62017 -6.53651 -32.8166 --5.9776 -5.58788 -32.7651 --6.78577 -5.22067 -32.1989 --7.22698 -5.84146 -31.5705 --6.80498 -5.29561 -30.879 --7.08258 -4.40809 -31.1662 --6.25854 -3.98036 -31.5403 --6.20669 -3.9328 -30.541 --5.2917 -4.1839 -30.622 --5.44181 -5.17917 -30.6533 --5.36446 -5.58224 -29.8194 --5.44892 -5.74942 -28.8561 --5.52172 -5.69574 -27.8393 --5.34708 -4.78328 -27.4012 --4.98305 -4.04673 -27.8924 --4.00026 -3.84221 -27.7686 --3.34843 -3.10239 -27.3892 --3.95654 -3.45567 -26.6991 --4.58625 -3.92136 -26.1203 --5.23571 -4.67152 -26.0901 --4.60115 -4.62578 -25.2468 --5.13497 -5.08735 -24.6006 --4.9594 -5.95682 -25.0332 --4.58028 -6.17099 -24.1252 --3.66113 -6.13427 -23.6629 --3.00388 -5.51385 -24.1295 --2.9284 -4.97053 -24.9508 --2.31679 -4.57201 -25.5148 --1.481 -4.14728 -25.4206 --1.49622 -3.21439 -25.715 --1.91179 -3.4969 -24.8789 --2.89859 -3.54596 -24.7028 --3.4522 -2.81949 -25.1813 --3.41464 -2.37489 -24.2725 --2.87868 -2.44938 -23.3732 --1.97259 -2.46578 -23.6949 --2.32006 -2.19155 -24.5702 --1.92087 -2.19526 -25.4738 --1.96078 -1.38319 -26.0276 --2.36445 -1.75369 -26.8497 --2.82435 -1.60776 -27.6917 --3.40889 -1.8416 -28.5284 --2.65431 -2.33685 -28.9978 --3.37024 -3.08132 -28.852 --3.2166 -3.66471 -29.6552 --2.74331 -3.57402 -30.5587 --2.34027 -4.43414 -30.4157 --1.87892 -4.76276 -29.5656 --1.13367 -5.11015 -28.922 --1.42095 -5.911 -28.2546 --0.514804 -6.16766 -27.9123 -0.30984 -5.63255 -28.2645 -1.01312 -4.91042 -27.8106 -1.70366 -5.56329 -28.155 -1.67356 -6.40045 -28.7324 -1.07509 -7.10905 -28.3467 -0.378744 -7.16207 -27.6471 -0.59648 -7.99223 -27.1231 -1.21777 -8.80267 -27.0221 -1.33124 -9.73073 -27.1334 -1.32599 -9.79311 -28.1838 -2.06316 -10.3185 -28.4482 -1.54932 -10.875 -27.7093 -2.38797 -11.4755 -27.6945 -2.74992 -11.1643 -28.5808 -3.01294 -10.7741 -29.4268 -2.1235 -10.6966 -29.8688 -1.22844 -10.3557 -30.1457 -1.88245 -10.2032 -30.8499 -1.6241 -9.27519 -31.122 -1.25264 -9.24674 -30.1533 -0.662253 -8.93441 -29.4547 -1.07226 -8.29959 -30.185 -1.3483 -7.46237 -30.7181 -1.14107 -6.68209 -31.3539 -1.03811 -7.17039 -32.1842 -0.258963 -6.71685 -32.6243 --0.559825 -6.54549 -32.0764 -0.05563857 -6.68193 -31.3108 --0.491517 -6.35043 -30.5024 --1.27695 -6.42923 -29.9649 --1.05844 -6.97196 -29.2045 --0.907072 -7.67172 -28.4507 --1.7059 -8.01974 -28.9285 --2.52022 -8.66188 -28.9562 --3.4569 -8.62872 -28.6793 --3.2755 -9.32385 -28.0037 --3.23824 -10.2811 -28.0962 --2.63774 -11.1083 -28.1209 --1.76325 -10.6698 -28.2727 --0.926648 -11.1135 -28.2792 --0.154868 -11.7072 -28.5499 -0.779505 -11.7585 -28.2021 -0.577126 -12.5346 -28.722 -1.01173 -12.4228 -29.5983 -0.956487 -13.441 -29.481 -0.558534 -12.9939 -30.2834 -0.647323 -13.7062 -30.9684 -1.56628 -13.9829 -31.2527 -1.5012 -13.3128 -31.9465 -1.8158 -12.4835 -31.5019 -0.995354 -11.876 -31.4247 -0.567644 -12.081 -32.3021 -0.248048 -11.1892 -32.7198 --0.386714 -10.9423 -31.9891 --0.843948 -11.842 -32.0845 --1.57965 -11.9478 -32.8116 --2.59472 -11.9923 -32.9848 --2.23384 -11.1056 -33.1427 --2.36742 -10.1212 -33.3227 --2.71828 -10.5844 -34.1401 --3.63276 -10.7363 -34.379 --4.01873 -9.86801 -34.7167 --4.79302 -9.16045 -34.9905 --5.40267 -9.91529 -35.0408 --6.21782 -9.84282 -34.4419 --5.51295 -9.97518 -33.6518 --5.99287 -9.44515 -32.9445 --6.20132 -10.3098 -32.4232 --5.55665 -10.0832 -31.7506 --4.68075 -10.3109 -32.2513 --3.75314 -10.484 -32.0135 --2.977 -10.1863 -31.3713 --2.72698 -11.0117 -30.9056 --2.87056 -10.8709 -29.8934 --3.42946 -11.5711 -30.3072 --3.6314 -11.8413 -29.3711 --3.7448 -12.7933 -29.1269 --2.81304 -13.2143 -29 --2.59273 -13.7921 -28.1547 --1.78191 -14.0598 -28.7576 --2.59435 -14.2114 -29.3375 --2.84954 -14.9817 -28.7974 --2.02076 -15.1233 -29.3869 --2.22078 -14.5614 -30.2077 --2.50211 -15.3008 -30.8127 --2.62613 -15.8691 -31.6306 --2.70874 -15.407 -32.5239 --3.55662 -14.9703 -32.5077 --4.21798 -14.8696 -31.7745 --4.89102 -15.3784 -31.2167 --5.07004 -14.3746 -31.039 --4.56543 -13.6513 -31.5643 --5.19086 -12.9928 -31.207 --6.04407 -13.1054 -30.7424 --6.19457 -13.6507 -29.8998 --6.20547 -13.9823 -28.9992 --6.56648 -14.8268 -28.9209 --7.16823 -15.3557 -28.3393 --6.90997 -15.6028 -27.4893 --7.34242 -15.8744 -26.5528 --7.03234 -16.7688 -26.748 --7.2547 -17.6794 -27.2276 --6.29257 -17.5782 -27.5554 --6.48471 -16.6313 -27.9161 --5.53339 -16.3038 -28.063 --5.67459 -15.4596 -27.6032 --5.99193 -14.4656 -27.8063 --4.99545 -14.7378 -27.9567 --4.7748 -15.6384 -28.2976 --4.29305 -16.3411 -27.7602 --3.86194 -15.4139 -28.017 --2.98677 -15.3318 -27.5615 --2.22672 -15.8911 -28.0164 --1.41694 -15.6822 -28.5575 --0.646638 -16.074 -29.0383 --0.397092 -15.8012 -28.1403 --0.5841 -16.6033 -27.5392 --0.879644 -16.6255 -26.568 --0.521249 -15.7135 -26.4626 --1.23132 -14.9612 -26.6012 --0.518984 -14.251 -26.663 --0.523716 -13.9367 -27.6378 --0.20481 -13.1461 -28.1314 --0.861486 -12.9982 -28.9072 --0.412185 -13.473 -29.6124 --0.182832 -14.2224 -28.9765 -0.426702 -14.8163 -28.403 -1.3129 -15.3276 -28.6253 -1.66404 -16.1157 -28.1114 -1.62657 -15.7972 -27.1697 -0.903471 -15.7164 -26.5476 -0.765417 -16.6175 -26.3567 -0.880303 -17.5441 -26.0889 -1.89707 -17.5321 -26.061 -2.32855 -18.1382 -25.3644 -1.45077 -18.5868 -25.6523 -1.0479 -19.2023 -25.0304 -1.32267 -19.4127 -24.0621 -2.09783 -19.0854 -24.5272 -2.57571 -19.7754 -23.9653 -3.0414 -20.184 -23.1783 -2.33611 -20.5202 -22.5592 -2.83801 -20.5078 -21.701 -3.00188 -20.8071 -20.8034 -3.71325 -21.1516 -21.3781 -3.91205 -21.208 -20.3714 -4.54606 -21.7196 -20.9169 -4.77602 -20.7193 -21.0606 -4.80299 -19.8728 -21.5498 -4.51762 -20.7307 -22.0979 -4.57297 -19.8866 -22.6433 -5.54137 -19.9835 -22.4729 -5.42792 -19.2747 -23.1832 -5.44166 -19.711 -24.0137 -4.91236 -20.5227 -24.2816 -5.63499 -21.0103 -24.6572 -6.56576 -21.3033 -25.0408 -7.16424 -21.4814 -25.8898 -6.84638 -20.9699 -26.6879 -6.98027 -20.0933 -26.9815 -7.50737 -19.2946 -26.975 -7.80008 -18.3851 -26.8231 -7.32317 -18.3796 -27.6853 -6.44758 -17.899 -27.4004 -6.20873 -17.9321 -28.3638 -6.34007 -18.9078 -28.4514 -6.15166 -19.0913 -29.4464 -5.69385 -18.3789 -29.9725 -5.42198 -18.052 -29.0809 -4.80773 -17.3716 -29.606 -3.85093 -17.6359 -29.4383 -3.54324 -17.0621 -30.1318 -3.28077 -16.5677 -29.3487 -3.85116 -16.9316 -28.5991 -4.22929 -16.2715 -27.9874 -3.61482 -15.7801 -28.4694 -4.49909 -15.339 -28.6497 -4.69167 -15.2001 -27.6657 -5.68084 -15.0186 -27.4773 -5.66918 -15.8308 -26.7545 -6.05802 -16.2043 -27.6143 -6.69515 -16.2358 -28.3664 -7.43249 -15.7988 -27.9296 -8.04751 -16.6166 -28.0173 -8.95022 -16.5478 -27.5222 -8.7509 -16.6875 -26.5519 -8.66684 -16.9689 -25.6088 -7.93004 -16.3289 -25.9131 -7.52233 -16.9981 -25.1919 -8.16789 -17.1179 -24.4055 -8.51726 -18.0034 -24.5759 -7.76046 -18.5311 -24.9653 -8.26286 -19.0237 -25.6967 -9.11909 -19.5521 -25.5662 -9.6674 -19.9614 -24.8341 -9.36758 -19.5603 -24.0111 -9.71097 -18.8484 -23.4191 -9.91658 -18.4162 -22.5345 -10.7579 -18.5296 -22.0161 -10.7664 -19.3471 -21.4758 -11.5279 -19.9044 -21.3187 -11.8915 -20.1794 -22.2222 -12.6973 -19.7468 -21.9194 -12.7852 -20.3757 -22.7263 -13.3292 -20.632 -23.5514 -13.4752 -21.5047 -23.9737 -13.1537 -21.6533 -24.8679 -13.3275 -21.0276 -25.6407 -12.8764 -20.2171 -26.0973 -13.0388 -19.5873 -26.9026 -13.6184 -19.0849 -26.2738 -13.5587 -18.1361 -26.0939 -13.835 -18.3849 -25.1519 -13.1161 -18.4425 -24.3643 -12.4486 -18.4747 -23.7068 -12.7966 -19.3866 -23.5037 -12.8579 -18.8749 -22.6204 -13.0134 -17.9925 -22.2419 -12.588 -17.5563 -21.4621 -11.7095 -18.0384 -21.5748 -10.9247 -17.6441 -21.1799 -11.3474 -16.9299 -20.6619 -11.2398 -17.1269 -19.6472 -11.0711 -17.6729 -18.8322 -10.5879 -18.5693 -18.9895 -11.6483 -18.645 -18.9701 -11.9896 -19.5261 -19.4061 -12.1777 -20.4823 -19.2152 -12.7425 -21.1859 -19.5812 -13.534 -21.3841 -18.9716 -13.5533 -20.3777 -18.7243 -13.6597 -19.3756 -18.4117 -14.5079 -19.6058 -17.8605 -14.3696 -18.6726 -18.1917 -13.8902 -18.6813 -17.2889 -14.2964 -19.4534 -16.844 -13.8836 -18.8588 -16.1062 -14.1219 -17.9965 -15.7398 -15.021 -17.9166 -15.3536 -15.8157 -18.4727 -15.2823 -15.3523 -19.2932 -15.6161 -15.5973 -20.1148 -16.0267 -14.7908 -20.0871 -15.4163 -14.4999 -20.6217 -16.1994 -14.4935 -20.8031 -17.171 -13.7367 -21.211 -16.6155 -13.3535 -21.9859 -17.0621 -13.9134 -22.3007 -17.8359 -13.1086 -22.4337 -18.3733 -12.7485 -23.0859 -18.995 -13.7114 -23.0087 -19.1073 -14.4331 -23.0951 -19.7443 -14.6442 -23.1021 -20.731 -13.6472 -23.4078 -20.7863 -12.9265 -24.0757 -20.7849 -12.9137 -24.6385 -20.0039 -13.4248 -24.9077 -20.8176 -13.1772 -25.4239 -21.6317 -12.5213 -25.3094 -22.3177 -12.7114 -24.4921 -22.8817 -11.7947 -24.1747 -22.8288 -11.3222 -24.1469 -23.7954 -10.3858 -24.0424 -23.414 -10.4226 -24.9802 -23.0995 -9.72927 -24.8652 -22.3063 -9.83954 -23.9071 -22.0072 -9.56914 -24.0692 -21.0482 -9.90157 -24.4061 -20.2121 -9.14565 -24.6332 -19.5284 -9.65273 -23.9595 -18.9872 -10.518 -23.766 -18.4006 -10.6395 -22.7973 -18.0399 -10.8227 -21.9991 -17.4574 -11.5774 -21.5418 -17.0673 -11.0193 -21.6557 -16.294 -11.1189 -20.7757 -16.7343 -11.2056 -20.0747 -17.4413 -10.4645 -20.3758 -18.0466 -10.4713 -21.0458 -18.7275 -10.0723 -21.9686 -18.6107 -9.25549 -22.4879 -18.8545 -9.07569 -23.2173 -19.5635 -8.47135 -23.1156 -20.3332 -7.92134 -22.4266 -19.7771 -6.97099 -22.9323 -19.8422 -7.36124 -23.2402 -20.6742 -7.05892 -24.1907 -20.9196 -6.97074 -24.9608 -21.6174 -7.50667 -25.4617 -20.9658 -8.03961 -25.5878 -21.7907 -8.83553 -25.928 -21.222 -8.18798 -26.6192 -21.545 -7.44354 -26.6049 -20.9258 -7.16997 -26.9468 -20.0951 -8.03407 -27.2859 -20.412 -8.28212 -27.549 -19.4903 -7.75917 -27.0846 -18.7993 -7.23471 -26.228 -18.5828 -8.09615 -25.8278 -18.1313 -8.0119 -26.7454 -17.6509 -7.66004 -26.4889 -16.7077 -7.0012 -25.8358 -16.1749 -6.07736 -26.1412 -16.531 -5.19126 -25.9822 -16.9332 -5.30001 -25.4225 -17.6665 -4.99487 -24.542 -17.4581 -4.84378 -24.6103 -16.4763 -4.03099 -24.9792 -16.1006 -3.68288 -24.069 -16.0953 -4.5959 -23.605 -16.2331 -3.86345 -23.0581 -15.7277 -3.66842 -22.1019 -15.6366 -4.44255 -22.2054 -14.9581 -4.21291 -21.2708 -15.1999 -4.76323 -20.4773 -14.9393 -5.66103 -20.1248 -15.0223 -5.739 -19.9744 -16.018 -5.16279 -20.0965 -16.8303 -4.89575 -20.3109 -17.7972 -4.17046 -20.9811 -17.9269 -4.51684 -21.9014 -17.8269 -5.23199 -22.7013 -17.8388 -6.06518 -22.4194 -18.3384 -6.46958 -22.5766 -17.4627 -6.55573 -22.7228 -16.4735 -7.50401 -22.9115 -16.4373 -7.44964 -23.6301 -15.7202 -6.72281 -24.3062 -16.0531 -7.11046 -24.5414 -16.8984 -8 -24.4518 -17.2486 -8.1661 -24.7277 -16.2794 -8.80678 -25.0491 -15.5228 -9.75171 -25.0546 -15.3218 -10.6403 -24.6051 -15.2272 -10.8032 -23.6272 -15.245 -11.3153 -24.1974 -14.6185 -12.0515 -24.2957 -13.9372 -12.7912 -24.9006 -13.7944 -13.701 -25.3309 -13.8457 -14.1857 -24.4994 -14.0153 -14.6343 -23.6486 -14.4012 -15.6386 -23.7889 -14.3368 -16.2817 -24.1007 -14.9781 -17.2261 -23.8973 -15.148 -17.1019 -24.8721 -15.0619 -17.1599 -24.7516 -16.0014 -17.3539 -23.7965 -16.4071 -17.8914 -23.0954 -16.7842 -17.0729 -22.747 -17.2491 -16.9625 -21.8535 -16.8683 -16.4428 -22.6219 -16.403 -15.6334 -22.5211 -17.0605 -15.4402 -22.1734 -18.0255 -16.2596 -22.0516 -18.621 -16.281 -21.4801 -19.4674 -15.272 -21.45 -19.6547 -14.4919 -21.0218 -19.3708 -14.4827 -21.0699 -20.3203 -14.3937 -20.0891 -20.6419 -15.2591 -20.2013 -20.0479 -15.2322 -19.2317 -19.696 -15.3255 -18.4293 -19.1919 -16.3204 -18.4439 -19.1157 -16.4327 -17.9813 -18.2078 -16.7581 -18.8953 -17.873 -17.7688 -19.1172 -17.6779 -17.4339 -18.7452 -16.7992 -17.7999 -17.8916 -17.156 -17.4971 -16.9014 -17.0154 -16.987 -16.7673 -17.8442 -16.0071 -16.9277 -17.8095 -16.3357 -16.042 -18.0832 -15.8522 -15.2491 -17.7307 -15.0268 -15.3902 -17.2562 -14.2734 -14.6977 -17.4562 -13.3763 -15.0437 -17.412 -12.8254 -14.9499 -16.528 -12.139 -14.4217 -17.0652 -11.8915 -14.332 -16.0891 -11.8838 -13.7272 -15.3349 -12.4026 -14.0729 -14.5583 -12.0394 -14.4195 -13.678 -12.9144 -14.8831 -13.807 -13.1419 -14.8408 -12.8802 -13.7817 -14.1203 -12.6378 -14.2988 -14.5272 -13.4366 -15.2095 -14.9256 -13.7233 -16.0709 -14.886 -13.2813 -16.8565 -14.7059 -13.8844 -17.4549 -15.5032 -14.1596 -18.1093 -16.1326 -14.6099 -19.1191 -16.2713 -14.5576 -18.4838 -16.9854 -14.3561 -18.3764 -17.8012 -14.9375 -18.8833 -17.6984 -15.8364 -19.7245 -18.0248 -16.3655 -20.1495 -17.9916 -17.2058 -20.9699 -17.7827 -17.5859 -21.3857 -17.0593 -17.0054 -20.7868 -16.3499 -16.8 -20.6298 -15.3494 -17.1891 -19.8264 -16.0005 -17.3016 -19.2928 -16.1446 -18.1329 -18.6018 -16.7547 -17.8141 -18.6002 -16.3506 -16.9155 -18.1379 -15.6157 -17.4622 -17.7339 -15.6081 -18.4144 -17.1829 -16.2762 -18.8843 -16.297 -16.59 -19.3318 -16.5266 -15.7402 -19.8113 -15.5639 -15.6182 -19.5572 -15.699 -16.3879 -20.1923 -16.5975 -16.8251 -20.46 -16.6926 -17.1292 -21.3322 -17.2365 -16.2922 -21.7437 -17.0608 -16.9711 -22.4366 -16.6029 -17.6605 -22.9884 -15.7083 -17.2031 -22.9868 -15.7606 -16.5044 -22.2943 -14.8901 -16.0169 -22.2864 -14.8155 -15.0747 -22.5815 -15.7039 -15.2188 -22.2098 -15.8292 -14.4334 -21.5628 -16.5984 -14.8143 -21.107 -16.9572 -14.1128 -20.4506 -16.669 -13.1479 -20.4214 -15.8169 -12.8073 -20.0318 -14.8406 -12.6048 -20.2706 -13.8779 -12.827 -20.1218 -13.9749 -12.6475 -21.0685 -13.4412 -12.8735 -21.8637 -13.6789 -13.5508 -22.5351 -12.8481 -13.2971 -23.0953 -12.6076 -12.8744 -23.9928 -13.3394 -13.258 -24.5136 -13.6613 -13.9972 -25.1404 -14.1916 -14.3543 -24.3928 -15.149 -14.325 -24.0012 -15.6066 -13.4368 -23.9599 -14.7152 -13.2297 -24.3327 -14.2023 -12.9686 -25.1885 -15.1557 -12.5179 -25.2881 -15.343 -12.2639 -24.3119 -16.2864 -12.667 -24.5346 -17.0044 -11.9874 -24.2286 -17.5338 -12.4472 -23.4786 -16.6446 -12.5393 -22.9703 -16.5696 -11.6857 -22.4515 -17.3692 -11.9046 -21.9321 -17.8746 -11.0886 -21.707 -18.1737 -10.6253 -20.8764 -18.4803 -10.4366 -19.9717 -18.5569 -10.3192 -18.9542 -18.1234 -9.43081 -18.7172 -19.1582 -9.12823 -18.59 -19.7534 -9.87292 -18.3789 -20.4141 -10.1856 -19.1105 -20.9787 -9.62175 -18.4886 -21.0624 -10.3766 -17.8638 -21.4583 -9.85113 -17.0377 -20.722 -10.338 -16.6207 -20.7459 -9.59063 -15.9855 -20.8548 -8.95527 -15.1671 -19.9242 -8.703 -15.2473 -18.9201 -8.90411 -15.1719 -18.1238 -9.3561 -14.8699 -17.9836 -10.0041 -15.5943 -18.157 -11.0105 -15.6977 -18.6745 -11.5815 -15.1005 -18.6827 -10.9554 -14.3532 -18.5079 -11.6897 -13.6771 -18.159 -12.6452 -13.7128 -19.0323 -12.7534 -13.3496 -18.3701 -13.1307 -12.7089 -19.0798 -13.74 -13.0787 -19.6096 -14.2332 -12.4014 -19.8024 -14.9354 -13.1348 -19.8351 -15.8218 -13.5386 -20.7654 -16.2443 -13.3746 -21.1662 -16.203 -14.338 -22.1071 -15.9597 -14.491 -21.8826 -16.2741 -15.4213 -22.3855 -15.4327 -15.7371 -22.3595 -14.4144 -15.5923 -21.9658 -14.2895 -14.6841 -22.76 -13.8064 -14.3805 -23.7425 -13.9464 -14.7379 -24.3193 -13.9623 -15.5688 -24.8131 -13.1584 -15.2952 -25.6912 -13.5739 -15.4855 -25.6251 -14.4952 -15.2866 -26.3669 -15.1185 -15.078 -26.7458 -15.381 -14.1844 -27.7658 -15.4354 -14.3337 -27.8699 -14.6975 -15.0492 -28.7781 -15.208 -15.1462 -29.6164 -14.7923 -14.6655 -29.9572 -14.4356 -13.7453 -29.8541 -14.6583 -12.8038 -30.2491 -14.4595 -11.8887 -31.1175 -14.1393 -11.4102 -30.4487 -13.5883 -11.0262 -29.7189 -13.1534 -11.6149 -29.3205 -13.0365 -10.7325 -28.4554 -12.6286 -10.6393 -28.2075 -11.8614 -10.0456 -28.6695 -11.3561 -10.8066 -28.5348 -10.7129 -11.5541 -27.5467 -10.5919 -11.8849 -26.7544 -11.2417 -11.7694 -27.0448 -12.0857 -12.0829 -26.6559 -12.3735 -11.2575 -26.3066 -12.9885 -11.8995 -26.412 -13.0773 -12.8836 -25.7073 -13.7919 -12.8896 -25.8508 -13.8904 -13.9273 -25.772 -14.827 -13.6461 -25.2992 -15.6238 -13.279 -24.5212 -15.0165 -13.2247 -24.2121 -14.7299 -12.344 -24.9053 -15.254 -11.9832 -25.4244 -16.0721 -12.063 -25.6387 -17.0187 -12.1493 -24.6835 -17.0759 -12.4246 -23.775 -16.8107 -12.6708 -23.2459 -16.5785 -11.8284 -22.2539 -17.0322 -11.6962 -21.9275 -17.2061 -10.7655 -22.3346 -18.0584 -10.8395 -22.1421 -18.7998 -11.4673 -21.9957 -19.4888 -10.756 -22.2083 -20.3753 -10.3815 -23.2334 -20.2544 -10.1242 -24.1489 -19.9433 -9.93108 -23.7081 -19.8917 -9.07961 -24.1058 -20.3655 -8.27278 -24.3172 -21.2307 -7.89243 -24.1376 -20.516 -7.34119 -23.3707 -19.9827 -7.00076 -24.2276 -19.7348 -6.54321 -24.8567 -19.2319 -6.00323 -25.4487 -18.4073 -6.18263 -25.9119 -19.0874 -5.59996 -25.9277 -19.5393 -6.49261 -25.5308 -20.1325 -5.8481 -25.525 -21.1127 -5.91317 -25.3167 -21.9881 -5.48851 -26.2641 -21.8018 -5.05621 -26.4218 -21.5999 -4.06819 -26.2218 -22.4812 -3.68343 -26.1272 -23.3827 -3.95668 -26.3054 -23.9281 -3.0688 -27.2155 -24.1161 -3.50476 -26.8765 -24.9242 -3.78457 -27.5058 -25.6642 -4.2416 -27.1023 -26.527 -4.53879 -27.0619 -25.9043 -5.33441 -26.6871 -25.9842 -6.24525 -26.4865 -25.0119 -6.56307 -27.4421 -24.8808 -6.73176 -26.9309 -23.9615 -6.61002 -27.3001 -24.0946 -7.57501 -28.2015 -24.2194 -7.83352 -27.7642 -23.8312 -8.64523 -28.446 -24.0256 -9.39189 -27.5266 -23.8397 -9.74 -27.8445 -22.9525 -10.1512 -28.2282 -22.1332 -9.72605 -28.1529 -21.1953 -10.1234 -29.1037 -20.7761 -10.1733 -28.4622 -20.0265 -10.1448 -29.1432 -19.2432 -10.0976 -29.8741 -18.9771 -10.5654 -30.1066 -19.335 -9.69267 -29.9655 -19.0886 -8.71425 -30.1273 -18.0954 -8.94987 -30.0183 -17.9663 -9.97725 -29.6359 -17.1072 -9.59605 -29.0034 -16.8667 -8.85634 -28.2419 -16.9473 -8.19144 -27.8492 -17.1085 -9.0712 -27.5697 -16.108 -9.40298 -26.9925 -15.3652 -9.78794 -26.2743 -15.6365 -9.15202 -26.5107 -15.5092 -8.19827 -26.8303 -14.7332 -7.8175 -27.4228 -14.0303 -8.14973 -28.3852 -14.0894 -8.02409 -28.9399 -13.4063 -8.40876 -29.7726 -13.8112 -8.89635 -30.3518 -13.6393 -8.07892 -31.3164 -13.7703 -7.91874 -31.4135 -12.8393 -7.64175 -31.0896 -12.0376 -8.23817 -30.6434 -11.0984 -8.18926 -29.9714 -10.4298 -8.54088 -29.2192 -11.0595 -8.82531 -28.6715 -11.8448 -8.89409 -28.1345 -12.4835 -8.40983 -27.1843 -12.5256 -8.74668 -26.3993 -11.8476 -8.85674 -26.9703 -11.0674 -8.87206 -26.6709 -10.3475 -8.30911 -26.9508 -9.37132 -8.08685 -26.7855 -9.03903 -9.01802 -25.8574 -8.97002 -9.57433 -25.5988 -9.82136 -9.25645 -24.7619 -10.1389 -9.67106 -23.8746 -10.4125 -9.51316 -24.2453 -11.3345 -9.30173 -25.2589 -11.2778 -9.45013 -25.5803 -10.9257 -8.58106 -25.4702 -10.0831 -8.14629 -25.9919 -9.55072 -7.54039 -25.6746 -8.64846 -7.40779 -25.4433 -8.33951 -6.53427 -24.4989 -8.50595 -6.65493 -24.5153 -8.46665 -5.6737 -24.5739 -9.48034 -5.60575 -24.6297 -9.99906 -4.73285 -24.8183 -10.7433 -5.35782 -23.9116 -10.8019 -5.00426 -24.1648 -11.5341 -5.60111 -23.613 -12.3761 -5.33393 -22.6821 -12.3583 -5.29033 -22.8572 -12.652 -6.18695 -23.2679 -13.5634 -6.02049 -24.2666 -13.5665 -6.01619 -24.754 -14.2365 -5.55548 -24.7638 -14.1989 -4.50225 -25.0228 -15.1215 -4.21487 -24.1141 -15.333 -4.31866 -23.8079 -15.7368 -3.45891 -23.4561 -16.6754 -3.2757 -23.4303 -16.9574 -2.33522 -23.0118 -16.0143 -2.13419 -23.2693 -15.0072 -2.06275 -24.2651 -14.9787 -1.99105 -24.2919 -15.5924 -1.17515 -24.3155 -14.841 -0.4582359 -25.1283 -15.3465 -0.5036229 -25.2348 -14.4185 -0.06488168 -24.5136 -13.818 0.3570951 -25.2275 -13.1663 0.1421131 -24.9876 -13.2893 1.18684 -25.4414 -12.5948 1.77893 -25.4408 -13.2653 2.54706 -24.9729 -14.048 2.83926 -24.8891 -14.9278 3.4192 -25.372 -14.6094 4.14297 -26.0984 -15.3206 4.3032 -27.0125 -15.1236 4.00847 -27.62 -14.3943 4.23565 -28.6482 -14.582 4.03427 -29.0918 -15.1636 4.73254 -29.8524 -14.8481 5.19703 -30.1908 -15.7599 5.5041 -30.9153 -16.2851 5.18205 -30.3733 -16.7639 4.38364 -30.5791 -16.5679 3.50156 -29.5863 -16.8946 3.44013 -29.2717 -17.7348 3.96828 -28.8955 -17.6863 3.01384 -27.979 -17.3281 2.97434 -27.9624 -16.3674 2.77893 -28.3396 -15.4744 3.11057 -28.2026 -15.4439 2.1149 -27.2821 -15.1192 1.80134 -27.0399 -15.8175 1.08392 -26.6147 -16.5257 1.63729 -25.6737 -16.2316 1.37181 -25.6096 -16.7365 0.4545581 -26.5481 -17.1039 0.4675381 -26.2607 -16.4009 -0.1796899 -27.165 -16.0062 -0.2613949 -26.9674 -14.9999 -0.2270869 -27.4847 -14.2596 0.1759851 -27.0817 -13.3405 0.1084141 -26.8075 -12.5783 -0.4656639 -26.9694 -12.4699 -1.44124 -27.6937 -13.1783 -1.31868 -28.2051 -12.5574 -0.7864819 -29.1858 -12.3897 -0.8843409 -30.028 -11.8729 -0.6570859 -29.8736 -11.1222 -1.23453 -29.7886 -10.0779 -1.44002 -29.5036 -9.27114 -1.97535 -29.2124 -8.98143 -2.90251 -29.2178 -8.91597 -3.89201 -28.6765 -8.61849 -4.70993 -29.5922 -8.21236 -4.77392 -29.0873 -7.48039 -4.33529 -28.2973 -7.04118 -4.72241 -28.8451 -7.25546 -5.55126 -29.6016 -6.68431 -5.89783 -29.146 -5.79975 -6.06689 -28.4489 -6.38146 -6.47533 -27.7792 -6.5174 -7.19291 -28.4144 -7.30587 -7.19045 -27.5922 -7.66761 -6.82407 -28.0313 -8.41514 -7.26508 -27.6739 -8.3423 -8.24136 -27.7314 -8.66511 -9.23767 -27.272 -7.95581 -9.75733 -27.4269 -7.34492 -10.6114 -28.0425 -7.82302 -11.1699 -28.9176 -7.39337 -11.0902 -29.1076 -8.37356 -11.1194 -28.8413 -9.14644 -11.7364 -28.1088 -8.74703 -12.2712 -27.91 -7.75473 -12.6816 -28.5952 -7.8109 -13.4033 -28.448 -8.34285 -14.2751 -27.4154 -8.17272 -14.4191 -27.2249 -9.13546 -14.517 -26.403 -9.14191 -15.0485 -26.2999 -8.92309 -15.9905 -26.335 -7.95828 -16.1425 -26.1207 -7.8743 -17.2313 -25.7488 -6.93528 -17.2774 -25.0781 -7.511 -17.7133 -24.3484 -8.1919 -17.3384 -23.4965 -7.92555 -16.9085 -24.0928 -7.13886 -17.3378 -23.7939 -6.32786 -16.8285 -24.083 -6.34021 -17.7856 -25.0421 -6.4905 -18.0405 -25.6939 -6.59736 -18.812 -25.1952 -6.86743 -19.6415 -24.2383 -7.07014 -19.4521 -24.0692 -6.04984 -19.5603 -23.9515 -5.07739 -19.2637 -22.9602 -5.11552 -19.1409 -22.2975 -5.47456 -19.8141 -23.1025 -5.51085 -20.3748 -22.9175 -4.91009 -21.1221 -22.9449 -4.10277 -21.6805 -22.2681 -4.0511 -20.918 -22.7767 -3.23688 -21.1903 -23.669 -2.91219 -20.9701 -24.4482 -3.2365 -20.4153 -24.4829 -2.2752 -20.5939 -23.8886 -1.45106 -20.5562 -24.1081 -0.6395911 -21.1532 -23.9008 -0.8702291 -22.0768 -23.2073 -0.3687301 -22.5884 -23.443 -0.8388981 -23.4634 -22.6238 -1.49794 -23.4334 -22.933 -2.03632 -24.2382 -22.6485 -1.68762 -25.1797 -22.008 -1.04586 -25.5934 -22.795 -1.24581 -26.1267 -23.0418 -2.00049 -26.722 -23.7473 -2.7081 -26.854 -22.9626 -2.87833 -26.2518 -22.9877 -3.47937 -27.0963 -22.297 -2.88416 -27.3404 -21.6239 -2.39729 -28.0017 -20.6922 -2.69721 -27.8727 -20.1675 -3.16173 -27.1671 -20.3995 -4.12942 -26.9853 -20.803 -4.90785 -27.4347 -21.3814 -4.09716 -27.5813 -20.6819 -4.34135 -28.2495 -21.3811 -3.76857 -28.7777 -21.5944 -4.34063 -29.5771 -22.4986 -3.91032 -29.2903 -23.1906 -4.06023 -30.0174 -23.2526 -3.44768 -30.8714 -24.1149 -3.76465 -30.5387 -24.3467 -4.31427 -29.707 -24.4271 -4.98895 -28.9177 -24.9098 -5.04433 -28.0529 -24.4678 -5.82152 -27.7627 -23.6286 -5.67018 -27.2847 -23.9147 -4.7631 -26.974 -24.3337 -5.0812 -26.1947 -23.8891 -5.95304 -26.1686 -24.1818 -5.8353 -25.1993 -23.2958 -6.32126 -25.3782 -22.5389 -6.18362 -24.7652 -21.7665 -6.44275 -25.3246 -21.3527 -7.18337 -25.7122 -21.3011 -7.12181 -24.7215 -21.6829 -8.11301 -24.5958 -21.506 -8.92243 -25.2364 -22.311 -9.47341 -24.8775 -23.1141 -9.23952 -24.2518 -23.0592 -10.0614 -23.705 -23.3695 -9.70369 -22.8657 -23.8143 -9.34573 -22.0497 -24.5104 -8.88213 -21.4898 -25.2844 -9.42388 -21.0378 -25.9549 -10.0951 -21.3951 -25.2651 -10.7405 -21.0782 -25.218 -10.3991 -20.1564 -25.1875 -10.52 -19.1277 -24.4831 -10.1837 -18.5632 -23.6585 -9.94424 -19.1079 -23.9279 -11.0407 -19.0471 -23.801 -12.0576 -18.9863 -23.2658 -11.9927 -18.1027 -23.3301 -12.66 -17.3392 -23.1631 -12.8009 -16.3543 -22.6089 -12.2585 -15.8098 -23.4545 -11.9771 -15.401 -22.9035 -11.1408 -15.4111 -22.5068 -10.2177 -15.1901 -22.1747 -10.3074 -14.2348 -22.4918 -10.9561 -13.5444 -23.3821 -10.5623 -13.8674 -23.6899 -10.0789 -13.0289 -23.0102 -9.36278 -13.0826 -23.6127 -8.56719 -13.0767 -24.2071 -8.56377 -13.9308 -24.4373 -7.63862 -13.5312 -23.7957 -6.94776 -13.1547 -23.4686 -7.13899 -12.2649 -24.0515 -7.14962 -11.5233 -24.998 -6.93596 -11.1256 -24.7305 -6.24683 -10.5274 -25.0617 -6.00335 -9.65958 -24.8798 -5.13277 -10.0131 -24.5143 -4.39761 -9.4855 -25.1906 -3.71167 -9.43391 -25.5715 -3.50581 -8.52262 -24.9664 -3.22337 -7.7535 -23.9685 -2.94577 -8.07086 -23.2112 -2.43713 -8.50812 -23.6072 -2.41526 -9.44602 -23.0318 -2.94852 -10.0903 -22.1724 -2.68754 -10.5891 -21.5999 -3.26886 -9.89423 -22.1773 -3.71842 -9.24386 -21.2796 -3.81116 -9.00937 -21.6658 -4.66434 -9.31453 -21.7366 -4.84746 -10.3012 -22.1331 -5.34065 -11.1067 -22.7984 -5.94377 -10.6071 -21.8743 -6.48522 -10.7245 -20.9282 -6.62032 -10.4901 -20.6903 -5.64561 -10.658 -19.8887 -5.06712 -10.8806 -18.9299 -4.69647 -10.7343 -18.24 -4.35726 -11.3819 -17.3704 -4.24718 -11.9378 -17.5078 -5.2544 -12.2504 -17.2315 -4.76414 -13.1319 -16.45 -5.0031 -12.5275 -16.1456 -5.6531 -11.8936 -16.8412 -6.34056 -11.6283 -16.3256 -6.65243 -12.4293 -15.9479 -7.62838 -12.5761 -15.7642 -8.6454 -12.3845 -15.6314 -9.31242 -13.1746 -15.8787 -9.68678 -14.1503 -15.3911 -9.87962 -14.9556 -15.4817 -10.8665 -14.9273 -14.6932 -10.9133 -14.288 -14.4121 -11.4217 -15.1486 -13.3612 -11.4759 -15.2627 -13.6665 -10.9029 -15.9729 -13.7351 -11.7325 -16.5088 -13.6203 -12.0177 -17.4088 -13.7225 -11.2005 -18.0494 -12.9117 -10.6113 -18.2036 -12.7872 -9.58873 -18.3381 -12.4506 -9.61841 -19.3102 -12.1935 -8.83752 -18.8742 -12.0301 -7.95536 -19.146 -12.2501 -7.07887 -18.6758 -12.262 -7.04087 -19.6751 -11.7328 -6.58379 -20.4034 -12.0481 -5.74197 -19.9493 -12.2735 -5.4315 -19.0392 -11.9987 -4.53446 -19.4693 -11.3457 -4.38061 -18.6519 -11.8107 -4.77775 -17.795 -10.9612 -5.24133 -17.4803 -10.1627 -5.48166 -17.1198 -9.50442 -6.00443 -17.7127 -9.03355 -6.93538 -17.6181 -8.47608 -7.697 -17.2508 -7.67282 -8.08832 -17.6588 -7.44367 -7.09349 -17.3526 -8.01131 -6.32168 -17.6734 -8.52899 -5.5792 -17.267 -9.20995 -4.95803 -17.0931 -9.48674 -4.01858 -17.3245 -9.55304 -4.1095 -18.3254 -9.99739 -5.01114 -18.2295 -8.96042 -4.93942 -18.4538 -8.01403 -4.7303 -18.5468 -7.56015 -5.62165 -18.4576 -7.24437 -6.62524 -18.6136 -8.04479 -6.77965 -19.0786 -8.81672 -6.51161 -19.6569 -9.4934 -7.15882 -19.9466 -9.49722 -6.4162 -20.6217 -10.482 -6.34952 -20.7354 -10.5443 -6.49223 -21.6892 -11.016 -6.27755 -22.5506 -10.8751 -5.46711 -21.9762 -9.99186 -5.52541 -21.5626 -10.3452 -5.07223 -20.7521 -10.6289 -4.11602 -20.6422 -10.3005 -3.1362 -20.8727 -9.82521 -2.21148 -20.5974 -10.0545 -1.65698 -19.8201 -10.3975 -1.0747 -20.6657 -11.2907 -1.26083 -21.0455 -11.325 -0.2244581 -21.0545 -10.6341 -0.07507357 -21.7519 -10.5731 0.7147269 -22.3464 -10.1955 1.63406 -22.4924 -9.31664 1.82363 -22.9941 -8.59644 1.67396 -22.371 -8.42596 0.7606259 -21.9983 -7.52603 1.1453 -22.1477 -6.92562 1.22957 -21.2627 -6.41477 2.10737 -21.2184 -6.86134 2.85107 -21.7961 -7.28881 3.1331 -20.8803 -7.37179 3.98136 -20.404 -6.31289 4.05668 -20.3108 -5.89776 4.80545 -20.7904 -5.21834 5.55332 -20.7582 -4.65297 6.37954 -20.6603 -5.14382 6.33289 -19.7342 -5.98502 5.91106 -19.5562 -6.66824 5.35106 -19.1563 -7.06497 6.13764 -18.5724 -7.85859 6.0814 -19.1565 -8.48983 6.74274 -18.9131 -7.65529 7.25829 -19.2669 -7.80653 7.51277 -20.2417 -8.00427 7.82985 -21.2068 -7.70096 8.5143 -20.542 -7.19068 8.47607 -21.4967 -7.04273 8.28577 -22.4537 -6.15359 8.81529 -22.4977 -5.5929 8.32764 -23.0797 -5.62245 7.75697 -22.2752 -6.14285 7.00673 -22.7847 -7.03578 7.02336 -23.234 -7.86423 7.48317 -22.8901 -7.75152 6.63716 -22.3115 -8.05986 5.69336 -22.3032 -7.36735 5.06608 -22.1438 -7.33332 4.85268 -21.1945 -7.92832 5.01153 -20.3663 -8.84178 4.76354 -20.0779 -9.66964 4.10414 -20.0355 -9.23841 3.30958 -20.3508 -8.55118 3.46217 -19.6435 -8.16859 2.95729 -18.8266 -8.28443 3.73358 -18.1617 -7.72847 4.43352 -18.6847 -6.86605 4.03555 -18.6272 -5.98179 4.4017 -19.0393 -5.79104 3.5794 -18.5487 -5.20034 3.19953 -19.2469 -5.75031 2.43427 -18.9192 -6.13293 1.51064 -18.9893 -6.89337 1.67871 -18.2604 -6.10459 1.6592 -17.6439 -6.60068 2.5141 -17.483 -7.2963 3.02293 -16.9893 -8.16406 3.58456 -16.8183 -9.03713 3.16021 -16.8086 -9.36287 2.90658 -17.786 -10.2118 3.14535 -18.3026 -9.88897 2.20258 -18.4462 -10.164 1.66142 -17.5827 -10.3647 0.8572589 -17.129 -10.8485 0.8053339 -16.2602 -10.6953 0.09793843 -15.533 -10.8198 -0.4609421 -14.7428 -10.5965 0.1160509 -13.9522 -9.97413 -0.6918581 -13.8536 -9.87839 -1.63599 -13.4201 -10.3604 -1.01524 -12.7865 -11.1228 -1.66551 -12.9097 -11.301 -1.60182 -13.8775 -10.959 -2.54205 -13.4749 -11.8379 -2.22479 -13.0609 -11.8804 -3.20742 -13.2836 -12.017 -4.13863 -13.4871 -11.9104 -4.90725 -12.8167 -11.2375 -5.03063 -12.0366 -10.2937 -4.72942 -12.0508 -10.1573 -3.8177 -12.466 -9.62895 -4.09744 -13.3503 -9.79538 -3.06516 -13.4277 -8.85948 -2.88144 -13.6784 -8.9726 -2.59459 -12.7654 -9.56825 -2.32879 -12.0685 -9.23309 -1.36981 -12.2141 -9.38739 -0.4854961 -12.683 -9.94702 0.2010429 -12.3254 -10.5931 -0.3056611 -11.7696 -9.78948 0.09355763 -11.1951 -9.46303 -0.7424631 -10.7585 -9.05064 -0.6607541 -9.82044 -8.50449 -1.14242 -9.12951 -8.5666 -0.2787611 -8.69017 -7.89329 0.003295644 -9.41022 -6.91513 -0.1145211 -9.015 -6.81546 0.8590939 -8.67759 -5.87906 1.16888 -8.75542 -6.2072 1.95886 -9.32202 -6.49973 1.19249 -9.9543 -7.49017 1.24979 -10.1659 -6.89959 1.94796 -10.4711 -7.79777 2.22223 -10.2804 -8.68615 2.45645 -10.725 -9.47579 2.20275 -10.1316 -9.83387 1.64795 -10.8591 -10.0851 2.14067 -11.6578 -9.50146 2.79333 -11.3138 -9.73341 3.30789 -10.4883 -10.2841 4.08135 -10.3173 -10.3372 4.97512 -9.78593 -9.90736 5.66984 -9.13842 -9.83882 5.09525 -8.33365 -10.0946 5.46661 -7.3992 -9.93432 5.94395 -6.65128 -9.77468 6.85792 -6.73418 -9.05572 7.44037 -6.2922 -9.32653 6.60633 -5.7393 -8.48522 6.20226 -5.31691 -8.4886 6.82018 -4.57805 -7.52001 7.18109 -4.52401 -8.10647 8.00717 -4.49655 -8.72849 7.56266 -3.78362 -8.83162 7.11922 -2.87794 -8.34464 6.85635 -2.09231 -7.7579 6.31548 -2.71094 -7.53322 6.52506 -3.66986 -7.401 5.82748 -4.40383 -6.5936 5.2724 -4.66561 -5.62903 5.24096 -5.00128 -5.47037 4.33775 -5.35722 -5.98897 4.65013 -6.12624 -6.90924 4.79328 -6.17737 -7.24518 5.21535 -7.04011 -7.3467 5.88806 -6.26036 -6.49887 5.89597 -5.58445 -6.18269 6.82291 -5.87155 -6.51653 6.79875 -4.9112 -6.21958 6.38531 -4.04361 -5.65576 5.92132 -3.35793 -5.53134 5.78538 -2.39646 -5.51024 5.61904 -1.36 -5.46614 4.80102 -0.7213519 -5.56342 3.93131 -1.15315 -4.70782 3.7055 -0.5775349 -4.33792 2.9052 -1.04865 -3.6488 2.52788 -1.68681 -3.68136 3.35723 -2.28831 -4.60868 3.68362 -2.33755 -5.06392 4.54969 -2.43437 -5.97411 4.64432 -1.96572 -6.06719 4.45123 -2.90445 -6.56735 4.18022 -3.69939 -6.84709 3.2455 -3.96244 -6.25249 2.5304 -4.32443 -5.31744 2.59809 -4.01747 -4.78245 3.09539 -4.69412 -4.55181 3.69195 -3.85406 -4.02666 4.46481 -3.70274 -3.7753 3.97193 -4.53829 -3.37788 4.48498 -5.32139 -3.1311 4.87054 -4.50788 -2.40982 5.52329 -4.7372 -1.50144 5.96389 -4.57547 -0.837381 6.6891 -4.55061 -1.51242 7.32835 -4.95681 -1.2318 7.999 -5.61939 -2.07132 8.47597 -5.45056 -2.47597 9.43573 -5.56545 -3.38593 9.4684 -5.94584 -3.87668 8.98797 -5.14664 -4.13225 8.10067 -5.54933 -3.29302 7.48544 -5.5404 -3.62712 7.52176 -4.59314 -4.2146 6.65108 -4.54692 -3.25048 6.33987 -4.82225 -3.4754 6.20846 -5.80683 -4.15081 6.14521 -6.59411 -3.51736 6.85999 -6.77384 -4.01158 6.38712 -7.57539 -4.37193 7.21808 -7.16225 -4.07008 8.19652 -6.89853 -3.94993 8.14279 -7.86726 -4.57933 8.88804 -7.59343 -5.51764 8.86156 -7.81649 -5.46095 7.87323 -7.52744 -5.91795 7.21021 -6.8563 -5.79676 6.67497 -7.60364 -6.60302 6.01738 -7.65126 -6.19507 5.90688 -8.51202 -7.10244 5.72468 -8.87306 -6.57141 4.88027 -8.78316 -6.61732 4.09953 -9.38685 -6.43111 3.081 -9.42489 -5.7962 3 -10.1734 -6.07496 2.43715 -10.9647 -6.51881 3.11565 -11.5973 -6.57032 3.32356 -12.5609 -7.40635 3.93042 -12.6804 -8.03668 4.03978 -11.9065 -8.1488 4.75297 -11.1913 -9.01927 5.26095 -10.968 -9.71649 5.64889 -11.6276 -9.38183 6.33485 -12.2327 -8.37078 6.44808 -12.0336 -7.5173 6.87425 -12.2551 -6.80898 6.14408 -12.5147 -7.68864 5.93115 -13.0475 -8.28557 5.68163 -13.8402 -7.92576 6.23859 -14.6798 -6.93604 6.33008 -14.4608 -7.09488 6.97884 -15.1803 -7.06823 7.86142 -15.5981 -6.24323 7.7537 -16.0811 -5.29963 8.0926 -16.2411 -4.70596 7.25744 -16.1074 -4.15664 7.02818 -15.3362 -3.57626 6.32076 -14.9794 -3.32979 5.5224 -15.5376 -3.77655 4.59611 -15.4729 -3.87301 4.86542 -16.4355 -3.50081 4.19756 -17.0427 -2.70577 3.98901 -16.5369 -2.8612 3.34163 -15.7529 -3.19529 2.97499 -16.599 -2.66609 2.21388 -16.9912 -3.54406 1.95874 -17.3922 -3.95682 2.72012 -17.9704 -3.78366 3.62749 -18.2961 -4.0968 4.57844 -18.4011 -3.77522 5.47136 -18.6913 -4.0629 6.00749 -19.5107 -4.25354 7.02058 -19.2838 -3.43751 6.64512 -19.867 -3.00867 6.43205 -20.7848 -2.38617 6.84752 -21.3729 -2.0709 6.4896 -22.3222 -2.53383 6.62209 -23.2045 -2.18977 6.30646 -24.0833 -1.61252 6.60327 -24.8312 -2.65301 6.73655 -24.8664 -3.34414 6.00816 -25.0081 -3.08267 6.05736 -26.0135 -3.50899 5.1363 -26.1347 -3.28069 4.74597 -27.0133 -3.24162 4.88047 -28.0608 -4.1502 4.8764 -27.9491 -4.45513 4.52331 -28.8361 -4.8052 3.8377 -29.3994 -5.70892 4.07492 -29.9118 -4.97103 3.87697 -30.511 -3.98478 3.80747 -30.699 -3.41675 4.5233 -30.3938 -3.12763 4.51863 -29.418 -3.29134 3.55173 -29.8865 -2.83218 3.33207 -30.8075 -2.47378 3.03689 -29.9614 -2.47982 2.80388 -29.0118 -2.30081 2.63418 -28.0162 -1.77025 1.79528 -27.837 -0.880822 1.6327 -27.4569 -0.468344 1.17956 -28.1264 --0.473379 0.7629199 -28.1304 --0.817281 0.3713149 -29.0043 --0.251656 -0.4155941 -28.6204 -0.336359 -1.0061 -27.9357 -0.981935 -1.47798 -28.557 -1.89055 -1.33582 -29.1727 -2.16018 -2.12165 -29.7418 -2.18177 -3.10533 -29.7973 -1.34594 -3.5632 -29.6523 -0.519632 -3.40402 -29.1321 -0.210036 -3.33602 -28.1677 --0.320677 -4.0814 -28.4856 -0.01516317 -4.62418 -29.252 -0.904583 -5.02677 -29.078 -1.33119 -5.43753 -29.8197 -1.92359 -6.00717 -30.4431 -1.89713 -6.76985 -29.7707 -2.5093 -7.36453 -29.3099 -2.283 -7.99623 -30.01 -3.25254 -7.92979 -30.2839 -3.51203 -8.9136 -30.382 -3.86999 -9.67557 -30.9128 -4.81746 -9.76867 -31.3594 -5.33818 -10.5129 -31.9569 -5.21463 -11.1104 -32.7599 -5.01113 -10.6709 -33.6872 -5.08952 -9.92232 -34.3676 -4.42354 -9.19072 -34.1802 -4.53919 -8.2287 -34.4126 -4.37979 -7.83525 -33.4759 -4.72326 -8.09277 -32.5792 -4.53667 -7.18129 -32.2742 -5.34955 -6.96061 -31.753 -5.51886 -5.92376 -31.7724 -5.39783 -6.22247 -30.9379 -6.35566 -5.92 -30.6892 -6.80085 -6.80366 -30.4697 -7.16652 -6.13492 -29.8468 -7.26347 -6.76673 -29.0221 -7.49331 -6.97518 -28.1247 -7.37385 -7.91778 -27.7451 -7.90949 -8.09481 -26.8869 -7.76338 -7.18915 -27.1929 -8.82503 -7.00363 -27.0507 -9.63547 -6.75775 -26.6117 -10.5011 -6.59575 -26.051 -10.1762 -7.40917 -25.6643 -10.7883 -7.94803 -26.324 -10.8396 -7.61944 -27.2289 -11.5814 -7.44588 -27.869 -11.4657 -8.20921 -28.5149 -11.7499 -8.86654 -29.1529 -11.979 -9.06614 -28.2791 -12.1384 -9.75317 -29.0523 -11.1896 -9.90994 -28.8298 -11.3431 -10.8054 -28.4115 -12.1131 -11.5149 -28.2817 -12.7952 -12.0665 -28.7832 -13.033 -13.0071 -28.9071 -13.0271 -13.6799 -28.2579 -13.8044 -13.8836 -28.8353 -12.9849 -14.4784 -28.8907 -12.2553 -13.8761 -29.2943 -11.3957 -14.2002 -29.7687 -11.0492 -14.4429 -28.8352 -11.0377 -15.3459 -29.2215 -10.3889 -15.0386 -29.9342 -10.017 -14.3301 -29.25 -9.16488 -13.7682 -29.3931 -9.03591 -13.0454 -30.1113 -8.64722 -12.2141 -30.4057 -8.27525 -12.3187 -31.3987 -8.21517 -12.3909 -32.3636 -7.54178 -11.6982 -32.4379 -7.86355 -11.348 -31.5243 -8.21355 -10.5573 -30.9218 -7.47991 -10.5909 -30.2689 -6.60058 -11.0237 -30.4514 -6.81952 -11.2692 -29.5327 -6.09657 -10.8189 -29.0003 -6.12094 -11.647 -28.3699 -6.70404 -12.2366 -27.8746 -7.12831 -12.3254 -26.9666 -7.20566 -11.5409 -26.3733 -6.36072 -11.5111 -26.8736 -5.54071 -12.106 -26.867 -4.78478 -11.862 -27.355 -5.20832 -10.9339 -27.1806 -5.04158 -10.8174 -28.1766 -5.17188 -9.83069 -27.8874 -4.84483 -9.59129 -26.9573 -5.02834 -9.05155 -26.15 -5.27432 -8.0303 -26.071 -5.05258 -7.32274 -26.7556 -4.52852 -7.01088 -27.5214 -4.14285 -6.46836 -28.2113 -4.59063 -5.79881 -28.8525 -4.74921 -4.97668 -28.3892 -4.90164 -4.73063 -27.4656 -5.68624 -5.00372 -26.9419 -6.38839 -4.83949 -27.678 -7.26102 -4.72727 -27.2083 -8.08763 -4.35776 -27.4991 -8.53558 -4.28826 -28.4263 -8.44947 -3.3774 -28.4398 -9.16201 -3.14369 -27.7462 -9.97739 -2.66013 -27.5914 -9.44574 -2.06197 -28.1615 -9.84319 -1.62023 -27.3382 -9.50087 -0.8550741 -27.8355 -9.80294 -0.1625891 -28.4933 -9.38476 0.5225719 -29.0625 -10.1141 0.5461579 -29.6858 -10.5956 1.31519 -29.2146 -10.0214 1.78767 -29.7784 -10.0002 1.29642 -30.6815 -10.0139 1.56712 -31.6304 -10.8484 1.12109 -31.8816 -10.9408 1.59128 -30.9907 -11.2471 0.7206639 -31.0477 -11.8473 0.03473953 -30.5507 -11.3176 0.1451689 -29.695 -11.7833 -0.2547441 -28.9011 -12.3364 0.3334029 -29.4862 -13.3807 0.3132039 -29.8085 -14.0512 -0.4090351 -29.8629 -14.5112 -1.28344 -29.5757 -14.6965 -1.41305 -28.5115 -13.8841 -0.8553391 -28.1293 -14.0767 -0.1549331 -27.5044 -13.6415 -0.9264271 -26.9782 -12.9158 -1.59268 -26.829 -12.9712 -1.57771 -25.8562 -12.971 -0.6946841 -25.3781 -13.624 0.07821713 -25.6714 -14.2629 0.3773859 -24.925 -14.5004 1.09407 -24.2732 -13.9984 1.69374 -24.9613 -13.1313 1.3904 -24.6008 -12.5443 0.9985149 -23.8762 -11.9775 1.07109 -23.1062 -12.1191 2.01265 -23.1514 -11.5126 2.22838 -22.3617 -12.3777 2.29544 -21.8151 -12.656 1.49234 -21.389 -12.0212 1.01422 -20.7757 -11.6526 1.0851 -19.8941 -11.7524 1.35294 -18.9656 -12.6694 0.9086989 -18.6513 -12.4745 0.01534483 -18.188 -13.32 -0.4357571 -18.4767 -13.3612 -1.46712 -18.5708 -13.1586 -2.3857 -19.0798 -13.463 -3.10622 -19.7748 -13.3349 -3.31244 -20.8021 -13.8867 -2.49516 -20.8328 -14.1358 -1.53501 -20.7255 -13.8217 -1.82163 -21.6675 -14.8642 -1.99195 -21.7782 -14.9807 -2.42784 -20.9365 -14.7901 -3.31141 -20.4453 -14.4959 -4.03357 -19.9594 -14.9408 -4.53342 -20.6615 -14.2089 -4.48987 -21.4295 -13.6773 -4.07448 -22.1025 -12.623 -4.09084 -22.0604 -12.3007 -5.02232 -21.8798 -13.2635 -5.10807 -21.6987 -13.8206 -5.56189 -21.064 -14.6592 -5.5568 -21.643 -15.2531 -5.18259 -22.3581 -16.3165 -4.961 -22.3923 -16.8019 -4.07673 -22.5902 -16.8093 -3.37573 -21.8703 -17.424 -2.75211 -21.3873 -17.9847 -2.18889 -20.7834 -18.4649 -1.57189 -20.176 -17.6894 -0.9479571 -20.0145 -16.853 -1.37769 -20.3474 -16.0997 -2.00263 -20.1842 -16.4455 -3.02969 -20.045 -15.5347 -2.81767 -19.6446 -15.8433 -2.2678 -18.8755 -15.6744 -1.84415 -17.9564 -16.5063 -1.43461 -17.5864 -16.269 -2.05528 -16.8256 -16.1718 -2.78498 -16.1242 -16.1267 -3.56592 -16.7523 -15.5378 -3.29951 -17.5547 -14.9829 -3.77185 -18.1466 -14.3896 -4.18561 -18.8649 -13.709 -3.92916 -18.1487 -13.5992 -4.93767 -17.9699 -13.1482 -5.35263 -17.1672 -13.6469 -5.05812 -16.3533 -14.5416 -4.58744 -16.3815 -15.1709 -4.12822 -15.7046 -14.2655 -4.53703 -15.3925 -13.6372 -4.19944 -14.7103 -13.2391 -5.07265 -14.5407 -13.6046 -5.08525 -13.6437 -14.5714 -5.26758 -13.7577 -14.2504 -6.12994 -13.6185 -15.1579 -6.04909 -13.3687 -14.8702 -6.70207 -12.6884 -15.0434 -5.8083 -12.4633 -14.7221 -4.91122 -12.5502 -13.7831 -4.95453 -11.9906 -14.51 -4.17466 -11.9651 -15.2092 -3.48703 -12.0078 -15.9064 -3.97296 -11.5874 -15.5223 -4.54755 -10.8732 -15.7846 -3.7937 -10.276 -16.1344 -2.90733 -10.4124 -16.7336 -3.31813 -9.65908 -16.8902 -4.26469 -10.0278 -17.8043 -4.66825 -10.0433 -18.5684 -4.73736 -9.38081 -18.0771 -3.9785 -8.94334 -18.4763 -3.3055 -8.32634 -18.0568 -2.49929 -7.95927 -17.6372 -3.22325 -7.3535 -18.285 -3.2772 -6.50694 -17.9076 -3.00723 -5.62582 -17.5737 -2.29616 -4.96249 -16.9633 -3.03125 -4.81968 -16.5352 -2.46328 -4.07578 -15.7388 -2.82766 -4.4039 -15.6945 -3.09081 -5.36262 -15.6537 -2.13673 -5.48058 -14.9886 -1.47996 -5.47458 -14.0808 -1.39733 -5.06001 -14.0184 -2.29772 -4.58455 -13.3486 -2.9164 -5.02938 -13.2026 -2.67986 -5.9712 -12.3556 -2.62363 -6.40864 -11.7994 -2.01497 -5.9234 -11.5779 -1.2715 -6.63538 -10.7233 -1.7547 -6.91737 -10.0097 -1.53289 -6.25041 -10.2788 -2.5241 -6.24662 -10.6859 -2.94635 -5.5698 -10.1941 -3.61472 -5.07301 -9.63327 -3.64186 -4.21502 -9.97663 -3.23628 -3.45578 -10.6255 -2.77138 -4.11198 -11.0764 -2.07859 -4.54257 -10.3794 -1.34971 -4.56577 -10.9056 -0.7742611 -5.1712 -10.7601 -0.5988941 -6.14657 -10.0201 -0.3498951 -6.736 -9.56173 0.2448189 -7.40254 -8.96884 0.8625779 -7.98209 -9.4966 1.76613 -8.04602 -9.30732 2.02573 -9.01255 -10.0298 2.79604 -9.10807 -9.39083 3.51902 -9.38468 -8.46473 3.72907 -9.22976 -7.49022 3.69925 -9.21644 -7.50989 2.73105 -8.95594 -7.64278 2.54439 -8.02612 -7.22861 2.43876 -7.08136 -8.0505 2.51764 -6.50477 -7.92638 3.2774 -5.84715 -8.91942 3.25491 -5.50088 -9.2904 2.37904 -5.21342 -9.00911 2.52287 -4.24593 -9.81047 2.05468 -3.97039 -10.0272 1.05703 -4.14349 -10.9899 1.22085 -4.10578 -11.2696 2.25939 -4.04336 -12.2606 2.4352 -4.32165 -12.0142 1.71169 -3.60098 -12.4887 0.8528349 -3.86981 -13.3957 1.20839 -3.76264 -13.8089 0.3693879 -4.07088 -14.6663 0.1264769 -4.48157 -14.6317 1.08248 -4.11927 -15.424 1.19376 -3.50812 -14.6279 1.64701 -3.23632 -14.0894 1.06398 -2.64908 -13.1095 1.17704 -2.34409 -12.6362 0.9105889 -1.54403 -11.9342 0.3793159 -1.13185 -12.1283 -0.1130141 -1.97592 -12.9193 -0.3969411 -1.65496 -13.4266 -0.02087787 -0.8681569 -13.7364 -1.00562 -0.9260419 -14.5763 -1.55985 -0.9393549 -15.5517 -1.61777 -1.37552 -15.679 -1.34246 -0.4467289 -16.2365 -1.07266 0.3592451 -16.1184 -0.6931541 1.26246 -16.4701 0.1262039 1.696 -16.4787 -0.5821111 2.41261 -17.3634 -0.6170291 1.92125 -17.5149 0.09815803 1.2855 -17.8434 1.02557 1.75355 -18.0722 0.2895029 2.46331 -18.8874 0.2942659 3.13181 -18.3704 -0.4801701 3.33966 -17.7438 -1.17191 3.1344 -18.4039 -1.79234 2.66889 -19.0699 -1.97952 1.98051 -19.6118 -2.67478 2.39672 -20.467 -2.38723 2.00689 -21.3418 -2.02659 2.48542 -22.3014 -1.94209 2.24263 -21.7882 -2.55163 1.55026 -21.2197 -3.22487 2.03667 -21.0667 -3.80485 1.25485 -20.8853 -4.71653 0.8937581 -20.8842 -5.22049 0.01490852 -20.3767 -5.40465 -0.8845299 -20.1103 -5.08309 -1.83054 -20.3476 -4.95361 -2.7484 -19.522 -4.45129 -2.55985 -18.8294 -4.33835 -1.81075 -17.9996 -4.52407 -2.26376 -17.7458 -5.4506 -2.44964 -16.7254 -5.30448 -2.17788 -16.2565 -4.60719 -2.74364 -16.2151 -3.72685 -3.29333 -15.7262 -2.99153 -2.789 -15.6614 -3.43015 -1.90665 -16.1292 -2.85876 -1.2366 -15.7095 -2.35385 -0.4792149 -14.8126 -2.49056 -0.00487544 -14.0135 -2.31098 -0.5730929 -14.0405 -3.34851 -0.6600199 -13.9938 -3.29242 0.3207961 -14.2157 -3.20544 1.2619 -14.4434 -2.32031 1.04644 -14.5337 -1.81509 1.97571 -14.6316 -2.22372 2.84149 -14.9318 -1.73737 3.66671 -15.1967 -0.8580311 3.32 -14.7638 -0.6207671 2.48605 -14.859 0.3912219 2.70661 -15.2655 1.19274 2.19759 -16.1679 1.5958 2.39472 -16.9944 1.80276 1.78754 -17.0867 2.28562 0.9947541 -16.6612 2.40308 0.09233732 -16.1987 1.89342 0.8373681 -16.2368 1.39975 -0.04241388 -16.8675 1.13099 -0.6943039 -16.1921 1.07362 -1.3948 -16.1127 1.96421 -0.9369509 -15.4527 2.17524 -0.2510649 -14.9275 2.30896 -1.13687 -14.9215 3.15452 -1.76988 -15.1967 4.02254 -1.35802 -15.7645 4.51021 -1.92093 -15.5495 4.06478 -2.77171 -16.1881 4.08262 -3.54525 -16.4537 4.07465 -4.55948 -16.4725 3.28822 -5.31195 -16.0486 2.6653 -5.96255 -16.5763 2.91005 -6.74614 -17.0608 2.73276 -7.61758 -17.7823 2.66657 -8.32062 -17.5337 3.07272 -9.24231 -16.5839 2.8334 -9.19496 -15.9743 3.33937 -9.83763 -15.3707 2.59274 -9.4717 -14.8341 3.40546 -9.60853 -14.4539 3.51085 -8.61991 -14.8824 4.28413 -9.05905 -15.5919 4.78013 -9.47673 -15.4002 4.74092 -10.4498 -15.397 3.85587 -10.9188 -14.4842 3.413 -11.0031 -13.7385 2.88276 -10.5732 -13.3438 3.40957 -11.342 -13.2453 4.2327 -10.8042 -12.3601 4.66098 -10.7721 -11.4175 4.73637 -10.3491 -11.2748 3.98291 -10.972 -11.1334 3.36611 -10.2302 -11.3071 3.38037 -9.22031 -10.6439 3.83747 -8.71752 -9.94018 3.45408 -8.12362 -10.8207 3.02489 -8.23461 -11.6785 3.13409 -7.70041 -12.0286 3.05186 -6.73526 -12.9149 3.3104 -6.33065 -12.7985 3.68912 -5.41154 -11.955 3.96476 -5.01626 -11.1483 4.37331 -5.46209 -10.8613 3.67797 -6.06642 -10.49 4.11244 -6.85732 -11.0824 4.87668 -7.25349 -11.4962 5.09625 -8.17717 -12.1741 4.71646 -8.88149 -13.1384 4.74822 -8.9724 -12.9058 4.12982 -8.25632 -13.3133 3.26413 -7.9317 -14.0789 2.62308 -7.77368 -14.3067 1.68003 -7.80587 -14.7082 1.71386 -6.94262 -14.427 1.15472 -6.08468 -13.6346 0.8188369 -6.65335 -14.2709 0.3366099 -7.22479 -15.0986 0.8485969 -6.84214 -15.4315 0.9707859 -7.81995 -15.0741 0.1821259 -8.19281 -14.5054 0.4836509 -9.03958 -14.3164 1.09207 -9.83175 -15.3352 0.8281999 -10.0375 -15.8757 1.37215 -10.6568 -14.9125 1.5054 -10.8169 -14.3003 1.04402 -11.5438 -14.4834 1.50661 -12.3781 -15.1933 0.9679929 -12.0703 -15.2584 -0.01956057 -11.7424 -14.2208 0.08999403 -11.7888 -13.4065 -0.4224071 -12.1781 -13.3072 -1.43451 -12.1269 -13.3096 -1.25892 -11.1301 -12.6519 -1.11074 -10.4171 -12.2453 -1.91768 -10.9155 -12.0635 -1.75737 -9.93255 -11.4086 -2.33386 -10.415 -10.9822 -1.65571 -10.9463 -11.536 -1.07534 -11.5186 -12.0409 -1.04854 -12.3552 -11.7672 -0.2290091 -12.8485 -11.9172 0.7501209 -12.5936 -12.8457 1.04173 -12.459 -13.2488 1.41438 -11.6478 -12.6421 2.11717 -11.2751 -12.7883 2.37552 -10.2456 -13.4358 1.55399 -10.09 -12.8206 0.9532059 -10.6801 -11.8302 0.9513919 -10.9439 -11.8546 0.2022549 -10.216 -11.8789 0.6913819 -9.3284 -12.2733 1.54588 -9.83028 -12.9037 1.54605 -9.06158 -12.7228 0.6377969 -8.60459 -12.2693 1.1903 -7.82237 -11.5584 1.90742 -8.06845 -11.6047 2.07137 -7.01683 -11.8871 1.59742 -6.1281 -11.4559 0.9709069 -5.50432 -12.462 0.7939929 -5.15642 -13.2961 1.32215 -5.07588 -13.7728 2.22116 -5.04628 -13.682 2.57907 -5.96767 -14.5425 3.11385 -5.94712 -14.297 3.41929 -6.88027 -14.0468 4.38618 -7.27132 -13.313 5.04661 -7.25834 -13.9517 5.69365 -7.75479 -13.5285 6.38308 -7.1187 -14.4408 6.57511 -6.78867 -14.89 5.65569 -6.66026 -15.8404 5.53981 -7.14943 -16.0236 6.10396 -6.38402 -16.8893 6.27406 -6.94976 -17.8401 6.37384 -6.77608 -17.967 5.35583 -6.44632 -18.8145 5.18112 -7.07649 -19.3614 5.89209 -6.7676 -19.352 6.22546 -7.68148 -18.4306 6.3424 -7.91496 -18.7468 6.60585 -8.8932 -18.0056 6.03088 -9.30931 -17.1587 6.1912 -9.81189 -17.6331 6.74784 -10.4772 -18.3913 7.29002 -9.95377 -19.1994 7.86115 -10.0286 -19.2825 7.90464 -11.0507 -18.8465 8.80903 -11.2177 -18.4513 8.61911 -12.091 -19.4699 8.85533 -12.2342 -20.0552 9.33022 -12.9695 -20.2094 10.3249 -13.2205 -19.5037 10.2139 -14.0166 -20.3405 9.83968 -14.321 -20.5369 9.60326 -15.2446 -21.2095 9.81526 -16.0299 -21.9992 10.1368 -16.4565 -22.8761 10.4307 -16.7392 -23.1207 10.8313 -17.6041 -23.1943 11.103 -18.6315 -22.2539 10.8663 -18.8297 -21.9497 11.4539 -18.0287 -21.0268 11.6202 -18.2114 -20.2085 11.9662 -18.6379 -19.9476 11.9958 -19.5739 -19.7844 11.2751 -20.2549 -20.7522 10.8393 -20.2955 -20.4533 10.2647 -21.0871 -19.5554 9.92699 -21.2499 -19.2872 9.06925 -20.8881 -19.4157 8.31743 -21.4635 -19.0646 7.46462 -21.8705 -19.7216 7.57518 -22.6319 -20.3874 6.89598 -22.1875 -20.2323 6.28496 -21.4063 -20.7337 6.47099 -20.5818 -21.6751 6.36479 -20.431 -21.7101 7.04941 -21.1726 -21.7536 8.00527 -21.6462 -20.9606 7.8585 -21.0786 -21.6316 8.44915 -20.604 -22.5156 8.06367 -20.1653 -23.4009 8.23874 -20.5528 -23.5232 8.54244 -21.3975 -24.1643 8.55011 -22.2233 -24.9396 7.89034 -21.9929 -24.8108 8.12099 -22.9272 -25.5894 7.4792 -23.2 -26.0837 6.57346 -23.2886 -25.2616 6.13181 -23.4358 -25.6963 5.39455 -23.9849 -26.0398 4.70646 -23.3035 -25.2131 4.12607 -23.4105 -25.6536 3.52208 -24.0806 -26.3351 3.14621 -23.4477 -25.8045 2.93677 -22.575 -25.2402 3.32625 -21.8372 -24.3347 3.68805 -21.6606 -24.0049 4.30727 -22.3326 -24.4184 5.08319 -22.829 -23.841 5.71679 -22.2985 -23.9992 6.4057 -23.0256 -23.0648 6.44134 -23.2946 -23.7556 6.27281 -23.9554 -23.6338 5.91802 -24.9007 -23.4787 4.92199 -24.9718 -22.52 4.60056 -24.7475 -22.3884 4.25722 -25.6656 -22.1294 5.25041 -25.7193 -21.1695 5.43938 -25.6191 -20.6089 6.10657 -26.1601 -19.8986 6.61584 -25.739 -19.0042 6.61912 -25.3213 -18.339 5.98529 -24.9693 -18.6889 5.05501 -25.1489 -19.0657 4.34923 -25.7066 -18.1529 3.97515 -26.0929 -17.3753 4.04641 -26.7362 -17.407 3.03092 -26.534 -16.4778 2.85526 -26.9508 -15.9507 3.11916 -27.7328 -14.958 2.8364 -27.7433 -14.4377 3.6663 -28.1046 -13.9859 4.55076 -28.2773 -13.1932 4.62419 -28.8549 -13.2278 5.57931 -29.0656 -13.0516 6.44268 -28.5633 -13.8585 5.80314 -28.1583 -14.0863 5.99596 -27.2717 -14.55 6.72797 -27.7527 -15.5066 7.10238 -27.634 -15.8199 7.77549 -28.2789 -16.1101 6.93692 -28.7445 -16.2878 6.11166 -29.2676 -16.6098 6.14589 -28.2516 -17.3422 6.78692 -28.661 -17.2551 6.43241 -29.5149 -17.4395 5.60016 -30.0574 -17.249 4.98773 -29.3235 -16.3513 4.65396 -29.5521 -16.8069 4.08169 -30.2669 -16.7062 3.36094 -30.9375 -16.6263 2.79152 -31.7828 -15.6642 2.47479 -31.8849 -14.9214 3.0126 -31.4689 -15.057 4.01079 -31.6645 -14.1634 4.01343 -31.2288 -14.0513 4.59775 -30.4022 -13.1186 4.81774 -30.1855 -12.2397 4.93471 -30.6912 -11.2974 4.96817 -31.0692 -11.3244 4.35369 -30.3675 -10.8036 4.30037 -29.5046 -10.4577 4.9605 -30.1591 -10.0127 5.50159 -29.4315 -10.6399 6.21043 -29.1637 -10.4951 6.93043 -28.4048 -10.6603 7.92603 -28.2242 -9.89596 8.41012 -28.5374 -8.95556 8.22957 -28.5538 -8.16985 7.59181 -28.8416 -7.3461 8.04894 -28.4607 -6.97548 7.18695 -28.7287 -7.55345 6.39697 -28.4303 -7.64747 5.40236 -28.2908 -7.68609 4.95802 -29.1409 -7.27036 4.90015 -30.0199 -8.06286 4.41247 -30.5232 -8.71962 4.37611 -31.1994 -8.64164 3.36824 -31.0376 -8.45495 3.63326 -30.0409 -7.60238 3.40644 -29.5667 -6.58974 3.40478 -29.8311 -6.12144 2.6088 -29.5908 -6.89167 2.47347 -30.1813 -7.18708 1.89536 -29.4289 -6.48826 1.30716 -29.0725 -5.51923 1.17368 -28.8169 -5.94878 0.7978029 -28.0479 -5.74863 -0.1570281 -27.9844 -4.895 0.2963629 -27.8227 -4.79267 -0.5367211 -27.2497 -3.93744 -0.9663941 -27.5728 -4.56456 -1.73799 -27.4191 -5.21463 -1.19153 -27.9984 -6.06472 -1.49444 -27.8278 -6.35698 -2.01005 -27.0794 -7.21768 -1.879 -27.4199 -7.28432 -2.64582 -26.7796 -7.13094 -2.31367 -25.844 -6.92591 -2.04622 -24.866 -7.47935 -2.93922 -24.9071 -8.46587 -3.16137 -25.018 -9.30086 -2.67239 -25.0559 -10.2174 -2.94317 -24.7798 -10.6402 -3.79973 -24.9599 -11.1253 -3.54142 -24.1165 -11.8507 -3.14342 -24.6472 -12.924 -3.12016 -24.7422 -13.4687 -3.86899 -24.1543 -13.4261 -4.87918 -24.0701 -12.7203 -5.51014 -24.4726 -13.2377 -6.3597 -24.5313 -12.2869 -6.33369 -24.2292 -11.5403 -5.81104 -23.9835 -10.9147 -5.0318 -23.6821 -10.3711 -4.41761 -23.1248 -10.9705 -3.60087 -23.0866 -11.6636 -2.85731 -23.1448 -12.6433 -3.04284 -23.4059 -13.4645 -2.61364 -23.0394 -12.6994 -2.43511 -22.3385 -12.1979 -2.48017 -21.4694 -12.035 -1.49589 -21.6645 -11.8517 -0.9023341 -22.4657 -11.1045 -1.537 -22.7169 -11.1471 -0.6786171 -23.296 -11.5166 -0.07866817 -24.0171 -11.0773 -0.6396311 -24.6777 -10.4181 0.06312093 -24.3208 -10.4014 1.02761 -24.2941 -11.1328 1.7001 -24.2083 -11.0246 2.39041 -24.9028 -10.1146 2.80036 -25.0601 -10.8975 3.33309 -25.4118 -11.6985 3.27144 -24.8998 -12.6898 3.40995 -24.986 -13.4839 3.04446 -25.5493 -14.3707 3.3789 -25.2322 -13.9612 4.26067 -25.3843 -14.9567 4.5793 -25.1674 -14.9044 5.54991 -25.4008 -14.3251 6.1431 -25.9012 -13.7458 5.86441 -25.1751 -13.0883 6.13362 -25.9153 -12.876 5.16636 -26.0836 -12.4766 4.54109 -25.4068 -12.1844 4.88739 -24.5002 -11.8613 5.8248 -24.5759 -12.5216 6.30499 -24.069 -12.9059 7.0223 -24.7404 -12.0526 7.42872 -24.6595 -11.1499 7.15045 -24.7132 -10.739 7.16282 -23.7306 -10.1329 7.94379 -24.0149 -9.90671 7.98848 -23.0486 -9.50795 7.17317 -23.2863 -9.56063 6.29643 -22.6844 -10.3805 5.65452 -22.5087 -10.8667 4.82165 -22.148 -11.6282 4.22722 -21.686 -11.4162 3.58033 -21.0112 -10.9037 3.10337 -20.3008 -11.9149 3.20287 -20.0903 -12.382 3.25827 -19.1799 -11.5551 2.76777 -19.2999 -11.1669 3.5594 -18.8522 -11.7635 4.03749 -18.2174 -11.0243 4.75617 -18.2404 -10.0477 4.83393 -18.6581 -9.99544 5.21951 -17.7213 -10.6087 5.94995 -17.3615 -9.83696 5.821 -16.7878 -10.547 5.27953 -16.2631 -10.0616 5.83595 -15.6272 -10.9277 5.51573 -15.1778 -10.9266 5.4957 -14.1797 -11.2714 4.97513 -13.4157 -11.4724 4.13163 -13.9285 -11.9468 4.50216 -14.6903 -12.2711 3.5726 -14.4004 -11.6863 2.74258 -14.1987 -12.0507 1.84155 -14.1358 -12.761 1.83504 -14.7691 -12.1269 1.24347 -15.3429 -12.7785 1.37146 -16.083 -12.4003 0.5935119 -16.5393 -12.8943 1.14538 -17.2795 -12.9455 2.17544 -17.4142 -12.5365 3.0245 -17.3245 -11.4876 3.1543 -17.2938 -11.5017 3.94966 -16.7823 -12.4398 4.09095 -16.4007 -13.0319 4.84406 -16.1864 -13.9993 4.52609 -15.9298 -13.9051 4.85535 -14.9411 -14.7012 5.11444 -15.5092 -15.0051 5.38136 -16.4317 -14.628 6.21561 -16.912 -14.5374 7.213 -16.6225 -13.5585 7.08386 -16.5015 -12.7145 7.30605 -16.086 -12.0422 7.60603 -15.398 -11.4977 8.15367 -14.7384 -11.7297 8.05142 -13.7711 -12.6602 8.33642 -13.5453 -13.3493 8.72818 -13.029 -13.7053 8.94013 -13.9854 -14.3182 8.85112 -14.7438 -15.0917 9.45458 -15.0775 -15.7583 10.1965 -15.2939 -15.4278 11.0587 -15.6253 -14.6266 11.304 -16.2189 -15.1539 12.0237 -16.717 -15.0376 13.0011 -16.9547 -14.3545 12.9533 -16.1964 -13.8159 12.1484 -15.8521 -13.3894 11.6777 -16.6061 -12.7379 11.0481 -17.0469 -12.2009 11.8861 -17.169 -11.5491 11.8505 -17.9994 -10.8503 11.6896 -17.3548 -11.2965 10.8699 -17.0516 -11.5343 10.4073 -16.1823 -10.8307 9.73195 -16.3936 -10.6225 9.1503 -17.1523 -9.83779 9.31229 -16.5146 -8.96928 9.46025 -17.0296 -7.94626 9.49113 -17.165 -7.70431 8.592 -16.8308 -6.96636 8.00885 -17.2296 -6.12195 8.60937 -17.1311 -6.54256 9.48999 -17.3044 -6.1305 10.4079 -17.6435 -5.4043 9.74586 -17.5282 -4.45777 9.53636 -17.6369 -3.79193 10.2115 -17.314 -4.36685 10.2796 -16.4622 -3.96229 10.6455 -15.6046 -3.77777 10.3829 -14.7195 -4.39461 9.67209 -14.9967 -5.01537 9.25267 -15.73 -5.85486 9.48188 -15.2829 -5.72489 9.97266 -14.45 -6.03176 10.9377 -14.4703 -6.73038 10.3159 -14.6509 -6.25536 10.7591 -15.3238 -6.19581 11.6232 -15.7833 -7.12244 11.5937 -16.154 -7.30839 12.5423 -16.2213 -7.52548 12.7749 -15.1965 -6.58837 12.7291 -14.8853 -6.46676 13.0875 -15.7398 -6.02706 13.539 -16.495 -6.22456 14.5037 -16.6394 -6.94173 15.1697 -16.4213 -6.72264 16.1265 -16.797 -7.56562 16.6728 -16.8041 -8.54068 17.023 -16.7082 -8.49525 17.5181 -17.5024 -7.84517 17.9726 -18.0851 -7.22627 18.3612 -18.7731 -6.39976 18.9094 -18.6001 -6.24195 19.7306 -19.1118 -5.64446 20.5441 -19.0595 -6.24801 21.2389 -19.455 -6.3822 21.4693 -18.4279 -6.85795 20.5184 -18.2372 -6.57375 20.8758 -17.3276 -7.29466 21.4101 -17.0322 -7.48928 21.0578 -16.0412 -7.2348 20.982 -15.1145 -7.05519 21.839 -14.6871 -7.25552 22.5139 -15.3984 -7.11191 22.2885 -16.3341 -6.68449 23.1229 -16.7438 -7.13344 22.4979 -17.3773 -7.61477 22.4854 -18.2374 -8.56215 22.3866 -18.5549 -8.96347 21.7959 -19.2354 -9.28343 22.7467 -19.4352 -9.72549 23.6017 -19.8103 -8.97944 24.2216 -19.9478 -9.06487 24.3506 -18.9358 -8.31762 24.9166 -19.0705 -8.40817 25.8933 -18.9174 -8.4622 26.35 -18.0718 -8.11075 27.1083 -17.4803 -7.16186 27.1145 -17.181 -6.88919 27.1088 -16.2061 -7.6819 26.8554 -15.611 -7.54082 25.9019 -15.6306 -7.34015 24.9735 -15.6291 -6.86428 25.5163 -16.4031 -5.93127 25.3184 -16.1173 -5.34617 25.5586 -15.4061 -5.68436 26.0251 -14.6847 -5.94451 25.9567 -13.6574 -5.71832 25.2113 -13.0138 -6.60687 24.7982 -12.9155 -7.6378 24.8837 -12.9322 -8.00459 24.0925 -13.3408 -8.91954 23.7864 -13.6263 -9.44243 24.1165 -14.4233 -10.362 24.439 -14.7685 -10.9508 24.2002 -15.5118 -11.3023 24.3313 -16.431 -11.3047 24.2369 -17.4181 -11.0907 23.2682 -17.4978 -10.108 23.51 -17.5063 -9.31547 24.1793 -17.4631 -8.66281 23.6649 -18.0304 -8.253 23.2486 -17.2098 -8.20974 23.4924 -16.2698 -8.39411 23.2101 -15.2941 -9.30967 22.9182 -15.6066 -9.19444 21.9451 -15.2749 -9.49637 22.02 -14.326 -10.5144 22.1799 -14.2873 -10.7257 21.6149 -15.0555 -10.5359 20.6879 -14.6315 -10.4469 20.4042 -15.5954 -10.0922 21.0189 -16.3376 -9.76546 20.1052 -16.6814 -10.2403 19.33 -17.1467 -10.9707 18.8089 -16.7023 -11.9361 18.4811 -16.8391 -12.2588 17.9232 -16.1445 -13.0844 17.6464 -16.7097 -13.9919 18.1613 -16.7212 -14.5481 18.2884 -15.9529 -14.9734 18.7607 -15.1396 -15.2427 18.6741 -14.1858 -15.7545 17.8658 -14.39 -16.4135 18.3923 -13.7747 -16.9551 19.2089 -13.9954 -17.0557 20.1534 -14.2131 -17.0175 20.7993 -14.9973 -16.1989 20.4435 -15.2854 -16.0672 21.0087 -16.1413 -15.3604 20.271 -16.2835 -14.8687 19.442 -16.5284 -14.4453 20.1057 -17.1095 -15.0481 20.03 -17.8336 -15.0693 19.048 -18.1743 -15.8711 18.7313 -18.7611 -16.353 19.5938 -18.9192 -16.2256 19.7475 -19.893 -17.1968 20.1057 -20.1603 -18.0075 20.63 -19.8053 -18.9767 20.2902 -19.9312 -19.1793 19.3481 -20.0344 -19.1178 18.4319 -20.4064 -19.6056 18.1884 -19.5278 -19.4623 18.3383 -18.5315 -19.5226 17.5006 -17.9852 -18.5976 17.5361 -17.6356 -18.7136 16.7202 -17.1039 -18.7875 16.4042 -16.0877 -18.9348 17.3552 -16.2578 -17.9976 17.4034 -16.4586 -17.1551 17.5538 -16.9889 -16.6602 17.1548 -16.1143 -17.0861 17.8835 -15.6056 -17.7762 17.853 -14.7784 -18.2146 17.0581 -15.073 -19.1445 17.48 -14.8133 -19.5442 17.341 -13.8486 -19.9972 16.9601 -13.1137 -20.2867 17.2195 -12.2146 -19.4063 17.5039 -12.4881 -19.4469 18.401 -11.9701 -20.1871 19.0592 -12.0207 -19.8367 19.9239 -12.1445 -19.5077 20.6394 -11.4848 -18.9679 21.4699 -11.6713 -18.6218 22.3561 -11.4208 -18.0558 23.1732 -11.6052 -17.7543 22.4455 -12.1052 -16.8275 22.7525 -11.8334 -17.1364 22.0307 -11.2404 -16.5055 21.9508 -10.4829 -16.687 21.339 -9.65018 -16.778 20.4984 -9.06227 -15.8524 20.223 -8.81206 -16.3701 19.7201 -8.1183 -17.0657 19.1736 -8.55748 -17.9313 18.6239 -8.50018 -17.2556 17.9533 -8.7759 -16.8278 17.0255 -8.76074 -15.9975 16.6278 -9.06618 -16.1153 16.6972 -10.0841 -16.0932 15.8187 -10.6363 -15.1106 15.6149 -10.6299 -15.0613 16.2218 -9.81418 -14.3411 15.4615 -9.87215 -13.3956 14.9628 -10.0543 -13.3454 14.6405 -10.9855 -13.1781 14.9593 -11.9462 -12.9386 14.0266 -12.0406 -13.9135 13.9984 -11.8495 -14.4968 14.3503 -12.5705 -14.9512 14.6329 -13.4297 -15.9197 14.8069 -13.4046 -16.6787 15.4972 -13.5848 -17.5348 15.2519 -14.0467 -18.0477 14.7764 -13.2986 -18.8898 14.1592 -13.2414 -19.0103 14.6482 -12.4025 -18.7356 13.6721 -12.3037 -18.8811 13.9903 -11.3687 -18.348 14.1555 -10.5833 -18.492 15.0511 -10.174 -19.4596 15.215 -10.0875 -20.1302 14.4569 -9.82517 -19.9681 13.677 -10.4359 -19.5839 13.2001 -9.58381 -20.5171 12.9854 -9.80712 -21.418 12.5263 -9.63585 -20.7156 12.165 -10.2001 -21.1462 12.6588 -10.8175 -21.3834 12.2714 -11.6702 -20.7851 11.4043 -11.7096 -20.428 10.6145 -11.1905 -21.0094 9.84937 -11.44 -21.2737 9.23679 -10.6918 -21.5291 8.3386 -10.416 -22.3362 8.85812 -10.5397 -22.7228 8.32684 -9.76072 -21.9529 8.11323 -9.13114 -21.4662 7.173 -9.09736 -21.11 7.27901 -8.20189 -21.6947 7.87668 -7.55869 -20.7707 7.81212 -7.34495 -19.7721 8.00826 -7.12769 -19.1589 8.81244 -6.97117 -18.2298 8.94195 -7.27861 -18.5123 8.00917 -7.1891 -18.3365 7.48515 -6.36044 -17.6322 7.21992 -5.76041 -18.3278 7.39294 -4.99322 -19.2247 7.62398 -4.78057 -19.371 8.38911 -5.38194 -18.908 8.83791 -4.63457 -18.84 8.35908 -3.77882 -19.9219 8.39034 -3.61952 -20.5669 7.70602 -3.75604 -21.0433 7.0161 -3.22836 -21.8306 6.80903 -2.7185 -21.3759 7.75989 -2.44596 -20.6395 8.40864 -2.38696 -19.8178 7.79994 -2.49438 -18.9295 8.26735 -2.44505 -18.2609 9.00395 -2.5863 -18.7861 9.68774 -2.06646 -18.619 10.6205 -2.13955 -18.86 11.4498 -2.71273 -18.6529 12.1429 -2.0032 -18.1721 12.4332 -2.84281 -18.8267 12.7634 -3.49186 -18.7572 12.1165 -4.23371 -19.2853 11.5524 -4.87436 -18.447 11.0439 -4.72641 -19.0709 10.6271 -4.07885 -19.4073 9.72158 -4.33317 -18.4878 9.70429 -4.05581 -18.0011 10.0617 -3.25282 -17.3548 9.83665 -3.90324 -17.6833 10.3659 -4.63576 -17.0303 9.86674 -5.21106 -17.3928 9.02187 -4.95031 -17.5447 8.13559 -5.24682 -16.6215 8.05804 -5.61603 -16.4862 9.04068 -5.91381 -15.6982 9.56371 -6.19569 -15.2608 9.34576 -5.31796 -15.1302 10.2404 -4.82608 -15.579 11.0467 -4.26553 -15.8638 10.8278 -3.34027 -16.4578 10.8196 -2.48584 -15.842 10.9091 -1.81317 -16.4543 10.4353 -1.20483 -15.5857 9.98316 -1.30524 -14.8305 9.85216 -1.8877 -15.5436 9.26026 -2.16252 -15.3016 8.42722 -2.69323 -15.6347 7.5055 -2.48037 -15.7073 7.29898 -3.47914 -16.1791 7.88899 -4.11281 -16.8966 7.1664 -3.96643 -17.608 7.74413 -3.53316 -18.217 6.95787 -3.22208 -18.0893 6.31717 -2.44422 -17.8222 5.70586 -3.08831 -18.2239 5.80275 -3.97062 -19.0669 5.28414 -3.86991 -19.6129 4.84389 -3.16062 -20.506 4.46417 -3.20851 -20.3597 4.73015 -2.2306 -21.0321 4.06325 -2.00361 -20.8119 3.13989 -1.877 -20.6736 2.8869 -2.78462 -21.5031 2.95569 -3.3933 -20.7946 3.26598 -4.07778 -21.1137 4.00237 -4.61598 -21.0479 3.28134 -5.32973 -21.5771 2.85008 -6.01691 -21.5861 2.05693 -6.66966 -20.5476 2.04462 -6.72882 -20.1331 1.35231 -6.12933 -19.1501 1.42905 -6.4196 -19.0595 2.14387 -7.10515 -19.2086 2.86191 -7.77313 -18.67 3.2666 -8.54398 -18.501 4.25459 -8.69882 -17.5236 4.46066 -8.3767 -16.9583 4.37167 -7.50337 -16.2637 4.18151 -8.23837 -15.5513 4.77086 -7.77912 -15.1631 5.66903 -7.82917 -14.899 6.65631 -7.89716 -15.8712 6.73741 -8.08346 -15.4345 6.32387 -8.84744 -14.9919 5.98581 -9.6978 -14.3144 6.57254 -9.22159 -13.5693 7.16909 -9.59572 -14.4262 7.66021 -9.88752 -14.922 8.29743 -10.348 -14.8396 9.25757 -10.4275 -13.8799 9.07292 -10.1913 -13.869 9.25377 -11.1025 -13.5842 8.94569 -12.0451 -12.9397 9.48909 -11.5505 -12.9811 10.3503 -12.1215 -13.5511 11.1428 -12.0005 -13.78 10.6655 -12.8676 -14.3944 11.2144 -13.3368 -14.9567 10.7151 -12.7311 -15.8223 10.9531 -12.2912 -15.8207 11.9462 -12.4875 -14.9094 12.3267 -12.585 -14.4624 11.6488 -12.0608 -15.2633 11.8611 -11.4465 -15.5995 11.8844 -10.5375 -15.7709 10.8998 -10.4575 -16.426 10.4997 -9.815 -16.4865 11.2875 -9.14881 -15.5498 11.1694 -9.42018 -15.3622 10.3149 -8.85763 -15.6758 9.69785 -9.56039 -16.4577 9.89586 -8.86549 -17.3514 9.46538 -8.93185 -17.6881 8.98053 -9.70867 -16.9269 9.04361 -10.3452 -16.8436 8.32651 -11.085 -16.6496 7.4803 -10.6151 -15.8047 7.15594 -10.9996 -15.9711 6.79107 -11.9279 -15.3046 6.0854 -11.9506 -15.9193 5.22657 -12.0238 -16.4107 4.93096 -11.2323 -17.2982 4.98933 -11.5777 -17.3511 5.6335 -12.3398 -18.025 6.33448 -12.8078 -18.5748 5.72746 -12.2267 -18.8267 4.76551 -12.3093 -18.3879 4.31567 -11.576 -18.2394 5.05749 -10.9766 -19.0938 5.36848 -10.8709 -19.0562 6.30908 -10.525 -20.0047 6.102 -10.4457 -21.0051 5.96567 -10.6807 -21.0229 4.95876 -10.7628 -21.0944 4.90285 -9.81547 -22.0106 4.88153 -10.2105 -22.1935 3.90553 -10.3376 -22.3937 3.28058 -11.1559 -22.0226 2.47201 -10.6511 -22.7678 1.94034 -11.1119 -22.2323 1.29339 -11.6474 -22.5367 1.42399 -12.58 -22.3134 0.6362119 -13.2502 -21.8926 0.1761119 -13.9871 -22.0167 -0.4642921 -14.7513 -21.2738 -0.1583101 -15.3709 -21.9674 0.5183579 -15.4157 -22.6699 -0.07679747 -15.5963 -23.3949 0.01563563 -16.2397 -24.285 -0.1686401 -16.5968 -24.1751 0.2722289 -15.6652 -23.9184 0.9941319 -14.933 -24.1288 1.98162 -14.9103 -24.4133 2.28359 -15.8488 -24.9395 2.73825 -15.1116 -25.2638 3.68774 -14.9368 -25.4442 3.75317 -13.9659 -25.576 4.77353 -14.3072 -26.3302 5.43517 -14.5257 -26.8265 6.0853 -14.0699 -27.185 6.153 -13.1493 -27.2867 6.51982 -12.2147 -27.8165 6.02257 -11.5224 -27.8918 7.02305 -11.2949 -28.5166 6.86159 -10.5528 -29.3587 7.20959 -10.9219 -29.9596 7.10841 -10.1958 -30.6436 6.81524 -9.54489 -31.0908 7.33867 -10.2995 -31.9873 7.79418 -10.0958 -31.9308 8.75048 -10.3215 -32.2784 8.95106 -9.41175 -32.0011 9.22575 -8.46734 -32.3622 8.44395 -7.99346 -31.8404 8.34649 -7.11978 -32.3047 9.08517 -6.55709 -32.3695 9.52953 -7.39997 -33.1289 9.59008 -6.7845 -33.8143 10.3324 -6.83663 -34.0309 9.85493 -7.67641 -34.7392 10.4574 -7.5162 -34.3911 11.4258 -7.63397 -34.1657 12.4503 -7.66113 -33.9216 13.3265 -7.22838 -33.0816 13.8371 -7.35495 -32.309 14.444 -7.43441 -32.4185 13.9255 -8.27417 -31.4041 14.0788 -8.5274 -31.7463 13.361 -7.91886 -30.8278 13.0633 -7.7568 -30.8755 12.3657 -8.47761 -31.8121 11.9226 -8.35069 -31.4894 10.8898 -8.32981 -31.0978 11.4272 -7.67436 -30.6131 10.6033 -7.64181 -30.7669 10.6673 -6.67349 -30.5987 10.8135 -5.71865 -29.6547 10.52 -5.65265 -29.7008 9.65779 -5.17902 -29.153 9.69654 -4.33044 -29.2722 10.6494 -3.92249 -28.4151 11.1434 -3.97818 -28.9726 11.5119 -3.15849 -29.0512 12.4234 -3.50719 -29.0791 13.2287 -4.11671 -28.1894 13.754 -3.92879 -27.8672 14.7072 -3.69921 -28.2569 14.9208 -2.7798 -28.9004 15.3613 -3.39239 -29.2349 14.6318 -2.82715 -29.0162 14.743 -1.83593 -29.4492 15.4763 -1.41026 -28.9067 16.2127 -1.21968 -28.6672 17.1601 -0.9780169 -28.9202 17.6668 -1.77129 -29.0669 18.5962 -1.30718 -28.8163 19.4833 -1.80054 -27.952 19.8327 -2.26729 -27.2268 19.1922 -2.22403 -27.039 18.9945 -1.26824 -27.0613 18.2634 -0.5897429 -26.1291 17.8703 -0.3109609 -25.1741 17.5707 -0.1708109 -24.8449 17.9492 0.6618981 -23.9025 18.0263 0.2355831 -23.4161 18.7291 0.8071281 -23.3415 19.0187 1.76701 -23.4206 19.9901 2.03438 -23.9796 20.8252 1.95701 -24.777 21.3494 1.36142 -25.2659 22.1796 1.51834 -25.8949 22.5736 2.14248 -26.1065 22.6184 3.04125 -26.2244 23.5197 2.78385 -26.7053 24.1092 3.51156 -26.7619 23.3685 4.16286 -27.6294 22.9674 3.94186 -28.5653 23.1784 4.22708 -28.8198 23.1184 3.2341 -29.5797 23.4445 2.61091 -29.8448 22.951 3.41562 -30.0031 22.2019 4.03623 -29.8564 21.2629 4.37925 -29.3042 20.672 3.84968 -28.7389 21.1739 3.19383 -29.3765 20.7308 2.56725 -30.3902 21.0464 2.49829 -30.3655 20.663 1.56274 -30.9293 20.0866 1.09603 -31.8232 19.6795 1.39463 -31.2538 19.34 2.10587 -31.4523 18.3776 1.95067 -31.4423 18.3532 2.99926 -30.4292 18.3721 2.95097 -30.2973 17.8405 3.70433 -29.6767 17.8401 4.48641 -30.375 17.3791 4.93343 -30.862 16.5546 4.83223 -31.1137 15.5859 4.52099 -31.6566 16.1439 3.95939 -32.0499 15.2228 3.935 -32.6213 14.4597 3.63445 -31.8753 14.3085 3.0383 -32.0024 13.3662 3.30616 -31.1585 13.5231 2.77884 -30.3774 13.8652 3.16874 -30.2672 13.8074 2.1892 -29.6157 13.0683 2.17849 -29.1945 12.5863 1.47824 -29.4766 12.2237 0.6125161 -29.1546 11.4082 0.2683431 -29.2152 10.4593 0.2886111 -29.1893 9.83309 -0.4891869 -29.6806 10.2353 -1.27141 -30.5101 10.3703 -0.7005489 -31.2773 9.81061 -0.2708029 -32.1928 9.56648 -0.1940299 -32.4597 8.69408 -0.5499739 -31.7103 8.16181 -0.8916689 -30.8417 7.89042 -0.7676009 -29.9651 7.97487 -1.37012 -29.9232 7.12497 -1.87689 -28.973 6.86564 -2.13239 -28.6981 7.64486 -1.525 -27.785 7.66354 -1.41513 -28.0342 8.59993 -1.70576 -28.4719 8.64823 -2.55147 -28.9688 8.27357 -3.28523 -29.8242 8.78032 -3.33656 -30.2022 7.8818 -3.53644 -31.1807 7.69357 -3.78212 -32.102 7.51498 -4.00242 -33.0946 7.64337 -3.75284 -33.2179 6.59085 -3.80354 -33.0691 6.02562 -4.69687 -33.7749 5.41323 -4.4102 -34.5556 5.12284 -3.77529 -34.1295 5.41352 -2.96397 -35.0744 5.69271 -3.06696 -34.5017 6.48806 -3.17879 -33.922 6.36079 -2.30857 -33.9435 7.32551 -2.14791 -33.4422 7.71009 -2.84729 -32.6108 7.27091 -2.41327 -33.1821 6.94479 -1.67579 -32.1829 7.00372 -1.40962 -31.5093 6.78843 -0.6895609 -31.8295 5.84555 -0.6646149 -32.7918 5.64905 -0.3423019 -33.0281 5.19615 0.5371571 -32.8708 4.78669 1.44726 -32.408 4.11517 1.95064 -32.5666 4.53536 2.90889 -31.7809 5.12781 3.23294 -31.2355 5.33056 4.09749 -30.3568 5.02456 3.78098 -29.625 4.33788 3.80712 -29.4561 4.24268 2.84905 -28.7686 4.77182 3.48661 -29.325 5.55534 3.18995 -29.4276 6.53844 3.45937 -28.9711 7.40531 3.76797 -28.2668 7.94363 3.23297 -28.5339 8.66759 2.5749 -29.5014 8.40531 2.54839 -29.5581 8.40409 1.54916 -29.6106 9.41006 1.62235 -28.6814 9.82619 1.60512 -28.5633 10.7752 1.11565 -27.7148 10.2704 1.01276 -26.8367 9.89427 0.9383181 -26.9195 8.88093 1.23676 -27.3764 8.34439 1.92667 -26.9369 7.47258 1.90503 -27.0243 6.51808 2.07011 -27.6721 6.3996 2.79445 -27.2306 6.92899 3.45759 -26.9158 7.79333 3.98703 -27.4222 8.4339 4.61799 -28.1833 8.83955 5.03976 -28.7425 8.20736 5.57312 -29.0151 9.01907 6.07863 -28.3591 9.7807 5.98535 -27.6919 9.58611 6.70515 -26.8195 9.33081 6.4005 -26.678 8.51718 5.88803 -26.1002 7.96171 6.55168 -26.5678 8.59663 7.31395 -26.8593 9.29542 7.94104 -26.3277 9.57078 8.65548 -25.7843 8.8124 8.3693 -25.1002 9.59286 8.15685 -24.5025 10.3563 7.84443 -24.0074 10.6972 6.97141 -24.1494 9.74327 6.60072 -24.896 9.89485 7.15442 -25.22 10.7372 6.70905 -25.9907 10.6276 7.36759 -26.8371 11.1323 7.45888 -26.3867 11.3588 8.35758 -25.8505 12.0999 8.80348 -26.6498 11.9373 9.26901 -25.9635 11.8432 9.99395 -25.4158 12.1727 10.7899 -24.7099 11.7499 10.2391 -23.8861 11.2546 10.2053 -24.3432 10.3517 9.89805 -24.0143 10.8083 9.08159 -23.2115 11.2959 8.95451 -22.7503 11.127 8.03171 -22.4304 10.1974 7.99225 -23.1037 9.47721 7.7914 -22.7978 9.99134 6.9628 -22.7993 10.5235 6.07134 -22.1845 10.0877 5.48556 -22.1452 9.43522 6.24599 -21.3783 9.22796 5.645 -20.8868 8.42922 6.02841 -19.9659 8.66412 6.19113 -19.9288 8.0921 6.99119 -20.0065 7.88973 7.93284 -20.9726 8.0058 7.81478 -20.5017 8.71265 8.29558 -21.0229 9.53698 8.50741 -21.1344 10.515 8.61857 -21.5751 9.98519 9.32617 -22.1138 9.2292 9.7061 -22.1536 8.2534 9.88844 -23.042 7.78535 9.52109 -23.4288 7.62708 8.60124 -23.3825 7.55012 7.57232 -24.2556 7.07891 7.51446 -24.4985 7.83913 6.88906 -24.8195 8.67225 6.43386 -25.1389 7.86747 5.93166 -25.3519 6.95109 5.62193 -25.8137 6.44847 4.84606 -26.2048 5.5481 4.86404 -26.4966 5.17263 5.71017 -27.368 5.60353 5.78162 -28.2744 5.17561 5.61817 -28.613 5.85651 6.31427 -28.4117 5.55236 7.25116 -28.1222 5.22669 8.12204 -28.6875 6.00919 8.3315 -29.4891 6.2732 7.69515 -29.972 5.89009 6.92658 -30.4499 5.28117 7.626 -30.5096 4.31289 7.24126 -30.4639 3.72184 6.43432 -31.3295 4.17973 6.3924 -31.4837 4.15397 5.39084 -30.5827 3.73261 5.38215 -29.5942 3.74734 5.36237 -29.3046 2.81799 5.42902 -30.1367 2.35737 5.76398 -30.2747 1.40944 6.02275 -29.6353 0.8354259 5.43855 -29.6757 -0.1235141 5.43383 -30.1296 -0.9296761 5.70486 -29.4377 -0.7666061 6.43258 -29.8114 -1.46652 7.11235 -30.6535 -1.70345 6.5601 -31.3294 -2.19934 5.94895 -32.1077 -2.25895 5.28422 -31.1011 -2.23235 4.96089 -31.5781 -2.9411 4.39706 -32.336 -3.47501 4.51878 -32.7627 -3.42701 5.44725 -31.9182 -3.61387 5.88125 -31.3643 -4.42674 5.6449 -32.0591 -4.94729 5.19761 -32.4716 -5.13501 4.35264 -32.802 -5.96595 4.80388 -32.9234 -6.77303 5.32575 -32.7537 -6.24201 6.15925 -31.9175 -6.55432 5.59981 -31.4339 -6.82943 4.78112 -31.7569 -7.71781 4.39221 -32.0588 -8.53742 4.83295 -31.9399 -9.48303 4.36571 -32.9416 -9.322 4.30302 -33.6387 -8.65409 3.98824 -34.4058 -8.15607 4.32853 -35.0112 -8.65186 4.77959 -34.2 -8.65864 5.38416 -33.8706 -9.31907 6.06504 -33.4901 -9.05569 6.90085 -32.8852 -8.48285 7.29926 -33.6365 -8.57228 8.05406 -33.6922 -9.14675 8.91466 -33.1272 -8.84653 9.72047 -32.7169 -9.70445 10.0324 -33.3796 -10.289 10.4157 -33.5528 -10.2831 9.42283 -33.2557 -10.6933 8.53482 -32.2923 -10.8789 8.24253 -31.5824 -11.2466 8.8571 -30.6837 -11.6326 9.12681 -30.1057 -11.0622 9.63957 -30.2899 -10.164 9.4399 -30.5508 -9.93097 10.456 -30.0458 -10.33 11.2681 -29.3897 -10.2496 10.4601 -28.6116 -9.80107 9.99103 -29.1903 -9.10312 10.1896 -29.099 -8.83879 9.16082 -29.8993 -9.06249 8.57184 -30.6974 -8.43336 8.65562 -30.022 -8.20944 8.02871 -29.8279 -8.85202 7.3371 -29.1209 -9.35446 6.81811 -28.3278 -9.56415 7.41364 -27.608 -8.83841 7.63856 -27.5835 -7.85184 7.86513 -28.4599 -7.79346 7.37987 -28.9163 -7.01878 6.95048 -29.1053 -6.06529 6.73721 -28.1841 -5.65609 6.80171 -28.0847 -5.63993 5.84825 -28.0927 -5.36456 4.91129 -27.1236 -5.65872 4.69688 -26.39 -5.42837 5.27965 -25.6625 -5.74844 5.90028 -26.1591 -6.19242 6.59149 -26.3069 -6.87009 5.78763 -27.0737 -7.37034 6.07578 -27.3549 -8.30608 5.8906 -26.7767 -7.9596 5.15187 -27.2041 -7.71288 4.27471 -27.6301 -8.50493 3.9897 -27.5843 -9.26708 4.55891 -28.4436 -9.60925 4.18519 -28.9158 -9.68085 5.09456 -29.7055 -9.82117 5.58227 -29.5243 -10.6235 4.98537 -29.5809 -10.6481 3.99447 -29.2091 -11.4145 3.53328 -30.0176 -11.2699 2.96383 -29.8613 -10.5881 2.22583 -29.1063 -10.2153 1.66337 -28.092 -10.0684 1.47455 -27.6564 -10.0971 0.6689461 -27.1726 -10.7571 1.29938 -26.48 -10.0562 1.19402 -26.6476 -9.13461 1.01703 -25.6219 -9.33889 0.9885751 -25.3633 -9.52066 1.95745 -24.9068 -8.6322 2.20303 -23.9102 -8.67964 2.09835 -24.1284 -9.29728 1.44139 -23.8026 -10.1956 1.09527 -23.3007 -9.45246 0.8289771 -22.3915 -9.30147 0.5056851 -22.9022 -8.56307 0.06749312 -22.8223 -8.54835 -0.9401809 -23.0324 -9.46253 -1.20505 -22.3088 -8.98211 -1.74958 -23.0804 -8.71315 -2.24662 -23.4905 -8.17989 -3.06044 -23.5068 -8.09587 -4.02454 -22.7455 -8.69866 -4.43668 -22.209 -8.05275 -4.97762 -21.9579 -7.79956 -4.01848 -21.9218 -6.81984 -3.67232 -21.592 -6.81543 -4.59478 -20.8657 -6.85379 -5.1639 -19.9951 -6.37688 -5.44365 -19.2739 -5.71969 -5.69597 -18.918 -4.79987 -5.68608 -19.1696 -4.08604 -5.1188 -20.1213 -4.39055 -5.13912 -21.02 -4.02057 -4.9556 -21.9626 -4.3638 -4.83917 -22.3643 -3.47037 -4.56497 -22.7827 -3.67413 -5.4582 -23.0535 -4.119 -6.30472 -24.0037 -4.38655 -6.10592 -23.9948 -4.26808 -7.06435 -23.6191 -5.16226 -7.11237 -23.7493 -5.71375 -7.94788 -24.6784 -5.84114 -8.19411 -25.1583 -4.99548 -8.40189 -25.7388 -5.77589 -8.2629 -26.2099 -5.65823 -9.1549 -25.9823 -5.13969 -9.98033 -26.5526 -4.47074 -10.4406 -27.3034 -4.15758 -10.9512 -27.5832 -4.06609 -11.9612 -28.2319 -3.49281 -11.4783 -27.646 -2.67984 -11.2802 -26.8681 -2.63756 -11.9747 -26.2699 -3.41871 -12.2544 -25.4762 -3.0404 -11.8178 -25.1754 -3.44536 -12.707 -24.9606 -3.71319 -13.6296 -24.404 -3.86321 -14.4701 -24.31 -4.64046 -15.0155 -23.846 -5.15495 -14.346 -23.2558 -4.40976 -13.9488 -22.3011 -4.32868 -13.8905 -21.4468 -4.51793 -13.4359 -21.6716 -5.3551 -13.03 -21.9601 -5.5289 -13.8909 -22.7857 -6.13328 -13.9698 -22.6706 -6.12075 -14.9819 -23.4563 -6.76854 -14.8538 -23.4158 -7.73058 -15.1291 -23.0107 -7.76903 -14.2307 -21.9765 -7.68758 -14.279 -21.2185 -8.24973 -13.9614 -20.6141 -7.48282 -14.0717 -20.3311 -7.03145 -14.8709 -19.6488 -6.58002 -14.2463 -19.3831 -6.00318 -13.5513 -18.8521 -5.22884 -13.8288 -19.547 -4.93606 -14.5084 -18.8787 -4.48621 -15.0176 -19.5449 -4.83195 -15.7883 -19.9428 -3.9513 -15.7606 -19.2682 -4.15087 -16.587 -19.9738 -3.53139 -16.7844 -19.9848 -2.57785 -17.1127 -19.2808 -2.63557 -17.738 -18.2922 -2.75479 -17.5353 -18.1299 -3.78422 -17.5609 -17.1357 -3.87686 -17.7125 -17.4467 -3.3906 -16.9265 -17.5726 -4.4474 -16.9032 -16.724 -4.94851 -16.9165 -16.3324 -5.62491 -17.5655 -16.6222 -6.03115 -16.6336 -17.2588 -6.09487 -15.8541 -16.3358 -6.24695 -15.5686 -16.0012 -5.30621 -15.5685 -15.5615 -4.76364 -14.8485 -15.9007 -4.11701 -14.2041 -15.4552 -3.25284 -14.1182 -16.2838 -3.14296 -13.5633 -15.7478 -2.69394 -12.8261 -15.3896 -2.17242 -13.6447 -16.1142 -1.56656 -13.3594 -16.5132 -0.9405981 -14.0271 -15.9616 -0.6016441 -14.7666 -16.0197 -1.49783 -15.2834 -16.7919 -2.21733 -15.3315 -17.7683 -1.93402 -15.4326 -18.5295 -2.15149 -14.8577 -18.0183 -2.08847 -13.9347 -17.3 -2.22148 -13.3161 -18.0794 -2.91678 -13.2893 -18.4935 -2.54808 -12.5093 -19.2128 -3.04227 -13.1081 -20.0395 -2.49772 -13.4145 -19.4693 -1.73392 -13.8168 -19.9279 -1.17757 -13.1122 -20.0691 -1.02652 -12.0996 -20.6845 -0.3871451 -11.6442 -21.1924 0.4520519 -11.439 -21.4819 0.06560823 -10.6696 -21.4999 -0.9223161 -10.635 -21.2609 -1.23151 -9.75078 -20.3791 -0.8534071 -9.94125 -19.8645 -0.2292901 -10.5758 -19.3744 -1.08749 -10.5688 -18.6716 -1.79347 -10.8108 -18.1438 -1.89377 -9.95117 -17.3547 -1.56361 -9.43627 -17.8309 -0.7714351 -9.85097 -18.0802 0.03169223 -9.26769 -17.2843 -0.4091111 -8.8699 -16.3864 -0.3268651 -9.15058 -16.8109 0.1321019 -9.91565 -16.1958 -0.1311841 -10.7075 -16.2972 -1.04833 -10.3204 -15.5602 -1.28568 -10.9023 -14.9049 -1.96251 -10.8378 -14.9227 -2.54102 -10.0352 -15.6793 -2.57089 -9.37311 -14.8704 -2.33241 -8.89545 -14.6321 -1.51142 -9.50062 -13.8189 -1.757 -8.96638 -13.1587 -1.78485 -8.20451 -12.5752 -1.03694 -7.85536 -12.3793 -0.09291317 -7.378 -12.4442 -0.6874451 -6.61219 -13.2081 -1.40237 -6.60815 -13.5742 -2.09735 -7.26852 -14.1819 -2.69228 -7.72365 -14.8655 -2.47256 -7.15004 -15.6581 -2.41446 -7.83384 -15.7897 -1.54197 -8.2162 -16.5001 -1.19957 -7.5181 -17.4247 -1.64966 -7.64925 -17.1328 -2.2476 -8.47395 -16.7276 -2.92881 -7.9174 -16.0624 -3.53749 -7.41945 -16.6832 -3.88068 -6.67993 -16.9977 -4.85212 -7.00006 -16.3243 -5.08364 -6.28051 -15.65 -4.56183 -6.72452 -14.9936 -3.98435 -6.27175 -14.3269 -4.68876 -6.04197 -15.0228 -5.37707 -5.95485 -14.5918 -6.17246 -5.52147 -15.3543 -6.04947 -4.94286 -14.5787 -6.16895 -4.26887 -13.7782 -5.92649 -4.70998 -13.2587 -5.59046 -5.56648 -12.3938 -5.86675 -5.25926 -12.4697 -6.89185 -5.06957 -11.692 -6.5691 -5.51415 -12.0109 -6.635 -6.46841 -12.2923 -7.45526 -7.01414 -12.3603 -7.70137 -7.953 -11.6838 -7.44462 -8.7167 -12.2538 -6.63532 -8.84558 -12.0013 -6.48273 -9.78792 -12.0492 -5.58948 -10.3212 -12.9951 -5.25651 -10.0982 -13.3225 -5.54465 -11.0528 -12.9055 -6.03874 -11.817 -13.8524 -5.97071 -12.2858 -13.1702 -6.28361 -12.9938 -12.8454 -5.82946 -13.9232 -11.8798 -6.03599 -13.8645 -11.6044 -6.02081 -12.9172 -11.2648 -6.89406 -13.1481 -10.9064 -7.22434 -12.2548 -11.5503 -7.95828 -12.1246 -11.5305 -8.86314 -12.6355 -11.7806 -9.84761 -12.8511 -11.8736 -10.0204 -13.829 -11.7996 -9.06624 -13.728 -11.7472 -8.0858 -13.7264 -11.398 -8.23584 -14.6983 -11.914 -8.20178 -15.5426 -11.4008 -7.45577 -15.7854 -10.5143 -7.28124 -15.5486 -9.8521 -7.93458 -15.3434 -9.36255 -8.67757 -14.9835 -8.50705 -8.73542 -14.4627 -8.74567 -8.11551 -13.7601 -9.46239 -8.3822 -12.9762 -9.10679 -8.2364 -12.039 -9.54129 -7.33471 -12.1277 -9.85052 -6.42569 -12.0191 -8.88231 -6.30532 -11.6957 -8.0742 -6.43054 -11.2777 -7.14247 -6.5799 -10.9702 -6.65417 -5.7635 -11.1727 -6.54965 -6.09424 -12.1064 -5.72798 -5.48805 -12.0619 -5.95235 -4.49246 -11.9638 -4.96982 -4.28614 -12.0941 -4.1987 -4.92491 -11.9172 -4.47482 -4.73513 -10.9243 -4.83821 -5.58466 -10.5189 -4.24915 -5.7855 -11.3189 -5.01446 -6.2877 -11.6369 -4.23763 -6.89545 -11.3957 -4.59936 -7.628 -11.7485 -4.4181 -8.56698 -11.4572 -4.21018 -8.29685 -12.3052 -4.03851 -9.24292 -12.405 -3.88376 -10.16 -12.1114 -3.82946 -10.4131 -13.0426 -4.06767 -10.2056 -13.92 -3.99908 -9.27266 -13.7012 -3.13309 -9.16214 -14.1684 -3.05384 -8.1949 -14.4632 -3.40458 -7.94318 -13.612 -3.93945 -7.10694 -13.6529 -4.67749 -7.2189 -12.8922 -5.06677 -6.54218 -13.414 -4.65346 -5.85507 -13.9756 -4.45203 -6.24409 -14.8497 -3.88881 -5.74231 -15.5453 -3.53485 -6.64351 -15.62 -3.81052 -7.29601 -16.3239 -3.93557 -8.25138 -16.6774 -4.3958 -8.90868 -17.1947 -3.51655 -8.74846 -17.6336 -2.68294 -9.17626 -18.0319 -3.105 -8.78552 -18.8555 -3.57589 -9.11159 -19.6713 -3.27061 -9.9014 -19.2446 -2.74246 -10.7051 -19.544 -2.55407 -10.8384 -20.5086 -2.57787 -11.6623 -21.1944 -3.5566 -11.7755 -21.068 -3.22461 -12.319 -20.2125 -3.71994 -12.9002 -19.6476 -3.75334 -13.8808 -20.0069 -4.0149 -14.3175 -20.8718 -4.95558 -14.2144 -20.8585 -5.31318 -13.8578 -20.0161 -6.01763 -13.5645 -19.3683 -5.79027 -12.887 -18.6986 -6.54618 -12.4622 -19.1972 -6.88619 -12.3958 -18.2773 -6.29552 -12.0626 -17.5815 -6.59719 -13.0086 -17.4379 -6.09462 -13.8161 -17.19 -5.05742 -13.793 -16.9093 -5.11798 -12.8885 -17.314 -5.27766 -12.0362 -16.8541 -6.04158 -11.7761 -16.3381 -5.96897 -12.2592 -15.4999 -6.07507 -13.2007 -15.2062 -6.75712 -13.8651 -15.3598 -6.11522 -13.8122 -16.1398 -5.56459 -14.7116 -16.2412 -5.35923 -14.9018 -15.2885 -4.50331 -14.9562 -15.6741 -3.71125 -14.7151 -16.1995 -2.95745 -15.222 -16.4813 -3.38018 -14.7894 -17.2242 -4.01943 -15.6143 -17.1881 -3.3093 -15.4903 -17.8479 -4.16681 -14.9474 -17.9757 -4.45492 -14.9889 -18.9239 -5.18139 -15.1956 -19.6209 -6.07536 -15.6387 -19.5032 -6.39451 -16.0296 -18.6041 -6.47343 -16.1351 -17.5581 -6.5179 -16.159 -16.5955 -6.44267 -15.9677 -15.5609 -7.35688 -16.3575 -15.3142 -7.73983 -16.0645 -16.1738 -7.59766 -16.0659 -17.233 -8.44892 -16.6487 -17.2768 -9.18054 -16.5667 -16.6818 -9.16372 -15.8 -17.2891 -9.80738 -15.0865 -17.1276 -10.7426 -15.0994 -16.6843 -10.5728 -14.1018 -16.5193 -9.66996 -14.1386 -16.0461 -8.85921 -13.9676 -16.5411 -8.34369 -14.5648 -15.9615 -7.90081 -13.8079 -15.3772 -8.16195 -12.8751 -15.4896 -9.06065 -13.1209 -15.2211 -9.47578 -12.1989 -15.0843 -9.43857 -11.1932 -15.1136 -10.3264 -11.5877 -15.4293 -10.8599 -12.1161 -14.8104 -10.5214 -12.7539 -15.4422 -10.4893 -12.1692 -16.2028 -11.2655 -12.1519 -16.6831 -10.8799 -12.2761 -17.6134 -10.8519 -11.2898 -17.377 -9.96209 -11.5192 -17.5836 -9.38957 -12.089 -18.0777 -9.06266 -12.3141 -17.1683 -9.15303 -13.2732 -17.5232 -9.75613 -13.6566 -18.1925 -9.29802 -13.7399 -19.0927 -9.92087 -14.2631 -19.604 -9.87721 -15.1772 -20.0196 -8.92611 -15.3246 -20.3178 -8.14627 -15.7473 -20.9115 -8.60383 -14.9525 -21.1878 -8.31477 -14.4274 -22.0437 -7.43117 -14.0285 -21.711 -6.48527 -13.9725 -21.4907 -5.87564 -13.2406 -21.7622 -5.34181 -12.6697 -21.1047 -5.18015 -11.7172 -20.6699 -6.00814 -11.465 -20.2066 -5.31066 -11.3245 -19.5206 -4.75262 -10.6327 -19.0356 -5.29103 -9.80792 -18.9444 -4.86012 -9.49027 -19.7793 -5.00206 -8.89886 -20.5085 -4.31486 -8.16164 -20.8406 -3.76051 -7.41923 -21.1529 -3.35498 -8.21781 -21.6072 -2.40621 -7.81064 -21.4541 -1.69206 -8.31755 -21.987 -1.67204 -8.21179 -22.9949 -0.933643 -7.6586 -23.2668 -1.37687 -7.31341 -24.0375 -1.72107 -6.62773 -24.7177 -1.85173 -6.79856 -25.6954 -1.87749 -7.71862 -25.3034 -2.69426 -7.81314 -24.9247 -3.38983 -8.57092 -24.8521 -2.60494 -9.00279 -25.2271 -2.71021 -9.81704 -24.6492 -3.25392 -9.48564 -23.9264 -3.96275 -9.34345 -23.2226 -4.17688 -8.85005 -22.3598 -4.79146 -9.53039 -22.6683 -5.29316 -8.89936 -23.3685 -5.3619 -8.41291 -24.2144 -6.24216 -7.89562 -24.2551 -6.40015 -7.06308 -24.8517 -7.26197 -6.94339 -24.3876 -8.08437 -6.38125 -24.1393 -8.81509 -5.76924 -24.1109 -7.88297 -5.30797 -24.0827 -7.47347 -4.43912 -23.8489 -7.23621 -4.15531 -22.8953 -7.7792 -3.32538 -22.7887 -8.04141 -3.86582 -21.9637 -8.88505 -4.04521 -21.3959 -8.60925 -4.98005 -21.5848 -9.11142 -5.86783 -21.693 -9.54804 -6.50219 -22.2861 -9.18395 -7.02752 -21.512 -8.40021 -7.07126 -22.0499 -7.5598 -7.59429 -22.1259 -7.48781 -7.59681 -21.0884 -8.04822 -7.95729 -20.3484 -7.47347 -7.32285 -19.9293 -7.80925 -6.39547 -20.1817 -7.20787 -5.96589 -20.8944 -6.596 -6.65475 -21.3646 -6.28512 -6.25748 -22.2499 -5.71755 -5.71273 -22.8991 -5.16775 -4.94409 -23.0402 -4.58835 -5.39681 -22.4266 -4.68232 -4.4069 -22.2742 -5.50608 -4.07434 -22.0598 -5.16879 -3.8412 -21.1346 -5.46359 -4.26161 -20.2735 -4.91734 -4.90197 -19.7913 -5.54971 -4.6526 -19.0339 -6.24377 -5.39012 -19.1107 -6.83772 -5.16891 -19.8784 -6.93569 -4.17625 -19.5471 -6.72659 -4.28783 -18.5526 -6.52914 -4.16882 -17.6279 -6.82549 -4.25095 -16.6625 -7.0231 -3.94231 -15.6988 -7.94676 -4.07267 -15.4029 -8.33437 -4.85926 -14.8666 -8.3971 -5.76893 -14.5558 -7.52297 -6.20984 -14.3586 -8.08019 -6.55877 -13.5311 -8.99507 -6.26774 -13.1712 -9.75652 -5.6106 -13.4742 -10.6417 -5.90177 -13.7532 -10.57 -6.23204 -14.7105 -11.2211 -5.55426 -14.4786 -11.9457 -5.12367 -15.0225 -12.1852 -5.97619 -15.5284 -12.3604 -6.77529 -16.0528 -13.1118 -6.2103 -15.7193 -14.0003 -5.9677 -15.4423 -13.973 -6.81053 -14.9124 -13.604 -7.68192 -14.6828 -12.6722 -7.57804 -14.497 -12.5375 -8.56068 -14.6176 -12.7723 -9.22528 -15.3507 -13.6585 -9.49958 -15.5095 -13.967 -9.73231 -16.4749 -14.7339 -9.36324 -17.0519 -14.1738 -9.45675 -17.9398 -14.0685 -9.7012 -18.9063 -14.2721 -9.10496 -19.6467 -14.1081 -8.15977 -19.8521 -13.3831 -8.84652 -20.0493 -13.7039 -9.66948 -20.4803 -14.6751 -9.55269 -20.5059 -15.5333 -10.1198 -20.4703 -15.9035 -10.4838 -19.6071 -16.1499 -11.2763 -20.1485 -16.6713 -11.3476 -20.989 -16.178 -10.7906 -21.6836 -16.3294 -10.4079 -22.6152 -15.4199 -10.9505 -22.4815 -14.8428 -11.0046 -23.3739 -13.9904 -10.3675 -23.4553 -13.2857 -10.2653 -22.8059 -13.4007 -9.32155 -23.1393 -13.327 -9.2345 -24.1186 -13.9835 -8.61258 -23.6572 -14.3397 -8.34322 -24.5571 -14.952 -7.88276 -23.9108 -15.8867 -7.81423 -24.3205 -15.6916 -7.08621 -25.0171 -15.8933 -6.40276 -25.7624 -16.1602 -5.40715 -25.7702 -16.7393 -5.02075 -26.4824 -17.2442 -4.98768 -25.5935 -17.5296 -3.96997 -25.6782 -16.5698 -3.64645 -25.5806 -15.802 -4.22521 -25.1202 -15.7383 -3.46815 -24.4757 -14.9183 -3.02614 -24.0871 -14.3818 -2.51124 -24.7319 -13.8131 -3.30906 -25.0553 -13.0973 -3.58522 -25.7476 -13.9345 -3.88855 -26.2267 -13.558 -4.69868 -25.7517 -13.622 -4.89207 -26.6888 -13.8474 -4.96039 -27.6334 -14.8446 -4.81585 -27.6445 -15.0256 -5.39882 -26.8038 -15.6757 -6.1654 -27.0618 -15.4123 -5.88883 -27.9457 -15.362 -5.51275 -28.8626 -15.5804 -5.32557 -29.797 -16.3625 -5.92373 -29.7809 -16.3542 -6.64338 -30.4749 -15.5902 -7.18233 -30.2211 -15.0081 -7.74775 -30.7345 -14.5167 -8.4033 -30.0223 -15.4749 -8.23842 -29.7202 -15.8862 -7.70025 -28.9883 -15.5219 -6.90987 -28.5191 -15.0255 -7.16154 -27.6995 -15.6024 -7.92836 -27.5473 -14.7743 -7.98083 -26.9475 -15.5623 -8.34534 -26.3214 -14.9517 -9.1176 -26.1788 -15.485 -9.25324 -25.3534 -16.3537 -9.70271 -25.1853 -16.665 -9.91503 -24.2903 -17.6323 -10.1468 -24.3917 -18.3082 -9.43831 -24.5163 -19.109 -9.26375 -23.8507 -19.3495 -8.30183 -24.0907 -19.8314 -8.27773 -23.2275 -19.9587 -7.77677 -22.3474 -20.549 -7.04512 -21.8889 -21.1534 -6.35341 -22.2972 -20.9672 -6.07794 -21.3274 -20.6352 -6.50328 -20.3644 -21.2523 -7.26333 -20.4483 -20.8615 -7.11025 -19.5093 -19.8876 -7.17865 -19.1638 -19.3312 -6.36173 -19.2353 -20.0118 -6.08181 -18.5937 -19.202 -6.00994 -18.0225 -19.6197 -5.11386 -18.0133 -20.379 -4.61503 -18.3947 -20.9127 -4.61957 -17.5194 -20.9148 -3.69885 -17.9314 -21.5436 -3.24563 -18.6015 -21.8881 -3.25916 -19.5484 -22.0221 -2.34286 -20.0806 -22.0658 -1.62993 -19.4544 -22.7216 -1.00753 -19.2219 -22.2342 -0.8696961 -20.1535 -22.4419 -1.24312 -21.0358 -22.0501 -0.7951491 -21.8812 -21.8347 0.1317419 -21.4937 -21.0571 -0.1067441 -20.9489 -21.001 0.3465859 -19.9953 -21.8355 0.7861109 -19.6148 -21.5871 0.9436489 -18.6884 -22.0972 1.78834 -18.9148 -22.1263 2.8164 -19.0554 -21.9275 2.90986 -18.0475 -22.202 3.69677 -17.6129 -21.8649 4.55134 -17.3062 -22.512 4.08227 -16.7111 -23.0097 3.19879 -16.9191 -23.6456 3.85572 -17.2834 -24.4951 4.35555 -16.9988 -24.7661 4.54688 -16.0003 -24.1356 5.25866 -15.7565 -23.9589 6.12158 -16.2592 -24.1297 6.63728 -15.4253 -24.0164 7.48711 -14.9479 -24.4206 8.06712 -14.2153 -25.2387 8.12538 -14.8389 -24.9034 7.80166 -15.7242 -24.4987 8.05162 -16.6046 -23.8772 8.11679 -17.3886 -23.7129 7.6221 -18.2424 -23.4232 6.95134 -18.8176 -23.701 5.9467 -18.7974 -23.4847 5.35271 -17.9615 -22.786 5.37258 -17.258 -22.0103 5.79892 -17.7749 -21.3605 5.55046 -16.9071 -21.6403 5.66122 -15.936 -22.5319 6.28481 -16.0721 -22.0097 6.98071 -15.626 -22.4731 7.64317 -14.9904 -21.731 8.27225 -14.9306 -21.5685 8.90573 -15.7629 -22.5318 9.09689 -15.6777 -22.4554 9.68939 -14.8811 -23.3051 10.0631 -15.0712 -24.0742 10.3829 -14.5804 -24.2638 10.1997 -13.6274 -24.5833 9.35237 -13.163 -24.5575 10.1704 -12.4908 -24.4137 10.0169 -11.516 -25.1729 9.56208 -11.1656 -24.6237 9.69204 -10.329 -24.7246 8.72482 -10.5023 -24.3687 8.22521 -11.281 -25.1616 7.5844 -11.1103 -24.7375 7.24734 -11.9275 -23.9202 7.10187 -12.402 -23.1028 6.53721 -12.2588 -22.8602 5.59963 -12.1298 -21.9647 5.27957 -11.9871 -21.36 4.80487 -12.7033 -20.6123 5.3045 -13.0915 -19.7503 5.01882 -12.4957 -19.546 5.37484 -13.4154 -19.1566 4.49161 -13.351 -18.9008 3.81449 -13.9525 -19.1784 2.87603 -13.9014 -18.5617 2.26281 -13.6592 -18.4271 1.68139 -12.7868 -18.5002 2.5467 -12.3191 -18.6226 2.16832 -11.4478 -18.0421 2.52053 -10.6589 -17.4866 2.68864 -11.5467 -16.8739 2.52193 -12.3225 -16.1929 3.16652 -12.0273 -15.8184 4.06298 -12.2037 -14.8401 4.17653 -12.5276 -14.3545 4.8152 -13.1389 -13.4432 4.53628 -12.94 -12.905 4.64293 -12.0719 -12.4288 5.24999 -12.7346 -13.2952 5.56853 -13.0622 -13.4708 5.97749 -12.0903 -14.3368 6.10209 -12.4741 -14.2096 7.09977 -12.7956 -13.7808 7.03869 -13.6956 -14.5748 7.64674 -13.6422 -15.3196 7.43041 -14.2665 -16.0511 7.12142 -14.8729 -16.2657 6.19944 -14.5027 -15.9113 5.33651 -14.0867 -15.5493 4.48042 -13.7272 -16.441 4.0453 -13.7069 -17.285 3.51449 -13.4833 -17.7652 3.89235 -14.2955 -18.3069 3.35072 -14.9362 -18.3543 3.15344 -15.9176 -19.2302 3.1087 -16.4359 -20.1343 3.50171 -16.1713 -19.8162 3.34045 -15.2836 -20.8385 3.45826 -15.1842 -21.1403 3.08993 -16.0806 -20.5095 2.6288 -16.7744 -20.727 1.88922 -16.0658 -20.5002 1.06739 -16.5525 -20.6621 0.4656989 -15.7765 -21.0303 1.0927 -14.9463 -20.7314 1.89995 -14.4458 -20.5083 1.0493 -13.9128 -19.8168 0.4131059 -13.5225 -19.1657 -0.3945351 -13.5876 -19.9988 -0.6632901 -14.0608 -20.7868 -1.18704 -14.4985 -20.5566 -1.35438 -15.4337 -19.6062 -1.65251 -15.4343 -18.7237 -1.20534 -15.2125 -18.8385 -0.8306481 -16.1451 -18.3425 -0.08256157 -16.4229 -18.1511 -0.02739007 -17.4243 -17.8836 0.7306219 -16.8715 -17.5699 0.6075169 -15.9118 -17.1727 0.9836439 -15.089 -16.6693 0.1883479 -14.7214 -17.2052 0.5112789 -13.9844 -16.3087 0.8879749 -13.9837 -15.8487 0.8900969 -13.0091 -16.2043 1.45603 -12.2856 -17.1105 1.42141 -12.8317 -16.4205 1.71307 -13.4963 -15.6601 2.28462 -13.7098 -15.3733 2.99154 -13.0369 -14.5075 2.97832 -12.7225 -14.2083 2.43874 -13.5273 -13.7416 2.6357 -14.3347 -13.4547 3.49108 -14.615 -14.3435 3.44813 -14.1866 -15.2309 3.38236 -14.7119 -15.2003 3.13648 -15.734 -15.2061 2.19474 -15.9742 -15.8017 2.53744 -16.7472 -15.8073 2.98247 -17.7539 -15.9914 3.49149 -16.9164 -15.2764 4.13416 -17.2703 -14.9823 4.05711 -18.2289 -15.2098 3.76082 -19.1801 -15.6463 3.84523 -20.0011 -15.0384 4.1983 -20.5907 -14.6462 5.08659 -20.8417 -14.682 6.11948 -20.9262 -13.8006 5.93755 -20.5679 -13.758 5.48738 -19.6461 -13.1676 5.96195 -18.961 -13.4215 6.7856 -18.4382 -13.9051 7.34726 -19.0807 -14.8539 7.0614 -19.1461 -15.8229 7.02527 -18.7751 -16.7584 6.68764 -19.0279 -17.6767 6.6458 -18.4949 -16.8326 6.75542 -17.8868 -16.5382 7.54972 -17.3584 -17.3713 7.46073 -16.8415 -18.0453 8.02251 -17.3016 -18.2807 8.91538 -17.7771 -17.3094 8.9162 -17.4733 -17.0459 9.64554 -16.8612 -18.0431 9.67845 -16.769 -18.2496 10.173 -15.9098 -18.788 9.67459 -15.2328 -18.685 8.72001 -15.0023 -18.7521 9.11242 -14.0652 -18.4122 9.11093 -13.104 -17.6082 9.61161 -13.3981 -17.599 10.6152 -13.1763 -17.0548 10.9594 -12.3913 -17.778 11.1785 -11.655 -17.3216 10.7032 -10.8748 -18.2708 10.3293 -10.9745 -18.5967 10.6894 -10.0628 -19.3247 10.0592 -9.68923 -19.1846 9.53826 -8.81105 -18.6862 9.62056 -7.951 -19.1801 10.1324 -7.19787 -19.8705 10.9132 -6.95018 -20.4746 10.8162 -7.78612 -20.1748 11.7486 -7.80785 -20.0553 12.2995 -8.63065 -20.4068 13.2668 -8.56897 -21.1986 13.6842 -8.22209 -21.2348 14.158 -9.13418 -21.3778 15.1868 -9.04509 -22.0451 15.7931 -8.71462 -22.8369 15.1784 -8.8575 -23.4532 14.7692 -9.57795 -23.469 15.1264 -10.5077 -22.651 15.6826 -10.275 -23.0506 16.577 -10.0585 -23.3986 16.7369 -11.0145 -23.0291 17.2643 -11.8046 -23.8328 16.8482 -12.2766 -24.2225 16.658 -13.1784 -23.7005 15.9435 -13.5814 -22.9801 15.3448 -13.3387 -23.5692 15.6591 -12.6395 -23.2168 15.9469 -11.7898 -22.3843 16.1811 -12.1987 -21.6661 16.3355 -11.5978 -21.4383 15.4079 -11.717 -20.4956 15.1666 -11.5941 -20.5871 15.2429 -10.6389 -21.4817 15.0216 -10.647 -22.3145 14.8174 -10.1533 -22.9164 14.062 -10.3292 -23.5404 13.3073 -10.4417 -24.2839 12.7071 -10 -23.6723 12.05 -10.4299 -24.0734 12.3927 -11.3546 -23.2417 12.9191 -11.2407 -22.728 12.3516 -11.8591 -23.1634 11.5065 -12.0083 -23.5172 11.5848 -12.9267 -24.4227 11.6291 -12.522 -25.3388 11.3641 -12.2328 -25.8516 11.8918 -12.8846 -26.7296 11.7665 -12.3845 -26.146 12.4421 -11.8651 -25.8834 13.3005 -11.3766 -26.5233 13.8263 -11.9913 -26.4278 14.8324 -11.7555 -26.2343 15.0705 -12.7696 -25.3251 14.9869 -13.1457 -25.4275 14.2032 -13.8038 -24.8933 13.4193 -14.1199 -24.8765 12.4237 -14.365 -25.5023 11.9053 -14.9133 -26.1045 11.8456 -14.0035 -27.1154 12.0632 -14.1235 -27.643 11.3763 -14.4256 -28.1721 10.7726 -15.0011 -27.5851 10.0692 -15.3589 -28.3234 10.1685 -16.0189 -27.9105 10.517 -16.8656 -27.7188 9.76253 -17.4664 -27.1069 8.9916 -17.4102 -26.4127 9.72252 -17.6131 -25.6559 9.11338 -17.8128 -24.938 8.89472 -18.5096 -25.6656 8.47135 -19.036 -25.8833 9.00822 -19.7807 -24.8948 9.15421 -19.7174 -24.2256 9.86735 -19.7759 -24.8911 10.4345 -20.1413 -24.6279 11.4225 -19.9651 -25.5118 11.9213 -20.2515 -25.543 12.7259 -19.7605 -25.4722 13.674 -20.2315 -25.3492 14.0004 -21.1318 -25.0311 13.1076 -21.5105 -24.0643 12.9286 -21.5353 -23.0808 13.0603 -21.6328 -23.0174 13.473 -20.7649 -22.2017 14.0062 -20.7 -22.6885 14.5179 -20.0426 -21.9861 14.2418 -19.3913 -21.1688 13.7834 -19.6245 -20.2094 13.7266 -19.3926 -20.6585 12.8696 -19.5323 -20.0227 13.0007 -20.2545 -20.3059 13.3365 -21.1747 -19.88 12.5039 -21.476 -20.1246 12.8322 -22.3911 -19.9956 11.8383 -22.4373 -19.4304 12.149 -23.2166 -18.3874 12.2879 -23.2836 -18.836 12.6903 -24.0356 -18.544 13.5334 -24.5211 -19.28 13.1196 -25.0348 -19.451 12.4943 -25.7337 -19.1711 11.5378 -25.8066 -19.8754 11.6665 -26.6002 -18.9273 11.4798 -26.8863 -17.9509 11.8591 -26.9561 -17.1653 11.9057 -26.3041 -16.9298 10.9468 -25.9047 -16.1798 10.3937 -25.6191 -15.7214 11.1817 -25.2768 -15.0691 11.7965 -25.7414 -15.8541 12.3157 -25.6227 -16.4264 12.7976 -24.9389 -16.8514 13.7069 -25.2529 -16.1423 14.1096 -25.8364 -15.8446 13.6833 -26.6248 -15.3212 13.1112 -27.2488 -15.4995 12.4618 -28.034 -15.8181 11.5176 -28.0446 -15.4704 10.6005 -28.5186 -16.2791 10.0418 -28.8471 -17.0722 9.50835 -28.8125 -17.3787 8.54976 -28.6415 -17.5537 8.04115 -27.8371 -18.0134 8.70534 -27.2566 -18.4642 9.29112 -26.5261 -19.273 9.31689 -25.9521 -18.9961 8.69048 -25.2223 -19.4354 9.2031 -24.4783 -18.6634 8.79545 -24.0443 -18.1054 7.9731 -24.2469 -17.6262 8.36937 -23.5681 -17.772 7.5642 -22.9342 -16.9008 7.14537 -22.5655 -16.2611 7.3539 -21.8611 -16.464 7.929 -21.0222 -16.2511 7.21054 -20.3162 -15.7565 6.34318 -19.853 -16.3611 5.60833 -20.1039 -16.5355 4.95987 -20.8844 -17.2909 4.33639 -20.7946 -18.0782 4.4023 -20.1747 -18.8616 3.82131 -20.0437 -18.048 3.2115 -19.958 -18.1157 2.21961 -20.1939 -18.7516 2.1882 -21.0178 -18.2738 1.28973 -21.0759 -17.9424 0.4680959 -21.4121 -18.1781 0.7371489 -22.4025 -17.554 1.37244 -22.8311 -18.4839 1.75796 -23.211 -18.9172 1.11307 -23.7504 -18.3084 0.3227529 -24.0159 -17.6493 0.09907643 -24.7153 -17.182 0.9854059 -24.5369 -17.0764 1.82232 -24.1414 -16.8995 2.21772 -23.266 -16.3682 2.75825 -22.6806 -15.7133 2.66829 -21.9187 -15.3879 3.42867 -21.3953 -14.4938 3.72575 -21.439 -14.6611 4.28375 -22.2447 -14.7806 5.0938 -22.7755 -13.8479 5.04936 -22.4523 -13.5529 5.67915 -21.6679 -12.9635 5.06877 -21.1101 -11.9863 5.22109 -20.9742 -12.4739 5.99732 -21.2969 -12.2789 6.61992 -22.0782 -11.3912 7.1776 -22.1798 -10.7441 7.83774 -22.2478 -11.505 8.50641 -22.0251 -11.2175 9.18915 -21.4256 -10.434 9.36228 -22.0264 -9.59138 9.3029 -21.4929 -9.32598 8.82699 -20.7512 -10.1059 8.66098 -20.264 -9.62242 9.22907 -19.6188 -9.05116 9.82937 -19.0445 -9.74009 10.4646 -19.1627 -9.76277 10.8519 -20.1288 -8.9292 10.8271 -20.6798 -7.98828 10.6386 -20.7407 -7.36782 11.4145 -20.7371 -6.64428 11.6573 -21.2691 -5.8015 11.6845 -20.7717 -6.12922 10.7356 -20.596 -6.30537 9.77558 -20.7313 -5.54139 9.72569 -21.3173 -4.78474 9.73401 -20.644 -4.24336 8.97553 -20.2519 -3.58938 9.20199 -19.5216 -2.94432 9.84404 -19.0957 -2.46095 10.4039 -19.7728 -2.14812 9.82945 -20.5213 -1.23488 9.56824 -20.1147 -0.386588 10.1415 -20.0085 --0.114268 9.31126 -20.1356 --0.609684 9.05596 -19.3703 --0.116345 8.73692 -18.5828 --0.677295 7.92326 -18.9425 --1.10737 7.07699 -18.621 --0.722975 6.4533 -19.2629 -0.007454425 6.5362 -18.612 -0.889192 5.98482 -18.5399 -1.01098 6.69148 -19.1971 -0.315712 6.13783 -19.7249 --0.368301 6.04559 -20.508 --0.02902773 5.18845 -20.1413 -0.58151 4.73576 -20.7465 -1.14943 4.55425 -21.6008 -1.93437 4.87301 -21.1306 -2.56001 4.05136 -21.1822 -2.45869 3.31713 -20.5322 -2.15638 2.94102 -19.6569 -2.45861 2.28554 -18.9606 -3.23489 2.39758 -19.608 -4.16262 2.18734 -19.8642 -4.45832 1.56619 -19.2113 -3.59192 1.11422 -19.1185 -2.89981 0.5647699 -19.4139 -3.30319 0.05458743 -18.6298 -3.03065 -0.1652671 -17.7394 -3.0335 0.7232119 -17.2583 -2.66821 0.2951069 -16.3683 -1.68013 0.2443409 -16.5999 -1.25333 0.6596589 -17.3823 -1.36613 1.21442 -16.6067 -0.794429 0.7615669 -15.9346 -0.602888 -0.2033291 -16.1436 -0.599418 -1.07427 -15.664 -0.178556 -0.3583211 -15.2042 -1.0484 0.1927069 -14.9699 -1.78118 0.6384499 -15.2984 -1.8421 1.33798 -14.6278 -1.06419 1.89727 -14.7102 -0.958993 1.98874 -13.6961 -1.45246 1.40597 -12.9637 -2.03372 2.15697 -12.6613 -2.48666 2.82657 -12.1236 -2.71193 2.59742 -11.1166 -3.56496 2.44339 -10.626 -4.42282 2.93548 -10.9124 -4.79843 2.21888 -11.4794 -4.81019 2.72033 -12.3165 -5.60783 2.20502 -12.6142 -5.76531 2.01689 -13.6608 -5.17615 1.32959 -14.1888 -4.64882 0.9458489 -13.457 -4.54837 1.92587 -13.8506 -3.66949 1.52393 -13.8686 -3.70472 0.7257869 -13.1676 -3.21996 0.03931973 -13.5301 -2.32409 -0.06936657 -13.9561 -2.25509 -0.9077691 -13.5352 -1.28403 -0.9120921 -13.2686 -1.55962 -0.8053471 -12.2622 -2.07853 -0.8321221 -11.39 -2.96269 -0.6324651 -11.9394 -3.9171 -0.5864101 -11.6555 -4.90525 -0.4619421 -11.7578 -4.58383 0.4428069 -11.7171 -4.35171 0.1804629 -10.7637 -3.53606 0.08697703 -10.1219 -3.95773 -0.8467421 -10.178 -3.99775 -1.83428 -9.86372 -3.47865 -1.42612 -9.08215 -3.06046 -0.7558851 -8.44099 -2.16138 -0.4875691 -8.37484 -2.18024 -1.38548 -8.79845 -1.64328 -1.26561 -9.56028 -1.0998 -1.45241 -10.3984 -0.536515 -2.0378 -11.01 --0.252701 -1.77412 -11.519 -0.204412 -1.66229 -12.3586 -0.218641 -0.6711801 -12.2728 -0.517471 -0.09192697 -11.5376 -1.30077 0.009770654 -10.8925 -0.727763 0.4559529 -10.1998 -1.04943 0.1380059 -9.27933 -0.807864 0.1572499 -8.28873 -0.537264 -0.7919651 -8.48689 --0.07878473 -0.5555671 -7.82777 --0.193374 -1.40611 -8.35431 --1.07986 -1.45352 -7.8771 --0.637373 -1.75861 -7.04889 --1.68933 -1.77252 -6.9446 --2.48422 -1.15431 -6.85689 --2.82331 -0.4757271 -7.56819 --2.87203 0.1268349 -6.76894 --2.38534 0.7311229 -6.1294 --2.0138 -0.2102131 -5.92148 --2.5087 -1.09497 -5.63007 --1.57538 -1.31338 -5.39296 --1.08232 -1.93171 -4.84215 --1.2876 -1.11534 -4.28648 --2.13204 -1.4137 -3.88271 --1.33844 -1.82 -3.46019 --0.864781 -0.9946151 -3.18706 --1.34428 -0.09069667 -3.23954 --1.78152 -0.8644681 -2.73939 --2.53347 -0.8744561 -2.01978 --3.05288 -0.8049151 -1.21029 --3.40654 0.1859499 -1.2424 --3.30156 -0.06793007 -0.2662259 --4.2652 -0.07618187 -0.3892169 --4.72969 -0.05812407 0.4708821 --4.11701 -0.8759841 0.4016271 --4.78122 -1.24302 -0.2799089 --5.3325 -2.09282 -0.4551589 --5.72361 -1.57339 -1.24173 --6.69916 -1.40582 -1.37369 --6.78113 -0.4867981 -0.8820919 --5.9312 -0.1354211 -1.19415 --6.17728 -0.6373761 -2.06159 --6.91105 0.06091763 -2.08966 --6.14994 0.5722719 -2.37088 --6.12998 1.50968 -1.88311 --6.7306 2.33884 -1.86092 --6.46353 2.98736 -2.52695 --7.31111 3.56097 -2.44299 --7.68127 3.98651 -3.32391 --8.5968 3.5428 -3.66944 --9.41992 3.78404 -4.09519 --9.68608 2.93385 -4.52634 --9.96617 2.91389 -3.61911 --10.3852 3.55328 -3.13088 --9.9638 3.77818 -2.27026 --9.14686 4.35515 -2.59088 --8.40541 4.97466 -2.96442 --7.41739 4.97538 -3.13185 --7.3299 6.00454 -3.32601 --6.81714 6.46497 -4.02947 --7.07905 7.43123 -4.21016 --7.69203 6.72433 -4.45681 --7.74953 6.37344 -5.43257 --7.68011 6.65598 -6.37041 --8.20265 5.94554 -6.93059 --8.99725 6.19042 -7.4383 --8.55976 6.39527 -8.30373 --8.03402 6.31344 -9.16696 --7.67426 6.84898 -9.87227 --7.15398 7.36694 -10.453 --7.23584 8.37391 -10.5701 --8.1951 8.33129 -10.7679 --8.11674 7.73373 -11.4718 --7.84741 8.72686 -11.6569 --7.57609 9.02931 -12.4994 --7.95854 8.16365 -12.7825 --7.3952 7.4588 -13.3154 --6.71185 7.05574 -12.6166 --5.7682 6.78765 -12.3442 --5.05686 6.11042 -12.5055 --4.08918 6.28724 -12.5552 --3.84818 7.27498 -12.4602 --2.971 7.6659 -12.8094 --2.70561 6.76967 -13.1766 --2.90736 6.10524 -13.8567 --2.58189 5.45051 -13.1776 --2.32075 5.37246 -12.2159 --2.3559 4.72206 -11.503 --2.39597 3.66975 -11.1771 --1.73313 2.88029 -10.9578 --1.89163 3.2547 -10.0057 --0.959939 3.57536 -9.97183 --0.403854 3.00341 -10.5793 -0.173017 3.73846 -10.9698 --0.709485 3.58099 -11.4054 --1.40363 3.5623 -12.1598 --1.09327 3.3939 -13.1147 --0.576146 2.71041 -13.488 -0.358851 3.02293 -13.7638 -1.09813 3.59485 -13.4261 -2.01653 3.5502 -13.1749 -2.85557 3.71066 -13.6898 -3.31041 3.96829 -12.8413 -3.78721 3.32026 -13.4015 -3.76133 2.83033 -14.3185 -4.7063 2.74919 -14.6951 -5.0833 3.49301 -15.2532 -5.77606 3.70298 -14.6715 -6.70503 3.55938 -15.073 -6.40197 3.02803 -14.3157 -5.67386 2.52106 -14.6012 -5.04385 1.94818 -15.1646 -4.89611 1.15962 -15.814 -4.3312 0.5536319 -15.2571 -4.47495 -0.4515811 -15.2604 -5.38582 -0.4232491 -15.4591 -6.01099 -0.5750541 -14.7604 -5.99322 -1.04955 -13.8264 -6.41168 -1.60197 -13.2035 -7.30183 -1.37559 -13.5091 -7.80961 -1.43045 -12.6488 -7.98017 -0.7642221 -11.9277 -7.59944 -0.08110047 -12.4654 -6.75152 -0.1570411 -11.9121 -6.47895 0.2692999 -12.79 -6.19409 0.4683849 -13.722 -6.86937 1.17943 -13.7118 -7.09554 2.04824 -14.1124 -7.89975 2.3074 -14.6632 -8.45435 2.9208 -14.1 -7.7478 3.65644 -14.1445 -8.11149 4.05209 -15.0008 -7.86632 3.31738 -15.5607 -7.91586 2.42355 -16.1332 -7.58325 1.57773 -16.5912 -7.07434 0.8393939 -17.0237 -6.86367 -0.02400917 -17.463 -7.39397 -0.8501431 -17.2822 -7.02057 -1.18478 -16.4387 -6.40468 -0.5039211 -16.0014 -6.71946 -1.0128 -15.2451 -6.58252 -1.96687 -15.1954 -5.79003 -2.52636 -15.5518 -5.05796 -2.07332 -14.985 -4.68636 -1.94616 -14.0905 -4.22396 -2.59607 -13.4696 -4.77045 -3.00484 -14.1712 -5.71495 -3.16575 -14.2305 -6.62932 -3.4888 -14.235 -6.76596 -4.43269 -14.5537 -6.70533 -5.29637 -15.1463 -5.99685 -5.97891 -15.3356 -6.44775 -6.03187 -16.2043 -5.52284 -6.21395 -16.4676 -4.80351 -6.6693 -17.0347 -3.83873 -6.80935 -17.3588 -3.49684 -5.83226 -17.1479 -3.9838 -5.72784 -17.9998 -4.30139 -4.82225 -18.23 -4.58098 -3.97432 -18.608 -4.197 -3.77785 -17.7625 -3.54047 -3.08056 -17.3506 -3.51772 -3.34188 -16.415 -3.59249 -3.98642 -15.6008 -2.60172 -3.89766 -15.6753 -1.74083 -3.6099 -15.2596 -2.28536 -2.81783 -15.2544 -1.51479 -2.7454 -15.7778 -1.64239 -2.95682 -16.7478 -1.86556 -1.96615 -16.6619 -2.79507 -1.88612 -16.9573 -3.33286 -0.9583581 -16.8656 -3.83355 -1.8018 -16.6854 -4.24818 -0.9078041 -16.5357 -4.59806 -0.5400021 -17.3777 -5.23122 -0.9785461 -18.0612 -5.42352 -1.93557 -18.2492 -5.67411 -2.87496 -18.0313 -6.01116 -2.96445 -17.0113 -6.99499 -2.97878 -17.2395 -7.99266 -3.0955 -17.0294 -8.89674 -3.18417 -16.5848 -9.38641 -2.46012 -16.0401 -9.91873 -1.63274 -15.9261 -10.5554 -1.45965 -16.6276 -11.4792 -1.59501 -17.0061 -10.9965 -1.63509 -17.8897 -11.6093 -1.16565 -18.548 -10.8808 -0.4971311 -18.902 -10.1626 0.2036259 -18.7106 -9.23312 0.08656623 -18.2927 -8.49643 0.3760399 -18.9039 -8.16862 1.18128 -19.3453 -8.08025 1.97157 -19.9052 -8.8923 1.46368 -20.2602 -8.06599 1.39928 -20.8239 -7.32283 0.9059429 -20.3919 -6.29568 0.9345559 -20.2451 -5.52196 1.32724 -19.7498 -4.85224 0.5990429 -19.5069 -3.94809 0.2413829 -19.864 -4.02074 -0.7598761 -19.633 -4.22098 -1.25957 -20.4092 -4.48725 -1.10997 -21.3401 -5.4126 -1.27455 -21.153 -5.73149 -2.16087 -20.9346 -5.91549 -2.13553 -21.8565 -5.47474 -2.67334 -22.6208 -4.54644 -3.02773 -22.4434 -3.71418 -3.03889 -21.8559 -2.77794 -2.63371 -21.8094 -2.14814 -3.36566 -21.9087 -1.87587 -3.90962 -22.724 -1.76665 -3.51618 -23.6434 -2.65468 -3.20904 -23.8789 -3.16608 -2.4195 -23.4968 -3.79085 -3.0806 -23.9259 -4.4733 -2.82826 -24.7119 -4.62831 -2.2155 -25.4586 -4.94854 -1.38866 -25.1242 -4.89091 -0.6032211 -24.5314 -5.52947 -0.07740917 -25.0238 -6.36924 -0.5413291 -24.8533 -5.94139 -0.1985801 -24.0047 -5.54717 -0.3894441 -23.1294 -5.16864 -0.2479751 -22.2842 -4.21273 -0.2451801 -21.8848 -4.13751 -0.2606311 -22.886 -3.56769 0.5434939 -22.8118 -2.62091 0.5505289 -22.643 -2.29456 -0.1246861 -23.2065 -1.83482 -0.9639611 -23.4662 -0.870763 -0.8237791 -23.4226 -0.05824397 -1.09619 -22.8594 --0.09596513 -1.91503 -23.3923 --0.893162 -2.51962 -23.11 --0.443888 -3.1363 -23.791 --0.357939 -4.01827 -23.4049 --0.26196 -3.63156 -22.4974 --0.66908 -2.96259 -21.879 --1.14112 -3.75232 -21.6999 --1.7633 -3.12518 -21.2884 --0.911154 -2.90703 -20.838 --0.279171 -3.08851 -20.0089 -0.515672 -3.64556 -19.7536 -0.861919 -3.29979 -20.5465 -0.939159 -4.25935 -20.7412 -1.87581 -4.46622 -20.9353 -2.08842 -3.53606 -20.5193 -3.00993 -3.72533 -20.7491 -3.91547 -4.13362 -21.0197 -3.66182 -4.45965 -20.1483 -3.67298 -3.62314 -19.6142 -2.7817 -3.41588 -19.1308 -1.87457 -3.74881 -19.0285 -2.18877 -3.68153 -18.0874 -1.85159 -4.02353 -17.2573 -2.57887 -4.68092 -17.1073 -1.81968 -4.91478 -17.7766 -2.0247 -5.59035 -18.4669 -2.71776 -6.37425 -18.3483 -2.28048 -6.31639 -19.2725 -3.16819 -6.03407 -19.4463 -4.19029 -6.20895 -19.4782 -4.30605 -7.18056 -19.2901 -4.94117 -7.636 -19.8606 -5.24992 -6.72125 -20.1958 -5.40064 -5.72599 -20.4203 -4.55471 -5.87629 -21.0185 -3.82766 -6.27684 -21.5874 -3.06586 -6.11834 -22.1322 -2.36956 -5.70321 -21.6252 -2.43991 -4.92936 -22.2735 -1.79251 -5.59334 -22.5357 -1.64168 -5.02766 -23.4071 -0.883659 -5.13837 -22.6909 -0.677261 -5.17088 -21.5973 -0.212081 -6.06305 -21.5985 -0.945327 -6.43052 -22.2065 -0.418518 -7.26151 -21.9414 --0.352401 -7.02197 -21.369 --1.10166 -7.74563 -21.0996 --1.5619 -7.7791 -21.9618 --1.07152 -8.71809 -21.9745 --0.773015 -9.61908 -21.5851 --1.09088 -10.2083 -22.367 --1.66559 -9.39239 -22.5186 --2.28452 -9.11593 -21.7959 --2.87176 -8.47458 -21.2119 --2.76719 -7.54882 -21.6738 --3.34812 -7.55734 -20.9279 --4.03248 -6.98914 -21.0991 --4.48312 -6.57104 -21.8693 --4.90909 -7.46907 -22.0236 --4.83768 -6.9125 -22.8309 --5.51923 -6.23359 -22.5647 --5.8444 -6.39594 -21.6184 --6.65292 -5.90993 -21.3542 --6.6408 -5.93065 -22.3218 --7.59969 -5.67083 -22.1587 --8.0112 -5.95159 -23.0741 --8.64572 -6.33942 -23.6955 --8.87983 -7.36918 -23.8914 --9.43938 -8.23884 -23.9112 --8.73702 -8.48705 -23.1887 --7.87354 -8.56447 -23.628 --7.60561 -7.65096 -23.5873 --6.76914 -7.07101 -23.6279 --5.84476 -7.32266 -23.7817 --6.35786 -7.94603 -23.165 --5.74849 -8.70199 -22.8911 --5.0213 -8.06677 -23.1374 --4.47122 -8.74766 -22.6142 --4.266 -9.22298 -21.7225 --4.42068 -10.0248 -21.05 --5.3686 -10.0724 -21.033 --5.0239 -9.94946 -20.1035 --5.58651 -9.10356 -19.925 --6.4273 -9.62797 -19.9278 --7.13094 -9.08762 -19.4925 --8.1134 -8.92965 -19.3485 --7.916 -9.05963 -18.3574 --8.32807 -9.22799 -17.3952 --7.96327 -9.15292 -16.4711 --7.13791 -8.85642 -15.8785 --7.11588 -9.768 -15.415 --7.00063 -9.69721 -14.4271 --7.69845 -9.98535 -13.8907 --7.68748 -9.6762 -13.0239 --7.92961 -9.43329 -12.0699 --7.92671 -10.4868 -12.0024 --8.59261 -10.5495 -11.2957 --8.6775 -11.5486 -11.094 --8.68797 -12.5414 -11.0483 --7.74442 -12.6329 -11.0578 --6.84453 -12.6792 -11.441 --6.38557 -12.1747 -12.1616 --6.51119 -12.3173 -13.1843 --6.54708 -13.2856 -13.4907 --5.70466 -13.4285 -12.8443 --5.081 -12.8168 -13.2028 --4.99353 -12.4479 -14.1598 --4.42168 -11.7269 -14.0085 --4.96361 -11.2728 -13.3389 --4.22436 -10.6491 -12.9119 --4.2285 -11.445 -12.3429 --4.14669 -11.7679 -11.3998 --5.17283 -11.8312 -11.4054 --5.44877 -10.8909 -11.7008 --5.02747 -10.2352 -11.1263 --5.61826 -9.72656 -11.7156 --6.53522 -9.2399 -11.8866 --6.20838 -8.30565 -12.3231 --6.5974 -7.42004 -11.9507 --6.2782 -7.3376 -12.8363 --6.82824 -6.67825 -12.6193 --6.40804 -6.23731 -13.4021 --6.92363 -5.72766 -14.0733 --7.36604 -4.9041 -13.7561 --6.52811 -4.6796 -13.4552 --6.96038 -4.69884 -12.5758 --6.03845 -4.66012 -12.1088 --5.43265 -3.80772 -12.1736 --4.95956 -3.90071 -13.0694 --5.42097 -3.51349 -13.8473 --6.02588 -3.28 -14.5582 --5.71127 -2.30454 -14.6663 --6.1361 -2.34168 -15.5561 --5.44605 -1.8459 -15.9983 --5.34095 -1.08237 -15.3023 --5.19359 -0.1261761 -15.3249 --6.13756 -0.4014821 -15.1934 --6.33861 -1.37939 -14.8834 --7.02211 -2.00619 -14.583 --7.0916 -2.7308 -13.9025 --6.26102 -2.29211 -13.5131 --5.53755 -1.67579 -13.209 --5.78599 -0.9218561 -13.7908 --6.00814 -0.03279137 -13.3574 --5.16127 -0.2396111 -13.0186 --4.50241 -0.5017001 -13.6537 --4.0355 -1.10183 -12.9677 --4.40595 -2.00407 -12.7602 --3.99491 -2.40272 -11.9162 --3.90468 -1.68228 -11.1855 --2.98478 -2.09189 -11.348 --2.52795 -2.90611 -10.8733 --3.23748 -3.5952 -10.94 --4.10549 -3.33083 -10.4292 --4.46487 -3.9652 -11.0701 --4.7935 -4.53333 -10.2818 --4.51815 -4.32224 -9.38423 --3.88007 -4.85704 -8.81559 --3.05388 -5.43962 -8.76801 --2.95326 -5.25805 -7.79273 --3.11289 -5.62807 -6.80737 --3.84332 -5.93795 -6.16283 --3.41668 -5.31978 -5.54174 --3.99729 -5.60541 -4.71294 --3.10798 -5.80203 -4.26087 --2.92027 -4.8907 -4.64093 --2.9109 -3.89138 -4.90957 --3.00046 -3.42475 -5.73778 --2.46196 -2.79446 -6.20766 --2.52325 -3.30564 -7.09432 --2.47193 -4.24255 -6.96971 --1.85409 -4.01607 -7.76991 --1.46386 -3.05662 -7.86694 --1.45138 -3.16027 -6.84119 --1.27275 -3.55974 -5.93515 --0.463365 -3.85465 -6.44962 --0.345314 -4.73189 -6.97517 --0.316016 -5.61252 -6.57138 --1.16991 -6.01009 -6.8733 --0.825195 -6.34851 -6.01649 --0.124582 -6.39183 -5.22978 --0.265916 -7.37975 -5.40636 --0.547706 -7.25828 -4.46605 --1.13949 -8.05264 -4.53642 --0.804051 -8.2579 -5.40517 --0.36128 -8.95647 -4.89748 -0.351421 -9.25248 -4.27555 --0.143853 -8.63982 -3.62493 --1.08199 -8.98477 -3.45789 --2.03974 -8.74539 -3.42986 --2.20091 -7.90317 -4.06796 --1.71095 -7.06307 -4.06292 --2.22502 -6.44268 -3.54289 --1.604 -6.02683 -2.88179 --1.07807 -6.92464 -3.03152 --0.866132 -6.63614 -2.12428 --0.603271 -7.52007 -1.80791 --0.07262313 -7.24904 -1.03063 -0.758423 -7.42199 -1.53871 -1.30433 -6.61682 -1.65737 -1.44446 -6.21385 -0.7584299 -2.03235 -6.21094 0.00865578 -2.10326 -6.58847 0.8900701 -2.27107 -6.54141 1.90547 -1.7516 -5.90335 2.47217 -1.08524 -5.11922 2.40549 -1.98589 -4.64934 2.63138 -2.17226 -4.70741 1.64669 -1.39009 -4.40558 1.15427 -1.54194 -4.66615 0.2103631 -0.855158 -4.90969 -0.5290769 -1.19021 -4.68221 -1.40189 -0.353703 -4.93866 -1.79192 --0.206916 -4.28297 -2.32678 --1.08542 -4.66937 -2.00069 --1.55536 -4.35386 -1.13069 --2.09616 -3.85176 -1.74139 --2.43916 -2.8757 -1.71308 --2.87124 -2.40911 -2.50124 --3.46875 -1.70267 -2.81661 --4.21076 -1.15575 -2.98333 --4.96647 -0.7673731 -3.58126 --5.64395 -1.4383 -3.03941 --6.15349 -2.26748 -2.80886 --6.23738 -2.63336 -3.78964 --7.24683 -2.84992 -3.85762 --6.8888 -3.68234 -4.16646 --6.98638 -4.48584 -3.66969 --6.78895 -3.96426 -2.7724 --6.96153 -3.55093 -1.8643 --7.89252 -3.24965 -1.51386 --8.13237 -4.03718 -2.1182 --8.3258 -4.52643 -1.29865 --7.41958 -4.17537 -1.08487 --7.69389 -3.99519 -0.1256439 --8.67148 -4.16255 -0.3480079 --9.05717 -3.58548 0.3974381 --9.94841 -3.19194 0.6376861 --9.8016 -3.09686 -0.4328389 --9.52498 -3.42947 -1.34264 --9.97777 -4.0948 -0.7808479 --9.94466 -4.55156 -1.6741 --9.9391 -4.11148 -2.60107 --10.2974 -3.40417 -2.03144 --11.1278 -2.93425 -2.3189 --10.2757 -2.35405 -2.38378 --9.94859 -2.49202 -3.28057 --9.81715 -2.94866 -4.12036 --9.32171 -2.70645 -4.9605 --8.36991 -2.74414 -5.26466 --8.82681 -3.02598 -6.12466 --8.79048 -2.02417 -6.42963 --8.85879 -1.53105 -5.57262 --8.31079 -1.18524 -4.83394 --8.2718 -0.1908691 -4.7803 --7.34287 0.1754229 -4.82838 --7.02823 -0.7337681 -5.01594 --6.2372 -1.2643 -5.34531 --6.74877 -1.99315 -4.70819 --7.06329 -1.35354 -3.9178 --7.81427 -1.54819 -3.35142 --8.23527 -0.7291561 -3.7076 --8.84447 -0.05430937 -3.29866 --9.09337 0.9547759 -3.30868 --9.13432 1.70985 -2.72347 --9.0261 2.6643 -2.47088 --9.51312 2.20927 -1.75783 --10.4032 1.90431 -1.99285 --9.95978 1.10081 -1.68893 --9.1643 1.05799 -1.12714 --8.69944 0.4054269 -1.7158 --7.86045 0.6114229 -1.23901 --6.99697 1.29107 -1.26476 --6.15512 1.12304 -0.7985419 --6.29948 2.05812 -0.6360189 --6.33603 2.86782 -0.1275849 --5.56296 3.49514 -0.4207909 --5.49781 4.1652 -1.16401 --4.98307 3.4565 -1.68712 --4.40938 3.07408 -2.38223 --4.8681 2.81065 -3.29712 --4.40621 1.90201 -3.36053 --3.93417 1.14928 -3.745 --3.2121 0.5509129 -3.4248 --2.42866 1.16635 -3.71708 --2.09988 0.5772729 -4.44424 --1.58357 0.5419589 -5.30885 --0.895952 0.3726149 -4.61592 -0.02756167 0.2744969 -5.02169 -1.01955 0.3622549 -5.20791 -0.802494 -0.5858911 -5.19015 -0.349573 -0.1976221 -5.96161 --0.613025 -0.1925751 -6.21995 --0.694255 0.4109489 -6.9541 --0.149815 1.09887 -6.56885 -0.626835 1.01015 -7.12267 -1.4984 0.6952229 -7.50771 -2.45074 0.4011629 -7.36024 -3.08767 0.1352639 -6.67998 -4.06142 0.5546389 -6.83003 -4.84577 1.17428 -7.047 -5.0678 2.1399 -7.15738 -4.26218 2.27236 -7.73927 -4.30462 1.66895 -8.53619 -3.67205 2.48341 -8.47758 -2.68549 2.18537 -8.54579 -2.57971 1.56267 -9.22994 -1.84232 1.22941 -8.68837 -1.27527 2.01662 -8.87929 -1.47414 2.19956 -9.844 -0.762442 2.51611 -10.5738 -0.250464 1.79946 -10.0196 --0.579417 1.67947 -10.4897 --0.801419 0.6846579 -10.3158 --0.912124 0.08110523 -11.1268 --0.930345 -0.2629201 -12.0812 --0.74571 -0.9771571 -12.7995 --1.49629 -0.4676441 -13.1492 --1.79854 0.4533649 -13.0447 --2.62803 0.2749829 -13.6167 --3.55599 0.2698029 -13.1814 --4.2547 0.9220859 -12.772 --3.33735 1.34203 -12.9872 --2.65362 1.90314 -12.6489 --3.55278 2.33066 -12.7465 --2.97591 3.18317 -12.8309 --3.01702 4.12948 -12.787 --3.98402 3.98072 -12.6716 --4.77812 3.49191 -12.403 --4.80929 3.5695 -13.4311 --4.89889 2.78226 -13.9788 --5.86859 2.82125 -13.9387 --6.73754 2.76635 -13.321 --6.05149 3.47047 -13.1765 --6.40112 4.36987 -13.4364 --6.23791 4.65928 -12.5277 --5.32008 4.32601 -12.6549 --5.29807 5.24978 -12.1354 --5.06979 4.5528 -11.436 --4.40658 4.24212 -10.6849 --4.57676 3.85683 -9.74191 --5.41195 3.97853 -10.1086 --4.88217 3.15059 -10.4021 --4.68432 2.19791 -10.2646 --4.02476 2.74423 -9.70027 --3.15454 2.80347 -9.33334 --3.85362 2.74039 -8.69544 --4.80333 3.02416 -8.3438 --4.64385 2.61455 -7.44557 --4.23518 2.07805 -6.64823 --5.0828 2.12886 -6.08652 --5.23895 1.31703 -5.51485 --4.57522 1.15207 -4.74904 --5.01368 1.98996 -4.80621 --4.13814 2.40298 -4.54453 --3.69572 2.14483 -5.42338 --3.84685 3.03409 -5.80887 --4.54485 3.60115 -5.3329 --3.67068 3.97461 -5.52103 --4.11925 4.7917 -5.15779 --4.82915 4.31 -4.62082 --5.71781 4.66386 -4.74784 --6.09226 5.53817 -4.37762 --5.45495 5.10536 -3.75939 --4.54963 5.45408 -3.39488 --5.23275 5.06735 -2.66754 --6.20876 4.89161 -2.60265 --5.87884 5.41784 -1.84266 --6.11218 6.15333 -2.45302 --5.95471 6.22865 -3.47151 --5.14102 6.36951 -2.91876 --4.62875 7.04912 -2.34791 --3.9028 7.64291 -2.68309 --4.44253 7.89548 -3.43368 --3.60604 7.6648 -3.91977 --3.44799 8.35889 -4.65236 --2.4489 8.23255 -4.75901 --1.89284 7.41099 -4.73555 --2.84191 7.02008 -4.79042 --2.2544 6.78325 -4.06059 --1.99671 5.88807 -4.21869 --1.22627 6.50451 -4.06127 --1.32388 6.20685 -3.10699 --1.19027 6.68454 -2.1949 --1.36868 5.90268 -1.54748 --1.71709 6.34121 -0.7589899 --2.24791 6.993 -0.1341699 --1.55837 7.60087 -0.5103429 --1.71364 8.61883 -0.6459289 --1.92503 8.02603 -1.49621 --1.36584 8.28616 -2.32013 --0.469371 8.50639 -2.66028 --0.389903 9.51409 -2.83246 --0.932927 9.1598 -3.63519 --0.01538913 9.07359 -4.06747 --0.570229 9.50573 -4.76855 -0.501231 9.54764 -4.69888 -1.47342 9.41398 -4.3611 -1.90491 9.85217 -3.54705 -1.70574 10.578 -4.12179 -2.02861 11.5252 -4.2484 -2.88752 11.0441 -4.42756 -3.07362 10.9792 -5.40207 -3.65507 10.5635 -6.1475 -4.44175 11.1692 -5.77783 -3.80226 11.9353 -5.86663 -3.06246 12.645 -5.80953 -3.21886 12.9353 -4.86404 -2.7303 12.9759 -3.98377 -3.45267 13.586 -3.53664 -4.37612 13.1485 -3.49285 -5.28905 13.5067 -3.67933 -6.23187 13.8516 -3.79571 -7.13376 13.8381 -3.21335 -7.15953 13.6287 -4.18224 -7.89613 12.937 -4.33486 -8.87307 12.8448 -4.03485 -9.42333 12.7019 -4.83786 -9.30377 13.4994 -5.37256 -8.89822 13.3183 -6.30852 -8.26248 12.5276 -6.33688 -8.13985 12.7249 -5.35914 -7.20556 12.6925 -5.17868 -7.13576 11.593 -5.35668 -7.89255 11.6854 -4.67125 -7.97725 10.6975 -4.7808 -7.142 10.4684 -5.17582 -6.87516 10.5224 -6.10974 -6.81148 11.0464 -6.93643 -7.61276 11.7095 -7.06559 -7.6901 12.5885 -7.46278 -8.67873 12.2614 -7.66253 -9.49822 11.7825 -8.07718 -10.2592 12.2743 -8.37254 -11.2219 12.1791 -8.66147 -11.7049 11.5481 -9.23476 -12.276 10.85 -8.74365 -12.6937 10.2944 -9.43569 -11.9795 9.85845 -8.90769 -11.9077 9.55307 -9.8265 -10.9528 9.34678 -9.95759 -10.6987 9.41949 -10.9508 -9.84665 8.94284 -11.1483 -10.0574 9.55472 -11.9687 -9.35352 9.15466 -12.6435 -9.12864 8.82105 -13.5746 -9.28306 7.93822 -14.0808 -9.62439 7.00355 -13.7333 -10.292 7.27349 -14.4851 -9.85793 7.89216 -15.1232 -10.329 8.63096 -14.5616 -10.0366 9.54631 -14.317 -10.4768 9.90531 -13.4914 -11.2591 9.89226 -14.1183 -11.8132 9.6196 -13.2881 -11.5972 9.90145 -12.3769 -11.7815 10.7979 -12.711 -12.5626 11.1972 -13.2481 -12.8306 11.7822 -14.0052 -13.2561 10.843 -14.0273 -13.5055 11.0308 -14.958 -14.3194 10.6129 -15.3833 -13.8495 9.7615 -15.7448 -14.1158 10.1805 -16.6216 -14.7959 10.1257 -17.4176 -14.8012 9.17531 -17.0639 -15.1326 8.53956 -17.747 -14.9228 8.37836 -18.6951 -15.6765 8.77807 -19.1501 -15.2824 8.48899 -19.9861 -15.0038 9.40901 -20.2368 -14.5581 10.2349 -19.8392 -14.0731 11.062 -20.1652 -14.6966 11.1689 -20.9457 -13.8602 11.1454 -21.4195 -13.0127 11.3871 -21.9701 -12.3823 10.5443 -21.9469 -12.3287 9.90327 -22.7989 -12.9239 9.2563 -22.3523 -13.3691 9.36651 -23.2069 -14.1372 9.72629 -23.635 -15.0818 9.75429 -23.9467 -15.5432 9.40424 -23.0432 -16.1805 10.0659 -23.4634 -15.5481 10.8409 -23.3386 -15.3105 11.4134 -22.5788 -14.6277 11.9621 -22.1016 -14.6555 12.6288 -21.4249 -14.1885 13.518 -21.4853 -14.9268 13.8302 -20.9623 -15.5952 13.6941 -21.7113 -16.537 13.5729 -21.2263 -17.4456 13.4289 -20.7472 -17.4656 13.0834 -19.7515 -17.8618 13.9658 -19.7626 -17.743 14.8154 -20.1835 -17.954 15.7575 -20.0869 -18 16.082 -19.1772 -17.7964 16.9037 -18.6093 -17.7745 15.9803 -18.1877 -18.7561 15.7271 -18.3125 -19.7448 15.7344 -18.1692 -19.9358 14.994 -17.5599 -20.9115 14.861 -17.1964 -21.5982 14.1626 -17.0159 -21.7724 14.4989 -16.1179 -20.8412 14.5778 -15.7465 -20.4037 14.0713 -15.0434 -19.7733 14.5847 -15.7143 -20.2559 15.282 -16.1746 -20.5928 16.1851 -15.8508 -20.8559 16.6464 -16.8048 -20.8791 17.6508 -16.8689 -20.6958 18.2873 -17.5535 -20.5498 19.253 -17.6452 -19.7238 19.1999 -17.0191 -19.9331 19.1118 -16.0757 -19.8204 18.8982 -15.0849 -20.5062 18.6013 -14.4279 -21.5158 18.7857 -14.3431 -22.5219 18.6561 -14.3218 -22.9488 19.2829 -14.9953 -23.2302 20.2122 -15.4731 -23.7914 20.9023 -15.0822 -23.3591 21.5617 -14.4484 -22.8973 22.3975 -14.2705 -23.5967 22.004 -13.562 -23.4004 21.2423 -12.799 -22.769 20.9976 -12.0442 -22.6701 21.9257 -11.6787 -21.7569 22.0562 -11.3033 -22.2655 21.5979 -10.535 -22.369 22.5455 -10.1995 -21.5841 22.9618 -10.6889 -20.7981 22.4484 -10.4746 -20.3027 23.1357 -10.8419 -19.7519 23.1391 -10.0342 -20.612 23.1583 -9.58291 -20.2175 24.0101 -9.43085 -20.2787 24.7998 -8.94509 -20.6073 24.2397 -8.15532 -21.4702 24.7333 -8.06386 -22.1756 24.9759 -8.71907 -21.8178 25.9353 -8.75049 -22.3193 26.0166 -9.59677 -22.9444 25.2495 -9.46195 -23.0538 24.3077 -9.14437 -23.8502 23.803 -9.57359 -23.696 23.184 -8.79464 -22.946 22.5783 -8.93662 -22.6491 23.292 -8.39858 -22.4648 22.4932 -7.77161 -21.8304 22.1676 -7.16658 -22.276 21.2853 -6.95947 -22.6235 20.3964 -7.23688 -23.3242 19.9424 -6.64295 -23.8699 20.338 -7.33899 -24.8027 20.7814 -7.36785 -24.9781 20.9471 -6.35732 -24.416 21.3694 -5.62496 -25.3987 21.6157 -5.54971 -25.8548 22.4725 -5.25978 -25.1286 23.1553 -5.40724 -24.6996 23.4074 -6.30385 -24.1562 22.4813 -6.1663 -23.2913 22.6598 -6.58992 -23.21 22.1388 -5.78817 -22.9921 21.2991 -5.43969 -22.2032 20.7501 -5.36224 -21.4574 20.1406 -5.45169 -21.1786 21.0795 -5.73788 -20.9405 21.7418 -6.4652 -21.068 22.6182 -5.94466 -20.1234 22.3724 -5.73073 -19.381 22.123 -5.11288 -19.9965 21.3222 -5.29888 -19.7421 20.4514 -4.79087 -19.9191 19.7332 -4.11338 -18.911 19.6077 -3.88518 -18.6401 18.9671 -3.14416 -18.1281 18.1546 -2.99925 -17.2295 18.2984 -2.53715 -16.7525 19.2532 -2.49179 -16.2941 19.0627 -3.297 -15.8953 18.2967 -2.99894 -16.4589 17.9643 -3.88454 -17.1136 17.9903 -4.64744 -17.1219 18.6099 -5.36887 -17.6738 18.155 -6.08574 -16.9992 17.4609 -5.95279 -16.4554 17.0905 -5.17637 -15.5085 17.2708 -4.89742 -14.9733 16.7163 -5.60319 -14.179 17.3433 -5.52225 -13.9429 17.7403 -6.41906 -12.9797 17.5731 -6.13392 -12.3666 16.8942 -5.77685 -13.0554 16.3908 -5.26561 -12.4498 15.7294 -4.93922 -12.0411 16.3966 -4.21479 -11.0788 16.5176 -4.37169 -10.2914 16.8355 -3.79687 -10.1673 15.8038 -3.93616 -9.48957 15.3116 -4.34089 -9.23057 15.1582 -5.304 -9.70455 15.8831 -5.88603 -10.3118 15.1386 -6.15733 -9.74376 15.0314 -6.93332 -10.2339 15.8846 -6.85161 -9.42195 16.2896 -7.28168 -8.63444 16.0614 -7.85781 -8.36452 16.2222 -8.8114 -7.77551 16.8749 -8.40368 -6.79846 16.8037 -8.51123 -6.28079 17.6483 -8.42342 -5.91717 17.6472 -9.28894 -6.06678 18.2888 -10.0932 -6.6934 17.5772 -10.1842 -6.5743 17.0296 -11.0173 -6.22678 16.787 -11.9009 -5.19728 16.7875 -12.0919 -5.36403 16.2946 -12.9334 -5.95754 16.9881 -13.3701 -5.49456 17.5406 -12.6673 -5.84699 17.9914 -11.9142 -5.34813 18.3366 -11.1485 -4.40866 18.0427 -11.0844 -4.08886 18.1415 -12.0057 -3.58175 17.6674 -12.6223 -2.90584 17.0179 -12.3099 -2.70557 16.769 -11.3034 -2.23802 16.3041 -10.4741 -1.51773 16.6794 -9.97199 -0.761393 16.8625 -9.32005 -0.973168 17.8302 -9.25566 -0.02883217 17.8566 -8.73519 --0.233384 17.1524 -9.35682 --0.172867 16.2548 -9.62586 -0.340279 15.4837 -9.56239 -0.420925 15.189 -10.5088 -0.961298 15.8156 -11.1186 -0.70567 16.2333 -12.003 --0.08087933 15.6049 -12.2131 --0.04362113 15.7212 -13.2078 -0.905549 16.1802 -13.114 -1.77358 16.6768 -12.8404 -2.28061 16.6287 -13.7019 -1.81825 16.8399 -14.5908 -1.51865 17.3741 -13.8154 -0.521004 17.28 -13.6584 -0.456488 17.2116 -14.7161 -0.6284 17.988 -15.3116 --0.211574 18.4599 -15.4866 --0.968453 18.9841 -15.9116 --1.38388 18.048 -15.8354 --0.958659 18.0597 -16.7205 --0.942313 17.746 -17.6661 --0.818411 18.4675 -18.3569 --1.26246 17.7833 -18.7744 --0.394805 17.5386 -19.1721 -0.03533937 17.9239 -19.9201 -0.842764 18.526 -19.8644 -1.06417 17.6955 -20.3779 -1.25141 17.0985 -19.5543 -1.7251 16.8107 -20.4308 -2.37753 16.1867 -20.0914 -2.19223 15.4233 -19.5509 -2.55846 14.7271 -20.2489 -2.47185 13.9677 -20.8837 -2.45302 13.0526 -20.4848 -1.63452 12.4796 -20.09 -0.912101 11.8438 -20.4551 -1.50464 11.372 -21.1289 -0.934108 11.8689 -21.838 -0.196969 11.2393 -21.5279 --0.59868 11.7255 -21.7391 --1.22433 11.0538 -21.3272 --1.16585 10.7423 -20.3661 --0.967901 11.289 -19.5769 --1.82073 10.7145 -19.6206 --2.58568 10.0773 -19.5056 --2.89102 10.3011 -18.5423 --1.90169 10.4518 -18.2319 --1.02413 10.0571 -18.0216 --1.31302 9.14345 -17.571 --1.49496 8.95185 -18.5275 --2.27893 8.34608 -18.451 --2.03947 7.96612 -19.3583 --2.6306 8.62907 -19.936 --3.08149 7.88937 -20.4611 --2.06369 7.93715 -20.4711 --1.65711 7.22861 -19.9055 --1.99639 6.45304 -19.304 --2.45315 6.40952 -20.189 --2.76481 5.65712 -19.523 --2.83221 4.69706 -19.4962 --2.20596 3.89064 -19.5177 --1.43266 3.57919 -18.9379 --1.71534 3.38103 -18.0615 --1.91568 2.41652 -17.9787 --1.20713 2.25879 -17.3296 --1.40112 1.29451 -17.1931 --1.03241 1.30665 -16.2167 --1.17593 1.74616 -15.4731 --0.612505 2.24634 -14.8292 --0.254104 2.11985 -15.7551 -0.05736987 2.90517 -15.3844 -0.792961 3.59404 -15.3861 -0.442382 4.48415 -15.1791 -0.974746 4.94572 -14.4711 -1.97116 5.1202 -14.4163 -2.92118 4.97633 -14.024 -2.84624 5.41885 -13.1621 -3.67848 5.99561 -13.1608 -4.25016 6.66083 -12.6643 -5.21316 6.35302 -12.6055 -5.44033 6.03741 -13.5288 -5.35038 7.00095 -13.3322 -5.69806 7.78506 -12.8659 -5.97692 7.52173 -13.7225 -5.2282 8.10084 -13.9772 -4.22828 8.11713 -13.8854 -3.33431 8.01708 -13.4487 -2.99727 8.81706 -13.0311 -2.9266 9.40964 -13.7906 -2.12549 9.87909 -13.9045 -2.8046 10.2286 -13.3074 -3.31211 11.1454 -13.3782 -2.46894 11.6072 -13.156 -2.81746 12.5875 -12.9371 -3.45826 13.3775 -12.9887 -3.9002 12.5398 -13.3686 -3.56699 13.1643 -14.0151 -2.88092 12.8758 -14.6788 -3.08413 13.828 -14.6631 -2.59761 14.7007 -14.5059 -1.73472 14.8722 -14.0383 -2.00396 14.5622 -13.1451 -1.96664 13.7157 -13.6894 -1.76622 13.4637 -14.6086 -1.62327 14.3159 -15.0566 -0.732392 14.4526 -15.4359 -0.004660115 14.5101 -14.7126 -0.444011 15.3971 -14.5879 -0.01321817 15.4053 -15.4867 -0.549694 15.3386 -16.3381 -0.544683 14.8332 -17.2451 -1.0609 14.0618 -17.5362 -1.57956 13.173 -17.3005 -2.2521 13.3756 -16.482 -3.02798 12.7386 -16.265 -3.38567 12.6326 -17.1681 -4.12342 13.1906 -17.6051 -4.77539 12.8028 -18.2956 -4.89204 11.8461 -18.0228 -5.32339 11.1588 -18.5543 -5.18761 10.21 -18.9692 -5.82757 9.69084 -18.4305 -6.53218 10.2884 -18.6922 -6.96236 10.4813 -19.5614 -7.85951 10.674 -19.1448 -8.18617 11.4142 -18.6033 -7.24692 11.672 -18.8874 -7.32284 12.098 -19.7961 -6.3957 11.8581 -19.4337 -6.51541 12.82 -19.5093 -6.62493 13.7067 -19.0691 -6.11742 14.4056 -18.4406 -7.03871 14.4523 -18.0518 -7.51012 15.0344 -18.7772 -8.10708 15.7985 -18.5641 -7.98327 16.8238 -18.5036 -8.36296 16.5885 -19.3903 -8.01879 15.7696 -19.8366 -8.34193 15.3715 -20.6903 -9.06002 15.158 -21.4621 -10.0347 15.0605 -21.0782 -10.556 15.7905 -21.6021 -10.825 16.3212 -22.431 -11.7216 16.5915 -22.1015 -12.749 16.439 -21.9355 -13.5673 16.9191 -21.8055 -13.8462 17.0355 -20.8388 -13.5742 16.9637 -19.892 -12.8004 16.3867 -19.6042 -12.3466 15.5713 -19.2022 -12.5299 14.892 -19.9512 -13.2334 14.2452 -20.1818 -12.3842 13.8603 -20.5728 -11.4019 13.8238 -20.2394 -10.4812 13.8997 -19.7647 -10.3881 13.285 -18.9965 -10.9686 13.7391 -18.2831 -11.4887 13.0831 -18.8479 -12.4333 13.2963 -19.298 -12.4426 12.2735 -19.4855 -12.661 11.9126 -18.5725 -13.6113 11.9057 -18.8292 -14.2106 12.6911 -18.7507 -15.0519 12.1344 -18.7003 -15.7633 11.4541 -19.0207 -16.6493 11.1218 -19.1609 -17.3272 10.6835 -18.652 -17.3069 11.3992 -17.9004 -18.07 11.0095 -17.4068 -18.6808 11.7077 -17.3228 -18.6509 11.6807 -18.288 -18.3268 12.301 -19.0327 -17.7372 12.9866 -18.5743 -17.6208 12.3962 -17.7564 -16.996 11.9708 -17.1767 -17.6592 12.5926 -16.7475 -17.4626 12.0487 -15.9064 -17.3416 12.1755 -14.9304 -17.1767 13.1352 -14.5617 -16.4707 13.79 -14.5421 -16.8232 14.0457 -15.4673 -15.8682 13.7124 -15.555 -14.8914 13.7902 -15.85 -14.5954 14.1187 -16.8147 -15.305 14.6992 -16.4667 -14.4245 15.1954 -16.7272 -13.7875 15.5379 -15.9676 -12.9247 15.2304 -15.583 -12.3214 14.4928 -15.3838 -11.9968 14.1873 -16.2517 -12.7734 14.5196 -16.889 -12.6424 14.7588 -17.9234 -13.3964 15.0718 -17.4273 -13.945 15.0808 -18.2537 -14.5408 15.8646 -18.0856 -14.7092 15.5435 -18.9553 -15.4235 14.788 -18.9769 -16.0269 14.9202 -18.1924 -16.603 15.7166 -18.0505 -16.0783 16.6091 -17.9933 -15.6946 16.3597 -18.8668 -16.0256 16.0725 -19.7727 -15.2481 15.8208 -20.3971 -15.4735 16.1095 -21.2819 -15.2932 16.0628 -22.2601 -14.6872 16.5405 -23.0281 -14.5608 16.9628 -22.0462 -14.7339 17.9322 -22.2321 -13.9897 17.5989 -22.8664 -14.3816 17.5976 -23.7966 -15.3266 17.2802 -24.1049 -15.5446 16.2838 -24.3605 -16.1473 15.5392 -24.2308 -16.1795 15.8444 -23.2927 -17.1041 15.8413 -23.7098 -17.6784 16.5656 -23.2833 -17.9373 16.8533 -24.1401 -17.6429 17.6204 -24.7688 -16.9837 18.379 -24.9374 -17.6188 19.124 -25.0565 -18.15 19.4885 -25.8757 -17.8443 20.4366 -26.0593 -17.2649 20.9116 -26.6013 -16.6511 21.4618 -26.0514 -15.929 21.3044 -26.7225 -15.8248 22.1094 -26.1036 -15.3981 22.8733 -25.6317 -14.8321 22.182 -25.1629 -13.938 21.6828 -25.3953 -13.988 22.7252 -25.1901 -14.3041 22.9067 -24.2529 -13.5641 23.5446 -24.4516 -12.7064 23.0437 -24.4801 -12.4529 22.3782 -23.8387 -13.1888 21.8015 -24.1976 -12.6478 20.91 -24.2235 -12.6812 20.7215 -23.2548 -13.3273 20.9805 -22.5565 -13.5475 21.5888 -21.7326 -13.6231 20.687 -21.2046 -13.8844 20.0687 -20.5241 -14.2802 19.6969 -19.6714 -13.7328 19.1519 -18.9657 -13.7561 19.9801 -18.3075 -13.4732 20.1244 -19.2821 -12.6437 20.5001 -18.8632 -12.5161 20.4218 -19.8797 -11.7032 20.9481 -19.532 -10.8704 20.7421 -20.1724 -10.3795 20.0189 -20.0862 -10.8248 19.3661 -20.7747 -10.2347 18.6236 -20.3958 -9.40331 19.1192 -20.0863 -8.86563 19.9411 -20.1877 -8.88172 20.9413 -20.0059 -8.243 20.7562 -20.7465 -7.80643 19.8947 -20.5364 -8.23923 19.6364 -21.3819 -7.63805 18.965 -21.7959 -6.74786 18.9814 -21.4169 -6.41662 18.3899 -20.6693 -6.51645 17.5792 -21.2613 -5.94471 17.9433 -22.0252 -5.16815 17.4057 -22.4118 -4.93338 18.34 -22.8558 -5.59107 18.0366 -23.5864 -5.86867 17.0949 -23.8161 -5.49602 16.0959 -23.7815 -5.26456 15.6643 -22.8535 -4.79915 14.8121 -22.5953 -5.27807 15.3534 -21.93 -4.40891 15.7993 -22.0083 -4.27318 16.6612 -21.4284 -4.66208 16.0353 -20.755 -4.42349 15.6484 -19.8641 -5.03338 16.4016 -19.5376 -6.02724 16.0894 -19.2337 -6.09101 16.1327 -18.1992 -5.30528 16.0391 -17.5515 -5.32935 17.0038 -17.3556 -4.63675 17.7571 -17.1575 -3.76892 18.0335 -16.8583 -3.15662 17.4396 -16.2846 -2.9789 18.3341 -15.9575 -2.67547 18.7117 -16.9172 -3.00993 19.4997 -17.4155 -3.36451 20.4338 -16.9807 -3.62534 19.9611 -16.1279 -3.32957 20.6776 -15.564 -2.46079 21.1814 -15.7458 -2.03209 21.8759 -15.2188 -1.19695 21.8521 -14.7405 -0.560817 22.6699 -14.6862 -0.141169 23.2965 -15.3698 --0.188256 23.1787 -16.3455 -0.321665 23.5044 -17.1856 -0.746045 22.8207 -17.7158 -1.37788 22.1531 -17.3185 -1.84372 22.9842 -17.5454 -1.41344 23.3493 -16.6785 -1.55518 24.279 -16.3573 -1.42858 25.267 -16.5702 -1.44294 26.0978 -17.237 -0.573064 26.2886 -17.6566 -0.845541 25.9984 -18.4845 -0.654064 25.3078 -19.1028 -1.45756 25.4473 -19.6458 -1.84778 25.1991 -20.5169 -1.31549 24.293 -20.4925 -1.05049 23.4424 -20.038 -1.11965 23.4432 -19.0565 -0.206875 23.6857 -19.2664 --0.117766 24.4688 -19.7528 -0.05391727 25.0433 -20.4533 -0.01051257 24.5009 -21.3282 -0.571741 24.052 -21.9511 -1.53598 23.7635 -21.7367 -2.07681 23.7206 -22.5303 -2.42179 24.3425 -21.7963 -3.15967 23.9499 -21.2528 -3.76844 24.6376 -21.1725 -3.7064 25.0586 -20.2422 -3.85409 24.3941 -19.5048 -3.35314 23.6726 -19.9116 -2.87535 23.0967 -19.3109 -2.88062 22.0568 -19.1195 -3.67154 21.4955 -18.9368 -3.85968 21.706 -17.9899 -4.39 21.1729 -17.3281 -4.96026 20.3988 -17.6645 -5.494 19.7067 -17.1843 -5.76797 19.5865 -16.2124 -5.74006 18.8732 -15.5281 -5.054 18.2471 -15.1964 -5.7822 17.6227 -14.8907 -5.75198 17.8421 -13.9106 -5.39144 18.7358 -14.2006 -6.36382 19.0353 -14.0573 -5.64944 19.3795 -13.314 -6.22823 20.19 -13.4245 -6.73083 19.9162 -12.6005 -7.60979 19.7189 -12.9514 -7.88391 19.6625 -13.9516 -8.67744 20.3104 -13.7641 -8.72791 20.6557 -12.7844 -8.50114 21.0281 -11.8806 -7.9337 21.6515 -12.4461 -7.62764 22.5956 -12.1695 -6.74827 22.8687 -11.8329 -5.95212 23.4219 -11.7011 -6.67881 23.5156 -10.9349 -6.31494 23.0528 -10.1513 -5.53346 22.4241 -10.3884 -5.95613 21.862 -11.1008 -6.20965 21.6789 -12.0923 -6.65079 20.8476 -12.0588 -5.91666 20.6274 -11.4625 -5.26504 19.8216 -11.6441 -6.05097 19.3485 -12.1024 -6.83877 19.4783 -11.6079 -7.27441 18.9547 -10.8408 -6.89683 19.3561 -10.0877 -6.6556 20.2104 -10.5022 -5.90707 20.6628 -10.1306 -5.05625 20.7103 -9.72859 -5.31458 21.2766 -8.989 -4.66263 21.7812 -8.37282 -4.29321 20.8903 -8.69909 -3.46265 20.8539 -9.21665 -3.82882 19.9178 -9.39539 -4.08005 19.6659 -8.41598 -3.80246 18.7081 -8.74407 -3.88045 17.9479 -8.12136 -3.02581 18.2361 -7.63753 -3.14647 18.8868 -6.93194 -2.81188 19.6523 -7.53805 -1.79044 19.648 -7.54608 -1.37778 19.3149 -6.61703 -0.645455 19.2482 -7.26146 -0.592304 18.3995 -6.70043 -0.854256 18.7019 -5.83052 -0.891404 19.582 -5.42877 -1.09445 19.275 -4.5172 -1.50475 18.3719 -4.57627 -2.43207 18.7247 -4.4122 -2.71322 18.7888 -3.43824 -3.48124 18.2611 -3.95785 -2.9846 17.3948 -4.00337 -3.76583 16.804 -3.93487 -3.11237 16.1893 -3.45807 -2.13074 15.8949 -3.56521 -1.45509 15.2889 -3.27213 -1.58443 14.6107 -2.59288 -1.64869 14.8945 -1.61646 -0.951772 14.9845 -0.9528339 -1.32684 14.5565 -0.1561989 -1.62 13.6193 -0.3938899 -0.885968 12.921 -0.5149289 -1.25424 12.8348 0.3993221 -2.0439 12.3479 0.6504781 -2.21936 11.5269 0.09785092 -1.95808 10.5743 0.1906271 -1.7186 10.315 1.08706 -1.51795 9.35307 1.05931 -2.39794 9.34214 0.6322751 -3.18354 8.86587 1.04072 -4.02408 9.4348 1.07107 -4.90962 9.64208 1.55812 -4.80599 8.62645 1.65367 -4.15586 8.18657 2.27471 -4.10224 8.88304 2.97862 -3.39709 8.67072 3.69152 -2.50577 9.14585 3.43546 -2.1876 9.92792 2.84121 -2.81439 9.18167 2.41076 -2.33258 8.4889 2.01763 -1.69747 8.34599 2.76778 -0.654539 8.46318 2.60746 -0.08442597 7.67008 2.54188 --0.227728 7.14933 3.31389 --0.541569 6.31935 3.93167 -0.416 6.26939 4.03986 -1.08259 5.60174 4.35318 -0.951942 5.36666 3.4305 -1.53626 6.2032 3.31161 -1.667 7.0132 3.81567 -2.02707 7.5055 4.69835 -2.75021 8.056 4.8876 -2.802 9.02442 5.21735 -3.5701 9.4379 4.74466 -4.18961 9.29888 5.52626 -4.83387 9.85994 5.05007 -5.64085 10.4217 5.18971 -5.19528 10.9718 4.43747 -4.90551 10.9152 3.50258 -5.69702 10.2579 3.54314 -6.44433 10.8849 3.685 -6.81287 11.0511 4.56707 -7.77852 10.8081 4.79225 -7.95603 11.8021 4.79527 -8.63548 12.5386 4.76803 -8.57869 13.5564 4.71707 -7.65176 13.3643 4.3845 -7.93413 14.0158 3.57062 -7.19441 14.4023 3.10346 -6.91556 13.5009 2.78306 -6.5433 12.6028 2.99007 -5.75716 13.1909 2.9096 -5.0779 13.2893 2.09452 -4.6954 13.0921 3.04926 -4.7947 12.0972 3.16911 -5.74664 11.775 3.06696 -5.95922 11.3733 2.15595 -6.83792 10.8578 2.27601 -6.70782 10.1205 1.67241 -6.31252 9.27526 1.84543 -7.18423 8.98251 1.4777 -7.55446 8.29033 2.12255 -7.77537 7.57983 1.46305 -7.17956 7.5128 0.6328791 -6.24662 7.28719 0.2719401 -6.14074 6.47248 0.8404831 -5.3651 6.18267 0.3060021 -5.01046 6.92152 -0.3671499 -5.1457 7.81006 -0.8302409 -5.24953 7.64809 -1.79081 -4.79249 8.33963 -2.34034 -3.85427 8.18553 -2.14539 -4.13528 7.47473 -2.8255 -3.71816 6.67595 -3.1251 -3.44601 5.70117 -2.98438 -2.55118 6.02472 -2.93002 -2.16022 5.1266 -2.79723 -1.65473 4.31079 -2.99984 -0.952298 4.32211 -3.73708 -1.10694 3.43323 -3.35926 -0.919148 2.79079 -2.59664 -0.895758 1.79117 -2.45024 -1.55103 1.18479 -3.00102 -1.65527 2.08711 -3.48559 -1.86686 1.35166 -4.15246 -2.24996 0.4738339 -4.44401 -3.2099 0.4263879 -4.17739 -3.09158 0.6416359 -3.19053 -3.31057 1.42957 -3.69772 -4.27825 1.57069 -3.72168 -4.76124 1.10039 -2.94261 -5.68533 0.9280469 -3.19355 -5.51754 0.6143369 -2.15868 -4.94709 -0.1457431 -2.48033 -5.34326 -0.9856951 -2.37171 -5.88698 -0.3265351 -2.92082 -6.88688 -0.2646671 -3.12843 -6.84909 0.1637029 -2.26793 -7.48089 0.8234289 -2.63858 -8.01754 0.7140899 -1.84588 -8.07627 -0.2286211 -2.14237 -8.99982 0.04032343 -2.28034 -9.5303 -0.2184261 -3.11048 -8.84763 0.1277359 -3.80683 -7.8689 -0.1145761 -3.68075 -7.46557 0.3639299 -4.45536 -7.23782 1.00016 -5.22196 -7.20684 1.27098 -6.2458 -6.9153 2.24178 -6.0273 -6.15095 2.66566 -5.5281 -5.76981 1.85894 -5.85545 -5.53723 0.9454399 -5.49545 -5.89675 0.04483163 -5.25886 -5.2333 -0.09671177 -4.57217 -4.30388 -0.4705511 -4.40377 -4.38709 -1.00874 -5.21655 -4.51831 -0.5036551 -6.09942 -5.30486 -0.4877161 -6.6872 -6.13156 -0.2428091 -7.2215 -5.49906 -0.1429751 -7.96717 -4.8696 0.4305229 -8.2777 -4.82552 0.7992859 -9.14691 -4.92249 -0.09510617 -9.50695 -4.89369 -0.8720761 -8.85379 -5.34385 -1.4783 -9.5634 -4.8405 -1.17661 -10.3149 -4.88758 -2.15072 -10.5509 -5.8648 -2.35001 -10.5337 -5.88182 -3.12438 -10.0125 -6.61139 -3.07611 -10.6508 -6.8454 -3.94101 -10.1227 -7.7558 -3.77513 -9.69397 -8.68906 -3.9265 -9.50442 -8.73871 -4.45992 -10.4687 -8.79941 -3.60591 -10.9406 -8.10118 -3.83364 -11.6566 -7.71312 -2.97105 -11.2388 -7.26159 -2.07927 -11.4036 -6.97517 -1.61405 -10.5243 -7.88715 -1.97336 -10.3375 -8.32617 -2.89637 -10.2076 -7.43229 -2.7135 -9.72086 -7.29808 -3.08778 -8.76196 -7.82312 -2.29773 -8.57598 -7.00171 -1.85823 -8.44054 -7.26798 -1.81398 -7.47943 -7.5278 -2.74765 -7.15185 -8.52128 -2.76249 -7.17276 -8.93552 -3.48196 -6.64374 -9.07628 -4.45721 -6.66617 -9.54629 -4.91922 -7.41455 -10.1863 -4.92676 -8.1541 -9.65072 -5.07367 -8.93539 -10.0946 -4.93796 -9.81764 -10.852 -5.10831 -10.3887 -11.3168 -5.143 -9.54204 -11.6904 -4.96743 -8.63611 -11.9692 -5.20455 -7.69742 -12.2347 -4.98208 -6.75712 -11.7726 -4.17082 -7.12492 -11.7852 -4.04263 -8.09618 -11.3421 -3.26238 -8.57889 -11.5526 -2.49991 -7.9305 -10.6303 -2.05097 -7.94726 -9.71913 -1.69367 -8.11673 -9.08142 -1.11233 -7.61325 -8.56168 -1.68283 -6.97608 -7.80783 -1.09361 -6.76068 -8.54019 -0.5741641 -6.24067 -7.88821 -0.5239801 -5.5626 -8.43972 -1.37309 -5.32304 -8.41697 -2.40025 -5.46315 -7.79576 -2.66886 -4.67859 -8.37409 -3.44011 -4.32953 -8.67375 -3.05074 -3.46673 -8.75561 -2.22406 -2.91737 -7.99409 -1.63134 -2.70518 -8.29951 -1.33204 -1.77029 -9.10623 -1.87153 -1.45014 -8.66137 -1.99203 -0.5798359 -7.8042 -1.98493 -0.00531491 -7.58623 -1.10391 0.2153101 -6.71213 -0.9626921 0.6542721 -5.85165 -0.7189571 0.3044311 -5.55481 0.2336329 0.4656441 -5.19511 -0.002183446 -0.4153459 -4.29749 -0.005612676 -0.6659069 -4.49923 0.8848189 -0.2600919 -4.05102 1.11193 0.6023751 -3.54759 1.91897 0.7410661 -3.24482 1.90805 -0.2178339 -3.28843 1.16174 -0.9239759 -2.673 1.06579 -1.75853 -2.27938 0.3460909 -2.4053 -1.54216 0.08139473 -2.94996 -0.759619 0.2813749 -3.41022 -0.349188 1.16093 -3.29073 --0.197341 1.9922 -2.9163 --0.03381033 2.24399 -3.90572 -0.337535 3.01872 -4.46583 -0.774967 2.1179 -4.67321 -1.53706 2.63071 -5.11117 -1.83829 2.75522 -6.00504 -2.10855 1.76024 -6.13832 -3.01693 1.25743 -5.92352 -3.49698 2.07965 -5.61811 -3.96316 2.8592 -5.93829 -3.18467 2.58456 -6.60121 -2.58953 2.99027 -7.35475 -1.75606 3.3361 -7.72921 -2.31022 3.88336 -8.36488 -3.23011 3.6719 -8.42759 -3.47343 4.03569 -9.30507 -4.31799 4.26483 -8.76563 -5.30446 4.5102 -8.93585 -4.67806 5.12625 -9.29008 -4.71035 5.98155 -9.77667 -4.38273 6.93262 -10.0245 -5.29211 7.10436 -9.65067 -5.83922 7.90719 -9.67116 -6.43934 7.93731 -8.90773 -6.60915 8.71005 -9.53695 -7.33684 8.24717 -9.08791 -8.0079 8.70544 -9.40513 -8.8842 8.80871 -9.01643 -8.98029 7.83926 -9.20302 -8.7551 7.49946 -10.081 -8.00299 7.08156 -10.486 -7.28733 6.54179 -10.5819 -7.90416 5.72518 -10.7006 -7.47038 5.19312 -9.89793 -6.89924 5.37595 -10.7135 -6.20234 5.8157 -10.1612 -5.80241 4.8765 -10.2193 -4.88319 4.44226 -10.2773 -4.84625 5.05851 -11.0642 -3.95532 4.86805 -11.4507 -3.81276 4.17551 -10.8602 -4.17622 3.734 -11.6713 -3.17798 3.73189 -11.4819 -2.42231 4.14459 -10.8982 -1.90006 3.32859 -11.0177 -1.94188 3.36516 -10.0579 -1.13746 3.555 -9.55343 -0.656733 4.42048 -9.59994 -0.619125 5.31447 -9.98426 --0.287836 5.6256 -10.0207 --0.609718 6.40964 -10.4354 --0.584707 6.8216 -11.4066 -0.231641 6.97244 -11.9542 -0.328976 6.0063 -11.6648 --0.187154 5.12829 -11.6506 -0.338835 4.49639 -12.1384 -0.09657407 4.00266 -12.9278 -0.06612577 4.96236 -13.1562 --0.03349733 5.9666 -13.4004 -0.757068 6.32397 -13.8734 -0.99379 6.08001 -14.7789 -1.30503 5.28701 -15.2819 -0.86111 5.47528 -16.2655 -1.61666 6.11645 -15.8828 -0.811005 6.73492 -15.7847 -0.434271 7.69167 -15.6162 -0.658912 8.28428 -16.3708 -0.855978 9.03863 -15.7719 -1.61618 8.47162 -15.415 -2.13222 8.67324 -16.2198 -1.95677 8.01604 -17.0086 -1.41899 7.21073 -17.3346 -1.023 6.32948 -16.9838 -0.06145117 6.49555 -17.2024 --0.700607 6.10275 -17.7159 --1.05736 6.89338 -17.1548 --0.78377 7.16637 -16.2177 --1.74816 7.48778 -15.9623 --1.35439 8.02833 -15.1803 --1.23836 7.26591 -14.5295 --0.649503 6.52445 -14.8793 --0.1694 6.93929 -14.1362 -0.179076 7.81295 -14.4356 -0.188028 8.26269 -13.5308 -0.958948 8.71342 -13.0438 -1.85462 8.73557 -12.4983 -2.37915 9.06051 -11.7336 -2.5249 8.11289 -11.6623 -1.90927 7.5715 -11.0405 -0.932609 7.50928 -11.0003 -1.35102 7.10127 -10.1336 -2.35135 7.03283 -9.76803 -2.99695 6.96305 -9.07578 -2.93644 6.853 -8.10957 -2.74649 5.95463 -7.80327 -1.9903 6.59412 -7.42124 -1.7039 7.51101 -6.96787 -2.42169 8.093 -7.45374 -1.55061 8.56567 -7.7118 -0.779266 9.24653 -7.38535 -1.6028 9.88465 -7.38316 -1.89392 10.816 -7.10994 -1.02605 11.198 -7.33277 -1.45378 12.0139 -6.85985 -2.30769 12.4457 -7.11159 -2.0894 12.372 -8.13102 -2.54897 11.4674 -8.07754 -3.35926 10.9968 -8.45709 -3.58128 10.4314 -7.64082 -3.45768 9.73684 -8.38663 -4.38521 9.46595 -8.74776 -3.98568 9.40789 -9.69891 -4.28468 8.49673 -10.0534 -3.42832 8.68964 -10.5774 -3.9304 8.76364 -11.5382 -4.88788 8.78093 -11.2201 -5.2239 9.73519 -11.4177 -6.17893 9.43923 -11.5537 -6.00255 9.5609 -10.5418 -6.58128 10.3877 -10.6615 -6.05828 10.8839 -9.96707 -5.14855 10.705 -9.62396 -4.97676 10.5826 -10.5597 -4.47212 10.7957 -11.4218 -3.87246 11.4344 -11.8945 -4.17115 11.9543 -12.7019 -4.55945 11.0248 -12.9768 -5.43075 10.5605 -13.0526 -5.99136 10.8518 -12.3176 -6.58355 10.8837 -11.5214 -7.5595 10.6527 -11.3188 -7.23579 9.70395 -11.4157 -7.36942 9.73835 -10.44 -7.74141 9.68374 -9.52468 -7.78561 9.30742 -8.61714 -7.02795 9.90257 -8.42865 -7.5307 10.7497 -8.49515 -8.23009 10.332 -7.94386 -7.92502 10.741 -7.148 -8.8224 11.1928 -7.30666 -8.92981 10.5177 -6.61952 -8.54058 9.57255 -6.57997 -8.3421 9.15019 -5.70305 -7.63769 8.40928 -5.91253 -7.67456 8.87504 -6.81202 -8.48926 8.60449 -7.25146 -9.09994 9.36603 -7.37517 -9.80505 10.0311 -7.63928 -9.77764 10.4678 -8.55063 -9.83152 9.65675 -9.10794 -10.1016 10.2551 -9.80868 -10.5853 10.9422 -10.3831 -10.0013 10.6862 -11.1743 -10.047 11.5299 -11.5862 -9.09935 11.8939 -11.3745 -8.60599 12.1065 -12.246 -8.74817 11.1658 -12.6504 -9.55737 10.6668 -13.0164 -9.52769 11.2361 -13.8118 -10.3679 11.7337 -14.104 -10.9107 12.362 -13.666 -10.1379 12.7225 -14.1924 -11.0001 12.9842 -14.6521 -10.802 13.3479 -15.593 -10.3177 13.6335 -16.4352 -10.3075 13.2701 -17.3918 -9.30577 13.1588 -17.1409 -8.62053 13.8057 -17.6621 -7.89195 13.955 -17.0089 -7.5903 13.8624 -16.0474 -7.97996 14.7862 -15.8238 -7.46762 15.5407 -15.2879 -6.93009 16.3091 -15.5972 -7.24752 17.2725 -15.8193 -7.84535 18.114 -15.744 -8.81832 17.934 -16.0691 -9.75112 17.6432 -16.3895 -10.3798 16.8611 -16.1703 -10.7649 17.0096 -15.213 -11.2693 17.4792 -14.4558 -10.5392 17.9263 -14.8395 -9.77967 17.3908 -14.4724 -10.0343 16.8941 -13.6641 -10.9257 16.4499 -13.4883 -11.7741 15.881 -13.4694 -11.469 15.1648 -12.9408 -11.2022 14.3444 -13.3204 -11.9981 13.9564 -12.8762 -11.5684 13.7386 -11.9888 -10.7882 13.2865 -11.5902 -10.1997 13.575 -10.7992 -10.0661 14.3244 -11.3931 -9.22491 14.8776 -11.3663 -8.54596 14.9183 -10.6332 -8.60233 15.9071 -10.5789 -8.9268 16.8174 -10.9441 -8.07397 17.3834 -10.9989 -7.99375 17.4729 -12.0146 -7.99724 17.1942 -12.9784 -8.14918 16.3219 -13.4437 -7.84671 17.1141 -14.0508 -8.5959 16.8183 -14.6394 -8.64823 16.0972 -15.4077 -9.48286 15.575 -15.3852 -9.73747 14.7597 -14.7705 -9.25295 15.2857 -13.9637 -9.30261 14.9735 -13.0593 -8.57223 14.4008 -12.7355 -8.52941 13.3995 -12.9339 -8.07124 12.64 -13.3493 -7.54558 12.6824 -12.5528 -6.96393 13.169 -13.2407 -5.96161 12.9301 -13.3957 -5.12407 12.5838 -13.9002 -5.29018 12.517 -14.8868 -5.28793 11.6615 -15.0939 -4.24418 11.583 -14.9953 -3.51386 12.1287 -15.4354 -2.68599 11.5756 -15.2638 -2.77677 10.5592 -15.4833 -1.84928 10.4778 -14.9573 -1.2908 11.2879 -15.3071 -0.828311 10.5328 -15.727 -1.04976 10.0612 -16.5972 -1.28438 9.71185 -17.5674 -1.47065 10.7409 -17.4607 -2.15159 11.2842 -17.0167 -1.58909 12.097 -17.3 -1.07041 12.5946 -17.9757 -1.40124 12.2118 -18.7818 -1.51308 13.031 -19.3027 -0.548325 13.4575 -19.0612 -0.498589 13.4181 -20.0585 --0.08546563 13.0443 -20.8336 -0.90592 13.1584 -21.0872 -1.5457 13.9773 -21.2396 -2.053 13.6163 -22.0314 -2.94469 13.4048 -21.7845 -3.82507 13.5391 -21.4391 -4.6675 13.5757 -20.8088 -5.28976 13.6518 -19.9632 -4.37448 13.8287 -19.7599 -3.47705 13.6734 -19.4767 -3.53866 14.0334 -18.5955 -3.58654 14.6422 -17.7203 -4.34194 15.2529 -17.9563 -4.35289 15.2352 -16.9354 -4.03234 16.1352 -17.222 -4.01188 16.4518 -18.1778 -4.29335 17.3315 -18.6057 -3.85425 17.9268 -19.2735 -3.05045 18.4873 -19.2307 -2.77106 19.4118 -19.582 -2.94538 20.3354 -19.5031 -3.95129 20.3243 -19.5906 -4.58481 21.0101 -19.4539 -4.94679 20.8551 -20.3946 -4.50496 21.0365 -21.3168 -4.2565 20.6759 -22.3048 -4.01741 20.718 -23.2785 -4.76423 20.0858 -23.1 -5.43954 19.7351 -22.3863 -5.92696 20.1675 -23.1338 -5.99117 20.7837 -23.8625 -6.20596 21.5713 -23.2681 -6.5446 21.5381 -22.3289 -6.56435 22.5253 -22.0956 -6.26677 23.4417 -22.1202 -5.31612 23.4815 -22.4739 -4.69017 23.0301 -21.8752 -4.51015 22.5944 -22.7515 -4.60147 23.4507 -23.2148 -4.13097 24.0866 -23.794 -4.16381 25.0505 -23.5322 -4.91348 25.5412 -23.0056 -5.76132 25.4173 -23.4109 -6.6229 25.0838 -23.7543 -7.41578 24.5992 -23.524 -7.82011 23.714 -23.8135 -8.7246 23.3728 -23.9528 -8.59831 23.4553 -24.9985 -8.64676 22.5837 -25.5633 -8.35887 21.8693 -26.2537 -8.87107 22.0803 -27.1551 -9.09536 22.9523 -27.5108 -9.9562 23.4596 -27.2591 -9.83956 23.2209 -26.2944 -10.1607 23.0167 -25.2719 -9.88422 22.0372 -25.0978 -10.8574 21.666 -25.2671 -10.6573 20.7534 -24.916 -10.057 20.1339 -24.6049 -9.46292 19.3335 -24.3423 -9.30309 18.4422 -23.9435 -8.35456 18.5114 -23.5836 -8.20621 17.5116 -23.5926 -7.20986 17.3147 -23.512 -7.43438 16.7089 -22.725 -7.31946 16.0691 -23.4464 -7.89939 15.6615 -22.7273 -7.0066 15.458 -22.2372 -6.37657 14.9095 -22.8809 -7.23451 14.4226 -23.263 -6.37172 13.8994 -23.4023 -6.0981 13.0289 -23.1061 -5.71534 12.0548 -22.9809 -5.92871 11.4389 -22.2783 -5.82385 10.6797 -22.9282 -6.71269 10.5322 -22.5071 -7.70384 10.6801 -22.44 -7.89709 11.5951 -22.1002 -8.48712 12.4175 -22.0246 -9.24817 11.7249 -22.0379 -10.0897 11.5717 -22.4013 -10.8423 11.6425 -23.1309 -11.2173 12.2767 -22.5043 -11.0994 13.2326 -22.0771 -11.9754 13.5017 -21.8751 -12.3051 13.6429 -22.7634 -12.5247 13.668 -23.7787 -11.6207 13.3073 -23.8187 -11.992 13.6182 -24.6634 -12.7494 12.9374 -24.7602 -12.9194 13.0428 -25.7368 -13.4257 13.3713 -26.5496 -12.9321 13.9306 -27.2467 -13.723 14.2891 -27.8044 -14.6737 14.0669 -27.8233 -15.6031 14.3946 -27.6344 -15.2624 15.2568 -27.2553 -14.4436 15.7318 -26.9165 -13.8363 16.5131 -26.9391 -13.547 15.8052 -27.5502 -12.7789 16.3432 -27.8024 -12.266 16.632 -28.5855 -12.1587 17.3011 -27.8774 -13.0983 17.4977 -27.4851 -12.2995 17.4476 -26.8099 -11.7723 18.3075 -26.5215 -12.0036 19.1842 -26.0636 -11.152 19.6419 -25.6712 -10.4282 19.0769 -25.1688 -10.5257 18.2333 -24.6129 -10.719 17.6382 -23.7745 -10.0268 17.0332 -23.4161 -9.75422 16.2915 -24.0969 -10.1127 15.4789 -24.639 -10.2261 16.4171 -25.0867 -10.507 16.5046 -26.0434 -9.49607 16.7618 -26.095 -8.60391 16.7897 -25.6216 -8.39089 17.6024 -26.2816 -8.11573 17.7143 -27.255 -8.46906 17.0114 -27.8981 -8.61437 16.0536 -27.65 -8.87218 15.3196 -27.0138 -9.56094 14.6607 -27.3862 -9.12087 14.6414 -28.3038 -9.83778 15.2996 -28.4904 -8.89309 15.5258 -28.8489 -8.6687 14.9618 -29.7077 -7.84604 14.771 -30.2475 -8.48955 15.1097 -30.8893 -9.41758 14.7286 -30.7101 -8.85631 13.9234 -30.5271 -8.73094 13.5797 -31.4498 -9.08208 14.3495 -32.0321 -8.15684 14.7099 -32.1699 -7.33218 15.2801 -32.2498 -6.86531 16.0683 -32.59 -6.25186 15.4094 -32.1771 -6.19694 14.8124 -31.3885 -5.26713 14.9274 -31.357 -5.49612 14.042 -31.6144 -5.73309 13.5221 -30.8426 -4.77544 13.6122 -30.7904 -5.00053 12.6801 -31.1506 -5.58499 12.0327 -30.6133 -5.56724 12.8178 -30.0181 -6.26415 12.5016 -29.3831 -6.56597 11.6372 -29.0648 -7.06728 10.7659 -28.8874 -7.35521 10.0485 -28.2537 -7.75104 10.8911 -27.9957 -8.11352 11.2205 -27.0836 -8.38116 11.8367 -26.2419 -8.30772 11.2839 -25.432 -7.9699 11.8281 -24.6862 -7.62832 12.5694 -25.3033 -8.28467 13.3328 -25.3644 -8.9469 12.832 -24.7957 -8.53599 13.6648 -24.4811 -7.89569 14.4741 -24.4268 -7.00245 14.287 -24.836 -7.38435 15.1218 -25.1861 -7.94476 14.9936 -26.0176 -7.46389 14.6645 -26.8922 -6.61165 14.7375 -26.438 -5.61521 14.9305 -26.3091 -5.43048 14.7961 -25.3318 -4.74577 14.5239 -24.6567 -4.28644 14.6483 -23.7066 -4.4439 15.5932 -23.8665 -3.57722 15.2685 -24.2972 -2.95063 16.0257 -24.044 -1.96792 15.5847 -24.0343 -2.27712 15.7473 -23.0651 -2.4841 14.9922 -22.4372 -1.70225 15.1233 -21.875 -1.07691 15.0535 -21.0192 -0.09644807 15.3096 -21.0794 --0.733231 15.6413 -21.4898 --0.720415 15.1305 -22.3868 --1.13715 14.3067 -22.5707 --1.82767 13.5649 -22.6914 --1.33674 12.8586 -22.0684 --1.41134 12.2838 -21.2633 --2.1093 13.0274 -21.2717 --2.81425 12.257 -21.3232 --2.21706 11.5358 -20.9728 --2.86553 10.7144 -20.7569 --2.57811 9.89991 -21.2527 --2.02811 9.16619 -21.6167 --1.57861 8.52641 -22.2349 --1.39725 7.62037 -22.0322 --1.66046 7.22913 -22.8057 --1.26139 6.43844 -22.2386 --0.562543 6.37902 -21.5833 -0.202175 5.73179 -21.4508 -0.596481 5.84785 -22.3437 -0.253638 4.93769 -22.3335 --0.322354 4.74537 -23.1366 --0.668785 5.59046 -23.5397 --0.864057 5.85892 -24.4913 --0.847647 6.79761 -24.1304 --0.02430513 7.2697 -24.4141 -0.321397 7.22273 -25.3252 -0.274638 8.14565 -25.1189 -0.498555 9.15905 -25.0549 -0.06200237 8.88748 -24.1675 --0.119745 9.42912 -23.3893 -0.586874 9.95161 -22.9754 -1.44577 9.47078 -23.2085 -1.73965 8.62523 -23.6555 -1.266 8.20547 -24.4473 -1.45464 8.12637 -25.4299 -2.37393 8.01676 -24.9298 -2.93928 8.14052 -25.8021 -3.39689 9.01908 -25.5389 -4.41748 9.32078 -25.4499 -4.1681 10.0953 -25.8541 -3.98808 9.907 -26.8871 -4.96716 9.80165 -26.6031 -5.5036 10.3868 -25.9266 -5.91669 9.94512 -25.1816 -6.3735 9.25208 -24.6557 -5.69326 8.56234 -24.9 -4.72339 8.16983 -25.1234 -4.68593 8.8911 -24.4501 -3.85962 8.91633 -23.8216 -4.06727 8.28685 -23.0469 -4.16359 7.81281 -22.1381 -3.69914 7.08742 -21.5805 -2.94419 7.81493 -21.5168 -3.24435 8.74416 -21.9039 -2.6651 9.4043 -21.4385 -3.38777 10.0708 -21.5655 -2.9469 10.1818 -22.49 -3.17354 11.1537 -22.7959 -2.6618 11.6558 -22.1693 -2.40057 12.5706 -22.4076 -2.36448 12.6183 -23.4222 -3.14115 12.7003 -24.1049 -2.547 13.0741 -24.8587 -2.22456 13.217 -25.8025 -2.9689 13.8823 -25.6261 -2.77274 13.8094 -26.5774 -2.27817 13.4654 -27.3234 -1.77934 14.2602 -27.5964 -1.23405 14.8133 -26.9392 -0.496968 14.4879 -26.4377 --0.363298 14.5724 -26.9386 --0.512952 14.2118 -25.9421 --0.464064 13.3102 -26.26 --0.275882 13.205 -27.2543 --0.474141 13.3016 -28.1787 --0.666924 12.4098 -28.6512 --0.251921 12.0203 -29.4561 -0.457849 12.3226 -30.017 -1.1033 12.9191 -29.4608 -1.47471 13.2516 -28.5365 -1.07146 12.3524 -28.3201 -0.862399 11.5738 -27.7316 -1.57227 11.1073 -28.1445 -1.38506 10.1181 -28.5049 -0.456869 10.3102 -28.8431 --0.180783 10.4964 -29.5699 --1.04975 10.8413 -29.8611 --1.20452 9.89283 -29.628 --0.610685 9.34939 -28.9545 --1.2939 8.60294 -29.0802 --1.58257 7.62711 -29.3108 --2.11389 6.80211 -29.298 --1.73863 6.40596 -28.5621 --1.08752 6.49498 -27.7211 --0.638398 6.99597 -28.4876 -0.139514 7.00357 -27.8758 --0.182316 6.98504 -26.9746 --0.504715 7.37143 -26.1426 --1.54012 7.38314 -26.1947 --1.27205 6.60897 -25.6089 --1.96689 5.92514 -25.8999 --2.92518 5.9955 -26.2474 --2.51807 5.15759 -26.7189 --1.69496 4.92089 -26.237 --0.75054 5.20475 -26.1479 --0.04206013 5.79252 -26.5827 -0.486676 5.34271 -27.3562 -0.457965 4.55144 -26.7366 -1.26019 4.32844 -26.1072 -1.5751 5.21144 -25.7236 -2.33333 4.59717 -25.6174 -3.08038 4.17469 -25.0865 -2.60192 3.26019 -25.1243 -1.80879 3.87596 -24.8281 -2.28052 4.14247 -23.9347 -1.44241 3.63445 -23.6134 -1.70121 2.97154 -24.2892 -1.57373 1.98864 -24.5021 -1.49176 1.32533 -23.7612 -1.87967 2.04174 -23.172 -1.10915 2.58719 -23.4601 -0.660191 2.48196 -24.2808 -0.260046 2.06013 -25.0487 -0.681871 1.19137 -24.8379 -0.690071 0.2308509 -24.6167 --0.295743 0.06971143 -24.7824 --1.02188 -0.5675341 -24.854 --1.89648 -0.3650211 -24.3588 --1.45275 -0.1866831 -23.4678 --2.32084 0.07638903 -23.0907 --3.04749 0.6637529 -23.4406 --2.83756 0.8626429 -24.3293 --2.52692 0.4994849 -25.1703 --2.11826 1.2465 -25.84 --2.66226 1.32804 -26.7376 --1.62177 1.50977 -26.8275 --2.06532 1.87099 -27.5785 --2.65389 2.62856 -27.9507 --3.17346 3.31774 -27.4493 --2.70659 3.30593 -26.6187 --1.75585 3.68524 -26.5196 --1.48473 3.89647 -27.4023 --1.50865 3.54234 -28.3315 --0.83841 4.2299 -28.1574 --0.195271 3.52685 -28.333 --0.347874 3.3257 -27.3521 -0.03752477 2.46241 -26.9985 --0.355533 2.89389 -26.1709 --0.541212 1.96064 -25.8916 --0.627705 1.06694 -26.297 -0.336015 1.00327 -26.1882 -0.483003 0.09598443 -26.6128 -0.953445 -0.3320401 -25.8554 -0.880512 -1.30013 -25.9608 -1.69026 -1.84558 -26.386 -2.1436 -1.3634 -27.1329 -2.58451 -0.4721361 -27.1932 -1.94559 0.2900209 -27.4331 -2.11676 0.2778369 -26.4582 -2.17265 1.10497 -25.8207 -2.41515 1.29299 -24.7918 -3.26399 1.63506 -25.2027 -4.04534 1.32381 -24.5676 -4.50759 1.75062 -25.3541 -5.45263 2.13623 -25.2163 -5.02143 1.77245 -24.4146 -4.54651 2.32093 -23.7683 -3.64779 2.27721 -23.2838 -3.30195 1.29669 -23.3682 -2.88554 1.62947 -22.5125 -2.39212 2.14777 -21.9007 -3.23506 1.79184 -21.5294 -3.96825 2.23368 -21.8808 -4.6935 2.77618 -21.4558 -3.85267 3.29046 -21.7327 -3.62423 4.11607 -21.181 -4.10069 4.48167 -21.8825 -4.02574 5.44243 -22.0872 -5.02479 5.4745 -21.8984 -5.06615 5.56161 -22.8633 -5.50404 5.72501 -23.7668 -5.19181 5.93726 -24.7095 -4.85967 6.73875 -25.2497 -5.44458 6.93111 -26.0508 -4.78267 7.50633 -26.5919 -5.39195 7.70489 -27.3971 -6.30512 8.07784 -27.4475 -6.41118 7.81229 -26.42 -7.42512 7.70375 -26.4825 -7.51997 7.00883 -27.1491 -6.50293 6.93954 -27.2773 -5.53186 6.67179 -27.3194 -4.61153 6.20233 -27.4077 -3.70473 6.46937 -27.4582 -3.61698 7.32764 -28.0168 -2.64637 7.34907 -28.0805 -3.15201 7.4357 -28.9259 -2.56851 8.11354 -29.2642 -2.74158 8.22069 -30.2226 -2.96909 9.12645 -30.6927 -2.12471 9.22052 -30.282 -2.6632 10.075 -30.4533 -1.75169 10.1768 -30.7839 -1.54752 10.3676 -31.7986 -1.41242 11.3029 -32.177 -1.26459 11.8236 -32.9821 -0.34625 11.3633 -33.2473 -0.79724 11.0696 -34.032 -1.16116 11.4593 -34.9463 -1.17338 10.495 -35.139 -1.15969 9.65741 -35.7826 -2.08266 9.23938 -35.9002 -1.39078 8.54525 -35.7083 -0.727717 8.12311 -36.4127 -1.03108 7.51203 -35.6294 -1.30356 7.68455 -34.6568 -0.526146 7.0338 -34.7225 --0.106267 7.01043 -35.5228 --1.01403 6.65131 -35.6196 --1.87125 6.05959 -35.2991 --2.75286 5.89026 -35.7365 --2.57152 5.10837 -36.325 --2.95822 5.73858 -36.9589 --2.70093 4.70501 -37.1881 --2.50787 3.90194 -37.6649 --1.73026 3.29898 -37.6995 --1.48602 2.3891 -37.4237 --1.11411 2.03336 -38.2725 --1.53538 1.33428 -37.678 --0.758705 0.7834149 -37.8693 --0.883573 -0.1796411 -37.6088 --0.822324 -0.9170261 -36.9048 --0.974774 -1.21884 -35.9834 --1.60022 -0.4586911 -35.8389 --2.15423 -0.01821237 -35.1277 --2.12328 0.6581569 -34.3711 --3.16219 0.4695209 -34.1581 --2.90418 0.7912099 -33.2611 --3.12009 0.9217569 -32.2637 --3.09079 0.3767469 -31.3868 --3.40773 -0.5882951 -31.3802 --3.93796 -1.17872 -30.8289 --4.27653 -2.09142 -31.105 --3.46767 -2.3701 -31.6403 --2.5374 -1.99335 -31.9047 --2.69282 -1.17938 -32.5982 --2.06036 -0.5040521 -32.1974 --2.25199 -0.9130841 -31.3756 --1.95468 -0.9117171 -30.4306 --1.25861 -0.8059151 -29.6381 --0.884026 -0.1383871 -30.1998 --0.829636 0.8717129 -30.3735 --0.683854 1.55241 -29.711 --0.89942 2.42393 -29.3075 --0.660548 3.18659 -30.0011 --1.03523 3.74571 -30.8375 --1.81472 4.47271 -30.8498 --2.43476 3.69744 -31.0359 --3.33622 3.99324 -31.195 --2.99377 4.06997 -30.1796 --3.2984 5.00024 -30.2549 --3.12683 5.50868 -31.0984 --3.94652 6.10862 -30.9631 --4.57055 6.29754 -31.645 --4.24199 6.47066 -32.6092 --3.81558 5.91432 -33.3063 --3.36321 5.1061 -33.608 --2.46619 4.69947 -33.4626 --2.41413 4.58468 -34.4666 --1.93465 4.30442 -35.3095 --0.98336 4.15961 -34.9843 --0.06264113 4.40953 -34.6059 -0.604476 5.07033 -34.1369 -1.17856 4.64837 -33.4499 -1.35327 5.16973 -32.6481 -1.27782 4.57482 -31.8517 -1.68134 3.72528 -32.282 -2.50222 3.98682 -32.8362 -3.15798 3.22812 -32.8886 -3.85244 2.5266 -32.7983 -4.70164 2.68842 -33.0493 -5.61528 2.14801 -32.8711 -5.13755 1.60358 -33.6062 -4.84087 0.6499299 -33.7255 -3.86525 0.8590189 -33.5494 -3.78329 0.1748419 -32.9641 -3.47829 -0.5544681 -32.3202 -2.4846 -0.6331381 -32.3642 -2.47783 0.2608479 -32.0498 -3.21521 -0.01617147 -31.4217 -2.64331 -0.8255491 -31.0781 -3.26743 -0.6183491 -30.3185 -3.28219 -1.54696 -29.8601 -3.39081 -2.21722 -30.6384 -2.81375 -2.88647 -31.1132 -2.97762 -3.80137 -31.4792 -2.9151 -4.29679 -30.5622 -3.51634 -5.05018 -30.1898 -4.09451 -5.73684 -30.6425 -4.59109 -5.31731 -31.3582 -5.12317 -4.78977 -32.0186 -5.85032 -4.17073 -32.4552 -6.44168 -3.66102 -31.7853 -7.06181 -3.99714 -31.0713 -7.36353 -4.62473 -30.4018 -6.48066 -4.50012 -29.8791 -5.80303 -3.87234 -30.3481 -5.02893 -3.29468 -30.0103 -4.20107 -2.81206 -30.3194 -4.45602 -1.86615 -30.5768 -5.31821 -1.77449 -30.0135 -6.01144 -2.00241 -29.4308 -6.89167 -1.84161 -28.9878 -6.51989 -2.72947 -28.6871 -5.46667 -2.85478 -28.7089 -4.45556 -2.90291 -28.984 -3.85481 -2.99724 -28.2643 -3.66499 -3.86054 -27.8495 -2.82595 -4.34658 -27.6786 -2.4863 -3.93625 -26.7791 -2.21836 -3.22864 -26.1083 -1.40158 -3.06909 -25.6212 -0.903 -3.73141 -25.1079 -1.22634 -4.60132 -24.8272 -0.653023 -5.44234 -24.6618 --0.160986 -4.8231 -24.7918 --0.269395 -5.6949 -25.3363 -0.05704117 -6.58186 -25.4477 --0.159136 -6.49993 -24.4095 --0.857729 -6.10781 -23.8237 --1.15283 -5.23618 -23.3877 --0.780518 -5.38756 -22.4579 --1.70578 -5.38417 -22.2105 --1.9488 -4.50747 -22.5537 --2.91028 -4.63027 -22.5912 --3.01728 -4.88446 -21.6688 --2.75684 -5.3687 -20.8015 --2.54435 -5.81506 -21.6175 --1.89145 -6.5447 -21.591 --2.08829 -6.66567 -20.5803 --1.81574 -5.79628 -20.0219 --1.82102 -5.42378 -19.0604 --1.2689 -5.60858 -18.1634 --0.770561 -6.02679 -18.8785 --0.289029 -5.60646 -19.6353 -0.514337 -4.90788 -19.4129 -0.37276 -5.39792 -18.5328 -0.66816 -6.10188 -19.1778 -0.272598 -6.73431 -19.8238 --0.719039 -6.76961 -19.6878 --0.897399 -7.4579 -18.9959 --1.00272 -7.59598 -18.0128 --1.27954 -6.95171 -17.3999 --2.20022 -7.0167 -17.3897 --3.05787 -7.07177 -16.8432 --4.04502 -7.00159 -17.1699 --4.26571 -7.04744 -18.1258 --4.96733 -7.17055 -18.8142 --5.20161 -6.17335 -18.8211 --5.55296 -5.57061 -18.1452 --6.4346 -5.43705 -17.7595 --7.2455 -5.06905 -17.1775 --8.25983 -5.21312 -17.1249 --9.03118 -5.88105 -17.3461 --9.92562 -6.2324 -17.1682 --9.35198 -6.40303 -16.2836 --8.74679 -7.15155 -16.075 --7.94706 -7.15133 -15.5283 --6.96755 -7.36058 -15.4116 --6.58298 -6.44889 -15.5987 --6.76711 -6.66821 -14.6172 --7.60109 -6.641 -14.0067 --8.17761 -7.08727 -13.3328 --9.17093 -7.3539 -13.2646 --8.78032 -7.68504 -12.4857 --8.7577 -8.02221 -11.5458 --8.4713 -8.85108 -11.0294 --7.67461 -8.32841 -11.0302 --6.81236 -8.10652 -10.606 --6.25315 -7.34857 -10.2678 --5.99834 -6.97755 -11.136 --5.1091 -6.70698 -10.6663 --4.74698 -5.88905 -10.2017 --5.7435 -5.98781 -10.024 --5.2765 -6.44102 -9.26599 --5.7007 -6.49176 -8.38853 --6.42151 -5.83784 -8.39353 --5.98722 -5.82112 -7.52585 --5.87863 -6.65511 -7.06368 --6.86685 -6.76417 -7.33194 --6.26816 -7.50572 -7.00415 --7.18796 -7.74251 -6.57548 --7.73215 -8.60509 -6.53565 --8.01664 -9.53586 -6.81602 --7.53957 -9.88271 -7.62568 --6.68011 -9.82035 -7.14076 --6.82024 -9.29116 -6.25729 --7.03435 -9.7054 -5.36304 --6.82091 -10.2635 -4.52672 --6.64088 -11.1311 -4.18535 --6.48321 -11.7165 -4.87833 --7.41785 -11.6747 -5.31418 --7.83566 -11.0405 -5.98547 --8.80846 -11.4019 -5.9946 --9.27926 -11.4143 -6.84121 --9.62977 -11.2751 -7.76069 --10.0557 -11.6439 -8.56332 --10.5801 -11.2016 -9.29201 --9.8284 -10.4166 -9.53113 --9.68215 -10.8775 -10.4249 --10.0812 -11.7485 -10.7798 --10.9014 -12.124 -11.2353 --11.587 -11.459 -11.5422 --11.8842 -10.994 -12.3906 --11.2234 -11.5369 -12.9297 --10.4373 -12.0629 -13.4255 --10.568 -12.9252 -13.8908 --11.5093 -13.127 -13.8456 --12.5063 -13.1643 -14.1682 --12.7425 -12.6147 -13.4057 --11.9775 -12.7554 -12.7791 --12.5311 -11.9711 -12.5864 --12.9103 -11.2719 -11.9766 --13.5135 -11.1742 -11.1505 --12.7162 -11.3206 -10.5567 --12.3401 -12.1035 -10.1921 --11.8114 -12.5997 -9.52676 --11.413 -12.3667 -8.58639 --10.846 -12.2792 -9.42792 --10.8093 -13.2543 -9.12467 --10.0139 -13.3819 -9.71126 --9.38352 -13.0974 -8.95445 --8.43542 -13.0917 -8.98679 --8.46285 -12.1279 -8.95405 --9.03255 -12.0588 -8.1056 --8.38626 -11.9371 -7.25147 --8.95539 -12.7368 -7.20993 --9.12075 -13.3201 -7.98069 --9.60325 -13.4696 -7.16509 --9.55828 -14.4638 -7.09961 --8.84383 -15.1757 -6.8234 --8.96632 -16.136 -7.13759 --8.7145 -16.9587 -6.55084 --8.91511 -17.6258 -7.22367 --9.81447 -17.7911 -6.95577 --9.25484 -17.907 -6.17398 --10.014 -17.3553 -5.85668 --9.4338 -17.7684 -5.15659 --8.78124 -17.1607 -5.65917 --8.22721 -17.7454 -6.22189 --8.57182 -18.4332 -6.80508 --9.28467 -19.053 -6.56481 --8.60331 -19.5335 -7.04452 --7.9093 -20.2129 -6.76357 --7.41839 -19.3071 -6.57949 --7.17009 -18.7285 -5.8927 --6.35607 -18.9743 -5.38562 --6.54576 -19.7957 -4.79303 --7.25113 -20.3894 -4.47644 --7.52097 -19.5505 -4.16821 --6.7404 -19.4954 -3.44653 --5.92366 -20.136 -3.57317 --5.3195 -20.91 -3.80607 --4.77062 -20.9206 -4.55894 --3.88546 -21.1958 -4.86825 --4.32866 -20.6791 -5.66162 --4.48118 -19.7284 -5.5693 --4.60414 -19.4479 -4.56017 --5.28613 -18.7705 -4.16727 --5.38213 -19.0076 -3.15887 --5.0608 -18.7655 -2.2717 --4.75738 -18.066 -1.74256 --3.7727 -17.9464 -1.76098 --4.20641 -17.5291 -2.58044 --3.68721 -16.8005 -3.0234 --4.59659 -16.7904 -3.46188 --4.84089 -15.9837 -2.92204 --5.18732 -15.3723 -2.15002 --6.05217 -15.747 -2.14288 --6.84913 -16.2142 -1.69765 --7.02667 -15.4538 -2.31797 --7.63639 -15.1428 -2.98328 --7.35454 -16.029 -3.31322 --7.37949 -16.0976 -4.31404 --6.58075 -16.5676 -4.12009 --6.09184 -16.0045 -3.61716 --5.37915 -15.9687 -4.24186 --5.84387 -15.1287 -4.26464 --5.18177 -14.8722 -3.59869 --4.74039 -15.1568 -4.48305 --5.21582 -14.2601 -4.4001 --4.76843 -13.4053 -4.61087 --4.34539 -13.8743 -5.40542 --3.90371 -13.3536 -6.03698 --4.91741 -13.2406 -5.95675 --5.10467 -12.2751 -5.87934 --4.88368 -11.3748 -5.44635 --5.64655 -11.3383 -6.00722 --5.72654 -11.0168 -6.96623 --5.71261 -11.6248 -7.86676 --6.32923 -12.0919 -7.3103 --7.29097 -11.9572 -7.37802 --7.13488 -11.086 -7.81401 --6.56625 -10.319 -8.0394 --5.88362 -9.54781 -8.00801 --5.63742 -8.58983 -8.22042 --5.74823 -7.59259 -8.41535 --6.55913 -7.06421 -8.59 --6.82301 -7.97743 -8.85324 --6.60737 -8.88128 -9.2544 --7.38345 -9.39825 -9.4135 --7.94946 -10.1666 -9.88361 --7.39643 -10.867 -10.3702 --6.51568 -10.7891 -9.99249 --6.75633 -10.8229 -8.95899 --7.46417 -11.5089 -9.06017 --7.65487 -12.1342 -9.73089 --6.94194 -12.8154 -9.70476 --6.14181 -12.2851 -9.91887 --6.20778 -12.0358 -10.9246 --6.16299 -12.9827 -10.6618 --5.53175 -13.5799 -11.028 --4.88386 -14.4258 -11.0248 --5.45858 -14.4985 -11.8896 --5.91925 -15.3015 -12.2293 --5.22182 -15.9048 -12.5808 --5.34547 -16.6911 -13.236 --4.71358 -17.3129 -13.6918 --4.95197 -18.1281 -13.179 --5.61604 -18.7952 -12.9668 --6.29673 -18.3386 -12.5142 --6.95482 -18.9292 -12.2277 --7.30913 -19.7129 -12.7011 --8.05621 -20.1316 -13.2502 --8.65554 -19.3908 -13.421 --9.01887 -18.9328 -14.2019 --8.74727 -18.4263 -15.0468 --8.58135 -18.9197 -15.909 --7.64116 -18.6417 -16.0561 --7.39036 -17.6663 -16.1674 --7.03864 -16.7151 -16.0973 --7.64144 -16.6223 -15.2877 --6.96477 -16.54 -14.5494 --6.3318 -16.0761 -15.105 --5.71842 -15.4184 -15.56 --5.37442 -15.4341 -16.5456 --4.49626 -15.0227 -16.8982 --3.46307 -14.7782 -16.8057 --3.19329 -15.5299 -17.4027 --3.87594 -15.8643 -17.9897 --3.50012 -16.4888 -18.5835 --2.48163 -16.4498 -18.6951 --2.11284 -16.8789 -17.8485 --1.94189 -17.8685 -17.8858 --1.30994 -18.4443 -18.3398 --1.71892 -19.3166 -18.5465 --1.39523 -20.0478 -19.2904 --1.18377 -19.8349 -20.1737 --0.31773 -20.3309 -20.1356 --0.583887 -21.2562 -20.2585 --1.25095 -21.4576 -20.9912 --1.77466 -21.5487 -21.8716 --1.91482 -22.5126 -21.5652 --1.79049 -23.257 -20.8517 --1.15124 -22.6483 -20.4854 --1.96429 -22.4031 -19.8928 --1.17326 -22.0502 -19.424 --1.83103 -21.3803 -19.1909 --1.03728 -21.3587 -18.5792 --0.166861 -20.8752 -18.563 --0.37446 -20.6957 -17.5446 --1.18211 -20.2873 -17.1243 --1.10125 -19.8708 -16.1766 --1.6059 -19.6853 -15.3401 --1.92277 -19.1123 -14.5568 --1.92933 -18.8979 -13.5844 --2.01678 -17.9042 -13.3904 --2.83454 -18.389 -13.1796 --3.55845 -17.8541 -12.8531 --2.79447 -17.248 -13.0343 --2.91023 -16.2922 -12.828 --2.1594 -15.8966 -13.3527 --2.22603 -16.0631 -14.3293 --3.08597 -16.5142 -14.2251 --3.44511 -17.031 -14.9733 --3.27496 -17.9839 -15.4448 --2.78556 -18.0459 -14.5659 --1.84024 -18.0564 -14.9223 --1.37365 -17.3116 -15.3626 --1.52989 -16.7351 -16.2129 --1.06767 -17.5605 -16.616 --0.527187 -17.3444 -15.8241 --0.001998175 -16.5652 -15.488 -0.465988 -15.9455 -14.7871 -1.25102 -16.494 -15.075 -1.91999 -15.7924 -15.2334 -1.40966 -14.9108 -15.3083 -0.951005 -14.7266 -16.157 -1.19088 -15.6636 -16.5074 -1.74868 -14.8809 -16.7763 -2.07758 -15.3538 -17.6859 -2.62625 -14.6043 -18.0217 -2.98917 -14.8692 -18.9472 -3.31091 -15.5133 -19.697 -2.84453 -16.4013 -19.4922 -2.37459 -16.9138 -18.7919 -1.99256 -17.8758 -18.8293 -1.82265 -18.6755 -18.1602 -2.11543 -19.3264 -17.4844 -1.47852 -20.0955 -17.6318 -0.479087 -20.1434 -17.5933 -0.373331 -19.872 -16.6465 -0.756075 -19.8733 -15.7395 -1.48508 -19.3769 -16.1264 -2.47173 -19.0874 -16.3563 -3.20385 -18.5488 -15.9049 -3.35352 -18.3777 -14.9527 -4.10918 -17.7602 -14.6406 -5.1423 -17.5223 -14.4372 -5.9756 -17.7318 -14.9127 -5.71317 -18.1121 -15.7833 -5.23635 -17.2022 -15.6973 -4.41117 -17.6366 -16.0588 -4.50462 -18.5182 -16.6133 -3.73008 -18.3708 -17.1224 -4.21243 -18.2857 -18.0225 -4.58059 -19.0808 -18.5485 -4.10385 -18.5716 -19.253 -4.73184 -18.5737 -20.0558 -3.71626 -18.4188 -20.1508 -3.74715 -18.2395 -21.1181 -4.2229 -17.4542 -21.3906 -4.89473 -16.9971 -21.9136 -4.37399 -17.1372 -22.7552 -4.18208 -16.1531 -22.937 -3.31202 -16.294 -22.3387 -3.10328 -15.7276 -21.5823 -2.24796 -15.8643 -21.0515 -1.36023 -16.2356 -21.2358 -1.51942 -16.953 -21.8156 -0.894081 -17.8198 -21.5428 -1.38981 -18.443 -20.8275 -0.480549 -18.4035 -20.6661 --0.291023 -18.0314 -20.0729 --1.03756 -17.2966 -19.9607 --1.16107 -16.9806 -20.9383 --1.27512 -17.7144 -21.5536 --1.22166 -17.1441 -22.3628 --1.62164 -17.1525 -23.3287 --1.31036 -18.0593 -23.1896 --1.40262 -18.857 -22.591 --1.13995 -19.8142 -22.5239 --1.10531 -20.0062 -21.5197 --2.01263 -20.2981 -21.629 --2.4962 -19.3803 -21.7495 --3.53151 -19.4042 -21.6333 --4.33487 -18.9995 -21.2736 --5.25782 -18.6816 -21.0622 --5.29539 -17.8558 -20.5454 --6.18576 -17.305 -20.5554 --7.02772 -16.9101 -20.2624 --7.43195 -16.8439 -19.334 --7.99779 -16.0781 -18.9241 --8.90816 -16.543 -18.8383 --9.50165 -15.7784 -18.6664 --9.68402 -15.2267 -19.4932 --9.62593 -14.5504 -18.7914 --10.5185 -14.38 -18.3551 --10.9265 -13.5132 -18.2129 --9.98827 -13.3672 -17.8559 --9.02185 -13.3177 -17.9496 --8.77644 -13.7728 -17.1621 --8.02922 -14.3628 -17.0843 --7.25915 -13.9713 -17.6148 --7.34666 -13.0061 -17.8845 --7.18646 -12.3175 -18.5682 --6.30362 -12.3905 -18.0863 --6.26031 -12.6911 -17.1625 --5.96763 -13.4043 -17.8587 --5.11262 -13.3507 -18.2773 --4.41598 -14.0544 -18.5069 --5.10981 -14.6233 -17.9413 --5.47283 -15.5822 -18.2513 --5.76654 -16.542 -18.2694 --6.58185 -16.0525 -17.9552 --7.04224 -16.1026 -17.0989 --7.57988 -15.6697 -17.752 --8.41014 -16.1667 -17.6425 --8.27888 -17.1986 -17.6042 --9.01221 -17.7788 -17.9758 --9.28526 -18.7399 -17.8767 --9.36627 -18.9748 -18.8077 --9.05228 -18.2773 -19.5348 --9.89642 -17.7558 -19.5695 --9.5595 -17.0756 -20.2432 --9.20952 -16.4531 -20.9721 --8.71295 -15.6292 -20.8232 --9.67262 -15.4805 -20.9429 --10.2808 -14.8435 -21.3962 --9.59627 -14.1157 -21.2396 --9.49729 -13.2828 -20.6764 --8.77081 -12.6182 -20.9275 --8.03602 -13.0274 -21.4857 --7.96617 -13.933 -21.9882 --7.11028 -14.3045 -21.5513 --6.71808 -14.9945 -22.2176 --5.82272 -15.391 -22.0201 --5.69831 -15.2443 -22.9725 --5.05669 -14.9385 -23.6846 --4.79051 -15.7448 -23.093 --5.32918 -16.3177 -23.7688 --4.85978 -17.0974 -24.0967 --4.31805 -16.9881 -23.2805 --4.44804 -17.96 -23.5442 --4.88045 -18.7846 -23.9714 --4.55133 -19.6583 -23.8669 --3.81615 -19.8029 -23.2569 --3.84893 -20.6676 -22.9203 --3.30991 -21.0049 -22.1485 --3.41994 -21.1308 -21.1266 --3.45475 -21.0088 -20.112 --3.50698 -21.6974 -19.36 --2.88585 -22.1683 -18.7736 --2.83858 -22.7221 -17.9428 --3.26183 -23.4135 -18.5149 --3.81697 -24.2248 -18.2344 --3.11303 -23.9633 -17.5189 --2.73698 -24.8862 -17.3376 --1.70839 -25.0716 -17.3682 --1.26422 -24.3141 -17.9183 --1.89316 -23.9871 -17.2551 --1.91111 -23.3887 -16.5154 --2.27023 -22.4243 -16.3525 --1.98407 -22.3848 -15.3532 --1.9483 -21.3536 -15.4104 --2.76289 -21.7665 -14.8882 --2.47492 -20.9622 -14.3492 --3.37066 -20.4644 -14.3942 --3.65747 -19.938 -15.1782 --3.49428 -20.8626 -15.5975 --4.40961 -20.4881 -15.814 --4.48187 -21.4466 -15.9984 --5.40005 -21.3629 -16.3978 --6.14535 -21.7239 -15.8194 --6.39709 -22.6343 -16.2714 --6.63819 -23.2948 -15.6572 --6.72762 -24.2581 -15.8514 --7.62197 -24.1376 -15.4495 --7.42866 -24.5026 -14.5656 --7.69757 -25.442 -14.4721 --7.35526 -25.9669 -15.1326 --7.44411 -25.6473 -16.1025 --8.31662 -25.9073 -16.2933 --8.42397 -25.188 -17.0514 --7.55874 -25.3687 -17.5523 --6.77936 -25.8848 -17.7372 --6.83785 -26.5119 -18.542 --6.69998 -27.5215 -18.6313 --5.8416 -27.9807 -18.303 --5.19131 -28.6071 -18.7206 --4.46692 -28.0437 -18.9771 --5.2603 -27.6012 -19.2941 --4.6408 -27.3682 -20.0192 --4.21756 -26.4401 -20.0335 --4.74521 -25.7712 -19.5611 --4.93755 -25.099 -20.3559 --5.67226 -24.4395 -20.5325 --5.10075 -23.7716 -21.07 --6.02524 -23.4204 -21.2635 --6.38476 -22.5491 -20.9765 --6.29635 -22.3031 -19.9583 --6.83717 -22.1193 -19.1468 --7.41536 -21.4663 -18.6909 --7.14356 -20.9402 -19.4576 --6.20877 -20.7511 -19.7504 --5.45739 -20.7093 -19.1132 --4.60196 -20.2546 -19.4183 --4.91505 -19.3085 -19.2299 --5.59638 -19.1121 -18.5424 --6.21022 -18.4915 -18.0275 --5.65175 -17.6657 -18.0286 --5.45 -17.3813 -18.8819 --4.95153 -17.1244 -19.6846 --4.56715 -18.0854 -19.7491 --3.81521 -17.5001 -19.5181 --3.48371 -16.557 -19.5904 --2.52646 -16.3164 -19.8244 --2.78024 -15.3438 -20.0024 --1.99268 -14.7357 -19.775 --2.08163 -13.9206 -20.3811 --2.44668 -13.0491 -20.7612 --3.34904 -12.6396 -20.9325 --4.30265 -12.4518 -20.983 --4.44466 -11.7526 -20.2891 --4.90454 -11.0723 -19.713 --4.10909 -10.5215 -19.5993 --3.45822 -10.2479 -18.9088 --4.14851 -10.1545 -18.2028 --3.51174 -10.0192 -17.4358 --2.91964 -10.4058 -16.7487 --2.96628 -11.3527 -16.6183 --2.6278 -11.9476 -15.9037 --2.56235 -12.8289 -15.6282 --2.83054 -13.7289 -16.1225 --3.72549 -13.831 -15.5473 --4.30459 -13.8137 -14.7657 --4.86854 -14.3123 -14.1642 --5.76548 -14.8244 -14.0735 --6.1973 -15.6776 -14.045 --6.74584 -16.0216 -13.2243 --7.4979 -16.492 -12.7999 --7.47598 -16.0919 -11.8699 --7.0749 -15.1447 -11.7626 --6.86287 -15.2672 -10.8053 --6.02598 -14.9851 -11.1065 --5.87957 -15.9189 -10.6827 --6.04377 -16.6821 -10.025 --5.43878 -17.4583 -9.97095 --4.44818 -17.6035 -10.2133 --4.37283 -18.4595 -9.6067 --4.693 -18.7788 -8.70555 --3.68378 -18.6958 -8.64317 --3.04711 -19.4757 -8.44256 --3.31194 -20.3809 -8.15616 --3.28882 -21.2223 -7.67718 --4.21184 -21.0108 -7.3489 --4.78083 -20.1944 -7.25538 --5.17325 -19.4504 -6.72358 --5.26011 -18.4424 -6.57369 --4.78684 -18.3239 -5.70827 --4.51483 -17.4442 -6.18012 --4.15318 -16.7628 -5.5012 --4.21917 -16.1072 -4.87299 --3.74212 -15.6953 -5.62571 --4.3154 -15.2991 -6.30684 --5.0388 -15.3928 -6.98889 --4.3172 -15.3061 -7.65888 --4.64553 -15.8369 -8.50042 --3.78094 -15.9708 -9.04894 --4.03185 -15.0054 -9.2842 --3.34791 -14.2324 -9.2148 --2.74216 -13.4363 -9.5755 --2.26551 -13.0171 -8.72442 --2.28615 -12.3778 -9.48354 --1.46521 -12.4214 -8.90344 --1.13865 -11.5303 -8.6658 --0.562055 -11.4261 -7.87044 --0.465897 -10.8956 -7.08426 --1.04682 -10.5383 -6.46683 --1.48769 -10.168 -7.24678 --2.22638 -9.80931 -6.7286 --2.68035 -9.12281 -7.27984 --3.05932 -8.36928 -7.88992 --2.41224 -8.72277 -8.51117 --2.5887 -8.84828 -9.46352 --1.69787 -9.26633 -9.55887 --2.18797 -10.0778 -9.27299 --2.54116 -10.7042 -9.94804 --3.19873 -11.442 -9.80253 --4.08378 -11.1231 -10.2124 --3.42772 -10.8231 -10.9083 --2.55187 -10.6698 -11.3388 --1.87961 -9.95989 -11.2641 --2.6904 -9.77126 -11.8494 --2.75874 -8.7473 -11.7549 --2.18435 -8.94594 -11.0583 --2.25885 -8.13065 -10.5967 --2.53382 -7.4814 -9.94766 --2.42563 -6.53259 -9.52409 --1.95885 -5.97831 -10.1582 --2.82191 -5.62549 -10.4337 --3.58936 -6.11377 -10.8806 --3.31789 -6.55877 -11.7681 --3.48348 -5.80113 -12.382 --3.50306 -5.10191 -11.7269 --4.25672 -4.81569 -12.3724 --3.4176 -4.31535 -12.2849 --2.52515 -4.66291 -11.867 --1.55263 -4.83549 -11.6145 --1.52663 -5.73787 -11.2623 --0.846664 -5.11273 -10.823 -0.167458 -5.11345 -10.7391 -0.828566 -5.68561 -11.1075 -0.690266 -5.73108 -12.0457 -1.49824 -5.9098 -12.5929 -2.12951 -6.63934 -12.4501 -2.61485 -7.52896 -12.2873 -2.46522 -8.47283 -12.6014 -2.55514 -9.52912 -12.4159 -1.78268 -9.10386 -11.8581 -1.48624 -8.25327 -11.5174 -1.38335 -7.29099 -11.2995 -0.384445 -7.25558 -11.6067 -0.259597 -7.3452 -10.5911 --0.598338 -7.86755 -10.5066 --0.901415 -8.10627 -9.57526 --0.647332 -8.98062 -10.0315 --0.210731 -9.40171 -9.24363 -0.206064 -10.2175 -8.81559 -0.382995 -9.46033 -8.19315 --0.352407 -9.77948 -7.48105 --0.849142 -9.19522 -6.88633 --1.46886 -8.43508 -7.0752 --0.790682 -8.77626 -7.73203 --0.17667 -8.14825 -8.3453 -0.302823 -7.28767 -8.41897 -1.13414 -6.95559 -8.7791 -1.81336 -6.8577 -8.00251 -2.6783 -7.06952 -8.46684 -2.54861 -7.82863 -9.04406 -2.5473 -7.9718 -10.0163 -3.10979 -8.5685 -10.4775 -2.18273 -8.94439 -10.584 -2.03645 -9.53316 -9.74792 -2.47463 -10.0174 -8.97199 -2.7325 -10.9046 -8.76684 -2.98265 -11.2661 -7.89497 -2.2479 -11.8829 -8.01583 -3.14043 -12.3641 -7.86786 -2.72443 -13.1772 -7.43004 -3.42876 -13.3606 -6.68988 -4.0815 -12.7185 -6.52723 -4.33493 -13.5575 -6.02421 -4.72096 -14.4723 -5.84444 -5.03303 -14.926 -5.05136 -4.7974 -14.5494 -4.20406 -4.69782 -13.7394 -3.5656 -3.84025 -14.0909 -3.89419 -2.9067 -13.9376 -4.08523 -2.91625 -14.8429 -3.58604 -2.02576 -14.3418 -3.32978 -2.48267 -13.8801 -2.67692 -2.55361 -12.9271 -2.77267 -1.69982 -13.2544 -2.53238 -0.876923 -13.0072 -3.12945 -0.473609 -13.8419 -3.55156 -0.145605 -13.5135 -4.4195 --0.102888 -13.6135 -5.32303 --0.546808 -14.2368 -5.99965 --0.801334 -14.8125 -5.19511 --1.22663 -15.2386 -6.02797 --1.17143 -15.2872 -7.06485 --0.430845 -15.8261 -7.51477 --0.12752 -15.5456 -8.39823 -0.406398 -14.6877 -8.43538 --0.357962 -14.105 -8.29217 --1.36163 -13.7783 -8.17145 --1.63388 -12.8684 -7.82927 --2.07396 -12.0761 -7.39095 --2.27696 -11.5996 -6.54107 --2.15079 -11.3344 -5.61454 --2.58541 -11.7307 -4.803 --3.5223 -11.8309 -4.66908 --3.10611 -12.6511 -4.95856 --3.04545 -13.6382 -4.63361 --2.37001 -13.4045 -5.349 --1.93946 -12.4206 -5.39431 --1.13067 -11.94 -5.81236 --0.803068 -12.6255 -6.45777 --0.06733243 -12.0534 -6.55139 -0.631337 -12.6495 -6.83887 -1.38989 -12.0542 -7.15417 -2.20799 -11.525 -6.82157 -1.86633 -12.3237 -6.24185 -1.44788 -12.3905 -5.24862 -1.00325 -11.5266 -4.8867 -0.248417 -11.0087 -4.48163 -0.236091 -12.0138 -4.22242 --0.52344 -11.8078 -3.60658 --1.00831 -10.9962 -3.21496 --1.44165 -10.6322 -2.32399 --2.17818 -10.7441 -2.92818 --3.20127 -10.8409 -2.81987 --3.77399 -10.1364 -2.4904 --3.19204 -9.45773 -1.96594 --2.48629 -9.04385 -1.5538 --1.69402 -8.41213 -1.72794 --1.56365 -7.75567 -1.02557 --0.840817 -8.1178 -0.4772869 --0.484061 -8.31468 0.4821261 --0.714779 -7.31984 0.3963821 --1.7326 -7.21365 0.1272231 --2.36877 -6.50787 0.4035571 --2.95167 -5.95416 -0.2608069 --2.07454 -6.41282 -0.6269299 --2.13123 -6.98227 -1.52707 --2.61851 -7.58266 -2.23189 --3.1843 -8.38965 -2.43039 --3.4813 -7.58807 -3.05492 --3.73429 -7.29979 -3.98318 --3.50498 -6.56084 -3.34274 --4.27685 -6.59044 -2.66281 --4.25009 -7.43452 -2.14466 --4.75966 -7.09851 -1.3845 --4.80555 -6.08712 -1.422 --3.90915 -6.42064 -1.73763 --3.90024 -5.41456 -1.96875 --4.71564 -5.29546 -2.48182 --4.83503 -4.67136 -1.78708 --4.45282 -3.7949 -1.36873 --4.81239 -2.94477 -1.80802 --4.3522 -3.60372 -2.33377 --4.94596 -3.63285 -3.10788 --5.41409 -3.92354 -3.89604 --4.80246 -4.63892 -3.69175 --5.50902 -4.62768 -2.9498 --6.17786 -5.32257 -2.6825 --6.93382 -5.8789 -3.16858 --6.37226 -5.71111 -3.99547 --5.78218 -6.36825 -4.54537 --5.14827 -6.90338 -5.16303 --5.12429 -6.05287 -5.64607 --4.78405 -5.44961 -6.3362 --4.73495 -5.85295 -7.20148 --4.2643 -5.51843 -7.88169 --3.81437 -6.09051 -8.64934 --4.38284 -7.00592 -8.49771 --4.32204 -7.19172 -7.45033 --4.0745 -7.75582 -6.57974 --3.8081 -7.54234 -5.70427 --3.33842 -8.44116 -5.71774 --3.75776 -9.37796 -5.66772 --3.9632 -10.2366 -6.05129 --4.18261 -10.4498 -7.03028 --4.28352 -9.53792 -7.5662 --3.80751 -9.70603 -8.42783 --4.35924 -8.87388 -8.35086 --4.48108 -8.29318 -9.13253 --4.73544 -8.53484 -10.0086 --5.40972 -9.03748 -9.38197 --4.84938 -9.84372 -9.15587 --4.00868 -9.87191 -9.63705 --3.87679 -10.5456 -8.91476 --4.19548 -11.4296 -8.78262 --3.40597 -11.5916 -8.10372 --3.79738 -12.461 -8.10676 --4.16321 -11.7851 -7.50403 --4.612 -12.7045 -7.47935 --4.82732 -13.5771 -7.80756 --5.85016 -13.5647 -7.79969 --6.30038 -13.6408 -6.82029 --7.00699 -13.624 -6.13898 --6.38831 -12.9074 -6.05936 --6.79854 -12.9824 -5.07085 --6.19427 -12.6077 -4.46366 --6.17685 -12.8711 -3.51056 --6.74957 -13.7287 -3.62516 --7.17484 -12.9596 -3.1396 --8.11047 -12.8649 -2.95837 --8.15828 -12.8173 -3.99812 --8.62366 -12.7883 -4.76784 --9.06954 -12.679 -5.72139 --9.95253 -12.6184 -6.20569 --10.3295 -12.2217 -7.02937 --11.0087 -12.8892 -6.67695 --10.8754 -13.5411 -5.90165 --11.8237 -13.4338 -5.78308 --11.6956 -13.177 -4.79353 --12.4887 -13.3391 -4.23324 --12.1285 -14.007 -3.71961 --12.5932 -14.0942 -2.8327 --13.2627 -14.1653 -2.04208 --13.6735 -14.5153 -2.76445 --14.4285 -14.157 -3.28112 --14.5999 -13.7727 -4.21993 --15.343 -13.1277 -4.06144 --15.3151 -12.9449 -5.02863 --14.4429 -12.7526 -5.42388 --13.8139 -13.4438 -4.98612 --13.9427 -14.1343 -5.7207 --14.7152 -14.8065 -5.70206 --14.1603 -15.4635 -5.3592 --13.911 -15.4824 -4.35853 --13.1608 -14.8057 -4.18302 --12.6769 -15.5485 -4.64661 --12.8122 -16.5559 -4.54099 --12.9744 -17.2739 -5.16985 --12.2911 -17.9183 -5.47808 --11.6026 -18.2733 -5.95348 --11.5582 -17.3004 -6.1457 --10.7668 -16.8498 -6.62065 --10.4019 -16.327 -7.43013 --10.9995 -15.5663 -6.88618 --10.6001 -15.3291 -5.99296 --10.249 -14.9153 -5.11373 --9.40902 -15.446 -5.26245 --8.59879 -14.8581 -5.23257 --8.65781 -15.4868 -4.43245 --8.91835 -14.6258 -4.08379 --9.15449 -15.2262 -3.26378 --8.66991 -15.8566 -2.81344 --8.91184 -16.7423 -2.36227 --9.43281 -16.7243 -1.51427 --9.15261 -15.7837 -1.17602 --9.54112 -14.8639 -0.9906619 --9.17615 -14.8544 -0.05884918 --8.86366 -13.9628 -0.2897629 --8.21202 -14.4456 -0.8893569 --8.58293 -14.6136 -1.74923 --9.2116 -14.4326 -2.57776 --10.0406 -13.9385 -2.79395 --10.9746 -14.0581 -3.08897 --10.4617 -14.6775 -3.69861 --11.317 -14.7255 -4.21727 --11.2672 -15.3952 -3.48738 --10.7472 -15.3928 -2.64804 --10.4281 -16.3255 -2.66449 --10.7251 -16.0096 -1.79119 --11.5898 -16.5417 -1.62127 --11.9877 -16.9834 -0.8344099 --11.5492 -16.5618 -0.1304059 --12.4677 -16.2731 0.2235651 --12.1119 -17.1278 0.5649921 --11.2273 -17.5132 0.8381131 --10.6025 -16.7772 0.6695221 --9.92116 -16.0536 0.5327291 --10.4273 -15.6387 -0.1524589 --11.38 -15.508 -0.5184299 --12.1132 -15.0027 -0.1053899 --12.7113 -15.449 -0.7781149 --13.2541 -15.5573 0.06684782 --13.989 -15.0156 -0.08890958 --14.0873 -14.0273 -0.4405479 --14.2495 -13.097 -0.6504829 --15.0603 -13.2307 -0.06914208 --15.9876 -13.0614 -0.2852609 --16.2985 -13.9135 0.2438651 --16.2112 -14.0346 1.20577 --15.2448 -14.1395 1.11494 --15.2157 -14.8884 1.8775 --15.3307 -15.8167 1.43524 --15.9855 -16.1337 2.05662 --15.3799 -16.1626 2.86289 --14.4716 -15.6247 2.99175 --13.9951 -14.8561 2.49237 --13.3189 -15.1242 3.05099 --12.6841 -15.7566 2.9915 --12.1343 -16.5406 2.7664 --12.3457 -17.5583 2.61185 --13.3077 -17.6188 2.19687 --13.6715 -17.7274 3.08537 --13.3233 -18.5037 3.5885 --12.955 -18.7361 4.46727 --12.6278 -19.4875 3.90396 --12.3454 -19.893 3.04269 --12.4842 -19.2236 2.40699 --11.7988 -18.9572 1.84535 --11.5926 -19.8708 1.51474 --11.3765 -19.6077 0.5757821 --10.4883 -19.0764 0.6249351 --10.5374 -18.6956 1.56369 --10.734 -18.3992 2.51298 --9.79927 -18.222 2.56876 --9.28644 -18.8685 3.19013 --9.27977 -19.3349 2.29763 --8.85734 -19.0788 1.38835 --8.27708 -19.8551 1.41669 --9.01956 -20.4164 0.9560031 --9.6898 -20.6504 1.70992 --10.4328 -21.2157 1.32342 --10.6757 -20.9373 2.24398 --10.1583 -21.594 2.68841 --10.3961 -22.4347 2.27425 --10.4165 -22.6927 1.31698 --10.8006 -22.6702 0.3516861 --10.2883 -21.9945 -0.2298529 --10.4571 -21.4019 -0.9919809 --10.1012 -20.5105 -1.07526 --9.18049 -20.2911 -1.1013 --8.19223 -19.9301 -0.9283749 --7.44787 -20.6111 -1.05192 --6.4475 -20.6167 -0.9831219 --5.75958 -20.0208 -0.7579389 --4.83351 -20.4141 -1.03425 --4.25914 -19.7303 -0.4547009 --4.10593 -19.6191 -1.46373 --4.10061 -20.3867 -2.15923 --3.84737 -21.3741 -2.01031 --3.99985 -21.949 -2.81211 --3.95822 -21.202 -3.45018 --4.89557 -21.7006 -3.35904 --5.54065 -22.2838 -2.81 --6.53261 -22.2279 -2.75522 --7.04036 -21.3422 -2.68527 --7.53093 -21.3023 -3.5118 --8.20292 -20.7488 -4.03042 --8.59874 -21.503 -3.51647 --9.15945 -21.26 -2.75029 --9.61624 -20.3797 -2.59852 --9.16925 -19.5105 -2.621 --9.90965 -19.0756 -2.24725 --10.6294 -18.4214 -2.44332 --9.77153 -18.1259 -2.95762 --9.68216 -17.3094 -3.55915 --10.3639 -17.5631 -4.16538 --10.3232 -18.4979 -3.65905 --9.88846 -19.2663 -3.24487 --9.26034 -19.1199 -3.92483 --9.02877 -20.119 -4.00549 --9.31284 -20.9448 -4.55391 --9.53336 -21.9831 -4.46851 --10.0998 -22.3309 -5.2758 --10.6962 -21.7488 -5.83078 --9.87059 -21.2689 -6.09854 --9.83923 -20.9028 -7.00114 --9.00277 -20.7839 -7.55907 --9.63608 -21.5609 -7.56479 --9.29512 -22.3144 -8.14385 --9.5976 -22.6713 -7.29345 --9.5486 -22.5708 -6.30754 --8.68865 -22.6329 -5.85294 --9.22813 -22.7869 -5.11943 --8.92921 -23.5418 -4.44149 --8.73219 -22.8718 -3.75859 --9.63369 -22.9751 -4.02102 --10.2123 -23.4195 -3.28144 --11.1857 -23.68 -3.34844 --11.6308 -24.3155 -2.84416 --11.1608 -24.5261 -2.05627 --10.4501 -24.0877 -1.48022 --10.8999 -23.4881 -0.8462979 --11.6843 -22.8805 -1.16705 --11.7063 -22.8349 -2.17052 --12.5335 -23.4005 -2.21222 --13.3068 -23.9014 -2.53959 --13.8445 -23.8804 -3.34939 --13.9352 -24.3809 -4.29686 --13.4267 -25.1423 -3.90525 --12.8946 -24.293 -3.89244 --12.7719 -23.3343 -3.5034 --13.4219 -22.5406 -3.47346 --14.3499 -22.8141 -3.33856 --14.8799 -22.1327 -2.91774 --15.2801 -22.9994 -2.75792 --15.9474 -23.492 -2.13638 --15.9352 -24.5073 -2.07099 --15.0316 -24.5554 -1.62213 --15.1621 -24.9759 -2.48222 --15.8727 -24.7131 -3.11848 --15.2641 -25.1283 -3.77023 --14.8745 -25.4872 -4.65039 --14.7537 -26.1753 -5.39544 --15.3968 -25.5041 -5.91847 --15.6261 -25.7836 -6.87283 --16.2213 -26.6349 -6.97975 --16.5628 -26.972 -7.87227 --17.0446 -27.8317 -8.27311 --16.6908 -27.5158 -9.22237 --16.0486 -26.7232 -9.38605 --16.4272 -26.4956 -10.3105 --17.1352 -26.7392 -10.9121 --17.9323 -26.0622 -10.7437 --17.8361 -25.6051 -11.6363 --18.0748 -24.6706 -11.8486 --17.5106 -24.5762 -11.0623 --16.7434 -25.2513 -11.1087 --16.3069 -25.4355 -11.9865 --15.7988 -24.5379 -11.8407 --15.8997 -23.8037 -11.176 --15.596 -24.3695 -10.3998 --15.4789 -23.7638 -9.64523 --16.26 -23.1985 -9.75304 --16.1795 -22.4048 -9.2224 --17.1158 -22.5106 -8.70261 --17.0902 -21.5073 -8.40569 --17.0545 -21.9168 -7.47618 --17.2197 -22.0129 -6.54211 --16.4382 -22.5466 -6.25854 --15.8461 -23.1897 -5.78147 --15.5119 -23.6656 -6.50799 --16.4478 -23.951 -6.31296 --17.0974 -24.5028 -5.85036 --16.7606 -25.4586 -5.86018 --16.3179 -26.1437 -5.28684 --16.5406 -26.7135 -4.45647 --16.5346 -27.3105 -3.62636 --16.5939 -26.941 -2.70476 --16.2442 -26.035 -2.40775 --15.44 -26.2734 -1.88271 --14.8617 -25.9266 -1.22135 --14.3192 -25.9407 -0.4216239 --14.7628 -25.5161 0.4113921 --14.9897 -26.2988 1.03184 --15.7009 -26.475 1.8098 --16.0207 -25.7552 1.2052 --15.6262 -24.8989 0.8569101 --15.5754 -24.6363 -0.07352688 --15.4433 -23.9127 -0.7182949 --15.4008 -22.9975 -1.02725 --14.9319 -22.4404 -0.4009109 --14.5899 -21.5652 -0.6650349 --15.4709 -21.0535 -0.8124469 --15.5277 -21.3297 0.1434341 --16.1159 -20.5521 0.1259291 --16.6993 -20.5958 -0.6488479 --17.7244 -20.6078 -0.8686739 --18.3655 -19.9409 -1.31859 --19.2291 -20.3068 -1.06694 --18.9123 -20.4652 -0.1259429 --19.7315 -20.0995 0.2884271 --19.8084 -20.2325 1.28556 --20.2818 -20.2226 2.14711 --21.1577 -19.9108 2.1351 --21.7778 -20.2835 1.49821 --22.5102 -20.9019 1.80574 --23.0641 -20.2512 1.4101 --23.6131 -21.0372 1.18343 --23.8404 -21.7877 1.72333 --24.6404 -21.3875 2.15444 --25.4342 -21.1055 2.67174 --26.0425 -20.3199 2.57518 --25.2793 -19.8154 2.86549 --25.2282 -19.1625 3.63032 --25.8006 -18.9434 4.45133 --25.5865 -18.4805 5.40969 --25.433 -17.5236 5.25113 --24.9098 -18.1264 4.59982 --24.0421 -17.6195 4.48747 --23.9751 -16.9458 5.21951 --23.6191 -16.3365 4.53271 --23.1546 -16.523 3.66617 --22.9382 -17.3522 3.21668 --23.0536 -18.4145 3.10608 --23.2578 -19.0033 3.85866 --24.1294 -19.4143 3.64735 --24.4649 -18.8683 2.83483 --25.2497 -18.1708 2.62654 --24.7535 -17.622 1.88608 --24.0215 -17.3961 1.24974 --24.3138 -16.7102 1.90586 --24.315 -15.7003 1.72003 --25.1529 -15.2605 2.07131 --25.7038 -15.7144 2.74793 --25.9992 -14.7624 2.87699 --25.3576 -15.0975 3.67471 --24.5143 -14.8791 4.11524 --25.1382 -15.0403 4.858 --25.6389 -14.1996 4.56161 --26.2007 -14.3373 5.42019 --26.5707 -13.7682 6.09451 --26.1034 -12.909 6.19154 --25.702 -12.1043 5.71625 --26.0071 -11.3273 6.34874 --26.9974 -11.4344 6.27468 --27.5728 -11.2292 7.11139 --27.1517 -11.3361 7.97961 --26.3504 -11.547 8.60445 --25.9793 -10.8419 7.95929 --25.1374 -10.2913 7.8105 --25.8999 -9.61586 8.18436 --26.7531 -10.1965 8.17206 --27.2291 -10.3923 9.05196 --26.2725 -9.97099 9.19647 --26.5932 -8.99787 9.3671 --25.7672 -8.52431 9.67526 --25.8109 -8.33928 10.6489 --25.5332 -9.09613 11.3026 --24.9824 -9.50813 12.0718 --24.653 -10.3495 11.6212 --25.2394 -10.3694 10.8162 --26.0473 -10.8099 11.1584 --26.9029 -11.1846 10.7891 --27.6672 -10.8698 11.4231 --28.4823 -11.4371 11.5806 --28.8993 -10.9061 10.8502 --29.8385 -11.0488 10.7529 --29.6422 -11.9243 11.2191 --29.5238 -12.8779 11.0005 --30.5594 -12.9965 10.894 --31.2086 -13.2979 11.6018 --31.3946 -13.6777 10.6804 --32.0026 -14.3861 10.464 --32.2146 -13.6582 9.83058 --31.7114 -13.3655 9.0819 --31.6265 -12.4385 8.94563 --31.0071 -11.9883 8.29635 --30.6262 -12.8899 8.23274 --30.533 -12.4508 9.02015 --29.5844 -12.5537 8.94589 --28.9368 -12.3101 9.66539 --27.945 -11.9393 9.85732 --27.7795 -12.9381 9.84613 --27.9997 -12.8194 10.8369 --27.662 -13.7028 10.6211 --28.0586 -14.5832 11.0432 --29.0414 -14.3901 10.7143 --29.3759 -14.3166 11.652 --29.6072 -15.252 11.456 --28.9175 -15.8611 11.7262 --28.6188 -16.5135 10.9934 --28.8593 -15.8101 10.247 --29.7759 -15.6546 10.0184 --29.8077 -16.5582 9.67115 --28.9164 -16.3556 9.24566 --28.6269 -16.4326 8.29161 --29.1054 -15.8997 7.58653 --29.4252 -15.0586 7.02817 --29.3571 -15.8017 6.46294 --28.5601 -15.8371 5.90571 --28.4133 -16.4763 5.2086 --28.7791 -15.6729 4.83089 --29.7108 -15.9003 4.97143 --29.8533 -15.4132 4.12124 --29.4314 -15.3147 3.16338 --29.6236 -14.3518 3.08554 --28.953 -14.1115 3.8389 --28.1381 -14.0386 3.1966 --27.5004 -14.764 3.36394 --27.4799 -15.4626 4.06081 --27.5419 -15.8622 3.08447 --28.1904 -16.4162 3.58639 --28.7206 -16.8576 2.84338 --29.1514 -17.5247 2.14949 --29.7016 -16.6983 1.82078 --30.5267 -16.4129 2.37307 --31.1556 -15.665 2.37982 --31.9034 -16.2583 1.93547 --31.8687 -15.4744 1.3677 --32.2697 -15.0746 2.16541 --32.5149 -14.2259 2.50944 --32.0218 -13.5442 1.96798 --31.2199 -14.1366 2.23689 --30.2918 -13.9089 2.11207 --29.8776 -13.5407 1.27515 --29.8314 -12.6881 0.7281811 --29.8248 -13.022 -0.2428119 --29.0795 -12.3248 -0.2628429 --29.6427 -12.0382 -1.02777 --29.3795 -11.1295 -1.5376 --30.1799 -10.5148 -1.605 --31.0089 -10.1438 -1.45053 --30.3881 -9.73343 -2.12975 --30.2834 -8.92624 -1.5635 --29.5291 -9.29656 -1.01739 --29.0713 -9.94163 -1.51341 --28.349 -9.77612 -0.8048149 --28.2586 -8.8528 -0.3593109 --28.3219 -7.93846 -0.4750789 --27.6362 -7.44616 -1.0954 --27.6214 -6.68619 -1.81653 --27.5256 -6.66736 -2.81041 --28.325 -6.30654 -3.29322 --29.1787 -6.86134 -3.55906 --30.1271 -6.72461 -3.62124 --30.2215 -7.34116 -2.77154 --30.7692 -8.19409 -2.75922 --30.8918 -8.26476 -1.72008 --30.8545 -7.34657 -1.37889 --30.1588 -7.06606 -0.6849379 --30.7615 -6.96026 0.1223081 --30.515 -6.03601 0.2646411 --31.3668 -5.7821 -0.1432519 --30.8099 -5.32236 -0.7297359 --30.3989 -6.21286 -0.8100949 --29.5071 -6.01771 -0.5242219 --28.8509 -5.47707 -1.03726 --29.1968 -4.65662 -0.5421639 --29.7479 -3.97325 0.00390298 --29.7711 -3.46552 -0.7974169 --29.931 -2.51291 -0.7939619 --28.9664 -2.38214 -0.7090939 --29.1064 -1.65118 -0.07350588 --29.5628 -0.7682371 0.00802224 --29.5155 0.06386303 0.5531761 --29.1933 0.5350509 -0.2920219 --28.3896 1.06312 -0.5128269 --28.7585 1.17703 -1.55726 --29.1289 0.2024609 -1.58223 --29.9816 -0.2178351 -1.68734 --30.4698 -0.6354021 -0.9249599 --30.8782 -1.22377 -0.2671449 --30.894 -1.99012 0.3385521 --31.7949 -2.19791 0.7334211 --32.2138 -3.06815 0.9608151 --31.2937 -3.14525 1.22714 --31.2902 -3.56157 2.16568 --30.8086 -4.40609 2.51134 --30.5709 -5.19211 3.03957 --31.4211 -5.27342 3.50111 --31.0995 -4.43814 4.00308 --31.2521 -3.49512 3.70803 --30.7568 -2.68252 3.9067 --30.3417 -2.67146 3.08855 --30.0039 -1.72203 2.90904 --30.0512 -1.62629 3.89533 --30.9856 -1.77939 3.61479 --31.2721 -1.30445 4.46562 --30.658 -1.57862 5.24745 --30.3761 -0.6638401 4.89522 --30.6523 -0.3471301 5.847 --29.857 -0.8202281 5.91053 --29.7611 0.08377033 6.25046 --30.3996 0.8988479 6.36069 --29.4633 1.13948 6.62189 --28.662 0.8436169 6.08372 --27.8733 1.03403 6.73227 --27.3602 1.49167 7.38368 --28.0594 2.12466 7.40664 --28.4613 2.9642 6.95819 --28.4331 3.56506 7.66184 --28.4872 4.17833 6.87901 --28.9003 4.48958 5.96177 --29.6338 5.05487 6.3461 --30.4882 5.02277 5.73339 --31.092 4.2249 5.82261 --31.8246 4.19903 5.15207 --32.4528 4.04012 5.97196 --31.9261 3.14632 5.96912 --31.1066 3.02587 5.44422 --31.063 2.45841 4.55799 --30.8305 3.29639 4.14407 --29.951 3.34086 4.69168 --29.1624 2.68028 4.49473 --29.5515 1.85532 4.01351 --28.6988 2.27571 3.54866 --28.4755 1.50422 2.94599 --29.0426 1.82734 2.13299 --28.1272 1.93495 1.88761 --27.4481 1.68041 1.1838 --27.7405 0.9291299 0.6005541 --27.2577 0.08427333 0.9045761 --26.4184 -0.2851211 1.18588 --25.6625 -0.2233741 0.6132801 --25.4787 -0.2559861 -0.2883619 --26.409 0.1893689 -0.3968159 --26.6287 1.07329 -0.05366608 --26.6613 1.27036 -1.01643 --27.5318 0.8457059 -1.35992 --27.5558 -0.03318007 -0.9657839 --27.5521 -1.05283 -0.9672479 --27.3454 -1.94841 -1.37363 --26.7703 -1.82321 -0.4705729 --26.2493 -2.45756 -1.03878 --25.3738 -2.4678 -1.47035 --25.357 -1.50229 -1.07116 --25.2386 -1.59023 -0.1178459 --25.3074 -1.09918 0.8236221 --25.0866 -1.57426 1.64645 --25.1706 -2.34457 2.25706 --25.9509 -2.36606 2.87133 --26.0188 -1.58151 3.55735 --25.4249 -0.9150481 3.97254 --24.8318 -0.9475121 4.73922 --23.9156 -0.9986791 4.26439 --23.6341 -1.27303 3.40802 --24.3031 -1.97625 3.33408 --24.5996 -2.87035 3.26449 --25.05 -3.76655 3.29812 --24.3769 -4.42807 3.13499 --24.1661 -4.5239 4.14027 --24.9591 -5.07494 4.18127 --24.749 -5.27469 5.19018 --24.02 -5.48522 5.79527 --23.8142 -4.69705 5.18451 --22.8785 -4.66204 5.00561 --23.0942 -4.00753 4.28411 --23.6151 -3.19619 3.9755 --23.4866 -3.67127 3.12482 --22.9876 -4.27192 2.51077 --22.2 -4.75345 2.42018 --22.6843 -5.6025 2.67269 --23.6383 -5.2387 2.40044 --24.4916 -5.34048 1.94956 --25.377 -5.70905 1.54056 --26.2804 -6.17689 1.53887 --27.1241 -5.7095 1.80761 --26.8549 -4.81595 2.08773 --26.6854 -3.85051 1.9905 --27.3696 -3.36869 1.45945 --28.309 -3.26687 1.44077 --27.9088 -4.14171 1.01057 --26.9621 -4.31718 0.7441811 --27.182 -4.56497 -0.2147159 --26.2929 -5.02255 -0.3894559 --25.9775 -5.97234 -0.5933719 --25.4313 -6.49067 0.01223082 --25.1522 -6.90335 -0.8503829 --25.6515 -7.39857 -1.49961 --26.2871 -8.10652 -1.84514 --25.3726 -8.21781 -2.24252 --25.0525 -8.84455 -2.93077 --24.5548 -9.4021 -3.58789 --24.8337 -9.57013 -4.59893 --25.7736 -9.76335 -4.68072 --26.7672 -9.62468 -4.8666 --27.1906 -9.30579 -5.77186 --27.8985 -9.66443 -6.33573 --27.3717 -10.5647 -6.20375 --26.8545 -10.0763 -6.86043 --26.934 -10.9439 -7.29116 --27.9546 -10.8605 -7.33612 --28.8433 -11.0339 -6.9922 --28.9868 -10.7838 -7.94044 --29.0923 -11.783 -8.23123 --30.048 -11.7635 -7.84779 --30.9869 -11.7356 -7.58966 --31.4154 -11.3405 -6.80554 --31.3256 -12.1028 -6.16949 --30.824 -11.7417 -5.40567 --31.3847 -12.1949 -4.63727 --32.3314 -12.4778 -4.40528 --32.3971 -12.7676 -5.33096 --32.4856 -13.4947 -6.04092 --33.3995 -13.5752 -6.3308 --33.0489 -12.6673 -6.50486 --33.6577 -12.2096 -5.84394 --33.7011 -11.4583 -6.4566 --32.8244 -11.245 -6.97706 --32.1166 -11.5455 -7.52938 --31.9776 -10.7784 -8.27139 --32.2172 -10.2931 -7.41869 --31.4303 -9.67445 -7.31987 --31.4656 -8.63896 -7.36469 --30.8081 -7.96372 -6.881 --30.0461 -7.45755 -7.11506 --29.1542 -7.26022 -7.46534 --28.5011 -8.00002 -7.36582 --28.0116 -8.45689 -8.10759 --27.4542 -8.83888 -8.88506 --27.7659 -8.50368 -9.76429 --27.9604 -8.64531 -10.7496 --27.8128 -9.6302 -10.6551 --28.6778 -9.28622 -10.3464 --28.3216 -9.71855 -9.50077 --28.006 -10.6796 -9.44986 --28.0359 -11.6222 -9.51966 --28.1238 -12.4851 -8.98122 --27.1446 -12.7589 -8.71498 --26.8869 -13.3564 -7.93044 --26.0569 -13.3286 -7.41902 --26.0744 -12.4167 -7.68321 --25.1535 -12.1762 -7.31656 --24.9295 -12.1621 -8.25096 --25.3232 -11.2396 -8.46071 --25.7317 -11.1856 -7.54166 --25.1124 -10.4331 -7.64469 --24.768 -11.146 -6.92381 --24.2766 -10.5113 -6.33907 --23.5728 -10.6263 -7.05302 --23.8962 -11.3046 -7.58342 --23.0046 -11.5574 -7.25586 --23.2388 -12.2539 -6.57607 --23.5069 -12.8063 -5.72232 --22.6149 -12.4191 -5.54249 --21.8887 -11.7253 -5.60015 --21.8149 -11.766 -4.59949 --20.9085 -12.1535 -4.48421 --21.3988 -12.8645 -3.96208 --21.5868 -13.5412 -3.15454 --22.6011 -13.5586 -3.26399 --23.0568 -14.4146 -3.71873 --22.9487 -15.3497 -3.46057 --23.4105 -15.1787 -2.58188 --23.6123 -16.1829 -2.57414 --23.662 -17.1463 -2.44441 --24.3299 -17.3071 -3.19119 --24.4308 -18.3193 -3.48229 --24.6074 -18.1502 -4.43307 --23.8167 -18.3977 -4.92587 --22.8931 -17.991 -5.0565 --22.7148 -18.9847 -5.01766 --23.47 -19.2622 -5.63153 --23.1884 -19.0546 -6.56389 --22.4487 -18.3212 -6.5929 --21.7678 -17.7408 -6.13075 --21.2312 -17.0618 -5.57634 --21.7461 -16.2831 -5.97075 --22.7148 -16.0641 -5.97687 --22.7795 -15.1445 -6.26752 --21.9823 -14.4952 -6.29754 --21.4639 -14.6324 -7.15331 --21.3465 -15.5838 -7.2058 --21.3137 -15.4163 -8.20429 --22.2569 -15.6842 -8.04287 --22.4443 -16.6676 -8.22012 --21.6068 -16.9 -7.69914 --20.948 -17.5222 -8.10991 --19.9631 -17.701 -7.93945 --19.8039 -16.6786 -7.91739 --19.5448 -15.7656 -7.58659 --19.1022 -14.8241 -7.62245 --19.3859 -14.7652 -8.59994 --19.1218 -13.8056 -8.58245 --19.623 -13.8326 -9.43501 --20.4095 -13.4389 -9.99732 --20.0405 -13.6117 -10.9602 --20.9933 -13.7004 -11.2531 --21.4851 -13.549 -12.0461 --21.2994 -12.6479 -12.5347 --21.175 -12.2933 -11.6027 --20.2853 -12.6484 -11.2542 --19.7233 -11.8752 -11.3393 --19.5285 -12.2723 -10.421 --18.8272 -12.8946 -10.311 --18.1598 -13.3744 -10.8442 --18.2628 -12.4193 -11.2784 --17.3028 -12.6552 -11.104 --17.4972 -11.9453 -10.398 --18.3933 -11.5223 -10.0736 --17.7072 -11.4136 -9.34278 --18.6548 -11.3202 -9.1923 --18.7242 -11.8215 -8.33859 --18.0308 -11.2475 -7.99316 --17.3525 -11.4497 -7.33373 --16.3836 -11.5055 -7.36326 --16.2205 -10.5676 -7.1397 --15.9991 -10.8604 -8.04101 --15.0333 -10.6683 -7.78521 --15.1777 -11.4324 -8.44314 --14.8857 -12.4031 -8.67682 --15.711 -13.002 -8.50263 --15.3594 -13.8689 -8.21681 --14.6092 -14.0567 -8.86929 --14.7629 -13.3483 -9.58362 --15.0445 -14.2141 -9.94704 --15.0674 -14.4327 -10.9589 --15.7763 -15.079 -11.1975 --15.1977 -15.476 -10.6349 --16.1386 -15.571 -10.3602 --15.8148 -14.9078 -9.64515 --16.1011 -14.8463 -8.66348 --15.8332 -14.892 -7.72444 --15.9731 -14.6878 -6.715 --16.1808 -14.934 -5.76922 --16.8193 -14.9296 -5.09095 --15.9668 -14.485 -4.79662 --16.3296 -14.7002 -3.87623 --15.9705 -15.0862 -3.06033 --15.4432 -15.8742 -2.88952 --15.0575 -16.015 -1.85246 --14.5003 -16.4536 -2.58583 --13.8788 -16.7357 -3.29499 --14.3786 -17.3325 -3.9835 --14.7359 -18.2585 -3.83611 --14.7304 -18.2072 -4.84909 --15.6238 -17.7687 -4.58395 --16.1526 -18.4012 -4.1031 --17.0351 -18.9471 -4.1656 --17.2486 -18.3966 -4.86542 --17.4818 -17.5467 -4.42886 --18.497 -17.3997 -4.29158 --18.9273 -17.7165 -5.14716 --19.4041 -18.4866 -5.43493 --19.9146 -19.3054 -5.51828 --20.8201 -18.9569 -5.77788 --21.4777 -18.4787 -5.17628 --21.0725 -18.0428 -4.33419 --21.6861 -18.6364 -3.74198 --22.1742 -18.4869 -2.86736 --22.5271 -18.7054 -1.9394 --21.5085 -18.6989 -1.85862 --21.1278 -18.9942 -0.9415719 --20.1809 -18.7181 -1.3907 --19.5293 -18.2858 -2.08003 --18.6463 -18.7073 -1.89656 --17.7537 -18.8025 -1.57977 --17.9359 -19.2656 -0.7053519 --16.9949 -19.2952 -0.8236809 --16.1756 -19.5533 -0.2045599 --15.6039 -18.7442 -0.05060448 --14.8323 -19.0295 -0.5426879 --14.8383 -19.1837 -1.5106 --14.8268 -18.2113 -1.41878 --15.715 -18.4817 -1.84622 --16.5216 -18.3193 -1.23044 --16.8753 -18.5273 -2.06643 --17.3595 -18.9647 -2.85467 --17.4947 -19.5392 -3.65569 --18.1951 -19.7678 -2.95617 --17.8608 -20.7049 -3.13411 --17.7769 -21.7568 -3.00016 --18.0274 -22.7385 -2.88098 --18.1164 -22.2323 -1.98337 --18.6976 -22.971 -1.7219 --18.3922 -22.3965 -0.8787259 --18.6316 -22.1561 -0.01487328 --19.1724 -22.2513 0.7750871 --19.6243 -22.674 0.00962259 --19.7974 -22.6372 -0.9609369 --20.4904 -23.4349 -0.7582679 --20.8773 -23.1241 -1.6435 --20.6014 -23.5762 -2.50997 --21.0161 -24.1564 -3.18901 --21.3462 -24.7618 -3.93856 --21.1277 -24.0912 -4.76615 --20.3538 -23.4659 -4.74199 --19.892 -22.6769 -5.23613 --19.8156 -22.5254 -6.25192 --19.5351 -22.9795 -7.12728 --19.2711 -22.7492 -8.02902 --19.0257 -22.3495 -8.91883 --19.8895 -22.6588 -9.317 --20.7496 -22.3489 -8.87094 --20.9006 -21.4633 -9.33278 --21.2252 -20.5356 -9.71352 --21.309 -20.8216 -8.72685 --21.2523 -21.1804 -7.80573 --21.2564 -21.5361 -6.93202 --22.1931 -21.7126 -7.10912 --22.6633 -22.6247 -7.39364 --23.64 -22.6539 -7.38257 --24.3559 -22.0915 -7.86802 --24.9109 -22.6306 -7.20335 --25.2371 -22.3603 -6.21351 --26.0495 -21.9689 -6.67229 --26.4214 -21.0588 -6.54317 --26.4782 -20.0161 -6.3547 --26.9893 -19.4037 -5.75337 --27.7069 -20.1158 -5.82743 --27.6574 -20.6003 -4.98471 --27.0331 -20.695 -4.23207 --26.4469 -20.7485 -3.42809 --27.2163 -20.7026 -2.6656 --27.5987 -20.0814 -1.96346 --27.3423 -19.092 -1.86237 --27.0439 -19.0775 -2.80918 --26.3872 -18.4412 -2.46021 --25.5977 -18.7838 -1.98539 --25.5223 -19.2082 -1.06151 --25.1493 -18.7464 -0.2292469 --25.0966 -19.5113 0.4843211 --24.0903 -19.7892 0.3908011 --23.1972 -20.063 -0.09210218 --23.9996 -19.9896 -0.6815769 --24.8522 -20.3937 -0.9328289 --25.8116 -20.4419 -1.25787 --26.4411 -20.8219 -1.94218 --26.3505 -21.508 -2.71148 --26.106 -22.448 -2.76063 --27.0263 -22.6198 -3.17211 --26.4183 -23.0712 -3.89126 --25.4866 -22.7876 -4.0898 --24.7699 -22.2096 -4.5175 --24.9503 -21.2314 -4.72351 --24.9178 -20.6363 -3.91217 --24.7666 -20.1358 -3.07427 --25.2178 -19.5592 -3.73603 --26.083 -19.0427 -3.80122 --26.6542 -18.2209 -3.5667 --27.6271 -18.359 -3.22031 --28.4522 -17.7683 -3.3492 --28.7714 -17.9013 -4.29267 --29.7087 -17.9549 -3.97284 --30.4244 -18.5028 -4.5227 --31.3736 -18.4807 -4.62808 --31.7529 -17.831 -4.00141 --31.4749 -16.8945 -3.80916 --30.5209 -17.0765 -3.76165 --30.4881 -16.3811 -3.10029 --30.7015 -15.7919 -3.80869 --31.0457 -14.9745 -4.31396 --30.5098 -14.2774 -4.83538 --29.6104 -14.4931 -4.63153 --28.8529 -15.093 -4.36048 --28.1722 -15.3227 -4.98921 --27.2861 -15.4446 -5.45039 --27.0536 -16.1893 -6.1548 --26.9681 -17.2377 -6.36607 --26.3418 -16.611 -6.85056 --25.9976 -17.223 -6.16631 --25.8878 -18.0996 -6.55679 --25.1878 -18.4797 -7.22614 --26.0939 -18.4407 -7.5826 --25.756 -17.5128 -7.66674 --24.7403 -17.436 -7.95162 --24.3414 -16.9396 -8.74811 --23.9348 -15.9885 -8.71027 --23.2873 -15.8692 -7.97257 --24.1344 -15.3431 -7.62414 --23.4077 -14.8772 -8.07185 --23.0906 -14.8404 -9.01234 --22.5616 -15.3112 -9.78361 --21.6159 -15.1201 -9.65367 --21.4822 -15.9643 -10.1662 --21.8489 -16.9055 -9.91433 --22.251 -17.3912 -9.12553 --22.953 -17.6048 -9.71765 --22.2619 -18.0746 -10.2739 --22.4585 -18.4079 -11.2432 --22.655 -19.0555 -11.958 --23.3597 -19.055 -12.6614 --24.1245 -18.6977 -13.2357 --24.8015 -18.242 -13.7728 --25.1755 -17.7838 -12.9005 --25.3666 -16.8263 -13.1738 --24.777 -16.0876 -13.5263 --24.1724 -16.7288 -13.0435 --24.0038 -17.657 -12.9725 --23.14 -17.3476 -13.3573 --22.405 -17.4056 -14.114 --21.5227 -17.847 -14.1256 --20.9647 -18.5576 -13.826 --20.4456 -19.4147 -14.2127 --19.5979 -19.3032 -14.7406 --19.3598 -20.2359 -14.9621 --18.3814 -20.0485 -14.8549 --18.0673 -21.0307 -14.916 --18.7262 -21.1832 -14.164 --18.6001 -22.07 -14.6024 --19.0228 -21.9873 -15.5602 --18.143 -21.8541 -15.9679 --18.742 -22.0365 -16.6504 --18.6822 -22.4723 -17.57 --17.9694 -22.5221 -18.2066 --17.4622 -21.7283 -17.723 --16.736 -21.0673 -17.374 --15.7811 -21.3537 -17.0446 --15.1483 -21.84 -17.6034 --15.9652 -21.6118 -18.0431 --16.0738 -21.9368 -19.0579 --16.8466 -21.5645 -19.6197 --17.4188 -21.0485 -19.0389 --17.4608 -20.6828 -19.9781 --17.5284 -21.1167 -20.9018 --17.6335 -20.457 -21.7255 --18.2965 -21.1971 -21.6645 --18.7869 -21.8414 -22.2825 --18.4286 -22.7674 -22.4586 --18.8628 -22.5113 -23.3067 --18.0961 -22.2047 -23.8972 --18.1489 -21.406 -23.383 --17.8302 -20.4716 -23.4896 --16.888 -20.787 -23.6274 --16.2713 -20.396 -24.2248 --16.6193 -21.2464 -24.5242 --17.3313 -20.5438 -24.7774 --18.0859 -19.9731 -24.8012 --17.7132 -19.0655 -25.0533 --18.2605 -18.2507 -25.1965 --18.4239 -17.3207 -25.0954 --19.0954 -17.336 -24.3218 --19.9518 -17.3903 -23.8396 --20.35 -18.2355 -23.4973 --20.2752 -17.6068 -22.6349 --21.1872 -18.0495 -22.3404 --21.5524 -17.2089 -21.8648 --21.6549 -16.6718 -21.0519 --22.3831 -17.2386 -20.6115 --22.2511 -17.1216 -19.616 --21.4134 -16.8692 -19.1394 --20.9638 -16.3072 -18.397 --21.3668 -17.1941 -17.9489 --21.0504 -16.6631 -17.1335 --20.9522 -15.6075 -17.02 --21.6926 -15.4803 -17.6442 --22.0368 -15.3316 -18.583 --22.4198 -14.3945 -18.4102 --22.7983 -14.2821 -17.4946 --22.2433 -13.8623 -16.8117 --22.876 -14.5896 -16.5057 --21.9265 -14.6315 -16.1994 --20.9728 -14.6481 -16.6448 --20.8291 -14.2433 -15.6965 --20.7322 -14.1778 -14.647 --21.2115 -14.7648 -14.0244 --20.5173 -15.362 -13.7412 --19.7008 -15.9922 -13.7109 --19.2228 -15.6088 -12.9134 --18.3494 -15.3869 -13.3228 --18.292 -15.7808 -14.2429 --17.2846 -15.7232 -14.1711 --17.1446 -15.076 -13.4189 --17.2152 -14.0816 -13.3314 --17.2092 -13.4827 -14.1171 --17.9192 -13.8276 -14.696 --17.7443 -13.368 -15.5887 --17.9719 -12.4819 -15.8824 --17.3777 -12.3507 -15.101 --16.7844 -12.4855 -15.8953 --16.8472 -12.5896 -16.9266 --16.1674 -13.2187 -16.6429 --15.6761 -13.6632 -15.8651 --14.7166 -13.9623 -15.8691 --13.7702 -13.7494 -15.5837 --13.616 -13.99 -16.5844 --12.6024 -14.0587 -16.5821 --11.7043 -13.6872 -16.5305 --10.9146 -13.0325 -16.2587 --10.6057 -13.8974 -16.3649 --10.8372 -14.4831 -17.0462 --11.2188 -14.8348 -16.1724 --10.2172 -15.049 -16.3378 --10.8489 -15.8083 -16.2124 --9.85519 -16.0638 -16.0433 --10.2058 -16.397 -16.9697 --9.62492 -16.6674 -17.7259 --10.1849 -17.3305 -18.1245 --10.9986 -17.3823 -17.6896 --11.3662 -18.2407 -17.4881 --11.0273 -18.9244 -18.0492 --11.0603 -19.6772 -18.8003 --11.5854 -18.9175 -19.0661 --11.9465 -18.1179 -19.5735 --12.8502 -18.5852 -19.6673 --13.1274 -19.088 -20.494 --12.197 -19.0963 -20.8327 --12.2563 -19.1466 -21.7571 --13.2369 -19.3521 -21.5272 --13.8103 -18.5038 -21.3311 --14.5356 -18.2965 -20.5985 --15.1848 -17.6052 -20.0506 --14.8239 -16.6701 -20.3268 --14.1033 -16.2457 -20.9824 --13.2401 -16.7411 -20.657 --12.627 -17.4479 -21.0642 --11.8263 -16.9119 -21.0936 --11.5197 -16.4287 -20.288 --11.6535 -16.0086 -19.376 --11.7489 -15.2834 -18.7189 --12.1331 -15.2745 -17.8372 --12.2903 -16.2515 -17.9644 --12.9814 -16.7264 -17.514 --13.0333 -17.1588 -18.439 --14.0184 -17.1719 -18.5373 --14.7544 -16.908 -17.9016 --14.8533 -15.964 -18.184 --14.826 -15.8356 -19.1917 --15.7045 -15.5277 -18.6911 --16.3744 -16.1893 -19.0611 --16.776 -15.2847 -19.0082 --17.7545 -15.1423 -18.7838 --17.7277 -16.0312 -19.4009 --17.9042 -16.4322 -18.4703 --17.2116 -16.998 -18.9338 --17.6802 -17.6253 -18.1128 --16.9745 -18.1328 -18.5971 --16.4433 -18.6425 -19.2914 --15.4377 -18.6692 -19.4296 --14.7674 -18.4243 -18.8975 --14.5228 -19.0951 -18.1961 --14.7329 -19.9717 -17.8333 --14.0695 -20.7735 -17.9565 --13.3399 -20.6653 -18.6363 --12.629 -20.7882 -19.2631 --12.2893 -21.5956 -18.8069 --11.7562 -22.048 -19.4283 --10.8218 -21.8121 -19.2284 --11.2006 -22.3236 -18.4921 --10.8605 -23.2807 -18.4616 --11.0438 -23.2465 -17.5154 --10.1447 -23.7339 -17.2669 --10.1174 -24.6576 -17.7591 --10.1368 -25.3685 -17.0801 --9.80921 -25.948 -17.8341 --10.2857 -25.9039 -18.7991 --10.0383 -26.4361 -19.6339 --10.2149 -27.4079 -19.7616 --10.3183 -27.6561 -20.7083 --9.93609 -26.863 -21.3011 --10.5832 -26.7039 -21.9898 --10.1675 -27.4405 -22.5215 --9.42454 -27.2819 -23.128 --9.02843 -26.3164 -23.2329 --8.19959 -26.3195 -23.8604 --7.80053 -27.2687 -23.8743 --6.90713 -27.2434 -23.3877 --6.33111 -26.51 -23.1964 --5.91638 -26.6538 -24.095 --4.97258 -26.8027 -24.4736 --5.14478 -26.1154 -25.1026 --5.74796 -25.6135 -25.7404 --6.38135 -25.3884 -25.0036 --6.99438 -25.7777 -24.3663 --7.569 -25.1202 -23.8671 --7.50582 -25.0406 -22.8466 --7.06757 -24.3008 -22.4375 --7.7724 -23.6096 -22.846 --8.43662 -23.0827 -22.3599 --7.5651 -22.5206 -22.3276 --7.85807 -21.6609 -22.8034 --8.4573 -22.1271 -23.4982 --8.88454 -21.6314 -24.289 --8.63844 -21.6618 -25.219 --8.92629 -21.0921 -25.8417 --8.35122 -20.5166 -25.1893 --8.79993 -19.933 -25.9171 --9.7027 -20.0921 -26.2541 --9.15336 -19.3776 -26.7891 --10.0703 -18.8247 -26.704 --9.90905 -17.8347 -26.7587 --10.0786 -17.1013 -26.0738 --10.9556 -17.372 -26.46 --11.0137 -18.399 -26.4154 --11.6348 -17.9433 -25.8149 --11.3579 -18.3975 -24.9092 --11.6209 -18.0015 -24.0039 --11.4419 -17.0411 -23.8736 --11.6284 -16.8039 -22.9324 --12.4082 -16.2075 -23.0937 --13.0548 -15.4938 -23.3725 --13.2049 -15.0113 -24.2062 --13.6973 -15.0368 -25.014 --14.6789 -15.1566 -25.3352 --15.5415 -14.9525 -25.7997 --15.7751 -15.1291 -24.8546 --16.5565 -15.6308 -24.5283 --16.368 -14.8273 -24.1374 --16.4674 -14.2102 -24.9443 --16.8044 -13.4864 -25.5631 --16.0429 -13.1669 -26.1445 --15.2953 -13.3341 -26.7942 --15.9108 -13.9484 -27.1894 --15.6724 -14.4617 -27.9953 --15.7825 -15.3304 -28.5358 --15.6842 -16.3296 -28.5025 --15.1035 -17.1332 -28.6942 --14.1605 -16.9116 -28.6701 --14.4656 -16.6388 -27.7614 --14.689 -15.8426 -27.2342 --14.2976 -14.9757 -27.4534 --14.0842 -14.4756 -28.2207 --13.4945 -13.7708 -28.6459 --13.4735 -13.4505 -27.7187 --12.6599 -12.8717 -27.4407 --12.7948 -11.8468 -27.3905 --12.7848 -11.1497 -26.7065 --12.0595 -10.6263 -26.2617 --12.6869 -9.83537 -26.6699 --13.4122 -10.4094 -27.028 --14.1663 -9.81212 -26.579 --14.3536 -9.50697 -27.4693 --14.6716 -9.11668 -28.3042 --14.7923 -8.5039 -27.5599 --14.9051 -7.50686 -27.5441 --14.1482 -6.94791 -27.8635 --14.616 -6.27409 -27.2133 --14.1486 -6.89672 -26.565 --14.6569 -6.13766 -26.0899 --14.7654 -6.3968 -25.0808 --15.7628 -6.24432 -24.8097 --15.5878 -6.3935 -23.8356 --15.3178 -5.93791 -22.9421 --15.3656 -6.90606 -22.4681 --15.2553 -6.08715 -21.8972 --14.4223 -6.15862 -21.4061 --14.0994 -6.56181 -20.5334 --13.348 -6.93713 -20.0726 --13.5576 -6.61046 -19.1416 --13.1043 -7.27828 -18.5499 --12.1566 -7.03705 -18.8316 --11.395 -7.56029 -18.8414 --11.7928 -8.27816 -19.414 --12.2617 -8.50337 -20.3418 --13.1256 -9.02593 -20.1807 --13.0082 -9.94551 -19.8718 --13.219 -10.4832 -20.6645 --12.3434 -10.4363 -21.1408 --12.9622 -10.6597 -21.9447 --13.7835 -10.2182 -21.4535 --14.0922 -10.6224 -22.3488 --13.6663 -10.0081 -23.011 --14.2928 -9.28981 -22.7864 --14.622 -9.32766 -21.9654 --15.4609 -9.08563 -21.5394 --14.9906 -9.81174 -21.1056 --15.4468 -10.5336 -20.6228 --16.2313 -10.3123 -20.0868 --16.2319 -11.2729 -19.7649 --16.6859 -11.8916 -19.075 --16.927 -12.6145 -19.7155 --16.9531 -12.6272 -20.6408 --17.7344 -13.2578 -20.7883 --17.913 -12.7064 -21.6 --18.1478 -12.1159 -22.2931 --18.3638 -12.2596 -23.2903 --17.5398 -12.9241 -23.3422 --16.9219 -13.1488 -24.1986 --16.1453 -12.6816 -24.5282 --16.3012 -12.074 -25.3338 --17.1682 -11.5657 -25.2574 --16.7827 -11.3992 -24.2995 --16.805 -10.595 -23.7472 --16.979 -9.58756 -23.965 --17.9801 -9.79447 -23.9992 --18.737 -9.49676 -23.4689 --19.0239 -9.85684 -24.2792 --19.9232 -9.75607 -24.5774 --19.5831 -8.98415 -24.1508 --19.661 -8.17299 -23.6346 --19.6673 -7.59271 -22.7604 --18.8197 -8.17047 -22.5428 --19.6021 -8.47157 -21.9552 --20.0924 -8.69936 -21.1547 --20.9299 -8.69453 -21.7166 --21.9047 -8.83814 -21.4422 --22.3431 -9.27505 -22.3534 --21.7135 -9.63038 -23.0562 --21.8332 -10.2509 -23.8659 --22.1553 -10.8092 -23.0941 --22.8502 -10.6125 -22.494 --22.6154 -11.4535 -22.0124 --23.3619 -10.8822 -21.6113 --23.765 -11.3014 -20.8108 --24.6639 -11.7307 -20.813 --25.428 -11.6074 -21.4888 --26.3955 -11.5971 -21.8206 --26.1523 -11.7281 -22.7716 --27.0179 -11.3426 -23.0669 --26.9634 -10.5784 -22.413 --27.2861 -10.2866 -21.4654 --26.8363 -10.5299 -20.6647 --26.9097 -9.50756 -20.3791 --27.1278 -9.46589 -19.3715 --26.1943 -9.86101 -19.3362 --25.3057 -10.0108 -18.8345 --24.5033 -9.47037 -18.7209 --23.8669 -9.20356 -17.988 --24.7462 -8.80105 -17.6871 --25.5896 -9.22855 -17.351 --26.3723 -9.84887 -17.4124 --27.2702 -9.56371 -17.1608 --26.8104 -9.13884 -16.4298 --26.4391 -8.22466 -16.5798 --26.0149 -7.63125 -17.3873 --25.2429 -7.22345 -17.9171 --25.8362 -6.4754 -17.7596 --26.5077 -5.83769 -18.1638 --26.6268 -5.49826 -17.306 --25.9928 -4.83091 -17.7257 --25.1021 -4.45143 -17.7666 --25.5345 -4.48399 -16.7905 --24.7297 -3.9345 -16.8356 --24.7742 -3.82918 -15.8465 --24.6254 -2.93259 -16.1992 --24.7703 -2.64016 -15.2466 --24.6812 -2.11847 -14.4597 --24.0577 -1.35656 -14.6875 --23.7904 -0.4241431 -14.3231 --24.802 -0.5568621 -14.1906 --24.8938 0.4312349 -14.0624 --24.6982 0.7391499 -15.0138 --24.9986 1.6236 -14.944 --24.6976 2.40228 -15.4138 --23.8533 2.69883 -15.8672 --23.7851 3.32391 -16.6237 --23.3411 4.20477 -16.2493 --23.3219 5.18447 -15.9339 --22.608 4.99619 -15.3013 --21.6307 5.18695 -15.362 --21.1308 4.44205 -15.9118 --20.4701 4.49724 -16.6185 --19.769 3.9079 -16.1106 --20.1534 4.53928 -15.4809 --20.6205 4.81307 -14.5678 --21.4559 4.31778 -14.3558 --21.6635 3.67587 -13.6851 --22.2405 4.28041 -13.0975 --21.4879 4.08964 -12.4742 --21.1296 4.57688 -11.6783 --20.662 5.07129 -10.9763 --20.2084 5.91874 -11.1884 --19.9313 6.56748 -11.9144 --18.9791 6.35055 -12.1642 --19.4377 6.15448 -13.0086 --19.7982 6.70833 -13.7665 --19.5021 6.46394 -14.6596 --19.4139 5.94214 -15.4647 --20.178 6.35365 -15.928 --19.795 6.64048 -16.793 --20.5339 7.19839 -16.3763 --20.5668 8.23986 -16.2179 --21.0929 8.55873 -16.9661 --21.056 7.74213 -17.3765 --20.9171 6.99574 -18.0718 --20.3917 6.92095 -18.8965 --20.8656 6.54506 -19.7222 --20.7711 5.60833 -19.1868 --20.7956 4.66396 -19.3591 --19.9716 4.56344 -19.8737 --19.6444 3.92357 -20.6074 --20.5338 3.43975 -20.5846 --21.4432 3.0486 -20.9315 --21.9362 2.22176 -21.287 --22.7181 2.16909 -20.7533 --23.0335 2.12704 -21.7015 --22.7943 2.67014 -22.4827 --22.9792 2.8159 -23.5227 --22.6925 3.59502 -24.0588 --22.8564 3.99286 -23.1812 --23.726 3.97733 -22.7053 --23.9585 3.83454 -21.7641 --24.0741 4.63336 -21.1917 --23.4344 5.28648 -20.9849 --23.7612 5.58345 -20.0874 --23.7479 5.41741 -19.0851 --23.4083 6.37706 -18.8143 --22.7578 6.67618 -19.5322 --21.8896 7.08915 -19.2707 --20.9839 7.65923 -19.0314 --21.5056 8.22228 -18.3895 --21.8358 8.83121 -19.1545 --21.2657 8.81304 -20.0608 --20.3734 8.39484 -20.1079 --19.7451 8.80868 -20.787 --19.0078 9.34739 -20.8615 --18.7619 8.46071 -20.5085 --17.9873 8.51751 -21.1658 --17.9238 8.74931 -20.1631 --17.2434 9.17322 -20.8133 --17.1305 10.1747 -21.1052 --17.0711 10.7663 -21.929 --17.5075 9.98531 -22.3012 --17.918 9.26831 -22.7477 --18.7558 9.20298 -22.2065 --19.1259 8.47773 -22.8261 --19.0572 8.05679 -21.9958 --20.0142 7.83867 -21.8946 --20.6482 7.64938 -21.2025 --20.2936 6.82961 -21.1186 --19.5893 6.13442 -21.1855 --19.04 6.04146 -20.3806 --19.4064 5.40523 -19.7357 --18.9285 4.68237 -19.2603 --18.772 3.79084 -19.6315 --18.0238 4.43963 -19.8776 --17.4981 5.18689 -20.2765 --17.89 5.51775 -19.3983 --17.942 5.70685 -18.4713 --17.2388 6.3046 -18.0663 --17.1559 6.21823 -17.0456 --17.2415 6.62675 -16.1622 --16.65 6.24993 -15.4811 --15.8966 6.38638 -14.9041 --16.4956 7.26601 -14.838 --16.0754 8.17824 -14.8899 --16.1052 9.10075 -14.47 --15.2787 9.39428 -14.9988 --14.9405 9.86576 -14.1468 --15.1263 8.89361 -13.8579 --15.9627 8.79518 -13.2699 --16.6798 9.55212 -13.163 --17.1898 8.98911 -12.4809 --17.1412 9.8857 -12.0061 --18.0456 10.317 -12.2285 --18.6096 9.76251 -11.6178 --19.0585 9.07654 -12.1971 --18.278 8.73176 -12.724 --18.695 8.32951 -13.5667 --19.0279 7.75703 -14.2889 --19.7668 7.94318 -13.6453 --20.5726 7.8482 -13.129 --20.7747 7.83359 -12.1195 --21.5301 7.25414 -12.4182 --22.0507 6.63895 -11.8524 --22.0171 5.62346 -11.895 --22.8515 5.53636 -11.36 --23.1795 6.08835 -10.6236 --22.3673 6.622 -10.9429 --22.0987 7.50637 -10.4896 --22.4583 8.10702 -11.1537 --22.7733 7.4989 -11.8112 --23.7553 7.59364 -12.1028 --24.5385 7.1427 -11.673 --24.3001 7.24374 -10.7504 --24.3823 6.24303 -10.5902 --24.3256 5.28909 -10.4381 --24.6278 5.2566 -9.50308 --25.0899 4.5231 -9.00025 --26.1056 4.66216 -8.87191 --26.6834 4.23712 -9.61109 --27.0522 3.31012 -9.78979 --27.9259 3.47677 -10.1329 --28.8256 3.79478 -10.3104 --28.1853 4.58276 -10.4422 --29.0781 4.56081 -10.9264 --29.7343 4.09637 -11.6223 --29.8645 3.72661 -12.5412 --29.7336 3.17144 -13.3467 --28.8486 3.44988 -13.4144 --28.5823 2.96183 -14.2219 --27.7376 3.34989 -14.5927 --27.6846 4.39072 -14.5662 --26.8557 4.16152 -15.0154 --26.5218 3.40354 -15.4882 --26.9212 2.46093 -15.5852 --27.496 3.02821 -16.2372 --27.7631 3.9375 -16.4835 --28.3034 3.27866 -16.9815 --28.2603 2.34972 -16.6939 --27.8125 1.46746 -16.3593 --27.4149 1.39644 -15.3669 --27.6637 0.5254449 -15.8203 --27.4521 -0.2563051 -15.2981 --27.7041 -0.9512541 -15.9006 --27.6664 -0.9592731 -16.915 --27.2367 -0.3411821 -17.5441 --26.3403 0.03254033 -17.7512 --25.9827 -0.2765251 -18.6375 --25.9752 -0.06560697 -19.6272 --25.3768 -0.7243281 -19.9732 --25.8154 -0.3620421 -20.8284 --26.7138 -0.8464161 -20.6495 --26.7656 -1.71176 -21.1843 --26.5685 -2.16539 -20.322 --27.4715 -1.9368 -20.1124 --26.7582 -1.40019 -19.5209 --26.121 -1.39179 -18.7612 --26.7149 -1.95044 -18.142 --26.6465 -2.99615 -18.118 --26.5038 -3.00839 -17.0949 --26.0992 -2.25647 -16.57 --26.9217 -2.3942 -16.0472 --27.8172 -1.9629 -15.9825 --27.691 -2.67278 -15.3286 --28.5206 -2.98813 -14.9819 --28.3923 -3.03196 -13.9708 --29.0072 -2.29396 -14.0407 --29.1756 -2.43888 -13.0812 --29.652 -2.95745 -12.3988 --30.3465 -2.22577 -12.6085 --30.6343 -2.90817 -11.9464 --30.9873 -2.33286 -11.1772 --30.2171 -1.90371 -10.6774 --29.4698 -1.96255 -9.99046 --28.8714 -2.12037 -9.21182 --29.2458 -2.98706 -9.12135 --28.3165 -2.8964 -8.71837 --27.6719 -3.56916 -8.84936 --27.5315 -4.51781 -8.43869 --28.1978 -4.39197 -9.03523 --28.3224 -4.20856 -9.91141 --29.2247 -3.83851 -9.66929 --30.1615 -4.00294 -10.0349 --30.5792 -3.70021 -9.1717 --29.9744 -3.81461 -8.39494 --29.6471 -4.84823 -8.2906 --29.3276 -5.29837 -7.52392 --28.7411 -5.98852 -8.06335 --28.1203 -6.68548 -8.38002 --27.5502 -7.33137 -7.90733 --26.9833 -7.69181 -7.17488 --27.1692 -6.68796 -7.09935 --27.5463 -6.77892 -6.15545 --27.0843 -5.90896 -5.99587 --26.8035 -4.99696 -6.06111 --25.9209 -4.48508 -5.91199 --24.9408 -4.32956 -5.63025 --24.6067 -3.66141 -6.28557 --24.5375 -3.25885 -7.18129 --24.1135 -3.36204 -8.14449 --23.2281 -3.74447 -8.26723 --22.9438 -3.54474 -7.33406 --22.0956 -4.11682 -7.34574 --22.6368 -4.70593 -6.84575 --22.7251 -4.37976 -5.92943 --22.1072 -3.75443 -5.37541 --21.5451 -4.26216 -4.73994 --21.8676 -4.04217 -3.80814 --21.3239 -4.83183 -3.50418 --21.4021 -5.06487 -2.59724 --22.1271 -5.70024 -2.2488 --22.6547 -4.9874 -2.31272 --22.934 -5.67918 -2.94661 --23.6816 -5.95824 -3.5562 --23.784 -5.06972 -4.01338 --23.7705 -4.99249 -2.98449 --24.174 -5.50145 -2.22744 --24.5148 -6.23584 -2.78629 --23.6336 -6.63795 -2.80965 --23.7408 -7.18242 -1.97279 --23.5637 -8.16293 -1.6422 --23.1248 -8.71743 -0.9636129 --22.7494 -9.34704 -1.68109 --21.7475 -9.22428 -1.52062 --21.8432 -9.58775 -0.5700019 --21.0993 -10.2084 -0.4303749 --20.1693 -10.102 -0.4862069 --19.442 -10.1163 -1.1543 --19.5984 -9.30872 -1.72092 --19.78 -8.94724 -0.7901939 --19.219 -8.30481 -1.30817 --18.8594 -8.42836 -2.167 --19.8349 -8.32685 -2.29785 --20.0504 -9.20156 -2.72843 --20.5851 -10.0627 -2.44479 --20.5687 -10.9643 -2.03752 --21.5718 -10.9278 -1.89905 --21.518 -11.2736 -0.9153659 --21.4069 -11.7994 -1.71363 --21.969 -12.5137 -1.27429 --22.8333 -12.1605 -1.45836 --23.7243 -12.6779 -1.65155 --23.6564 -13.7049 -1.7039 --23.604 -13.7172 -0.7090639 --23.4119 -14.3982 0.02548502 --24.3577 -14.3871 0.03944372 --24.4985 -14.5549 -0.9035829 --24.8444 -15.431 -0.4577419 --25.6475 -14.8906 -0.7021109 --25.9562 -14.0475 -1.26335 --26.7976 -13.5948 -1.59723 --27.2995 -14.1695 -2.30216 --27.7743 -14.7383 -3.03548 --28.0544 -15.5547 -2.54447 --27.8334 -16.1241 -1.81521 --27.5888 -16.135 -0.8802419 --26.9404 -15.3167 -0.7427449 --26.8653 -15.9364 0.08066272 --26.0706 -15.4556 0.4948221 --25.6067 -14.7679 0.9731351 --25.4462 -13.9545 1.58306 --25.0399 -13.1577 1.15769 --25.2672 -12.3348 0.6995141 --25.7869 -12.5659 1.52162 --26.0478 -11.7249 2.06 --25.1009 -11.8928 2.09528 --25.3837 -11.3155 2.88302 --25.3943 -11.1769 3.89573 --24.4795 -10.9497 4.38772 --24.5039 -9.99064 4.14349 --25.3949 -10.0779 4.61474 --26.1865 -10.3106 5.23337 --26.0977 -9.61525 5.97599 --25.178 -9.67518 6.11553 --24.461 -9.7104 5.39108 --23.7357 -10.2595 5.78088 --23.9504 -11.1859 5.45311 --24.1436 -12.2091 5.45513 --24.1344 -13.1178 5.83205 --24.216 -13.3321 6.78767 --24.5114 -14.3347 6.60887 --23.565 -14.3017 6.33314 --23.4666 -14.9382 5.59089 --22.5205 -15.1254 5.69376 --21.9518 -15.2936 4.86378 --21.0152 -15.6423 4.63879 --20.8048 -14.8924 4.11101 --20.8347 -14.0539 4.67221 --20.7715 -14.5242 5.52782 --20.0098 -15.1266 5.34222 --19.4278 -16.0094 5.46612 --19.2671 -16.9669 5.72791 --18.8841 -16.6071 6.53155 --18.7367 -17.2537 7.29884 --18.4041 -17.4589 8.27543 --18.7058 -17.7103 9.19448 --19.2236 -18.1289 9.89915 --18.6684 -18.0592 10.7555 --18.3369 -17.5656 11.5327 --19.0581 -17.4156 12.2669 --18.7819 -18.0584 13.0634 --17.929 -18.373 13.5768 --17.3029 -17.7252 13.0988 --17.9428 -17.306 13.7603 --17.9521 -16.4526 14.2408 --17.2988 -16.143 13.6366 --16.3052 -15.8037 13.5681 --15.5476 -15.1807 13.5569 --15.9253 -14.9494 12.5818 --16.2534 -14.3944 11.8909 --16.8939 -13.6725 11.7425 --17.7469 -14.2887 11.7164 --18.7794 -14.1501 11.7972 --18.6372 -13.4653 12.5188 --19.3636 -13.1087 12.0196 --20.3571 -13.0839 11.9352 --21.1263 -13.6909 12.1855 --21.8292 -13.0317 12.0364 --21.8385 -13.6053 11.1961 --21.5903 -14.4481 10.715 --20.8676 -14.9772 10.9795 --21.1673 -15.4593 10.1499 --20.9148 -16.2147 9.59287 --20.8382 -16.6032 10.5589 --20.6283 -16.3808 11.4997 --21.3657 -16.1675 12.1776 --20.8605 -16.8955 12.6522 --21.0447 -17.8908 12.9839 --21.3973 -18.5855 12.2955 --20.6589 -18.279 11.6545 --19.8586 -18.8825 11.7498 --18.9661 -18.6813 11.4107 --18.7595 -19.2177 12.1729 --18.5484 -19.8531 12.905 --19.5634 -19.9964 13.0224 --20.3051 -20.6907 12.939 --19.7244 -21.5264 12.9207 --18.9719 -21.3214 13.5234 --18.4637 -21.9871 14.0377 --17.8017 -22.3104 13.5105 --17.3343 -21.4535 13.5202 --16.3115 -21.4311 13.3609 --16.6297 -21.852 12.5159 --15.9962 -21.0336 12.4124 --15.0484 -20.7638 12.5325 --14.0627 -20.6744 12.6968 --13.8441 -20.0664 13.4683 --13.104 -20.5765 13.0934 --12.1883 -20.3204 13.4098 --11.5591 -20.3789 14.1527 --11.2895 -21.3743 14.0379 --11.9626 -21.2837 14.7753 --11.4696 -22.1592 14.6469 --10.9447 -22.0515 15.4943 --10.5079 -22.9447 15.2828 --10.7278 -23.796 14.8563 --10.7421 -24.6517 14.3642 --11.1529 -24.0305 13.6006 --11.5962 -23.4798 14.2489 --12.299 -23.211 14.8693 --13.1839 -22.7269 15.0591 --13.2492 -22.8073 16.0282 --12.8923 -22.2384 16.7674 --13.012 -21.2766 16.393 --13.9915 -21.6347 16.2412 --13.6089 -21.1342 15.5023 --13.1324 -21.0067 14.5818 --12.7497 -20.4532 15.3168 --12.2761 -19.6925 14.8657 --12.0728 -19.1457 15.6102 --12.9825 -19.4205 15.4093 --13.9045 -19.4558 15.8422 --14.7193 -19.7738 16.4446 --14.2653 -19.4316 17.254 --15.1146 -18.9917 17.728 --15.5661 -19.5924 17.1626 --16.3288 -20.1362 17.5054 --16.994 -20.8572 17.4288 --17.4274 -20.8904 16.5199 --17.6577 -19.9385 16.5808 --18.6032 -19.6533 16.3646 --19.5205 -19.5256 15.9222 --18.8349 -19.2105 15.1948 --19.2482 -19.1882 14.3209 --20.1591 -18.7486 14.4798 --20.3373 -19.7321 14.5778 --20.6573 -19.7873 15.5689 --20.8237 -20.7689 15.5374 --21.5217 -21.3051 15.2584 --21.9278 -22.1577 14.8761 --22.6444 -21.4355 15.2531 --23.1584 -21.0337 16.0264 --23.0232 -20.8485 16.95 --23.6428 -20.0754 16.7791 --24.4553 -20.3345 16.2629 --24.9368 -19.5604 16.5357 --24.4211 -18.7356 16.6847 --25.2904 -18.2277 16.8456 --25.4538 -17.26 16.5058 --26.171 -16.9013 15.876 --25.7376 -15.9631 15.9395 --26.1431 -15.6236 15.1244 --26.0883 -15.0571 14.3439 --26.3336 -14.0926 14.1812 --26.2734 -14.1292 13.2455 --25.4074 -13.7129 13.3116 --26.1322 -13.1317 13.5918 --27.0469 -13.4303 13.2943 --27.9957 -13.191 13.6699 --28.0827 -12.9088 14.5878 --27.2764 -12.4171 15.0245 --27.3657 -11.5363 15.5231 --26.6972 -11.2559 16.2733 --26.6698 -12.2093 16.1537 --26.1697 -12.219 15.3311 --26.4021 -12.0994 14.3754 --26.1615 -11.679 13.436 --25.5072 -11.8015 12.7364 --24.6673 -12.06 12.2173 --23.7025 -11.6135 12.1575 --23.285 -10.9902 11.5062 --23.1126 -11.5867 10.7076 --23.5537 -12.5054 10.9306 --23.8663 -13.5064 10.8958 --24.5095 -14.303 10.9756 --23.9126 -14.7005 11.7059 --23.3533 -15.5691 11.7906 --22.7966 -15.6796 12.5884 --22 -15.4936 13.1441 --22.8068 -15.4745 13.7714 --22.5884 -15.9992 14.6084 --22.1379 -16.8288 14.7241 --21.5285 -16.7903 15.4752 --20.6366 -16.747 16.0173 --20.0355 -16.2817 16.634 --19.0982 -16.565 16.6498 --18.5463 -17.0372 17.2952 --18.2818 -18.0402 17.5299 --17.737 -17.8907 16.7918 --16.7876 -18.1121 16.7343 --16.4419 -18.964 17.2723 --16.2805 -18.551 18.1721 --16.8584 -19.2654 18.2119 --17.3122 -20.1372 18.3085 --18.2512 -19.9257 18.5022 --18.7986 -19.3183 19.1464 --19.5851 -19.0391 19.6614 --20.3504 -19.4437 20.1835 --20.5525 -18.6696 20.6966 --21.2067 -18.5027 20.0739 --20.797 -17.8698 19.3874 --21.5811 -18.0503 18.7517 --22.4921 -17.707 18.7149 --22.4027 -18.1117 19.5833 --22.6112 -17.3828 20.2676 --21.7865 -16.9157 20.3254 --21.5787 -17.4157 21.1869 --21.5131 -17.4152 22.1062 --22.3403 -16.8677 22.1879 --21.7466 -16.014 22.1118 --22.0557 -15.4338 22.8854 --21.994 -14.4361 23.1085 --21.4903 -13.9457 22.4406 --20.4903 -14.012 22.0919 --20.0846 -13.4732 21.3579 --19.4658 -13.2444 20.5956 --18.9733 -12.4195 20.5214 --18.6361 -11.7144 21.15 --18.6892 -10.8799 20.6117 --17.7894 -10.4831 20.4078 --17.6217 -10.3245 19.4129 --18.5027 -10.2979 18.8875 --17.9305 -11.0514 18.465 --17.6904 -11.5552 19.2858 --18.4133 -12.2878 19.4562 --17.8725 -12.7589 20.0785 --17.4596 -13.2801 20.9618 --18.1337 -13.6603 21.5942 --18.3444 -14.6398 21.6665 --18.2308 -15.501 21.2293 --17.3258 -15.1668 20.9423 --16.9849 -14.3486 20.596 --17.3797 -13.8064 19.8859 --16.6583 -13.2558 19.8958 --16.0322 -13.4125 19.1404 --15.3341 -12.6801 19.0193 --15.4397 -13.3465 18.1972 --14.5927 -13.7878 18.2811 --13.781 -14.3821 18.1964 --13.3763 -15.1586 17.7349 --14.0932 -15.6389 17.2564 --13.9407 -16.185 18.1581 --14.2897 -17.0431 17.9353 --14.8107 -17.1079 17.0567 --14.9836 -16.4462 16.384 --15.1414 -17.1592 15.7517 --15.8036 -17.2972 14.9962 --16.0969 -16.4274 14.6547 --15.514 -16.9957 14.0159 --14.8127 -17.4236 14.5469 --14.55 -18.3656 14.3801 --14.4733 -19.2259 14.7652 --15.4649 -19.064 14.6034 --15.6662 -18.8711 13.6296 --15.9454 -19.7936 14.0393 --15.6533 -20.5896 14.4661 --15.4067 -21.2956 15.1713 --15.6371 -22.186 15.6411 --15.2899 -23.0906 15.668 --15.0702 -22.9481 14.7001 --15.8364 -23.0486 14.0812 --16.8405 -22.729 14.0058 --17.3164 -23.213 13.2862 --18.142 -23.5531 12.9598 --19.063 -24.0638 12.819 --18.926 -24.9774 12.3338 --17.9582 -24.7229 12.0608 --16.9392 -24.7838 11.8896 --16.8896 -24.1334 12.6942 --16.9457 -23.6763 11.7814 --16.7802 -24.1677 10.9519 --16.553 -24.1677 9.96368 --16.867 -24.2428 9.03106 --15.9881 -23.8607 8.73761 --16.152 -24.4616 8.03724 --16.3945 -23.8817 7.24581 --16.7537 -24.1899 6.33066 --17.4032 -23.4182 6.5211 --17.406 -22.5961 7.12925 --16.5341 -22.4752 6.7605 --16.8892 -22.6667 5.87923 --17.3553 -22.4494 4.98818 --18.0102 -22.6108 4.21594 --17.2798 -23.1635 3.77436 --16.6265 -23.8049 4.17177 --16.505 -24.2144 5.04199 --15.9567 -24.8943 5.4971 --15.347 -25.3652 6.20004 --15.0025 -24.5023 6.52599 --14.2681 -24.1568 6.01331 --13.3886 -24.5329 6.25802 --13.2841 -25.3968 5.79701 --12.5842 -25.9677 5.29897 --11.9655 -26.1404 6.01336 --11.7533 -26.9817 6.44744 --11.5911 -27.9659 6.59363 --12.2713 -28.4011 7.19685 --13.0167 -28.2581 6.48996 --13.4544 -27.3787 6.65791 --14.3005 -26.8613 6.58845 --14.3922 -26.0477 7.06044 --14.0706 -25.6242 7.78914 --13.465 -26.3361 7.42795 --13.2916 -26.7711 8.32618 --13.2629 -27.4941 9.00212 --12.8385 -28.2732 9.32759 --12.0129 -28.0631 9.8657 --12.4833 -28.4626 10.6264 --12.4033 -29.2338 11.2593 --11.7663 -29.0647 12.0628 --11.0853 -28.3129 12.1202 --11.4432 -28.4734 13.0569 --11.8124 -27.7118 12.4426 --11.3759 -26.9726 13.0097 --10.7024 -26.2411 12.7046 --10.1676 -27.0021 12.3404 --9.33749 -26.8593 12.8543 --8.68249 -27.4808 12.3361 --7.72813 -27.4037 12.543 --7.70318 -26.5052 13.1014 --7.47899 -26.3807 12.0972 --7.94657 -25.5057 12.306 --7.99804 -24.7211 12.9444 --7.06884 -24.3353 13.0986 --7.52057 -23.5684 13.4719 --6.4991 -23.3537 13.4791 --5.67189 -23.5212 12.927 --5.41447 -24.1764 12.2397 --6.12909 -24.6829 11.9207 --6.73531 -25.0746 11.2408 --7.28631 -25.5997 10.5006 --7.61487 -26.1817 9.72923 --7.78173 -25.2934 9.26495 --6.99246 -24.8107 9.08603 --6.62649 -24.1273 9.64255 --5.68124 -24.193 9.48956 --4.83651 -24.0197 9.11793 --4.61761 -24.5427 8.33205 --4.11979 -24.9814 7.58152 --4.15021 -25.6946 6.91754 --5.03723 -26.1731 6.9267 --5.47597 -27.0965 6.88921 --4.99915 -27.4012 7.68266 --5.53606 -26.7236 8.19024 --6.54216 -26.9328 8.37616 --6.99211 -27.4364 7.71676 --7.38671 -28.3599 7.35999 --7.8555 -27.5988 6.95629 --8.35456 -26.8653 6.42789 --8.28665 -26.0962 5.80234 --9.23205 -26.4384 5.87059 --9.51788 -26.1555 6.81829 --9.07878 -26.6719 7.53198 --9.28952 -26.0168 8.26427 --9.65753 -25.2936 8.82026 --9.50596 -24.2894 8.49566 --8.83624 -24.4706 7.83024 --7.95976 -24.055 7.97713 --7.88607 -23.2767 7.33717 --7.42865 -22.7217 6.70699 --8.09596 -23.0572 6.00346 --8.95418 -23.473 6.39012 --9.3165 -24.2745 6.94998 --10.2881 -24.3344 6.97775 --10.7448 -25.1476 7.23885 --11.5631 -25.0172 6.8082 --12.2475 -24.3676 7.16706 --13.0819 -24.6389 7.5666 --14.0012 -24.3454 7.47721 --14.3827 -23.8045 8.26867 --14.0679 -24.0224 9.24947 --13.8202 -23.0809 9.06259 --13.4141 -22.1905 8.95065 --12.7452 -22.7677 8.52214 --11.8881 -22.2578 8.43814 --12.5483 -21.4479 8.46872 --12.851 -21.4677 7.49163 --12.9582 -20.536 7.69096 --13.825 -20.7836 7.25713 --14.2753 -20.2822 6.55418 --13.5163 -19.7728 6.68312 --12.7233 -19.3739 6.36414 --12.2661 -20.2379 6.45753 --11.5988 -19.9514 7.11634 --10.7939 -19.5645 7.50264 --10.1618 -20.1686 7.08363 --9.9247 -20.4212 6.18356 --10.2284 -19.5664 5.64438 --10.5442 -18.6805 5.09204 --10.1762 -18.2118 5.97434 --10.8134 -17.6876 6.54978 --11.2323 -16.7288 6.48077 --11.3677 -16.3823 7.35604 --11.1453 -16.7198 8.30394 --12.0877 -16.6145 7.9436 --12.9975 -16.6557 7.45222 --12.9982 -17.2788 8.20977 --13.5021 -17.6291 7.44686 --13.4891 -18.5064 7.05224 --14.1053 -17.9478 6.47906 --14.6324 -18.1926 5.67485 --15.5372 -18.696 5.69861 --15.6554 -17.7038 5.57472 --15.8988 -17.0734 6.30473 --15.2031 -16.5114 5.78592 --15.328 -16.5237 4.87456 --14.4384 -16.1358 4.979 --13.738 -16.281 5.7085 --13.1559 -15.553 5.9372 --14.107 -15.3993 6.05629 --14.5699 -15.0644 6.81135 --14.1732 -14.1299 6.98683 --13.9006 -14.8216 7.69782 --14.8362 -15.0377 7.73358 --15.2494 -15.8888 8.02317 --15.441 -16.023 7.08581 --16.2723 -16.1634 6.61066 --16.2955 -15.4056 5.97924 --16.152 -15.8768 5.0707 --17.1057 -15.7198 4.79409 --17.7617 -15.9428 5.45625 --18.0114 -16.286 4.60124 --17.1727 -16.8631 4.68151 --17.6949 -17.623 5.17391 --17.2023 -18.4895 5.26712 --17.047 -18.0075 6.11938 --17.9232 -18.2383 6.53618 --17.1476 -18.8953 6.88663 --17.9367 -18.8557 7.52722 --18.8318 -18.9422 7.14218 --19.7401 -19.3098 7.28826 --19.1996 -19.8847 7.9638 --18.5398 -20.3548 8.51733 --18.1975 -20.754 7.7049 --17.662 -21.0949 8.45369 --16.7077 -20.7471 8.66188 --16.2248 -21.3278 8.01383 --15.2823 -20.8271 8.07027 --14.8112 -19.9347 7.80203 --15.212 -18.994 8.21173 --15.3186 -18.6193 9.13512 --14.9647 -17.7391 9.35845 --15.2644 -18.0987 10.2124 --14.375 -18.3946 10.7023 --13.3405 -18.1941 10.8595 --12.6917 -18.8627 11.2491 --13.0693 -19.5194 10.5889 --13.2702 -20.422 10.9583 --12.5535 -20.6783 10.3192 --12.1998 -21.6036 10.7328 --12.5562 -22.3532 11.3133 --13.354 -22.4882 12.0326 --13.9429 -22.8689 12.7318 --13.0382 -23.2082 13.0815 --12.4436 -23.428 12.3464 --11.7385 -23.0571 11.6751 --11.4078 -22.9099 10.7626 --10.5413 -23.2801 11.1334 --10.2565 -24.2312 11.2577 --9.68239 -24.1788 12.0454 --10.3905 -23.4431 12.2075 --9.90236 -23.1593 13.028 --9.16788 -22.5631 13.2756 --9.15498 -21.6045 13.3775 --10.104 -21.3457 13.3369 --9.89748 -21.2044 14.3275 --9.23217 -20.4627 14.3614 --8.51968 -20.2167 15.0205 --7.68666 -20.3247 14.444 --7.92769 -20.3738 13.4745 --8.39157 -20.2988 12.5319 --8.83479 -19.4594 12.1655 --9.6842 -18.8926 11.9347 --10.2479 -19.4202 12.5913 --10.5801 -20.2817 12.907 --9.79529 -20.475 12.3211 --9.67152 -20.814 11.401 --9.00982 -20.3376 10.8706 --8.4768 -21.1685 10.6208 --7.67661 -21.0306 11.2776 --6.99726 -21.0987 11.9833 --6.53079 -21.9344 12.2905 --7.06129 -22.6589 11.8483 --7.50473 -23.1309 11.0706 --7.56649 -23.5013 10.1628 --8.16134 -22.7726 10.3414 --8.41355 -22.1358 9.63778 --7.63565 -22.068 9.02319 --7.02765 -21.8009 8.27645 --6.54382 -21.4861 7.44843 --6.56549 -20.6385 6.94967 --6.94432 -19.8355 7.3074 --7.21638 -19.9444 8.27236 --7.58838 -20.2023 9.16827 --8.4904 -20.4526 8.84445 --8.15222 -21.077 8.21029 --8.96232 -21.7121 8.00589 --9.52266 -22.4849 7.61783 --9.62458 -22.5674 6.63579 --10.018 -21.6277 6.55751 --10.616 -22.1384 7.2223 --11.2484 -22.0098 6.36159 --11.2696 -21.0791 5.91874 --12.1994 -21.4702 5.76509 --12.8321 -21.6355 4.97413 --13.1821 -21.5384 4.06886 --14.0043 -21.1221 3.71267 --13.7598 -20.6485 2.95362 --14.6706 -21.0981 2.80594 --15.3308 -21.0423 3.52278 --16.0334 -20.3948 3.16527 --15.6037 -20.7701 2.34816 --15.4398 -21.0736 1.37482 --14.5664 -20.7507 0.9463291 --14.2682 -20.8852 0.01858372 --13.5598 -21.3331 -0.5194279 --13.3889 -21.3806 -1.53008 --13.221 -20.4881 -1.12524 --13.3949 -19.7353 -1.7655 --12.4829 -20.0615 -2.02771 --12.6649 -19.8074 -2.93458 --12.7942 -20.3404 -3.8572 --12.9722 -19.3794 -3.84331 --13.776 -19.6413 -4.40887 --13.1151 -20.2232 -4.85247 --12.2432 -20.6669 -4.95343 --12.8731 -20.819 -5.68872 --12.8724 -20.5833 -6.65003 --12.1177 -20.7313 -7.23155 --11.9441 -19.7531 -7.05954 --11.224 -19.495 -7.71541 --10.856 -19.1028 -8.52595 --11.3479 -19.8051 -8.9675 --10.7873 -20.3108 -9.7458 --11.0878 -20.6928 -10.5823 --11.6754 -21.5731 -10.7885 --12.4922 -21.2441 -11.1545 --12.6379 -20.2787 -10.9958 --13.2944 -19.9427 -10.3066 --13.278 -19.0142 -10.4932 --12.8489 -18.325 -9.94689 --13.1326 -17.6801 -9.21585 --12.6 -16.8763 -9.5432 --12.5673 -16.5999 -10.4984 --12.3289 -16.7772 -11.4412 --11.6131 -16.0952 -11.3532 --11.9656 -15.3665 -10.8125 --12.2511 -14.9777 -9.96247 --13.0461 -15.0876 -9.38049 --13.8361 -15.1606 -8.79472 --14.1214 -14.8897 -7.90009 --14.5047 -15.2207 -7.13997 --14.8039 -16.0133 -6.65692 --13.8165 -16.0261 -6.58335 --13.7425 -16.9206 -6.17175 --13.8782 -17.721 -6.69159 --14.4253 -18.263 -7.3693 --14.7873 -19.2154 -7.64236 --14.4434 -19.1845 -6.64762 --15.3359 -18.5956 -6.70453 --16.1349 -19.0441 -7.17505 --16.7457 -18.9961 -7.89677 --16.503 -19.9239 -8.22841 --15.9415 -19.8744 -9.02668 --15.995 -20.8236 -9.17704 --15.5528 -21.0666 -10.0479 --14.7764 -21.6959 -10.0796 --14.0092 -22.3424 -10.0379 --14.7596 -22.7696 -9.46997 --14.4478 -23.6251 -9.09634 --13.909 -22.8932 -8.68726 --14.2586 -21.8985 -8.78402 --14.3306 -21.7199 -7.79238 --13.7608 -22.4404 -7.64928 --14.4073 -23.0971 -7.35915 --14.2086 -24.1782 -7.57188 --13.9273 -24.9503 -8.03676 --13.347 -24.4604 -8.61005 --13.0951 -23.6118 -9.09704 --12.5978 -22.8234 -9.49982 --12.1433 -22.1701 -8.9156 --12.5837 -21.4307 -9.39614 --13.4584 -21.1117 -9.06271 --12.8076 -20.6945 -8.41343 --12.5209 -21.6032 -8.07223 --12.0999 -22.0736 -7.26527 --12.0653 -23.0643 -7.17083 --11.101 -22.6429 -7.35272 --10.6343 -23.5125 -7.61482 --10.4575 -22.7285 -8.21005 --9.96988 -23.5058 -8.53786 --10.5366 -23.2984 -9.29094 --9.88833 -22.4993 -9.1612 --9.26189 -22.4335 -9.88935 --9.55457 -23.4853 -9.7156 --8.90766 -24.1433 -9.38025 --9.01619 -25.1001 -8.99852 --9.67157 -24.878 -9.71847 --9.82782 -24.8393 -10.6609 --9.44734 -24.0063 -11.1339 --10.3723 -23.7731 -11.5216 --11.2876 -23.3968 -11.4059 --11.531 -22.9328 -12.1825 --11.4163 -22.02 -12.5226 --10.4566 -22.3641 -12.6166 --10.6108 -21.3649 -12.8519 --11.1795 -20.8355 -13.5105 --10.9386 -20.3124 -12.7109 --11.1902 -19.4211 -13.0419 --10.9048 -18.526 -12.7767 --11.2434 -17.9221 -12.0505 --10.2955 -17.6203 -12.1797 --9.92415 -16.8283 -12.6878 --9.12948 -16.7316 -12.1084 --9.27972 -16.6311 -11.1319 --9.42417 -16.4717 -10.1605 --10.1302 -16.0325 -10.7755 --9.65797 -15.2152 -10.3101 --9.02813 -15.4776 -11.0147 --8.61998 -14.943 -11.8026 --8.14703 -14.9286 -10.914 --7.77494 -15.1843 -10.0007 --7.96588 -15.1283 -9.08874 --7.11457 -14.8896 -8.63949 --7.19579 -14.7987 -7.66504 --7.017 -14.6114 -6.74066 --6.35252 -15.3321 -6.56384 --5.61036 -15.9225 -6.27199 --5.99849 -16.353 -5.45015 --6.54826 -17.0565 -5.80272 --6.25956 -18.0303 -6.06956 --7.13261 -17.7163 -6.47061 --6.62804 -17.4804 -7.24971 --7.15244 -17.5008 -8.10202 --7.63518 -17.2121 -8.94411 --8.28479 -17.6428 -9.52161 --7.30211 -17.8117 -9.60037 --7.37105 -18.7661 -9.06496 --7.07755 -18.9179 -10.0825 --6.28563 -18.8405 -10.7027 --5.58628 -19.568 -11.0817 --5.79526 -20.4977 -10.8608 --6.27432 -20.409 -11.744 --7.24757 -20.6862 -12.018 --8.15805 -20.5775 -12.2194 --8.31647 -20.3899 -11.2231 --8.29053 -20.3758 -10.3001 --8.67418 -21.2769 -10.0863 --8.48523 -21.8136 -9.27615 --7.64932 -21.5046 -9.67972 --7.11744 -22.2369 -9.48083 --7.828 -22.848 -9.8071 --7.89367 -22.5407 -8.87451 --8.26425 -22.9456 -8.03499 --8.37579 -23.7695 -8.56829 --8.50131 -24.3071 -7.75776 --8.49888 -23.7913 -6.8924 --9.17588 -24.5362 -6.52647 --9.50766 -25.3503 -6.04282 --8.96764 -26.0578 -6.2432 --8.11769 -26.233 -6.75096 --7.10561 -26.2423 -6.81527 --6.76705 -25.4356 -7.14745 --7.40931 -24.844 -7.53426 --6.69106 -24.4561 -8.01994 --6.02256 -23.8157 -7.67025 --6.20572 -23.0797 -7.12119 --6.08308 -22.7013 -6.21072 --5.68986 -23.5723 -6.06144 --4.70475 -23.5465 -5.7099 --3.73891 -23.7694 -5.58015 --3.82096 -24.697 -5.15173 --3.18043 -25.1851 -5.79163 --3.22962 -26.014 -6.3186 --3.98791 -26.1603 -7.02967 --4.04843 -27.138 -7.27386 --3.73774 -27.3562 -8.26264 --2.93542 -27.4988 -7.53847 --2.15808 -27.4925 -6.85493 --1.43666 -27.2389 -7.52501 --1.13951 -26.643 -8.25546 --0.725724 -26.3944 -9.10349 --0.472588 -27.2314 -8.7066 -0.499898 -27.6188 -8.75347 -0.143184 -28.1725 -9.44328 -0.136604 -28.2008 -10.3848 --0.11103 -29.1345 -10.6821 --0.934206 -28.8613 -11.0161 --0.13751 -28.461 -11.4908 --0.981858 -28.3806 -12.0691 --1.13454 -27.3521 -12.084 --1.12787 -27.7758 -13.0637 --0.819436 -26.8047 -13.0455 --1.80558 -26.7112 -12.7577 --2.45577 -26.1518 -13.1337 --3.34388 -25.5549 -13.2242 --2.76254 -24.84 -13.6323 --3.24447 -24.0743 -14.0482 --3.79388 -23.4323 -13.5969 --4.59307 -22.9295 -13.2195 --3.94612 -22.1821 -13.0333 --3.36086 -21.5246 -12.4689 --3.86109 -21.0096 -13.2093 --4.74792 -20.6364 -13.1366 --5.74703 -20.6531 -13.24 --5.88603 -21.2075 -14.0374 --6.86543 -21.1261 -14.3301 --7.12213 -21.9691 -14.6901 --7.85535 -22.457 -15.211 --8.31898 -23.165 -14.7588 --8.9423 -23.5721 -14.0914 --9.42133 -22.7836 -13.924 --9.69196 -22.3709 -14.8085 --10.202 -21.5466 -14.5286 --10.0143 -20.8813 -15.2666 --10.3761 -20.4542 -16.1064 --10.9596 -20.2244 -15.3272 --10.3723 -19.401 -15.3935 --11.279 -19.1054 -15.2567 --11.936 -19.0337 -16.0444 --12.3857 -19.6689 -15.4527 --13.4088 -19.5879 -15.6301 --13.5709 -19.561 -14.6339 --12.8504 -20.2059 -14.2538 --12.3849 -21.0689 -14.5911 --12.9318 -21.8604 -14.2797 --13.533 -22.6388 -14.0402 --13.7299 -23.3735 -14.7526 --13.2148 -24.215 -14.7948 --14.1174 -24.6117 -14.9603 --14.6346 -24.4306 -14.1159 --14.7008 -23.5476 -13.7352 --15.36 -22.9131 -14.0506 --15.3866 -22.1889 -14.646 --15.3568 -21.2775 -14.9564 --16.0829 -20.8157 -14.4074 --16.9192 -20.6079 -13.8993 --16.7569 -20.3645 -12.9324 --16.8299 -19.282 -12.9742 --16.6276 -18.8496 -13.851 --15.9906 -19.6322 -13.869 --15.5251 -19.0013 -13.2945 --14.7471 -19.6809 -13.5244 --14.2373 -20.5787 -13.7725 --14.967 -21.0627 -13.3746 --15.5325 -20.5066 -12.7205 --15.2301 -20.545 -11.7359 --15.8551 -19.952 -11.1761 --16.0745 -19.6756 -10.2686 --16.5242 -18.7647 -10.1876 --16.5984 -17.723 -10.2773 --16.5008 -17.1923 -11.1768 --16.3464 -16.9284 -12.1925 --15.34 -17.0308 -12.0289 --15.1819 -16.0599 -12.12 --14.4238 -16.0075 -11.3475 --13.4576 -16.3736 -11.4686 --14.1803 -16.5862 -12.1421 --14.5338 -17.0523 -12.8609 --14.107 -17.0137 -13.7309 --13.2044 -16.7527 -14.1259 --13.3583 -15.8632 -14.5897 --12.5531 -15.6829 -15.0489 --12.4227 -14.6678 -15.1679 --11.5565 -14.9995 -14.803 --11.6983 -15.9886 -14.5967 --11.362 -16.1785 -13.6542 --11.0492 -15.9417 -12.7086 --10.6 -15.1744 -13.0968 --10.1666 -14.7475 -12.2688 --9.44794 -15.0493 -12.8736 --8.49653 -14.8824 -13.247 --8.81841 -14.1996 -12.5821 --7.96716 -14.0308 -13.0033 --8.43431 -13.7718 -13.7615 --7.65446 -13.1659 -13.5363 --8.34226 -12.5435 -13.2238 --8.52802 -11.5937 -13.1017 --9.30574 -11.2003 -13.6291 --9.80624 -10.3499 -13.4331 --10.0444 -9.69738 -14.1297 --10.0754 -9.81018 -15.1363 --9.8795 -9.16093 -15.8663 --10.5429 -9.83804 -16.2578 --11.5259 -9.68728 -15.8694 --11.6962 -9.94201 -14.951 --11.4894 -9.24164 -14.2768 --11.8353 -9.35848 -13.3738 --12.2148 -8.90278 -12.4119 --11.9745 -8.97873 -11.439 --11.8663 -8.98779 -10.4354 --12.3039 -9.67367 -9.9081 --12.9551 -10.3449 -9.65211 --13.8853 -9.87676 -9.56722 --14.3192 -10.3577 -10.2371 --14.7295 -11.0798 -10.6773 --15.579 -11.2043 -10.1358 --16.2706 -10.8584 -10.8387 --17.1044 -10.4235 -10.5238 --17.8584 -10.2669 -9.9036 --17.6818 -10.1205 -8.9502 --16.7673 -9.78922 -8.76368 --16.5064 -8.94285 -8.11516 --16.1621 -8.73573 -8.99555 --15.6864 -7.86448 -8.75967 --16.6297 -7.47522 -8.89807 --17.5751 -7.63204 -8.72659 --17.4796 -8.54748 -8.50572 --17.4467 -8.82631 -7.52997 --18.1386 -8.13692 -7.19666 --19.1017 -8.02345 -7.49203 --19.9528 -7.95476 -7.03812 --20.1486 -8.64701 -6.33458 --20.2513 -7.94858 -5.68077 --19.729 -7.45329 -4.92872 --20.2646 -7.01327 -4.22355 --19.3784 -6.46367 -4.30845 --19.6552 -6.43267 -3.30225 --20.3752 -6.4752 -2.61933 --20.776 -6.42029 -1.72763 --21.1992 -6.40713 -0.7997119 --20.391 -6.3823 -0.1923939 --19.8198 -5.55654 0.01164772 --19.1724 -4.82056 -0.1785469 --19.3771 -3.90495 -0.3838039 --19.3791 -3.87271 0.5837311 --18.6646 -4.46205 0.9876451 --17.9089 -3.84488 1.21453 --17.0382 -3.58044 0.7685451 --16.2756 -2.96242 1.00736 --15.7662 -3.22111 0.1551691 --14.8394 -2.91861 0.2195821 --14.1003 -2.99436 -0.4231549 --14.3107 -3.87486 -0.6035919 --14.812 -3.99221 0.1947461 --15.6618 -4.32746 0.5983531 --16.0432 -4.55389 1.54497 --15.3625 -5.18534 1.5587 --15.6738 -5.06168 2.49132 --15.9402 -4.59686 3.35144 --16.6698 -4.91667 3.90083 --17.3155 -4.72286 4.67708 --17.2938 -5.25495 5.53783 --17.0234 -4.6354 6.26558 --16.1578 -4.90776 5.81193 --15.2355 -4.47531 5.85946 --15.8973 -3.788 5.75904 --15.7798 -2.95246 6.2692 --15.7483 -2.50349 5.35126 --15.4331 -2.94906 4.50676 --16.0557 -2.58374 3.81593 --15.8787 -3.04676 2.96388 --15.9972 -2.29615 2.30121 --16.1267 -1.97578 1.42077 --16.8369 -1.3167 1.28679 --16.058 -0.7835421 1.49372 --15.6832 -0.7113371 2.41064 --15.0327 -1.15419 3.06755 --14.3452 -1.90395 3.34137 --13.4261 -1.52129 3.35235 --12.9898 -2.33326 3.07922 --12.4202 -2.98834 3.49489 --13.2636 -2.87704 4.07157 --13.6832 -2.86589 4.91188 --12.8038 -2.44596 5.31538 --12.7799 -3.32537 5.71349 --12.6386 -4.29337 5.58884 --11.9486 -4.84216 5.12124 --11.2765 -5.29368 4.52103 --11.1398 -4.35515 4.81135 --10.6339 -4.96699 5.42908 --9.79203 -4.62082 5.97331 --9.17254 -5.16942 5.43182 --8.78006 -4.42862 5.97138 --9.26452 -3.6096 5.56715 --9.93569 -3.25498 5.03078 --9.96967 -2.55754 5.70166 --10.5474 -3.33241 5.91895 --11.086 -4.09027 6.03541 --11.7119 -4.69089 6.46124 --10.8575 -4.95048 6.9115 --10.4807 -5.78502 7.28742 --9.58549 -5.34867 7.25215 --9.39893 -5.05111 8.2133 --10.0505 -4.36912 8.68728 --10.8147 -4.89375 8.33165 --11.0356 -5.73451 8.73633 --11.0966 -5.94194 9.75565 --10.5275 -6.41378 10.374 --9.87853 -6.01013 11.026 --10.4758 -5.15619 11.0545 --10.0132 -4.27231 11.3602 --9.08272 -4.01094 10.9746 --8.90522 -4.93951 11.3952 --8.33723 -5.72516 11.1234 --9.023 -5.77277 10.3776 --8.56447 -5.80485 9.44343 --8.3043 -6.42847 8.65353 --7.51808 -6.83428 9.20507 --6.70502 -6.78155 8.43065 --6.71977 -5.86244 8.04901 --6.62272 -4.8802 7.89203 --5.64226 -5.0111 7.99195 --5.08753 -4.07972 7.95821 --4.39494 -4.76425 7.64201 --3.83094 -3.90342 7.68716 --4.53908 -3.76438 7.02605 --4.38354 -3.58936 6.08466 --5.37858 -3.64986 6.20524 --6.01797 -2.99528 5.86675 --6.59123 -2.26971 6.31672 --5.81362 -2.16206 6.91571 --5.63513 -2.98077 7.51847 --4.82395 -2.43203 7.32438 --5.15097 -2.53927 6.38838 --4.26555 -2.00484 6.29065 --4.94455 -1.7315 5.56578 --4.75652 -0.7486931 5.22918 --4.46964 -0.7553121 6.15169 --5.18528 -0.7845931 6.84445 --6.01954 -0.4532861 7.17508 --6.62281 -0.5498241 6.35162 --6.00195 -0.9854971 5.74488 --5.71222 -1.11899 4.88937 --5.94191 -0.3045241 4.3211 --6.8678 -0.5669891 4.40275 --7.85919 -0.3573041 4.3583 --8.60722 -0.5088911 5.01202 --7.97803 -0.7016081 5.73115 --8.83773 -1.24123 5.70997 --8.24352 -1.51878 4.93922 --8.11763 -1.39559 3.9485 --8.11107 -0.9225461 3.04287 --9.01039 -1.25281 3.19073 --9.59776 -1.07874 3.9924 --9.81386 -0.3727041 3.23401 --10.7395 -0.3352581 2.79539 --11.0687 0.2903989 3.39023 --11.7957 -0.1601571 3.0549 --12.0852 -0.5209101 3.9749 --13.0459 -0.1670491 3.93156 --12.9527 0.4941859 4.63192 --13.531 1.25565 4.3018 --14.372 1.47667 3.78559 --14.9153 2.20225 3.46413 --14.7057 3.08711 3.85997 --14.8622 3.02498 2.84426 --14.2424 2.36166 2.28653 --13.9323 1.40603 2.23147 --14.5297 0.6203589 2.48261 --13.7906 -0.03764047 2.33515 --13.0222 -0.4058851 1.77962 --12.5057 0.4099019 2.12422 --12.6552 1.39709 2.25869 --11.8956 1.01694 2.86521 --11.1882 1.57688 3.28315 --10.7285 2.45735 3.19473 --11.3791 3.1841 3.16284 --11.1185 4.07796 3.58982 --11.2164 3.84546 4.57493 --11.5161 3.85476 5.60774 --11.1118 4.03025 6.52711 --10.4405 4.00961 7.24299 --10.7112 4.57037 8.05698 --10.4746 4.96883 7.13558 --10.5036 5.5026 6.26675 --11.1165 5.26008 5.48093 --11.9149 5.46017 6.08186 --12.8005 5.40061 6.4296 --13.0807 4.89487 5.63728 --13.621 4.50336 6.23903 --13.6097 3.6563 5.63557 --14.1386 2.78433 5.72102 --14.7738 3.25107 6.34383 --14.9097 2.79043 7.17578 --15.796 3.09873 7.54928 --15.9473 4.11107 7.73067 --15.0869 3.79916 8.22323 --14.3965 3.38305 8.80668 --13.8068 2.63716 8.42092 --13.7394 2.79194 7.41173 --12.7473 2.7407 7.54516 --13.0681 1.86228 7.7641 --13.4419 1.17769 7.02783 --13.7117 1.34211 6.10247 --13.6134 0.3240039 5.78509 --14.3406 -0.05361427 6.34564 --14.8288 -0.1119711 7.13977 --15.2968 0.1123499 8.04979 --14.5568 0.4393679 8.58934 --14.1493 1.12858 9.14711 --13.4485 0.5788939 8.78103 --12.4863 0.5617279 8.46262 --12.1899 1.36656 8.90693 --11.2493 1.21452 8.60203 --11.4785 1.46627 7.6622 --10.9225 2.22764 7.38696 --10.4154 1.34779 7.29626 --9.89205 2.16592 7.63292 --9.44254 2.85217 7.06337 --9.43421 1.95681 6.54825 --9.0842 2.46779 5.78483 --8.88354 3.48261 5.64114 --9.21494 4.25375 5.22915 --9.01866 4.60854 4.29529 --8.63661 3.87097 3.68728 --9.1384 3.64763 2.78767 --9.30456 2.7955 2.22956 --9.45433 1.80527 1.92864 --8.63877 2.0875 2.45126 --8.61315 2.19098 1.45455 --8.35515 1.38131 0.8427641 --8.25447 0.9756569 1.79137 --7.68088 0.2944719 1.42081 --6.84013 0.3388589 0.8719101 --6.01135 -0.06096017 1.28423 --5.93933 0.09975353 2.30953 --6.68531 -0.4572251 1.94505 --7.18932 -1.20412 2.41098 --7.5843 -1.8185 1.62495 --7.23387 -1.84713 0.6847041 --6.302 -2.28609 0.6344571 --5.52941 -2.13219 1.3005 --5.4779 -1.28709 1.87646 --6.20941 -1.93287 2.2536 --6.62967 -2.553 2.88679 --7.02854 -3.16343 3.54892 --7.99486 -3.3656 3.82128 --8.15122 -3.90975 2.99702 --7.29322 -4.33651 2.83366 --6.79101 -5.20174 3.05847 --6.09105 -4.98455 2.43387 --5.73687 -5.2648 3.34214 --5.34191 -4.65067 3.98402 --5.15339 -3.85842 4.57996 --4.23012 -3.72544 4.22188 --3.95078 -2.83416 3.80795 --3.07631 -3.20513 4.12576 --3.44236 -3.81631 3.46795 --3.9209 -4.05829 2.59333 --4.64418 -3.69999 2.02868 --5.49073 -3.30092 1.56871 --5.97373 -3.91878 0.9930761 --5.54785 -3.36368 0.3296711 --4.81969 -2.82203 0.2987471 --4.39013 -3.46394 0.9279961 --3.67425 -4.01 1.32668 --3.11742 -4.00121 0.4906761 --2.77258 -3.03472 0.7616961 --3.07109 -2.13407 1.08126 --2.95524 -2.16469 2.0659 --2.51045 -2.7833 2.65426 --1.85273 -2.76276 1.92425 --1.1358 -2.20054 2.33061 --0.366167 -2.86178 2.22672 -0.633552 -3.05299 1.95327 -1.1288 -3.83965 2.21643 -0.662937 -3.7429 3.10808 -0.473197 -4.13049 4.06621 -0.654465 -3.75697 5.01782 -1.1221 -4.65893 5.13865 -0.896134 -5.53483 5.57291 -0.483727 -5.76333 6.50213 -1.12115 -5.09921 6.83344 -0.593266 -4.80691 7.60844 -0.277929 -3.99256 8.08445 -1.13135 -4.35739 8.42962 -1.89057 -3.68144 8.29871 -2.59607 -3.03767 8.41704 -3.21142 -2.29975 8.81261 -3.47267 -1.57445 8.15014 -2.50681 -1.42939 8.52403 -2.84609 -0.4857551 8.32088 -1.93829 -0.5989861 7.85749 -1.41974 -1.31854 8.36879 -1.72793 -2.08971 7.79963 -2.63801 -2.02612 7.31876 -2.46893 -1.58131 6.4461 -2.74607 -1.24101 5.434 -3.1907 -1.98814 5.95285 -4.09294 -1.63902 6.14718 -3.54308 -1.19366 6.91668 -3.56461 -0.4227731 6.32065 -4.37606 -0.5360261 6.92264 -4.7352 0.3070499 6.57519 -5.63385 0.2156769 7.01996 -6.27301 0.2046649 7.83306 -6.08294 0.7716649 8.58319 -7.009 0.9642829 8.2369 -7.49024 1.59276 7.68432 -8.30228 0.9149609 7.50708 -9.23106 1.1346 7.8778 -9.56643 1.85424 8.46613 -9.76626 2.49356 9.12669 -8.87274 1.99895 9.21745 -8.10701 2.41902 9.6461 -7.35177 2.37358 10.3706 -6.37908 2.18189 10.438 -6.21197 2.8225 11.18 -5.84731 2.68578 12.1008 -5.36099 3.55247 12.1418 -4.3927 3.69174 12.3392 -3.80849 4.32964 12.8264 -3.04832 3.73059 13.2137 -2.72516 3.30629 12.3649 -2.09302 2.68404 12.6723 -1.79844 2.8601 13.602 -1.42253 3.76599 13.3941 -1.20906 3.54151 12.5298 -0.970957 3.4087 11.5393 -0.595423 4.32271 11.7162 -0.219806 4.59925 12.7051 -0.809837 4.61887 13.4693 -1.38114 5.03732 12.7619 -1.92504 5.70107 13.2511 -2.53096 5.12515 12.6977 -3.41258 5.56651 13.0841 -4.0666 6.23909 13.5515 -4.97236 6.05196 13.1235 -5.70102 5.80475 13.704 -5.28459 4.97046 14.1157 -4.50622 4.69412 14.6914 -3.83954 4.1091 15.2024 -3.20679 3.67907 14.546 -3.90875 3.56182 13.8259 -4.29333 2.72553 13.4554 -4.01999 2.4174 12.5527 -4.65703 1.74555 12.9832 -4.48842 1.16683 12.1662 -4.0233 1.17712 11.3182 -4.57331 0.7014139 10.6395 -4.76327 1.32938 9.80821 -4.09236 0.9524709 9.18616 -3.7033 1.75556 8.7608 -3.31665 1.82238 9.69643 -2.729 1.88933 10.4375 -1.91695 2.29596 9.92617 -1.65352 1.36968 10.4005 -2.11106 0.8764419 9.63451 -2.0477 -0.1410071 9.41005 -1.52265 -0.8366501 9.91129 -0.866427 -0.2511431 10.3604 -1.60448 -0.2624261 11.1544 -1.12919 -0.4921681 11.9841 -0.320563 -0.7395191 11.5289 --0.600753 -0.4297151 11.3303 --1.21529 0.3747819 11.5799 --2.04658 0.8537489 12.0587 --2.65876 0.1351749 12.3306 --2.43068 -0.3248401 11.4938 --2.74316 -0.7565651 10.6122 --2.77354 -1.16097 9.66108 --1.95194 -0.5651981 9.65568 --1.74844 -1.45491 9.27957 --0.928574 -1.87711 9.57963 --0.376641 -2.02537 8.73932 --0.400834 -2.85917 9.18213 --0.997686 -3.5221 9.5399 --1.87549 -3.86928 9.14902 --2.61842 -3.37529 8.7573 --3.05525 -3.99319 9.4712 --3.85304 -3.65661 9.04765 --4.39075 -3.15413 9.73712 --4.56047 -2.19627 9.92946 --4.59998 -2.45326 8.9555 --5.36616 -2.12234 8.51629 --6.39178 -2.18436 8.24923 --7.03093 -2.64704 8.71016 --7.07104 -3.63562 8.67191 --6.0969 -3.83194 8.97418 --5.12635 -3.67652 9.13748 --5.41792 -4.57363 9.48811 --6.07993 -5.25666 9.22146 --5.4221 -5.83894 9.63241 --5.15608 -5.73187 10.5974 --4.60991 -5.15527 9.92163 --3.7084 -5.00244 10.2968 --3.81329 -5.97925 10.6625 --4.09067 -5.38389 11.442 --3.09952 -5.4278 11.6103 --2.70696 -5.46075 12.5833 --3.188 -4.62138 12.6115 --3.89235 -4.86819 13.2257 --4.84442 -4.95947 12.806 --4.35443 -4.06582 12.9198 --4.60355 -3.19741 12.4094 --4.716 -3.0358 11.4843 --5.61119 -3.09122 11.9241 --5.74007 -3.74745 11.1754 --5.47902 -4.67854 11.5321 --6.29496 -4.85371 12.1286 --6.47295 -5.62984 11.4639 --7.20664 -5.09262 11.127 --7.34059 -5.88215 10.4676 --6.70306 -6.55672 10.7304 --6.4901 -7.22201 10.0191 --5.73654 -7.77985 10.086 --5.46698 -7.66029 9.13492 --5.80288 -7.96765 8.22902 --6.63893 -8.34481 8.51028 --6.93215 -9.13935 7.97534 --6.30451 -9.68645 7.39414 --5.33239 -9.53972 7.45388 --4.9275 -8.65434 7.33902 --5.10743 -8.22507 6.41156 --5.74315 -7.84767 5.75302 --6.38428 -7.13469 5.63763 --5.54554 -6.61665 5.9069 --5.68146 -5.64099 5.64069 --6.47578 -5.08109 5.71764 --5.97811 -5.05537 6.62084 --5.05463 -5.14179 6.31036 --4.08947 -5.05704 6.07715 --3.20147 -5.05986 5.65874 --2.41564 -5.22856 6.23798 --1.9229 -4.5232 6.64576 --2.24924 -3.60686 7.08261 --2.5358 -2.88518 7.73352 --3.26198 -2.2016 7.6499 --2.60479 -1.52835 7.16471 --1.97587 -0.7449971 6.90727 --2.45362 -0.08534777 6.45833 --3.17138 0.2400619 5.8316 --3.51843 0.7297609 5.05541 --4.49688 0.7098989 4.8951 --4.67415 0.5178749 3.88714 --4.57379 1.50449 3.79877 --4.14768 2.30098 4.15184 --3.75012 2.02783 3.28127 --3.17498 1.51291 2.71134 --3.78973 0.6232569 2.55865 --4.00147 1.11299 1.73416 --4.62995 0.4205699 2.13513 --5.26474 1.11388 1.74861 --5.79917 1.59967 2.42747 --6.2696 1.13419 3.16419 --6.68937 1.0034 2.23184 --7.26173 1.81072 2.47309 --7.25787 1.89294 1.46497 --7.22358 2.14206 0.4581781 --8.11307 2.65757 0.6079021 --7.99877 2.46623 -0.3295499 --7.63252 3.16964 -0.9127309 --8.63346 3.07989 -1.08383 --8.95821 3.95164 -0.7322679 --8.63462 4.55756 -0.1047279 --8.74383 3.57248 0.3517651 --9.62584 3.02324 0.4140021 --10.0984 2.33718 0.9737271 --10.023 1.71677 0.2404741 --10.5094 0.8561139 0.3646261 --10.5265 -0.05617297 0.7486331 --11.4443 0.09503133 0.9964271 --11.7724 1.0272 0.6063261 --11.544 0.7311279 -0.3558489 --11.6683 -0.03484157 -1.06428 --12.3918 -0.4956451 -0.4579529 --12.4451 -1.37571 -0.9921299 --11.8834 -1.41535 -0.1717999 --12.7262 -1.95901 -0.2578279 --12.4833 -2.86086 -0.4907509 --12.1713 -3.58101 0.05638162 --12.0247 -3.98957 -0.8409759 --11.6337 -4.54683 -0.1011889 --12.4777 -4.73459 0.3052491 --12.0413 -5.59536 -0.08172808 --12.4151 -6.43883 -0.2871959 --11.4598 -6.62172 -0.5648639 --10.9597 -6.83688 -1.42177 --11.6397 -7.30215 -2.06663 --12.5516 -7.73048 -2.05096 --11.6749 -8.1724 -1.74075 --11.3379 -8.78782 -1.04231 --12.2668 -8.90283 -1.44585 --12.0118 -9.79733 -1.90009 --11.127 -9.91044 -2.20727 --10.3919 -10.4536 -1.8023 --9.65474 -10.9681 -1.30434 --8.85423 -10.3731 -0.8564229 --8.10653 -10.9383 -0.6035629 --7.49222 -11.028 -1.36948 --7.92227 -10.2645 -1.83166 --7.80885 -9.89486 -2.74521 --7.42416 -9.61154 -3.60346 --8.08265 -8.95248 -3.9655 --8.01601 -7.91476 -3.86171 --9.05253 -7.93677 -3.67093 --8.61401 -6.99598 -3.66492 --7.82402 -6.96052 -4.26483 --8.11621 -6.33074 -4.93444 --8.25456 -5.50561 -4.33154 --9.09208 -5.58519 -3.71531 --9.25441 -5.2961 -4.63767 --9.81775 -6.01241 -4.31435 --10.211 -5.25636 -3.75548 --11.1161 -4.80349 -3.71971 --11.665 -4.3263 -2.99886 --11.5706 -4.18843 -2.0027 --12.5637 -4.21589 -2.08037 --12.4184 -3.36087 -2.55312 --12.9011 -3.31997 -3.37067 --12.2374 -2.86021 -3.94935 --12.0307 -1.92514 -4.33791 --11.2782 -1.38667 -4.03749 --11.0274 -0.7004761 -3.29497 --10.9486 0.2384219 -3.05939 --11.1894 1.13824 -2.62903 --12.1349 1.41909 -2.38198 --11.9785 2.4487 -2.38946 --12.9534 2.33991 -2.65296 --12.6176 2.58356 -3.58683 --12.9471 1.70652 -3.9759 --13.2205 0.9669039 -3.36603 --12.7887 0.2046829 -2.79401 --13.555 -0.2670331 -2.27709 --14.1726 -0.5278071 -1.51022 --13.497 -0.9104791 -0.8286219 --13.9409 -1.72725 -1.0967 --14.6595 -2.39206 -0.9559619 --14.9584 -2.62172 -1.99149 --15.5029 -3.34439 -2.4016 --15.3531 -4.02041 -1.68449 --16.3117 -3.95568 -1.3561 --17.1086 -4.44164 -1.70971 --16.2624 -4.86661 -1.99792 --15.7275 -4.94692 -2.95725 --14.7441 -4.84013 -3.15261 --13.7354 -4.96721 -3.06238 --13.593 -5.52453 -2.31146 --14.4343 -5.46568 -1.72535 --14.8381 -6.18332 -1.12468 --14.3268 -6.97007 -0.7348049 --14.149 -7.78793 -1.23205 --15.14 -7.55101 -1.36171 --14.5257 -7.04354 -1.99531 --14.3875 -6.82263 -2.95718 --14.6561 -6.42695 -3.80788 --14.8037 -7.37806 -3.70593 --14.3983 -8.27747 -3.7089 --13.6861 -8.10837 -4.4536 --12.6943 -8.25309 -4.61877 --12.6405 -7.61131 -3.84547 --13.3262 -6.99419 -4.28324 --12.6227 -6.26234 -4.13344 --11.82 -5.89599 -4.58189 --11.3373 -5.23122 -5.06118 --12.1118 -4.70271 -5.35801 --11.9654 -3.70223 -5.52617 --11.1317 -4.16834 -5.70268 --10.6465 -4.78322 -6.28252 --11.0873 -5.16682 -7.2105 --10.5362 -5.85525 -7.62173 --9.61645 -5.90448 -7.89322 --9.41133 -6.75942 -7.38465 --8.56814 -6.89831 -6.79595 --9.25464 -7.29852 -6.17061 --9.54162 -7.87354 -6.87657 --9.78035 -8.81054 -6.45399 --10.6263 -8.30558 -6.54045 --10.8198 -9.02387 -5.85961 --10.7523 -8.08213 -5.41178 --10.7706 -7.15981 -5.84873 --10.0102 -6.61641 -5.50105 --10.0354 -7.4499 -4.85743 --10.511 -7.97263 -4.17273 --9.85174 -8.67907 -3.90672 --9.66508 -9.59247 -3.59999 --8.74174 -9.91066 -3.33921 --8.53729 -10.894 -3.23376 --8.87506 -10.5449 -4.10908 --8.34708 -10.3854 -4.94813 --9.25048 -10.6561 -5.13119 --9.53285 -9.72373 -5.41933 --10.4581 -10.3004 -5.26642 --10.6097 -9.90344 -4.34837 --11.3131 -10.6235 -4.58162 --11.0431 -11.4121 -5.08748 --11.6613 -11.9826 -5.5197 --12.5449 -11.5435 -5.83732 --12.1605 -11.73 -6.81435 --12.3498 -12.1843 -7.62419 --13.2132 -11.6746 -7.53559 --13.1001 -10.7899 -7.19662 --12.7315 -10.4645 -8.08367 --11.965 -9.82525 -8.1356 --12.0164 -8.77165 -8.03003 --12.2637 -8.42133 -7.08691 --12.9145 -8.82415 -6.476 --13.317 -7.92674 -6.28543 --14.1423 -7.9482 -5.68036 --14.4301 -7.31803 -6.3945 --14.0829 -7.84228 -7.20335 --15.009 -8.19479 -7.34701 --14.7394 -8.57907 -8.23526 --14.2953 -7.7379 -8.53188 --13.3479 -8.14347 -8.30607 --13.174 -7.28402 -8.88594 --12.5747 -6.81889 -8.21562 --12.508 -6.07199 -7.5119 --13.3378 -5.80032 -6.99893 --13.2142 -6.11464 -6.01769 --12.6849 -5.28086 -5.82463 --13.5661 -4.99956 -5.41835 --13.8628 -4.04538 -5.51026 --13.1684 -3.78825 -6.16491 --12.341 -4.11062 -6.67275 --11.7655 -3.54592 -7.23734 --11.2354 -3.1351 -6.47186 --10.5788 -2.34921 -6.39004 --9.82708 -2.68936 -6.77462 --9.62904 -3.49573 -7.28435 --9.69816 -4.19761 -7.97637 --9.3843 -4.19862 -8.96501 --9.85721 -3.56001 -9.6175 --9.97765 -2.61289 -9.56544 --10.3289 -1.886 -8.9847 --10.1 -2.21283 -8.02851 --11.095 -1.88237 -8.13772 --11.3136 -1.02795 -8.68992 --12.2993 -1.25367 -8.79184 --12.6129 -0.6233441 -9.53425 --13.0562 -0.03035937 -10.3078 --12.7318 0.2344509 -11.1875 --13.2466 -0.5375771 -11.5319 --14.0514 -0.8971531 -11.0871 --13.9833 -0.7838071 -10.1171 --14.3809 -0.09130777 -9.58167 --14.1477 -0.4906821 -8.69967 --13.5512 0.3437499 -8.76938 --13.5553 0.9966759 -9.5043 --14.1998 1.76867 -9.61679 --13.9986 2.40339 -10.3797 --14.5903 2.07133 -11.0434 --15.0857 2.50633 -11.719 --15.2581 1.57856 -12.0867 --15.0642 1.42788 -13.0538 --15.9538 1.11445 -13.325 --16.2179 2.07593 -13.2281 --16.8938 1.52529 -13.5548 --17.5346 2.16555 -13.1101 --17.089 1.66247 -12.3519 --16.6234 1.51295 -11.5328 --17.1915 0.7017389 -11.3479 --17.8358 1.46398 -11.3279 --18.2543 0.5576179 -11.4101 --19.2347 0.2639029 -11.2233 --19.7289 1.08691 -11.4344 --19.4058 1.27529 -10.5064 --18.4292 1.50664 -10.5315 --18.5073 2.44616 -10.2254 --17.7797 3.05705 -10.553 --18.2485 3.81288 -10.1669 --17.4296 4.08972 -9.61581 --17.7197 4.9318 -10.0692 --17.6396 5.87938 -10.3505 --16.9243 5.59811 -11.0109 --16.6287 6.40365 -11.3814 --15.5816 6.20397 -11.1633 --15.1375 5.29983 -11.1544 --14.9024 5.94247 -10.4181 --14.051 5.68961 -10.8405 --13.4647 5.20526 -10.1634 --13.7081 5.98658 -9.56188 --14.0572 5.15964 -9.11807 --14.3643 4.22691 -9.3507 --14.8299 3.35653 -9.12718 --15.3076 3.05493 -8.3433 --15.1411 2.47169 -7.55063 --15.303 1.53488 -7.37628 --15.9606 1.01627 -7.94467 --15.3972 0.3691049 -7.5072 --15.0562 -0.5625001 -7.58182 --14.0689 -0.1570571 -7.38791 --13.151 -0.7142951 -7.37892 --13.3194 -1.33648 -6.57071 --14.283 -1.41196 -6.58087 --14.5888 -0.4891311 -6.53572 --15.5565 -0.7827201 -6.62669 --16.1163 -0.5370721 -5.74744 --17.1147 -0.4099491 -5.90578 --17.6024 -0.5411131 -5.10797 --17.811 -1.31315 -4.57258 --17.3561 -2.14514 -4.25402 --17.0919 -2.509 -5.15929 --16.1704 -2.48756 -4.75433 --15.1942 -2.07369 -4.7129 --14.5363 -1.96554 -3.98552 --14.1708 -1.78393 -3.05505 --13.7589 -1.31883 -3.83071 --14.0154 -0.7739061 -4.6073 --13.3712 -0.3731311 -5.26695 --12.3685 -0.3394061 -5.23494 --12.7016 0.4783669 -5.76347 --13.5256 0.5745729 -6.29798 --13.6408 1.21097 -7.04374 --13.4003 1.00328 -8.03495 --12.5074 0.7671339 -8.32876 --11.8825 1.3169 -7.67751 --11.2607 1.83796 -8.20394 --11.3131 1.78745 -9.26316 --10.3779 2.2007 -9.23384 --10.1736 2.95615 -8.5636 --11.0827 2.99323 -8.90905 --10.7056 3.30004 -9.76352 --10.1345 3.85159 -10.3867 --9.46633 4.53757 -10.2168 --9.86032 4.23879 -9.40325 --8.985 3.79773 -9.6384 --9.39263 3.00982 -9.98105 --9.89807 2.21641 -10.4061 --10.7994 2.08204 -10.8238 --11.2461 1.8779 -11.6636 --12.0658 2.01162 -10.996 --11.624 2.61569 -10.2866 --12.3315 3.18831 -9.76473 --12.0846 4.16772 -9.72973 --11.7664 4.13844 -10.7136 --11.4397 5.01966 -10.355 --11.6292 5.92514 -10.4956 --12.1423 5.80124 -11.326 --12.121 6.78778 -11.0987 --12.9143 6.93877 -11.697 --13.7314 6.65583 -12.1695 --13.8064 6.86468 -13.1514 --13.2637 7.62414 -12.8685 --12.2831 7.67504 -13.3531 --11.6904 8.43474 -13.7593 --12.0608 9.03903 -14.4133 --11.5834 9.73436 -15.0589 --12.1293 9.73247 -15.9326 --11.7453 10.6302 -15.642 --12.5464 11.047 -15.9865 --12.3475 10.8125 -16.9538 --13.1472 11.1476 -17.3175 --13.6442 11.9611 -17.0824 --12.8392 12.0561 -16.4647 --12.0166 12.393 -16.1229 --11.0605 12.3799 -16.6323 --10.9556 11.8423 -15.7424 --10.2583 11.8322 -15.0049 --11.224 11.6336 -14.7944 --11.5951 11.2502 -13.9739 --12.3023 11.45 -13.3081 --12.3345 11.6866 -12.3658 --13.1079 11.075 -12.2309 --13.4915 10.2274 -12.6637 --13.9188 10.0896 -11.8006 --14.0852 9.13709 -11.7264 --13.3136 8.6988 -11.2906 --13.6979 7.85792 -10.9444 --14.4628 7.33085 -10.5084 --14.3394 7.93284 -9.82093 --13.7403 8.63743 -9.39324 --13.6749 9.02866 -8.51969 --14.2466 9.85769 -8.09473 --15.0836 9.81678 -8.61682 --14.7824 9.02324 -8.08384 --14.9954 8.61194 -8.98459 --15.4318 8.67989 -9.83931 --15.6635 7.77898 -9.81967 --16.3547 8.28874 -10.3913 --16.9455 7.83206 -11.0389 --17.0301 7.92894 -12.0886 --16.2011 8.47434 -11.7819 --15.974 9.03886 -11.0466 --15.1708 9.64433 -11.4407 --14.8726 9.51973 -12.3924 --15.5324 10.233 -12.5667 --14.7328 10.7865 -12.4438 --14.69 11.5594 -13.078 --14.3531 12.1719 -12.3641 --13.9589 13.0281 -12.1023 --14.9837 12.9134 -11.8865 --15.4448 12.0428 -11.568 --15.4775 11.0169 -11.4223 --15.1675 11.535 -10.6669 --15.1375 10.9264 -9.7921 --14.5869 10.7295 -8.96828 --14.0051 11.4569 -8.65929 --13.5895 12.3339 -8.96034 --13.5141 13.3618 -8.746 --13.1248 13.5992 -9.63298 --12.9543 12.9999 -10.4035 --13.8496 13.2688 -10.8454 --14.1702 13.8267 -11.6444 --13.646 14.6446 -11.4633 --12.7604 14.3025 -11.8635 --12.7109 14.4936 -10.8549 --11.9455 14.708 -10.3541 --11.4454 14.3017 -11.0809 --10.9867 13.5549 -10.4297 --11.3193 12.6755 -10.2586 --10.8129 12.2093 -9.47412 --9.87492 11.9178 -9.40351 --9.50433 12.255 -8.51083 --9.41779 12.6206 -7.61336 --10.3854 12.869 -7.89155 --9.77932 13.4831 -8.34283 --9.34388 14.1003 -8.86351 --8.91205 14.9276 -9.10934 --8.34379 14.9026 -8.19351 --8.72096 15.6074 -7.55903 --9.23897 16.3911 -7.58802 --9.89541 17.0091 -7.14479 --10.1028 17.6491 -7.87931 --9.55659 17.1494 -8.55461 --9.88228 16.478 -9.24285 --10.3345 15.8526 -8.50764 --11.0622 16.312 -9.02452 --11.768 16.6231 -9.71404 --11.035 16.85 -10.2847 --11.0852 17.8233 -10.1868 --10.7931 18.2904 -11.017 --10.8778 18.6324 -11.977 --9.90642 18.8547 -12.0391 --9.3158 19.4724 -12.6368 --9.3935 20.0821 -11.6985 --8.96496 20.0166 -10.796 --8.10923 19.4685 -10.6281 --7.96916 18.4187 -10.5128 --7.66358 17.8827 -9.72894 --8.64395 18.0088 -9.77337 --8.42178 17.6101 -10.7238 --8.84358 17.7411 -11.5549 --8.09848 18.1395 -12.0981 --8.12608 17.1816 -12.1503 --7.73869 16.3987 -12.5357 --8.56562 16.2134 -11.9648 --9.20255 15.3641 -11.7726 --10.1144 14.9641 -11.8351 --10.8043 15.6149 -11.3459 --11.0416 16.6221 -11.5991 --11.9965 16.93 -11.9481 --11.7907 16.2391 -12.643 --11.019 16.1459 -13.2435 --11.3424 16.9234 -13.8054 --12.2293 16.6471 -13.4913 --12.8466 16.9463 -14.3352 --13.5462 17.582 -13.897 --12.9279 18.0186 -14.5581 --13.2302 18.6221 -13.857 --13.6477 19.3211 -13.3342 --13.076 19.8372 -12.6638 --12.2211 19.8471 -12.1552 --12.3387 20.7215 -12.5581 --13.1613 20.9466 -12.9803 --14.0885 20.6239 -12.8002 --14.8475 21.2154 -12.9402 --15.1789 21.2769 -13.8733 --14.5499 20.7825 -14.4527 --14.5058 20.3139 -15.3127 --13.7783 20.2632 -15.961 --13.0518 19.6639 -16.2813 --13.2409 20.496 -16.8483 --13.1642 21.4637 -16.8193 --12.5436 22.2172 -17.1356 --12.6471 23.2191 -16.9373 --12.4117 23.911 -17.6622 --12.0578 23.2736 -18.4592 --11.5811 23.9834 -19.141 --11.4354 24.1089 -20.0668 --10.7445 23.4248 -19.8052 --10.0787 24.0327 -20.1635 --9.6097 23.4547 -19.5119 --9.90029 22.5059 -19.2356 --10.0523 22.298 -20.113 --9.3344 21.7811 -20.5119 --9.07794 22.4998 -21.1212 --9.21124 21.8883 -21.876 --9.42316 21.2658 -22.6151 --9.73967 22.187 -22.7585 --10.1656 23.1774 -22.7186 --9.77654 24.1314 -22.4445 --8.9759 24.7109 -22.3077 --8.25412 24.6316 -21.6857 --7.27427 24.7619 -21.6247 --6.54359 25.2959 -21.1284 --6.65122 26.2115 -20.8181 --6.14855 26.905 -21.3859 --5.35633 26.6836 -21.8795 --4.72694 25.9405 -21.8735 --4.52641 26.8928 -21.5523 --4.02404 27.6726 -21.2319 --3.43662 27.6983 -20.4234 --3.49027 26.9503 -19.898 --4.45253 27.2177 -20.1739 --4.78603 26.6204 -19.3563 --4.79965 25.6812 -19.1674 --4.33611 25.7883 -20.0774 --3.97427 25.2573 -20.8591 --3.16291 25.6841 -20.4838 --2.70715 25.7557 -19.6281 --3.34466 25.334 -18.9918 --3.24672 24.5092 -19.5742 --3.14685 23.9516 -20.3831 --2.29345 24.436 -20.5106 --2.2565 24.0397 -21.4706 --3.24449 24.1482 -21.6721 --3.57164 24.0784 -22.6893 --2.95838 23.6687 -23.3418 --2.0237 23.5581 -23.6042 --2.15702 22.6904 -24.1579 --2.88044 22.2207 -23.6289 --3.33475 22.6366 -24.5129 --3.98398 22.8689 -23.7803 --4.91275 22.6509 -23.2302 --5.393 22.5389 -24.1259 --5.68906 23.5321 -24.088 --6.19553 24.3429 -24.5565 --7.0294 24.0385 -25.0881 --6.82001 23.5032 -24.2645 --7.56611 22.9496 -24.6594 --8.4883 22.877 -24.2504 --8.59055 22.0901 -24.7802 --8.3167 21.6662 -25.6681 --7.68023 21.1118 -26.1844 --7.8354 20.1774 -25.8419 --8.42681 20.0461 -26.664 --8.18065 19.0552 -26.6916 --7.51311 18.5187 -26.1717 --7.07185 19.4411 -26.1841 --6.50884 20.2265 -25.959 --5.84644 20.9367 -26.0056 --5.39991 20.0602 -25.7313 --4.89503 19.3826 -25.1075 --4.02356 19.6633 -24.7456 --4.51957 19.6615 -23.9052 --4.38959 20.619 -23.8046 --4.36685 21.2171 -24.5208 --4.49771 20.6147 -25.367 --4.05613 20.2195 -26.1561 --4.26248 20.6057 -27.0956 --3.31589 20.7395 -27.4278 --2.41163 20.7148 -27.7637 --1.92951 21.2675 -28.2867 --0.922388 21.2329 -28.2031 --0.08968983 20.8633 -27.8661 -0.579416 21.4294 -28.3143 -1.42354 21.8358 -27.9173 -2.23043 21.2793 -27.8389 -1.98013 20.284 -27.6042 -1.8996 19.3417 -27.2977 -2.36922 18.7285 -26.708 -3.17338 19.2594 -26.3534 -2.84205 18.4889 -25.8574 -2.88698 17.6027 -26.2286 -3.00777 17.4275 -25.2488 -3.63211 18.1352 -24.8896 -2.80852 18.7262 -24.7551 -2.14802 18.8269 -23.9294 -2.64452 19.5556 -23.3938 -1.99671 20.2875 -23.5477 -2.26555 19.8358 -22.6511 -2.19094 20.2373 -21.7118 -2.10536 20.9834 -21.0004 -1.90887 21.5993 -20.2119 -0.972559 21.8702 -20.3211 -0.279601 21.4791 -19.7057 --0.705841 21.6374 -19.7776 --0.438877 22.2127 -19.0309 --1.2557 22.7447 -19.1901 --1.60909 22.578 -18.2801 --1.71428 22.3257 -17.3105 --1.59912 23.2839 -17.1272 --2.48515 23.4746 -17.6534 --2.256 24.0985 -16.8998 --3.26995 24.2466 -16.8581 --4.06595 24.8947 -17.131 --5.04625 25.1263 -17.3091 --5.86078 25.068 -16.7632 --6.41083 25.7097 -16.3225 --6.93115 25.2073 -15.6727 --7.09152 24.8627 -16.5868 --7.66076 24.5221 -17.4461 --7.98287 25.3591 -16.912 --8.91029 25.0829 -17.1944 --9.54724 25.2852 -17.9858 --9.38031 24.7345 -18.7444 --8.45275 24.6249 -18.4158 --7.71621 24.2433 -19.058 --6.89109 24.6139 -18.7758 --6.06184 24.7097 -19.3217 --5.63641 24.0331 -18.6887 --4.87343 23.3651 -18.2794 --4.12726 22.7446 -18.3242 --3.87981 21.9268 -17.6624 --3.31338 21.3461 -17.136 --2.59596 21.7727 -16.6364 --1.74225 21.4149 -16.3054 --1.48782 22.223 -15.7457 --1.9112 22.6999 -14.9424 --1.69264 22.3421 -14.0948 --1.52592 21.284 -14.0444 --0.679564 20.6696 -14.1256 --0.743139 20.4553 -15.1513 -0.228292 20.1203 -14.8937 -0.384682 21.1527 -14.9868 -1.32462 20.7329 -14.7043 -2.02934 20.1062 -14.8325 -1.22964 19.9941 -15.4352 -1.74351 19.9673 -16.2447 -1.76725 20.7604 -16.8306 -1.83915 20.4504 -17.772 -1.09727 19.9095 -17.3408 -0.178765 20.3928 -17.525 --0.765846 20.2346 -17.8901 --1.40564 19.5188 -17.7863 --1.81134 18.8542 -18.4161 --2.76669 18.9306 -18.5772 --2.75645 18.3511 -19.3725 --3.24746 17.841 -20.1006 --2.86227 17.3824 -20.8545 --2.7866 17.2876 -21.9126 --3.70177 17.1064 -22.0908 --4.62685 17.3987 -21.909 --5.56296 17.7387 -22.2044 --6.13527 17.4277 -21.4118 --6.48379 16.6517 -20.9178 --6.21196 15.7736 -20.5809 --6.39129 16.5155 -19.9413 --5.69978 17.2098 -19.6148 --4.74718 17.4475 -19.9659 --5.08473 17.4052 -20.8509 --4.13209 17.7419 -21.0555 --4.38059 18.616 -21.4297 --4.84587 18.7286 -22.3187 --5.81624 18.7224 -22.5462 --6.30509 19.5408 -22.7177 --7.09012 19.6783 -23.2878 --7.65822 18.9128 -23.7005 --8.19639 18.8836 -24.5589 --8.94636 18.822 -23.9591 --9.1262 18.1071 -24.6472 --8.62223 17.6387 -25.2888 --8.879 16.6541 -25.4349 --9.84046 16.2638 -25.3929 --10.5389 16.6681 -24.7457 --11.3337 16.9714 -25.1467 --11.6457 17.6255 -24.4843 --11.2794 17.559 -23.5804 --10.475 16.9619 -23.1827 --10.255 17.0667 -22.2102 --10.4036 18.0419 -22.1949 --10.9966 17.8599 -21.4517 --11.2797 18.8102 -21.4447 --11.9142 19.0787 -20.7627 --12.5144 19.5275 -21.409 --12.2066 19.965 -22.2321 --12.5156 20.552 -23.001 --12.5045 21.187 -22.2053 --12.7417 21.7502 -21.4423 --12.8964 22.7084 -21.3866 --13.9131 22.681 -21.8258 --14.3758 22.2431 -21.0263 --14.8647 23.0525 -21.0359 --14.5584 22.8218 -20.1286 --14.7985 22.0132 -19.6184 --14.4688 22.6363 -18.8827 --14.0488 23.0163 -18.0261 --14.886 22.7135 -17.6643 --15.4933 22.7031 -16.8333 --16.4472 22.6861 -16.6845 --16.9297 23.4613 -17.0486 --17.4553 23.1975 -16.1974 --17.4384 22.1895 -16.1858 --17.7671 21.8853 -17.0631 --18.1505 22.7583 -17.3282 --19.1199 22.9503 -17.492 --18.9713 23.4582 -18.3745 --18.7788 24.0348 -17.5689 --18.8353 24.8945 -17.0022 --17.931 24.8506 -16.5234 --18.3413 25.4879 -15.8873 --18.9195 26.2724 -15.6417 --19.5567 26.0758 -14.9093 --20.2492 25.3409 -14.9651 --20.1547 24.3467 -14.8352 --20.3806 23.4084 -14.4959 --21.2508 23.0048 -14.1167 --20.608 23.3982 -13.4364 --21.135 24.224 -12.9775 --21.082 24.165 -11.9555 --21.078 25.0963 -12.2913 --20.4379 25.7596 -12.3275 --20.8087 25.6697 -11.4048 --21.2058 26.5472 -11.1733 --21.3568 27.4252 -11.5125 --21.6976 28.2583 -11.0988 --21.2907 29.0528 -11.3912 --21.3143 29.9547 -10.904 --21.1055 29.2174 -10.2362 --21.5275 29.0688 -9.38615 --21.4881 28.3554 -8.66938 --20.8954 27.9523 -7.94807 --20.7617 27.8161 -7.00101 --20.0983 28.0024 -6.21194 --19.8757 28.2517 -7.16327 --19.2405 28.8017 -6.59631 --18.9174 28.1814 -5.8509 --19.0103 27.216 -5.65812 --18.1281 26.8665 -5.3782 --17.8572 26.7595 -6.27854 --17.1569 26.0102 -6.12834 --17.4746 25.3195 -5.53645 --17.9898 24.5048 -5.77223 --18.6454 25.1992 -6.01774 --19.0855 25.2177 -6.90051 --18.682 24.3913 -7.28745 --18.0553 24.8679 -7.95185 --17.6638 24.8329 -8.8879 --18.3294 25.5536 -8.91988 --18.4088 24.8576 -9.68244 --18.586 24.026 -10.1039 --17.9249 23.6456 -10.7845 --17.0516 24.0411 -11.0483 --16.5017 23.3233 -10.6564 --16.3561 22.41 -11.0781 --17.0744 22.0984 -11.7084 --18.0378 22.3456 -11.6975 --18.6827 21.5415 -11.3946 --18.3013 21.6857 -10.4365 --18.5177 20.7327 -10.6681 --18.4506 20.191 -9.87382 --18.3471 21.0885 -9.4306 --18.9093 21.8011 -9.16562 --19.7787 21.7505 -9.6283 --20.6002 21.7779 -9.23764 --21.2625 21.3139 -9.87976 --22.0529 21.9663 -9.95112 --22.1166 22.6007 -9.17604 --22.5304 23.2615 -8.56953 --23.3 22.5608 -8.70092 --23.8527 21.702 -8.40181 --23.1102 21.3415 -8.91992 --22.3285 20.7602 -8.78978 --22.2323 19.857 -8.353 --21.9189 18.8744 -8.26196 --21.2515 18.1592 -8.406 --20.9144 18.3185 -9.26767 --20.2254 18.4852 -9.946 --19.5078 18.9801 -10.4429 --19.5167 18.8383 -11.4589 --18.8223 19.5437 -11.6419 --18.7482 19.5817 -12.6358 --18.0227 19.8982 -13.2685 --17.9326 19.7366 -14.218 --18.8692 20.0523 -14.2485 --18.6917 20.6717 -14.9964 --19.1649 21.4311 -15.4676 --19.2534 20.6509 -16.0826 --19.8237 19.9375 -16.4357 --19.1954 20.2994 -17.1942 --20.1831 20.3139 -17.5205 --20.9911 19.7129 -17.9003 --20.4916 18.7791 -17.922 --19.7263 18.3784 -18.3821 --19.7377 19.1666 -18.9322 --19.0996 18.4747 -19.3618 --18.1837 18.9355 -19.2861 --18.391 19.6242 -18.5737 --17.5957 19.9307 -17.9814 --16.8431 19.6886 -17.4423 --16.8194 20.3625 -16.7043 --16.3663 19.4509 -16.5989 --15.4786 18.9334 -16.7035 --15.3092 18.0174 -16.3338 --15.7429 17.1098 -16.1361 --16.5245 17.6533 -16.3658 --16.8815 17.0972 -17.1226 --17.583 16.4027 -16.8388 --17.2917 15.4887 -16.6956 --16.5927 16.1753 -16.368 --16.8966 15.5209 -15.6342 --17.6566 16.0222 -15.2716 --17.4462 16.9166 -15.5493 --16.473 17.0864 -15.3048 --16.2915 17.8754 -14.7387 --17.1547 17.5974 -14.3945 --17.3836 18.3211 -13.8207 --18.3659 18.255 -14.044 --18.9548 17.5688 -14.4273 --18.5931 16.6554 -14.6458 --18.763 16.2806 -15.5964 --18.2192 15.6625 -16.093 --18.6562 16.1156 -16.7741 --19.3915 15.6097 -17.1961 --19.1605 14.5608 -17.1772 --18.3917 13.8977 -17.1245 --17.7561 13.6735 -17.8765 --17.0842 13.5022 -17.198 --16.5036 12.7112 -17.4272 --15.9118 13.4112 -17.6533 --15.1072 13.3128 -17.0732 --14.511 12.5122 -17.1067 --14.1634 13.0431 -17.8051 --14.537 12.7238 -18.6061 --13.7921 13.4773 -18.6616 --13.327 14.2591 -19.0998 --13.1053 13.8357 -19.9241 --13.2167 12.9288 -20.3814 --13.5809 12.5038 -21.0877 --12.6369 12.4815 -21.2536 --13.2132 11.8524 -21.6836 --13.5629 12.3368 -22.5119 --13.3936 12.4595 -23.5634 --12.8153 13.3182 -23.622 --12.6197 14.1346 -22.9946 --12.5796 13.5425 -22.2309 --12.6147 13.7285 -21.2203 --11.8391 13.7961 -20.6729 --11.098 14.4858 -20.6641 --10.4501 15.1228 -20.2752 --10.8671 15.6371 -19.5243 --10.1616 16.2579 -19.1302 --10.4056 17.1487 -18.8327 --9.5936 17.2362 -18.1701 --9.15413 17.6697 -18.9167 --9.91365 18.2464 -19.0658 --9.91894 18.2469 -20.0817 --8.9767 17.9107 -20.2262 --8.62208 18.6668 -19.8859 --8.10516 19.0714 -19.1382 --8.4135 19.9056 -18.6176 --7.51944 20.1954 -18.2364 --7.73067 21.129 -18.5238 --7.89111 20.8226 -19.513 --7.09605 21.0392 -20.053 --6.32802 21.3295 -20.622 --6.17189 20.4461 -21.1387 --5.44292 20.5008 -21.7746 --5.72821 21.3836 -21.4194 --5.91619 22.3155 -21.1032 --5.32545 22.0619 -20.2886 --5.57911 21.7088 -19.4318 --6.64238 21.7151 -19.3333 --6.42805 22.1402 -18.5104 --6.39052 22.6156 -17.6179 --6.45965 22.9552 -16.6638 --6.85692 22.6823 -15.8675 --7.82127 22.5429 -16.0288 --7.72525 21.934 -16.831 --7.34732 21.2336 -16.157 --7.34853 20.6421 -15.3204 --8.34664 20.4928 -15.1199 --9.18492 20.4306 -15.5828 --9.78814 19.8163 -16.095 --9.57579 19.9918 -17.0262 --8.95784 20.6611 -17.5431 --8.95119 21.5849 -17.3349 --9.00486 21.3433 -16.4091 --9.92302 21.5234 -16.1066 --10.1711 22.2567 -16.7326 --10.5909 23.0654 -16.4196 --11.1981 22.9869 -15.7007 --11.4304 22.3251 -14.9874 --12.4792 22.5263 -14.9055 --12.1108 22.0145 -14.1324 --13.0069 21.4681 -14.0622 --13.3425 22.036 -13.2905 --14.1079 22.5278 -13.6366 --15.0095 22.7575 -13.2273 --15.3384 23.681 -13.1197 --15.959 23.6504 -12.3366 --15.8609 24.3801 -11.7011 --14.8786 24.4823 -11.5535 --14.2846 25.2791 -11.208 --13.4996 25.9202 -11.4407 --12.9262 26.7071 -11.5314 --12.3071 26.8692 -10.7963 --11.5622 27.5212 -11.0253 --10.9882 28.2486 -11.2888 --10.3941 27.5025 -11.6372 --10.5639 26.7779 -12.2363 --10.898 26.7859 -13.166 --9.95706 26.7578 -13.5291 --9.81758 26.0716 -14.3025 --9.71486 25.6984 -15.2364 --10.3761 25.055 -14.9765 --11.3496 25.129 -14.5475 --11.5316 24.289 -14.1536 --12.391 24.4356 -13.6826 --12.337 24.2292 -12.672 --13.1242 24.8186 -12.7432 --13.0318 25.5835 -13.2752 --13.904 25.1778 -13.4806 --14.897 25.2101 -13.4445 --14.809 25.0855 -12.4429 --15.2903 25.9466 -12.4582 --15.053 26.8761 -12.4189 --15.2812 27.2016 -11.4913 --15.3351 26.2812 -11.1775 --16.0617 25.616 -10.8492 --16.0032 25.1854 -9.99845 --16.1285 25.5489 -9.04365 --15.8078 26.3847 -9.44892 --16.1391 26.5524 -8.49049 --16.1832 27.0683 -7.69951 --15.4427 27.5391 -8.11986 --14.6918 28.2627 -7.97198 --14.2284 28.3085 -8.8646 --13.6451 29.0907 -9.13281 --12.9748 28.4782 -8.75857 --12.2486 28.0951 -9.4765 --11.5454 28.2528 -8.78302 --10.633 28.2504 -8.45806 --10.186 28.4538 -9.32573 --10.2765 27.6491 -9.92267 --9.40239 27.8343 -9.68725 --9.40993 26.8368 -9.65988 --8.42934 26.7872 -9.35304 --7.58915 26.7174 -9.8157 --8.3341 26.7774 -10.5435 --8.01295 27.6919 -10.735 --7.32195 28.3 -10.9202 --6.89106 28.3345 -11.8235 --7.00012 28.0228 -12.7399 --6.50072 28.9055 -12.7716 --6.38786 28.8971 -13.7371 --5.91539 29.0708 -14.5948 --5.34064 28.3723 -14.3382 --4.59722 28.6356 -13.6717 --5.11382 27.8475 -13.2373 --4.80814 26.9477 -13.1581 --4.04938 26.2223 -13.3405 --3.36292 25.4816 -13.1822 --3.58533 24.546 -12.9209 --3.49651 23.6117 -12.8316 --3.68158 23.511 -13.7937 --3.736 24.4278 -14.1601 --2.89986 24.087 -13.8382 --1.90157 24.12 -13.6564 --1.02048 24.6681 -13.6493 --0.618797 25.5464 -13.5999 -0.227835 25.6452 -14.1878 -0.993462 26.2216 -14.0015 -0.982784 27.1191 -14.4854 -1.26824 28.006 -14.9575 -0.931845 28.6786 -14.334 -1.79264 29.1347 -14.3002 -2.80076 29.3221 -14.5685 -2.83231 30.206 -15.0177 -2.86297 30.7271 -14.1903 -2.42485 31.0256 -13.3156 -2.36078 31.0829 -12.3558 -1.37177 30.6735 -12.2671 -0.514087 30.0633 -12.1655 -0.546746 29.165 -12.568 --0.08639763 28.6649 -11.9709 --1.02798 28.3833 -11.8806 --0.607485 27.6295 -12.3139 -0.05152617 27.5321 -13.0036 -0.771882 28.1804 -13.2704 -1.56261 28.6007 -12.8092 -1.817 27.818 -12.1854 -1.55247 27.2198 -11.4174 -0.652395 26.9853 -11.0497 -0.518275 25.9693 -10.8833 --0.02905953 25.1009 -10.7926 --0.449576 24.7718 -11.641 --1.29751 24.8414 -11.2169 --1.54881 24.0928 -11.8488 --2.46114 24.0608 -11.6715 --2.79427 23.1107 -11.6258 --2.93695 22.8085 -10.6563 --3.14385 23.638 -10.1544 --3.76922 23.8345 -9.47365 --3.47175 23.137 -8.86847 --2.84627 23.8544 -8.56338 --2.73572 23.7725 -7.61683 --2.39551 24.7604 -7.64407 --2.22387 25.52 -7.00309 --2.32173 26.3907 -6.5404 --1.61036 26.6172 -5.96735 --2.26756 26.3504 -5.18927 --2.78497 25.9674 -4.44158 --3.72655 26.1852 -4.60136 --4.07239 25.3857 -4.19268 --4.46312 26.322 -3.964 --4.59394 25.7484 -3.16226 --4.38522 24.7752 -3.04061 --5.08541 24.3265 -3.7155 --5.0262 24.1421 -4.68081 --5.95318 24.282 -5.01652 --5.76498 25.26 -4.99598 --6.72967 25.1512 -4.52696 --7.14742 24.8176 -5.36489 --7.59333 25.6694 -5.05452 --8.24176 25.1675 -5.58518 --8.35875 25.556 -6.50822 --8.55512 24.6626 -6.81904 --8.88901 24.4082 -5.86374 --9.79949 24.7059 -5.72231 --10.157 24.5206 -6.65131 --10.7042 25.3713 -6.64679 --9.94041 25.8535 -7.04461 --9.33635 25.8341 -6.22062 --9.26124 26.3752 -5.40983 --9.43016 27.1609 -4.79076 --8.40748 27.0483 -4.61062 --8.44901 27.3246 -3.66324 --7.40141 27.4138 -3.65667 --6.86415 27.9894 -4.21675 --6.57933 28.0353 -3.22844 --6.86289 27.6708 -2.32014 --6.63123 26.6647 -2.35695 --7.50026 26.2705 -2.22904 --6.80416 25.5621 -2.28186 --6.8485 25.5709 -1.33995 --7.40782 24.7808 -1.06255 --8.42413 24.7414 -0.7557619 --9.00158 25.5502 -0.6837289 --9.05794 26.4305 -0.2883169 --9.9976 26.2224 -0.1894149 --9.9276 27.0359 0.4121051 --10.7148 26.4639 0.6651241 --11.4159 26.2644 1.21016 --11.5337 25.2677 1.51979 --12.3684 24.9942 1.01142 --12.9266 24.1716 0.7160131 --13.1949 23.3046 0.2486961 --12.7128 22.3727 0.2580371 --12.9944 21.594 -0.1386649 --12.5942 20.7376 0.04480232 --12.1467 21.1022 -0.7755619 --11.6112 21.0742 -1.59928 --12.0619 21.8298 -2.00038 --11.3036 21.7713 -2.63458 --10.9871 22.6595 -2.40475 --10.0629 22.6028 -2.64965 --9.4831 22.5397 -3.50657 --8.60425 22.5618 -3.17175 --7.75394 22.9604 -3.28385 --7.67708 22.0517 -3.76677 --6.9395 21.361 -3.81976 --7.24653 20.5995 -3.28062 --6.53168 20.5713 -2.56719 --5.60198 20.8814 -2.48193 --5.97888 20.0964 -1.99376 --5.74671 19.9216 -1.01853 --6.33028 19.1381 -1.41105 --7.05727 19.8352 -1.25061 --7.45247 20.5159 -1.87352 --8.31444 20.0625 -1.83087 --9.31825 20.0491 -1.91194 --10.3203 20.0759 -1.74 --9.867 19.429 -2.4166 --10.4809 20.0657 -2.78223 --11.3258 19.9226 -2.23257 --11.6383 19.4476 -1.39513 --12.3968 18.8033 -1.05563 --12.2435 17.7914 -0.9772189 --12.4967 17.35 -0.1290289 --13.0849 16.8398 -0.7972539 --13.9668 17.3002 -0.9750299 --14.829 16.8964 -0.5425189 --15.5051 16.3379 -0.9757509 --16.0163 17.1366 -1.05127 --16.0248 18.0935 -0.6910139 --15.169 18.3382 -1.16318 --14.7944 18.9713 -1.79521 --14.701 19.9892 -2.18799 --13.7672 20.297 -2.0093 --13.5998 19.8725 -2.90031 --12.8092 20.4746 -2.78521 --13.4468 21.0603 -3.27559 --13.2875 22.0099 -3.13464 --13.2867 22.4821 -4.07998 --13.1075 21.6904 -4.76617 --12.632 21.6981 -5.67303 --11.7608 21.9768 -6.11895 --11.6352 22.8496 -6.45865 --11.2403 23.7859 -6.45098 --12.0597 23.996 -6.06343 --11.6674 23.3905 -5.36961 --10.734 23.1127 -5.22569 --10.1546 23.9623 -5.03411 --9.70812 23.2441 -4.55054 --8.86842 23.5807 -4.07795 --8.35516 24.4287 -4.01282 --8.46593 24.6916 -3.05857 --8.88929 25.2915 -2.34038 --9.68188 24.6697 -2.26132 --10.5765 25.1186 -2.2224 --10.9996 26.0825 -2.28861 --10.7139 27.0046 -2.02301 --10.7619 27.9468 -1.67302 --11.7349 28.0126 -1.47576 --11.4493 28.8837 -2.08002 --11.9556 29.2223 -2.9112 --11.9022 28.5577 -3.6642 --12.8697 28.5462 -3.6301 --13.7971 28.6232 -3.92375 --14.13 28.4966 -2.98685 --13.3368 28.0875 -2.57327 --13.9647 28.0662 -1.80142 --14.2893 28.8454 -1.23268 --14.3923 28.5564 -0.3124949 --14.3484 27.6115 -0.2961499 --14.4705 27.0422 0.5481081 --14.3481 26.376 1.30187 --14.5002 25.4276 1.11822 --14.0699 24.7213 0.6465191 --14.3993 24.7542 -0.2956739 --15.0262 24.0047 -0.4039019 --14.8595 23.4295 0.4349161 --14.2523 23.8298 1.18446 --15.1098 24.2484 1.11124 --15.4309 23.9022 2.00157 --15.9966 23.4999 1.25703 --16.7886 22.9665 1.25572 --17.1677 22.1289 0.8845051 --16.4092 21.5685 1.17879 --16.2491 20.5752 1.31363 --15.8362 20.2401 2.11894 --15.9536 21.0893 2.58863 --16.8857 20.7321 2.38378 --17.6349 20.2364 2.84403 --17.7201 19.7541 3.84054 --17.9795 18.8167 3.54854 --17.4485 18.0926 3.9157 --16.6928 18.5542 4.44577 --16.3243 17.6367 4.78648 --15.5163 17.3144 4.68146 --14.7939 16.7051 4.41267 --15.1713 16.5617 3.5159 --14.3761 16.9463 3.04978 --13.3997 17.0154 2.84784 --13.1107 17.9976 2.9204 --12.2514 17.6833 2.53412 --12.124 16.765 2.34532 --12.4115 16.0783 1.60561 --12.6731 16.8234 0.9824071 --12.3746 16.0283 0.4567341 --11.4884 16.4839 0.4543361 --11.1686 17.4527 0.4818031 --10.9695 17.9587 -0.4017159 --10.0807 18.3351 -0.5785599 --9.59265 17.9943 0.2143811 --8.95347 18.6159 0.6346391 --8.7249 17.9349 1.20472 --9.04812 17.6102 2.1561 --9.96379 17.2137 2.01083 --10.1869 16.2446 2.3471 --9.1699 16.2802 2.6654 --8.31943 15.8844 2.37684 --7.78271 15.0215 2.57593 --8.50082 14.8202 1.90673 --8.78066 14.4989 0.9468371 --8.86754 15.5442 0.9048101 --8.30696 16.2558 0.3159841 --8.04601 16.9612 0.9563871 --7.69183 17.4963 1.70479 --7.13855 18.1835 1.2749 --7.4281 18.3633 0.3808761 --7.00259 17.4979 0.06798982 --6.7232 17.803 -0.8083129 --6.19165 17.5697 -1.62483 --6.28592 16.8958 -2.25856 --6.67185 17.6004 -2.87322 --7.4868 17.2876 -3.28144 --7.51301 17.9413 -4.08848 --8.0112 17.4127 -4.7376 --8.74263 17.1766 -4.0921 --9.36036 16.3988 -3.78561 --9.70093 15.4757 -3.51676 --9.49753 15.5486 -4.53466 --9.19841 14.714 -4.11965 --8.36881 15.1722 -3.77303 --7.38705 15.258 -3.69663 --6.94743 15.8081 -2.98187 --5.9228 15.7434 -2.95574 --6.12196 14.8308 -3.31287 --6.7352 14.6883 -2.53791 --6.15258 15.0674 -1.74672 --5.56504 14.2638 -1.58806 --4.90893 14.8907 -1.19285 --4.01576 14.5625 -1.40581 --4.13094 13.6902 -1.7212 --4.00395 13.5656 -2.67316 --3.63922 12.6484 -2.97125 --3.90605 13.1123 -3.84034 --4.33045 13.8595 -4.31179 --3.53014 14.133 -4.79562 --2.96688 14.1699 -3.95276 --2.34956 13.4127 -4.21847 --1.9445 13.2196 -5.13027 --1.73125 13.0277 -6.09755 --2.31753 12.1487 -6.18908 --3.04616 11.7121 -6.70155 --3.38088 12.4201 -7.25242 --3.63451 12.653 -8.19642 --4.06455 13.4223 -7.67528 --3.67569 13.8755 -6.90435 --4.63842 13.6236 -6.62689 --4.16669 14.1612 -5.89694 --4.97391 14.0091 -5.26327 --5.75549 13.4699 -5.1642 --5.76082 13.2638 -6.08387 --5.25742 12.38 -6.48447 --4.49101 11.9739 -6.03591 --3.65751 11.8585 -5.63941 --4.27313 12.0383 -4.87845 --4.82404 11.1501 -5.12182 --5.33104 11.8989 -4.71756 --6.01499 11.1007 -4.67094 --6.56198 11.4859 -3.97679 --6.19297 11.0599 -3.11253 --6.19286 11.6618 -2.31901 --7.08648 11.8787 -1.91788 --7.27496 10.9286 -2.14475 --7.57549 10.6198 -1.18939 --8.40308 10.5346 -1.69016 --7.67286 9.90782 -2.13826 --6.83968 9.48635 -2.63757 --5.96889 9.64263 -2.20968 --5.2546 9.72186 -1.46231 --5.54801 9.44483 -0.5157079 --4.9479 8.64131 -0.7690009 --5.08498 7.94854 -1.40208 --4.66366 8.66612 -1.92837 --4.59865 9.38835 -2.55612 --3.6967 9.10581 -2.99902 --4.06092 9.61925 -3.7225 --3.27418 10.3177 -3.52223 --3.59235 11.2144 -3.83125 --4.57677 11.1786 -3.94186 --5.33152 10.5437 -3.80092 --5.13124 10.2729 -2.80878 --4.61791 10.7122 -2.10895 --3.76775 11.2416 -2.13944 --2.74771 11.0717 -2.06481 --2.50457 11.7525 -2.82554 --2.01723 11.2731 -3.55926 --1.91899 10.4028 -3.3217 --1.76519 9.64807 -3.96587 --1.3535 10.3545 -4.45657 --0.390397 10.6946 -4.17235 --0.355152 11.1812 -4.97259 --0.287418 12.2081 -5.27012 -0.531012 11.8584 -4.85601 -1.33026 12.2606 -5.3401 -1.29225 13.1862 -5.80974 -2.00121 13.1626 -6.49269 -2.69158 13.8873 -6.3547 -1.7968 14.4144 -6.21558 -0.863647 14.7099 -6.27182 -0.259662 15.1109 -7.03757 -0.289103 15.9579 -6.51088 --0.415133 16.1376 -7.18242 --0.419349 17.1618 -7.14214 --1.10525 16.9006 -7.8289 --1.66516 16.1055 -7.74411 --2.0667 15.7719 -8.66119 --2.94657 15.8772 -8.28159 --3.21487 15.9315 -7.32682 --3.99887 16.2272 -6.86744 --4.52851 15.633 -6.25469 --4.44251 15.328 -7.19392 --4.22855 15.3672 -8.18677 --4.62213 15.1531 -9.07548 --3.88642 15.7396 -9.29181 --3.25961 16.4842 -9.47357 --3.5545 17.4455 -9.61166 --4.01084 17.8092 -8.80678 --4.46403 18.5802 -8.38168 --4.85587 17.6472 -8.38634 --5.28183 17.7818 -7.46286 --5.60067 17.4537 -6.49386 --4.8209 18.0863 -6.63749 --4.98311 18.4147 -5.69404 --5.28415 19.2468 -6.08955 --4.5794 19.1643 -6.78392 --4.42917 19.9329 -7.42815 --5.06808 20.2583 -8.18302 --4.69449 20.1681 -9.07598 --3.96771 20.4893 -8.56137 --3.65166 21.5439 -8.53391 --4.30005 21.4194 -9.29377 --3.44383 21.4643 -9.72771 --3.02155 20.5957 -9.51807 --2.84679 19.9663 -10.2751 --3.26211 19.0727 -10.2317 --3.05739 18.8914 -11.1916 --3.88404 18.4152 -11.2376 --4.90936 18.6182 -11.0904 --5.53993 19.0963 -10.4939 --6.5366 19.059 -10.6481 --6.80076 20.0625 -10.4798 --7.60172 19.8863 -9.79531 --8.43092 19.9642 -9.18499 --8.25176 20.8935 -8.87036 --7.76198 21.2613 -8.08439 --7.39067 22.0731 -8.51964 --7.26226 21.7124 -9.45001 --6.40944 21.6815 -8.96149 --6.52191 22.5251 -9.53758 --5.98349 23.3807 -9.50507 --6.2184 23.7251 -8.64267 --5.35877 23.5766 -8.09541 --5.35856 22.9059 -7.35165 --5.10302 22.3702 -6.56531 --5.92263 21.8157 -6.19349 --5.72603 22.2477 -5.33475 --5.26709 22.302 -4.4414 --4.2781 22.4073 -4.24303 --4.40142 21.4096 -4.10673 --3.87639 21.3731 -4.92357 --3.09583 20.8076 -5.05922 --2.32437 21.3868 -5.10054 --1.81244 21.4566 -6.0185 --0.852445 21.3461 -5.84917 -0.01403387 20.8616 -5.93731 -0.497137 21.2607 -6.70716 --0.277966 21.0185 -7.26883 -0.611793 21.1124 -7.91477 -0.948975 20.3431 -8.46567 -1.22346 20.6265 -9.37459 -1.29313 21.6333 -9.23882 -1.11346 22.6149 -9.30655 -1.95525 22.5548 -9.87906 -2.01301 22.2365 -10.8663 -2.20081 22.03 -11.8715 -2.90779 21.9597 -12.6723 -2.23999 21.3174 -12.9892 -2.42604 20.3577 -12.7357 -2.01968 19.6332 -12.3708 -1.65707 19.114 -11.5947 -0.896686 18.5048 -11.4863 -0.762967 17.5382 -11.4146 -0.09350047 17.8047 -12.0922 --0.703807 17.5226 -11.6366 --0.973073 17.7839 -12.568 --1.76234 17.3315 -12.7391 --1.93242 18.1385 -13.2822 --2.73558 17.6078 -13.0671 --3.28527 17.9954 -13.7015 --3.83267 17.4656 -13.2572 --4.23554 18.1899 -13.8136 --4.77859 17.4249 -13.5492 --5.32182 16.5506 -13.7276 --5.16853 16.1862 -14.6876 --5.59383 15.2603 -14.8575 --5.76671 14.3906 -14.681 --5.22201 13.7431 -14.179 --4.35949 14.2349 -13.9368 --4.7864 14.4881 -13.0095 --5.02533 15.2118 -12.3172 --4.12931 14.8074 -11.946 --3.34373 15.1545 -11.4819 --3.55309 14.73 -10.6098 --2.60193 15.1252 -10.5447 --2.32246 15.322 -9.5903 --1.52283 15.8618 -9.94665 --1.13589 16.3217 -10.7674 --1.59582 17.233 -10.9072 --2.48615 16.7119 -10.8572 --3.26441 17.394 -11.0433 --3.33528 17.0033 -11.9705 --3.16339 16.3741 -12.7507 --2.73962 15.6785 -12.1446 --2.37969 14.7789 -12.5835 --2.26775 14.0894 -11.8401 --2.97231 14.2536 -11.169 --3.08335 13.3875 -11.4325 --4.06753 13.4923 -11.7207 --4.19157 12.7017 -12.2927 --4.08828 11.7107 -12.6622 --3.3268 11.2279 -12.2299 --3.86211 10.3457 -12.0529 --3.27857 10.2264 -11.2526 --3.14626 9.99729 -10.277 --3.46659 9.14845 -10.8192 --4.4038 9.53905 -10.6231 --4.33956 9.50306 -9.58421 --5.28329 9.73236 -9.19061 --5.84372 10.3504 -8.61994 --5.34746 11.2356 -8.8756 --4.7227 11.5892 -9.62785 --3.76336 11.3415 -9.75719 --4.06817 12.1895 -10.1867 --3.20752 12.2387 -10.6294 --2.41706 12.3025 -11.2187 --2.34656 11.3253 -10.9052 --1.84434 10.8353 -10.0826 --1.11819 11.4849 -10.1743 --0.76599 12.422 -10.5402 --0.551324 13.4151 -10.4299 --1.25956 13.2745 -9.75641 --1.933 12.5318 -9.83292 --2.02667 12.0519 -8.94831 --2.43133 11.5517 -8.12499 --1.94149 11.6148 -7.23882 --1.21497 11.1301 -7.79861 --0.615793 11.7121 -8.34671 --0.08581463 10.8716 -8.45062 -0.567703 10.1438 -8.40204 -0.762083 9.7094 -9.26543 -0.46003 9.5404 -10.2618 --0.377936 9.27577 -10.6489 --0.496771 8.87046 -9.80765 --0.906243 8.16166 -9.26814 --1.78581 7.91451 -9.62325 --1.67609 8.07027 -10.544 --2.06931 7.17125 -10.8292 --2.99579 7.17955 -11.1908 --3.88988 7.46934 -11.5089 --4.61256 6.95759 -11.1734 --4.67273 6.04005 -11.345 --3.69902 6.11349 -11.0277 --3.32484 5.93219 -10.1475 --3.24871 5.50527 -9.18841 --3.3437 4.65139 -8.57026 --3.57046 5.00437 -7.63426 --4.17362 5.7842 -7.83702 --4.61494 4.83575 -7.92231 --4.71294 4.9682 -6.95481 --4.80155 5.2848 -5.96035 --5.59108 5.86767 -5.61954 --5.68297 6.74112 -5.28063 --4.70028 6.7435 -5.64149 --4.58893 7.35633 -6.46836 --4.5073 7.94525 -7.23491 --5.18837 8.6192 -6.96901 --5.48383 7.70912 -7.50708 --5.43538 6.69158 -7.41726 --6.06478 6.64859 -6.69581 --6.58671 7.44297 -6.61669 --7.02309 8.25184 -7.06953 --7.56143 9.06633 -6.80492 --7.44444 9.02759 -7.82064 --7.12863 8.7977 -8.73415 --6.27837 8.30008 -8.95541 --6.56364 7.69307 -8.21319 --6.88015 7.39894 -9.1607 --6.01058 7.0083 -9.44681 --5.12674 6.74993 -9.16801 --4.93409 7.05933 -10.0641 --4.33663 7.83822 -10.2151 --4.54725 7.53602 -9.29842 --4.12896 7.08277 -8.52776 --3.56849 6.6009 -7.74393 --2.63792 6.11892 -7.8781 --2.95627 5.90923 -6.93389 --3.37386 5.00946 -6.60434 --2.83803 4.27737 -6.10877 --2.32326 3.5119 -6.39674 --1.54856 3.52375 -6.96717 --1.43064 3.96997 -7.86722 --1.12725 3.09882 -8.26499 --0.252824 2.656 -8.31311 --0.663174 1.87559 -8.87059 --1.60028 1.55443 -9.01272 --2.396 1.35454 -9.64133 --3.36983 1.57123 -9.70477 --3.43018 1.13041 -8.76877 --3.68363 1.10105 -7.81803 --2.63607 0.9607329 -7.76946 --1.75374 1.16921 -7.32227 --1.49169 1.99444 -6.81276 --1.39008 2.22432 -5.86815 --2.01341 2.3387 -5.12064 --2.24158 3.32375 -5.15132 --1.49862 3.66353 -4.4822 --0.864174 4.20874 -4.88409 -0.170589 4.14368 -4.97997 -0.953858 3.70259 -5.37518 -1.10106 4.51766 -5.87344 -1.1186 4.43987 -6.86728 -0.138193 4.70997 -6.86253 --0.26306 3.8155 -7.21113 -0.07826977 3.96414 -8.1794 --0.310053 4.88113 -8.54882 -0.575658 5.12903 -8.10954 --0.05582573 5.65266 -7.59286 --0.807636 6.06042 -7.24303 --0.769283 6.36135 -8.18495 --1.70359 6.30886 -8.65551 --1.4149 7.19253 -8.25863 --1.83125 8.05613 -7.88887 --2.627 7.55898 -7.86139 --3.18049 8.13962 -7.19263 --3.82262 8.57185 -7.7934 --3.24336 9.30747 -8.07919 --2.32235 9.31646 -7.67268 --2.40194 10.1918 -7.21213 --2.22063 9.66392 -6.37196 --1.45458 9.82944 -5.79745 --0.519792 9.55642 -5.97219 --0.05265373 8.85499 -6.43673 -0.08805297 7.91542 -6.03734 --0.279133 7.13915 -6.54593 -0.522977 6.89158 -7.04247 --0.009465155 7.45581 -7.70637 -0.140243 8.42911 -7.80688 -0.421607 8.83755 -8.69437 -1.13504 8.32393 -9.23863 -1.62792 9.13673 -9.66148 -2.26688 9.01052 -10.3716 -2.22123 9.97457 -10.2987 -1.52217 10.0099 -11.0302 -1.72557 10.9619 -11.3765 -1.82378 11.9245 -11.6844 -2.43868 12.6925 -11.2117 -3.34129 12.9784 -11.5234 -4.23704 13.2159 -10.9528 -4.80981 13.9278 -11.3958 -3.99378 14.3923 -11.0661 -3.29938 15.0486 -11.0586 -2.99814 15.2719 -10.1287 -3.37493 14.3676 -10.2233 -2.41158 14.2161 -9.91831 -2.36832 13.1892 -9.97264 -3.08774 13.4266 -9.31097 -3.61467 13.4807 -8.5132 -4.29333 13.6819 -9.12013 -5.22941 13.4419 -8.88934 -6.04312 14.024 -8.79124 -5.88228 14.3001 -9.76345 -6.89714 14.2304 -9.77705 -7.82777 14.2491 -9.3355 -8.15897 13.8023 -8.5357 -8.7193 14.4609 -8.04217 -7.93048 14.2436 -7.4424 -7.70804 13.4576 -6.98306 -6.78399 13.8244 -6.99249 -6.68794 14.4095 -6.21875 -5.9108 14.0147 -5.6566 -5.29016 14.4693 -6.39695 -4.98535 15.3956 -6.09166 -3.99824 15.2618 -6.38544 -4.16865 14.4398 -6.90525 -4.65507 14.7473 -7.72635 -4.79909 14.5031 -8.65832 -4.05581 14.7475 -9.25043 -3.09557 14.8895 -9.18646 -2.6021 15.2407 -8.38582 -2.9499 16.0791 -8.09489 -1.94716 15.9257 -7.77001 -2.44189 16.236 -6.97526 -2.89453 16.9621 -6.42342 -3.86088 17.1923 -6.7631 -4.16847 16.5527 -7.4516 -4.21119 16.211 -8.41952 -4.754 15.9436 -9.24413 -5.40764 15.5914 -8.57207 -6.27718 15.812 -8.96455 -6.95504 15.6928 -8.14494 -6.81919 15.6544 -7.12368 -6.7532 15.8392 -6.0939 -6.73759 16.8429 -5.88013 -6.44865 17.7603 -5.6252 -6.50422 17.2459 -4.80082 -6.08628 17.6762 -3.95245 -6.16534 16.9648 -3.31089 -5.36519 16.7929 -3.9663 -5.64957 15.947 -4.30342 -4.98074 15.5782 -4.96766 -3.96556 15.7417 -5.04029 -3.0203 15.7345 -5.34455 -2.24568 16.328 -5.33307 -1.33373 16.3362 -4.99447 -0.89807 15.9694 -4.20497 -0.871094 16.4777 -3.32951 -1.68744 17.0772 -3.43147 -0.891682 17.4931 -2.94578 -1.41952 18.1041 -2.24829 -1.85624 19.001 -2.35287 -2.19853 19.7552 -2.86864 -2.96189 20.4068 -2.53603 -3.89199 20.2634 -2.19075 -4.75771 20.1875 -2.47302 -4.27176 19.5536 -2.99405 -4.25385 20.4898 -3.38377 -4.15021 21.3938 -3.12109 -4.01892 22.3334 -3.35751 -3.24947 22.765 -2.89011 -2.52136 23.3772 -2.74757 -1.91848 23.8057 -2.15674 -1.65984 24.7739 -1.9307 -1.5365 25.0221 -0.9925239 -0.928666 25.5763 -1.55277 -0.451051 25.4977 -2.37548 -0.311332 26.11 -3.13363 -0.817934 25.5204 -3.75542 -0.09596857 24.8243 -3.76455 --0.80987 24.6976 -3.49872 --1.53429 25.4104 -3.13797 --1.66816 25.3927 -4.12101 --1.71159 24.8407 -4.93091 --2.60132 24.3786 -4.9334 --2.65342 23.3652 -4.93271 --2.55971 23.0874 -3.93072 --3.33572 22.4302 -3.67131 --3.78692 22.8343 -2.87941 --3.32065 23.0216 -2.04122 --4.06244 23.5135 -1.55054 --4.71269 23.3491 -2.29393 --5.33318 22.6329 -2.25105 --6.13258 22.5135 -1.59834 --6.55059 21.5951 -1.55957 --5.86997 21.1266 -0.9495489 --4.91375 20.782 -1.07176 --4.00883 21.0334 -0.9495269 --3.71371 21.3602 -0.06397288 --2.73975 21.6107 -0.1083809 --2.26901 21.5179 0.7389031 --1.62452 22.327 0.5147371 --0.644586 22.503 0.7338311 --0.720315 22.8806 1.63099 --1.27837 22.666 2.38874 --0.947893 22.3732 3.3303 --0.697055 23.0109 4.05814 --0.605812 22.1244 4.39344 -0.356578 22.0425 4.16815 -1.04668 21.8862 3.40027 -0.482136 22.2123 2.63641 -1.23547 22.95 2.47784 -1.28895 23.611 1.87263 -1.39146 23.0539 0.9915601 -2.34305 22.8046 0.8898661 -1.95098 22.5325 0.04237262 -2.36858 22.251 -0.7958209 -2.99912 22.484 0.03237322 -3.60146 21.6943 -0.01843678 -4.31093 21.5279 -0.7453979 -4.25768 21.599 -1.7834 -5.12928 21.5453 -2.36451 -5.60279 21.3112 -1.56921 -5.0394 20.6507 -1.08717 -5.31661 21.1948 -0.2830129 -5.73001 21.3217 0.5445531 -6.28771 20.698 -0.01795448 -6.69657 21.5994 0.08092132 -6.75972 22.335 -0.5728179 -7.62222 22.7907 -0.4807259 -7.72198 23.7646 -0.1220869 -8.57373 23.6703 -0.5601029 -8.65323 24.7176 -0.6790479 -8.22686 25.5574 -1.04391 -7.82044 25.4468 -1.96443 -6.98723 25.2044 -1.44203 -7.30708 24.2601 -1.5793 -6.74555 23.5474 -2.03873 -6.59245 22.776 -2.65391 -5.66871 23.0345 -2.40373 -5.75075 23.9883 -2.84634 -6.03581 24.7762 -3.34242 -5.45337 24.607 -4.07229 -4.65288 23.9385 -4.25361 -3.75862 24.2485 -3.81106 -4.23009 25.051 -3.67422 -3.18996 25.0749 -3.60349 -3.39988 25.0332 -4.60507 -3.08322 24.1764 -5.01847 -2.15461 23.6949 -5.18586 -1.63877 23.8361 -6.00564 -0.664562 23.9139 -6.20473 -0.300593 23.4875 -7.01266 --0.008696485 23.549 -7.96458 --0.904116 23.1508 -7.86543 --1.08318 22.6584 -6.97 --0.787271 23.4821 -6.45793 --0.802445 24.1392 -5.6749 --0.30261 23.2926 -5.58439 --0.641 22.9674 -4.61756 -0.07425147 23.1853 -3.88123 -0.25969 22.5073 -3.17052 -1.0585 22.1747 -3.76606 -1.31697 21.3092 -4.17933 -1.09366 20.3728 -4.56187 -2.04643 20.2179 -4.8628 -2.73057 19.6766 -5.27433 -2.82161 20.111 -6.20509 -3.6744 20.6233 -6.33793 -4.59344 20.6521 -6.01239 -5.54979 20.6811 -5.63083 -5.44818 20.1594 -4.79598 -4.66069 19.5664 -4.49942 -5.42603 18.9343 -4.83078 -6.38154 18.9486 -4.55479 -6.98249 18.4744 -3.84591 -7.95519 18.4287 -4.27892 -8.06795 19.3691 -4.19938 -7.7281 20.4004 -4.22761 -7.6335 21.341 -3.86768 -8.15394 22.1852 -4.20289 -7.70982 22.5248 -3.36263 -7.08488 22.6071 -4.21995 -6.55296 22.5494 -5.04952 -6.90602 22.0823 -5.86418 -6.82246 21.5876 -6.70959 -6.22109 20.8449 -6.73509 -6.79685 20.3417 -7.42453 -7.04992 19.4936 -6.96712 -7.15543 18.9042 -7.71533 -7.10361 18.7744 -8.72467 -6.22663 18.8922 -8.89419 -5.63404 19.4509 -8.33606 -5.60006 19.1654 -7.37726 -5.82561 18.2976 -6.91511 -6.64128 18.1387 -7.26594 -7.23167 17.3547 -7.11917 -7.78584 18.2244 -6.88069 -8.05382 17.5454 -6.30484 -8.26224 16.9596 -5.49146 -9.17239 17.0068 -4.96628 -9.95969 17.4072 -5.52512 -9.51318 18.0068 -4.77723 -10.3776 18.1853 -4.24964 -10.7905 19.1302 -4.38073 -11.2257 18.97 -3.46535 -10.2493 19.0913 -3.14504 -10.1524 20.0721 -2.96897 -9.39393 20.6662 -3.24734 -9.18158 21.1289 -2.31892 -10.1583 21.0961 -2.63321 -10.0288 21.287 -3.61231 -10.5323 22.1895 -3.53424 -9.72301 22.7089 -4.05475 -9.86747 21.9601 -4.67272 -10.3231 22.3901 -5.42428 -10.969 22.4517 -4.6546 -11.3645 21.8438 -4.02961 -12.1059 21.2371 -3.72295 -11.4823 20.9506 -4.47199 -11.6442 19.9258 -4.52042 -12.4713 19.635 -4.93355 -12.5895 19.9171 -5.80058 -11.8008 20.4773 -6.26592 -12.4308 20.2484 -6.99848 -11.9672 19.4016 -7.31364 -11.0057 19.2841 -7.72015 -11.1125 20.1129 -7.21388 -10.3894 19.8657 -6.51313 -9.5495 19.7367 -5.88387 -8.83673 19.4193 -5.22937 -8.84571 18.6346 -5.79685 -9.53661 18.5104 -6.43132 -9.78958 17.6108 -6.7335 -9.22222 17.9028 -7.55343 -9.79739 18.5709 -7.82612 -9.14663 19.3461 -7.65097 -9.50116 19.3242 -8.57275 -9.74094 20.2387 -8.71903 -9.15733 20.07 -9.529 -8.81512 19.4078 -10.1831 -8.37698 20.2684 -10.5026 -7.50149 20.5659 -10.9621 -7.73297 21.4701 -10.6515 -8.73793 21.7238 -10.7756 -9.51183 21.4953 -11.4931 -10.039 21.3112 -12.3512 -10.5709 21.2696 -13.2367 -11.5323 21.5543 -13.0648 -12.0694 22.3749 -12.8504 -12.5654 22.9607 -13.3807 -12.5943 23.6588 -14.1531 -12.9731 24.4455 -13.7208 -13.0794 25.4026 -13.8335 -13.7262 24.7729 -14.1565 -14.4711 24.3604 -14.6772 -15.2773 24.8913 -14.389 -14.8801 25.776 -14.7246 -15.3579 25.6069 -13.8379 -14.893 26.4603 -13.591 -13.9885 26.7006 -13.7326 -13.1671 27.1743 -13.8143 -12.1527 27.4983 -13.6783 -11.7594 28.1144 -12.9226 -11.7258 28.1383 -11.9316 -11.2597 27.8918 -11.0731 -10.9184 26.9757 -10.8902 -10.2936 27.5847 -11.2534 -9.78742 28.4354 -11.1872 -8.90065 28.8363 -10.8469 -7.95773 28.8008 -11.0309 -7.04889 29.0056 -10.8386 -6.04189 29.119 -11.0732 -6.21346 28.9231 -10.1246 -5.36977 28.3997 -10.0963 -5.9134 27.7239 -9.45844 -6.24381 28.2148 -8.767 -6.2609 28.0534 -7.75515 -5.68823 27.2541 -7.41854 -6.05103 26.8505 -6.57768 -6.51394 26.246 -5.86202 -6.62579 26.2984 -4.86149 -6.44976 27.2313 -4.4768 -6.75455 26.8005 -3.58975 -7.62028 26.4737 -3.52962 -8.56566 26.8827 -3.30285 -9.15274 26.8449 -4.17842 -8.66785 26.6798 -4.99836 -8.6646 25.9133 -4.42525 -7.6933 25.6379 -4.51931 -7.10942 24.8259 -4.87687 -6.38374 25.1659 -5.48653 -5.44338 24.9032 -5.43721 -5.55274 24.1526 -6.06719 -4.5932 24.5438 -6.30728 -3.74502 24.299 -6.72317 -4.18528 23.6963 -7.4653 -3.18484 23.5847 -7.48633 -3.24113 23.5693 -8.51857 -3.74751 24.2439 -9.02382 -4.8221 24.4431 -9.02092 -5.72776 24.8031 -8.73517 -5.70997 23.9461 -8.1799 -6.25984 24.388 -7.54069 -7.25215 24.1664 -7.37609 -6.99936 24.4758 -6.48472 -7.49826 23.7025 -6.05041 -8.41371 23.4077 -6.11004 -8.56539 22.6504 -5.55306 -8.00845 22.6018 -6.39794 -8.13534 23.1401 -7.16981 -8.89838 22.9871 -7.72494 -9.76832 22.9648 -8.25886 -10.4804 22.3968 -8.57274 -10.747 21.97 -9.42515 -10.7812 21.0167 -9.16509 -11.7203 20.8412 -9.23951 -12.4147 20.8803 -8.47215 -13.0625 21.4962 -8.05737 -13.6324 21.0065 -7.50408 -13.606 21.3647 -6.59838 -14.5719 21.0392 -6.63791 -15.3656 21.369 -7.24816 -16.0332 21.0667 -7.96801 -16.9461 21.0976 -8.20847 -17.7365 21.3174 -7.57975 -18.1781 21.1147 -8.53519 -18.5384 21.9897 -8.23926 -19.0852 21.8362 -9.022 -19.5645 22.0244 -9.87793 -20.0836 21.9293 -8.97643 -20.6478 21.806 -8.10983 -19.7174 21.514 -8.01464 -20.1371 21.2197 -7.13258 -19.4277 21.65 -6.59195 -18.6786 22.2733 -6.86489 -19.4305 23.018 -6.74225 -19.5306 23.5383 -5.83284 -18.6941 23.91 -5.32029 -18.1162 23.6695 -4.51359 -17.226 23.6483 -4.12138 -16.6246 23.9018 -4.92698 -16.4273 23.1365 -5.59114 -15.7917 23.7448 -6.06509 -15.2111 23.8068 -6.96437 -14.4749 23.2063 -6.48662 -14.5091 22.3279 -5.94994 -14.707 22.2552 -4.98425 -13.9344 21.9343 -4.50629 -14.4434 21.9004 -3.66605 -14.7103 21.0079 -4.03554 -15.283 20.2709 -3.66223 -14.6726 19.8007 -4.35546 -14.7275 19.8514 -5.31422 -13.7544 20.0303 -5.39702 -13.5081 19.8712 -6.33619 -13.3784 18.9153 -6.48659 -14.3327 18.99 -6.15063 -14.2679 19.1823 -7.16268 -13.4154 18.8974 -7.62108 -13.5387 18.1801 -8.28074 -13.3642 18.1504 -9.33908 -13.0971 17.5282 -10.0487 -12.2743 17.9105 -9.62359 -12.1932 17.2835 -8.84954 -11.9435 16.7172 -9.61688 -10.9979 16.4325 -9.50091 -10.0969 16.3463 -9.24521 -10.0151 15.9995 -10.1602 -10.4862 16.1738 -10.9545 -11.1468 15.4716 -10.6682 -11.3384 15.6605 -11.596 -12.0216 15.9106 -12.3559 -11.6988 16.7174 -11.8087 -12.1753 17.1135 -12.6534 -13.1759 16.9347 -12.5719 -13.6768 17.6277 -13.1898 -13.5688 17.2374 -14.057 -13.637 16.3208 -13.5486 -14.508 15.771 -13.2964 -14.8162 16.7044 -13.2046 -15.3524 17.2366 -12.551 -16.1803 17.6986 -12.6491 -17.0804 17.559 -13.0259 -17.2421 18.4326 -12.5335 -16.9948 18.9655 -11.7039 -16.3916 19.6687 -12.0315 -15.3959 19.6546 -11.6364 -14.3957 19.5743 -11.8479 -14.0831 20.4102 -12.3242 -13.0969 20.4895 -12.0045 -12.1831 20.0998 -12.1008 -12.0453 19.7116 -13.0391 -11.2325 20.2733 -13.0222 -10.2796 20.1078 -13.03 -10.0019 19.2006 -12.9489 -9.4024 19.3441 -12.1758 -10.1278 20.0082 -11.7542 -10.6698 19.8055 -10.9548 -11.3695 20.5161 -11.0709 -11.2881 21.4661 -11.4671 -10.5734 22.064 -11.2637 -10.5118 22.6833 -12.0703 -11.0323 23.543 -12.2069 -12.0194 23.9624 -12.328 -12.6516 24.5165 -11.7947 -13.1673 24.9652 -12.5182 -13.6395 24.141 -12.9377 -13.8473 23.2159 -12.6424 -14.606 23.406 -11.9968 -14.4926 24.3849 -11.6155 -14.3696 24.2664 -10.5972 -14.9827 23.4575 -10.5723 -15.8421 23.8515 -10.1579 -16.0073 22.8622 -10.1969 -16.3543 23.0504 -9.21741 -15.6617 23.3004 -8.55712 -15.1052 22.5601 -8.18463 -14.1724 22.5074 -8.56885 -14.2476 23.2957 -7.95459 -13.545 22.9425 -7.26034 -13.1453 23.4093 -6.48258 -13.2265 24.2409 -5.9314 -12.9033 24.8866 -5.26458 -13.5713 25.678 -5.24617 -14.5622 25.478 -5.23281 -14.7339 26.3458 -5.75123 -15.0871 26.5076 -6.70902 -16.0265 26.9003 -6.51219 -16.2431 26.0061 -6.25223 -16.721 26.717 -5.7955 -16.2939 26.313 -4.98231 -15.777 25.5586 -5.17912 -16.5662 24.9629 -5.37832 -17.57 24.9104 -5.5255 -18.2732 25.4955 -5.36408 -18.7257 26.2769 -5.89328 -18.1818 25.7294 -6.59827 -17.2892 26.2185 -6.75492 -16.7967 25.8381 -7.62388 -15.8253 25.8911 -7.39111 -15.0819 25.5405 -7.91782 -14.0736 25.6651 -7.80452 -14.3604 25.9781 -8.6561 -14.7018 25.6084 -9.58421 -14.0448 26.2744 -9.82791 -14.166 27.2723 -9.50991 -13.9557 28.245 -9.74165 -14.728 28.2199 -9.21169 -15.3289 28.2781 -10.0005 -15.9207 28.3904 -9.21882 -16.1906 29.0338 -8.48827 -16.751 28.4172 -7.95621 -16.2207 27.8831 -7.27445 -15.6513 28.3137 -6.53183 -15.5735 28.2666 -5.53042 -14.5908 28.2629 -5.60871 -13.7295 27.7991 -5.43938 -13.5694 28.7832 -5.60953 -13.8662 29.3116 -6.42651 -13.1821 29.4804 -7.19373 -12.5866 28.7276 -7.33631 -12.2656 27.7672 -7.18982 -11.4346 27.8821 -7.7284 -10.6266 27.3564 -7.37696 -11.3975 26.9146 -6.94486 -10.6885 26.3198 -7.17706 -10.5375 25.3607 -7.13979 -11.2532 25.6128 -7.83456 -10.2991 25.8997 -7.99193 -9.63582 26.6916 -7.80735 -9.01637 26.1347 -8.46866 -9.37671 25.4781 -9.14923 -9.8218 24.9525 -9.95094 -9.98969 25.918 -9.8552 -9.59725 25.8919 -10.7469 -9.11889 25.3989 -11.5072 -9.46699 24.57 -11.1197 -8.59478 24.0536 -10.9347 -8.25374 23.4349 -10.2701 -8.86608 23.7577 -9.48156 -9.013 24.1864 -8.60571 -8.48142 24.7874 -9.06821 -7.93175 24.7349 -8.25639 -7.13712 25.1487 -8.69492 -7.71438 25.7957 -9.17682 -7.32037 26.6791 -8.91042 -7.94653 27.2679 -8.46207 -8.87209 27.5539 -8.36606 -8.32694 28.2443 -7.83743 -8.15194 29.0435 -7.26842 -7.61838 28.5076 -6.61877 -7.48234 29.5162 -6.61383 -6.87221 29.8948 -5.88558 -6.15401 30.0804 -5.28336 -6.74088 29.4167 -4.74588 -5.77468 29.038 -4.59699 -5.21934 28.396 -3.93992 -5.08715 27.429 -4.24579 -4.86779 26.8163 -3.45672 -5.18055 26.2694 -4.23326 -4.30604 25.9029 -4.60901 -3.91467 26.803 -4.62717 -3.7318 27.0407 -5.62902 -3.1981 27.4953 -6.2832 -3.25582 27.1334 -7.25892 -3.97146 26.3796 -7.18424 -3.40154 25.6987 -6.80528 -2.42562 25.9043 -6.67165 -1.48112 25.6243 -6.79568 -1.36324 26.1226 -5.92393 -0.411239 26.1577 -6.33569 -0.394317 26.1069 -7.33472 -0.822625 26.1115 -8.18701 --0.09859133 26.2563 -8.60635 -0.243481 25.5779 -9.22187 --0.161013 24.7561 -9.02621 -0.384021 24.3588 -9.75857 -1.20783 24.0351 -9.25555 -1.32482 23.6395 -8.36517 -1.65722 24.4501 -8.01169 -2.32103 24.5351 -8.75534 -2.82155 25.1907 -9.34462 -3.67746 25.0886 -9.82397 -3.78998 25.9566 -9.30734 -3.16196 26.4416 -9.9292 -2.4277 26.8738 -10.31 -3.14009 27.5141 -10.35 -2.97418 27.6013 -11.2589 -2.82817 27.3174 -12.1978 -3.10174 26.3602 -11.8874 -4.05891 26.6418 -11.7222 -4.99718 26.6885 -11.3701 -4.72421 27.0337 -10.507 -4.00654 27.6431 -10.8737 -4.04614 28.5915 -10.5848 -3.60539 28.9501 -11.4479 -2.84956 29.5449 -11.1673 -3.53106 30.1741 -11.45 -3.84169 30.4477 -10.5768 -4.09051 29.8684 -9.7087 -4.53718 29.3767 -8.99031 -4.40157 29.4733 -7.97785 -4.16876 30.4267 -8.03256 -5.07346 30.8829 -8.10258 -5.21195 30.9422 -7.10271 -4.56212 31.7133 -7.10815 -5.44413 31.8855 -6.64243 -5.77791 32.7257 -6.8361 -5.75212 33.4131 -6.08342 -6.18387 34.2823 -6.28149 -6.06789 35.2031 -5.83171 -5.56354 35.9154 -5.32974 -5.74727 35.9389 -4.38795 -5.78499 36.2546 -3.43191 -6.28111 36.4023 -2.60965 -7.0699 35.8113 -2.47836 -6.4694 34.9664 -2.70033 -6.997 34.4109 -2.05829 -6.03462 34.0154 -2.11893 -5.36945 34.4736 -2.81166 -4.90076 33.7402 -2.39679 -4.88937 32.7938 -2.01421 -4.04709 32.2986 -1.58988 -3.99244 31.9571 -2.52856 -3.18357 32.2247 -2.99085 -2.24532 32.7152 -2.84897 -1.25491 32.5811 -3.0498 -0.793518 33.4665 -3.05057 -0.03558027 32.8175 -2.73247 --0.837785 32.349 -2.38845 --1.4373 32.7327 -1.78645 --2.03614 31.9171 -1.55322 --2.64205 31.7399 -0.7156659 --2.36406 32.559 -0.3595359 --2.89143 33.0653 -0.9856779 --3.49647 33.6956 -1.43307 --4.00635 33.3102 -2.20197 --4.79921 32.6951 -2.15696 --4.26601 31.757 -2.15662 --3.44145 31.1484 -2.36106 --4.04371 30.4539 -2.69241 --4.98946 30.2386 -2.38614 --4.66825 30.6799 -1.58221 --3.88421 31.072 -1.00006 --3.73429 32.042 -0.6553929 --3.55747 31.6976 0.2217321 --3.07338 31.3927 1.01787 --2.65202 31.1353 1.92554 --3.29957 30.8531 2.61722 --4.11254 30.3284 2.30378 --4.11964 29.5557 2.9238 --4.94517 28.9952 3.19731 --5.24214 28.707 2.25672 --6.14416 28.6769 2.40584 --6.53914 29.3688 3.00292 --7.43784 29.3054 2.56336 --8.24169 28.6526 2.59794 --8.88821 29.1778 1.97046 --8.42479 30.0898 1.91363 --9.19729 30.3555 1.42448 --10.0964 30.4538 1.03751 --10.702 29.838 1.51218 --11.5917 29.5718 2.00446 --12.3678 28.976 2.08915 --13.128 29.5293 1.92096 --13.4164 29.415 0.9413711 --14.3768 29.7233 0.9179961 --15.0251 30.4365 0.7104011 --15.4782 31.2714 0.3161891 --15.0088 32.0131 0.6320801 --14.7495 31.9926 -0.3134299 --13.7501 31.9685 -0.5969969 --13.1513 31.3128 -0.9320179 --12.4397 30.6947 -0.4256129 --12.0249 30.6958 -1.40449 --11.8647 31.4803 -1.94959 --10.9002 31.478 -1.72169 --10.373 31.5295 -0.9139339 --9.7965 32.0939 -1.54774 --8.75692 31.9585 -1.19774 --7.77427 32.3404 -1.22765 --7.87702 33.1625 -1.84391 --7.16611 33.7385 -1.77668 --7.55527 34.6425 -1.7363 --6.76853 35.1712 -1.28314 --5.94382 35.3885 -0.8633469 --6.33886 35.5142 0.08145962 --7.02974 34.8142 -0.1394109 --7.60879 35.4437 0.3690931 --7.90159 36.3626 0.5828591 --8.00082 36.2182 1.60105 --8.9555 36.3684 1.83033 --8.65038 35.4533 2.12037 --8.65281 35.2336 1.09613 --9.05811 34.3651 1.27529 --9.38013 34.7124 0.4015691 --10.1681 34.6614 -0.03629528 --11.1581 34.6728 0.2770401 --10.5232 35.3808 0.4492561 --10.5128 35.8002 -0.4176029 --11.5195 36.0247 -0.3566409 --11.7164 35.6577 -1.28217 --12.2895 35.2112 -1.93386 --12.1598 34.969 -2.84266 --12.7899 35.2519 -3.57748 --13.6664 35.7889 -3.52062 --14.5986 35.6237 -3.62834 --14.549 36.4889 -4.08186 --13.5811 36.7464 -4.15018 --13.3111 36.4101 -5.08034 --13.8498 36.1271 -5.89633 --13.2452 36.8637 -6.23324 --12.3628 37.1122 -6.13566 --11.5113 36.5219 -6.33313 --10.7025 36.0134 -6.02406 --9.79561 36.0085 -6.27028 --9.26793 35.1676 -6.62764 --10.075 34.7026 -6.50401 --9.94211 33.8696 -5.93646 --9.39054 33.0792 -5.85284 --8.72588 32.4357 -5.61659 --9.24534 32.1388 -4.75888 --9.6295 31.4265 -5.3126 --10.483 31.2822 -5.8151 --9.93805 30.6359 -6.44165 --10.1612 29.9241 -5.80772 --9.59946 29.3771 -5.29024 --8.76407 29.6499 -5.66905 --9.07322 28.9045 -6.23688 --8.2435 28.3569 -6.68556 --7.34344 28.1158 -6.45939 --7.6192 27.7867 -5.5644 --6.72882 27.8812 -5.43861 --6.6068 26.9726 -5.2444 --5.77749 27.3196 -4.87182 --5.62143 26.6083 -5.51526 --4.91028 26.2641 -6.11898 --5.27422 26.5982 -7.00966 --5.12325 26.6151 -8.00203 --4.19758 26.7887 -7.66085 --3.34978 26.4552 -8.14885 --2.92657 27.1567 -7.55578 --2.93921 27.3615 -8.53039 --2.18222 26.8012 -8.79302 --1.36673 27.0627 -8.29153 --1.99763 27.6738 -7.87468 --1.30842 27.9974 -8.58431 --1.23887 28.9795 -8.25522 --0.403265 29.3763 -7.84262 --0.28253 29.0488 -6.91868 --0.642839 30.0442 -6.94809 --1.14596 30.5863 -6.40865 --0.586428 31.2946 -5.88146 --1.04519 31.9821 -5.40463 --0.221327 32.2531 -4.96117 -0.115777 32.9057 -5.64915 --0.779199 33.335 -5.6079 --0.718813 34.2161 -5.28741 --1.08568 35.1238 -5.38603 --0.944038 35.7175 -6.23396 --1.25636 34.7639 -6.41798 --2.01362 34.3918 -6.96988 --2.72462 33.8541 -7.40201 --3.2829 33.063 -7.47193 --4.01673 32.6415 -6.89943 --4.16528 32.92 -5.92928 --5.20726 33.0174 -5.85081 --5.57561 33.9062 -5.90624 --6.58718 33.7711 -5.81647 --6.1676 32.929 -5.9218 --6.1158 32.8305 -4.89903 --5.89646 32.0335 -5.51982 --5.15893 32.2793 -4.78035 --4.28304 31.887 -4.41032 --4.8279 32.0147 -3.58512 --5.12399 31.1103 -3.55506 --6.07002 30.8315 -3.73675 --5.61405 29.9114 -3.6375 --5.29811 29.027 -3.36657 --4.46187 28.5703 -3.56907 --3.53347 28.8199 -3.38953 --3.1563 28.0579 -2.8795 --3.03774 27.6528 -1.96877 --3.56876 26.8851 -1.62935 --3.84142 26.1854 -0.9115909 --3.23823 26.9089 -0.6148229 --2.29375 27.1068 -0.2153419 --2.28849 26.6519 0.7219641 --1.58742 27.4168 0.7723061 --2.07682 28.2219 0.7629331 --2.58421 28.6502 1.55457 --3.42861 28.965 2.01409 --3.88025 28.9584 1.13364 --4.25316 28.1812 0.6223221 --4.39479 27.1252 0.6810341 --3.46576 26.7763 0.4864701 --3.62229 26.5869 1.41911 --3.84727 25.8376 0.7606571 --3.33141 24.9088 0.6629501 --2.3871 24.7265 0.5470561 --1.8722 24.5808 -0.2684759 --2.33996 24.9482 -1.09996 --1.94896 25.2123 -1.94291 --1.34704 24.4567 -2.16147 --0.881582 24.1452 -1.32727 -0.05731957 24.5258 -1.37871 -0.01081447 24.5799 -0.3821189 -0.06028677 24.9415 0.5447481 -0.720344 24.3663 1.1336 -0.389512 24.1846 2.05443 --0.12885 23.7598 2.76759 --0.373567 24.5903 3.20918 --0.399037 24.3651 4.15771 --1.20352 24.9251 3.88259 --1.32044 25.9029 3.72326 --1.39141 25.942 4.75342 --2.38591 26.1606 4.58754 --3.11655 26.7577 4.75753 --3.68771 25.9718 4.57151 --4.28328 26.5728 4.05436 --4.95466 26.8151 3.45734 --5.41849 26.4222 2.69783 --6.40864 26.1944 2.77823 --6.98668 25.5684 3.33821 --6.57949 24.9885 4.06287 --5.6542 25.3081 3.84591 --6.05908 25.6954 4.69874 --5.98463 24.9077 5.4115 --6.0568 24.1348 6.04231 --6.95235 24.6339 6.1841 --6.73519 25.5102 6.513 --7.01314 26.2261 5.83519 --7.44436 26.3449 4.99031 --8.20531 26.1139 4.42455 --8.72787 25.6559 5.02419 --8.1653 24.843 5.0002 --8.41207 23.9066 4.97985 --8.67069 24.0019 3.99131 --7.70083 24.2352 3.81193 --7.94957 24.2787 2.83801 --7.72664 23.3035 2.89557 --6.84576 23.7231 2.64432 --5.94032 23.9818 2.31573 --5.78547 24.5767 3.05555 --5.98115 25.2986 2.38576 --6.92079 24.9546 2.38556 --7.57061 25.1444 1.64447 --6.95319 25.3672 0.8867401 --6.09321 25.6381 0.3708411 --5.3592 26.2191 0.5892371 --4.9325 25.4517 0.00815367 --5.42193 24.6363 0.1828431 --5.10492 23.6875 0.2053401 --5.32426 23.131 0.9929951 --4.83646 22.4216 1.5426 --4.02062 22.8576 1.84647 --3.74661 22.293 2.60514 --4.21102 21.7749 3.3157 --3.58229 21.0404 3.5106 --4.17664 20.2092 3.34811 --4.54572 20.4387 4.24323 --4.08404 21.2659 4.56684 --4.98129 21.7001 4.63108 --5.5415 21.7172 5.3966 --5.54169 22.6447 5.06409 --5.84643 23.5924 4.83574 --5.30939 23.4956 5.65634 --5.35936 23.4691 6.6542 --6.07607 23.7546 7.25969 --6.01784 24.5863 7.84923 --5.58553 25.344 8.39298 --5.98508 25.5364 9.21597 --6.84137 25.2178 8.83013 --6.69244 24.2341 8.80802 --5.88883 24.0697 9.41446 --5.84233 23.0663 9.49857 --5.50628 22.3773 8.96647 --4.88463 22.9386 8.37951 --4.68049 23.8953 8.0961 --4.44779 24.8714 8.01635 --4.60973 25.5314 7.29506 --5.10913 25.1421 6.47988 --4.46363 25.0403 5.71182 --3.85496 24.3095 5.4336 --3.5544 24.8744 6.29658 --2.98237 25.285 5.67092 --1.98425 25.1829 5.86711 --1.94154 25.4879 6.87341 --2.20494 25.7029 7.74889 --1.43238 25.1368 7.87075 --1.72595 24.5375 8.60984 --1.04091 23.951 8.15911 --0.374104 23.1673 8.44135 -0.200434 23.3861 9.22563 -0.625364 24.0235 8.62792 -1.565 23.7492 8.91318 -1.56927 24.1007 7.97938 -1.9009 24.066 7.07811 -2.47254 24.7348 7.59463 -2.8728 25.4289 6.93957 -3.72549 25.7873 7.23667 -3.49076 25.6963 8.19929 -3.11532 26.2848 8.95176 -3.48422 26.334 9.91602 -4.34196 26.3147 10.4414 -4.16966 25.3585 10.5833 -3.98052 24.4027 10.8783 -4.34375 23.4995 11.0523 -3.6548 23.3615 11.7932 -4.64356 23.2432 12.0813 -4.95101 23.3855 12.9588 -5.76779 23.6052 13.6099 -6.32103 24.303 13.1245 -7.19917 24.1669 13.5383 -8.07128 24.5421 13.0713 -8.6735 25.2829 13.1728 -8.41718 26.2274 13.037 -7.74779 26.9557 13.2952 -7.41915 27.5339 14.0005 -7.03155 27.5085 14.9136 -7.64374 26.8023 15.29 -7.02049 26.1281 15.6659 -7.7618 25.4399 15.6979 -7.09938 24.7524 16.0272 -6.88241 24.2998 15.246 -6.01043 24.2046 15.7749 -5.92909 23.9256 16.739 -4.98639 23.5744 16.5254 -4.32475 24.2407 16.1846 -4.32958 25.1432 16.6547 -5.18068 25.424 16.21 -5.30387 25.976 15.306 -5.74838 26.48 16.0816 -5.33377 27.4117 16.1127 -4.71565 27.5516 16.9351 -3.87749 27.568 16.3776 -3.46667 27.2388 15.4699 -2.62861 27.0347 15.9497 -2.12911 26.9227 15.0447 -2.19746 26.9446 14.0543 -1.76275 27.6755 13.4142 -0.858209 27.2628 13.3545 -0.798871 28.0823 12.8046 -0.165199 28.7795 12.4367 --0.601192 28.3972 12.8524 --1.36019 28.1195 12.3627 --2.1282 28.0332 11.7677 --2.39566 27.2658 11.045 --3.25478 27.3655 10.541 --4.09646 26.8483 11.0105 --3.84542 26.4754 10.1214 --3.17747 25.6991 9.88881 --2.79756 24.9397 10.4629 --2.80823 23.9541 10.4612 --2.41126 23.4329 11.2486 --2.72616 23.3711 12.2099 --3.57313 23.0941 12.6526 --4.57359 23.3179 12.7047 --4.4732 24.2715 12.9772 --5.35121 24.5551 13.4249 --5.36753 25.2542 14.2046 --4.64914 24.877 14.7575 --4.60197 23.8989 15.0149 --4.45984 23.3608 15.8749 --4.24253 22.3549 15.8295 --4.23686 21.7892 14.9984 --4.61953 21.1999 14.2812 --4.83951 20.4333 13.7433 --4.41586 21.2761 13.3969 --3.79156 20.4977 13.5373 --2.9538 20.8898 13.7505 --2.26467 21.4726 14.0725 --2.31232 22.5126 14.2164 --2.28534 23.3248 14.7459 --2.74748 23.4274 15.5834 --2.61819 24.3016 15.1136 --2.81689 24.9856 15.8709 --3.5793 25.5041 15.4177 --4.12039 25.6056 16.2359 --4.11598 25.4946 17.2301 --4.40204 25.6311 18.165 --5.17168 25.4593 17.6076 --5.49244 25.9859 16.7389 --5.01978 26.7189 17.1655 --4.94943 27.3594 16.4315 --4.46305 28.1638 16.8332 --4.56374 29.1023 16.9777 --3.80231 29.2941 17.6132 --3.1089 29.1271 16.8993 --2.54083 29.9196 16.9993 --1.59066 30.3134 17.0923 --1.1229 29.4637 17.2553 --1.14312 28.9605 18.2044 --1.30184 28.0762 17.768 --1.05529 28.1404 16.8585 --1.68432 28.2153 16.1193 --2.42842 28.3236 15.4337 --1.92905 29.1171 15.1302 --2.54604 28.7882 14.4 --2.0673 28.2568 13.6843 --2.60336 28.0729 12.8254 --3.12155 27.1834 12.7914 --2.35718 26.8774 12.2586 --2.43114 25.8504 12.3694 --1.63722 25.254 12.2677 --1.5684 24.5114 12.9763 --1.48359 23.6657 12.4284 --1.96742 23.1762 13.1371 --1.18358 22.794 13.6898 --0.507825 22.8599 14.4092 --0.05433643 23.5241 14.8403 -0.668893 22.958 15.1637 -1.50856 22.6407 15.5632 -1.028 21.8296 15.4829 -0.07321817 21.9168 15.2226 --0.65852 21.4606 14.9177 --1.61644 21.6846 15.0972 --1.8735 20.7882 15.4069 --1.46234 21.1457 16.3133 --2.32776 20.6292 16.3941 --2.75861 20.0501 15.7049 --3.16543 19.569 16.5029 --2.43822 19.6946 17.1356 --1.61724 19.1937 16.8644 --1.15335 18.9746 17.7189 --1.68777 18.6003 18.4684 --2.25573 17.9106 18.0308 --2.87305 17.1668 17.8954 --3.77453 17.5305 17.9836 --3.52465 18.4716 17.7732 --2.82061 18.5605 18.4642 --3.00986 19.4183 19.0047 --3.23499 20.3556 19.2438 --3.79123 20.7477 20.019 --3.80244 21.4727 20.7766 --2.94677 21.5422 21.2447 --2.64418 21.0888 22.0964 --3.57737 20.8015 22.0233 --4.01319 21.5928 22.3278 --3.43601 22.4478 22.217 --2.88411 22.9589 21.5848 --2.12563 23.2235 21.0188 --2.61697 24.0469 21.2506 --2.03738 24.8801 21.1534 --2.0287 25.2974 20.2898 --2.23007 24.7035 19.4541 --1.46051 24.8875 18.8351 --2.10912 24.0858 18.4674 --1.19084 23.8358 18.1737 --0.740076 23.3516 17.3989 --0.265618 22.9754 16.603 -0.605279 23.2541 16.6948 -1.11872 22.7831 17.3811 -1.91475 22.4608 16.8281 -2.86022 22.713 16.6807 -2.88863 23.6636 17.0036 -2.86322 24.1841 16.1518 -2.10197 24.0707 15.5295 -2.84132 24.1226 14.82 -3.52462 24.817 15.1271 -3.8884 24.8706 14.1975 -4.0354 25.799 14.7331 -4.08933 26.7577 14.6183 -4.68638 27.4735 14.1669 -4.95238 27.7266 13.2267 -5.77237 28.3535 13.2546 -5.95079 27.8683 12.4157 -5.70663 27.3071 11.6404 -6.31632 26.5029 11.3883 -5.93388 26.0987 10.5981 -6.52741 26.109 9.80137 -7.30859 25.9932 9.24034 -8.10113 25.4722 9.39725 -7.95904 24.9823 10.2077 -8.1429 24.0128 10.4877 -7.42868 24.4346 10.9488 -6.44971 24.3737 10.674 -6.89257 23.6778 10.1628 -6.27228 23.0026 9.79615 -6.02409 22.128 9.48066 -5.12978 22.4611 9.0305 -4.53577 21.6145 8.9449 -3.71109 21.0241 8.90119 -2.85057 21.2636 9.35446 -1.9413 20.7537 9.44108 -2.65522 20.3665 8.74518 -3.15351 19.5544 8.35806 -3.15054 20.2241 7.60034 -3.98942 19.7089 7.8961 -3.70201 18.891 7.40375 -3.6261 18.9236 6.43456 -4.16954 19.3119 5.66922 -4.1138 19.2312 4.64166 -4.97744 18.8078 4.50366 -5.23305 17.8891 4.36048 -4.52341 17.182 4.11835 -3.68574 17.7747 3.91331 -2.96962 17.1117 3.90105 -2.14822 16.9828 4.40229 -2.68032 16.1602 4.36198 -3.17917 15.2834 4.52826 -3.66863 15.1609 3.63661 -2.86535 15.2134 2.99398 -3.0322 14.5755 2.27037 -3.60448 15.0631 1.62054 -3.94464 15.7259 2.23522 -3.46124 16.5334 2.49204 -4.38066 16.9094 2.74684 -5.24202 17.4352 2.54948 -6.06459 18.0134 2.57911 -5.80759 18.3402 1.64035 -5.34395 18.3589 0.6857281 -4.70443 19.0692 1.06119 -3.84141 19.4112 0.5961561 -3.62905 20.3411 0.1899651 -2.79543 20.1032 0.7393601 -3.33326 20.7304 1.29807 -3.00398 20.3368 2.1975 -2.96129 19.9202 3.16747 -2.84788 18.972 2.88304 -3.87748 19.0423 2.68859 -4.39104 19.8519 2.29307 -4.3144 20.0069 3.32605 -5.0928 20.6129 3.44193 -5.72143 21.441 3.63143 -5.32545 22.1055 3.05773 -4.49515 21.694 2.74134 -3.86052 21.0872 3.11457 -3.98154 21.411 4.06191 -3.3495 22.0227 3.59418 -3.46253 23.0207 3.52452 -4.37022 23.3338 3.17152 -5.31206 23.4749 2.76176 -5.65437 24.3527 2.35673 -5.61541 25.211 1.8534 -4.88303 25.88 1.96793 -4.36757 26.3118 1.23545 -3.72583 25.9778 0.6072841 -3.69551 26.3701 -0.3369459 -3.66503 25.465 -0.7755199 -2.97724 25.9493 -1.39636 -2.8005 26.6879 -2.16618 -2.06061 27.0988 -1.66501 -1.39155 27.487 -1.03251 -1.15039 28.4291 -0.6387749 -0.8435 27.7264 -0.00639932 -0.124248 27.394 -0.6469309 -0.269962 27.5182 -1.58935 --0.499252 27.2253 -2.03533 --0.952158 28.0261 -1.94637 --1.44845 28.4741 -2.72132 --0.485889 28.8051 -2.57439 -0.497312 28.8501 -2.58795 -0.523447 28.7435 -1.54201 --0.250615 29.3583 -1.54753 --0.362953 30.3365 -1.44712 --1.09124 30.7275 -0.8671219 --1.17616 31.383 -0.1576239 --0.428744 32.0069 -0.4520039 -0.175879 32.7988 -0.2103159 -0.411969 32.9642 0.7638831 -1.24031 32.2633 0.8783661 -1.0915 32.3433 1.8541 -0.114211 32.594 2.12278 --0.557941 33.228 2.48707 --1.34849 33.807 2.51853 --2.30215 33.5235 2.20824 --3.17343 33.0944 2.12705 --3.20241 34.0361 2.39952 --2.82042 34.5035 3.27026 --3.52549 33.8527 3.51665 --4.19088 33.8782 2.85603 --4.21389 34.8432 2.50092 --4.19283 34.1982 1.74094 --4.9787 34.3679 1.2182 --5.81559 33.7637 1.03629 --6.2667 33.286 1.68496 --6.52858 32.4562 1.09322 --7.03132 32.3765 1.9672 --6.51764 31.8131 2.56158 --6.15298 32.2851 3.42521 --6.04543 33.2621 3.05697 --5.13561 32.9053 3.15449 --5.04502 31.9013 3.00551 --5.17065 31.1069 3.69411 --5.03831 31.595 4.62143 --4.60065 31.4296 5.47344 --5.07482 31.0482 6.33279 --5.27723 30.08 6.35773 --4.36464 29.857 6.07885 --3.6201 29.3621 5.54776 --4.18881 28.954 4.83172 --4.09797 28.0199 4.47954 --3.32376 28.3566 3.93839 --2.42124 28.0405 3.88556 --1.63586 27.5052 3.61714 --1.71052 27.8762 2.68082 --0.807552 28.2881 2.56586 -0.146168 27.7659 2.62488 -0.315976 27.7058 3.57063 -0.546676 28.6977 3.46387 -0.942399 29.4421 2.99156 -1.44555 29.3176 3.88401 -2.02803 28.7137 4.46746 -2.81691 28.1783 4.1128 -1.939 27.6026 3.9745 -2.0084 26.9151 4.7554 -2.85507 27.114 5.24292 -3.53069 26.7457 5.85298 -4.43976 26.4595 5.50072 -5.03002 26.9691 4.87841 -5.83226 27.5268 4.98194 -6.06497 26.6018 5.30864 -6.07821 25.5863 5.47849 -7.03218 25.8635 5.35358 -7.85524 25.478 4.96221 -7.93833 26.1519 4.31092 -8.05976 26.8523 3.55811 -7.16932 27.335 3.49088 -6.68866 26.548 3.79262 -6.03497 25.79 4.00531 -6.53799 24.8537 4.25053 -7.44608 24.4964 3.86831 -7.90794 23.7124 4.11227 -6.93982 23.5557 4.04694 -7.21409 23.1614 4.95705 -7.75108 23.4831 5.68514 -7.69645 24.2714 6.40987 -7.2628 24.1207 7.313 -7.7915 24.0239 8.2387 -7.92137 23.2921 8.91856 -8.7018 22.7722 8.54838 -9.4142 22.1653 8.89383 -9.98993 22.8994 8.54634 -10.2311 22.0809 7.97985 -9.68705 22.8198 7.45578 -9.43208 23.4581 6.67319 -9.0154 23.1411 5.85197 -8.7367 22.533 6.61283 -8.94235 21.7355 6.02411 -8.32218 21.1218 5.71764 -7.9984 20.2439 6.03976 -7.61732 19.4144 5.62769 -7.07591 20.0448 6.09147 -6.33706 20.055 6.73041 -6.23779 19.1795 6.37574 -6.644 18.3062 6.65948 -5.92493 17.6155 6.9209 -4.99878 17.1892 6.8662 -5.49832 16.3343 6.84893 -6.46704 16.2524 6.7578 -6.65443 15.3157 6.43804 -6.94987 14.6058 5.79635 -7.25246 14.3374 4.81704 -6.43946 14.3159 4.23301 -5.69776 14.4861 4.92904 -4.83117 14.0286 5.00911 -4.60102 14.8782 4.67228 -5.2536 15.4778 4.97607 -5.44443 15.3849 3.99959 -6.39721 15.7481 3.97795 -6.32565 16.6633 4.40128 -7.10864 16.4954 4.99718 -7.73829 15.8141 5.3851 -7.89235 15.3377 4.52398 -8.82293 15.7205 4.59278 -9.54464 15.3688 4.05746 -9.93949 16.18 3.59235 -9.93216 15.9381 2.67776 -9.51695 16.8997 2.63979 -9.57154 16.3981 1.72875 -10.0494 17.1965 1.58638 -9.90552 18.0199 1.00076 -9.47369 18.8973 1.18179 -8.97956 19.8343 1.1964 -8.10062 19.6543 1.13398 -7.16282 20.0385 1.17565 -7.36561 19.1382 0.6912251 -8.22572 18.7182 0.3346041 -8.37583 18.4203 -0.5777199 -9.29366 18.575 -0.9219399 -10.1558 19.1108 -1.00503 -10.9718 18.5908 -0.7414219 -11.839 18.9717 -1.22374 -11.813 18.0853 -1.74475 -12.6926 17.5528 -1.60841 -13.5673 17.974 -1.46877 -13.8896 17.055 -1.65871 -14.4863 17.3373 -2.45847 -15.0416 18.0931 -2.33568 -15.0886 19.1627 -2.46906 -14.1922 19.5877 -2.53466 -13.4493 19.2966 -3.19849 -12.8693 19.9763 -2.80448 -13.0035 19.7243 -1.75751 -13.1265 20.7596 -1.6247 -13.5319 20.8761 -2.545 -14.0577 21.7411 -2.47959 -13.9735 22.5302 -2.02284 -14.7602 22.7733 -1.6355 -15.3077 22.7644 -0.7915359 -14.7104 23.5165 -0.6102559 -14.7461 24.4654 -0.2253649 -15.5156 24.1524 -0.8457779 -15.8875 24.6468 -1.60022 -15.0957 24.7596 -2.13767 -15.6688 24.6762 -2.88658 -15.2828 23.9765 -3.52221 -14.9026 23.2374 -3.01179 -14.2653 23.9559 -3.09328 -13.4748 23.86 -3.7925 -13.698 23.0489 -3.30347 -13.1687 22.239 -3.09649 -12.1471 22.3622 -2.95932 -11.8776 22.2872 -1.98131 -12.8142 22.1295 -1.89842 -13.5338 21.8997 -1.21585 -12.7897 21.7684 -0.4922629 -12.8331 22.7191 -0.3845369 -12.064 23.2825 -0.4727759 -11.6605 23.1312 0.4048221 -10.6663 23.1177 0.5041871 -10.2976 22.368 1.08864 -10.8156 22.9242 1.78291 -9.86011 22.9564 2.12804 -9.11579 22.3868 2.27044 -9.73866 21.6166 2.1906 -9.03895 21.5064 1.44306 -9.11104 20.7772 2.2187 -8.16959 20.7845 1.86257 -7.25693 20.9523 1.97105 -7.49479 20.1615 2.50412 -6.6675 19.7595 2.94218 -7.44523 19.266 3.35371 -8.09009 19.6624 4.03115 -8.99787 19.3679 3.95897 -9.56443 19.0439 4.75228 -9.77773 20.0443 4.85438 -10.2252 19.9924 4.05925 -10.9278 20.6135 3.85418 -10.8884 21.4608 3.35956 -10.8905 22.1475 4.05423 -11.6369 22.6835 3.8726 -12.5065 23.2284 3.93356 -12.9074 24.0919 3.62875 -12.2898 23.6195 2.97591 -12.9739 24.2228 2.43682 -13.296 24.9067 1.7144 -13.7063 24.5194 0.8808131 -12.9687 25.1205 0.7368901 -13.3997 25.8815 1.30133 -12.5026 26.4082 1.21489 -12.1595 25.8564 0.4625661 -11.3058 26.1744 0.04738462 -11.393 25.7427 -0.8495979 -11.4948 26.4753 -1.49648 -11.0466 25.5953 -1.73607 -10.313 26.2032 -2.10052 -9.55026 26.1847 -2.82557 -10.1739 26.7848 -3.42565 -10.3036 27.6282 -2.82269 -10.5738 27.6168 -1.79384 -10.9596 28.5324 -1.70759 -11.8823 28.1082 -1.55468 -12.5793 28.6498 -2.02127 -12.0909 28.4438 -2.94297 -11.7802 29.2415 -2.45601 -11.5093 29.5716 -1.63041 -11.86 30.3115 -1.03471 -10.882 30.3722 -0.6646099 -11.0941 30.8713 -1.48064 -10.1562 30.6159 -1.45389 -10.0288 29.6845 -1.64582 -9.43697 28.8951 -1.36703 -8.70411 29.5388 -1.50718 -8.60923 28.6628 -1.8336 -8.63965 27.7323 -1.46517 -7.70001 27.5717 -1.0987 -7.93171 28.1278 -0.2918329 -8.7645 27.5607 -0.3492799 -8.13413 26.8321 -0.5675659 -8.73651 26.609 0.1254721 -9.80152 26.6885 0.2134651 -10.4825 27.2239 -0.2206109 -9.87381 27.8921 0.2725441 -9.70034 27.5793 1.12252 -10.2035 27.8465 1.94505 -11.1995 27.7466 1.88984 -11.8976 28.3401 1.37983 -12.5198 29.0406 1.36317 -12.0743 29.6168 2.058 -11.6254 28.8641 2.47217 -11.0617 28.3056 3.06338 -11.6332 27.4704 3.25714 -11.5097 27.5955 4.31084 -10.63 27.0631 4.39976 -10.2915 26.7331 5.2787 -10.0677 25.7388 5.27005 -9.70714 24.8326 4.93369 -10.6416 24.5426 4.69713 -11.4605 24.8821 5.17973 -12.2802 25.4007 5.20537 -13.0286 25.3773 4.58096 -13.1566 24.7474 5.28129 -14.1173 24.9275 5.03533 -14.7214 25.3904 5.70022 -14.2466 26.0913 5.25757 -13.7672 26.0341 6.15128 -14.3597 26.4129 6.8815 -15.2269 26.8476 6.57488 -15.3682 27.2773 5.62638 -14.5438 27.7074 5.26788 -14.3193 28.5152 5.82116 -13.8109 29.2049 6.38563 -12.8644 28.8642 6.35611 -13.1591 28.229 7.05233 -13.9023 28.0856 7.71693 -14.1861 27.5614 8.58243 -13.9154 27.0207 9.30329 -13.9259 26.0025 9.11698 -14.1483 25.067 8.81214 -13.7537 24.3278 9.23465 -14.1216 23.4014 9.00749 -13.2737 23.2876 9.54717 -13.5151 22.4751 10.0644 -13.8382 21.6018 9.62541 -12.9227 21.5995 9.36597 -12.0301 21.7599 8.91004 -12.2291 21.2901 8.05426 -12.572 20.3633 8.00513 -13.0628 21.0783 7.41 -14.0126 21.1563 7.73254 -14.2919 20.97 8.64386 -13.415 20.4478 8.58495 -13.2952 19.5879 8.96383 -12.4693 19.0328 8.68721 -13.0903 18.5734 8.03401 -12.9506 17.919 8.74074 -12.12 17.7348 9.16984 -11.8414 18.0225 10.1043 -12.0218 18.7977 10.7517 -11.8285 19.7742 10.5481 -10.9928 19.6024 9.95195 -10.4441 19.2762 9.17212 -10.7759 19.9358 8.59161 -11.2698 19.3038 8.06628 -11.3234 18.2995 7.70314 -10.9891 18.9738 7.05285 -10.0413 19.0973 6.66177 -9.66829 18.969 7.64173 -8.87224 19.4916 7.4387 -8.76947 18.5977 7.9625 -8.07874 17.9429 7.88849 -8.72658 17.3 7.4641 -8.23209 17.5377 6.63707 -8.92981 17.8059 5.99973 -9.92866 17.6524 5.67887 -10.5569 16.8682 5.57014 -9.89864 16.4349 6.13436 -10.0414 15.5497 6.51405 -10.326 14.7074 7.00137 -10.2128 14.4757 7.98707 -9.58468 14.601 8.68692 -8.91282 13.9138 9.01112 -8.34139 13.2336 8.5331 -8.38531 12.4778 9.16798 -8.56698 11.6018 8.83985 -9.17235 11.2874 9.56349 -9.19877 11.6839 10.5131 -9.4579 12.5944 10.9226 -9.51126 13.4039 10.3234 -9.01631 14.2553 10.5615 -9.48126 13.9665 11.4027 -9.9907 13.4047 12.0905 -10.5335 14.0641 11.4901 -10.9877 14.631 12.1282 -10.7426 15.5872 12.2359 -11.4896 16.1712 12.5715 -10.7428 16.6568 12.1994 -9.9389 16.2712 12.5418 -9.23641 16.9906 12.8142 -8.68317 17.6602 12.4408 -7.71939 17.8138 12.234 -6.94815 17.3088 11.9326 -6.85313 16.3408 12.25 -7.1339 15.6198 12.9225 -7.73208 14.8532 13.0971 -7.64984 14.2199 12.348 -7.91316 14.8583 11.6094 -7.58864 14.1329 11.0289 -7.24921 14.529 10.1812 -6.49775 13.8647 10.104 -6.1021 14.7548 9.84989 -5.86363 15.7955 9.92081 -5.33295 15.1337 10.4708 -5.05287 14.1849 10.3256 -5.04332 13.3062 10.7999 -5.88357 13.5527 11.2881 -5.67894 13.4935 12.238 -6.21834 14.1601 12.7957 -5.94364 15.1106 13.1262 -5.30485 15.8455 13.3233 -6.07451 16.5521 13.5171 -6.70263 16.8099 14.1856 -7.46941 17.4003 14.1068 -6.58957 17.7658 13.8366 -6.12165 18.2173 14.5516 -6.5684 19.0412 14.2204 -6.80946 19.9326 13.8528 -7.13011 19.3534 13.1374 -6.13108 19.7967 13.0076 -5.94824 18.7944 13.0541 -5.0322 18.4747 12.8288 -4.44314 18.9986 12.1544 -4.68025 19.374 11.2539 -4.02685 19.5066 10.5372 -4.34358 19.7113 9.63453 -5.10272 20.3516 9.50812 -5.83014 19.6744 9.64821 -6.12097 20.5987 9.23448 -6.94707 21.1215 9.46936 -7.68818 20.9827 8.82092 -7.39587 20.6619 7.8612 -7.60686 19.6542 7.80271 -7.10098 19.3929 8.6685 -7.07763 18.9319 9.51898 -6.86072 18.8547 10.531 -5.97621 18.485 10.912 -5.90961 17.8507 11.6996 -4.94925 17.6047 11.4864 -4.54355 16.8197 11.9638 -3.71558 17.1667 12.4514 -2.8484 16.6904 12.4375 -2.28598 15.8717 12.1233 -2.47512 14.9907 12.4697 -3.3235 14.9183 11.9683 -3.7266 14.0149 12.2479 -3.02164 14.3748 12.7991 -2.70476 14.5763 13.7605 -2.06232 14.0725 14.343 -1.33524 14.5079 14.874 -1.64119 13.6201 15.1898 -1.28575 12.9829 14.4963 -0.372357 12.7643 14.2414 --0.570488 12.6148 14.2662 --0.422134 12.9211 15.1253 --0.524936 13.4218 15.9762 --1.07107 14.0473 16.626 --1.26566 14.921 16.2158 --1.40561 14.349 15.3917 --2.19336 14.2975 14.7449 --2.56719 14.6074 13.8832 --1.95531 14.8507 13.1059 --1.36694 15.1412 13.9086 --0.641526 15.7056 13.6039 --0.873023 15.8419 14.5554 --0.454374 16.6788 14.8086 --1.4164 17.0106 14.9861 --2.42202 17.0497 14.9785 --1.92985 17.9276 15.2725 --2.04999 18.3293 14.3678 --2.33283 19.1777 13.8217 --2.57383 19.5828 12.9627 --2.77892 19.004 12.188 --3.49935 19.0076 11.5021 --4.02549 19.5486 12.0985 --3.61947 18.8565 12.7721 --3.27377 17.9121 12.9943 --4.25655 17.9446 13.207 --5.2569 17.8635 13.2426 --5.31713 17.4825 12.3166 --6.06317 16.9463 12.1725 --7.00794 16.7023 11.7645 --6.25482 16.5944 11.0425 --5.28032 16.5848 10.8488 --5.50864 17.3181 10.2282 --4.77742 16.9068 9.91409 --4.01633 16.9922 9.21362 --4.00912 17.9576 9.06942 --3.25047 17.9201 9.66235 --2.6161 17.2094 9.96054 --1.66218 16.9889 10.0959 --1.28099 16.0662 9.86135 --0.730376 16.0793 9.03248 --1.58434 15.8198 8.46087 --1.62905 16.7738 8.13273 --1.70814 17.344 7.35144 --0.828279 17.8123 7.1089 --0.625571 16.9351 7.57498 -0.03675137 17.0226 6.83019 -0.288142 16.1884 7.26564 -0.173755 16.6089 8.18156 -0.477385 17.0826 9.01805 -1.01355 16.337 9.37735 -1.72967 16.9936 9.40559 -1.76414 17.834 9.95674 -1.55818 18.6677 10.5338 -1.7114 19.5605 11.0641 -1.53824 20.6047 11.1336 -2.25493 20.7903 11.8565 -2.84436 19.958 12.1183 -2.31016 19.5112 12.8249 -1.69856 19.3125 12.0757 -1.46413 18.4521 12.5639 -0.539015 18.6657 12.7728 -0.641699 17.7516 12.2847 -0.762594 17.8221 13.2788 -0.893094 18.6316 13.9789 -0.248856 18.4498 14.7624 -0.349679 19.4293 14.8412 -0.03856737 19.1865 13.9043 --0.714265 19.354 13.2995 --0.550001 19.5633 12.347 --0.459589 18.6013 12.2051 --1.30096 18.1393 12.3625 --0.627967 18.3689 13.1389 --0.396334 17.337 13.2278 --0.699587 16.407 12.9011 -0.100275 16.2545 12.2175 --0.702126 15.6068 12.1808 --0.391756 14.9697 11.5222 --1.17852 14.5233 11.9328 --1.35382 13.5176 11.829 --1.90816 13.4548 10.984 --2.89993 13.258 10.9468 --2.51056 12.9016 10.0425 --2.90396 12.209 10.6579 --3.74698 11.7955 10.1721 --4.08969 12.7458 10.5025 --4.4644 12.3694 11.418 --4.24788 11.5032 11.7971 --3.71926 10.5928 11.9768 --4.0911 10.1578 12.7592 --4.50259 9.3186 12.5044 --3.5523 9.17693 12.0684 --2.91319 9.35675 12.8224 --2.81576 10.3449 12.7251 --3.16771 11.2965 12.7187 --2.24024 11.3368 13.0166 --1.27192 11.5832 12.9692 --0.849444 12.2718 12.3524 --0.642816 12.647 11.4286 --0.146849 12.1184 10.7166 -0.702474 12.1679 11.3533 -1.10476 11.3088 11.2607 -1.73562 11.6143 10.5653 -1.7681 12.624 10.7642 -2.03514 12.3118 9.84224 -2.9633 12.6074 10.1113 -2.67106 13.5922 10.1516 -1.831 13.8798 9.77869 -2.15671 13.8025 8.88815 -3.0379 14.2889 8.76921 -4.02038 14.1137 8.70705 -4.08634 14.8572 9.30209 -3.35664 15.4542 9.51111 -3.8894 16.3063 9.49597 -3.18246 16.2392 8.85902 -2.78192 16.6922 9.61597 -2.59334 17.3952 10.2974 -3.59087 17.6622 10.2543 -4.61264 17.6259 10.3181 -5.20812 17.6742 9.59419 -5.43794 16.9196 8.94688 -4.72046 17.4591 8.60737 -4.00994 17.4685 7.84092 -3.2647 17.5378 8.49736 -2.74716 18.3854 8.5677 -1.99862 18.79 7.97817 -1.5164 19.1932 7.23904 -0.624325 19.6568 7.51545 --0.06048783 19.5806 8.35444 --0.52539 20.4709 8.33128 --1.36677 21.0827 8.49806 --1.2512 22.0951 8.42742 --1.41451 22.4664 7.50865 --2.05723 21.9586 6.9184 --1.8983 20.9876 6.90132 --0.996995 21.2622 6.87722 --0.733533 21.9082 6.17622 --1.61291 21.8025 5.88257 --1.89453 20.9557 5.45389 --1.13375 20.3186 5.64063 --0.946787 19.3182 5.84295 --1.7866 19.3859 5.2993 --2.54299 20.0131 5.3037 --2.9938 20.498 6.07214 --3.71919 20.2434 5.49413 --3.9281 19.3279 5.9686 --4.19202 18.3431 6.09192 --5.02676 18.4131 5.56337 --5.16027 18.877 6.41773 --5.2888 18.1382 7.08718 --4.73672 18.7081 7.62508 --3.74544 18.6487 7.63749 --3.5871 19.6834 7.55872 --2.55659 19.6981 7.57298 --2.23199 19.2637 6.74297 --2.02805 18.3281 6.53404 --2.26304 17.4023 6.32353 --1.7874 16.6838 5.75903 --1.42245 15.8191 6.07022 --1.15527 15.2126 6.76944 --1.67334 14.3673 6.44217 --2.59624 14.6765 6.48107 --2.25319 14.9696 5.53179 --1.24346 15.0899 5.50036 --1.24152 14.3561 4.77137 --1.01712 13.6194 5.43449 --0.165073 13.4877 5.90748 --0.344089 12.9885 6.72692 -0.170122 12.6919 7.5525 -0.856537 12.6687 8.30853 -1.19168 13.4238 7.78978 -0.843016 13.8562 6.9856 -0.497063 14.6782 6.43598 -0.987224 14.2537 5.66626 -0.97415 15.1545 5.15463 -0.754054 14.9442 4.20441 -1.25312 14.4422 3.42775 -1.98992 13.9128 3.35292 -2.64772 13.9833 4.19103 -3.15463 13.5335 4.93587 -3.23733 12.7239 5.4081 -2.40366 12.1578 5.62925 -1.72917 12.8371 5.36006 -1.34361 12.0461 5.84586 -0.439896 11.8431 5.51642 -0.653859 11.4607 4.63538 --0.365478 11.5811 4.60041 --0.582618 12.5703 4.82899 --1.50038 12.6282 5.22958 --1.77765 12.8064 6.23654 --2.46151 12.3094 5.73303 --3.26406 12.9173 5.54064 --4.19563 13.2809 5.92031 --3.7498 14.1176 5.70755 --3.38601 15.0786 5.81031 --3.46643 16.0532 5.55687 --3.55266 15.9249 4.60491 --3.42449 15.4783 3.76771 --4.35322 15.1399 4.13377 --3.72416 14.5024 3.68028 --3.94446 14.05 2.78798 --4.46877 13.2378 2.43268 --5.07211 13.9186 2.00011 --4.70697 14.4417 1.24035 --3.75031 14.2793 1.3437 --3.75385 14.6448 0.3652931 --3.68044 14.0747 -0.3757729 --2.7763 14.2921 -0.08460558 --2.08005 14.9841 0.2148171 --1.16099 15.1793 -0.02616548 --0.914376 15.1192 0.9394001 --0.842282 16.0243 0.4220811 -0.06495947 15.7628 0.1862331 -0.441015 16.4712 -0.4377529 -0.380865 17.0878 -1.21726 -1.23863 17.4652 -1.51679 -1.67899 16.6344 -1.28902 -2.66465 16.4733 -1.32675 -2.78594 17.4195 -1.29102 -2.77903 17.8583 -0.3950459 -3.23536 17.2737 0.2824581 -2.89888 17.7271 1.0711 -2.1202 17.7307 1.65862 -1.50747 17.5527 0.9664801 -1.14867 16.6395 1.13757 -1.34209 16.1387 1.93622 -0.384462 15.9773 1.56542 --0.641332 16.0509 1.586 --0.675315 15.6496 2.5297 --1.25586 16.4816 2.71904 --0.25321 16.5734 2.86834 -0.12381 17.4354 2.56546 -0.02889827 18.2421 3.13185 --0.08362913 18.6968 2.36022 -0.460568 19.4027 1.94047 --0.176184 20.1338 1.8605 --0.005404535 21.0883 1.68407 --0.923716 20.9229 1.25333 --1.18397 20.28 0.5181501 --0.50181 19.5299 0.6296351 --1.13942 19.0193 0.03415492 --1.99437 18.7508 0.5891121 --1.67405 17.973 1.12654 --2.02125 17.742 2.02912 --2.78851 18.271 2.4401 --3.04128 17.3312 2.51895 --3.47363 16.5652 2.03891 --3.32641 15.6433 1.59156 --2.31402 15.8681 1.63882 --1.98204 16.0918 0.7037461 --2.32094 16.9963 0.7324481 --2.56964 17.6899 0.05118072 --3.46455 17.2733 0.1348021 --3.92358 16.9164 0.9495841 --3.68374 17.7302 1.41665 --4.15213 18.5586 1.29552 --3.94066 18.6875 2.23518 --3.70992 18.3973 3.16562 --4.42848 17.7327 3.04279 --4.42269 16.8093 2.5853 --4.6135 17.5477 1.95493 --5.48583 17.3385 1.48943 --5.56177 17.8833 2.32269 --6.25062 17.2807 2.75285 --6.04636 16.3377 3.06366 --5.99379 15.3661 2.67272 --5.25129 14.9935 2.20611 --5.11506 14.7025 3.13457 --5.94825 14.742 3.70721 --6.76718 14.5218 4.17508 --7.64833 14.286 3.91217 --8.48066 13.6841 4.13956 --8.71028 12.7621 3.98458 --8.63706 11.8824 4.10091 --9.30519 11.9795 4.791 --9.60779 12.0998 5.71001 --9.9182 12.9455 5.97602 --10.4378 12.0748 6.27581 --11.3385 12.3258 6.58796 --11.9591 12.1253 7.34451 --11.1922 11.5639 7.31083 --10.7892 12.0831 8.01671 --10.8355 12.4553 9.00503 --10.7723 13.4059 9.3979 --9.99219 12.7641 9.51741 --9.7969 13.5445 9.03142 --9.21419 14.055 9.70512 --8.52356 14.1249 9.11537 --8.77146 14.3335 8.03152 --8.30906 13.442 8.13381 --7.65795 12.9101 7.5233 --7.77102 12.0284 7.06002 --8.54402 12.2986 6.58778 --8.00956 13.0284 6.1516 --8.32556 13.9354 5.98031 --9.26822 14.2408 5.7195 --10.2079 13.7981 5.6056 --11.1499 13.5043 5.94127 --11.4798 14.4963 6.07898 --11.2424 15.3901 5.61624 --12.1883 15.2412 5.31857 --12.9426 15.3517 5.96643 --13.257 14.9004 6.79878 --13.7201 15.7343 6.96362 --14.4846 16.1115 6.4297 --14.1576 17.0949 6.35454 --14.4024 18.0921 6.46292 --15.066 18.1074 7.21868 --14.7815 18.9005 7.73993 --14.3657 19.5818 7.08913 --14.3808 19.8247 6.07255 --13.4988 19.9126 6.4124 --12.8453 20.5526 6.94732 --12.8238 19.9155 7.66816 --12.7426 19.5732 8.57616 --12.3106 20.4421 8.54757 --11.7231 21.1386 8.19128 --11.1314 21.8719 8.50927 --11.0786 21.5382 9.40812 --11.1045 22.226 10.171 --11.224 23.1621 10.6017 --11.4934 23.8042 9.84163 --10.4935 23.8568 9.82033 --10.7217 23.1408 9.1468 --11.2725 23.8095 8.65374 --11.672 24.6458 8.92554 --12.0286 24.3617 8.05158 --11.3882 25.0955 7.76713 --11.5551 25.1529 6.75539 --11.2307 24.7723 5.85754 --10.998 25.4796 5.07811 --11.0224 24.9294 4.28228 --10.8878 24.7804 3.27606 --11.73 25.1761 3.60869 --11.8049 26.0698 3.97484 --12.4826 26.6494 3.57317 --12.6851 25.9648 2.8803 --12.2619 26.7898 2.38118 --11.2916 27.1111 2.37654 --10.3008 27.161 2.05817 --9.42947 27.0509 2.56853 --9.22768 26.2152 2.1585 --9.96686 25.8072 2.71565 --9.81155 26.4315 3.56138 --10.8184 26.6037 3.69458 --10.1974 27.3207 3.8354 --10.8469 27.9044 4.44608 --11.2456 28.4248 5.15947 --11.8924 28.6839 4.44442 --11.161 29.2096 3.88545 --10.5821 29.2773 4.70696 --10.0537 28.6776 5.33458 --10.1136 27.7222 5.62623 --9.16808 27.7237 5.37345 --8.32391 27.3597 4.94792 --8.50325 26.9036 5.84446 --8.39876 27.2097 6.82726 --9.08623 26.692 7.22173 --8.93361 25.7721 7.62513 --9.80909 25.5841 8.00477 --9.50356 25.4566 8.96193 --10.2822 24.7968 8.72291 --9.41941 24.5431 9.22336 --8.65687 25.1673 9.10779 --8.64887 26.0797 8.69144 --8.40991 26.9931 8.92713 --8.4163 27.9153 8.70296 --9.22486 27.5475 8.17626 --9.62621 27.2897 9.06818 --10.2576 28.03 9.10986 --9.41572 28.4272 8.71245 --10.0344 29.2053 8.72285 --10.3824 29.761 8.01683 --9.98536 30.5008 7.31604 --10.3977 30.4182 6.39354 --9.63828 30.9024 5.99087 --9.14583 31.6435 6.53671 --8.88123 30.6531 6.53538 --8.6163 30.6703 7.5364 --8.32974 30.1851 8.31819 --7.72426 29.9617 9.05667 --7.78054 29.5889 9.92911 --8.72622 29.5672 10.2577 --9.40472 28.8636 9.97381 --8.8878 28.0066 10.1673 --8.63503 27.0435 10.3864 --8.23552 26.8562 11.2144 --8.30371 25.9597 10.8453 --7.49626 25.4387 10.9248 --7.64323 25.9456 11.7435 --6.67118 25.8329 11.7934 --6.22392 25.4922 12.6391 --6.68724 25.2604 13.5174 --6.53063 24.2547 13.5146 --6.50803 24.1951 14.5109 --6.35159 23.1884 14.5512 --6.64698 22.3832 14.9289 --5.87524 22.0155 14.386 --6.46311 21.3609 13.8934 --5.8008 20.653 13.7103 --5.95663 20.8194 14.7108 --5.78892 20.0562 15.2081 --6.79034 20.1367 15.4707 --6.56838 19.4126 16.158 --6.33411 19.7905 17.1093 --5.69806 20.4256 17.5693 --6.38729 20.025 18.1749 --6.82747 20.8672 17.7611 --7.75607 20.5323 18.0544 --7.77128 21.4468 17.7469 --7.98902 21.4098 16.7648 --7.94715 21.6949 15.8156 --8.84359 21.9206 15.5293 --8.25721 22.4538 14.8739 --8.66028 21.5561 14.633 --7.73426 21.1808 14.4599 --7.7267 21.2213 13.4928 --7.91768 20.387 13.0664 --7.15212 19.9307 13.4764 --6.9748 20.0812 12.5389 --6.85838 19.0735 12.4001 --6.373 19.4113 11.5983 --5.53408 19.4063 11.096 --5.58046 18.3944 11.0819 --6.57878 18.2776 11.0732 --6.7716 19.1791 10.6589 --6.9496 18.8242 9.71626 --7.85146 18.7582 9.30556 --8.06712 17.9619 9.82626 --9.09339 18.0908 9.58696 --9.05845 18.5796 8.72757 --9.6113 19.286 9.18257 --9.10444 20.1718 9.28276 --8.43095 20.6762 9.80312 --8.15731 21.4969 9.38439 --7.38779 21.7312 8.8319 --7.06982 20.9082 8.39547 --7.07745 20.6091 7.42619 --6.75878 20.2437 6.46491 --7.16854 19.5161 7.03336 --7.28399 19.2871 6.06526 --8.16095 19.6872 6.26839 --8.55798 18.9445 5.70717 --7.79387 18.6912 5.21884 --8.15762 17.9344 5.56196 --8.32685 17.8129 6.57243 --8.09152 17.7756 7.59261 --7.13533 17.4485 7.56962 --7.19984 16.5419 7.06124 --6.37244 16.7261 7.59603 --5.53516 16.7906 7.10694 --6.0836 16.8038 6.33158 --5.36871 16.253 5.86744 --4.64863 15.7612 5.40358 --4.40184 16.0482 6.3464 --3.38989 15.9972 6.59618 --2.45828 15.6984 6.87665 --2.70979 15.0941 7.63502 --2.65614 14.4068 8.30152 --3.29823 13.8992 7.73664 --4.13357 13.314 7.63234 --3.93549 13.254 8.62703 --4.27471 13.7032 9.47636 --4.36827 14.2682 8.62852 --4.286 15.2722 8.68175 --5.16707 15.0771 8.20588 --5.71445 14.243 7.98784 --6.54056 14.6811 8.31724 --7.09888 14.4876 7.51583 --7.15116 14.4101 6.51772 --6.19464 14.1804 6.25818 --6.6048 14.7068 5.57449 --6.61881 15.7001 5.72489 --6.85365 16.0628 4.80607 --7.35745 16.4124 5.56792 --8.29022 16.015 5.61004 --8.95671 15.8277 6.27251 --9.85121 16.2713 5.94911 --9.28472 17.1194 5.97091 --9.91582 17.2196 5.2101 --10.7076 17.4083 5.87625 --11.3668 18.1029 5.93351 --11.3316 17.7913 6.86248 --11.9532 17.0945 6.55653 --12.0157 16.1564 6.19636 --11.1582 16.0164 6.71534 --10.636 16.5423 7.39594 --10.0846 16.3599 8.21242 --10.1966 15.6697 8.85723 --10.6821 16.5589 9.09104 --10.2897 17.4765 8.91214 --10.3983 18.4758 8.82049 --11.0062 18.1958 9.56373 --11.3912 18.9653 10.012 --11.9633 19.3029 10.6606 --12.6825 19.9727 10.2453 --13.001 19.2707 10.8808 --13.2225 18.4832 11.4649 --13.7364 17.9652 10.7489 --13.491 18.1487 9.8152 --13.6688 18.3196 8.90111 --14.0924 19.2215 9.15673 --14.8303 18.6162 9.01769 --15.546 18.5869 9.68826 --15.189 19.5417 9.94389 --15.3261 20.3852 9.54826 --16.0816 20.8648 10.0648 --16.0719 20.7038 11.0051 --15.392 21.2836 11.4137 --15.0814 21.6424 12.2386 --14.2255 22.0773 12.0597 --14.3175 21.5717 11.2119 --14.35 22.5412 10.9471 --15.1716 22.8083 10.4862 --14.6032 23.4951 10.9884 --15.0184 23.7336 11.8908 --15.6177 24.4219 11.4799 --14.9831 25.1431 11.806 --14.6591 25.9902 12.29 --14.0069 26.0659 11.5154 --13.7821 25.7609 10.5684 --14.0382 26.1255 9.65701 --14.6192 25.7191 9.07794 --14.1662 26.5375 8.57947 --13.4996 26.5519 7.78394 --13.0565 27.2796 7.28131 --12.3376 27.8084 7.70364 --12.5647 27.8163 8.73361 --12.3268 28.7715 8.73811 --11.6648 28.0278 8.98065 --12.1483 28.281 9.87824 --12.5058 29.0296 10.4544 --12.2797 29.8363 9.84363 --11.3144 29.8429 9.83197 --11.1412 30.8539 9.70813 --10.7327 31.2912 10.501 --9.95005 30.9185 10.9683 --9.51922 31.812 11.215 --8.61395 31.7393 11.5796 --7.62069 32.0891 11.4878 --6.98543 32.8509 11.6546 --6.65956 33.0836 10.7357 --5.76803 32.9386 11.1103 --5.03468 32.5617 10.5058 --4.18745 33.1165 10.898 --3.44285 33.7988 10.6909 --3.24273 33.6595 9.70195 --2.30534 33.5947 9.52734 --2.41434 32.8554 8.77001 --2.52222 33.5038 8.00066 --2.94476 33.217 7.12054 --3.27383 33.2976 6.1558 --3.81845 33.8591 6.73014 --3.46499 34.464 5.985 --4.19114 33.8307 5.53504 --4.40603 34.6095 6.07078 --5.27736 35.0532 6.11532 --5.26815 36.0484 6.0582 --4.70028 35.713 6.85318 --4.9557 35.9791 7.79962 --4.55111 35.1734 8.14245 --4.47178 34.4408 8.73101 --4.82932 33.5637 8.8421 --5.57064 33.2414 8.33791 --5.35456 32.2679 8.23034 --5.09874 31.3946 8.68109 --4.39697 30.7347 9.09035 --4.03461 29.8492 9.21395 --4.62377 30.043 9.99314 --5.02053 29.2529 10.446 --5.28538 28.4704 9.85525 --4.76731 29.2107 9.33744 --4.55711 29.5407 8.32919 --4.92283 28.6502 8.25345 --4.38789 27.7592 8.24648 --3.92974 28.2239 8.98901 --3.074 27.7321 8.62432 --2.1566 28.3162 8.49676 --2.64666 29.1577 8.89111 --2.84533 30.0454 8.53329 --2.20925 30.7923 8.63508 --2.21372 31.0146 9.62304 --2.55124 30.0652 9.43756 --2.70216 29.3833 10.1943 --3.12436 28.6663 10.7847 --4.067 28.8361 10.7292 --4.73832 28.6901 11.388 --4.14375 29.3822 11.8856 --4.43699 29.6376 12.8162 --5.17753 29.1313 12.3363 --5.88799 28.8099 12.81 --6.58178 28.043 12.5943 --6.31946 27.6086 13.401 --7.02774 26.9316 13.6603 --6.77608 27.0635 14.6372 --7.75785 27.2986 14.5927 --8.57901 27.8709 14.4942 --8.75431 27.1342 13.8436 --8.90921 27.4392 12.8929 --8.45285 28.2449 13.2187 --8.97362 29.0072 12.9034 --9.44538 29.1884 11.971 --10.1764 28.5595 11.8837 --10.7553 29.4404 11.9314 --10.9765 29.6709 12.84 --11.9793 29.4459 13.1197 --11.708 28.6105 13.4334 --12.4655 27.9558 13.4221 --12.6194 27.0188 13.5918 --12.5193 26.5194 14.4168 --12.7919 25.659 13.9317 --12.0326 25.7529 13.1727 --11.8423 24.8606 12.8716 --11.6441 23.9478 12.5819 --10.7338 24.3655 12.5403 --10.8929 24.3589 13.4936 --10.8971 24.919 14.3146 --10.0419 24.6402 14.7477 --10.4208 23.869 15.1769 --10.1459 23.2333 15.9657 --10.1997 22.281 15.869 --10.9178 21.7459 15.419 --10.4627 20.9052 15.2484 --9.45757 20.6309 15.045 --10.2096 20.7305 14.4045 --9.67737 19.9426 14.0449 --9.44708 20.0456 13.0371 --10.1636 20.3439 12.3764 --9.93726 21.2046 11.9582 --10.878 21.294 12.2193 --11.0462 20.4784 11.6643 --11.4437 20.3958 10.7256 --10.6169 19.9642 10.3173 --10.1121 20.7638 10.7503 --9.43844 20.1096 11.04 --8.42068 19.9867 11.2016 --8.13712 21.0161 11.011 --8.64852 21.8369 11.3814 --7.80182 22.2698 11.1089 --7.31843 22.9664 11.5622 --7.02471 23.8627 11.2141 --6.93736 23.6424 10.2278 --7.16013 23.413 9.31045 --6.88097 22.9832 8.49811 --7.31563 22.9877 7.5938 --7.49454 23.9111 7.78464 --8.24513 24.4824 7.5042 --8.64645 23.6841 8.02038 --9.45013 23.46 7.49977 --10.1766 22.7506 7.52309 --10.0913 21.7704 7.92333 --9.44326 21.0654 8.15634 --9.00747 20.5215 7.4962 --9.9194 20.3362 6.96614 --9.46075 20.8893 6.29151 --8.59556 20.6725 5.76904 --7.62193 20.9777 6.01872 --7.54378 21.6425 6.71835 --7.8336 22.3778 5.99442 --8.7014 22.0745 5.51478 --9.10231 22.8232 6.14775 --9.59108 23.7135 6.13938 --10.2764 22.9355 6.10374 --9.81053 22.7523 5.29022 --10.2986 22.1687 4.5773 --9.61676 22.6684 4.04598 --8.79499 22.8737 3.48155 --8.47979 21.9083 3.5764 --7.53564 21.9349 3.84552 --7.92729 21.6249 4.65492 --8.8892 21.3891 4.48529 --9.15564 20.4375 4.74056 --9.25875 19.9003 3.86467 --8.89102 20.0785 2.95756 --8.54433 20.2421 2.02005 --8.91626 19.354 1.83075 --9.83942 19.2573 2.38232 --10.6488 18.8306 1.94635 --11.324 18.8496 1.17435 --11.8358 19.2555 1.87561 --12.6039 19.1611 1.34553 --13.5834 18.8576 1.55826 --14.2076 18.4108 2.28143 --13.9109 19.2972 2.75964 --14.7489 19.3971 3.11732 --14.9109 19.8329 4.03503 --14.7385 20.196 5.06777 --15.4177 20.8694 5.08697 --14.8295 21.5392 4.62584 --14.5365 22.1167 3.89493 --14.7519 22.6375 4.82695 --15.0782 23.5123 4.38845 --14.4927 23.6345 3.49799 --14.4519 22.7284 3.10642 --13.5399 23.0164 3.06224 --12.7164 23.5819 2.77078 --12.4721 22.9288 3.51393 --13.2704 22.6873 4.05963 --13.2012 22.4541 5.0679 --12.5861 21.7299 5.41543 --12.3906 21.3418 4.56663 --12.1357 20.356 4.59511 --11.2186 20.7629 4.20567 --10.5819 21.3839 3.69541 --9.91111 21.3597 2.97195 --9.89914 20.3967 2.96763 --10.5884 20.3676 2.19941 --11.2271 20.5709 1.40792 --11.1249 21.4148 0.9303571 --10.9337 21.6488 0.0077598 --10.4352 21.933 -0.7746409 --10.2809 22.7056 -0.1415739 --10.1535 23.7122 -0.04546008 --9.6787 24.3731 -0.6079469 --10.2933 24.2237 -1.37613 --10.1628 23.2727 -1.43883 --9.588 22.4226 -1.41399 --8.82102 22.019 -1.84663 --7.87165 22.244 -1.65591 --8.20335 21.5092 -1.02498 --8.71766 22.0299 -0.2738599 --7.91513 22.2563 0.3206021 --8.01555 23.2288 0.2909331 --7.06753 22.9125 0.3337921 --6.75596 22.4776 1.15229 --6.09146 21.6744 1.39407 --6.35746 21.1275 2.1671 --6.23289 20.491 1.45777 --6.72771 19.7569 1.06988 --6.40541 20.4255 0.4028791 --5.87898 19.5314 0.4553071 --4.95733 19.2612 0.1149081 --4.68673 19.715 -0.7375399 --4.34603 18.8122 -0.9937629 --4.73714 18.0992 -1.57013 --4.61418 18.2579 -2.5283 --3.73969 18.0592 -2.178 --3.1983 17.5276 -2.76107 --3.45876 16.8411 -2.0271 --3.53714 16 -1.46206 --3.28982 15.1484 -1.81019 --3.77343 14.8653 -2.61369 --4.69259 14.6342 -2.88733 --4.64522 15.4693 -2.29562 --4.71563 16.432 -2.3915 --5.26857 16.6096 -3.22651 --4.81864 16.1617 -4.04931 --4.00198 16.5182 -4.40629 --4.00945 16.5454 -5.46276 --3.174 16.1126 -5.60349 --2.2981 16.5207 -5.37245 --1.62959 16.0833 -4.78494 --2.005 16.5212 -4.00926 --1.41827 17.2526 -4.24463 --0.737663 17.9472 -4.42708 --0.707975 18.6644 -3.77633 --0.477404 17.8623 -3.28177 --0.491491 17.0307 -2.61163 --1.18405 16.4317 -2.32401 --0.87908 15.4797 -2.57836 --1.05936 15.4036 -1.59522 --1.74512 14.74 -2.07016 --2.28566 13.9364 -1.86564 --2.56563 13.7466 -2.84878 --1.59764 13.5062 -2.74119 --1.39335 13.434 -1.81093 --0.789178 13.9324 -1.23541 --0.630491 14.4744 -0.5363729 --1.42254 14.0499 -0.2644969 --1.22407 13.2963 0.3092021 --1.20557 13.8385 1.10803 --0.310204 13.381 0.9451281 --0.208566 13.0277 1.85059 -0.112033 13.0655 2.77406 -0.855885 13.4166 2.21388 -1.71913 12.8561 2.36732 -2.14261 13.2269 1.53237 -2.37557 13.8036 0.7403961 -2.75784 12.9659 0.3603881 -2.98528 12.0948 0.8661851 -3.15158 12.5589 1.64824 -4.05116 12.0305 1.93617 -3.72786 11.3059 1.40974 -4.03358 10.4985 0.9882451 -3.85046 10.9665 0.1391871 -3.47699 11.7915 -0.1456819 -4.14219 12.5718 0.01946702 -4.49723 12.3617 -0.9354979 -4.21094 11.462 -0.9106189 -3.81845 10.8013 -1.61889 -4.01253 10.0446 -2.18509 -3.11203 9.79036 -1.89762 -2.4473 9.44114 -2.62352 -1.97905 8.66032 -3.00544 -2.69532 8.64203 -3.81414 -3.71184 8.55097 -3.8567 -4.68758 8.41798 -3.93152 -5.50505 8.79105 -4.21761 -5.96146 9.53224 -4.68463 -6.29175 9.78235 -3.81574 -5.64611 10.4331 -3.37308 -6.17562 11.2882 -3.38853 -5.74797 11.3421 -2.51246 -6.10933 12.2574 -2.18542 -6.82081 12.9787 -2.06302 -7.57666 12.7823 -2.74385 -8.36497 12.618 -2.18786 -8.55766 11.5582 -2.22107 -9.45918 11.9311 -1.9806 -9.22232 12.7989 -1.60563 -8.5771 13.5482 -1.669 -8.49815 13.7191 -0.6790829 -8.35238 12.7589 -0.6641639 -7.95902 12.3391 0.1353041 -8.69024 12.6054 0.6704431 -8.19971 13.1929 1.26449 -9.10818 13.4939 0.9835151 -9.99804 13.8734 1.11271 -10.9303 13.7171 1.41382 -11.5957 13.4228 0.6791311 -11.1877 13.1363 -0.1422079 -11.6841 13.159 -0.9918249 -11.4943 13.2115 -1.95847 -10.7377 12.873 -2.47347 -11.018 13.5171 -3.21163 -11.0337 14.4266 -2.86276 -11.4899 14.7399 -2.04813 -10.7689 14.4246 -1.47986 -9.86468 14.2214 -1.45498 -9.09521 14.3583 -2.09196 -8.65639 14.5014 -1.19074 -8.98694 15.442 -0.8362909 -9.60774 15.8074 -0.1475529 -10.4712 15.7554 -0.6797699 -11.0386 15.6113 0.1263181 -10.7982 16.5624 0.09936562 -11.6387 16.4219 -0.3550479 -11.5043 16.119 -1.38205 -11.6172 16.922 -1.87454 -10.6392 16.9768 -1.61227 -10.3031 16.407 -2.42379 -9.80221 15.5286 -2.7213 -8.82598 15.807 -2.71149 -8.05578 16.3202 -2.21496 -7.73755 16.0784 -1.30705 -7.93887 16.7972 -0.7168699 -8.56694 16.9059 -1.44657 -8.4034 17.6939 -2.00826 -8.96113 18.4796 -2.38433 -8.74021 19.2884 -1.80261 -8.17251 19.7736 -2.49853 -8.24505 18.9045 -3.11557 -7.35727 19.4067 -3.01368 -6.88504 20.2169 -3.15119 -6.20308 20.2572 -2.44057 -6.2362 19.2299 -2.4124 -5.83622 18.4712 -2.93075 -5.21585 17.9383 -2.36483 -5.78784 17.5026 -1.59939 -5.12781 16.7502 -1.39188 -5.15681 16.4737 -2.33079 -4.32675 16.1391 -1.82259 -4.17644 16.0286 -2.82715 -4.11268 15.0576 -3.10069 -3.29183 14.8842 -2.46566 -2.74901 14.4169 -1.74413 -3.28027 14.5921 -0.9052209 -3.49168 15.5102 -1.05106 -3.3233 15.7057 -0.1340779 -4.11217 16.2769 -0.4250849 -4.32086 17.2559 -0.5273339 -5.10273 16.9579 0.08164742 -6.02611 16.8587 -0.1992599 -6.38374 15.9488 -0.2033009 -6.60468 15.0956 -0.5556219 -6.5291 14.5377 0.2970341 -6.69914 14.996 1.21255 -7.72406 14.9528 1.20703 -7.42749 14.1166 1.65775 -6.75638 13.8339 1.01141 -6.79511 12.795 0.7808851 -7.08023 12.0138 1.28122 -6.16417 11.619 1.05231 -5.2585 11.225 0.6958311 -5.76247 10.4617 0.4003531 -6.67506 10.9513 0.4695601 -6.90862 10.2834 -0.2836099 -7.54889 10.3135 -1.03692 -7.3891 11.2927 -0.8302289 -7.21793 11.0366 -1.82547 -7.55349 10.3636 -2.53339 -7.50046 9.51802 -3.11044 -8.49499 9.84711 -3.29108 -8.93959 10.2307 -2.55318 -8.89762 9.22939 -2.4792 -8.19587 8.53608 -2.45481 -7.5322 8.26624 -3.11064 -7.50951 7.45174 -2.60161 -6.75295 6.97222 -2.18809 -6.53193 6.21022 -1.59906 -6.7557 5.61708 -0.8388259 -7.16309 4.75674 -0.3926339 -8.07893 4.94791 -0.7477459 -8.58175 5.7588 -1.05247 -8.73944 5.56041 -0.1008999 -9.54703 5.91384 -0.5783019 -9.97167 6.71359 -1.09357 -10.9405 6.40275 -1.28219 -10.3943 5.60603 -0.9161679 -10.0825 4.69832 -1.23265 -9.66028 4.13028 -1.88411 -9.65989 3.55074 -1.04513 -9.07837 3.42679 -0.2302949 -8.74043 3.27531 0.7284411 -7.81465 2.94594 0.4583241 -7.7536 3.52657 -0.4180499 -7.39119 2.90439 -1.18979 -6.68397 2.29199 -0.8793019 -5.90508 1.86245 -1.35326 -6.23148 1.17782 -0.7805209 -6.72145 0.7808919 -1.51598 -7.37464 1.56084 -1.38686 -8.15289 2.114 -1.65867 -8.69881 1.69563 -0.9196719 -8.28132 0.9221259 -0.4411449 -7.45072 0.3712899 -0.5519469 -6.91691 -0.1122661 0.08593922 -6.84169 0.7837989 0.4089251 -7.71565 0.5918129 0.8180451 -8.22613 0.04946713 1.43958 -7.53723 0.7260629 1.87917 -7.70068 -0.004851426 2.508 -7.58588 -0.2859261 3.49786 -8.43615 -0.1178131 3.93184 -9.30518 0.1615089 3.40811 -9.41425 -0.2380461 2.51344 -10.3668 -0.4206981 2.61784 -10.8675 -0.9923131 2.02712 -11.3451 -1.64252 2.64231 -12.2043 -1.46011 3.02585 -12.841 -1.87074 3.6303 -13.3574 -1.39065 2.9245 -13.5546 -2.2845 2.54438 -13.5102 -3.30738 2.37301 -12.7604 -2.66548 2.1235 -12.0165 -3.10839 1.67774 -12.2255 -4.0732 1.65731 -11.675 -4.8128 1.95446 -12.3006 -5.07039 1.21079 -13.011 -5.29115 1.84828 -13.5975 -4.65098 2.28432 -13.6996 -5.1071 3.17134 -13.7738 -4.12519 3.26611 -14.762 -4.24527 3.41213 -14.2947 -3.54054 3.96479 -13.7021 -3.4188 4.80785 -14.421 -3.28671 5.5005 -15.1368 -3.21102 6.22903 -14.3301 -3.35425 6.75972 -13.5779 -2.64388 6.87554 -13.27 -2.27044 6.01014 -13.3022 -1.68662 6.89504 -12.4448 -2.04498 7.14007 -12.6331 -1.20495 7.59656 -13.1109 -1.6579 8.36083 -12.5692 -2.48082 8.56547 -12.1509 -3.00983 7.76146 -11.4233 -2.93581 8.44748 -10.6631 -3.3112 8.81162 -10.5238 -3.25028 9.80773 -10.4913 -2.47696 10.4687 -11.3325 -2.31741 10.0882 -11.8408 -1.81155 9.44476 -10.8929 -1.58794 9.61731 -10.1958 -2.24498 9.25222 -10.0987 -1.47947 8.59929 -10.7279 -1.20426 7.81698 -10.6846 -0.2451991 7.72858 -11.5064 0.1691699 8.17696 -12.4384 0.3313159 8.51069 -12.5643 0.3041069 7.49128 -12.555 0.007186884 6.5112 -12.728 0.9916479 6.23156 -13.0607 0.4845149 5.47878 -13.9815 0.8915009 5.45317 -14.075 0.4423769 6.28157 -14.872 0.4634449 6.94033 -14.5894 1.22388 7.58249 -14.4178 2.18795 7.97053 -15.1728 2.73006 8.2562 -15.2277 3.70626 8.3748 -15.8279 4.13734 7.68136 -16.1859 4.73616 8.3207 -16.0565 5.73072 8.51748 -16.6513 5.78549 7.63295 -16.3539 5.86847 6.64533 -16.8915 6.71563 6.62988 -16.7622 7.44818 7.42743 -16.8473 8.32405 7.01063 -17.0889 7.62693 6.39962 -18.021 7.49991 6.72318 -18.4292 7.04308 7.48654 -17.8713 7.04445 8.21873 -18.635 7.68682 8.26433 -18.815 7.58923 9.25394 -17.8935 7.98852 9.33638 -16.9244 7.8215 9.14199 -17.0068 7.25191 9.95693 -16.6761 7.23133 10.8904 -15.7385 7.15514 11.1397 -15.4008 7.21476 10.2231 -15.51 7.3227 9.20804 -14.6631 7.75344 9.07828 -14.6732 8.64023 9.53167 -14.8314 8.4702 10.5628 -14.5486 9.33487 10.4142 -13.7421 9.19232 11.0178 -13.1292 9.52923 10.2803 -12.1379 9.79084 10.192 -11.7291 10.0686 9.33731 -10.9015 9.59628 9.19264 -9.94418 9.19328 9.27163 -9.33685 8.73662 10.0227 -8.72811 8.76409 10.8111 -9.00326 9.37491 11.496 -9.95992 9.13579 11.2984 -10.2547 8.82254 12.1378 -10.732 9.55905 12.6822 -10.8296 8.61703 13.025 -11.6086 8.96389 12.5149 -12.0063 8.84973 11.603 -12.278 7.88526 11.3846 -12.4442 8.27491 10.5251 -12.9224 7.39231 10.4808 -13.8273 7.36877 10.8131 -13.6138 6.46208 11.283 -12.7989 6.09145 10.9745 -11.9042 6.23218 11.3409 -11.1763 6.67507 10.8807 -11.1765 6.57947 9.90596 -11.9902 6.99378 9.57216 -12.6891 6.95776 8.82914 -12.9826 7.80939 8.22109 -12.4113 8.54069 8.52487 -11.9244 8.22093 9.38381 -11.5476 7.61846 8.70383 -10.8959 8.22863 8.18702 -11.1378 8.23449 7.25654 -11.0785 8.16453 6.21069 -11.8865 8.71826 5.85197 -12.4492 9.11254 5.11883 -12.7313 9.54381 5.9952 -12.5664 9.69487 6.94621 -13.0067 10.5938 6.6352 -13.1022 11.3145 7.29383 -12.2282 11.724 7.48144 -11.6862 11.34 6.73145 -11.269 10.9814 7.49731 -10.8097 11.8704 7.42777 -10.5706 11.9207 8.31134 -10.3168 10.9911 8.63375 -9.76887 10.8314 7.72261 -9.99179 10.9122 6.79248 -10.2282 10.5726 5.88075 -9.85812 9.65817 6.03139 -10.7254 9.68067 5.54246 -10.8023 8.91803 4.84564 -10.5696 7.9453 5.05633 -9.63451 7.50852 4.71216 -9.90456 7.20913 3.82767 -9.45848 7.85723 3.27292 -8.89371 8.27827 2.57729 -9.18967 7.46231 2.12529 -8.70528 6.62066 1.98016 -8.44303 6.25785 2.85104 -7.50815 6.27924 3.12641 -7.39668 6.16943 4.09527 -6.76839 5.52162 3.78903 -6.0568 6.21809 3.86504 -5.1453 6.51745 4.26151 -5.43925 6.41911 5.19551 -5.18374 5.59566 4.69413 -5.47873 4.70435 4.82979 -6.50764 4.92128 4.94454 -6.96915 5.75274 4.98227 -7.2877 6.47667 5.70282 -8.11741 6.98825 5.51793 -8.98853 7.23381 5.75365 -9.04127 6.82593 6.6848 -8.78215 5.90083 6.37736 -8.76819 5.29964 7.11776 -8.87037 4.36031 7.36714 -8.49169 4.11555 6.47144 -8.65188 3.31163 7.07085 -8.48953 2.64918 7.81 -8.34696 2.02278 7.07663 -9.07429 1.81492 6.41019 -9.57868 2.59177 6.55756 -10.4527 2.52802 7.09819 -11.3609 2.106 7.10637 -10.8296 1.23847 7.26659 -10.0883 0.5782899 7.1699 -9.53635 -0.1155801 6.58857 -10.0968 -0.9374221 6.49384 -9.96645 -1.87356 6.16512 -9.58884 -1.7883 5.23675 -8.76467 -2.29862 5.24379 -8.64212 -3.03635 4.68747 -8.02999 -3.20739 3.99563 -8.0305 -2.27266 3.89984 -8.95433 -2.47657 3.78262 -9.29519 -1.51841 3.76367 -9.87541 -2.16586 3.36412 -9.95747 -2.91339 4.08079 -9.96427 -3.7127 3.43046 -9.9699 -3.24692 2.49115 -10.7544 -3.87164 2.74204 -11.5959 -3.69565 3.29355 -11.7122 -3.14938 4.14449 -11.5251 -2.42222 4.82992 -10.8392 -2.05747 4.2071 -11.2214 -1.4553 4.92721 -10.8758 -0.6257981 5.35953 -10.1275 -0.02145137 5.49908 -10.6538 0.8276579 5.45356 -9.81455 1.14572 5.03653 -10.6187 1.56089 4.53396 -11.4712 1.24021 4.98142 -11.7335 2.10016 5.32959 -11.5341 3.02507 5.3824 -11.7029 3.98609 5.69936 -12.612 4.10068 5.92738 -12.9735 3.25123 5.56921 -13.6124 2.63766 5.95342 -13.5791 1.82761 6.39386 -12.7932 2.36169 6.61028 -13.1482 2.81972 7.38411 -13.9015 3.26104 6.86619 -14.5598 3.96807 6.76732 -14.1935 3.97889 7.61428 -14.11 3.90676 8.62166 -14.0887 4.86329 8.56245 -14.2906 5.60238 9.21296 -13.8053 5.02788 9.86693 -13.2461 4.1832 9.87214 -12.8723 3.62331 9.09127 -12.2644 2.91177 9.42284 -11.2917 3.10787 9.51225 -11.1608 4.01496 9.22662 -10.4305 4.55865 8.711 -10.1586 5.26305 9.24622 -9.30341 5.66718 8.97823 -9.29943 6.3281 8.23897 -9.70512 7.10018 7.63831 -9.73048 7.88821 8.1673 -9.59243 8.83932 7.87072 -8.755 8.3797 8.3726 -8.61592 8.63589 7.45117 -8.49761 9.4547 8.08504 -8.56647 10.1226 7.31396 -7.81455 10.5677 7.8192 -7.86778 10.9426 6.89985 -7.95043 11.8586 7.1114 -6.92459 11.8017 6.9327 -6.3144 11.3517 6.24735 -6.37731 11.9012 5.41155 -6.71531 12.7792 5.6894 -5.83416 12.9933 5.32591 -4.81598 12.9283 5.49469 -4.0039 13.3612 5.7969 -4.47033 13.7769 6.6448 -5.09838 13.0491 7.03844 -4.54928 12.5372 7.69909 -5.07214 13.2365 8.22331 -5.90627 13.5121 7.67464 -6.29105 13.9082 8.43086 -5.73768 13.5301 9.18587 -5.96596 12.594 9.58629 -6.24726 11.7194 9.12126 -6.68778 10.8423 9.42326 -5.71078 10.4726 9.41008 -5.25891 10.204 8.63882 -6.17029 10.1354 8.151 -6.12728 9.16653 8.55775 -6.93106 8.67587 8.15542 -7.58439 9.26826 8.78021 -7.50444 8.57049 9.54325 -7.543 8.15504 10.4356 -6.91775 8.28652 11.1795 -6.42502 7.8173 10.5433 -6.44103 6.86454 10.4839 -6.62567 5.91702 10.3706 -7.25231 5.61729 9.59289 -6.95888 5.48833 8.64111 -7.89566 5.34921 8.72082 -7.86305 4.64451 8.02328 -7.58976 4.41963 8.97726 -7.53403 3.45603 8.77384 -7.2993 3.294 7.81652 -6.41177 2.86823 7.41256 -6.06667 1.91557 7.29974 -5.40672 1.853 6.64803 -4.60063 1.45112 6.28887 -3.77401 1.90131 6.01014 -3.32667 2.3056 5.15108 -2.63769 1.9224 4.62053 -3.04115 1.69664 3.77278 -2.50651 1.50998 2.99811 -2.91487 0.6394779 3.32881 -3.35938 0.06876323 3.97456 -3.27614 -0.2537721 4.93971 -4.25331 -0.4119381 5.03025 -4.94791 0.3223009 5.06385 -5.66479 0.6247389 4.51652 -6.4876 0.1381029 4.48833 -5.91341 -0.7063281 4.50972 -5.43029 -1.22478 5.14824 -5.68313 -1.50504 6.11872 -5.74425 -1.86543 7.09258 -6.73269 -1.52398 6.89098 -6.96381 -0.5973121 6.7576 -7.31393 -0.1842651 5.91996 -7.58484 0.6498399 6.34968 -7.93242 1.3666 5.74199 -7.35831 0.8362679 5.03265 -6.79002 1.47976 4.51131 -6.51395 1.62009 5.42538 -5.56591 1.27624 5.4294 -4.78834 1.86218 5.38869 -4.15634 1.18582 4.9636 -4.14131 1.40317 4.01104 -4.2854 0.9713409 3.13571 -4.71509 1.26069 2.29323 -4.50979 2.19428 1.88235 -5.39935 2.31983 2.14757 -6.14324 1.94899 2.81674 -6.98179 1.44864 2.94964 -7.15928 2.27854 2.35352 -7.46322 2.36037 3.27287 -7.00074 3.25351 3.02025 -6.28394 3.94874 2.79746 -5.41412 3.46912 2.68764 -5.77743 3.41512 3.63014 -5.15391 3.63813 4.44365 -5.26245 3.20198 5.37986 -4.32837 3.07018 5.31769 -4.32015 3.89035 5.85056 -3.50091 3.39373 5.75461 -2.85566 2.83279 6.28036 -2.39678 1.98626 6.14504 -1.50053 2.33859 5.84863 -1.6515 2.73607 6.79769 -0.935418 3.22983 6.23621 -0.09677777 3.81523 5.93539 -0.150061 3.13394 5.14132 --0.352458 2.67763 5.84305 -0.04251107 1.8707 6.14099 --0.816214 1.63721 6.66419 --1.40341 2.42736 6.89144 --1.02708 3.30571 6.66649 --0.886295 3.92188 7.41185 --1.30985 3.37232 8.15562 --1.78353 4.26014 8.08779 --2.25253 3.72137 7.34142 --1.75043 4.10769 6.61635 --1.54221 4.9242 7.13061 --0.622868 5.22518 6.92903 --0.487221 5.09246 5.96747 --1.28462 4.53386 5.69083 --2.02439 4.24018 5.13132 --1.90325 4.78368 4.31437 --1.22861 4.21265 3.86225 --0.624816 4.25087 3.02885 --0.322037 3.3429 2.7779 -0.257098 2.7757 3.41322 -0.677632 3.60121 3.10115 -1.31083 4.32885 2.96231 -1.97258 3.71535 2.66625 -2.17222 2.78922 2.23691 -1.50454 2.03032 2.1361 -2.15186 1.89784 1.44207 -2.23975 2.5975 0.6830661 -1.34693 2.88244 0.4535731 -1.27154 2.86949 1.43984 -1.73013 3.76496 1.64161 -0.742335 3.69785 1.34974 -0.685522 4.62372 1.26494 -1.65019 5.07206 1.44203 -1.64907 5.37049 2.3947 -2.35313 4.80125 2.84316 -2.60079 5.46684 3.62135 -3.33216 5.32305 3.00297 -4.04849 4.59663 2.79864 -4.55605 4.98603 2.05158 -5.42603 5.00647 1.54599 -5.4981 4.02609 1.71817 -5.37985 3.08248 1.3436 -6.03692 3.68969 0.7913291 -5.12813 4.13008 0.8144591 -4.14999 4.44576 0.5977771 -3.78861 5.30065 1.04115 -2.77987 5.33707 1.18217 -2.52792 4.38834 1.08572 -2.52221 4.48135 0.07625182 -1.74136 4.90726 -0.3907509 -1.15378 4.15449 -0.2384429 -1.29891 4.43857 -1.18352 -0.720391 4.19659 -1.9906 -0.119397 4.41892 -2.82944 -0.355969 5.32116 -3.2686 -0.119142 6.14617 -2.61675 -1.0776 6.36578 -2.78959 -1.08351 7.37002 -2.62066 -1.89381 7.51691 -2.14115 -2.39781 6.67009 -2.08979 -1.92712 6.66463 -1.16088 -0.952985 6.57838 -0.9379809 -0.335133 6.18614 -0.1873869 --0.408738 6.02469 0.4817891 -0.161338 5.27121 0.4002171 --0.357776 4.4326 0.1813581 --1.11542 4.50658 -0.4005909 --1.33873 3.85648 -1.19216 --1.35514 3.39354 -0.3017899 --1.88108 4.03949 0.3296981 --2.74622 4.31873 -0.07881508 --3.16147 5.15216 -0.2641179 --3.61952 5.01746 -1.17093 --2.99378 5.80738 -1.08874 --2.63526 6.12156 -1.94933 --2.46585 5.2075 -2.3185 --3.05909 5.30334 -3.12737 --3.63342 4.77048 -2.55572 --2.9984 4.02644 -2.15977 --2.51806 3.61405 -1.36085 --3.08191 3.45852 -0.5606359 --2.81434 2.53669 -0.9791759 --3.18657 2.61399 -1.86622 --2.58598 1.91955 -2.18945 --1.771 1.62991 -1.77652 --1.75587 1.48537 -0.7645179 --2.52746 0.8348679 -0.5038549 --3.41253 1.28401 -0.4693799 --3.82664 1.61516 0.3136631 --4.82915 1.73375 0.2048101 --4.19266 2.38064 -0.06971028 --3.85204 3.06549 0.5472751 --3.90512 3.79267 1.19174 --3.71658 4.65297 1.6836 --2.78696 4.72082 1.5817 --2.00845 4.10395 1.67227 --2.66447 3.33254 1.82767 --2.87576 2.67591 2.48391 --3.96573 2.85553 2.36522 --4.39758 3.75163 2.73176 --4.83855 4.51525 3.07352 --4.44615 4.01932 3.82335 --3.41179 3.83744 3.84552 --3.46186 4.45895 4.55657 --3.87959 3.58864 4.66748 --3.53581 2.79344 5.26731 --2.66484 3.23567 5.48883 --2.31011 2.37025 5.58307 --2.38016 1.35614 5.7109 --2.51314 1.50853 4.73952 --2.32963 2.08639 3.91858 --1.58568 1.50737 4.1691 --1.60749 0.7205749 4.77454 --0.647669 0.6978599 5.03555 --1.02345 0.1129499 5.79445 --1.65835 -0.6447481 5.78678 --2.2469 -0.8098271 4.86316 --1.94465 -1.69471 5.22556 --1.28537 -2.49428 5.16242 --0.427581 -1.96023 5.4321 --0.07343573 -2.4145 4.54865 --0.249328 -1.63902 3.98728 -0.495824 -1.16224 3.58861 -1.17151 -1.00252 4.2819 -0.339323 -0.4276201 4.28618 -0.227604 0.3738969 3.7552 --0.788651 0.1428749 3.60997 --0.398516 -0.5032051 2.97498 -0.23665 -0.8023571 2.22986 -0.508659 0.1627429 2.37475 -1.52492 0.1617829 2.36736 -1.27505 -0.2583291 1.49604 -1.94536 -0.5105621 0.8059041 -1.0385 -1.10975 0.6737341 -0.810312 -0.2276581 0.2453301 --0.08427523 0.1091479 0.3778631 --0.03542283 0.9347269 -0.1749849 -0.549698 1.2176 0.5770521 -0.766198 1.56978 -0.3408409 -1.58905 1.10494 -0.09174428 -2.18712 0.4778809 0.2502351 -2.21572 0.2379469 -0.6691459 -2.31033 -0.7292861 -0.8492749 -2.07613 -0.7636741 -1.87084 -1.73746 -1.71781 -1.68463 -1.62301 -1.92054 -2.60437 -2.58455 -1.86011 -2.36472 -3.09457 -1.17838 -1.90937 -3.479 -0.6046521 -2.60987 -3.62787 -1.28175 -3.30585 -3.49963 -2.09659 -4.02103 -4.24097 -2.0651 -4.79105 -4.15292 -2.56072 -5.63722 -5.16148 -2.79038 -5.73761 -4.62029 -3.25337 -4.93592 -5.13256 -2.77161 -4.22008 -5.89057 -2.30981 -4.5706 -6.73467 -1.78357 -4.37016 -7.0064 -1.53287 -3.38629 -6.34693 -2.28013 -3.24014 -5.45604 -2.27039 -3.18103 -5.94481 -2.59441 -2.39293 -5.18166 -3.24032 -2.39112 -5.33132 -4.17287 -2.74671 -5.17692 -4.7135 -1.98619 -6.1434 -4.63064 -2.26518 -6.72507 -3.87146 -2.57421 -7.45233 -4.09939 -3.1823 -8.41544 -4.01231 -3.14291 -9.19784 -3.904 -2.38127 -9.68944 -4.42256 -1.7043 -10.1624 -5.23877 -1.87715 -10.9405 -4.58862 -2.03899 -11.4756 -4.09502 -1.3383 -12.0899 -3.33724 -1.25016 -11.2971 -3.07061 -1.76896 -11.9504 -2.28442 -1.77053 -11.561 -1.44676 -1.36545 -11.6869 -0.9526601 -0.5816709 -11.5545 -1.63259 0.2271001 -11.3094 -0.7113791 0.4969571 -11.1038 -0.0009610553 1.12714 -11.9758 0.2016329 1.52425 -13.0367 0.1456389 1.75732 -13.8432 -0.2918211 1.3492 -13.9608 -0.5700811 0.3900031 -14.2197 0.4132629 0.4028901 -13.3805 0.9203879 0.2183061 -13.634 1.51208 -0.6055679 -13.0307 2.27011 -0.2935779 -13.3878 2.86781 0.4366971 -13.7032 3.58168 1.032 -12.7162 3.92113 1.03355 -12.5718 4.26689 1.93234 -11.7654 4.47653 2.49794 -11.4905 4.89436 1.673 -11.3586 5.7591 1.21866 -11.87 6.09456 0.3945271 -12.4506 5.4095 -0.1781269 -11.6453 5.02416 -0.5884029 -11.7363 4.38291 0.2548391 -11.7859 3.43616 0.4347251 -11.8467 2.73849 -0.2412439 -11.4603 2.16438 0.4831941 -10.8618 2.55085 -0.1655909 -10.0169 2.36429 0.3975111 -10.3429 3.32787 0.4211181 -9.68509 3.2292 1.15537 -9.04397 2.52782 1.47956 -9.10369 1.7127 2.06474 -8.86298 1.83195 3.0676 -9.64551 2.40866 2.89042 -10.0227 1.76915 3.54817 -10.9605 1.514 3.44244 -11.7203 1.82513 2.74425 -11.8216 2.68006 2.21774 -11.8999 3.15525 1.38039 -12.6922 2.75437 1.71899 -13.3544 2.6309 2.52136 -13.2364 3.21914 3.32995 -12.5471 2.96214 3.95877 -11.924 3.4603 3.40125 -11.0869 3.74212 3.9882 -10.6158 4.00287 3.1832 -10.067 3.4233 3.846 -9.08884 3.25359 3.90837 -9.18083 2.89633 4.8168 -8.57798 2.31183 5.32938 -9.53887 2.23965 5.57435 -10.3859 2.63764 5.87846 -10.6534 3.11706 5.04889 -10.1206 3.82034 5.53207 -10.3562 3.88623 6.54812 -10.9014 3.73161 7.30832 -11.813 4.06043 7.73034 -12.7948 4.29059 7.70803 -12.8312 5.34056 7.77694 -12.9892 4.89134 6.875 -13.3649 5.80885 6.58426 -14.1611 5.79782 5.89521 -14.1792 5.13656 5.15771 -13.4249 5.06062 5.79258 -12.8859 5.81141 5.39577 -12.0267 5.974 4.88193 -12.7336 6.58105 4.5657 -13.0308 7.57981 4.44087 -12.3992 7.82918 3.68664 -11.9997 8.05868 2.7873 -11.2003 7.66415 2.25985 -11.3602 7.57197 1.26649 -12.3314 7.91526 1.10355 -12.3835 7.27114 0.3525751 -11.7989 7.84952 -0.2102939 -11.4836 7.24773 -0.9479959 -12.3677 6.95105 -1.31746 -11.5406 6.9548 -1.93099 -11.3548 7.90794 -2.05874 -10.7469 8.24058 -1.3493 -9.97563 8.92208 -1.16491 -10.1362 9.6571 -0.4645669 -10.7036 10.3749 -0.9442389 -10.2409 10.2062 -1.75469 -9.7781 10.9649 -1.16801 -8.95893 10.5021 -0.9002459 -8.39276 10.756 -0.1567279 -9.18188 10.5389 0.4307441 -8.86261 10.1073 1.23727 -9.23622 11.0468 1.57838 -9.70713 10.2401 1.78836 -9.75052 9.29924 1.49071 -10.2605 9.92318 0.8569741 -10.5312 9.03626 0.5007831 -11.4919 9.227 0.4091401 -12.2607 9.52758 -0.1987109 -13.1412 9.89836 -0.4819729 -13.2717 9.4176 0.4482491 -13.2133 8.90993 -0.3748119 -13.143 8.20372 -1.10799 -13.5677 7.77629 -1.86514 -14.4387 7.21728 -2.09122 -14.8573 6.36381 -2.23145 -14.6242 6.01313 -1.28466 -14.242 5.37283 -1.99802 -14.5326 5.10813 -2.98163 -13.736 4.59746 -2.82257 -12.8358 4.14015 -3.04215 -12.5304 3.65285 -3.88705 -13.3342 3.93411 -4.49398 -13.8808 4.25428 -5.30462 -13.6211 5.10961 -5.87127 -12.6268 5.28698 -6.08871 -12.0846 6.05245 -6.36784 -12.5761 6.64761 -5.77377 -12.5528 7.60973 -5.66901 -13.2621 7.30559 -4.93693 -14.014 7.02031 -5.63562 -13.6027 7.74678 -6.13336 -13.3582 8.69408 -5.89845 -12.4502 8.65624 -5.36835 -11.8737 8.70017 -4.6355 -10.9702 9.20871 -4.54582 -10.4319 9.37097 -3.67089 -9.80495 10.0067 -3.23053 -10.1628 10.9314 -3.39541 -10.745 10.8572 -4.1907 -11.6151 10.2858 -4.3534 -12.4153 10.2625 -4.83631 -12.8918 10.3424 -5.75427 -12.0243 10.7866 -5.77834 -11.3494 11.054 -6.39236 -10.7698 11.6566 -7.01647 -11.3219 12.4935 -7.07117 -11.4543 13.2094 -6.32582 -11.1368 13.6759 -5.5546 -10.2372 13.8693 -5.77727 -10.1114 12.9306 -5.98946 -10.0491 11.9694 -6.23893 -10.2446 11.0113 -6.31794 -10.4141 10.1265 -6.71774 -10.5308 10.0527 -5.68616 -10.9631 9.15594 -5.81776 -10.1491 8.70974 -6.24877 -10.066 8.58514 -7.19313 -10.6293 7.75794 -7.26905 -10.7216 8.39379 -7.97985 -9.95205 7.87571 -8.51143 -10.6769 8.04707 -9.1779 -10.7542 7.04785 -9.18808 -11.7684 7.11009 -9.10184 -12.5546 7.71725 -9.14555 -12.7841 7.52628 -8.15453 -13.7005 7.28925 -8.4548 -13.9073 8.2046 -8.22699 -13.9048 9.00581 -7.58129 -13.0124 8.89298 -7.20146 -13.5215 9.48838 -6.63231 -14.2368 9.91254 -7.18947 -14.8962 10.4286 -6.64753 -14.652 11.381 -6.28966 -13.8645 10.804 -6.3503 -13.0924 11.2864 -6.76033 -12.6918 11.8603 -7.4325 -13.3957 11.8833 -8.12249 -13.1571 12.848 -8.01007 -12.941 13.6433 -7.4132 -12.2585 14.1426 -6.87441 -12.4449 13.5248 -6.14689 -13.3912 13.6281 -6.55168 -14.1105 13.1585 -7.04279 -14.3872 12.7177 -6.23033 -14.0238 12.662 -5.30126 -13.7671 12.337 -4.42042 -12.7911 12.3586 -4.50646 -12.1607 12.6338 -3.72579 -12.0851 11.7455 -3.23039 -12.5383 12.2015 -2.4988 -12.8284 13.1604 -2.11959 -13.2449 13.9382 -1.75931 -13.2004 13.8435 -0.8049229 -13.8773 13.0525 -0.9332559 -13.9606 12.3213 -1.67166 -13.6639 11.6969 -0.8644749 -14.0061 10.8317 -0.8596129 -14.9247 10.9887 -0.5567709 -15.301 11.8237 -0.2332029 -14.7943 12.7345 -0.1543619 -14.4197 11.9998 0.4854721 -14.6336 11.1705 1.01152 -14.6458 10.1806 1.20597 -14.4818 9.19467 0.9801741 -15.0669 8.61486 1.58803 -14.939 7.68919 1.85346 -15.3209 7.43163 0.9584421 -14.8995 8.2189 0.4928101 -15.7483 8.14729 0.01010682 -16.0426 8.96273 0.4985981 -16.8957 9.4371 0.4532891 -17.4859 9.72082 -0.2774239 -18.0135 10.4887 -0.6411859 -17.7093 10.6761 0.3022391 -17.1673 11.2974 -0.1941559 -17.29 12.2979 0.01981182 -17.4236 12.9654 -0.7292299 -16.5363 13.0342 -0.3056389 -15.7564 13.4307 0.1229961 -16.139 13.432 1.02264 -16.2421 14.3328 1.35979 -16.7588 14.2944 0.4926041 -16.9099 14.3248 -0.4454059 -17.7807 14.4613 -0.09132518 -17.9004 15.2138 0.4969461 -17.1281 15.6581 0.9583371 -16.4562 15.4885 1.66357 -17.0688 16.0755 2.13761 -16.3925 16.1747 2.82331 -16.1871 17.1082 2.74948 -15.3501 16.8536 2.21423 -15.0065 17.8116 1.93589 -15.6403 18.5494 1.66703 -16.0667 19.2576 2.36423 -15.4224 18.9193 3.1201 -14.8076 19.1008 2.42134 -15.287 19.6894 1.78975 -14.6676 20.0458 1.1041 -13.9612 20.4142 1.6439 -13.7947 19.8789 2.51087 -13.286 20.3944 3.25837 -13.1444 21.3199 3.55329 -12.1778 21.4364 3.91596 -11.5719 21.5445 4.66238 -12.0566 21.1507 5.3855 -12.6925 21.5926 4.73618 -13.2567 20.7458 4.71401 -14.1671 20.5377 4.9157 -14.5248 21.3818 5.32655 -15.3326 21.4021 5.98379 -15.5768 22.1714 6.56529 -15.4879 22.6245 5.67089 -16.066 23.3434 5.47305 -16.8365 23.6625 5.96844 -16.8347 23.731 6.99962 -16.4203 24.6372 6.78255 -16.6363 25.2676 7.52447 -16.8357 26.1723 7.0361 -17.7275 25.8475 6.72239 -18.3549 26.0502 7.44647 -18.516 25.0817 7.62611 -19.3896 25.407 7.1193 -19.172 25.9659 6.33511 -19.0135 25.027 6.03299 -18.6653 24.0765 6.24996 -18.9004 23.113 6.10224 -18.6276 22.2849 5.54896 -18.8346 21.65 6.26011 -17.9965 21.2658 6.45281 -17.131 20.9284 6.69786 -16.3959 21.2514 6.10582 -17.1083 21.6768 5.48489 -16.7262 22.3826 4.83434 -16.6309 21.4924 4.55798 -16.586 20.9414 3.76192 -16.9968 20.5969 2.91863 -17.9611 20.5238 3.20098 -18.4161 21.1226 2.60313 -18.4414 20.469 1.8566 -17.6147 20.0143 1.53764 -17.5195 19.7033 0.6510101 -16.9634 18.8777 0.4092141 -17.9686 18.5953 0.6325491 -17.9047 18.5958 -0.3563799 -18.2487 18.2122 -1.23596 -19.1597 18.6137 -0.9929809 -19.2447 19.5806 -1.0401 -19.6589 20.2953 -0.5667299 -19.5355 19.976 0.3288441 -19.9285 19.9998 1.27098 -19.2261 19.3175 1.22847 -18.4661 18.8628 1.65547 -19.1564 18.1347 1.76409 -19.7641 18.1138 2.52907 -20.4793 17.3803 2.56344 -20.6492 17.3666 1.62757 -19.9459 17.7 0.8822991 -19.2816 16.9268 0.7300331 -19.0457 17.3468 -0.1744659 -18.4703 17.0291 -0.9208619 -18.954 16.2432 -0.4346939 -18.6366 15.5809 -1.17525 -17.778 16.0628 -1.37626 -17.0023 16.76 -1.28295 -16.5628 16.2459 -0.5189429 -15.6548 15.9756 -1.02082 -15.8088 15.7455 -1.96468 -15.4269 15.4439 -2.83078 -15.2446 15.2407 -3.79663 -15.6448 15.2573 -4.66529 -16.2325 14.786 -5.308 -16.6736 15.5988 -5.02026 -17.6542 15.2925 -4.96189 -18.2471 14.5893 -5.01974 -18.869 15.2777 -4.71836 -19.7518 14.9857 -4.57214 -20.6327 15.192 -4.20484 -20.2399 14.9371 -3.27653 -19.8756 14.0023 -3.45092 -20.5159 13.1785 -3.40428 -20.1024 12.7568 -4.27433 -20.493 12.4508 -5.19687 -20.989 13.05 -5.78981 -21.6279 12.9314 -6.5022 -21.591 12.5976 -7.42071 -22.5591 12.6362 -7.56365 -22.4015 13.6432 -7.50415 -23.089 14.4248 -7.4987 -24.0654 14.466 -7.24278 -23.7093 14.5574 -6.33657 -23.7838 15.0741 -5.56943 -23.1947 14.4676 -5.07484 -22.3996 14.2725 -5.58906 -22.5403 14.3865 -6.56904 -22.4174 15.3984 -6.40802 -23.2414 15.4966 -6.9889 -23.9887 16.0907 -7.06902 -23.7163 16.4085 -7.9255 -24.0761 17.2083 -8.48067 -23.8144 18.0186 -8.95579 -23.5627 19.0153 -8.87742 -24.2112 19.4028 -8.15933 -24.5388 18.7307 -7.41179 -23.9057 18.016 -7.10929 -24.6919 17.4977 -6.91617 -25.2517 17.7173 -6.12959 -25.8153 17.0638 -6.57593 -26.7042 16.6921 -6.44738 -26.908 15.7897 -6.78374 -26.5261 15.0025 -7.26032 -27.3098 14.4621 -6.9585 -28.0853 14.6888 -6.28878 -28.606 13.8891 -6.57696 -28.767 12.9085 -6.50483 -28.22 13.0918 -5.6804 -27.4064 13.4999 -5.29679 -26.991 12.6088 -5.2002 -26.6652 11.7188 -5.20021 -27.0652 11.255 -5.95453 -27.9306 11.6031 -6.33648 -27.2157 11.6014 -7.00453 -26.2631 11.1906 -6.98191 -26.1682 10.8557 -6.0517 -25.956 10.038 -5.48843 -26.0179 9.04095 -5.78616 -26.7247 8.59002 -6.25828 -26.6394 7.64874 -6.39522 -25.9785 8.26322 -6.85718 -25.2239 8.45957 -7.49011 -25.7945 8.73019 -8.18574 -26.038 7.78059 -8.32471 -26.8843 7.27732 -8.47072 -26.7651 6.36829 -8.76905 -27.5281 6.36404 -8.14051 -26.9992 5.57463 -8.32773 -27.1457 5.06478 -9.13724 -27.6887 4.27711 -9.51881 -26.7967 3.90346 -9.31259 -27.2208 3.23605 -10.0073 -26.998 2.34851 -10.531 -27.6273 1.56474 -10.4578 -27.6621 1.58461 -9.48161 -27.4067 1.72635 -8.48859 -27.6347 2.64149 -8.23717 -27.5229 3.29735 -7.53157 -27.4506 2.44691 -7.07983 -26.5522 2.05198 -7.27673 -26.2435 1.22456 -7.74694 -26.8845 0.5883139 -8.05487 -27.2925 -0.1204471 -7.46492 -27.8971 0.6740839 -7.39457 -27.4943 0.4424239 -6.55023 -27.0123 -0.1072741 -5.77207 -26.1263 0.3075229 -6.0482 -25.7517 1.04204 -5.55622 -25.0002 0.5158049 -5.95322 -24.7544 1.40551 -5.69841 -24.2025 1.82318 -6.40925 -23.3012 1.38142 -6.18988 -23.6509 1.44023 -7.15322 -22.7322 1.14357 -7.32776 -23.222 1.46947 -8.08629 -23.602 1.42015 -9.01133 -23.112 0.8639769 -9.72501 -22.7748 0.5776829 -8.81463 -23.1871 -0.2674801 -8.40605 -22.2714 -0.5491391 -8.64038 -21.4144 0.04958043 -8.6673 -21.431 0.6362769 -9.46642 -20.5395 1.02919 -9.63894 -20.0501 1.21944 -10.4745 -19.9034 1.93928 -11.2389 -19.5421 1.17204 -11.7558 -19.3278 0.1551019 -11.593 -18.716 -0.3584041 -12.2024 -18.3873 -1.20732 -11.8986 -17.7278 -1.87571 -11.7133 -17.3417 -1.20318 -11.0282 -17.8132 -0.3484381 -11.2352 -17.5139 0.2025309 -11.9667 -17.978 0.7816259 -11.387 -18.3625 0.8131549 -10.4617 -18.6682 1.34669 -9.67299 -18.27 2.10639 -9.19095 -17.991 1.22578 -8.94962 -18.4385 0.5701549 -8.36457 -19.0744 0.1515779 -7.80857 -19.2951 -0.5166431 -7.15144 -19.0283 -0.6788711 -6.2312 -18.1294 -0.1550071 -6.25102 -18.7758 -0.002729446 -5.50204 -18.8395 -0.5532041 -4.68536 -19.6157 -0.05053807 -4.41419 -20.2464 -0.6748601 -4.89527 -20.7625 0.1237319 -4.72104 -20.6059 0.9667829 -4.29473 -21.6155 1.06448 -4.43985 -22.4028 0.4266889 -4.64229 -23.0321 -0.1069801 -5.14129 -23.4378 -0.7973771 -4.51886 -23.3389 -1.62493 -5.08592 -23.9615 -0.9272101 -5.42478 -23.6628 -1.57815 -6.00981 -24.6585 -1.72078 -6.08848 -25.4623 -2.21768 -6.24301 -25.6137 -2.24626 -5.24264 -25.6409 -2.24353 -4.27033 -26.6122 -2.47512 -3.95941 -26.5074 -2.37914 -2.99967 -27.0262 -2.20609 -2.15222 -27.7028 -1.88532 -1.56778 -27.8765 -0.8658661 -1.67802 -28.5693 -0.3089911 -1.38992 -29.3008 0.2349359 -1.16132 -30.199 0.3805909 -1.46692 -30.5499 1.31555 -1.28025 -31.3961 1.13065 -0.7398609 -32.0769 0.6193469 -1.26139 -32.7453 0.6238219 -1.99164 -32.7672 1.55676 -2.44949 -31.8543 1.57149 -2.9274 -31.1745 1.36327 -3.65916 -31.3205 2.31915 -3.89621 -31.6167 3.18438 -3.62042 -32.4133 3.73318 -3.31432 -32.9895 3.19062 -2.69703 -33.4854 2.37074 -2.55594 -33.9627 3.15499 -2.9511 -34.1001 2.64709 -3.84491 -34.3334 1.75534 -3.40427 -34.215 0.7378809 -3.47185 -33.5024 0.2887179 -2.91048 -32.9214 -0.4978721 -2.72929 -32.5131 -0.9021571 -1.86992 -32.0589 -1.67648 -2.32599 -32.4095 -2.59771 -2.31093 -32.4582 -3.5919 -2.18342 -32.1009 -4.26535 -2.77233 -32.7504 -4.81135 -3.27747 -31.9983 -4.7072 -4.0253 -31.8621 -5.67267 -3.99359 -32.0148 -6.59491 -3.40146 -31.7165 -7.20811 -2.6255 -31.2994 -6.37546 -2.31289 -31.8353 -6.55155 -1.5252 -32.1147 -5.91748 -0.8506229 -32.819 -5.26174 -0.5450729 -33.5705 -4.75407 -1.02471 -34.1165 -4.94972 -0.2240299 -34.0729 -5.78081 -0.8163089 -33.4601 -6.53118 -1.14011 -33.2879 -6.56782 -2.12281 -32.876 -7.48352 -2.15261 -32.0882 -8.11932 -2.004 -31.1492 -8.04084 -1.62163 -30.9704 -8.88678 -1.077 -31.6185 -9.43117 -1.65863 -32.5444 -9.28376 -1.15292 -32.1055 -8.50657 -0.7925559 -32.6521 -8.41461 0.01364232 -33.4529 -8.52509 0.6079271 -33.7989 -8.14399 -0.3067549 -34.3899 -7.86339 -1.09724 -35.078 -7.47205 -0.5051759 -35.6266 -7.42593 0.2519761 -35.2999 -7.4015 1.29048 -34.9355 -8.24956 0.9149521 -35.3565 -9.11555 1.27441 -36.198 -9.08104 1.85578 -36.687 -8.49689 2.53472 -37.6789 -8.73475 2.40435 -37.392 -8.83703 1.45231 -37.0887 -9.32468 0.5973851 -37.4325 -8.94327 -0.2578119 -37.6539 -7.9877 -0.06869868 -37.0218 -7.23979 -0.1494659 -37.2901 -6.75983 -0.9317609 -36.432 -6.45951 -1.06319 -36.0511 -6.7162 -1.94775 -35.5862 -6.32214 -2.66077 -35.8379 -6.32094 -3.63559 -36.4795 -7.08425 -3.57282 -36.615 -6.90925 -4.5543 -36.8572 -7.01268 -5.49867 -36.6891 -6.86373 -6.49345 -36.0555 -6.66229 -7.31166 -36.3581 -5.72681 -7.60839 -35.4909 -5.84207 -7.1167 -34.5458 -5.94289 -7.33522 -33.784 -6.35761 -7.88957 -33.1362 -6.03209 -8.53042 -32.8098 -6.92856 -8.26421 -32.892 -7.0374 -9.23605 -32.0213 -6.48977 -9.15056 -31.5591 -6.80816 -9.99106 -31.1608 -7.02782 -9.14398 -30.9011 -6.24747 -8.74789 -30.679 -5.33466 -8.31746 -31.1154 -5.34561 -7.42058 -31.789 -4.93981 -6.82595 -32.7295 -4.82486 -7.39586 -32.4827 -4.44141 -8.30393 -32.0413 -3.76941 -7.65133 -31.6245 -2.88061 -7.57937 -31.3716 -3.43875 -8.30091 -30.7081 -3.0003 -8.90651 -29.9231 -2.74827 -8.38939 -29.4256 -3.06855 -7.57169 -29.0449 -2.11275 -7.60281 -28.7353 -2.41746 -8.5009 -28.9848 -2.45513 -9.41481 -29.4611 -1.83715 -9.95792 -30.4098 -2.16527 -10.244 -30.3085 -1.44922 -10.8665 -30.5826 -0.7761591 -10.1886 -30.343 0.1021519 -10.4285 -30.5548 0.4434849 -9.52092 -31.5171 0.7759869 -9.33066 -32.4185 0.9651259 -9.02966 -32.8869 0.1088819 -9.01102 -32.8222 0.1296589 -8.0145 -32.9334 -0.7668221 -7.60404 -33.6043 -0.9532401 -6.99619 -33.9053 -1.8817 -6.91952 -33.0173 -2.21705 -6.63705 -32.1358 -2.51773 -6.51011 -31.1187 -2.27061 -6.57006 -31.4909 -1.50795 -7.15872 -30.6265 -1.09123 -7.05311 -30.3568 -0.7474491 -7.91227 -29.5833 -0.1074381 -7.94849 -28.7658 -0.3190371 -8.59322 -28.5438 0.3300709 -9.27827 -28.8412 -0.2191671 -10.0891 -28.1076 -0.8036791 -9.61319 -27.8365 -0.4055351 -10.4566 -27.396 -1.28666 -10.7473 -26.6289 -1.85709 -10.9505 -26.7996 -1.515 -11.8449 -27.4342 -1.26696 -12.6613 -26.6199 -0.6665481 -12.8523 -25.6153 -0.6017801 -13.005 -25.6401 -0.4262301 -12.0515 -25.887 0.3688129 -11.5575 -26.4596 0.4011149 -10.8054 -25.6025 0.07164063 -10.3103 -25.1606 0.5351849 -9.50711 -25.0377 -0.4727051 -9.3532 -25.3382 -1.1144 -10.0898 -26.3007 -0.9136311 -10.4322 -26.0929 -1.45388 -9.63996 -26.2997 -0.6357161 -9.08193 -25.7314 -0.03961267 -8.47687 -24.8911 -0.4802131 -8.06567 -24.5538 0.1816999 -7.4842 -24.9471 1.061 -7.5712 -24.6802 1.72235 -8.2265 -24.5703 2.11915 -9.22276 -25.3802 2.64983 -9.42084 -25.8193 2.93333 -10.2692 -25.2135 3.67355 -10.3591 -25.0699 4.44441 -10.9631 -25.2153 4.07058 -11.91 -26.047 4.52826 -11.8539 -26.3513 5.42717 -11.8323 -27.1673 4.91617 -12.0224 -27.3107 4.49922 -12.9183 -27.687 3.96861 -13.6767 -28.4473 4.21044 -13.1492 -28.3392 3.38155 -12.5785 -28.8956 3.62921 -11.791 -28.8966 3.15545 -10.9392 -29.0951 2.55872 -11.734 -29.843 2.63031 -11.1939 -29.8547 2.8152 -10.1875 -29.5949 3.45269 -9.42848 -28.6314 3.43305 -9.7193 -28.4284 3.35955 -8.81683 -28.023 4.05999 -8.18582 -28.1264 4.47708 -7.28586 -27.4342 4.45374 -6.52467 -26.6706 4.81338 -5.90767 -26.6383 3.88146 -6.15685 -26.6373 3.05847 -6.63891 -26.4092 3.71027 -7.26681 -25.5271 4.06586 -7.24498 -24.6134 3.61532 -7.11949 -24.7195 2.92714 -7.87352 -24.4103 3.53385 -8.59212 -23.4874 3.72186 -8.29672 -23.3423 3.67059 -7.29521 -22.903 3.08045 -6.66395 -23.6587 3.26912 -6.07231 -24.6015 3.08123 -6.01093 -25.5064 3.35842 -5.59499 -25.7349 2.75437 -4.83136 -26.729 3.11159 -5.00161 -27.5883 3.68246 -5.20321 -27.4052 4.64336 -5.19307 -27.5466 5.01515 -4.16701 -26.5417 5.04773 -4.03648 -25.9672 5.84404 -4.24584 -25.0879 6.16534 -4.60365 -24.85 6.41511 -3.65925 -23.8013 6.50937 -3.52799 -23.3552 6.3415 -4.40398 -23.1874 6.84381 -5.24582 -22.4694 7.62969 -5.27708 -22.1313 8.52487 -4.85359 -22.5522 9.31307 -5.26893 -22.9449 10.134 -4.82952 -23.8389 9.75206 -5.11463 -24.3093 10.0451 -5.88698 -23.4782 9.61923 -6.23702 -22.977 10.1672 -6.86512 -22.8253 10.4871 -7.76667 -22.7851 11.3515 -8.33747 -23.0052 10.7083 -9.09152 -23.0158 11.6409 -9.42984 -23.0613 12.5339 -8.93692 -23.7206 13.226 -8.60102 -24.2911 12.6578 -8.01583 -25.2004 12.9288 -7.82151 -26.0773 13.0246 -7.29689 -26.3354 13.5441 -6.51761 -25.7874 12.6867 -6.22005 -25.2761 11.9488 -5.71705 -24.5572 12.3731 -6.14168 -23.6565 12.7759 -5.96189 -22.9248 13.0706 -6.5639 -22.4295 12.9578 -5.7014 -22.1408 12.7882 -4.7517 -21.5013 12.4092 -4.10777 -21.161 11.6335 -4.71278 -21.3967 11.4483 -3.74886 -20.8162 11.1433 -2.99594 -20.1814 10.7073 -2.39808 -21.1446 10.58 -2.23769 -22.0244 11.0778 -2.47454 -22.8558 11.4987 -2.0877 -22.5907 12.3736 -2.24774 -23.35 12.9125 -2.03304 -24.1181 13.4098 -1.6769 -25.0492 13.041 -1.66227 -25.7559 13.533 -2.11693 -25.9241 12.701 -2.74319 -25.1964 12.0545 -2.41924 -24.9999 11.3353 -1.7799 -24.7017 10.4736 -2.15812 -25.0673 10.5789 -3.07041 -25.3572 10.2 -3.97585 -26.1586 10.6441 -3.54716 -26.3507 10.7737 -2.58436 -26.9732 11.514 -2.72917 -27.2563 12.1724 -1.97272 -27.7664 13.0049 -1.92721 -27.6216 14.0113 -1.99521 -27.1136 14.7662 -2.2626 -26.4017 15.4639 -2.54486 -25.691 15.8819 -1.98842 -25.92 16.693 -2.50765 -25.6327 17.5021 -1.99368 -25.2252 16.9826 -1.22229 -24.4088 16.41 -0.9609739 -23.8496 16.7142 -1.69316 -23.8569 16.5583 -2.70281 -24.2982 16.2106 -3.60673 -24.6723 16.9807 -4.17119 -23.8908 16.6364 -4.70541 -23.0156 16.9597 -5.05832 -22.2056 16.886 -5.67052 -21.2919 16.9596 -6.00505 -20.9692 17.9037 -6.10941 -20.3966 18.2611 -6.79178 -19.8115 18.7992 -7.35801 -19.5168 17.9552 -6.98478 -18.5122 17.7215 -6.67459 -17.7921 16.9794 -6.67988 -17.1662 16.3195 -6.29573 -17.5189 15.359 -6.48448 -18.4642 15.1668 -6.80319 -18.4096 14.2421 -6.54617 -18.8062 13.7822 -7.28229 -18.747 13.2729 -8.11609 -18.6035 12.5322 -8.82229 -18.7337 11.5021 -9.11 -18.0158 11.0235 -8.73953 -18.7369 11.13 -8.03418 -17.9084 11.5975 -7.54947 -17.197 11.6036 -6.79947 -16.7747 11.9812 -5.99704 -16.2299 12.4345 -5.36654 -16.3359 13.4506 -5.20611 -15.527 13.9269 -5.69834 -14.7485 13.6763 -5.14358 -14.5094 14.4657 -4.56492 -14.1066 14.4826 -3.62557 -14.6087 14.1005 -2.83163 -15.1502 13.8813 -3.64618 -15.877 14.0856 -2.93892 -16.7653 13.8683 -2.655 -17.5665 14.0849 -2.20914 -18.5178 13.717 -2.22097 -19.2345 14.2714 -2.6577 -19.8531 14.2782 -1.79967 -19.3204 13.8132 -1.1493 -19.8821 13.1389 -0.7662349 -20.7648 13.0705 -1.16328 -21.0805 12.8353 -2.06428 -21.8628 12.6499 -1.5134 -21.6056 11.6493 -1.2685 -22.371 11.1609 -0.8089879 -22.0864 10.1147 -0.7042299 -21.4713 9.67908 -1.33246 -21.8564 8.88424 -0.8438029 -22.0217 8.12736 -0.3448949 -21.3336 8.72961 0.05552692 -21.3088 8.02625 0.8371771 -21.3244 7.25846 0.2658991 -20.8501 6.59385 0.8671261 -19.9672 7.03924 0.9680011 -19.1909 6.48206 1.3156 -19.7103 6.115 2.05301 -19.7354 5.12899 2.32421 -20.5681 4.79043 2.69903 -19.7692 4.21647 2.73318 -20.0988 3.32569 2.36043 -19.9007 2.3973 2.01311 -19.1986 1.94061 1.53645 -18.6927 2.16009 0.7239021 -18.3857 1.31595 0.9470151 -19.0388 0.6865949 1.2747 -19.7585 0.7810829 0.5643501 -20.304 0.3481559 -0.1642499 -20.332 1.05983 -0.8870599 -20.3579 1.95478 -1.38933 -21.2411 2.05659 -0.8813569 -20.7618 2.2217 -0.00160969 -21.4741 2.92935 0.2641491 -22.0028 3.81607 0.2507691 -21.7477 3.8532 1.20837 -21.9934 3.32401 2.01692 -22.8256 3.30105 2.65168 -22.3292 3.67891 3.47445 -21.9159 4.17081 4.27115 -21.9419 5.20785 4.53702 -21.4289 6.12136 4.40055 -21.721 6.81382 5.09559 -21.3967 6.80788 6.03464 -20.7749 6.75134 5.22999 -20.0959 7.54942 5.30082 -20.5175 7.38679 4.37273 -20.8128 7.72913 3.45933 -21.6462 7.32995 3.44421 -21.2525 7.44411 2.50148 -20.4136 7.02761 2.83067 -20.4273 6.4944 3.69789 -19.9901 6.0522 4.45463 -18.98 6.04004 4.44749 -19.0145 5.09029 4.5901 -19.4058 4.15161 4.61046 -20.0632 3.39302 4.57121 -19.2164 3.19854 5.14239 -19.1277 2.24578 4.72208 -19.6205 1.5134 4.16073 -19.8689 0.5387549 4.39897 -20.3239 -0.3684031 4.3997 -20.4135 -0.09945307 3.37295 -20.3881 -0.4768681 2.41504 -21.1361 0.1237799 2.74977 -21.7879 0.2456939 3.46715 -22.1456 0.9391379 4.06519 -23.0739 0.8777849 4.11954 -23.4242 0.3288149 3.3999 -23.8117 0.1083679 4.33017 -23.8159 0.3829339 5.28198 -24.4901 1.10225 5.43234 -23.7918 1.77536 5.63149 -23.4723 2.71904 5.72912 -23.7682 3.65166 5.36862 -22.9665 4.08164 5.76728 -23.3379 4.74276 6.43469 -24.2185 5.11071 6.80754 -25.048 5.65355 6.97118 -26.0049 5.56672 7.03285 -26.0963 4.76847 7.5229 -26.8708 4.18911 7.97899 -26.2886 4.63197 8.74785 -26.4104 3.72256 9.13065 -27.1418 3.66878 9.79438 -28.0751 3.83721 10.0607 -28.7675 3.62621 10.8324 -29.2472 4.36264 10.3656 -29.7753 3.87012 10.9791 -30.1955 2.94836 11.2164 -30.0572 2.06629 11.6749 -29.139 1.89699 11.3434 -29.7256 1.365 10.7451 -30.7142 1.43555 10.7594 -31.5536 1.40724 10.2246 -31.1736 1.95855 9.50557 -31.0103 2.51925 8.70455 -30.4341 2.66399 7.8713 -29.8259 3.03745 8.5384 -29.5654 2.91005 9.5135 -29.6179 1.96856 9.77554 -28.8155 1.58358 9.32203 -27.867 1.27337 9.03456 -28.0147 0.6239549 9.70849 -27.0466 0.4823889 9.98394 -26.9426 -0.09965557 10.8766 -26.7819 -0.5580731 10.0335 -26.7005 -0.5833211 9.12372 -27.3904 -1.26685 8.9211 -27.1056 -2.20014 8.68172 -27.5202 -2.14598 9.60536 -28.2439 -2.62018 10.0839 -28.9926 -3.09827 9.75647 -29.206 -3.34113 10.5686 -29.9799 -2.59864 10.4652 -30.855 -2.12727 10.2928 -30.7099 -2.97763 9.72211 -31.1388 -2.57159 8.94029 -30.5153 -3.12749 8.48102 -30.3577 -3.11424 7.46956 -31.2742 -3.05156 6.96587 -31.5845 -2.31295 7.65867 -32.0579 -3.15164 7.91483 -31.2866 -3.69542 7.92696 -30.8046 -4.28163 7.27895 -29.824 -4.21925 6.98443 -30.0454 -5.03738 6.45364 -29.4129 -4.95255 5.72211 -29.0474 -4.1598 5.23769 -28.0432 -4.10566 5.41371 -27.2261 -3.93984 5.99618 -27.1098 -3.10856 5.54064 -27.982 -2.9914 6.06159 -27.9553 -1.97183 5.91501 -28.3684 -1.18064 6.14697 -27.8305 -1.01282 5.37616 -27.0008 -0.5068821 5.50122 -26.7953 0.4859129 5.39103 -26.2844 -0.06405807 4.707 -26.022 -0.9745091 4.39482 -25.2414 -0.8666941 5.09208 -24.5704 -0.9777451 4.37098 -23.7916 -1.56604 4.52572 -23.4721 -1.68697 5.48271 -23.1282 -2.12808 6.30738 -23.6835 -1.81146 7.14622 -23.1072 -1.1642 6.68715 -23.0551 -0.3249691 7.26986 -22.3401 -0.8760271 7.65312 -22.7836 -0.2255491 8.24047 -22.978 -1.2076 8.45399 -23.4871 -1.02778 9.28189 -23.7353 -0.7388711 10.2037 -24.2044 -0.1886841 10.8909 -25.12 0.1166989 10.6127 -25.7734 -0.2338531 9.99157 -25.5338 0.5233129 9.26953 -25.8487 1.28992 9.82745 -25.8079 2.34301 9.59925 -25.7022 2.24057 8.6252 -25.3191 2.45179 7.8215 -26.0252 3.12815 7.5164 -26.3403 3.46191 6.60412 -25.7205 3.33372 5.8021 -25.4492 3.98317 5.06354 -25.6444 3.93867 4.06216 -26.3385 4.53524 3.79739 -26.1537 4.8443 2.83052 -25.8951 5.44773 2.00164 -25.7543 6.42372 1.86752 -25.6425 6.49181 0.8893701 -26.4688 5.86685 0.9155541 -27.0066 5.05997 0.8838441 -26.3031 4.3 0.9820631 -25.4898 4.43298 0.4192911 -25.0975 4.86804 -0.4508899 -25.0198 5.79006 -1.00449 -24.007 5.61127 -0.8491679 -23.3908 4.80863 -0.7841409 -23.148 4.84988 -1.76235 -23.8094 4.07117 -1.7771 -23.5438 3.69624 -0.9077349 -23.7494 2.87394 -0.3418099 -24.1163 2.03533 -0.7569189 -23.2868 1.44233 -0.5998649 -23.3752 1.60324 0.3601461 -23.3723 0.9235289 1.1082 -24.3579 1.12928 0.7468811 -25.1533 0.9175069 0.1941591 -24.8891 1.91784 0.04494502 -25.1038 1.3821 -0.7665529 -25.1431 1.69135 -1.72066 -25.1358 2.31535 -2.49818 -25.8654 2.46711 -3.15569 -26.4925 2.86806 -3.79567 -27.3234 3.29223 -3.53558 -26.7472 3.19831 -2.69516 -27.0479 2.25847 -2.36407 -27.8445 2.9146 -2.19973 -28.6829 2.75017 -2.58012 -29.4131 2.08193 -2.64811 -28.475 1.67392 -2.65869 -28.4096 1.11216 -1.87262 -28.1646 0.8850199 -0.9221629 -28.1624 1.73935 -0.3897119 -28.9231 2.30244 -0.1692429 -28.4229 2.0373 0.7066981 -28.2255 2.32599 1.61114 -29.1882 2.57984 1.68224 -29.2368 2.83034 2.62263 -28.7343 2.02197 2.90594 -29.5632 1.95923 3.36253 -30.0412 1.20689 3.65465 -30.2503 0.4325179 3.02396 -29.8852 -0.1469681 3.78201 -29.9306 -1.05595 4.21965 -30.838 -0.9556541 3.8964 -30.556 -1.25563 2.95583 -30.1142 -1.61754 2.1469 -30.8675 -2.04253 1.53979 -30.7368 -2.91533 1.96179 -30.9546 -3.02931 2.90265 -31.2724 -3.9821 2.83941 -30.4619 -4.50783 2.91379 -29.8963 -4.77396 2.11769 -30.0018 -3.89854 1.64314 -30.4565 -3.39242 0.8656431 -29.5646 -2.97503 0.8383791 -28.979 -2.4507 1.4835 -28.2024 -2.40125 2.13064 -29.018 -2.88473 2.47236 -29.2015 -1.98927 2.86685 -28.364 -1.63293 3.21712 -28.1 -0.8612181 2.70283 -27.4365 -0.9959161 1.91333 -26.4985 -1.30046 1.69259 -27.0288 -1.89379 1.18995 -27.0259 -2.20979 0.2209731 -27.0936 -1.50223 -0.4439029 -27.3106 -0.6244131 -0.1202729 -26.3606 -0.5866571 -0.5270169 -25.7744 -0.1369371 0.2819911 -24.9459 -0.5100441 0.6782821 -24.0855 -0.6414821 1.08641 -24.4237 -0.05681367 1.73589 -25.2436 0.01332063 2.47011 -24.669 0.8026359 2.8342 -24.2319 1.01221 1.95356 -24.5321 2.01222 2.0971 -24.9646 2.96723 2.0575 -24.1492 3.15068 2.72341 -24.6224 4.00879 2.84563 -24.1855 4.62183 2.1823 -23.6194 4.8242 2.93838 -23.2307 5.79023 3.03437 -23.1786 5.74947 1.99375 -22.4131 5.09058 1.79942 -23.0241 5.11568 0.9745161 -22.5573 4.88078 0.1262221 -22.2843 5.64026 -0.4677099 -22.7512 6.398 -0.02866758 -23.283 7.15775 0.3313241 -23.3566 7.84684 -0.3623069 -23.1868 8.81151 -0.06877338 -23.8136 9.44552 -0.4500529 -24.6011 8.8724 -0.4290269 -24.897 9.33906 0.4374631 -25.293 9.59628 1.19454 -25.469 9.52519 2.18133 -26.0754 8.82392 2.57996 -25.2862 8.40256 3.0027 -24.3392 8.39604 3.34683 -24.4188 8.7742 4.23284 -25.0218 9.08253 4.98159 -25.4965 9.96335 5.07956 -25.5492 10.8737 5.59237 -26.2219 10.7862 4.86591 -26.3779 11.4814 4.16047 -26.6844 10.6997 3.66664 -25.765 10.5099 3.84134 -25.127 11.0936 4.27854 -24.331 10.7743 3.69624 -23.7718 10.8683 2.90725 -23.5606 11.814 2.61285 -22.6723 12.2102 2.77787 -22.5949 11.6814 1.94051 -22.1303 10.8654 1.4938 -21.1173 10.6156 1.59132 -20.8542 11.2477 0.8829491 -20.2297 11.4895 1.65053 -19.4965 10.8208 1.79923 -18.6507 11.2438 1.4626 -18.8012 11.9211 0.8459591 -19.6841 12.1405 0.5081671 -20.1391 12.9553 0.6409621 -20.1188 13.7518 1.2459 -19.0931 13.7556 1.22308 -18.111 13.8652 1.54791 -18.2907 14.8398 1.94268 -19.0612 15.4278 1.8828 -19.542 15.6949 1.01623 -20.1833 14.9839 1.16266 -20.8278 14.8256 1.80946 -21.7042 15.0712 1.45151 -21.7518 15.0343 0.4573561 -21.2337 14.2312 0.4859511 -21.2235 13.2037 0.4695251 -21.9181 13.1492 1.23175 -22.4505 12.5571 0.6686281 -23.0104 11.769 0.4971351 -23.604 12.4656 0.9777411 -24.1728 12.9413 1.61808 -24.2309 13.6862 2.30331 -24.5871 13.9818 3.20195 -23.7474 13.6092 3.51391 -22.7911 13.8802 3.1566 -23.3086 14.5919 3.7603 -23.4456 14.8848 4.68362 -24.0134 15.7255 4.3986 -24.739 15.9593 5.09366 -25.6199 15.9586 5.59117 -26.4867 16.4701 5.69702 -25.9745 17.2253 6.10472 -25.052 17.495 6.33429 -24.42 17.5964 7.1942 -23.4809 17.5308 7.32158 -23.53 16.8682 8.05263 -22.5875 17.1398 7.76847 -22.5851 17.0679 6.74141 -22.4541 16.1239 7.00516 -22.5491 15.5554 6.16521 -23.2498 15.7127 5.40227 -22.6058 16.3792 4.92296 -22.2351 15.3963 4.87872 -21.4333 15.7741 4.34147 -20.6886 16.3486 4.7736 -21.0253 17.2513 4.94365 -21.8528 17.7489 4.74951 -21.8959 18.6769 4.69453 -21.5688 18.4512 3.7256 -20.9137 19.1892 3.61619 -21.7735 19.6694 3.6934 -22.6837 19.8258 3.62277 -22.836 20.3571 4.43613 -22.1342 20.9129 3.93374 -22.0524 21.0109 2.97994 -21.9712 21.1969 2.01137 -21.4378 20.7934 1.30135 -21.8945 20.6259 0.4796241 -21.6901 21.4712 -0.03427968 -21.4845 22.4161 -0.3104359 -22.3573 22.795 -0.1601949 -22.9756 22.1399 -0.6783019 -23.0999 22.8405 -1.34395 -22.1818 23.0551 -1.67556 -22.3831 23.8732 -2.11899 -23.1976 24.2478 -1.57673 -23.9153 24.9201 -1.33239 -24.8165 25.0377 -1.74666 -24.5308 25.7968 -1.144 -25.2196 25.398 -0.6070619 -24.4814 25.4123 0.02967192 -24.1316 26.3323 0.2203381 -23.2603 25.9454 0.5794341 -22.9093 25.6753 1.49694 -22.5593 25.2528 2.34468 -23.2298 24.7415 1.70307 -22.8648 23.8003 1.71589 -23.0556 22.8493 2.07886 -22.1803 22.4252 2.44282 -22.2505 23.1268 3.10623 -22.2829 24.1512 3.22282 -21.397 24.2978 2.87728 -20.4205 24.2204 2.73712 -20.1535 24.2774 3.73494 -19.9836 25.2513 4.03763 -20.1195 26.1773 3.71095 -19.5197 25.7365 3.02782 -19.1462 24.8994 2.90809 -18.7228 25.6479 2.3805 -18.0568 24.9101 2.69786 -17.9868 25.1812 1.71498 -17.7721 24.1912 1.45628 -18.361 23.4131 1.68515 -18.4044 22.4433 1.60029 -18.3353 21.8098 0.8154091 -17.326 22.0334 0.7732691 -16.6175 22.6318 1.0048 -16.4335 21.7112 1.42809 -16.0727 20.9185 0.9468671 -16.4107 19.9476 0.8346731 -15.7719 19.2268 0.4178701 -14.9263 19.3069 -0.1678999 -14.3415 18.5616 0.1150741 -13.605 18.304 -0.4823169 -13.8873 17.4744 -0.00738133 -13.6915 16.7923 0.6042921 -12.7731 17.0614 0.9932641 -12.2903 16.2417 0.6421881 -12.0927 15.2946 0.5951981 -12.49 15.1616 -0.3047689 -12.737 14.3118 0.05654222 -13.4308 14.308 0.7174301 -12.9143 14.2403 1.55483 -12.9107 14.0552 2.61777 -12.6939 15.0965 2.6158 -12.0773 14.467 2.07106 -11.5082 14.4411 2.93918 -11.6668 14.9643 3.75346 -11.6226 14.1867 4.39945 -10.8894 14.775 4.70646 -10.237 14.4359 5.34799 -10.218 13.5806 5.89129 -10.0359 12.7892 6.5403 -11.0033 12.4858 6.26353 -11.7166 12.2512 5.62873 -11.4339 12.4737 4.73781 -10.5895 12.9901 4.51369 -10.1087 12.3773 5.11815 -10.7193 11.8375 4.60009 -11.031 11.2296 3.843 -10.6157 10.3937 4.33302 -9.83171 9.75211 4.3179 -9.23529 10.494 3.98016 -8.55776 9.7713 3.92378 -8.73709 8.75911 4.07108 -8.01575 8.42624 4.69319 -7.1265 8.80792 4.41963 -6.90953 9.59377 5.01568 -7.57494 9.59416 5.77655 -7.94036 8.71396 6.0662 -8.05325 7.80121 6.60546 -7.13438 7.83476 6.95708 -6.63385 8.77241 6.8441 -6.27098 9.65062 7.13736 -6.13892 9.49476 6.14148 -5.99662 8.64951 5.59119 -6.84881 8.24707 5.88288 -6.16506 7.47521 5.97951 -5.53681 6.78887 6.26802 -4.76232 7.4738 6.45005 -3.98062 7.49872 6.99309 -3.31195 7.33958 7.70473 -2.51953 7.90087 7.99197 -3.26937 8.494 7.54402 -3.74833 9.36155 7.82883 -3.50817 10.3049 7.52921 -3.03606 11.247 7.3683 -2.42688 10.6312 6.88268 -2.75248 9.81497 6.3768 -2.60684 8.93079 6.8309 -2.0037 8.83472 7.64212 -1.78714 8.25119 6.87654 -0.868598 7.88535 6.68917 -1.27709 7.0139 6.99476 -1.00793 6.09727 7.34726 -1.93527 5.77782 7.57445 -2.6343 5.7293 6.80865 -3.53668 6.13661 6.78376 -4.50366 6.19913 6.4034 -4.45561 5.48432 5.66446 -3.96652 4.81407 6.17547 -4.37219 5.17733 7.02865 -4.47626 5.5977 7.91583 -5.06821 6.04476 8.60498 -5.491 6.52278 7.91347 -4.98385 7.00826 8.66891 -4.15387 7.52024 8.77767 -4.92482 8.04817 8.38084 -4.12989 8.65397 8.35699 -3.84828 9.43661 8.87552 -3.09814 8.8254 8.7384 -2.62569 9.45205 9.24425 -3.20201 9.38608 10.03 -3.1734 10.4537 9.75703 -3.98465 10.7421 9.29796 -4.6038 11.2824 9.8799 -4.12139 11.364 10.6734 -4.90659 10.7469 10.9407 -5.51135 9.98246 10.9756 -4.93442 9.77248 11.7305 -3.96954 9.55338 12.0828 -3.79898 9.29993 11.1576 -2.94973 8.9619 10.8708 -2.96023 8.20614 11.5469 -3.26781 7.26163 11.7039 -2.72268 7.05578 10.8985 -3.17516 6.28978 10.3613 -2.56804 6.62478 9.7415 -1.63236 6.61236 9.64541 -1.12226 6.56887 10.464 -0.797599 5.63455 10.403 -1.58022 4.95104 10.3403 -2.40044 5.39649 9.98301 -3.27995 4.83385 10.1986 -3.71256 5.50534 9.57017 -3.05566 4.96436 8.94244 -3.23572 5.27121 7.96491 -2.65096 4.63996 7.38074 -2.13756 3.80626 7.34608 -2.12614 3.04324 7.93941 -2.53576 2.87028 8.75503 -3.32842 3.41533 8.43991 -3.38598 3.66134 9.4431 -4.30666 3.31262 9.61981 -5.13849 3.54554 10.1357 -4.7992 4.41348 9.89789 -5.63447 4.85191 10.0789 -6.53464 4.6311 10.5021 -6.72275 4.37977 11.4288 -7.21665 5.0331 12.023 -8.11875 4.85646 11.594 -8.76973 5.43733 11.0629 -8.84879 6.22261 10.3385 -9.0282 6.9197 11.0575 -8.98307 6.39074 11.8125 -9.10851 6.21672 12.7943 -10.0203 6.64803 12.7032 -10.1379 7.13146 11.8328 -9.68193 7.91019 12.2115 -9.05234 8.53387 12.6933 -9.80147 9.00356 13.0332 -9.6778 9.0339 14.018 -9.86988 9.95808 14.2255 -10.7398 9.79937 13.9447 -11.5568 10.0001 14.5653 -11.1482 9.70825 15.4308 -10.9026 8.86274 14.9398 -11.1903 8.59917 15.9267 -10.7091 8.87605 16.6999 -11.2707 9.68064 16.7932 -12.1863 9.46684 16.9979 -11.9522 8.79867 17.6528 -12.8764 8.41306 17.5683 -13.6939 8.07634 17.9754 -14.3114 7.66873 18.6359 -15.2697 7.75782 18.9588 -15.4226 6.8317 18.5942 -15.7927 7.05579 19.4409 -15.8132 6.02053 19.1755 -15.6543 5.11758 18.6862 -16.4955 5.58254 18.5276 -16.5427 4.73557 17.9892 -16.2005 4.9327 17.0233 -16.1428 5.93273 16.7782 -16.75 6.24747 16.0114 -17.3069 6.36198 16.7632 -17.0843 7.19844 17.2178 -17.5655 7.96983 16.7573 -17.3143 8.85799 16.4044 -17.254 9.16149 17.3688 -16.9616 10.1083 17.7727 -16.7714 11.0837 17.9692 -16.1607 11.8667 18.1076 -15.3684 11.8568 18.7631 -15.9883 12.5998 18.991 -16.1234 12.8239 19.9086 -16.4647 12.8113 20.8372 -17.3061 12.4818 21.2563 -18.2083 12.454 20.9484 -19.2468 12.4562 21.1943 -19.7208 12.9756 21.9888 -20.2188 13.6788 22.5104 -20.4678 13.9971 21.6992 -19.9477 14.5595 21.0598 -20.3416 15.4935 20.9322 -19.9977 16.2078 20.364 -19.7911 16.313 21.3535 -18.9482 16.5552 20.7772 -18.1541 17.062 20.4941 -17.7495 17.3089 21.3314 -17.9593 18.101 21.9479 -18.1293 18.9222 22.481 -17.5945 19.808 22.3245 -18.0381 19.897 21.4452 -18.9293 19.4864 21.4794 -18.3059 19.3118 20.6875 -17.5189 19.4684 20.0598 -16.9257 19.501 19.2481 -16.3225 19.4035 18.4894 -16.5069 18.8443 17.687 -16.2796 17.8984 17.8835 -15.625 17.5118 17.1539 -15.5216 17.6829 16.1964 -15.3925 18.5954 15.8739 -15.0188 18.7318 16.8361 -14.3667 18.5062 16.099 -14.603 17.5967 15.7298 -13.6882 17.5014 15.492 -13.4781 17.2537 16.4252 -12.6576 17.8291 16.1227 -12.3499 17.3618 15.2685 -12.0101 16.5625 14.6911 -11.3373 15.9909 14.241 -11.186 15.0221 14.5238 -10.6156 14.2033 14.9464 -11.0084 13.3714 15.3326 -11.1171 12.5098 15.7421 -12.0899 12.6282 15.9472 -11.581 12.168 16.7489 -12.3511 11.8696 17.2488 -12.5318 12.3984 18.0429 -12.2291 12.6946 18.8684 -13.0153 13.2932 18.7989 -13.0916 13.5987 17.883 -12.8455 13.9076 16.9456 -12.0766 14.5127 17.0863 -11.8333 15.436 16.8775 -11.5649 16.0673 16.1249 -10.6416 15.9839 15.7936 -10.5534 16.6649 14.9875 -10.2334 16.4984 14.0952 -9.43961 15.9715 14.0547 -9.03355 15.8831 14.9381 -8.22201 15.4358 15.2748 -8.93338 14.954 15.7729 -8.97116 14.1353 15.2066 -9.4304 13.4775 15.7705 -8.90888 12.7052 15.5914 -8.30252 12.1169 15.1733 -7.35616 12.2006 15.4951 -6.58465 12.371 14.7728 -5.87971 11.6029 14.7993 -5.56158 10.6288 14.8947 -5.22668 11.0071 15.8069 -5.24141 9.98661 15.8459 -4.53885 9.37228 15.5816 -5.2051 9.13809 14.8058 -5.68299 9.20383 13.8818 -4.96363 8.68393 13.4792 -4.38355 7.89028 13.8245 -4.01211 7.13703 14.4879 -5.02717 7.11315 14.7406 -5.03486 6.57089 15.6559 -5.14786 5.71738 16.1433 -6.09961 6.03044 16.3463 -7.15589 6.05464 16.2717 -6.82647 6.81649 15.7113 -6.85893 7.46927 16.4647 -7.53272 7.97598 15.9967 -7.05816 7.87261 15.1254 -7.20985 8.47085 14.2821 -7.09502 9.14347 13.5156 -6.72613 8.48356 12.7501 -5.83874 8.42665 12.3118 -5.58601 8.74206 11.4499 -6.39839 9.35529 11.6589 -6.45003 10.3546 11.8319 -7.16795 11.0069 12.0758 -8.1168 11.2474 11.9593 -8.93326 10.6755 12.1198 -9.82558 11.2901 12.2002 -9.4204 11.7199 12.9774 -8.84002 10.8908 13.2842 -8.35334 10.3267 14.0109 -8.59387 10.4222 14.9361 -8.12856 9.59212 15.5564 -8.09146 9.06246 16.3807 -7.369 9.11843 17.1396 -6.72394 9.842 16.8317 -7.38222 10.2466 17.4243 -8.15515 10.3872 18.2317 -7.609 10.4469 18.9628 -7.58746 11.4051 19.1349 -8.53999 11.0589 19.3986 -8.53751 11.8972 18.8618 -8.86765 11.2472 18.2036 -9.04537 12.1824 17.9823 -9.89013 12.59 17.79 -10.7737 12.351 18.1789 -11.1201 11.6492 18.7466 -11.7487 11.2196 19.2693 -11.7661 10.2696 19.5344 -12.4996 9.66744 19.3187 -12.0537 9.77547 18.4128 -11.125 9.58933 18.2905 -10.2221 9.93494 17.891 -9.74631 10.1164 18.7655 -9.92477 11.1174 18.9535 -9.96832 12.029 19.3907 -9.48389 11.8199 20.1774 -8.57476 12.1316 20.0813 -8.51922 12.32 21.0354 -8.94754 11.6958 21.6863 -9.15156 11.786 22.6403 -8.16986 12.1177 22.7175 -7.89809 11.4373 23.3854 -8.0464 10.5132 23.2537 -7.97325 9.75229 22.4881 -8.19001 8.89031 21.9295 -9.13494 8.5262 21.8334 -10.0297 8.24878 21.9638 -10.2469 8.64931 22.8821 -9.37659 9.24143 23.101 -8.97993 8.561 23.6335 -9.05187 7.57281 23.5878 -8.14791 7.83222 23.9107 -7.4094 7.1732 24.0507 -6.45317 7.01045 24.0523 -6.10162 6.87344 24.9734 -6.58757 7.70149 25.3145 -7.4773 7.19742 25.4946 -7.12085 6.63329 26.2315 -7.4712 6.10311 26.9706 -8.42696 6.21189 27.0749 -8.48961 5.59768 26.3046 -9.38662 5.63683 25.8297 -9.12483 6.52001 25.4367 -9.37515 6.58717 26.3808 -9.57113 6.45104 27.3636 -8.87925 6.09017 28.0477 -9.13527 6.25604 28.9665 -9.45151 7.23862 28.9577 -9.65053 7.829 29.8291 -10.595 8.08736 29.6826 -10.677 8.93814 29.2567 -11.6349 9.11414 29.2177 -12.5069 8.83213 29.2888 -12.7623 8.0901 28.6803 -13.4103 8.00754 27.8694 -14.2206 7.83671 27.4408 -14.456 8.29833 26.6035 -14.7915 8.15743 25.6413 -15.8293 8.25021 25.7315 -16.8152 8.33383 25.8756 -16.4593 7.60074 25.2893 -17.3982 7.23634 25.0028 -16.8654 6.48573 25.3629 -17.1596 5.87812 26.077 -17.3661 6.01949 27.0451 -17.8031 6.48879 27.809 -17.414 5.59967 27.9816 -17.8242 4.71532 27.9694 -16.868 4.34483 28.0415 -15.8412 4.36508 27.9261 -16.0715 3.52071 27.4067 -17.0003 3.51808 27.09 -16.8018 2.6507 26.7018 -16.6122 2.72253 25.7225 -16.3459 1.72561 25.4962 -16.0574 1.65358 24.5383 -16.2094 1.18726 23.6466 -15.2165 1.54518 23.5883 -16.016 2.22306 23.5766 -16.2656 2.80695 24.3529 -16.3941 3.82275 24.4749 -17.395 3.7934 24.4429 -17.4663 4.60286 25.0086 -17.4792 5.37478 24.2957 -18.0445 4.98802 23.588 -17.6889 5.27339 22.7855 -16.7774 5.60914 22.5742 -16.3156 6.41509 22.1029 -15.6696 6.95068 22.6502 -14.8383 6.63766 23.1125 -14.4422 6.65109 22.1692 -14.0096 5.74515 22.0908 -14.7007 5.14436 22.511 -13.892 4.59396 22.5682 -13.9217 3.66508 23.0067 -14.5911 3.73498 22.333 -15.1773 2.88778 22.3476 -15.7804 3.45929 21.8987 -15.544 2.67591 21.2655 -14.5891 2.51601 21.4538 -14.8099 3.39992 21.1346 -14.0204 4.09352 21.0343 -13.4154 3.42779 20.5228 -13.5768 3.3206 19.4961 -12.7022 3.37282 18.9646 -12.129 3.80859 19.754 -11.5039 3.80211 20.545 -10.5177 3.64667 20.5645 -10.3122 4.53551 20.0988 -11.0821 4.80585 19.5938 -12.0461 5.00999 19.7545 -12.9282 5.18518 20.2402 -12.1678 5.46142 20.8857 -11.244 5.18679 20.845 -11.0927 5.59451 21.7601 -11.9424 5.47561 22.2453 -12.7584 4.85555 22.2154 -12.9189 5.47694 23.0419 -12.2022 5.75638 23.6755 -12.2494 6.7484 24.0122 -12.7527 5.91169 24.4317 -12.5469 6.04776 25.422 -12.9816 6.93404 25.513 -12.7535 7.87316 25.428 -12.0432 8.64806 25.4068 -12.4789 8.75815 26.2898 -12.297 9.60883 26.6852 -11.9193 10.5865 26.8473 -12.5767 11.0211 27.435 -13.3846 11.0468 26.7426 -14.0195 11.7814 27.1542 -13.5676 12.2683 26.4833 -13.6104 13.1202 27.0715 -13.5978 13.756 26.337 -14.098 13.6652 25.488 -13.2942 13.1782 25.1475 -14.1446 12.6096 25.1651 -14.9882 12.6501 24.7632 -15.5826 11.8557 24.993 -15.0319 10.9931 25.0832 -14.1952 11.2554 24.5913 -13.7741 11.8203 23.8935 -13.8677 12.5961 23.3038 -14.487 11.958 22.8525 -14.009 12.1503 21.9151 -13.1913 12.0692 21.3893 -12.337 11.8077 21.901 -12.3219 10.9203 22.4274 -11.4176 10.8934 22.064 -12.0967 10.7177 21.3677 -12.0724 9.67876 21.5099 -11.9971 9.19848 22.3516 -12.8148 9.71011 22.6171 -12.8217 9.00288 23.3219 -13.4273 8.7256 22.5672 -14.4067 8.55661 22.6469 -14.4981 9.38327 22.0038 -15.3802 8.82435 21.886 -15.8449 9.6161 22.1698 -16.4583 8.98237 21.6848 -17.1391 9.41266 21.0909 -17.4086 10.1934 20.5654 -18.039 10.7312 20.0625 -18.3232 9.85395 19.7043 -18.2668 9.79396 18.7341 -18.8318 8.97354 18.455 -19.2343 8.06916 18.5385 -19.0909 8.61904 19.3783 -18.9705 7.64701 19.7638 -19.5222 7.3597 20.4797 -19.0857 8.26074 20.8193 -18.3797 7.59697 20.5906 -18.4024 7.86092 21.5722 -17.4772 7.64416 21.875 -18.1031 7.82488 22.593 -18.6266 7.67745 23.4318 -19.4556 8.16978 23.6117 -19.7606 7.6273 22.8327 -20.5914 7.28695 22.3927 -21.0231 8.18287 22.4161 -21.7741 7.5324 22.3608 -22.5788 8.0147 22.7516 -23.2345 7.32933 22.4554 -23.0732 7.59519 21.4811 -22.872 8.59167 21.6301 -23.7645 8.60681 21.0869 -24.4555 8.8599 21.7555 -24.1773 8.55294 22.7151 -24.0106 9.5196 22.5149 -23.5124 10.4268 22.6033 -23.8256 10.5151 23.5158 -24.2026 10.0991 24.3368 -23.7821 10.5014 25.1331 -23.1286 11.2417 25.2881 -22.8646 12.1304 24.9832 -22.1333 11.3672 24.9137 -21.4922 10.9533 24.2037 -20.8837 11.499 24.7619 -20.9758 12.0946 23.9584 -20.068 11.839 23.6541 -19.5461 10.9213 23.5441 -19.5828 10.608 22.6493 -20.0219 9.78405 22.9331 -20.7304 10.1336 22.2888 -20.2343 10.1657 21.3704 -20.0963 10.6066 20.4646 -20.7865 10.3598 19.7267 -20.6465 11.3384 19.7834 -21.1554 11.6964 18.9409 -22.041 11.4814 18.5911 -22.1412 11.6938 17.649 -22.5117 12.5239 18.1617 -22.0768 13.2554 18.7114 -22.2944 13.9024 19.4316 -22.1322 14.4535 20.2681 -21.5315 14.13 21.0135 -22.1523 13.8908 21.7333 -21.4496 13.155 21.9829 -21.3336 12.8404 23.0148 -22.2509 12.8955 22.6433 -23.1985 12.9957 22.7062 -23.4671 13.7376 22.1221 -24.3535 14.2705 22.5377 -24.1679 14.2243 21.5137 -23.6853 14.7655 20.7878 -23.5707 15.4894 20.0898 -24.1752 14.8404 19.558 -25.1688 14.7719 19.6453 -25.9091 14.1186 19.79 -26.1756 14.7101 20.5274 -26.4611 15.2822 19.7668 -25.9608 16.2574 19.9325 -25.9955 17.2398 20.1182 -25.1035 17.6644 20.3808 -24.2423 17.1941 20.4092 -23.7836 18.093 20.1157 -24.617 18.6009 19.8733 -24.5662 18.1384 19.0541 -25.2501 18.7265 18.5122 -25.5338 18.5693 17.5808 -24.9974 18.0184 16.9055 -25.7868 18.5188 16.4714 -26.3464 18.2781 15.6333 -27.2651 18.5263 15.9035 -27.3488 17.5531 15.7293 -28.0729 16.9716 15.3887 -28.2321 16.5737 14.4459 -28.9311 15.8246 14.4899 -27.9883 15.4624 14.295 -27.8631 15.1389 13.3716 -27.7967 14.1754 13.3244 -28.2927 13.3183 13.4648 -27.597 13.2045 14.2161 -27.6843 13.9231 14.8043 -27.6693 13.8389 15.7308 -28.5107 13.3534 15.9867 -29.1415 12.7497 15.5877 -29.2829 12.0777 16.3218 -29.643 12.0472 17.2344 -30.4582 11.4762 17.0878 -30.5171 11.0142 16.182 -30.9061 11.7942 15.735 -31.5434 11.4124 15.0459 -31.6827 11.5566 14.074 -32.0381 12.3545 14.612 -32.1144 12.4546 13.6081 -31.7356 12.9726 12.888 -31.2845 13.003 12.0529 -32.1829 13.1169 11.887 -32.4745 13.69 11.1963 -32.6117 14.3796 11.9553 -31.7806 14.8741 12.2875 -30.9466 14.4826 12.0421 -30.0448 14.679 11.6203 -30.7218 14.7424 10.924 -30.6318 15.7587 10.7477 -29.8293 15.4833 10.145 -29.8937 16.2083 9.49561 -29.6214 15.5745 8.70904 -29.3426 15.5579 7.79061 -28.4281 15.3628 7.35388 -28.0886 16.1003 7.90098 -27.7108 15.4833 8.51819 -27.9589 15.1407 9.45728 -27.7753 14.4208 8.76483 -26.9919 13.8572 9.02829 -26.235 13.6961 9.73264 -25.3615 13.9616 10.1709 -25.3262 14.0501 11.1648 -24.786 13.7916 11.9375 -24.7626 14.8017 11.7839 -24.5079 15.4178 12.5428 -25.1695 15.1776 13.1945 -24.4849 14.4087 13.1682 -24.1061 14.1271 14.0861 -23.5057 13.4625 13.6537 -22.5554 13.689 13.4128 -22.4657 13.3749 12.4328 -22.9033 12.4873 12.8132 -22.9282 11.7236 13.5 -23.6789 11.1516 13.7968 -24.5005 11.0648 13.321 -23.8404 10.515 12.8319 -24.8031 10.2008 12.6798 -25.2833 10.8369 12.0532 -25.5789 11.7192 12.2712 -26.0547 11.6914 11.4636 -26.761 10.9773 11.2624 -26.6738 11.0808 12.2639 -27.1589 11.9669 12.2545 -28.0654 11.5692 12.1202 -28.0069 10.6684 12.4745 -27.7221 10.0971 11.6886 -27.2881 9.97827 12.5134 -27.0452 9.07285 12.055 -26.6665 9.20316 11.1773 -25.802 9.48018 10.8173 -25.0645 9.48338 10.2321 -24.9972 8.42864 10.2644 -25.0117 7.75715 11.0719 -25.7097 7.06637 10.7968 -25.776 7.46892 9.9335 -26.5535 8.14933 9.73523 -27.0069 8.17633 8.87412 -27.7869 7.585 9.02278 -27.9851 7.26817 9.98172 -28.3687 6.40915 10.3969 -28.598 6.23203 9.43955 -27.7752 5.63773 9.23617 -27.4015 6.08094 8.4251 -26.7117 5.60615 8.8303 -26.6316 5.21072 9.7514 -27.3464 4.64616 10.2678 -27.6676 4.36621 11.1734 -28.0981 4.4503 12.0524 -28.2838 5.29675 12.5024 -28.4826 5.85325 11.729 -28.8558 6.52358 12.3898 -29.8578 6.48325 12.4002 -29.9573 6.418 11.4378 -30.6093 5.96827 10.8221 -30.9723 5.48923 11.6814 -31.3339 5.13753 10.8228 -31.7401 4.8307 11.6634 -31.8002 4.51898 12.5284 -31.4082 3.66438 12.0931 -31.618 2.85125 11.5247 -31.4131 3.70272 10.9482 -31.106 3.60529 9.95626 -31.9102 3.32302 9.45034 -32.6225 2.74056 9.0702 -32.4429 1.80831 8.69111 -32.8304 1.52727 9.63894 -32.2509 0.7173809 9.73735 -32.2618 0.3755089 10.655 -32.4799 0.8727249 11.4647 -32.9921 1.32456 12.238 -32.7123 0.6962269 12.9227 -32.3654 -0.04575347 12.4784 -31.9311 -0.5688191 11.824 -32.4652 -0.5718451 10.9862 -32.7032 -1.22649 11.6997 -33.2921 -1.16322 12.4758 -32.5251 -1.55948 13.0232 -32.2727 -2.01543 13.8522 -31.5645 -2.50082 13.2842 -30.633 -2.63344 13.1256 -29.7153 -2.22651 12.9456 -29.3037 -3.01896 13.3582 -28.7665 -3.83535 13.7535 -28.9684 -3.13118 14.4203 -29.5225 -2.69218 15.1858 -30.0191 -1.88401 15.4541 -30.2574 -0.9183961 15.4671 -29.5799 -0.5191901 14.7901 -28.6234 -0.2231821 14.6062 -28.8819 -0.8168271 13.8588 -29.0384 -1.76169 14.183 -28.1278 -2.04136 13.7886 -27.2548 -2.15856 14.159 -27.6236 -1.42569 14.7849 -27.7361 -2.40069 15.178 -27.811 -1.88725 16.011 -27.7367 -1.28914 16.8692 -28.6775 -1.35889 17.003 -28.6251 -0.9200751 17.9543 -29.4162 -0.2614701 18.0738 -29.1151 0.7124329 18.1459 -29.8238 1.1205 18.7163 -30.7771 1.34721 18.5598 -30.591 0.6300639 17.9554 -31.0714 1.48413 17.6904 -30.8636 1.44601 16.6687 -30.5548 1.29915 15.6944 -29.8718 1.84738 15.1928 -29.6143 1.35819 14.3262 -29.0461 1.01151 13.5568 -28.5114 0.2082269 13.2592 -27.807 -0.3013751 13.8124 -27.7977 0.6368539 14.2126 -27.2785 0.5029049 15.1558 -27.0757 1.32665 14.5522 -26.8159 2.21731 15.0125 -26.0665 2.6268 14.443 -26.8088 3.17869 14.3151 -27.3168 3.78397 13.7 -27.0437 4.83091 13.7002 -26.4494 5.17594 14.3611 -25.8558 5.59864 15.1806 -25.5385 6.24294 15.8898 -24.9197 6.84144 16.4639 -24.0261 6.83301 16.0658 -24.8387 6.96379 15.4401 -25.091 7.84886 14.9146 -25.4984 8.66506 14.644 -24.9174 8.19028 14.0083 -24.9803 7.46032 13.3722 -24.9383 7.0548 12.4528 -25.1872 6.11485 12.1233 -24.6955 5.69751 12.9231 -24.974 5.10798 13.6718 -24.0912 4.84183 13.1106 -23.6736 5.66753 12.6751 -23.7903 6.66022 12.948 -23.1811 7.41961 13.0216 -22.8521 7.4029 13.9583 -22.9145 8.30941 14.357 -22.0128 8.21525 14.7906 -22.0767 8.59706 15.7661 -21.3705 8.88927 16.2644 -20.638 9.52502 16.5154 -19.9243 9.74341 15.8525 -19.9721 8.764 15.7418 -20.5039 8.31801 15.0143 -20.3204 7.46682 15.5035 -20.6502 7.29978 16.413 -20.1797 6.73823 17.0966 -19.9447 7.39575 17.8123 -20.7815 6.89556 17.8422 -20.5991 6.87648 18.8134 -20.3878 7.70939 19.2939 -20.3395 8.51042 18.6819 -21.3063 8.42672 18.6349 -22.0794 8.97078 18.3558 -22.7403 8.23112 18.2295 -22.5776 7.29831 17.8724 -21.8443 7.60736 17.2412 -22.6244 7.5743 16.6554 -22.6709 6.6474 16.2344 -21.8769 6.25624 16.6963 -21.6411 5.27534 16.4349 -21.4044 4.43869 16.7894 -20.6953 4.90482 17.1906 -19.7261 5.19132 17.0242 -19.125 4.52049 16.5856 -18.4615 4.23502 15.9183 -18.4663 3.29449 16.3488 -17.5473 3.46479 16.6625 -17.5518 2.43721 16.5451 -17.2551 1.99498 15.6895 -16.3002 2.00065 15.797 -16.0232 2.62167 16.4486 -16.7775 3.11226 15.995 -17.6517 3.14156 15.4493 -18.3489 2.42279 15.3454 -18.2752 1.83032 16.1651 -18.8708 1.45866 16.8591 -19.2578 0.5622509 17.0065 -19.1566 -0.4604981 16.6772 -19.9795 -0.7723401 16.145 -20.698 -1.43687 15.8937 -20.9733 -2.31359 16.4188 -20.4155 -2.40506 17.2711 -19.8343 -2.65031 18.0938 -19.0177 -2.09322 17.9989 -18.5928 -2.60087 18.7745 -18.7114 -2.48361 19.7239 -18.3091 -1.64334 19.4843 -18.3239 -1.08719 18.6601 -18.0202 -0.1604821 18.4309 -17.3496 -0.2581241 19.1829 -17.6878 0.6685109 19.084 -17.7321 1.58486 18.7388 -17.0236 1.7248 19.3724 -16.0115 1.63345 19.2339 -15.2573 2.15712 18.8643 -14.9131 2.75575 18.1013 -15.2803 3.66728 18.0768 -15.7718 3.2837 18.8639 -16.3993 3.31698 19.7336 -17.1839 2.98099 19.3106 -17.6599 3.48661 19.9631 -17.4067 3.26691 20.8806 -17.7646 2.82224 21.6513 -17.8814 2.12716 22.4321 -17.0173 2.1713 23.0445 -16.8144 2.83347 22.355 -16.0858 2.14421 22.3465 -16.5431 1.8218 21.6244 -16.7858 1.29133 22.4376 -16.6474 0.5232359 22.9767 -17.1979 -0.2060441 22.5871 -17.7818 -0.7755911 21.9754 -17.1633 -1.03579 21.2835 -16.9347 -1.91556 21.598 -17.6629 -2.55933 21.4431 -18.5033 -1.97609 21.4962 -19.3308 -1.4329 21.3108 -20.2602 -1.46698 21.5975 -21.0765 -1.09231 21.9634 -20.6068 -0.7352471 22.7681 -20.9554 -1.19296 23.5404 -21.1235 -1.79208 24.3595 -21.2277 -2.6375 23.8474 -21.4904 -3.51149 23.4063 -20.9532 -4.3649 23.6543 -19.9084 -4.28474 23.4854 -19.4574 -4.47401 22.5897 -18.5454 -4.07675 22.7384 -18.1012 -3.23911 23.0926 -17.2026 -2.89602 23.1774 -16.6113 -2.7612 22.4307 -16.2315 -3.03952 23.3451 -16.1863 -2.62778 24.2799 -15.6471 -1.85186 24.5237 -15.3467 -0.9407161 24.4315 -14.8039 -0.5984171 23.677 -13.9536 -1.10625 23.7479 -13.6612 -1.97233 24.0728 -12.8536 -1.30111 24.2574 -13.3289 -0.7748881 24.9697 -14.1542 -0.9713251 25.6229 -13.8667 -1.42687 26.4686 -13.1671 -0.7956861 26.4174 -12.9367 -0.4934561 27.3745 -13.6438 0.1397099 27.7149 -14.3599 -0.2063891 27.0974 -15.3496 -0.1084691 27.2634 -15.422 0.8396319 27.5963 -14.937 1.49949 27.0302 -15.3484 2.25432 26.4852 -15.0469 1.64273 25.7484 -14.5475 1.60717 24.7908 -13.6839 1.75413 24.3933 -12.7531 2.11225 24.3443 -12.0674 1.543 23.8684 -11.1555 1.8929 23.9129 -10.8903 0.9235539 24.0911 -10.5263 0.08736733 24.4069 -11.0392 -0.3241311 23.6567 -11.8945 -0.2473151 23.2749 -11.9724 0.01723833 22.3095 -12.4956 -0.8194661 22.1505 -13.3654 -0.5714861 21.7493 -13.8987 -0.08479677 20.9874 -13.992 0.2414319 20.0673 -13.5283 0.4633479 19.1494 -14.4096 0.03766453 19.0357 -14.1331 -0.7515811 19.4427 -13.3657 -1.40975 19.3156 -13.2367 -2.22755 18.746 -13.0963 -2.53942 19.689 -12.3388 -1.91823 19.6792 -12.1644 -2.84389 20.0062 -11.7658 -3.67595 20.0721 -12.5411 -4.19363 19.8568 -12.1506 -5.1891 19.8189 -12.9426 -5.45997 20.391 -12.5486 -6.3307 20.0521 -13.2952 -7.03782 19.7971 -13.0448 -7.53208 20.5997 -12.7839 -7.85449 21.5077 -12.4368 -8.77626 21.6179 -11.7645 -9.38857 21.8113 -11.466 -8.75665 22.5308 -11.2216 -7.90972 22.0624 -10.3419 -7.89423 22.5006 -9.40732 -8.1089 22.1225 -8.59823 -8.60052 21.9083 -8.13365 -8.9282 21.0817 -7.30919 -8.46582 20.8041 -6.68767 -7.82415 21.0558 -5.99098 -7.39027 20.5646 -6.14067 -8.25606 20.0501 -6.74806 -7.42881 19.9457 -7.5829 -7.65114 19.4379 -8.45775 -8.153 19.7189 -8.98295 -7.64388 20.3926 -8.17433 -7.013 20.4065 -8.09817 -7.3859 21.369 -7.49451 -6.6879 21.7915 -7.66291 -5.96774 21.0972 -6.83857 -5.40332 21.1161 -7.02275 -5.86384 20.2325 -6.4266 -6.25879 19.5523 -6.35386 -5.6544 18.782 -5.7076 -5.0502 18.9836 -6.17998 -4.30582 18.73 -7.14455 -4.39324 18.4456 -7.27459 -3.71899 17.7371 -6.9124 -3.36594 16.8486 -7.15069 -2.5768 16.2195 -7.50463 -1.66466 16.2182 -7.41679 -1.11303 15.3769 -7.68179 -0.1339621 15.32 -8.07345 0.6923019 15.7206 -7.23128 1.06244 15.4035 -7.14408 0.9192859 16.3659 -7.49396 1.80651 16.2209 -7.10564 2.44601 15.7041 -6.31987 3.06924 15.6758 -6.0303 3.10895 16.6279 -5.6705 3.94507 16.5099 -5.85497 4.88387 16.7838 -6.78068 4.99966 16.6716 -7.25452 4.15747 16.9231 -7.85243 3.45331 16.5704 -7.71253 3.39124 17.5538 -7.53709 2.61706 18.1913 -7.72496 3.00198 19.0683 -7.79887 2.02667 19.1714 -8.49208 1.4871 19.6708 -8.36159 1.55891 20.6034 -7.8145 0.7649859 20.9665 -6.8725 1.05723 21.2061 -6.20908 1.73362 21.0545 -5.8347 1.45265 21.9507 -5.43262 1.43983 22.8216 -6.08796 0.8774029 23.3744 -5.92931 0.3398649 22.5464 -5.36429 -0.2615721 23.0712 -5.17974 -1.20001 23.3508 -4.59644 -0.6913411 23.9877 -3.87627 -0.8958511 24.714 -3.57755 -0.1080181 25.1875 -3.49747 -0.8075501 25.9553 -4.21256 -1.15924 26.4847 -5.12075 -0.9898461 26.1085 -5.67654 -1.27851 26.9349 -6.23862 -1.99432 26.498 -6.73377 -2.83196 26.6388 -7.48094 -2.9473 26.0023 -7.65608 -1.98608 25.7287 -7.15773 -1.70592 24.8333 -7.62161 -1.27085 24.0622 -7.56162 -1.05121 23.1009 -6.69414 -0.5084451 23.1068 -6.35337 -1.26615 23.7342 -6.87885 -1.81663 22.9786 -6.40093 -2.44779 23.6367 -7.27132 -2.80054 23.2496 -8.02514 -3.41312 23.0356 -7.91844 -3.33761 21.9898 -8.63424 -2.86456 21.5824 -8.35811 -1.85594 21.6243 -7.59766 -1.39384 21.9681 -6.86067 -0.7537931 22.0281 -6.98259 -0.2116561 21.2268 -6.33134 -0.2871981 20.5128 -6.14301 -1.17461 20.0095 -7.20001 -1.05962 20.1519 -7.82257 -1.51866 19.5567 -8.28066 -2.21838 20.0863 -8.43099 -2.41182 19.1248 -9.06977 -1.6573 18.8504 -8.42653 -0.9714001 18.7296 -8.29426 -0.6263861 17.8424 -9.04591 -1.18407 17.3388 -9.61263 -1.20103 16.5206 -10.2753 -1.74154 16.0431 -10.4605 -2.57315 15.5817 -10.6931 -2.61225 16.5945 -9.77276 -2.61722 16.8742 -9.10664 -2.7243 16.1046 -9.08032 -3.52346 15.5337 -10.0451 -3.53114 15.8101 -10.5006 -4.47284 15.6442 -11.5081 -4.37182 15.887 -12.4714 -4.39639 15.7311 -13.013 -5.12665 15.2674 -13.9798 -4.78876 15.3651 -14.403 -5.4444 14.795 -14.24 -6.33479 14.3745 -13.3503 -6.00027 14.0778 -12.5142 -6.21892 14.5734 -11.8196 -6.24665 13.8257 -11.2182 -5.42189 14.103 -12.0959 -4.90054 14.4805 -12.4556 -4.21033 13.8387 -12.8554 -3.59554 13.1401 -12.4454 -4.10371 12.3643 -13.1547 -4.84287 12.5148 -13.8816 -5.49229 12.3638 -13.7241 -6.07333 11.5293 -14.2476 -6.79981 11.8653 -14.4677 -6.7284 12.856 -15.2978 -6.18664 13.1503 -14.8716 -5.27943 13.2733 -15.6174 -4.75357 13.6401 -16.2855 -4.69335 14.3652 -17.1399 -4.69725 13.7677 -18.0438 -4.37945 13.4832 -18.3097 -3.46467 13.8175 -17.6995 -3.13498 13.033 -17.5517 -2.60528 12.2349 -17.0227 -2.04485 11.6376 -17.3595 -1.39337 12.2906 -17.4574 -0.9459261 13.2247 -17.2028 -0.2270731 13.7886 -18.1047 -0.02609297 13.8543 -18.0745 0.02807103 12.8388 -17.5375 0.8129909 13.0154 -17.0034 1.46102 12.4577 -17.5091 2.20978 12.6914 -18.3821 2.57186 12.9633 -18.771 3.50686 13.2122 -17.8124 3.28661 13.5138 -17.8486 4.04853 14.1294 -16.8641 3.67118 13.8566 -16.2959 2.89223 13.4863 -15.7312 2.11705 13.8899 -14.9192 1.56163 13.9391 -15.0185 1.60425 12.9152 -15.0377 2.57532 12.594 -14.6755 2.70387 13.5171 -14.8917 2.76236 14.5173 -15.3862 3.64289 14.4759 -14.7822 4.19256 15.0068 -15.5881 4.80314 14.9911 -15.7974 5.44588 14.2167 -16.7475 5.5232 14.3016 -16.4874 6.12691 13.5056 -15.9885 6.77293 14.1419 -15.4059 6.75193 15.0102 -15.6756 7.71903 15.178 -15.4205 8.77725 15.0957 -16.1157 9.34749 14.6923 -15.6766 10.2323 14.3901 -16.4707 10.5344 13.7578 -16.3756 10.8009 14.7074 -15.9146 10.2444 15.3422 -15.5017 9.91119 16.1619 -14.5155 10.0219 15.9511 -13.7206 10.6986 15.7391 -13.8223 11.2264 16.6386 -14.0267 10.7513 17.5639 -14.625 11.5151 17.7013 -15.3403 12.1559 17.3043 -15.4529 13.073 16.8109 -15.5177 14.0727 16.7895 -16.5148 14.2177 17.1818 -16.0147 14.7441 17.8609 -16.139 15.5013 17.1051 -17.0689 15.7844 16.9837 -17.635 15.2034 17.6882 -18.4948 14.7407 17.4406 -18.8038 15.5021 16.8261 -18.757 15.0965 15.8578 -17.932 14.6551 15.5306 -17.6963 14.0688 14.7946 -17.9455 14.5387 13.9951 -17.9487 15.3255 13.4463 -17.8977 14.6258 12.733 -17.2275 14.1348 12.1206 -16.3371 14.5395 12.3725 -15.4296 14.8042 11.9226 -15.2533 13.982 12.502 -15.5794 13.309 13.1093 -14.5621 13.286 13.1529 -13.7999 12.8733 13.6859 -13.049 12.2501 13.7089 -13.7589 11.5623 13.544 -13.5874 11.9255 12.6375 -13.2762 11.0123 12.3992 -12.6149 11.6658 11.8082 -12.2432 10.7019 12.0759 -11.7083 10.9276 12.8226 -10.8924 11.2952 13.3041 -11.6 11.9095 13.6206 -11.6443 11.0788 14.2031 -10.9854 11.5259 14.7483 -11.0994 12.5012 14.5121 -11.9514 12.9509 14.261 -12.8162 13.4847 14.0428 -12.6957 13.3024 14.9871 -13.6854 13.0686 15.1369 -14.4244 13.3913 14.6769 -15.3142 13.8409 14.7357 -15.4861 14.5841 15.3272 -16.475 14.7416 15.2022 -16.4649 15.1616 16.1065 -16.2243 15.9974 15.6129 -15.3923 15.9487 15.1028 -14.483 15.5423 15.2387 -13.6661 15.5892 14.671 -14.0927 15.2353 13.9017 -13.6469 15.9604 13.3155 -12.9747 16.3915 12.7649 -12.8224 16.1547 11.8153 -12.8219 16.0218 10.815 -13.7252 16.1217 10.4299 -14.6619 16.5295 10.3567 -14.3581 17.463 10.2058 -13.8325 17.2023 11.0875 -14.4991 17.1258 11.8406 -15.2866 16.8565 11.295 -15.2864 15.9323 11.7371 -16.2452 16.3894 11.8105 -16.9695 17.022 12.0102 -16.1996 17.5726 12.2531 -16.1809 17.1405 13.1952 -16.4545 18.0939 13.438 -16.03 18.5861 12.7095 -16.6017 19.0399 12.1635 -16.7842 19.332 11.2239 -16.3131 18.8931 10.4369 -16.8223 18.2996 9.88084 -17.4382 18.4968 9.1722 -17.3506 19.4998 9.00489 -18.2344 19.8665 8.88494 -18.4288 19.6 9.80912 -19.1668 20.2736 9.89006 -19.3947 19.3696 10.3923 -19.0261 18.5265 10.7461 -19.3562 17.8099 10.1494 -18.7329 17.0313 10.1668 -18.5336 16.5454 11.0287 -18.8476 16.1584 11.8839 -18.9873 15.3766 12.4033 -19.9303 15.3134 12.8511 -20.1622 15.7924 13.7522 -20.3819 16.764 13.5707 -20.3135 17.7435 13.2203 -21.1554 17.3668 12.7187 -21.4773 16.8031 13.4755 -21.1308 17.2848 14.3137 -21.0082 17.6015 15.2691 -21.9898 17.6738 15.4 -22.6724 18.2169 14.9811 -23.0393 18.6042 15.9023 -22.2954 19.1662 16.2065 -21.3295 19.4301 15.986 -21.4754 20.3446 16.2555 -22.2826 20.9876 16.2465 -22.9901 21.6448 16.1999 -22.4186 22.409 16.3807 -22.3111 22.2065 17.3643 -21.3078 22.0635 17.3979 -20.7168 22.2917 16.5955 -20.0757 23.1393 16.5682 -20.6021 23.3766 15.6682 -21.2907 23.2212 15.0526 -21.4527 23.0494 14.0534 -21.2031 22.7479 13.114 -20.8891 22.0665 12.4673 -21.003 22.3934 11.4438 -21.9296 22.0218 11.271 -21.7755 22.8674 10.7622 -22.1979 23.6565 10.1577 -21.6368 23.132 9.56656 -21.6017 22.158 9.25279 -20.8751 21.5889 9.0248 -20.6723 21.1861 9.8886 -21.5199 20.8774 10.2643 -22.4274 20.5671 10.5172 -22.2045 19.8366 9.86317 -21.5171 20.2226 9.25974 -21.0336 19.5326 8.75793 -22.0063 19.4362 8.65897 -22.3621 18.901 7.87705 -22.5344 18.2411 7.1336 -22.4731 18.5512 6.20765 -23.0626 19.3795 6.4161 -23.8881 19.2019 5.93872 -24.5048 19.8065 6.50232 -23.8287 20.5659 6.71579 -24.6918 21.0254 6.81089 -24.9741 20.6742 7.69016 -24.6022 20.5034 8.58948 -25.4179 20.1546 9.04365 -25.3062 20.9639 9.69263 -24.8888 21.6591 10.192 -25.2749 21.1434 10.8889 -24.6428 20.4454 10.651 -23.8079 20.0391 10.4152 -24.0629 19.1429 9.98533 -23.9332 18.2254 10.4221 -23.1442 17.7659 9.9879 -22.3307 18.2146 10.2991 -22.987 19.0578 10.4323 -23.1028 18.385 11.1968 -22.2211 18.0042 11.5863 -21.9669 17.0815 11.2047 -21.1516 16.6669 10.8193 -20.4243 17.0261 10.1483 -20.8685 16.3287 9.59375 -20.6551 15.7767 8.78041 -21.0277 14.9284 9.12023 -20.2903 14.3195 9.37903 -20.3929 13.4785 8.88384 -20.7175 13.6374 7.98118 -20.1244 14.0164 7.29026 -19.559 13.5743 6.5547 -18.6524 14.1218 6.44803 -18.9867 14.8943 6.07582 -19.5157 15.8305 6.2228 -19.6263 15.8903 7.22584 -18.6753 16.0159 7.57949 -18.0633 16.0041 6.76496 -17.6519 16.4867 7.52317 -16.9538 15.731 7.30002 -17.4945 15.2585 8.00492 -18.3597 14.7803 8.04276 -17.7633 14.0963 8.53011 -17.5685 13.899 9.58825 -16.7208 13.3519 9.4178 -16.4625 14.3063 9.69108 -15.4673 14.3528 9.83254 -15.2014 13.8555 9.07364 -15.6845 13.8458 8.24886 -15.0611 14.1806 7.51169 -14.7588 14.9564 6.84024 -15.1624 15.7187 7.2821 -14.7554 16.4364 7.79303 -15.2197 17.081 7.15181 -15.4646 17.7063 6.57195 -15.3149 17.919 5.56208 -15.8698 18.6208 5.02944 -16.6744 18.0684 5.1697 -16.8531 19.0408 5.46118 -16.8749 19.9881 5.24392 -15.9892 19.7413 4.98988 -15.5017 20.105 5.77774 -16.2219 19.89 6.41284 -17.1742 19.6734 6.76123 -17.7305 18.8552 6.45816 -18.2116 19.0144 5.64258 -19.0091 18.4102 5.89256 -19.8839 18.5958 5.36507 -19.5244 19.2023 4.74854 -18.6165 18.8041 4.6644 -17.792 19.2578 4.31094 -17.3845 18.3862 4.53743 -18.2219 17.8254 4.70771 -17.5434 17.1645 4.32621 -17.5012 17.0215 5.38492 -16.5634 16.6562 5.33521 -15.6053 16.3395 5.58528 -15.6139 15.3633 5.18566 -15.398 14.442 5.45997 -15.5885 13.8729 4.66391 -16.2434 14.5676 4.27351 -15.3225 14.8393 4.0477 -14.4797 14.3061 4.14991 -14.1845 14.3993 5.11096 -13.6612 15.1935 4.72451 -13.5612 15.9442 4.15077 -14.0864 16.8226 4.12674 -14.6926 16.2967 4.69114 -14.2026 15.9611 5.50192 -14.0166 16.9146 5.44214 -13.9642 17.3213 6.31458 -13.0882 17.8092 6.18386 -13.7892 18.1904 5.50203 -13.0982 17.9219 4.92647 -13.3268 18.6126 4.16664 -12.3689 18.4193 3.88847 -12.6196 18.9107 3.05041 -12.5906 19.4076 2.10114 -12.0424 19.429 1.18129 -11.871 18.4713 1.32918 -12.4666 17.9943 2.05333 -12.0161 17.2156 2.57535 -11.3012 17.8107 2.2617 -10.4496 18.3013 2.35885 -10.3776 17.4481 2.88904 -10.9705 17.0402 3.58335 -11.5962 16.2452 3.489 -11.483 16.2669 4.45819 -11.931 15.6555 5.06229 -12.6526 14.9789 5.33079 -12.0799 15.1275 6.14705 -12.1439 14.1916 6.13907 -12.522 14.667 6.96599 -12.8841 14.5011 7.927 -12.6994 13.5457 7.80812 -12.3322 13.8284 8.68457 -12.7426 13.8183 9.59573 -12.0214 13.2756 10.0035 -11.2505 12.9329 9.55791 -10.8086 12.5733 10.3719 -10.7954 11.8271 11.1073 -11.0625 11.2346 10.3972 -11.2731 11.0786 9.47815 -12.1008 11.41 9.99709 -12.4027 12.1603 9.4229 -13.2517 11.7994 9.7734 -13.5428 12.6247 10.3084 -14.2323 12.0228 10.6596 -15.1582 11.7366 10.9492 -15.5228 11.3262 10.0169 -15.4211 10.3585 10.2133 -15.8885 10.0942 11.0542 -16.5886 10.5255 10.4911 -17.0373 10.0073 9.77018 -17.4404 10.6927 9.1359 -17.8692 9.8623 9.28847 -18.5763 10.2292 8.76274 -18.6042 10.1983 7.73707 -19.0461 11.0258 7.50965 -18.5637 11.905 7.30521 -17.907 11.5724 6.6345 -17.3787 12.4894 6.60868 -16.8263 12.809 5.78249 -15.9046 12.7628 5.96922 -15.5444 12.4975 6.90489 -15.7477 12.4495 7.91157 -14.8843 11.9721 8.21424 -15.3649 11.0636 7.92001 -14.5537 11.0266 8.38458 -13.911 10.3602 7.98426 -14.5215 10.3482 7.20926 -14.2855 10.7313 6.29749 -15.2111 10.3873 5.87935 -14.3701 9.97972 5.50932 -15.1289 9.27891 5.54982 -14.7949 9.18553 4.56881 -13.8455 9.05529 4.24786 -13.4861 9.93024 4.05556 -14.2074 10.5553 4.26958 -15.1695 10.8274 4.12061 -15.7573 10.9734 3.29737 -16.2898 10.3924 2.77087 -16.5215 11.4172 2.58414 -16.8779 12.3559 2.61478 -17.8423 12.3099 2.86551 -18.2308 11.5421 3.3763 -18.7711 11.2786 2.59253 -18.5241 10.5567 3.1778 -17.6402 10.1675 3.29857 -17.9899 9.6455 2.53635 -17.1171 9.31009 2.84637 -17.5084 8.67863 2.14551 -16.7521 8.11107 2.39058 -15.9163 7.8293 1.93882 -16.3946 7.1862 2.62267 -17.3404 6.97117 2.55458 -18.1118 7.4214 2.35014 -18.213 7.12739 3.32134 -17.8082 7.05824 4.17018 -17.0476 7.6385 4.07316 -16.1004 7.79027 4.09454 -15.1658 7.57064 4.13954 -14.506 8.23468 3.86142 -14.296 8.08077 4.81747 -14.5486 8.17906 5.81883 -14.9319 7.25425 5.82935 -15.4664 6.34456 6.02844 -16.1125 5.88293 5.49722 -16.3847 5.58273 4.57015 -15.5125 5.7189 4.13072 -15.7803 6.57176 3.80818 -16.0304 5.86663 3.09623 -16.354 5.36411 2.28634 -15.3338 5.20565 1.96928 -14.8448 6.07287 1.91484 -15.8129 6.33367 1.89842 -16.0444 5.79509 1.08776 -17.0472 5.62599 1.07818 -17.8956 6.01745 0.8630721 -18.6324 5.51386 0.3138321 -17.9136 5.47825 -0.4158689 -18.0723 6.43149 -0.7665279 -18.3554 7.24387 -0.2624609 -17.6132 6.80119 0.1294671 -17.2129 7.69613 0.1396261 -18.0252 8.2951 -0.07826198 -18.6186 8.4138 -0.8051169 -19.5116 8.19277 -0.7060639 -20.4521 8.05294 -0.6483929 -20.0597 7.84971 0.2284561 -19.8416 8.38334 1.05878 -19.2819 8.84825 1.68716 -19.5661 7.89978 1.9004 -19.7917 8.0439 2.86043 -19.6482 9.01398 3.21442 -18.8607 9.14185 3.85663 -18.1944 9.91212 3.94876 -19.0777 10.4014 4.05709 -19.1788 10.731 4.92496 -19.3436 11.51 4.25781 -19.7737 12.4187 4.55798 -19.3215 13.2369 4.95826 -19.8843 13.9997 4.6652 -20.7075 13.9872 4.08675 -20.8062 13.1298 4.51002 -21.5029 12.6408 3.94192 -22.4732 12.8027 4.00894 -22.7031 11.8094 4.18152 -23.5138 12.4212 4.28765 -23.2241 12.3101 5.23429 -23.9429 12.8917 5.61721 -24.5684 13.5807 6.07552 -24.3402 13.1322 6.92012 -23.4316 13.278 6.63948 -22.7182 13.4074 5.85343 -21.8295 13.4832 6.25584 -22.0436 12.6821 5.69023 -22.5927 12.5155 6.50435 -22.7927 12.2074 7.37066 -22.1695 12.546 8.1813 -22.2538 12.8024 9.17371 -21.9004 12.7497 10.0471 -22.3044 11.8989 10.3188 -22.8594 12.3801 11.0917 -22.0699 12.8487 11.156 -21.2527 13.0431 11.6782 -21.1154 13.9304 11.3386 -20.5372 14.0182 12.0985 -19.7068 14.5643 11.9648 -19.7369 15.3716 11.3794 -20.0015 14.5355 10.9069 -19.2966 13.8711 10.5771 -18.4842 14.2468 10.2931 -18.7478 14.2065 11.2661 -18.2032 13.4789 11.8513 -18.6599 13.0624 11.0545 -18.7346 12.57 11.9273 -18.0278 12.0408 12.43 -17.976 12.0392 13.4603 -18.0319 11.445 14.2467 -17.2463 12.049 14.4018 -17.5361 12.1362 15.3963 -17.8653 13.0733 15.4419 -18.5203 12.9425 16.2555 -18.4918 13.3793 17.2141 -19.3637 13.0471 17.4561 -19.9321 13.3232 18.2378 -20.8556 13.5538 18.1943 -20.6015 14.4633 18.4028 -19.6153 14.3467 18.5049 -19.8316 15.245 18.0828 -20.2601 15.7254 18.8136 -20.7808 15.2805 19.526 -21.4825 15.7305 18.9925 -22.2619 15.6653 18.3682 -22.5808 15.2287 17.5642 -21.7484 15.3141 16.9717 -22.273 16.1162 16.8026 -23.0704 16.0782 16.0775 -22.4949 15.6717 15.4303 -23.286 15.0081 15.1313 -23.1355 14.1893 14.5591 -22.256 14.5035 14.1009 -22.0556 15.5063 14.0068 -21.2226 15.0407 14.4041 -21.1227 14.0404 14.4003 -20.3752 14.5059 13.9666 -19.7695 14.755 14.7241 -19.8731 13.9544 15.2835 -19.5242 13.3947 14.672 -19.5863 12.5474 14.0739 -19.7546 11.698 13.6058 -18.969 11.3841 13.0597 -18.6996 10.6514 12.5387 -18.8622 9.67551 12.6989 -18.038 9.24133 12.5955 -18.6392 9.31473 11.7716 -18.6868 8.46287 11.227 -19.2948 8.16612 10.4259 -19.8464 7.77481 11.2132 -20.4819 7.67456 11.9589 -21.0561 7.19721 11.3141 -21.9664 7.0753 11.6683 -22.179 6.0818 11.5034 -21.4304 5.54067 11.1646 -20.7783 5.12166 10.5904 -20.398 4.24892 10.7955 -20.2335 4.10001 11.8253 -20.9272 4.39452 12.4451 -20.7076 5.33998 12.6506 -20.6335 5.06659 13.662 -19.8085 5.32309 14.1373 -19.9625 6.305 14.1019 -20.0946 7.27177 14.1489 -19.624 7.85267 13.4829 -19.6556 8.35495 14.3325 -19.18 7.49653 14.5767 -18.6673 7.35947 13.7655 -18.4031 6.40598 13.9952 -18.3237 6.61867 12.9918 -17.7766 5.70658 13.1411 -17.3905 5.85388 12.216 -17.1913 5.06922 11.6532 -16.9757 4.41974 10.9733 -17.8524 4.83796 10.897 -18.195 5.13896 11.7722 -18.2499 4.35244 12.3649 -18.7167 3.46935 12.1607 -18.2112 2.78193 11.4775 -18.8905 3.27675 10.988 -19.5001 3.19169 10.2264 -19.6799 3.37713 9.28296 -19.2264 3.02744 8.50412 -19.7514 2.41417 7.92111 -20.7727 2.60482 8.03476 -20.8462 2.56871 9.0693 -21.298 1.99271 9.77649 -20.4385 1.60842 9.39709 -21.2976 1.05709 9.21538 -21.0839 1.61691 8.47806 -21.5415 1.86407 7.57895 -22.26 1.27953 7.13544 -23.0025 1.8977 6.8 -22.8722 2.90277 6.94745 -22.5839 3.04646 7.84231 -22.8303 2.43921 8.67593 -22.8686 3.1503 9.40583 -22.1538 3.18751 10.1222 -22.2623 2.37394 10.6621 -21.9513 1.63877 11.2347 -21.3278 1.17209 10.701 -20.6982 0.6090099 11.1874 -20.3548 -0.3121531 10.8289 -20.9036 -0.4925011 9.90508 -20.9484 -0.3618771 8.94589 -21.0168 -1.21154 8.47818 -20.6711 -1.72528 9.27859 -20.4593 -2.68599 8.93689 -21.067 -2.17667 8.30623 -21.5186 -2.98181 8.20403 -22.4589 -2.78401 8.20534 -22.5358 -3.75406 8.29585 -23.364 -3.93231 7.6576 -24.191 -4.4657 7.44335 -24.8769 -3.92756 7.00437 -25.8787 -3.96985 6.93134 -25.7531 -3.29658 7.62221 -25.708 -2.77686 8.4424 -24.8569 -3.02408 8.9801 -25.2622 -3.94354 8.5561 -26.216 -4.24368 8.25607 -26.8575 -4.52807 8.89948 -27.7534 -4.66557 9.30924 -28.1603 -4.84839 10.168 -28.3655 -5.8327 10.0357 -28.7972 -5.90485 9.10794 -29.6565 -6.04956 8.6125 -29.0442 -6.73112 8.2771 -28.7084 -7.35311 9.0786 -27.8271 -7.71089 9.52029 -27.5205 -8.65644 9.4751 -27.9472 -8.93506 10.3241 -28.0913 -9.17991 11.3133 -27.1198 -9.32855 11.1122 -26.6809 -8.76551 11.7431 -26.9527 -8.07701 12.3728 -26.8916 -9.02596 12.8262 -26.0044 -9.44484 13.1125 -25.0083 -9.31367 13.0042 -25.0107 -9.83203 13.8678 -24.2459 -9.37602 14.3134 -23.9267 -10.0762 14.9168 -23.3046 -9.44817 15.3878 -23.9309 -8.65907 15.18 -24.7695 -8.55344 15.8514 -25.736 -8.79718 15.7891 -26.3092 -8.52656 15.049 -26.9609 -9.29796 15.153 -26.2762 -9.90922 15.5983 -26.5549 -10.7917 15.9141 -27.056 -11.2009 16.6682 -26.6309 -10.7269 17.4577 -27.1803 -11.3507 18.1629 -28.0937 -11.2992 18.3899 -28.4096 -10.3546 18.5428 -27.593 -9.73103 18.7169 -26.6303 -10.074 18.6181 -26.0576 -9.31439 18.7435 -25.1427 -9.60854 18.4491 -24.3498 -9.19665 18.824 -24.7083 -9.28456 19.7586 -23.7524 -8.99751 19.757 -23.0134 -9.29806 19.2283 -23.1569 -10.0777 18.6791 -22.5737 -10.4684 19.3813 -21.6931 -10.7288 18.9969 -21.6321 -10.5786 19.9505 -21.9458 -9.66164 20.1215 -20.8998 -9.48542 20.1672 -19.8548 -9.46035 19.8426 -19.1501 -8.79308 19.421 -18.7747 -9.62441 19.8162 -18.1871 -8.9833 20.2435 -18.0983 -7.97738 20.4616 -17.1559 -8.31898 20.6368 -16.3774 -7.97736 20.0721 -16.7115 -7.22429 19.3644 -16.7216 -7.50962 18.3581 -16.9351 -8.34218 18.7308 -17.9254 -8.32598 18.4371 -17.942 -7.33284 18.5897 -18.6277 -6.8125 19.0329 -18.9402 -7.31024 18.2833 -19.7965 -7.466 18.7433 -20.6677 -6.97225 18.4948 -21.4644 -7.30109 18.0263 -22.4525 -7.1368 18.0099 -22.735 -7.6898 18.7856 -23.4882 -7.05732 18.4721 -24.2051 -6.39175 18.8165 -23.6709 -5.83635 19.3963 -24.2576 -5.27224 18.911 -24.5146 -4.43242 18.4615 -25.0901 -4.36481 19.2324 -25.8861 -4.18578 19.7217 -26.756 -4.77062 19.8302 -26.5762 -4.59339 18.9026 -26.321 -3.65699 18.5097 -25.4675 -3.9851 18.1081 -26.003 -4.25226 17.2657 -25.914 -3.40622 16.7261 -25.3386 -2.74685 17.0598 -24.5083 -2.59869 17.628 -24.353 -1.6507 17.7183 -24.5477 -1.25116 16.8366 -24.2624 -0.3554061 17.0724 -24.6049 0.5765039 16.8174 -23.7579 1.18778 16.7854 -22.7308 1.04334 16.7444 -22.3534 0.5301389 17.4521 -22.2394 -0.3968491 17.3389 -21.2361 -0.3002691 17.3099 -21.0356 0.1000309 18.1664 -20.8863 1.09116 18.541 -20.1489 1.6226 18.1068 -20.8444 2.26317 18.3809 -21.8476 2.41441 18.5968 -22.8307 2.35382 18.9504 -23.4938 2.18501 18.2916 -24.0694 2.98942 18.5142 -23.7847 3.87563 18.0593 -24.1429 3.68633 17.1686 -23.3563 3.90903 16.6623 -23.9225 3.61649 15.9081 -23.6866 2.71283 15.6802 -23.9915 2.20917 14.8684 -24.2533 1.25463 14.6507 -24.2083 0.2856159 14.1855 -24.6972 -0.2828801 13.5044 -25.3323 -0.9143561 13.0177 -24.4435 -0.9556241 12.6494 -23.8093 -0.3761921 12.0588 -23.129 -0.09480627 12.7254 -22.3448 -0.03636327 12.2134 -21.8372 0.5727999 12.8023 -21.1964 -0.04394527 13.2661 -20.4183 0.5832549 13.5615 -19.7406 -0.1338651 13.7141 -19.9241 -0.4323101 14.6629 -20.4225 0.4351609 14.5612 -20.7314 0.5690049 15.5011 -20.6412 1.47518 15.93 -19.8008 1.98473 16.1373 -20.12 2.722 15.4771 -20.8411 2.67032 14.8827 -21.1521 2.62051 13.9107 -22.1759 2.75629 13.7956 -22.5263 3.72773 13.7558 -22.3387 4.57346 13.2673 -22.4909 4.81634 12.3019 -22.6659 4.19512 11.4962 -22.8384 3.48662 12.1904 -23.2497 2.58777 11.9972 -24.106 2.28111 12.3236 -24.4148 3.13376 12.7295 -24.6359 3.35353 13.7121 -25.3989 2.83401 13.281 -26.0857 2.99295 12.596 -26.0085 3.71373 11.9288 -26.0111 3.59452 10.9443 -25.4977 4.36156 10.5891 -24.7839 4.61631 11.2226 -24.4542 5.34458 10.5669 -24.5491 6.31787 10.2846 -24.6429 7.15676 9.71315 -24.1171 6.99247 8.87375 -24.5135 6.08176 9.1085 -24.1089 5.24644 8.63671 -24.126 5.01816 9.55213 -23.1783 4.65669 9.32927 -23.2772 4.37954 8.37432 -22.4755 4.69568 7.90092 -21.5543 4.26141 8.14256 -21.357 5.17534 7.67798 -21.9556 4.61231 7.11575 -21.5202 5.21756 6.4731 -21.1163 5.72286 5.65908 -20.7901 4.72159 5.52383 -20.0561 5.27122 5.96658 -19.5905 4.36422 5.98738 -18.8925 3.84776 6.55668 -18.9182 3.5126 7.50986 -18.6683 2.66586 7.0389 -18.4012 1.72606 6.83764 -19.2921 1.38547 7.10959 -18.6182 0.6295859 7.37568 -17.7381 0.3282519 7.53544 -16.9553 0.7679439 7.8646 -16.491 -0.1432011 7.92852 -16.529 0.03088953 6.88224 -17.1485 -0.6717561 6.4172 -16.2144 -0.4994131 6.10366 -16.4191 -0.9401671 5.27855 -16.7548 0.05541173 5.14545 -17.2969 0.6542919 5.78616 -16.6702 1.31775 6.06899 -16.7346 2.20423 5.71487 -17.118 2.84101 5.11831 -17.982 2.48739 5.07126 -18.168 1.68814 4.48709 -18.5423 2.17525 3.66616 -18.084 1.32794 3.38319 -18.0979 1.94762 2.6148 -17.4737 2.69719 2.92886 -17.0152 2.81961 3.79571 -17.5337 3.62875 3.63002 -16.8636 3.99115 2.94544 -16.2617 4.0202 3.7301 -15.9384 4.2905 4.70389 -16.5576 3.74767 5.176 -16.0472 3.0774 4.61321 -15.2447 3.34009 5.1408 -14.5646 3.18019 4.35178 -14.3574 3.87379 3.6505 -15.2052 4.34879 3.59691 -15.5249 3.5713 3.042 -15.1947 2.8446 2.49848 -15.181 3.61409 1.79882 -16.1282 3.80306 1.58571 -17.0061 3.87741 1.11396 -17.8004 4.30974 0.8464351 -18.0316 3.92305 -0.04146558 -17.5464 4.30734 -0.7790049 -17.6257 4.84049 -1.61252 -18.4279 4.68408 -1.02274 -18.8666 4.01016 -1.66149 -18.5236 4.4945 -2.36173 -17.9874 4.10445 -3.12617 -17.1884 4.55622 -3.41212 -17.1921 3.62219 -3.7827 -17.8373 3.14204 -4.45023 -18.6435 2.78035 -3.90193 -18.3533 2.59882 -2.99558 -18.2102 2.24571 -2.05646 -18.5831 1.39776 -1.58487 -18.6608 0.7311069 -2.22397 -19.5718 0.2995869 -2.03733 -19.7881 -0.5598691 -1.59136 -18.7718 -0.4852421 -1.63809 -18.2818 -1.29094 -1.24784 -18.5468 -2.03073 -1.83792 -17.6713 -1.65228 -1.9469 -16.9077 -1.4301 -2.57807 -16.1369 -1.66781 -3.09849 -15.8229 -0.8544261 -2.70826 -15.6489 -0.1632041 -1.96239 -14.8938 -0.2436231 -2.63166 -14.6191 -0.9791421 -3.24923 -14.0702 -0.6992321 -4.04612 -13.1882 -1.13551 -3.70727 -13.6023 -2.00409 -3.5806 -13.8631 -2.86247 -3.21928 -13.8704 -3.29267 -4.08488 -13.9131 -3.7108 -5.0374 -14.7521 -3.96765 -4.52881 -14.4687 -4.52005 -3.80194 -14.4677 -5.04383 -2.95204 -14.9267 -5.02814 -2.11171 -14.4403 -5.24038 -1.26444 -13.8341 -4.8443 -1.96436 -13.6093 -4.32059 -1.10751 -13.0657 -3.80346 -0.4171149 -12.4482 -3.58222 0.4058601 -11.6861 -3.83456 -0.1792279 -10.8145 -3.66754 0.2613781 -10.7913 -2.9544 0.9450551 -10.546 -2.00278 0.7589961 -9.92685 -2.1163 1.52118 -9.66215 -2.64755 0.6709331 -9.62183 -3.32867 -0.03365398 -8.94502 -3.86919 -0.4797269 -9.56917 -4.70117 -0.4249999 -10.0272 -4.64316 0.4623261 -10.1314 -4.44678 1.43843 -10.2863 -4.99697 2.26067 -9.61917 -5.69568 1.88521 -9.17893 -6.41581 1.30033 -8.52127 -5.65002 1.17264 -8.40721 -5.22422 2.12406 -7.72496 -4.48015 2.41244 -7.00819 -3.96508 2.72308 -6.4615 -3.38729 3.25413 -5.82997 -3.50201 4.01959 -5.2882 -4.18131 3.56289 -5.63704 -5.08939 3.59089 -6.60332 -5.07577 3.9497 -7.41771 -5.24707 3.44874 -7.09469 -6.06525 3.85836 -6.62923 -6.27142 2.91488 -7.45626 -6.65178 2.40383 -8.38859 -7.01954 2.8063 -9.37172 -6.77611 3.01545 -9.92293 -7.47324 2.63004 -10.5214 -8.28603 2.74904 -9.95689 -9.15912 2.79169 -9.35864 -8.38444 2.86694 -9.52663 -8.95596 3.6463 -9.76081 -8.13024 4.20131 -10.2249 -7.40606 4.61032 -10.9593 -7.29482 5.20935 -11.784 -7.81429 4.90053 -12.5144 -8.25436 4.3606 -12.3263 -8.25922 3.30985 -12.1841 -9.21251 3.60666 -12.1552 -9.67441 4.40139 -11.8877 -10.5227 4.80527 -10.9798 -10.0659 4.95835 -11.0864 -9.4642 5.7241 -11.0005 -8.90728 6.61091 -11.2028 -9.38213 7.44696 -11.4668 -10.3909 7.56265 -12.3829 -10.1545 7.78831 -13.3312 -10.0689 7.45692 -12.6401 -9.53514 6.94785 -12.5548 -8.58918 7.17798 -13.1472 -8.12698 7.81624 -13.1834 -8.75206 8.54831 -14.1576 -8.84908 8.58651 -14.0259 -8.63429 9.56395 -14.3016 -8.59096 10.5417 -14.1278 -8.24814 11.4399 -14.885 -8.84095 11.2531 -15.3957 -8.37564 11.9097 -15.2077 -7.416 11.8338 -15.5989 -6.47061 12.0808 -15.3447 -5.53915 12.0954 -16.1733 -5.10501 12.3195 -16.9419 -5.53537 11.8248 -16.9264 -5.3013 10.8234 -17.5556 -5.80347 10.2906 -18.4449 -5.63805 9.92614 -19.4134 -5.82195 9.91739 -19.3208 -5.74234 8.94243 -18.4716 -5.45484 8.39406 -17.5989 -5.11587 8.03072 -17.7781 -6.08958 8.19957 -17.6953 -6.54515 7.35146 -17.252 -7.27269 7.99022 -17.9202 -8.00877 8.27448 -17.9255 -7.92787 9.26857 -18.8737 -7.97413 8.94183 -19.2519 -8.75248 9.36519 -19.4456 -8.46752 10.3198 -19.7559 -7.8275 11.1423 -20.5286 -7.48481 10.5999 -21.16 -8.20521 10.7983 -21.8478 -8.79569 11.1651 -22.1881 -9.75642 11.0834 -22.551 -10.4307 11.7372 -22.2795 -9.63059 12.2746 -21.9497 -9.62905 13.2803 -22.1233 -10.5899 13.2647 -21.1064 -10.4795 13.3401 -20.1546 -10.2607 13.1135 -19.8611 -11.0319 12.5298 -19.0351 -10.684 12.6462 -18.7512 -9.69964 12.3803 -19.0136 -8.79802 12.6864 -18.2335 -8.86224 12.1572 -17.7059 -8.504 12.9065 -16.9944 -8.68519 12.1964 -16.479 -9.59142 12.1525 -17.1032 -10.1971 11.9705 -16.6993 -10.056 11.0008 -17.2036 -10.3425 10.1139 -16.747 -11.221 9.75749 -16.5855 -11.9522 10.3832 -15.7068 -11.4718 10.312 -14.7848 -11.1441 10.3235 -14.0254 -10.6993 10.7953 -13.8821 -10.901 9.79934 -13.5875 -9.96983 9.76498 -14.5338 -10.081 9.4904 -15.3268 -9.47475 9.7422 -15.5225 -9.10891 8.87092 -16.4547 -8.99993 9.20027 -16.5743 -8.72167 10.198 -15.6227 -8.47545 10.0529 -15.148 -7.66022 10.3072 -15.3591 -7.28015 9.41737 -14.9739 -6.63366 8.7506 -14.6867 -5.6557 8.84822 -15.205 -4.79315 9.00626 -16.0689 -4.38523 8.7097 -16.1528 -5.27022 9.13086 -16.8174 -5.81785 8.59818 -16.492 -5.61505 7.6852 -16.4994 -4.65978 7.2309 -15.7792 -3.95214 7.37348 -16.5103 -3.46907 6.82456 -16.3945 -2.49577 6.80721 -16.4337 -2.12198 7.75948 -17.1704 -1.7393 8.31958 -18.1169 -2.12737 8.35055 -18.8431 -1.98067 7.70293 -19.5573 -2.02583 8.40408 -19.7976 -1.02033 8.60876 -20.2648 -0.7406231 7.72927 -20.0765 -1.59683 7.21793 -20.2141 -2.21748 6.45899 -20.256 -3.19734 6.65182 -20.9306 -2.76241 6.00529 -21.3451 -3.32882 5.20678 -21.9035 -3.95014 5.80716 -21.2152 -4.29003 6.52598 -21.736 -4.95853 5.9 -21.3625 -5.89126 6.1946 -21.3074 -6.06394 5.20278 -20.9948 -6.78329 4.57963 -21.1179 -7.54728 3.87841 -20.7241 -7.69119 2.99596 -21.3608 -8.41895 2.71861 -21.1059 -8.20947 1.7246 -21.9665 -8.54209 1.37786 -21.6559 -7.61949 0.9286551 -21.7768 -6.7471 1.37315 -22.6046 -6.79882 0.8058411 -21.7672 -6.69171 0.2125821 -21.5544 -6.54088 -0.7577079 -22.3285 -6.97684 -1.24761 -23.0253 -7.40464 -1.91518 -22.3341 -7.44831 -2.61601 -22.9223 -6.95156 -3.24137 -23.4027 -6.25434 -2.64341 -23.391 -6.09644 -1.70283 -23.9508 -6.20615 -0.8761359 -24.9834 -6.1078 -0.8400219 -25.2547 -7.03295 -0.9136409 -24.786 -7.05092 -0.09198458 -25.149 -7.73203 0.5641071 -25.9877 -7.65417 1.00865 -26.871 -7.81512 1.40951 -26.7763 -6.88979 1.12459 -27.1336 -6.64432 0.1630551 -26.6866 -7.20391 -0.5158289 -26.7516 -6.69725 -1.41083 -27.4517 -6.1624 -0.9676279 -27.9289 -7.10297 -0.7146419 -28.1323 -7.56895 -1.46938 -27.8468 -6.66871 -1.79824 -28.0947 -6.69959 -2.7563 -27.2235 -6.26286 -2.91482 -26.8746 -7.15835 -3.12634 -26.0425 -7.24218 -3.69557 -26.1472 -6.74923 -4.51859 -26.0954 -6.22472 -5.34343 -25.3895 -5.5432 -4.90346 -24.6543 -4.81782 -4.98752 -24.2901 -4.70177 -4.05983 -24.6837 -3.82935 -3.82615 -25.6016 -3.48303 -3.53388 -25.0594 -2.70644 -3.09642 -24.7134 -1.96145 -2.7228 -24.7817 -2.66865 -1.98985 -24.5285 -1.6685 -1.83998 -24.6411 -0.6691721 -1.99527 -24.657 0.2563699 -2.33502 -23.792 -0.1863201 -2.15793 -23.6631 0.7617449 -2.48527 -23.393 -0.01082957 -3.06198 -22.3877 -0.2866181 -3.01994 -21.4797 -0.5305481 -3.25696 -21.6211 -0.1646271 -4.18978 -21.5455 -0.7555601 -5.01006 -21.7472 -1.75674 -5.155 -20.8955 -2.23818 -4.89781 -20.2315 -2.60419 -4.13322 -20.0959 -1.99518 -3.34606 -19.2674 -1.99787 -3.90795 -18.4911 -2.08374 -3.25869 -18.041 -2.45582 -4.01131 -18.6081 -2.31234 -4.74721 -18.957 -2.0569 -5.59225 -19.6966 -2.39009 -6.16052 -20.3034 -1.84614 -6.70041 -21.0889 -2.49747 -6.71425 -21.1995 -3.14856 -7.52388 -21.8802 -3.53745 -6.92579 -21.1251 -3.9284 -6.51005 -21.429 -4.7645 -6.09475 -20.4397 -5.05995 -6.38966 -20.8551 -5.99014 -6.57822 -21.759 -6.27665 -6.97959 -22.3508 -7.04059 -6.61973 -21.417 -7.48185 -6.82725 -21.3164 -8.42094 -6.8234 -21.3011 -8.95611 -7.67155 -21.8814 -8.30552 -8.01003 -22.7625 -7.97588 -7.67194 -22.9353 -7.4974 -8.49718 -22.4819 -8.12795 -9.13068 -23.3765 -8.60646 -9.26891 -23.479 -8.69273 -8.30887 -23.544 -9.32247 -7.45877 -23.428 -9.42892 -6.48115 -23.0874 -10.3439 -6.65846 -22.9987 -11.1129 -7.37403 -22.9768 -10.2864 -7.81775 -22.1775 -10.317 -8.37624 -22.2652 -9.52933 -9.02032 -21.7135 -9.68697 -9.81553 -20.7304 -9.48614 -9.84884 -19.7573 -9.37231 -9.8692 -18.796 -9.28359 -9.9117 -18.9861 -10.2115 -9.68353 -19.7753 -10.4255 -9.08492 -20.5701 -10.7339 -9.63454 -20.2053 -10.3334 -10.39 -19.3352 -10.8553 -10.6687 -18.7666 -11.0881 -11.5216 -18.3921 -10.25 -11.9594 -18.3739 -9.22883 -11.786 -17.7957 -9.1544 -10.9236 -17.6421 -8.20032 -10.6845 -17.3023 -8.74722 -9.88118 -18.1306 -8.85584 -9.29409 -18.5576 -9.16487 -8.4177 -17.6614 -8.78173 -8.29974 -16.8646 -8.16066 -8.44632 -15.8106 -8.14961 -8.47741 -14.9974 -8.25591 -9.076 -14.4029 -7.54262 -8.6765 -13.7685 -7.00973 -8.07132 -13.1662 -6.16968 -8.14931 -14.1549 -5.98558 -8.15327 -14.8697 -5.34745 -8.34599 -15.7605 -5.38786 -8.88319 -16.318 -5.10461 -8.16469 -15.7286 -5.65552 -7.58069 -16.3998 -6.28118 -7.80955 -17.1394 -7.00076 -7.87616 -17.9579 -7.48586 -7.54744 -18.4704 -6.5651 -7.77456 -18.3785 -6.58857 -8.76891 -18.2207 -6.89925 -9.6292 -17.9063 -7.13457 -10.5099 -17.1472 -7.5748 -10.0168 -16.8444 -6.96938 -10.7676 -16.6841 -7.93569 -11.2557 -15.9679 -7.4911 -10.7023 -15.6153 -8.17576 -11.36 -14.8939 -8.68783 -10.9075 -14.4088 -9.45212 -11.3885 -14.2227 -10.1108 -10.6925 -15.0685 -9.82006 -10.3297 -14.9774 -9.97402 -9.35027 -14.6915 -10.1326 -8.43559 -13.8304 -10.6282 -8.13017 -13.5442 -10.5907 -7.19171 -13.8728 -9.63076 -6.90914 -14.7125 -10.1243 -7.06792 -15.5954 -10.418 -7.45982 -16.3818 -9.76858 -7.46094 -15.8545 -9.79423 -6.60187 -15.7608 -9.25593 -5.75154 -16.0868 -8.49331 -5.30743 -16.1881 -7.46885 -5.35172 -16.9781 -8.01292 -5.14853 -16.7097 -7.13513 -4.68151 -16.5169 -6.43491 -3.98346 -17.3276 -5.92246 -4.20739 -18.1009 -6.22905 -3.64878 -18.6325 -6.84135 -4.17957 -18.6742 -7.82905 -4.0292 -17.7927 -8.04724 -3.56568 -18.0658 -7.46911 -2.83945 -18.9274 -6.91294 -2.60851 -18.7833 -7.6081 -1.90326 -18.5111 -8.23448 -1.14669 -18.9656 -8.24829 -0.2553509 -19.5093 -7.83134 0.4925901 -18.8313 -7.09243 0.5159011 -18.2227 -7.73146 0.6578981 -17.8239 -7.39928 1.51386 -18.6492 -7.92326 1.70251 -18.8199 -7.13032 2.28827 -19.1119 -6.74411 3.09778 -18.1124 -6.98182 3.21772 -18.093 -6.53972 4.07611 -17.8826 -5.55152 3.95393 -17.8578 -4.95806 4.69764 -17.7033 -4.1437 5.36405 -18.3869 -4.30892 6.06878 -19.0243 -3.48429 5.91544 -19.1784 -3.78783 4.95218 -18.6214 -3.77572 4.1725 -18.5924 -3.50396 3.1631 -19.3957 -4.05893 3.48256 -19.4797 -5.02794 3.39611 -19.4837 -5.42554 4.26888 -20.1759 -5.99255 4.72308 -19.6309 -5.34667 5.28917 -20.1929 -5.35215 6.14265 -19.2411 -5.30114 6.28298 -18.5848 -5.96902 6.86338 -18.7682 -6.91889 7.12674 -18.4297 -7.48482 6.35488 -17.4872 -7.93388 6.54116 -18.1375 -8.58743 5.98143 -18.938 -8.91742 6.46279 -19.4228 -9.79183 6.37346 -20.1544 -9.40485 6.91646 -19.7492 -8.5227 7.24438 -19.2252 -7.76647 7.69298 -19.5487 -6.84756 7.97032 -20.1464 -6.20261 7.48492 -21.0282 -6.8377 7.42242 -20.358 -7.21855 6.74877 -20.9892 -7.56282 6.06395 -21.1337 -8.05036 6.94745 -21.0823 -9.04436 6.85972 -21.1518 -9.89983 6.33971 -21.1151 -10.8283 6.66858 -20.5764 -11.0639 5.88796 -19.8294 -11.7305 5.81048 -19.0415 -11.8997 6.39853 -18.7603 -11.5521 5.49658 -18.0694 -12.0078 6.16271 -17.207 -12.1312 6.59847 -16.4614 -12.679 6.20835 -17.3544 -12.9821 5.82982 -17.5822 -13.8648 6.26362 -17.5711 -14.6216 5.70605 -17.5209 -15.224 6.48643 -17.8516 -15.2688 7.44001 -17.2653 -14.4567 7.34538 -16.5432 -13.7846 7.14224 -15.9017 -13.5177 6.41324 -15.4928 -13.3811 5.5374 -14.6698 -13.1157 5.93551 -13.9372 -12.3689 6.02749 -14.1677 -12.2197 5.08345 -14.7104 -11.509 5.6502 -14.6878 -10.7714 4.97807 -14.1547 -10.0261 5.04875 -14.8651 -9.86271 5.7042 -14.0632 -9.34538 6.09293 -14.3729 -10.021 6.78057 -15.1096 -9.99884 7.37646 -15.6746 -10.6568 7.02249 -15.9279 -10.6059 6.06132 -16.4079 -11.4074 5.76273 -16.2654 -10.8469 4.94958 -16.1915 -11.704 4.31425 -16.599 -12.5706 4.51392 -16.8274 -12.1792 3.61445 -15.9975 -12.7584 3.60671 -16.0301 -11.8758 3.07606 -15.6317 -11.8692 2.22853 -16.1856 -12.6577 1.93717 -15.796 -13.3021 1.19873 -15.3748 -13.706 2.02798 -14.4974 -13.4243 2.37818 -14.4269 -13.4892 1.36785 -13.6496 -14.1375 1.36854 -14.0615 -15.013 1.29953 -14.1317 -15.4005 0.3620601 -13.5855 -14.7535 -0.2217859 -13.6058 -13.7922 -0.1469439 -14.0415 -12.8525 -0.01262228 -13.2101 -12.3484 -0.1425779 -12.6013 -12.8521 0.5020671 -12.0452 -12.1303 0.1183821 -11.4829 -12.8778 0.4062601 -11.0044 -13.3143 1.17346 -10.3201 -13.7169 0.5586821 -10.547 -14.246 1.39172 -11.2095 -13.8894 2.0453 -11.9746 -13.313 2.27174 -12.0371 -13.0787 3.26039 -11.7533 -13.899 3.55016 -11.8535 -14.8504 3.44028 -11.9905 -14.7594 2.42351 -11.8866 -15.3083 1.54132 -12.2134 -15.0748 0.6195121 -11.2819 -14.8978 0.1642661 -12.0992 -15.1222 -0.4202699 -12.6321 -14.431 -0.9589949 -12.9544 -13.5229 -1.01692 -13.2658 -12.6284 -1.41594 -12.3869 -12.2775 -1.64752 -12.1595 -12.9521 -2.31651 -11.3085 -13.2876 -2.71296 -10.9376 -12.2956 -2.71275 -10.1703 -12.4505 -3.273 -10.3531 -13.3887 -3.66699 -9.55004 -13.0143 -4.16153 -9.37126 -12.613 -5.13707 -8.6012 -12.7021 -4.48669 -8.33501 -12.2441 -5.30837 -8.37652 -12.6021 -6.24236 -7.4953 -12.3575 -6.64132 -6.55296 -12.8129 -6.71304 -5.5858 -13.0912 -6.95755 -5.23333 -13.2836 -7.86611 -5.56932 -12.512 -8.40397 -5.73283 -11.9641 -9.24702 -4.97546 -11.5979 -9.70485 -4.17229 -11.1222 -9.34746 -4.51117 -10.8005 -8.42358 -5.08643 -10.2976 -7.81421 -4.80887 -11.0737 -7.22259 -5.80377 -11.1639 -7.36302 -6.65575 -11.512 -7.89543 -7.03968 -11.9291 -8.7375 -7.23371 -10.9511 -8.84002 -7.09943 -10.7708 -9.77572 -6.88196 -10.9962 -10.7237 -6.22254 -11.3629 -11.366 -5.67575 -10.906 -12.0324 -4.95089 -11.1826 -12.6584 -5.41955 -11.7045 -13.3724 -6.12384 -10.9987 -13.652 -5.98712 -10.396 -14.4148 -5.38659 -9.80669 -13.7759 -5.83754 -8.92129 -13.7728 -5.18476 -8.13768 -13.9299 -4.97499 -7.37939 -14.4223 -5.79436 -7.0227 -14.813 -6.09834 -7.79915 -14.3077 -6.57475 -8.38309 -14.9322 -6.83516 -8.26762 -15.8374 -6.61906 -9.23111 -15.543 -7.48016 -9.3018 -16.111 -8.10643 -9.66531 -16.7786 -8.60613 -9.92333 -17.6252 -7.84103 -9.72727 -18.3496 -7.33405 -10.4729 -18.8041 -7.54725 -10.9532 -19.6003 -7.04986 -11.7437 -20.1213 -7.73455 -12.3337 -20.4323 -7.95764 -12.7284 -19.5205 -8.84435 -12.7147 -20.0628 -9.60785 -13.2988 -20.1347 -9.80091 -13.8707 -20.9562 -9.40392 -13.1884 -21.5837 -9.64996 -12.5743 -22.3183 -10.1421 -11.7231 -22.5319 -10.5058 -12.3583 -23.1517 -10.3697 -13.2926 -22.6734 -10.3616 -13.9984 -23.4214 -10.0747 -14.5101 -22.6865 -10.4569 -15.376 -22.9754 -9.53122 -15.809 -23.1885 -9.31837 -16.5941 -22.6557 -8.46959 -16.224 -22.2594 -8.81906 -17.1011 -21.7078 -9.01358 -18.012 -22.0989 -8.24614 -17.9071 -21.4255 -8.78097 -18.7071 -21.1784 -8.18534 -19.3222 -20.6674 -8.80573 -19.4787 -19.9349 -7.92026 -19.964 -19.7659 -7.79673 -19.7267 -18.779 -7.22566 -19.7185 -17.9542 -7.54123 -18.8415 -17.5885 -7.65734 -18.1262 -16.9742 -7.38109 -18.5117 -16.1479 -8.15947 -18.1488 -15.7146 -8.09008 -17.1081 -15.4812 -8.81774 -17.5079 -14.9385 -8.37789 -17.2979 -14.1106 -8.25851 -18.1868 -13.6353 -8.32404 -18.5571 -12.6749 -9.27336 -18.472 -12.314 -9.43369 -19.4562 -12.3271 -8.60496 -19.9436 -12.4283 -8.44409 -20.1602 -11.4894 -9.34734 -20.3854 -11.1772 -10.2346 -20.9361 -11.3982 -10.0405 -21.6829 -11.978 -10.476 -22.6051 -12.3903 -9.76415 -22.0923 -12.9468 -9.15731 -22.8901 -12.8443 -8.49264 -23.1834 -12.1936 -7.99539 -23.0665 -11.3222 -7.58788 -23.6023 -10.6029 -6.69184 -23.6452 -11.046 -6.1688 -23.1681 -10.3445 -5.43497 -22.6592 -10.7588 -5.93334 -21.7625 -10.8329 -5.21747 -21.0562 -10.7185 -5.52593 -20.1326 -10.6937 -4.84134 -19.6647 -10.0695 -4.77899 -20.2433 -9.24482 -5.70293 -20.0972 -8.96647 -6.56166 -20.1493 -8.53731 -6.05573 -20.3935 -7.72566 -6.25481 -21.0444 -6.98909 -5.2718 -20.9297 -6.85422 -5.72649 -20.059 -6.56862 -6.15054 -19.1535 -6.5145 -5.21791 -19.0824 -6.17143 -5.11878 -18.9327 -7.13758 -4.38463 -18.4943 -6.6736 -4.55585 -17.7882 -7.36224 -4.33931 -18.5378 -7.9703 -3.51437 -18.1766 -8.38461 -3.31573 -17.1623 -8.5042 -2.64705 -16.5191 -8.07485 -2.09744 -16.0726 -7.45535 -1.49062 -16.6522 -8.03906 -1.23387 -17.3328 -8.73925 -0.30346 -17.6416 -8.7533 -0.630839 -17.5357 -7.83265 -0.210842 -16.8549 -7.28446 --0.765609 -17.266 -7.33179 --1.53015 -16.916 -7.9341 --2.29494 -17.4418 -8.33827 --1.94944 -17.1984 -9.2451 --1.22487 -17.5755 -8.78027 --0.714598 -17.7171 -9.60344 -0.06488177 -17.3654 -10.2273 -0.525294 -18.2407 -10.3922 -1.13476 -18.5559 -9.65827 -1.54671 -18.7541 -10.4597 -2.16486 -19.4978 -10.8324 -1.69621 -20.2077 -11.4016 -1.91181 -20.2654 -12.4186 -1.409 -19.7684 -13.1023 -1.54617 -20.7256 -13.4249 -2.34039 -20.8288 -14.0463 -3.02103 -20.6838 -14.7256 -2.37203 -21.1984 -15.4201 -2.14142 -20.9476 -16.3499 -1.10596 -21.078 -16.4609 -1.20952 -21.3057 -17.4668 -1.81886 -21.2546 -18.2423 -1.70381 -22.126 -17.8731 -2.64485 -21.9541 -17.8906 -3.0109 -22.71 -18.4294 -2.79627 -23.6582 -18.1087 -1.98309 -23.9377 -18.581 -1.0055 -23.9426 -18.6433 -1.15869 -23.558 -17.7189 -1.33041 -23.2878 -16.8962 -0.365032 -23.0308 -17.0969 --0.32087 -23.6106 -16.6645 --0.261421 -24.5238 -16.7546 --0.965106 -24.8404 -16.0651 --0.541065 -25.7111 -16.2759 --0.13045 -26.4429 -16.9291 -0.452407 -25.9393 -17.5352 -1.12468 -26.6343 -17.2503 -1.87334 -27.1562 -16.8338 -2.84869 -27.4653 -16.6884 -3.07772 -26.4928 -16.3248 -2.9076 -26.7115 -15.3852 -3.42252 -27.4111 -14.9066 -3.71078 -26.5849 -14.5453 -4.61808 -25.9529 -14.4735 -4.71975 -25.0222 -14.269 -5.18331 -24.3615 -13.6798 -4.54223 -23.7079 -14.0882 -3.85702 -23.5658 -13.3038 -4.60859 -23.0586 -13.0079 -4.24686 -22.321 -13.5225 -3.6305 -22.0557 -12.7291 -3.67121 -21.6047 -11.8541 -3.57334 -22.4138 -11.3345 -4.3978 -22.0328 -10.8776 -3.4967 -21.8318 -10.4978 -2.65757 -21.6443 -9.99944 -2.49867 -20.6314 -10.0876 -1.56033 -20.6741 -10.5921 -1.30445 -21.674 -10.5731 -0.699086 -21.0486 -10.0437 -0.09555337 -21.7721 -10.3895 --0.67992 -21.2678 -10.1384 --0.202553 -20.7224 -9.41979 --0.311098 -19.9992 -10.0689 --1.27705 -19.8724 -9.72904 --1.9763 -20.58 -9.45762 --2.82533 -21.0768 -9.558 --3.60508 -21.3714 -10.0813 --3.53135 -22.1902 -10.74 --2.59959 -21.9488 -10.3021 --2.67019 -21.1641 -10.8356 --2.51565 -20.5099 -11.5707 --1.81123 -20.8977 -12.2278 --1.44584 -21.3162 -13.0275 --0.73851 -21.579 -13.8188 -0.236861 -21.3814 -13.4472 --0.09628743 -20.4786 -13.4706 --0.887608 -19.9084 -13.3225 --0.579713 -19.1058 -12.8048 --0.06776103 -18.3438 -12.6442 --0.07017153 -17.3949 -12.881 -0.435471 -16.763 -12.3504 --0.426818 -16.5531 -11.9151 --0.870841 -15.7697 -11.509 --1.55085 -16.3677 -12.0503 --1.27065 -16.9211 -11.2321 --1.18798 -17.8167 -10.8812 --1.11851 -18.8133 -10.6261 --1.81577 -19.3954 -11.0657 --2.76171 -19.3865 -10.6881 --2.67028 -18.6328 -10.0883 --3.21577 -17.9983 -10.5421 --2.72929 -17.0884 -10.6989 --2.06918 -16.3772 -10.5869 --2.41188 -15.428 -10.9257 --2.61337 -14.6895 -11.5954 --3.37941 -14.9578 -12.1664 --3.499 -14.2555 -12.8225 --2.62909 -13.8393 -12.5668 --2.05287 -13.1233 -12.0971 --1.70181 -13.7434 -12.7353 --2.10006 -13.8884 -13.6604 --1.22756 -13.5752 -13.914 --1.10603 -13.6872 -14.9312 --1.21701 -14.0955 -15.8314 --0.855184 -14.9099 -15.4374 --0.418993 -15.2425 -14.6199 --0.421346 -14.5223 -13.9643 -0.0001792789 -13.7874 -13.3506 --0.03544683 -13.7805 -12.3673 -0.784476 -13.2783 -12.6815 -0.617006 -12.3794 -13.1352 --0.107018 -12.766 -12.5574 -0.395121 -12.239 -11.7953 -0.969215 -11.4478 -11.6446 -1.80403 -11.269 -12.014 -2.13606 -10.6996 -11.3237 -2.62238 -10.4303 -10.4696 -3.62027 -10.7194 -10.4867 -3.89445 -9.78872 -10.2689 -4.19952 -9.1349 -9.58573 -4.04027 -8.1288 -9.51668 -4.27428 -7.20865 -9.13025 -4.84118 -7.94261 -8.82737 -5.18071 -8.20168 -9.67821 -5.29692 -7.8281 -10.5448 -4.73542 -7.04117 -10.63 -5.4986 -6.57264 -10.1909 -5.7427 -6.92387 -9.31386 -6.6317 -7.31008 -9.57501 -7.32351 -6.76058 -9.03518 -7.35366 -5.80094 -8.76102 -7.51738 -5.74687 -7.80811 -7.25195 -6.72952 -7.75134 -6.95933 -7.59133 -8.08346 -6.38235 -7.37818 -7.2558 -5.44709 -7.17467 -7.47445 -5.80451 -6.54991 -8.16074 -5.90815 -5.96432 -8.97354 -5.60246 -5.18853 -8.42283 -4.6496 -5.12385 -8.59673 -5.18904 -4.2202 -8.63952 -5.62873 -3.26535 -8.56635 -4.62946 -3.09886 -8.58138 -4.14555 -3.37981 -9.37884 -4.52177 -3.9066 -10.0376 -3.77177 -4.48777 -9.69233 -3.48214 -5.44408 -10.018 -3.06511 -6.23814 -10.3596 -2.23593 -6.64603 -10.8246 -2.11271 -5.93336 -10.1643 -2.17686 -5.59376 -9.22687 -2.50086 -5.17389 -8.30703 -2.89124 -4.74398 -7.49698 -1.96821 -4.3552 -7.67211 -1.36323 -3.82094 -7.12431 -0.839738 -4.22401 -7.85054 --0.07656933 -4.43257 -8.04143 --0.591147 -4.26526 -8.90786 --0.591387 -3.52462 -9.5631 --1.45232 -3.7407 -9.91939 --1.59714 -4.69768 -10.0706 --1.37398 -5.45543 -9.54875 --0.570133 -5.85085 -9.09413 -0.429701 -5.97091 -9.17332 -1.00349 -5.37312 -9.67299 -1.18624 -4.40109 -9.90642 -1.97619 -3.87881 -9.57551 -1.49755 -2.96554 -9.51512 -0.670516 -2.52128 -9.83319 --0.277879 -2.26621 -9.63094 --0.981942 -1.53599 -9.5279 --0.612929 -0.6368001 -9.17189 --1.52626 -0.8659761 -8.86652 --2.57513 -0.8634281 -8.66677 --3.5389 -1.3613 -8.72864 --3.89156 -0.4996101 -8.57846 --3.44795 -0.03886937 -9.33565 --4.45175 0.03300163 -9.40652 --4.93609 0.8587609 -9.58454 --4.35682 0.8517059 -10.4249 --4.91839 0.1780219 -10.9585 --5.09428 0.9554969 -11.5736 --5.06958 1.63067 -12.2724 --5.61948 2.14972 -12.9432 --5.85327 2.75647 -12.2086 --5.48024 2.26439 -11.4456 --5.87602 3.09043 -10.9578 --6.52851 2.38961 -10.7783 --7.33528 2.59017 -11.2935 --7.91268 2.94337 -11.9365 --8.49477 2.50883 -12.604 --8.67009 1.73665 -13.2079 --8.76781 2.5201 -13.856 --8.72685 3.51251 -13.8082 --8.19841 4.38405 -13.8613 --8.18502 5.35668 -13.7548 --8.22738 6.23308 -14.2158 --8.61706 6.93495 -13.5972 --9.41944 7.50613 -13.7865 --9.86154 8.21908 -13.2261 --9.4693 8.90952 -13.8185 --8.53638 8.53803 -13.973 --8.02549 8.24011 -14.8875 --7.52903 8.42414 -15.7236 --8.16713 7.99571 -16.4205 --8.34328 6.99606 -16.4318 --7.59078 6.33473 -16.1529 --6.69203 6.47663 -15.7603 --6.59963 5.48516 -15.9628 --5.56738 5.43077 -15.8377 --4.73028 5.00961 -16.2535 --4.64951 4.79093 -15.2966 --4.03222 4.78332 -14.5027 --4.389 3.87693 -14.6961 --4.04127 3.0377 -14.9142 --3.21353 3.49836 -14.8334 --3.25573 2.92056 -15.6808 --2.64308 2.15048 -15.3501 --2.66563 1.14518 -15.4462 --2.88498 0.2590269 -15.7411 --3.33001 -0.4968361 -15.2667 --3.28519 -1.37007 -14.827 --3.31891 -1.31571 -15.8429 --3.08824 -1.7828 -16.6784 --4.08998 -1.69908 -16.7099 --4.5947 -0.8988301 -16.3526 --5.33281 -0.6653921 -16.9479 --5.28396 0.2840479 -17.139 --4.41405 0.2182769 -17.5638 --3.93527 -0.03800857 -18.4536 --3.13385 0.03247733 -17.9478 --3.08053 0.8461409 -18.4722 --2.89623 0.2154179 -19.2318 --3.43449 0.7468309 -19.8631 --4.17189 1.29877 -19.4631 --5.0241 1.01476 -19.0021 --5.21532 0.04330783 -18.9935 --5.23878 -0.02761457 -19.969 --5.82189 -0.6903471 -19.4982 --5.23445 -1.20978 -20.1803 --4.4694 -1.42132 -19.5122 --3.84957 -1.91205 -18.9204 --4.2518 -2.80902 -18.5978 --4.36849 -2.56776 -17.5937 --3.59843 -2.96523 -17.0867 --3.48938 -3.87131 -16.5303 --4.44361 -3.61948 -16.1718 --4.6991 -3.18533 -15.3519 --3.83822 -3.13673 -15.7049 --3.68376 -2.60623 -14.8079 --3.76689 -3.00443 -13.9125 --3.19118 -2.89826 -13.1088 --3.12892 -2.10077 -13.6839 --2.32274 -2.12277 -13.0078 --1.85964 -1.80365 -12.1678 --0.916772 -2.0697 -12.3468 --0.971444 -2.80952 -11.6705 --0.912032 -3.56639 -12.3072 --1.31291 -4.28642 -12.7692 --0.869967 -3.68049 -13.3329 --0.280933 -3.04328 -12.8938 -0.145615 -2.44028 -13.5893 -0.914475 -2.88547 -13.2336 -1.07139 -3.37413 -12.3384 -1.19318 -4.0603 -13.133 -2.03399 -4.46283 -13.5078 -2.63954 -4.68778 -14.1846 -1.7572 -4.87093 -14.656 -2.47576 -5.56088 -14.7849 -1.78657 -6.13526 -15.1822 -1.10469 -6.0257 -14.4925 -0.174578 -6.07243 -14.8754 -0.391988 -6.50658 -15.7378 --0.508114 -6.12165 -15.6432 -0.08153147 -5.63032 -16.2813 -0.220503 -5.28233 -15.3468 -0.03570347 -4.43878 -15.965 --0.104011 -4.43937 -16.9176 --0.641451 -4.34454 -17.7144 --1.42095 -3.93801 -18.154 --2.01159 -4.10451 -18.9461 --3.02921 -4.00917 -18.6123 --3.96391 -4.25978 -18.5035 --3.94214 -5.18315 -18.9722 --3.18083 -5.75725 -18.5155 --3.08104 -6.32807 -19.2923 --3.88924 -6.69755 -19.7769 --4.55959 -6.12842 -20.238 --4.89227 -5.29005 -20.7251 --5.82209 -5.50769 -20.3273 --6.17876 -4.49091 -20.3777 --6.98131 -3.9316 -20.5103 --6.94715 -3.12982 -19.8744 --7.65128 -2.77609 -19.2852 --7.89686 -1.8012 -19.0601 --6.86182 -1.86893 -19.0121 --6.10463 -1.78044 -18.3386 --6.36025 -2.80364 -18.1595 --6.69031 -3.37851 -17.3864 --5.9277 -3.98178 -17.7605 --5.71752 -3.50243 -16.9172 --5.53959 -4.42427 -16.4898 --4.9998 -4.91281 -15.8093 --5.88797 -5.25496 -15.5376 --5.17761 -5.43359 -14.8921 --4.4915 -5.41954 -14.1445 --4.15635 -5.47712 -15.079 --3.49325 -6.18058 -14.8004 --2.94532 -6.99019 -14.7242 --3.55593 -7.6204 -15.1602 --4.52074 -7.37278 -14.9695 --5.21687 -6.84787 -15.4385 --5.66519 -7.0381 -16.2502 --5.20698 -7.23071 -17.1713 --5.74133 -8.10952 -17.0496 --5.80442 -9.0973 -16.8729 --4.80255 -9.34265 -16.8055 --4.23824 -8.77637 -16.2485 --3.31661 -8.86548 -16.4986 --2.86784 -9.66271 -16.0148 --3.2209 -9.9424 -15.1731 --2.49329 -10.5103 -15.559 --1.59888 -10.0989 -15.5328 --0.712121 -10.5507 -15.7875 -0.03980327 -10.125 -16.3106 --0.39369 -9.8364 -17.1862 --0.320843 -10.6806 -17.7471 -0.553461 -11.2237 -17.4677 -0.393891 -11.4995 -16.4665 -0.965483 -11.3561 -15.6548 -1.09134 -12.2893 -15.1868 -0.522622 -12.5079 -14.3833 -0.17577 -11.8475 -15.084 -0.187091 -11.3937 -14.1999 --0.141519 -10.4381 -13.9956 -0.425746 -9.6049 -14.02 --0.237295 -8.97989 -13.5929 --0.847615 -8.20453 -13.7356 -0.03942217 -8.06333 -13.1925 --0.488034 -8.59983 -12.513 --0.812392 -9.01112 -11.7416 -0.05931477 -9.26492 -12.0287 -0.515404 -10.111 -12.0801 -0.5601 -9.74446 -11.224 --0.389113 -9.97651 -10.9753 -0.312737 -10.5257 -10.4426 -0.1831 -11.4647 -10.4448 -0.529094 -11.8167 -9.52893 -0.584328 -12.677 -10.0379 -1.34095 -12.5275 -10.6526 -2.12428 -13.1564 -10.7294 -2.34751 -14.1728 -10.9 -2.93189 -14.2253 -10.078 -3.42288 -13.4026 -9.7333 -4.43321 -13.2752 -9.49206 -4.37623 -13.3654 -10.4547 -3.70224 -13.1962 -11.1596 -4.34965 -13.842 -11.486 -5.2831 -14.1724 -11.5148 -5.55035 -14.9211 -12.1126 -4.6832 -15.4124 -12.3779 -4.34466 -14.5424 -12.711 -5.27795 -14.2931 -13.0261 -6.13573 -14.8011 -13.1491 -5.75136 -15.7596 -13.3706 -6.156 -16.4616 -12.7982 -6.11715 -17.3523 -12.385 -5.18196 -17.4978 -12.8892 -4.60885 -17.2212 -12.05 -3.85863 -16.7845 -11.5044 -3.68928 -16.5792 -12.4595 -3.46068 -17.5322 -12.8097 -2.95626 -18.246 -13.2383 -2.60664 -18.4075 -12.3147 -3.41465 -17.915 -11.9992 -2.43356 -17.7126 -11.7113 -1.75261 -17.0377 -11.6321 -1.05633 -16.3669 -11.424 -1.03603 -15.7975 -12.2832 -0.391981 -15.8443 -13.0295 -0.998052 -15.538 -13.8235 -1.304 -14.6266 -13.5697 -1.77931 -14.1385 -14.3655 -2.69796 -13.6797 -14.0684 -3.10556 -13.8763 -13.1216 -2.40889 -14.3343 -12.5379 -2.94881 -15.1419 -12.7965 -3.0579 -14.886 -11.8511 -2.71489 -15.6283 -11.3238 -2.51431 -16.1888 -10.4675 -2.00007 -15.3786 -10.1703 -1.96321 -14.678 -9.38318 -2.32467 -15.5381 -8.99671 -3.20075 -15.2126 -8.53457 -3.25067 -14.5382 -7.80628 -3.87748 -13.8694 -8.13017 -4.68305 -13.9065 -8.65782 -4.72087 -14.5395 -9.48952 -4.15216 -15.2782 -9.74921 -4.02083 -15.8004 -10.6065 -4.56679 -16.1884 -9.93498 -5.56624 -15.9277 -10.0405 -6.47393 -16.2625 -10.3235 -6.80235 -15.4439 -10.8171 -7.76964 -15.6897 -10.883 -8.27704 -14.8853 -10.4985 -8.86731 -14.3808 -9.92948 -9.87148 -14.293 -9.95183 -10.1524 -15.2727 -9.96079 -9.47708 -15.0865 -9.27986 -9.19798 -15.9588 -9.51214 -9.69013 -16.8098 -9.60213 -9.06761 -16.7727 -10.4252 -9.04486 -17.4539 -11.1215 -8.4801 -18.2262 -10.7955 -7.96671 -18.6462 -10.0317 -7.24417 -19.0736 -10.6924 -6.78412 -18.2643 -10.1923 -6.76373 -17.9372 -9.29114 -6.22469 -18.7284 -8.95612 -5.6394 -18.8284 -9.78786 -5.06021 -18.6246 -10.5643 -5.91596 -18.2086 -10.9006 -6.18851 -18.7226 -11.6609 -6.19306 -18.5577 -12.657 -6.18389 -19.1203 -13.5055 -6.95613 -19.7675 -13.4195 -6.6544 -19.7073 -12.458 -6.88927 -20.4801 -11.8838 -5.94273 -20.7176 -11.7871 -6.34081 -21.5896 -11.8257 -6.54438 -22.484 -12.0814 -7.3426 -21.9832 -12.2579 -7.72758 -21.7179 -13.1633 -8.64979 -21.5181 -13.475 -8.88078 -21.2746 -14.4486 -8.28622 -20.6415 -14.8601 -8.90286 -20.2846 -15.5776 -9.65783 -19.8036 -15.162 -10.2797 -20.5456 -14.7563 -11.0429 -20.7954 -14.1494 -11.4576 -21.2642 -13.3737 -11.7094 -21.5285 -12.4031 -11.4632 -21.9222 -11.4787 -11.2936 -21.9814 -10.5213 -11.8393 -22.2298 -9.66964 -12.7781 -22.5066 -9.65568 -12.3175 -23.273 -9.21618 -12.9336 -23.4435 -9.97529 -12.8517 -24.044 -10.7716 -13.752 -24.4493 -11.0761 -14.6586 -24.1736 -10.7948 -15.5674 -24.294 -11.0739 -15.6388 -24.4007 -12.0548 -16.3132 -23.8238 -11.8365 -16.6287 -22.9376 -12.0741 -16.5191 -22.536 -12.9881 -17.0353 -22.66 -13.8191 -17.7648 -22.0329 -13.4064 -18.7153 -22.24 -13.0745 -19.4052 -22.4632 -12.3556 -20.2186 -22.07 -12.747 -20.4088 -22.9838 -12.4087 -19.8052 -23.7186 -12.1429 -19.5685 -24.5197 -11.6114 -19.2494 -24.6848 -12.5419 -19.1164 -25.292 -13.3277 -19.8687 -25.4528 -13.9627 -20.7066 -25.4279 -14.5686 -21.5702 -25.8878 -14.5632 -21.2801 -25.6249 -13.5626 -20.8022 -26.2369 -12.8761 -19.8388 -26.0473 -13.1043 -19.5664 -26.8974 -12.6523 -18.9252 -27.332 -12.0953 -17.9957 -27.3829 -11.7841 -17.7926 -26.6807 -11.127 -17.1594 -26.357 -10.4534 -17.2826 -25.3684 -10.6811 -16.5226 -25.1001 -9.97244 -15.8778 -24.6599 -9.33559 -16.5834 -24.9422 -8.73405 -16.5817 -25.4004 -7.8214 -16.1121 -26.1859 -7.4172 -15.4392 -26.554 -7.99476 -15.5544 -25.7937 -8.64458 -14.5406 -25.8217 -8.68814 -14.0847 -25.5337 -7.82675 -13.1802 -25.2551 -8.19828 -12.8877 -24.9386 -9.13251 -13.9051 -24.7221 -9.05095 -13.9 -23.808 -8.6207 -14.2277 -24.0519 -7.70101 -14.2946 -23.3672 -6.97663 -14.2628 -23.3036 -5.97716 -14.0549 -22.5962 -5.21939 -13.9137 -22.0971 -6.08157 -13.1763 -21.6851 -6.60879 -13.1385 -20.6796 -6.55635 -12.7206 -20.5946 -7.39214 -12.2172 -21.4577 -7.43412 -12.7135 -22.372 -7.49352 -11.9784 -22.7894 -6.94834 -12.0051 -23.7408 -6.73848 -12.2223 -23.6557 -5.76564 -12.5236 -24.648 -5.8792 -12.263 -24.9119 -6.78395 -11.4867 -25.3055 -7.37392 -11.1775 -25.0846 -8.22175 -10.9894 -25.8074 -8.86226 -10.6162 -26.6485 -9.24989 -11.113 -27.4771 -9.59643 -10.2868 -27.9635 -9.29813 -9.60344 -27.5614 -9.86664 -9.55986 -27.2711 -8.94078 -9.80876 -27.5733 -8.0112 -9.41101 -26.8805 -7.41008 -9.41476 -25.9567 -7.64705 -9.11665 -25.3407 -8.39852 -9.30892 -25.66 -9.3589 -9.60851 -25.7372 -10.2836 -8.77694 -25.7761 -10.8226 -8.84179 -26.6426 -10.1506 -8.1882 -26.6834 -10.8975 -7.84339 -27.6071 -11.2533 -7.71186 -27.6055 -10.2978 -7.65695 -28.5584 -10.0213 -7.91996 -29.5465 -10.1175 -7.86381 -30.37 -10.7396 -8.165 -30.8988 -10.0244 -9.09725 -30.7788 -9.67797 -8.80002 -30.2411 -8.83131 -7.83837 -30.0236 -8.94351 -7.61592 -29.3506 -8.20535 -7.6928 -30.2533 -7.73117 -6.67548 -30.1758 -7.69912 -6.34363 -29.7085 -6.83994 -5.65522 -29.5246 -7.67432 -5.25661 -29.1654 -8.49673 -4.46443 -28.5988 -8.78929 -3.5096 -28.3103 -8.43011 -3.76869 -27.9115 -7.54398 -3.63149 -28.9383 -7.50885 -4.02796 -28.8981 -6.57905 -4.92432 -28.6333 -6.18797 -5.64113 -28.8968 -5.5739 -6.36915 -28.2153 -5.77219 -7.29798 -28.6117 -5.93242 -7.70151 -28.2185 -6.86025 -8.14484 -28.7565 -7.62219 -9.04841 -29.099 -7.99588 -9.48672 -28.9798 -7.11109 -9.97289 -29.7794 -6.81744 -10.9246 -29.9143 -6.61733 -11.2568 -29.5245 -5.73615 -11.403 -30.2531 -5.11609 -11.4618 -30.2351 -4.09913 -11.2242 -30.0663 -3.09526 -12.2046 -30.2475 -3.28527 -12.907 -30.5902 -3.93631 -13.3958 -31.3907 -4.02337 -14.3597 -31.6156 -4.03523 -14.8197 -30.9381 -4.60053 -14.3712 -30.1062 -5.06714 -13.4094 -29.9557 -4.73803 -12.7637 -29.2421 -4.74602 -12.766 -28.3572 -5.29818 -13.231 -27.4542 -5.23953 -13.3548 -27.2142 -6.21847 -14.286 -27.1345 -6.1173 -15.1158 -27.7286 -6.24973 -16.1196 -27.387 -6.3153 -16.7875 -26.8313 -5.71037 -17.5149 -26.8623 -4.9869 -18.2138 -27.1684 -4.24455 -18.9786 -26.9281 -3.61171 -19.5364 -27.5916 -4.16937 -19.5272 -28.6047 -4.08573 -18.6081 -28.6937 -3.62426 -18.0064 -28.4764 -2.86078 -17.898 -27.4597 -2.70205 -18.2718 -27.7191 -1.79111 -18.6048 -26.9908 -1.23899 -19.1368 -27.5926 -0.6512329 -19.6292 -27.852 0.1266841 -19.4255 -27.0775 0.7358001 -18.662 -27.68 1.05424 -18.5201 -26.8433 1.5077 -18.7068 -26.1967 0.7426251 -17.8464 -26.2925 0.2626851 -17.1823 -25.7248 -0.3716839 -16.6168 -24.9153 -0.1598689 -15.714 -24.4832 -0.3398989 -15.3714 -24.2237 -1.16885 -16.2798 -24.2422 -1.53983 -16.6255 -23.4418 -1.04091 -16.2032 -22.8808 -0.3071049 -15.8735 -21.9365 -0.2154859 -16.3879 -21.8682 0.6647901 -15.4176 -22.0333 0.8626841 -15.7005 -21.866 1.73248 -15.2056 -21.2999 2.32738 -15.709 -20.4909 2.26674 -15.4341 -20.1269 1.35991 -16.3787 -20.0142 1.12809 -17.1557 -19.9289 0.5492011 -16.8223 -19.1456 -0.07034078 -16.3106 -19.9615 -0.1057729 -16.9182 -20.6163 -0.5656899 -17.8819 -20.2127 -0.6676859 -18.3094 -20.7001 -1.43526 -19.0598 -21.2604 -1.61024 -19.9341 -20.7977 -1.38767 -20.0496 -21.7267 -1.74383 -20.4112 -21.7235 -2.66829 -20.4074 -20.8383 -2.90595 -21.3149 -20.5555 -3.00917 -20.6589 -19.8675 -3.37625 -20.1202 -19.1436 -3.75942 -20.3221 -18.4394 -4.48072 -20.684 -17.5754 -4.85178 -19.992 -16.8358 -4.72561 -19.9018 -15.9895 -5.21608 -20.1818 -15.7711 -4.26425 -20.6902 -15.8375 -3.41833 -20.797 -16.6764 -2.914 -19.855 -16.7946 -2.52979 -19.1886 -16.405 -3.1841 -19.0297 -15.4702 -2.78292 -19.221 -14.4994 -2.80888 -20.0677 -14.6829 -3.34164 -20.4434 -13.7763 -3.31472 -19.4643 -13.5166 -3.51252 -19.9689 -13.091 -4.306 -19.5062 -12.1831 -4.25078 -19.4054 -11.2169 -4.07694 -18.521 -11.5859 -3.79548 -17.5204 -11.497 -3.58986 -16.7453 -12.041 -3.2692 -16.963 -11.9835 -4.23123 -16.232 -11.4548 -4.68007 -15.4853 -11.0608 -5.25157 -15.1544 -11.6203 -4.49201 -15.1607 -12.6523 -4.65381 -14.4575 -12.1165 -5.10596 -13.9346 -11.3091 -5.26186 -13.9406 -10.3486 -5.09352 -14.0782 -9.84711 -4.27158 -14.5028 -9.14227 -4.81645 -15.4028 -8.84393 -4.46428 -15.7437 -8.22856 -3.76228 -16.2977 -8.42419 -2.93673 -16.8703 -9.11301 -2.59969 -17.4306 -8.37521 -2.16893 -17.2794 -8.99849 -1.42178 -17.6817 -9.86997 -1.07829 -17.1253 -10.1741 -1.80649 -16.2918 -9.66305 -1.49629 -15.8331 -9.22854 -0.6904129 -16.5122 -9.26005 0.04958052 -16.9919 -9.28842 0.9304581 -16.6047 -9.56284 1.83414 -15.9432 -9.03894 1.39695 -15.0127 -8.7172 1.06047 -14.37 -9.40521 0.9196971 -14.3933 -10.1805 1.62098 -13.5757 -9.70357 1.45689 -13.1295 -10.3944 0.7324251 -12.8419 -10.8999 1.44937 -12.5314 -9.99872 1.74929 -12.9838 -9.56833 2.55613 -13.7611 -8.98269 2.72421 -14.7273 -9.06167 2.46491 -15.2667 -9.80436 2.92219 -15.9593 -10.2613 2.42303 -16.3613 -10.7273 3.12756 -17.0951 -10.0654 3.36779 -17.2533 -9.09275 3.42199 -16.3912 -8.62641 3.12608 -15.9359 -7.70969 2.85661 -16.0285 -7.48963 3.82953 -15.7732 -8.3272 4.39432 -14.9122 -8.2129 3.80462 -13.9094 -8.11578 3.94545 -14.1486 -7.14878 4.03354 -13.5708 -6.96263 4.80262 -12.657 -7.07286 4.33386 -13.0568 -6.81138 3.50866 -13.6094 -6.57392 2.64743 -14.404 -5.95363 2.54102 -14.8734 -6.78139 2.22327 -15.824 -6.83437 2.40864 -15.9689 -5.90597 1.87672 -16.1855 -5.15403 2.4587 -16.2174 -4.23388 2.12209 -15.6596 -4.83354 1.53394 -15.5447 -4.34127 0.6148671 -16.2415 -3.8287 0.9948481 -16.9202 -3.5497 1.7019 -16.7058 -2.76477 2.32981 -16.6894 -2.01364 3.1022 -17.3213 -2.36224 3.78576 -17.1585 -2.93672 4.57473 -16.5527 -3.54641 3.97657 -15.8186 -4.19133 4.1524 -15.4241 -4.90067 4.75395 -15.5513 -5.57249 5.48577 -16.2664 -5.87635 6.1199 -16.5205 -6.71744 5.68303 -16.2458 -7.30416 6.46043 -16.2495 -8.23721 6.80561 -15.458 -8.11072 6.20612 -14.6222 -8.30134 5.63122 -14.7214 -7.38942 5.30952 -15.0877 -6.5723 4.97579 -15.2706 -6.60862 5.96359 -14.4349 -6.16136 6.26318 -14.3309 -7.07607 6.6816 -14.4833 -6.96358 7.62252 -14.6699 -5.98365 7.43966 -13.8659 -5.4496 7.05067 -13.0685 -4.96845 6.73721 -12.5242 -5.73505 6.36928 -12.5416 -6.21641 7.24197 -11.7849 -6.49409 7.81728 -11.4194 -7.02462 8.50158 -10.8248 -7.44324 7.83712 -10.3401 -6.66868 7.74805 -10.1159 -5.86779 7.11392 -10.7147 -5.12675 7.46192 -11.0287 -4.15252 7.56511 -11.0216 -3.97969 6.51305 -11.6352 -4.2773 5.81346 -12.5318 -4.54436 5.51507 -11.8249 -4.64516 4.75901 -11.4867 -5.57747 4.64073 -10.6342 -5.98434 4.55169 -9.82691 -5.45327 4.37626 -9.041 -5.78766 3.82623 -8.72476 -6.35542 4.63176 -8.9047 -6.0651 5.60462 -8.84308 -5.3633 6.2978 -8.81132 -4.36847 6.44201 -8.96536 -3.44143 6.16416 -7.93139 -3.15943 6.10483 -7.86794 -2.15857 6.25226 -8.62642 -2.30431 6.91569 -8.97559 -1.88807 7.77051 -8.29384 -1.22598 7.49074 -8.65738 -0.4279241 7.90068 -9.57068 -0.8063301 8.16903 -9.95977 -0.02060007 8.60467 -10.4041 -0.2824111 9.46776 -10.6536 0.6637999 9.29389 -9.97894 0.5659429 9.95862 -10.3222 0.5769729 10.9034 -11.0992 1.19235 10.6187 -11.1463 1.4923 11.5416 -11.95 1.70652 12.129 -11.9449 2.36608 12.7975 -12.0355 2.85016 11.8961 -12.1777 3.85226 11.9846 -12.1054 4.48535 11.0653 -12.7474 5.08237 11.4915 -13.5574 4.92995 11.994 -14.0985 5.6395 12.3409 -14.1473 6.61355 12.4175 -13.401 6.72036 12.9749 -12.8891 6.58013 13.8204 -13.4735 7.08363 14.591 -12.7062 7.11494 15.2203 -11.8894 7.51632 15.7422 -11.0025 7.17282 15.3211 -10.379 7.43746 14.6184 -9.59187 7.77115 15.1016 -9.07786 6.90905 15.2596 -8.85384 5.96241 14.8456 -9.0945 5.75556 15.8311 -8.92938 4.76267 15.9452 -9.37119 5.05681 16.8334 -8.94796 5.80009 17.3656 -8.81688 6.17271 18.3301 -8.36434 6.50203 19.0947 -8.60132 7.4322 18.9576 -7.65389 7.41121 18.5436 -7.12774 6.48494 18.2749 -6.51674 7.19216 18.6664 -5.97775 7.7071 19.2761 -6.56894 7.74764 20.0995 -7.49853 7.90588 19.6967 -7.47489 8.88353 19.6421 -8.39118 8.71202 19.536 -8.83773 9.31008 18.7803 -9.41321 9.104 18.0055 -9.65674 8.41865 17.3364 -9.54395 7.9262 16.4554 -9.97939 7.03988 16.6675 -10.9436 6.8876 16.2877 -10.6719 6.66071 17.1984 -10.4004 6.02327 17.8847 -11.2088 5.54344 17.5294 -11.9053 6.0561 17.1188 -12.2541 6.90489 16.7298 -11.9831 6.4564 15.8737 -12.5525 5.8063 15.2755 -13.4402 6.10114 15.0074 -14.4382 6.03826 15.0626 -14.5781 6.34669 15.9686 -14.3155 5.51283 16.5281 -14.5287 5.83497 17.4286 -13.9263 5.89642 18.2496 -13.0571 6.34586 17.988 -13.7898 7.06148 17.7608 -14.0733 7.59836 16.9563 -13.4545 8.23017 16.4437 -14.2941 8.02093 15.8863 -14.5664 8.02266 14.9176 -14.3767 7.67919 13.9822 -14.1412 8.60518 13.691 -14.3538 9.41434 14.1871 -14.9826 9.43962 13.4365 -15.4258 8.58844 13.1038 -15.3572 7.9171 12.3198 -15.8862 7.08662 12.3652 -15.3087 6.41512 11.9529 -15.7472 5.76358 11.2848 -14.8549 5.56618 10.8067 -15.1778 5.88579 9.97588 -15.7242 5.07879 9.84817 -16.6076 5.37026 9.91847 -17.4173 5.87078 9.86748 -17.3538 6.38671 9.0995 -17.5066 5.58474 8.57716 -18.0755 5.87276 7.78875 -18.2893 5.89856 6.7935 -18.8749 5.16928 7.21515 -17.9041 5.10296 7.11957 -16.9386 4.78744 7.17042 -17.0812 4.19571 7.94241 -17.2687 3.18868 8.12482 -17.1352 2.67696 9.02596 -17.802 1.95875 9.32616 -18.4263 1.49795 9.94625 -19.2834 1.0827 9.73296 -19.0554 0.1406569 9.51941 -18.3128 -0.2197141 8.90303 -17.619 -0.8765781 9.3324 -17.3936 -1.45024 10.057 -17.7665 -1.86501 10.8673 -17.7099 -2.51298 10.1143 -18.6269 -2.78882 10.2126 -18.697 -2.74814 11.2575 -19.3684 -2.7839 11.9727 -20.1243 -2.06216 12.1339 -20.6527 -2.86374 12.4943 -21.636 -2.92671 12.7574 -22.2984 -2.19964 12.8169 -22.9568 -2.75679 12.261 -23.318 -3.1258 11.3983 -22.7128 -3.90804 11.2894 -22.2833 -4.26496 12.1264 -21.7267 -4.85914 12.7967 -21.9962 -4.32145 13.6222 -22.6577 -5.03229 13.9177 -22.9939 -5.93473 14.1815 -22.7985 -5.78006 15.1706 -22.7169 -5.05894 15.8548 -21.9121 -4.51939 15.7096 -21.7082 -5.4078 16.1426 -21.2202 -5.97998 15.4968 -20.7784 -6.35243 16.3064 -20.5065 -6.63992 15.3302 -20.9009 -7.0022 14.4716 -21.6823 -7.62174 14.3301 -21.872 -7.16037 15.1283 -22.1678 -7.48601 16.0407 -22.9483 -6.98067 15.6747 -23.1571 -7.76722 15.1406 -23.8858 -7.27558 14.775 -23.203 -7.61476 14.1019 -23.2085 -7.47276 13.104 -23.9095 -6.6705 13.1887 -23.6291 -5.71274 13.2635 -22.8191 -5.4137 12.8207 -22.2023 -5.82429 12.1203 -22.0806 -6.18205 11.0969 -21.3687 -6.20311 10.5123 -22.176 -5.79743 10.0201 -22.7667 -6.4005 9.6221 -22.223 -7.21535 9.27225 -22.7251 -7.88873 9.76269 -23.1632 -8.61962 9.24829 -22.8 -8.93231 10.151 -23.3842 -9.41034 10.8522 -24.184 -10.066 10.879 -24.2762 -10.8776 10.2999 -23.8053 -11.6249 9.86764 -24.511 -11.7057 9.16762 -25.0467 -12.4958 8.90219 -24.4805 -13.0953 8.34078 -23.7506 -12.8875 7.68091 -23.9661 -13.6348 7.07137 -23.0749 -13.7484 7.54596 -22.9429 -13.2989 6.63268 -22.7615 -12.6929 5.91624 -21.9417 -12.1705 5.78191 -22.4758 -11.6283 6.44741 -21.9272 -10.9588 5.89172 -21.8484 -10.7697 4.97688 -22.4713 -9.9753 5.06657 -22.4586 -9.26658 5.77128 -22.7395 -8.28874 5.69888 -22.3764 -8.33839 6.67114 -22.5755 -9.15819 7.26246 -22.6471 -9.47181 8.20717 -22.0714 -9.78631 9.01932 -21.9807 -10.5103 8.28223 -21.8404 -11.4694 8.63798 -22.3142 -12.2313 8.19324 -22.8585 -12.8299 8.76967 -23.7405 -12.6873 9.24773 -22.9804 -12.504 9.80012 -22.5417 -13.1055 10.4242 -21.8922 -13.655 9.90561 -21.5795 -13.9686 10.8226 -21.4525 -13.082 11.3646 -20.5688 -12.6628 11.0302 -21.1336 -12.3322 10.2956 -20.4773 -12.3239 9.62265 -19.9534 -12.7354 8.91486 -19.2262 -13.2045 9.51281 -18.6117 -13.5735 8.75859 -18.4266 -13.6465 7.78123 -18.9481 -13.0302 7.13441 -18.3662 -13.0618 6.3277 -18.4626 -13.086 5.32065 -18.5379 -13.1755 4.38551 -18.3739 -13.987 3.89419 -17.8904 -14.7277 3.35126 -17.7449 -15.7086 3.20121 -18.5772 -16.1675 3.56706 -19.5369 -16.0634 3.36693 -20.1639 -16.2604 4.07859 -20.931 -16.6453 3.64817 -20.9029 -16.9337 4.65488 -21.2699 -17.7124 5.23889 -21.5644 -18.5322 4.80983 -22.4357 -18.672 4.38464 -22.4105 -19.3955 5.02393 -22.3951 -18.9854 5.89219 -22.0937 -18.0674 6.12719 -21.6908 -17.507 6.81298 -21.9967 -16.7226 6.20551 -22.6248 -16.3818 6.89664 -22.8768 -16.988 7.67205 -23.3519 -17.8265 7.76932 -22.948 -17.8551 6.92648 -23.7433 -18.1611 6.43531 -24.098 -17.3617 5.91617 -24.898 -17.9212 5.59474 -25.1052 -16.9385 5.42172 -25.6959 -16.3209 4.85236 -25.8646 -16.2331 5.87261 -25.9375 -16.2219 6.86151 -26.6472 -16.9061 6.63471 -27.0485 -16.1326 6.17069 -26.5753 -15.5156 5.63846 -26.6081 -14.7522 6.1464 -25.765 -14.1735 6.17857 -25.4108 -13.4789 6.79409 -25.8255 -12.5134 6.73959 -25.2139 -12.4105 5.88389 -25.4513 -11.6515 6.52552 -25.9741 -10.7884 6.80404 -26.0145 -10.1843 7.66896 -26.3895 -9.22012 7.4893 -25.4496 -8.99179 7.73924 -25.1047 -9.72733 8.26769 -25.1899 -9.50942 9.26378 -25.7508 -10.2374 9.63457 -25.449 -10.4907 10.5035 -25.5306 -9.67606 11.0968 -25.9743 -9.12671 10.4644 -26.0525 -8.50343 9.74042 -25.7639 -7.95211 9.01805 -24.9047 -7.68797 9.45478 -24.4199 -7.31759 8.66509 -23.5718 -7.00592 8.10151 -23.8396 -7.17455 7.18693 -23.4197 -6.69124 6.5033 -23.8527 -6.66005 5.62905 -24.6437 -6.02396 5.67921 -24.2716 -5.814 4.75032 -24.2857 -4.86256 4.4962 -24.3367 -3.84084 4.53306 -25.1963 -3.76486 4.01554 -25.7769 -3.73589 3.23515 -25.3298 -3.27805 2.5388 -24.6238 -3.41236 1.90017 -23.7704 -3.289 1.40685 -23.3189 -2.56931 0.9006861 -22.8563 -2.00246 1.54094 -23.671 -1.42405 1.43866 -24.2146 -2.03037 2.0274 -23.9868 -2.29407 2.91368 -23.5919 -2.85875 3.60956 -22.9219 -3.53628 3.99488 -22.2712 -3.48668 3.24178 -21.4312 -2.95212 3.37329 -20.8408 -3.64533 3.69231 -20.4882 -4.56132 3.97343 -21.174 -5.02143 3.47701 -21.2687 -5.36931 2.59335 -20.6016 -4.79924 2.07739 -19.9201 -5.4622 1.81586 -18.9169 -5.27244 1.59089 -18.4856 -6.0834 1.23759 -18.4992 -5.68287 0.3198581 -18.0328 -4.90369 -0.0002371105 -17.9903 -5.66781 -0.5296089 -17.7207 -6.32026 -1.16323 -17.1572 -6.72328 -0.4264609 -16.4022 -7.33798 -0.5941799 -16.0489 -8.21739 -0.9960719 -15.169 -8.18997 -1.55033 -14.2613 -8.41406 -1.52797 -13.9404 -8.83167 -2.37923 -13.1087 -9.32615 -2.72074 -12.8118 -9.31754 -3.66026 -12.7137 -9.44428 -4.61368 -12.0654 -10.2191 -4.6683 -12.0348 -10.9949 -5.28748 -11.1487 -11.3385 -4.98036 -10.9136 -11.7826 -5.91804 -10.1233 -12.199 -6.41392 -9.85359 -11.9526 -7.33453 -9.52216 -11.2977 -8.1012 -9.71179 -10.4665 -7.64903 -10.5895 -10.7288 -8.01466 -11.1896 -10.9134 -7.25395 -12.0127 -11.2889 -6.86793 -12.8761 -11.1883 -6.35022 -13.4474 -11.9843 -6.40001 -13.3245 -12.6362 -7.2466 -13.9815 -13.3262 -6.97898 -14.6392 -12.5497 -7.18479 -14.7758 -13.3666 -7.68799 -15.5086 -13.8065 -8.09691 -15.1671 -14.6069 -7.74576 -14.3781 -14.1043 -8.15545 -13.4782 -14.2095 -7.81202 -13.6183 -15.1467 -8.03272 -13.6293 -15.4459 -7.00727 -12.724 -15.2748 -6.57487 -12.1989 -15.9714 -7.17959 -11.3927 -15.787 -7.79897 -11.9407 -16.2269 -8.56645 -11.6582 -17.0673 -8.92143 -10.8685 -17.2934 -8.37399 -11.8169 -17.489 -7.8692 -10.9747 -17.9168 -7.47098 -11.8277 -18.4866 -7.46694 -12.3793 -18.7159 -8.27193 -12.9432 -19.551 -8.29712 -13.6831 -19.2585 -7.57827 -14.03 -18.2835 -7.4433 -14.3989 -17.5531 -6.79095 -14.2815 -17.398 -5.84746 -14.2441 -16.3989 -5.74756 -14.4939 -15.4307 -5.93769 -14.4939 -14.4107 -5.97564 -13.8382 -14.748 -5.29017 -13.2694 -13.8901 -5.49263 -13.5174 -12.9822 -5.24109 -13.95 -13.1603 -4.31216 -13.0054 -13.2909 -4.01268 -12.5361 -12.4377 -3.77818 -12.1657 -11.6022 -3.44724 -13.1376 -11.5189 -3.07526 -13.319 -11.1273 -2.23561 -14.1679 -10.7553 -2.67571 -14.9533 -11.436 -2.58784 -15.2463 -12.318 -3.06315 -15.805 -13.0243 -3.44214 -15.52 -13.6966 -4.16411 -15.9088 -14.391 -4.87885 -15.0652 -14.9595 -4.65043 -14.5786 -15.2411 -3.86827 -14.7996 -15.751 -3.01655 -14.238 -16.6205 -2.9248 -14.3571 -17.5721 -3.09843 -13.6489 -17.9674 -3.5618 -13.2584 -18.843 -3.87545 -12.256 -18.928 -4.08223 -11.6316 -19.6293 -3.92283 -11.4221 -20.5132 -4.45178 -10.3754 -20.3775 -4.48198 -10.6618 -21.29 -4.25986 -11.1136 -21.329 -5.17356 -11.9359 -21.7648 -5.27735 -12.0185 -22.6453 -4.86052 -12.9112 -22.9488 -4.64548 -12.6303 -22.6169 -3.80358 -12.7903 -22.8857 -2.8344 -12.948 -21.9046 -2.69529 -12.7035 -21.4789 -1.83664 -12.472 -22.4142 -1.47334 -12.8086 -22.4613 -0.5172219 -12.4123 -21.5785 -0.1126449 -11.9362 -21.3905 0.7057961 -12.5049 -20.6714 0.2728311 -11.9413 -19.8872 0.5675831 -10.9693 -19.5852 0.4354151 -10.1829 -19.8687 -0.03636138 -10.1461 -19.4058 -0.9523429 -9.34878 -20.0222 -1.03368 -10.1199 -20.5724 -0.7718269 -9.84713 -21.1037 -0.01500348 -10.2281 -22.0051 0.04838992 -10.9645 -22.2495 -0.4740939 -10.6169 -23.1803 -0.5300749 -10.2341 -22.7197 -1.27713 -9.6101 -22.4059 -1.95822 -9.89876 -23.2489 -2.45771 -8.88314 -23.4631 -2.49198 -8.08245 -22.8171 -2.56455 -8.6107 -21.9744 -2.39323 -8.06596 -21.1144 -2.60216 -7.20093 -20.7416 -3.00703 -7.405 -21.0637 -3.88839 -8.31898 -20.6165 -3.93657 -8.08626 -19.7973 -3.43918 -7.89754 -18.8205 -3.68937 -8.31267 -18.3429 -4.49714 -7.52249 -18.109 -5.00955 -6.89967 -18.7292 -5.65065 -6.66565 -19.5046 -5.00748 -6.22403 -18.6491 -4.69909 -5.59366 -17.9752 -5.07259 -6.5009 -17.5391 -5.16034 -6.64594 -16.6184 -5.17532 -5.8446 -15.9846 -5.05504 -5.18986 -16.3743 -5.73306 -4.84826 -16.383 -4.88159 -4.08539 -16.4703 -4.16379 -3.18031 -16.2624 -3.84994 -3.58387 -15.9901 -4.74481 -3.02966 -15.55 -5.49278 -2.34339 -16.1092 -5.08572 -1.3722 -15.8455 -4.84486 -0.470045 -16.2054 -5.0264 -0.255762 -17.1454 -4.60453 --0.7457 -17.1386 -4.76713 --1.30197 -17.455 -3.97378 --1.52378 -16.5188 -4.08672 --1.55326 -15.7165 -4.68847 --1.5074 -16.5421 -5.25506 --2.25809 -17.1844 -5.18451 --2.65504 -17.6438 -4.39342 --1.85033 -17.9663 -4.81681 --1.61445 -18.0469 -5.80734 --1.99538 -17.5296 -6.57295 --2.64806 -16.8477 -6.73968 --3.13295 -17.6934 -6.82695 --3.94558 -18.2439 -7.04354 --3.19658 -18.8099 -6.75384 --2.29282 -18.9331 -7.06731 --1.52388 -19.1338 -7.60263 --0.50016 -19.1715 -7.6631 -0.02893357 -20.0341 -7.86189 -0.879805 -19.7437 -7.36999 -1.39065 -20.6632 -7.29263 -2.00783 -20.2848 -6.57859 -1.98505 -20.2923 -5.51693 -1.93014 -20.1799 -4.50122 -1.66384 -19.2842 -4.26756 -1.33188 -18.7798 -5.07338 -0.924879 -18.215 -5.75437 -0.281352 -18.6205 -6.36045 --0.46197 -18.6194 -5.69552 --1.01354 -19.454 -5.85052 --1.06623 -20.0833 -5.09402 --1.79907 -19.4031 -4.99588 --1.95402 -20.0508 -5.78798 --2.78056 -20.5601 -6.07407 --2.87652 -21.5599 -5.96581 --3.08444 -22.5227 -5.79994 --2.51443 -23.2361 -5.54323 --2.62075 -24.1438 -5.74728 --3.14591 -23.7364 -6.4775 --2.60055 -22.921 -6.67483 --1.7608 -22.3635 -6.94795 --1.00759 -23.0302 -7.21135 --1.40602 -22.935 -8.15637 --0.383303 -23.1973 -8.3611 --0.904878 -24.0192 -8.54128 --1.93159 -24.1771 -8.53924 --1.54813 -25.0241 -8.90546 --2.48717 -25.507 -8.90731 --2.31961 -24.9429 -9.7433 --1.3139 -24.9982 -9.9403 --1.35077 -24.8193 -10.9172 --1.09828 -23.8617 -10.9013 --1.79857 -23.8327 -11.6283 --1.10098 -24.0251 -12.3463 --0.260163 -24.3476 -12.6669 -0.06457897 -23.7118 -11.9667 -0.481761 -23.8573 -11.1213 --0.08467393 -24.3736 -10.5204 -0.159555 -25.3618 -10.4359 -0.585903 -25.6852 -9.57399 -0.888645 -25.1924 -8.70516 -1.46047 -25.3578 -7.90827 -2.02115 -24.5741 -7.67996 -2.62366 -23.9961 -8.28341 -2.91563 -23.0574 -8.36998 -3.04013 -22.6278 -9.24963 -2.10019 -22.2723 -9.02423 -2.07836 -22.3093 -8.01571 -2.89073 -22.45 -7.3571 -3.60466 -22.9629 -6.82286 -3.35531 -23.5823 -6.01985 -2.58623 -23.9055 -5.47614 -1.65281 -24.1354 -5.4704 -2.05814 -25.0091 -5.61409 -1.88832 -25.9741 -5.70178 -1.33279 -25.9689 -6.45987 -0.755589 -25.8019 -5.60801 -0.36313 -24.8479 -5.45965 --0.08486583 -24.0306 -5.09963 --0.39639 -23.5281 -5.90698 --1.26208 -23.2841 -5.50261 --1.23603 -22.7466 -4.64023 --0.473321 -23.2066 -4.33011 --0.833291 -22.6354 -3.59845 --0.280257 -21.9963 -3.09667 --0.801465 -22.4105 -2.40293 --1.72251 -22.8406 -2.41875 --1.88699 -23.4735 -3.11239 --1.50577 -23.7868 -2.25046 --0.842954 -24.209 -1.55713 --1.68159 -24.7124 -1.46813 --2.61685 -24.5135 -1.12693 --3.26661 -25.1804 -0.6111219 --3.25878 -24.6679 0.2484741 --3.26593 -25.623 0.4409011 --3.403 -26.5583 0.07746672 --2.44786 -26.8456 0.3505171 --2.4426 -27.5194 -0.4223659 --2.53993 -26.7048 -0.9286269 --1.5061 -26.7195 -0.7734789 --0.488857 -26.5933 -0.7408599 --0.547752 -27.4631 -1.1149 --0.455211 -28.292 -1.6611 -0.147428 -27.8905 -2.35074 -0.865398 -28.5111 -2.14486 -0.764268 -27.8731 -1.32737 -1.56887 -28.4468 -1.15464 -2.48415 -28.3955 -0.8138859 -3.00143 -29.2492 -0.7289739 -2.4316 -29.2354 -1.56403 -2.05224 -30.0973 -1.10703 -1.65015 -30.6091 -0.3247229 -1.86513 -31.6054 -0.2183859 -0.961089 -31.7723 0.1733171 -0.189929 -32.4064 -0.1061039 -0.697018 -32.9814 0.5731091 -0.389864 -32.2173 1.25554 -0.06640627 -31.9852 2.19748 --0.339845 -31.052 2.14994 --0.736797 -31.4326 2.95926 --0.759485 -30.4705 2.88988 --1.00438 -29.5907 3.1827 --0.221612 -28.9321 3.44838 --0.350264 -28.4291 4.34094 --0.347768 -29.3287 4.465 -0.29616 -30.1327 4.73401 --0.388002 -30.7942 4.4101 --1.13064 -31.1238 3.81154 --0.977102 -32.1049 3.57194 --1.92608 -31.9271 3.85817 --2.34329 -31.0181 4.1372 --3.04194 -31.1308 4.83507 --3.09548 -30.2079 5.036 --3.83927 -30.1532 4.2797 --4.02441 -30.3427 3.33151 --4.77726 -30.7948 2.86894 --5.52583 -31.4254 2.88787 --6.21232 -30.9263 3.46972 --5.56351 -30.9227 4.31293 --6.49062 -30.4719 4.40573 --6.53955 -31.4086 4.73507 --6.37764 -32.346 4.45462 --5.9887 -33.0778 3.90489 --5.13975 -32.6779 3.69433 --4.59728 -32.3888 2.95105 --4.72449 -32.0716 2.04511 --3.94752 -31.5173 1.75863 --4.0073 -32.3249 1.2369 --4.46433 -33.1036 1.58011 --5.22205 -33.7399 1.22942 --5.27743 -32.9271 0.7599031 --5.59462 -31.9602 0.8182211 --6.23636 -31.2115 0.8920231 --5.50657 -30.5697 0.5680871 --4.7419 -30.3385 1.04092 --4.84283 -29.4106 1.35961 --4.96879 -28.5093 0.9464241 --4.68548 -28.3495 1.89226 --5.55883 -27.9145 1.64231 --6.51514 -27.93 1.77374 --7.20609 -27.7352 1.04279 --7.22647 -28.381 0.3038501 --7.20602 -27.8218 -0.5279949 --6.83696 -27.8503 -1.52527 --7.43494 -27.1215 -1.82155 --7.15331 -27.1002 -2.75658 --7.4386 -27.7524 -3.50886 --7.0072 -28.6554 -3.50201 --7.77704 -28.9357 -3.97869 --7.451 -29.8245 -4.36636 --6.865 -29.0939 -4.79434 --6.52124 -28.825 -5.66168 --7.48414 -28.9513 -5.90745 --7.26983 -28.0352 -6.21471 --7.27231 -27.7579 -7.09242 --7.59083 -27.2816 -7.86856 --8.10812 -26.9303 -8.72727 --7.33452 -26.4605 -8.47603 --7.11372 -26.2866 -9.43274 --7.57525 -25.9631 -10.1821 --7.2654 -26.5414 -10.8972 --7.45943 -25.9878 -11.6464 --7.57278 -25.0385 -11.2704 --6.74451 -25.3228 -11.7568 --6.22997 -25.4739 -10.9056 --6.41343 -24.4909 -10.9319 --5.57593 -24.2798 -10.3557 --5.41061 -23.4526 -10.9818 --5.14117 -22.6092 -10.6934 --5.76242 -22.6569 -11.3925 --6.7976 -22.6567 -11.3599 --6.71084 -22.8939 -12.3041 --6.33011 -23.6551 -12.8157 --6.50669 -24.4498 -12.2349 --7.26414 -24.7065 -12.8408 --8.20588 -25.0408 -12.6962 --8.35991 -25.9117 -12.9691 --8.84432 -26.0456 -12.117 --9.66475 -25.658 -11.706 --10.0149 -25.8595 -12.5939 --10.4889 -26.6596 -12.9548 --10.0398 -27.5057 -12.8818 --9.74446 -27.9801 -12.0077 --10.0395 -27.1028 -11.5774 --9.16283 -27.3536 -11.5016 --8.63258 -27.6493 -12.2357 --8.21989 -27.3571 -13.1375 --7.36546 -27.1035 -12.8035 --6.56165 -27.6909 -12.7739 --6.92779 -27.3224 -11.9192 --6.20789 -27.326 -11.2551 --5.38201 -27.6882 -11.6669 --5.09614 -28.3532 -10.9887 --4.33074 -27.8315 -11.297 --3.57087 -28.1019 -11.7589 --4.01677 -28.5286 -12.548 --4.13631 -28.412 -13.5274 --5.0833 -28.3213 -13.7567 --4.7085 -27.3942 -13.6301 --5.46409 -26.8569 -14.2117 --5.12717 -26.6317 -15.1242 --4.5427 -27.2581 -15.8088 --4.07003 -26.4511 -15.469 --3.22708 -26.1929 -15.1377 --2.76246 -27.1005 -14.9072 --2.26413 -26.1499 -14.9771 --1.7344 -26.9346 -15.2958 --1.7762 -26.3711 -16.0667 --1.225 -27.265 -16.127 --1.22796 -27.6978 -17.0324 --0.976136 -28.6228 -16.6486 --1.75632 -28.7759 -16.0345 --1.55244 -29.5721 -15.5572 --0.762712 -30.1146 -15.973 -0.147299 -29.815 -15.7262 -0.987057 -29.8055 -15.1261 -1.23451 -30.0418 -16.0479 -1.71649 -30.8914 -16.0712 -0.961962 -31.1365 -16.7152 -0.02418527 -30.7772 -16.7453 --0.511915 -31.6475 -16.7047 --0.667821 -31.4968 -15.6946 --1.63282 -31.5051 -15.4508 --2.04999 -31.6738 -14.5528 --2.73423 -32.3755 -14.2808 --2.92936 -32.8055 -13.3369 --3.46398 -32.9854 -12.4901 --4.01257 -33.3658 -11.6825 --4.7071 -34.0254 -11.8421 --5.01486 -33.6103 -10.9299 --5.83397 -33.8285 -10.4489 --6.30182 -32.9325 -10.3192 --6.55507 -32.5712 -9.42857 --7.27685 -32.2512 -8.7861 --7.61478 -31.5709 -9.3855 --6.66392 -31.2019 -9.37976 --5.85341 -31.6644 -9.04484 --5.30012 -30.879 -9.34453 --5.50362 -30.5804 -8.45666 --5.56171 -29.5825 -8.66459 --5.09959 -28.8928 -8.12323 --4.52943 -28.8629 -7.24156 --3.99179 -29.5537 -7.72675 --4.87345 -29.939 -7.39607 --4.3656 -30.7337 -7.28398 --4.07816 -31.6939 -7.06469 --4.76335 -31.4754 -7.86069 --4.63207 -32.4037 -8.18455 --4.99642 -33.3683 -8.11005 --5.83347 -33.7622 -7.67662 --6.04665 -34.7859 -7.66501 --5.33471 -34.7159 -8.40546 --4.46125 -34.8036 -7.85699 --3.57724 -34.5616 -7.54004 --3.20007 -34.9315 -6.66001 --2.21406 -34.9687 -6.50532 --1.32859 -34.6004 -6.78729 --0.880781 -33.7668 -6.58258 -0.122989 -33.7022 -6.40215 --0.170705 -33.8284 -5.39013 -0.542235 -33.6247 -4.743 -0.01403107 -33.2385 -4.03061 -0.416977 -32.4661 -3.47936 -0.02636687 -31.9669 -4.22353 --0.756313 -32.4901 -4.63028 --0.96685 -31.6725 -5.20239 --1.88555 -31.3385 -5.03985 --2.56933 -30.8344 -4.49313 --2.5664 -31.7667 -4.23766 --2.84033 -32.3345 -5.02727 --3.82574 -32.0247 -4.91663 --4.02821 -32.8633 -4.39882 --4.79357 -33.2158 -4.93567 --5.08113 -34.1408 -4.7498 --5.7345 -34.3773 -4.12364 --6.52846 -34.9989 -3.92108 --6.10273 -35.321 -3.15955 --5.84244 -35.0906 -2.22417 --6.3493 -35.9865 -2.04862 --5.94517 -36.6942 -1.41354 --5.97794 -35.858 -0.7871299 --6.74654 -35.7986 -0.1499369 --6.82672 -34.8082 -0.06300748 --6.56674 -33.8328 -0.1553539 --7.2328 -33.1857 0.1366111 --7.99515 -33.3835 0.7487401 --8.62549 -33.9901 1.22033 --9.34323 -33.9301 0.5744511 --9.94322 -33.3465 0.02430462 --9.74597 -32.4133 0.4133631 --10.1684 -31.5015 0.3464731 --11.151 -31.4641 0.5020301 --11.6215 -30.9123 -0.2030039 --11.1368 -30.2891 0.3854301 --11.548 -29.8592 1.21589 --12.6373 -30.1341 1.19904 --13.2867 -30.2812 0.4992201 --13.9817 -30.0981 1.19465 --14.8805 -30.5032 1.27396 --15.4314 -31.089 1.91721 --14.8335 -31.4838 2.54904 --15.5292 -31.7516 3.19795 --16.4036 -31.3275 3.34382 --17.2506 -30.7365 3.24162 --16.9426 -30.9081 2.33926 --16.7779 -30.0835 1.82785 --16.1553 -29.9589 2.57126 --15.0869 -29.9666 2.528 --14.9451 -28.977 2.59385 --15.7194 -28.3105 2.59017 --15.9543 -27.4525 2.96643 --15.8702 -26.5013 3.20489 --15.2618 -27.0535 3.67276 --14.4033 -27.3427 3.31707 --13.6357 -27.6426 2.78916 --13.4526 -27.6751 1.77864 --13.7893 -26.9904 1.23749 --13.6991 -27.1385 0.2960291 --14.104 -28.0058 -0.1130319 --13.4759 -27.8942 -0.9128399 --12.9239 -27.3973 -1.57342 --12.7445 -26.8662 -0.8346949 --12.0111 -26.2192 -1.10914 --11.8515 -26.866 -0.3267719 --11.3487 -27.6841 0.06945492 --11.0791 -27.9426 -0.8166949 --10.1005 -28.3251 -0.9231759 --9.36329 -28.7123 -1.5273 --9.77986 -29.1057 -2.27534 --9.61585 -30.0013 -1.91502 --9.75317 -31.1147 -1.83093 --9.68498 -30.9236 -0.8793729 --8.7357 -30.851 -0.7150829 --8.28037 -30.0321 -0.7729789 --9.15513 -29.8222 -0.3643189 --10.0262 -29.7061 0.1294911 --10.0606 -29.2671 1.07186 --9.52147 -28.458 0.7556741 --10.1087 -27.6025 0.8561291 --9.53179 -26.7529 0.6004121 --9.34078 -25.7901 0.3858071 --8.33267 -25.5675 0.3386031 --7.68459 -25.3726 0.9745741 --7.43072 -26.1455 1.60005 --7.34602 -26.9298 2.12404 --8.0018 -27.2911 2.81301 --7.7038 -28.2451 2.87921 --8.21383 -28.1989 3.69653 --8.54661 -29.1275 3.74865 --8.86498 -29.2846 2.83737 --8.87338 -30.1372 2.37586 --9.85997 -30.386 2.52784 --10.4924 -30.2201 3.17992 --11.1482 -30.6719 3.72177 --11.1193 -30.5311 4.78488 --11.0996 -31.3894 5.32681 --11.7457 -31.9448 4.97306 --11.3606 -32.8001 4.83623 --11.9832 -32.9243 5.6258 --12.7914 -33.5503 5.7888 --12.5611 -33.6306 6.78019 --12.2953 -34.4923 6.23625 --11.6441 -34.0194 5.63067 --11.0172 -33.3924 6.0716 --10.3559 -32.6466 5.868 --9.84982 -31.9281 5.52081 --9.3162 -31.6042 6.27711 --9.91195 -30.7939 6.44743 --9.4695 -30.2407 7.20479 --9.84419 -29.3959 6.87219 --9.52942 -28.4614 6.80415 --8.7354 -28.4048 7.42659 --8.11155 -28.9294 6.76135 --7.15942 -29.3692 6.84382 --7.17706 -28.9015 5.95513 --7.05746 -29.1112 4.97361 --6.29676 -28.4266 5.02954 --5.61739 -27.7924 5.35387 --5.16213 -26.9781 5.137 --5.51372 -26.4432 4.38017 --4.68885 -26.4479 3.82319 --5.05924 -26.391 2.91518 --4.76006 -27.3053 2.76286 --3.93485 -27.6365 3.21852 --3.18369 -27.7108 2.52604 --3.17204 -28.446 1.89714 --3.45552 -27.8842 1.12934 --2.81722 -28.5809 0.8344961 --2.7704 -29.4673 0.4301531 --2.17301 -30.1634 0.9266991 --2.66834 -30.9561 0.4182791 --2.54031 -31.9102 0.3959231 --1.94688 -32.4724 -0.2143409 --1.99011 -31.6136 -0.7083849 --1.90272 -32.474 -1.26499 --2.17053 -32.0833 -2.16425 --1.77033 -31.7624 -3.05559 --1.21428 -31.2006 -2.48993 --0.360399 -31.5813 -2.67904 --0.458845 -32.5009 -2.24463 -0.414483 -32.764 -1.9161 -0.958047 -32.929 -1.10683 -0.857245 -33.9309 -1.1363 --0.11235 -33.6957 -0.8697039 --0.587633 -34.4517 -1.22852 --0.456469 -34.7918 -0.3372039 --0.511243 -35.6396 0.3102441 --0.07963933 -36.4274 -0.06488348 --0.408271 -35.8679 -0.8275969 --1.04439 -35.2898 -1.34844 --1.74473 -36.0523 -1.19471 --2.59566 -35.78 -1.54295 --2.4239 -35.3803 -2.39169 --1.63869 -35.8082 -2.84282 --0.973177 -36.5427 -2.66819 --0.299181 -37.2599 -2.85176 -0.35901 -36.9402 -3.52274 -0.153375 -36.1217 -3.99497 -0.602714 -35.3732 -4.58523 -1.36403 -35.695 -4.11407 -1.13624 -36.4944 -4.75868 -1.95605 -35.9361 -5.01615 -2.08005 -35.6277 -5.91686 -1.98913 -36.5847 -5.80777 -2.88073 -36.5706 -6.21002 -2.86723 -35.7079 -6.72484 -2.53392 -34.7625 -6.75886 -2.99056 -33.8852 -6.72324 -3.13312 -32.9534 -7.03741 -3.82661 -33.0429 -7.78904 -3.05067 -32.473 -8.20499 -2.10805 -32.3276 -8.4991 -2.03354 -33.0898 -7.91915 -1.1762 -32.7337 -7.57395 -0.916799 -31.8761 -7.18013 -0.73491 -32.5249 -6.34246 -0.745324 -31.744 -5.67489 -1.33584 -31.0485 -5.28121 -2.25507 -31.5261 -5.23328 -2.80718 -30.7049 -5.04458 -3.33137 -30.1322 -4.47059 -3.97492 -30.7238 -5.03206 -4.54957 -29.8912 -4.81308 -4.28569 -28.9254 -4.92268 -3.73862 -28.3431 -4.26754 -3.09364 -27.929 -3.60119 -2.279 -27.6443 -3.14127 -1.55312 -26.9725 -2.8759 -1.19627 -26.1231 -2.52458 -1.03391 -25.8475 -3.48845 -1.83093 -25.2086 -3.34491 -1.21103 -24.3901 -3.18723 -0.410133 -23.6833 -3.28363 -0.724984 -23.6856 -4.19096 -0.709613 -22.7732 -3.82177 -0.529672 -22.2189 -4.63617 -1.03514 -21.5481 -5.19575 -1.97146 -21.5503 -4.70378 -2.88473 -21.2971 -4.72042 -3.31385 -21.825 -3.95996 -2.8572 -21.6083 -3.09096 -1.87242 -21.3224 -2.95046 -2.62274 -20.9591 -2.33327 -3.17574 -21.6194 -1.7722 -4.14737 -21.6816 -1.74102 -3.82457 -21.3974 -2.66535 -4.78828 -21.1266 -2.88471 -5.49353 -20.836 -3.57195 -4.61718 -20.2537 -3.55507 -4.82737 -20.0048 -2.59484 -5.48616 -19.2691 -2.75022 -5.07699 -19.1145 -1.87406 -4.99075 -18.1701 -1.61066 -4.03136 -18.5348 -1.63927 -4.15947 -17.585 -1.90669 -3.66141 -17.2229 -2.73579 -2.70217 -17.1157 -3.14992 -2.61133 -17.7758 -2.4429 -1.70015 -17.7168 -2.05843 -1.63764 -18.5066 -1.4912 -1.62861 -19.3919 -1.15111 -0.61747 -19.4552 -1.13758 -0.992767 -20.4298 -1.2495 -1.31512 -20.3418 -2.15929 -0.42165 -19.9891 -2.45045 --0.57002 -19.9023 -2.36026 --0.930017 -19.0558 -2.84128 --0.271876 -18.3675 -2.88757 -0.445859 -17.8202 -3.22805 -0.50654 -16.8849 -2.93476 --0.03413963 -16.9235 -2.14862 -0.843417 -16.6817 -1.80023 -0.196545 -15.9239 -1.84942 -0.06232547 -15.5097 -0.9087939 --0.23593 -14.5751 -1.20143 --0.167174 -13.7989 -1.85691 --0.487251 -12.8323 -1.92537 --1.29926 -12.2589 -1.87453 --0.911351 -11.8874 -1.05131 --0.384124 -12.3207 -0.3850729 -0.467525 -11.8433 -0.2822339 -0.63973 -12.6824 -0.8651389 -1.3566 -13.1636 -0.3727199 -2.35407 -13.0462 -0.09508098 -1.87928 -13.3691 0.6990161 -2.67565 -12.7658 1.05821 -1.93313 -12.9289 1.76265 -1.34931 -13.3911 2.43258 -0.794268 -12.5214 2.42501 -0.153415 -13.1004 2.07843 -0.178592 -13.0078 3.10963 -0.524956 -13.9704 3.11165 -1.53156 -14.0132 3.19736 -1.71359 -14.955 2.98557 -1.93256 -15.7897 2.7653 -2.06459 -15.4245 1.8613 -2.65987 -14.945 2.49717 -3.06078 -15.8514 2.20276 -2.58705 -16.5574 1.75196 -3.06309 -16.2656 0.9217101 -2.88813 -17.105 0.3392571 -3.64971 -17.4046 -0.2114959 -4.45519 -17.9561 -0.05997188 -4.29051 -17.2031 0.6092351 -4.13369 -17.8406 1.35575 -4.00324 -16.9198 1.70055 -4.9654 -16.7698 2.03593 -4.8595 -15.9876 2.65586 -4.88136 -15.73 3.67585 -5.80358 -15.3276 3.60176 -6.57166 -15.5924 2.98275 -7.17685 -14.9982 3.41853 -7.01784 -14.0136 3.71085 -7.72182 -13.2857 3.55628 -7.5624 -13.0178 2.56559 -8.14637 -13.488 1.93623 -7.92311 -14.1143 1.26338 -7.13224 -13.7527 1.70324 -6.17747 -13.6724 1.64618 -5.60247 -12.935 1.79794 -6.21141 -13.0311 2.5432 -6.3332 -12.4984 3.42267 -7.09366 -11.8126 3.40877 -7.14761 -12.1946 4.24342 -7.22227 -11.8649 5.16594 -6.28327 -11.9619 5.55196 -6.05591 -12.3594 6.48994 -6.96258 -12.2167 7.02597 -7.17089 -11.2613 6.72332 -7.96803 -10.7203 6.56381 -7.8604 -11.5484 6.07592 -8.27153 -12.3343 6.59897 -8.27736 -12.4939 5.59568 -8.11177 -13.2946 4.99201 -8.69217 -14.0784 5.21071 -8.98387 -15.0048 5.62814 -8.31661 -14.8626 6.277 -8.16536 -14.2274 7.04688 -8.78818 -14.9842 7.21579 -8.86161 -15.7153 7.92897 -9.34962 -15.0732 8.60808 -8.82617 -14.4165 9.06482 -7.86269 -14.3018 8.85571 -7.32975 -14.9175 8.27077 -6.93507 -14.8359 9.21417 -5.97861 -14.6327 9.361 -5.76179 -13.6579 9.51383 -5.83498 -14.3353 10.3086 -5.56235 -15.2154 10.1213 -4.97111 -15.5759 9.39779 -4.97547 -16.5043 9.51957 -5.93961 -16.5261 9.61539 -6.34754 -16.3269 10.5453 -6.81397 -16.5627 11.4128 -7.74164 -16.2191 11.3764 -7.95084 -16.0332 10.3927 -7.46729 -15.2378 10.7714 -7.11819 -14.4148 10.5322 -6.78388 -14.199 11.4343 -6.21586 -15.0746 11.3899 -5.51534 -15.7988 11.4302 -5.68739 -16.6118 11.942 -6.2412 -16.9314 12.7069 -5.90153 -17.6983 12.2225 -6.65548 -18.2471 12.0331 -6.68724 -18.933 11.4054 -6.61509 -19.2863 10.4868 -7.18091 -19.3185 9.63424 -7.05312 -18.3391 9.46843 -7.08122 -18.3595 8.45386 -8.04773 -18.3622 8.76092 -7.67101 -19.0151 8.09662 -8.28163 -19.4801 7.42341 -9.1589 -19.8519 6.99485 -9.29328 -20.1216 7.97268 -9.65087 -21.0568 7.84163 -9.55966 -20.8248 6.89521 -9.83833 -20.616 5.99148 -9.7105 -19.6579 5.56449 -10.073 -19.3215 4.72588 -10.8447 -18.6405 4.62493 -11.6387 -18.3455 5.12041 -11.4862 -18.0797 6.096 -11.0112 -18.5028 6.8993 -10.9989 -19.3437 6.29093 -10.9647 -20.0017 5.46091 -11.6915 -19.7313 4.91117 -12.3457 -20.2572 4.38944 -12.6286 -20.0153 3.44126 -13.0398 -20.873 3.40756 -13.103 -20.821 2.42337 -13.1089 -19.851 2.08783 -13.2204 -18.9466 2.62945 -13.1944 -17.9768 2.83552 -13.987 -17.3754 2.9129 -13.8976 -16.458 2.51572 -13.4982 -16.3481 3.39067 -13.3167 -15.3371 3.11086 -14.1239 -14.7813 2.87749 -14.0822 -14.9664 3.90174 -14.0952 -15.4366 4.74873 -14.0452 -14.6582 5.36334 -13.5111 -14.375 6.1075 -13.3858 -13.5418 5.65788 -12.5668 -12.9139 5.5024 -11.7001 -12.4814 5.37338 -11.3056 -13.4328 5.21158 -11.635 -14.3581 5.36317 -11.198 -15.2874 5.49238 -10.3311 -15.7221 5.24523 -9.8002 -15.7838 5.9913 -10.1546 -15.6022 6.97369 -10.8658 -15.0947 6.53863 -10.8438 -14.2298 7.10869 -11.723 -14.507 7.40902 -12.4421 -15.179 7.32751 -11.7519 -15.9846 7.14129 -11.0558 -15.6713 7.8654 -10.6811 -16.455 8.40375 -10.8155 -15.8519 9.24817 -10.9499 -15.9213 10.2237 -10.4383 -16.7658 10.5611 -10.1831 -15.9094 10.9761 -10.5314 -16.4741 11.7642 -11.4206 -16.3372 12.1379 -11.7636 -17.0324 11.5194 -12.3074 -17.1108 10.7061 -12.2612 -16.1566 10.634 -12.7345 -15.3075 10.4269 -13.2126 -15.6331 11.2934 -14.0802 -16.0132 11.5596 -14.7659 -16.7001 11.3479 -15.6853 -16.6358 10.8638 -16.0671 -16.7979 11.7476 -15.7609 -16.2544 12.5344 -15.0903 -16.2686 13.3113 -15.4613 -17.0945 12.8697 -16.1836 -17.7099 12.4822 -16.8091 -18.2433 11.9256 -17.1737 -18.5664 11.1026 -18.0477 -18.0673 11.3411 -18.7248 -18.4813 10.7993 -18.8594 -18.9269 9.87395 -19.5065 -18.3631 9.39073 -19.778 -18.2879 8.38091 -18.8583 -18.1224 8.09852 -17.9218 -17.94 8.38878 -17.8338 -17.1353 7.81957 -17.8263 -16.8713 6.87306 -17.9303 -16.5217 5.95954 -18.8579 -16.3036 6.22518 -18.9749 -17.2279 5.96216 -18.4448 -17.156 5.07423 -18.1502 -16.6044 4.28115 -18.3682 -17.3721 3.72192 -17.4752 -17.4938 3.36418 -17.3637 -16.8215 2.72243 -16.9707 -17.6037 2.21532 -16.0666 -17.4294 2.50703 -15.8446 -17.0045 3.35542 -16.1012 -17.2274 4.26125 -15.7743 -16.8361 5.16672 -15.2055 -16.0143 5.2018 -15.1814 -15.0103 5.14671 -15.3478 -14.5413 6.02271 -15.6293 -14.4512 6.98319 -15.133 -14.4495 7.88266 -14.6078 -14.3421 8.65998 -14.6309 -14.2505 9.61225 -14.9512 -14.8067 10.3418 -14.5821 -14.316 11.118 -13.957 -13.7111 11.6339 -13.0608 -13.4539 11.8512 -12.7158 -14.284 12.1503 -12.5365 -15.0984 12.6652 -13.0162 -15.6947 13.2954 -13.3721 -15.4126 14.1946 -12.7329 -16.2178 14.3753 -13.6254 -16.6406 14.7912 -14.53 -16.3142 15.0996 -14.3285 -17.2259 15.4076 -13.3263 -17.1892 15.7368 -12.3974 -17.0303 15.4481 -11.5135 -17.4388 15.5794 -10.9328 -17.7495 16.3625 -10.7748 -18.3411 17.0725 -10.6334 -18.8969 16.2728 -11.6419 -18.9209 16.0434 -11.7429 -19.8755 16.193 -12.1049 -19.5946 15.3793 -11.4963 -20.3817 15.0564 -10.6101 -20.0931 15.1305 -10.5206 -20.6486 14.2993 -10.7772 -19.8441 13.8223 -11.0142 -18.878 13.7167 -11.9871 -19.0792 13.7971 -12.618 -18.5345 14.3825 -12.4211 -18.1976 13.4555 -13.0555 -17.3804 13.3697 -13.3799 -18.0548 14.0328 -13.6604 -18.2793 13.1366 -13.1845 -18.1826 12.2842 -13.5287 -18.4204 11.3638 -13.7724 -18.0138 10.5001 -13.0649 -18.1861 9.78918 -13.156 -18.0834 8.73687 -12.9574 -18.1378 7.72102 -13.3069 -19.0813 7.4817 -13.7407 -19.5249 6.73852 -14.5287 -20.2277 6.74153 -15.1868 -20.9136 6.9128 -15.7649 -20.1707 6.63356 -16.3889 -20.9141 6.24113 -16.5886 -21.6155 5.55567 -16.1157 -22.3306 5.11836 -16.0531 -22.6098 4.18776 -16.2095 -22.6962 3.2344 -16.7256 -23.2651 2.60893 -17.5102 -23.7065 3.11611 -18.4703 -23.4053 3.36056 -19.0693 -22.9775 2.68477 -19.8192 -23.0195 1.95786 -20.3637 -22.8699 2.84435 -21.322 -22.4882 3.12053 -21.5567 -22.7301 4.04867 -21.549 -21.7481 3.97595 -21.0082 -20.9094 3.81826 -21.8826 -20.4569 3.7735 -22.0214 -20.8302 4.72657 -22.7386 -21.4975 5.09081 -21.7995 -21.7054 5.20251 -20.8566 -21.9048 4.93589 -20.6404 -22.8599 4.82119 -20.7561 -23.0472 5.71458 -21.0563 -23.8574 6.32326 -20.2487 -23.5412 6.7578 -20.9352 -23.0948 7.3379 -21.6897 -23.2367 7.89256 -22.4406 -22.9273 8.54203 -23.2685 -22.593 8.94899 -23.5834 -21.8985 9.61068 -23.0278 -21.1476 9.14305 -23.867 -20.7215 8.72788 -23.8374 -20.787 7.69991 -24.4179 -20.077 7.24585 -23.6264 -19.5281 7.02086 -23.4435 -20.0672 6.21639 -23.1678 -21.088 6.16858 -23.1467 -21.8085 6.90456 -22.1506 -21.5094 6.69907 -21.1973 -21.4819 6.92606 -21.0171 -20.5428 6.7711 -21.487 -19.6936 6.75878 -20.5629 -19.4386 6.90618 -19.9985 -20.0258 6.17768 -20.1115 -21.0785 6.18236 -19.3248 -21.623 6.28505 -18.4337 -21.3014 6.62267 -17.8302 -21.5718 7.36741 -17.0878 -21.2281 7.94202 -18.0028 -20.9761 8.23412 -18.9927 -20.701 8.4125 -18.7137 -21.6375 8.73744 -19.2524 -22.0995 9.49334 -18.7086 -22.2619 10.3831 -17.8389 -22.0463 9.93282 -18.0998 -21.3577 10.502 -18.6046 -20.4705 10.6095 -18.3064 -20.7582 11.5391 -17.2499 -20.6234 11.5099 -16.7733 -20.5792 12.3159 -16.1025 -20.3095 11.5627 -15.3817 -19.8425 12.2067 -14.7469 -19.8778 12.8762 -14.6994 -20.1232 13.8701 -14.1051 -19.8191 14.6205 -13.4749 -19.2103 14.2382 -12.9895 -19.5755 13.3715 -13.0599 -20.1447 12.5218 -13.6879 -20.8666 12.1303 -13.6325 -21.6477 12.7415 -13.9034 -22.0996 11.8569 -14.0614 -22.0642 10.8381 -14.6849 -22.5583 10.2732 -14.5732 -22.9638 11.1215 -15.1017 -22.3891 11.8122 -15.9051 -22.7113 12.2754 -16.2753 -22.1337 11.5461 -16.5115 -22.5365 10.6879 -17.3168 -23.0861 11.0035 -17.4645 -22.2728 11.5115 -17.2379 -21.6492 12.1977 -17.2829 -22.4796 12.7562 -18.1832 -22.7439 13.0811 -17.596 -22.9665 13.7818 -16.9791 -23.5318 13.3022 -16.2667 -24.1316 13.7055 -15.2491 -23.9898 13.7683 -14.3598 -23.9543 13.9836 -14.5485 -23.0442 14.1794 -13.7892 -22.4389 14.2708 -13.4683 -22.5891 13.3201 -12.8258 -23.358 13.4779 -13.5089 -23.7435 12.8382 -13.8857 -24.6013 12.5539 -13.773 -25.3558 11.8657 -14.0552 -24.9295 10.9401 -14.5626 -25.6878 10.4627 -15.4461 -25.3208 10.1989 -14.8627 -24.6992 9.83406 -14.534 -24.9829 8.88792 -14.7117 -25.4011 8.02876 -14.4857 -24.4755 7.67402 -14.1342 -24.1674 6.74341 -13.4078 -23.9976 7.42437 -12.6555 -23.5599 7.73617 -12.3974 -24.2314 7.04237 -12.9702 -24.6645 6.32612 -13.6842 -25.2158 6.74853 -13.0235 -25.7514 7.24851 -12.2514 -26.3636 7.26753 -12.8314 -27.0606 7.81207 -12.6038 -27.8513 7.30983 -12.5735 -28.8431 7.33749 -12.2396 -29.4098 6.44482 -12.0508 -29.6759 5.49806 -11.1502 -29.3207 5.49548 -10.3558 -30.0383 5.46283 -10.4545 -29.5513 4.58895 -10.8345 -30.4871 4.40751 -11.1571 -30.5707 3.37287 -10.9448 -31.4042 2.91588 -11.1107 -31.21 1.93477 -11.8684 -31.6677 2.23084 -11.6723 -32.6405 2.36172 -12.2804 -32.985 1.5789 -13.0345 -33.188 2.21018 -13.4776 -32.3313 2.48776 -13.2799 -32.4183 3.54032 -12.38 -32.4992 3.93767 -11.7363 -33.0756 4.53455 -11.9752 -32.2608 5.10807 -12.3484 -31.8398 5.90166 -12.7273 -31.1033 6.55477 -13.5625 -30.7935 6.85635 -14.5374 -30.4824 6.92466 -14.0327 -29.6682 6.60034 -14.7562 -29.8488 5.87278 -15.5812 -29.4135 6.22909 -16.351 -28.7498 5.90148 -17.286 -28.7827 5.5711 -17.2101 -29.4979 4.86066 -18.2142 -29.3376 5.0335 -18.9499 -28.9752 5.62912 -18.8247 -29.505 6.46314 -19.3614 -28.6635 6.69959 -18.6793 -28.0041 6.5193 -17.9241 -27.8167 7.09957 -17.2506 -28.3906 7.42499 -17.2351 -27.6137 8.06259 -16.4655 -26.9911 8.11316 -16.3136 -26.0986 8.46319 -16.5576 -26.6716 9.24722 -15.9936 -27.4849 8.98096 -15.9024 -28.325 9.56145 -15.9493 -28.6549 8.59266 -15.0119 -28.8377 8.54455 -14.7886 -29.4459 9.29907 -13.9723 -29.4755 8.70547 -13.2021 -29.772 8.06898 -12.4609 -29.198 8.44785 -12.1864 -28.6542 9.21665 -12.5754 -27.8736 9.69171 -11.5337 -27.8182 9.72062 -11.1293 -27.2653 10.4702 -10.7706 -26.8435 9.61684 -10.4119 -27.5741 9.09648 -9.67231 -27.2997 9.7162 -9.24948 -26.9685 8.88765 -9.44275 -25.9831 8.70913 -9.68421 -25.7123 9.65043 -8.80783 -25.1966 9.79139 -8.55095 -24.237 9.62744 -8.56783 -23.4044 10.2054 -9.54485 -23.1074 10.0716 -9.24252 -22.6319 10.9331 -9.00656 -22.4687 11.8783 -8.52612 -21.788 12.5188 -7.58063 -21.5398 12.7332 -8.03518 -20.8632 12.1035 -7.37243 -20.1195 12.0151 -7.68539 -20.5901 11.1883 -7.1647 -21.3924 11.4196 -7.17981 -21.4898 10.4483 -7.90993 -21.8043 9.78448 -8.92344 -21.8076 9.74444 -9.00628 -21.1035 10.5018 -9.57446 -21.4648 11.2466 -10.4096 -21.203 10.8521 -10.803 -21.0681 11.7954 -11.0162 -20.0604 11.6974 -11.8033 -20.6984 11.6767 -12.3131 -21.5249 11.4426 -12.7873 -21.0998 10.6249 -13.5182 -20.619 10.1947 -13.6747 -20.0911 9.36468 -12.7577 -19.983 9.17493 -12.0384 -19.4029 9.54754 -11.979 -19.5386 8.63212 -11.749 -20.435 8.21792 -11.1703 -20.6209 7.38999 -11.8332 -20.7135 6.63279 -12.2643 -19.8192 6.92832 -13.0222 -20.3327 6.69309 -13.418 -20.4819 7.68552 -13.3705 -21.3375 7.29635 -12.5075 -21.6061 6.7935 -12.1022 -21.945 5.96311 -11.1334 -22.0081 6.27865 -11.0344 -23.0421 6.27601 -10.7902 -23.6714 5.45677 -10.415 -24.1962 6.27434 -10.3495 -24.7104 7.12187 -10.3194 -25.6248 7.51287 -11.1758 -25.1171 7.57312 -11.5482 -25.6893 6.78744 -10.7329 -25.8882 6.32479 -9.78489 -25.8366 5.79944 -9.07751 -25.1952 5.52148 -8.22989 -24.9789 5.82999 -8.1592 -24.329 6.49966 -7.58826 -24.9065 7.06586 -7.56061 -25.7614 6.59574 -6.56482 -25.8701 6.2969 -6.14562 -26.6806 6.23979 -6.67179 -26.4506 5.41113 -7.19327 -27.1934 5.77093 -6.81251 -28.016 6.11493 -5.9142 -27.7554 5.82514 -5.32528 -27.906 5.04563 -5.70637 -26.995 5.07576 -6.47645 -27.5915 4.67971 -6.6919 -26.9524 3.98946 -5.98767 -26.6966 3.26532 -5.0725 -26.3003 3.58836 -5.38928 -25.4908 4.10018 -5.68945 -25.1374 4.90183 -6.67885 -24.8368 4.6686 -7.49044 -24.3131 4.36011 -6.84268 -23.5632 4.54226 -6.04767 -23.6115 5.10118 -5.32773 -23.8456 5.81054 -4.42231 -24.1312 5.57109 -3.83804 -23.8855 4.74021 -3.50793 -23.1873 4.12267 -3.72672 -23.4429 3.2153 -3.9351 -23.201 2.29834 -3.8863 -24.0834 1.93382 -4.80595 -23.5955 1.99305 -5.68653 -23.6604 1.66909 -6.03855 -24.5161 1.83158 -6.52102 -24.1112 2.55885 -6.95061 -23.6561 1.7993 -7.72034 -23.001 1.72749 -8.0176 -23.9464 1.96953 -8.64399 -23.456 1.39549 -9.41492 -23.1898 0.7758301 -9.18482 -22.8796 -0.1361699 -8.8823 -21.9178 -0.1691859 -7.95912 -22.2034 -0.04778818 -6.9871 -22.1418 -0.05680968 -6.32169 -22.928 0.05137812 -6.0944 -22.4103 -0.7216199 -5.58956 -23.2502 -0.4723959 -5.7931 -23.07 -1.4354 -4.82376 -23.2824 -1.43017 -3.88781 -23.4134 -1.4872 -3.22408 -23.4939 -0.7584419 -3.0267 -22.8048 -1.43799 -2.72904 -22.949 -2.31533 -2.0127 -23.1897 -3.01016 -2.96822 -23.1114 -3.39036 -3.64681 -22.7031 -2.73805 -4.53529 -23.2184 -2.88132 -5.15892 -22.7239 -3.38909 -5.93296 -23.2106 -3.76128 -5.78365 -24.1386 -4.12915 -6.19308 -24.1198 -3.20019 -6.80716 -23.6869 -3.86208 -6.73302 -24.5277 -4.29842 -7.61487 -24.2158 -4.68194 -7.74897 -23.3994 -5.1772 -7.82792 -22.6044 -5.69422 -8.29955 -21.7287 -5.40162 -9.20053 -21.7269 -4.95995 -9.61559 -21.3885 -5.82532 -9.40583 -22.2208 -6.30772 -8.84144 -21.5762 -6.93228 -9.45234 -22.3414 -7.29506 -9.29291 -23.1579 -7.94219 -8.7587 -22.4997 -8.51473 -9.21281 -21.7891 -9.12996 -8.4158 -21.1957 -8.97225 -7.70424 -21.2533 -9.64591 -7.53949 -22.0066 -10.3182 -7.0867 -22.4891 -9.51153 -6.42001 -22.5181 -8.70625 -5.73364 -23.131 -8.42925 -5.62286 -24.1254 -8.42003 -5.55654 -24.4012 -7.47736 -5.36575 -25.3531 -7.76003 -4.62712 -25.3239 -7.0576 -5.39373 -25.3294 -6.46031 -6.14548 -26.0025 -6.24019 -7.18077 -26.0112 -6.3566 -7.94806 -26.4781 -5.88337 -8.10677 -27.4499 -5.63721 -7.76294 -27.598 -4.65677 -8.04801 -27.7039 -3.66361 -7.55408 -26.8703 -3.49585 -8.36756 -26.3047 -3.64368 -9.3362 -26.5334 -3.76371 -10.2722 -26.3511 -3.5213 -11.1084 -26.7874 -3.18128 -11.2072 -27.4833 -2.421 -11.1454 -26.8236 -1.75476 -12.1061 -26.7984 -1.88993 -12.9958 -26.9171 -1.54549 -12.9284 -26.4632 -0.6782079 -12.3161 -25.7011 -0.5467779 -12.6028 -24.7218 -0.4264899 -12.6556 -25.3131 0.4292701 -13.4288 -25.5913 0.9645151 -14.2518 -25.0061 1.05274 -14.5052 -24.275 0.4051651 -14.0582 -24.4402 -0.4720799 -13.8082 -23.9312 -1.28918 -14.2319 -24.0508 -2.21962 -13.4274 -23.7871 -2.77572 -13.0865 -23.6087 -3.76133 -13.2707 -24.2856 -4.44047 -14.1406 -24.545 -4.14306 -13.7023 -25.292 -3.68761 -14.0386 -25.6951 -4.66843 -15.0433 -25.7142 -4.36276 -14.8269 -24.9302 -4.96897 -15.3868 -24.4189 -4.24 -15.2946 -23.4547 -4.27703 -16.2167 -23.2461 -4.50542 -16.9491 -23.7255 -4.28437 -17.4923 -22.9456 -3.88588 -16.6641 -22.621 -3.47284 -15.8232 -22.1554 -3.25514 -15.6458 -22.133 -2.29331 -14.9361 -21.7056 -1.77192 -14.2524 -21.8726 -2.49504 -14.81 -21.3205 -3.14853 -15.6495 -20.8727 -2.93704 -15.1703 -20.1984 -2.37891 -15.7081 -19.5312 -2.90227 -16.0183 -19.6339 -3.86371 -15.5461 -19.3737 -4.71793 -15.9658 -18.67 -5.29029 -15.8786 -18.2356 -4.38833 -14.9764 -18.2639 -4.73806 -15.3978 -17.4961 -5.15639 -16.3737 -17.0602 -5.34423 -16.3689 -16.5067 -4.53316 -16.9765 -16.3062 -3.72958 -17.7718 -15.7647 -3.83099 -18.1128 -14.8512 -3.57039 -17.2757 -14.4584 -3.25934 -16.6488 -13.8294 -2.72542 -15.6954 -14.1938 -2.6246 -15.408 -13.264 -2.36075 -15.1016 -14.0209 -1.82528 -14.6206 -14.0133 -0.9356809 -14.7685 -14.3374 -0.08821208 -15.6028 -14.7019 -0.5401639 -15.8735 -15.6247 -0.7069929 -16.1094 -16.6051 -0.5554309 -15.4691 -17.2226 -0.8694259 -15.6121 -17.9579 -0.1142679 -14.7342 -18.2186 0.1428551 -13.8853 -18.4837 0.5881911 -13.6303 -19.3868 0.3846621 -12.7315 -19.1541 0.1002611 -12.2785 -18.781 -0.7333489 -13.2788 -18.8959 -1.11139 -13.7198 -18.0232 -1.15812 -13.9843 -17.0465 -1.53942 -13.1229 -17.0146 -1.23949 -12.8273 -16.4642 -0.5199449 -13.0084 -15.8096 0.2088021 -13.1112 -16.4642 0.9113921 -13.6966 -17.2736 0.7385281 -14.6203 -17.2241 1.11258 -15.6273 -17.3534 1.23108 -15.9301 -16.3926 1.19328 -16.167 -15.4405 1.36317 -17.0425 -15.7469 0.9498541 -17.8629 -15.2182 0.8358491 -18.7588 -15.1483 0.3855941 -17.9444 -15.4757 -0.09787118 -17.9279 -15.6607 -1.11502 -18.9461 -15.5739 -1.04662 -18.43 -15.157 -1.78923 -17.8474 -14.5127 -1.43214 -18.6678 -13.8918 -1.53267 -19.3434 -14.5593 -1.22441 -19.9448 -13.9165 -1.67982 -20.3016 -13.2105 -1.06688 -19.544 -12.9206 -1.65768 -19.2227 -12.0052 -1.47468 -18.5778 -11.2056 -1.52814 -17.6521 -11.3824 -1.15417 -17.5059 -12.1155 -1.77241 -17.082 -12.3496 -0.8819149 -17.3913 -13.3242 -0.7079829 -16.5312 -13.8821 -0.6354939 -17.1352 -14.3784 -0.01819998 -18.0565 -13.9894 0.2101861 -18.8109 -13.3898 0.03182242 -19.7025 -13.5728 0.4303421 -19.4416 -13.3448 1.3898 -19.946 -13.9508 1.96492 -19.8015 -14.8146 2.48534 -19.207 -15.5789 2.27357 -19.587 -15.3801 1.33213 -19.9004 -14.9826 0.5038281 -20.5887 -14.5659 -0.1245599 -21.2919 -15.195 0.0079754 -21.8268 -16.021 -0.3667259 -21.0726 -16.6018 -0.2237009 -20.4022 -17.0561 0.3494221 -21.2696 -17.5183 0.6261871 -21.8865 -18.2366 0.2751361 -21.2799 -17.9099 -0.4315259 -21.9362 -17.6462 -1.23282 -21.6757 -16.8263 -1.53378 -21.7622 -15.8724 -1.85993 -22.3624 -15.0185 -1.81897 -22.3082 -14.0162 -1.81103 -22.6686 -13.6309 -2.63702 -21.9987 -12.9822 -2.25182 -21.1804 -13.2642 -1.7815 -21.6413 -12.8372 -0.9601729 -20.9596 -13.1269 -0.3035129 -21.3879 -12.6589 0.4356981 -21.4897 -11.9542 1.10496 -22.1817 -11.1654 1.00499 -22.5099 -11.821 0.2279191 -23.3536 -12.1516 0.6512961 -24.0348 -11.966 -0.1504829 -24.9269 -12.0707 -0.5337359 -25.6982 -11.4738 -0.05943088 -25.8534 -10.546 -0.3807949 -26.2806 -9.88787 -0.9417309 -26.5293 -9.23632 -1.67777 -26.0299 -9.47149 -2.56934 -26.6688 -10.1435 -2.90728 -26.6893 -10.3968 -3.94174 -27.2918 -10.5794 -4.72848 -27.3172 -10.5785 -5.7645 -27.8453 -11.4316 -6.02445 -27.3012 -12.2626 -5.75543 -27.961 -12.6693 -6.26681 -27.6374 -13.5663 -5.88558 -27.8772 -13.9462 -5.04422 -26.9319 -13.8126 -4.72627 -26.8369 -13.7678 -3.71823 -26.3681 -13.2233 -2.93366 -25.8073 -13.6273 -3.65242 -25.8385 -12.6274 -3.95244 -25.648 -12.1548 -3.07618 -24.6706 -11.8553 -2.97191 -23.7876 -11.4843 -2.94817 -22.8611 -11.8332 -3.13811 -22.5856 -11.2757 -3.9022 -22.2007 -10.4323 -3.64756 -21.2205 -10.1217 -3.53511 -20.7558 -10.3695 -2.65387 -21.0698 -9.534 -2.21001 -21.3796 -9.66503 -1.25807 -20.6337 -9.00032 -1.33058 -20.6194 -9.60706 -0.5632739 -19.6303 -9.61935 -0.4039059 -18.6638 -9.65056 -0.03480318 -17.9419 -10.1328 0.4292331 -18.3419 -9.8927 1.29877 -18.4619 -8.84966 1.2952 -18.8807 -8.79515 2.22778 -19.2998 -8.65813 3.09498 -19.1228 -9.57009 3.49961 -19.6879 -10.4124 3.83382 -20.1997 -10.8605 3.14083 -20.3136 -11.802 3.40431 -21.2096 -12.1021 3.03575 -22.0085 -12.1099 2.45198 -22.3444 -12.4324 1.57153 -22.1328 -13.336 1.24382 -22.187 -13.9264 0.4201471 -22.4608 -14.7866 0.07742082 -23.1895 -15.372 0.3312191 -23.1407 -15.7333 1.25453 -23.985 -15.3002 1.0789 -23.4603 -14.9585 1.89027 -22.4195 -14.9481 2.03992 -22.0306 -14.384 2.71218 -21.2537 -14.5147 3.27402 -20.962 -15.1406 2.48127 -21.1459 -16.0674 2.14959 -22.0446 -16.4505 2.1469 -22.3591 -17.1086 2.91305 -21.7114 -17.8626 2.95936 -20.8878 -18.1721 2.53366 -21.0181 -18.5609 3.42006 -21.4609 -19.3297 2.86831 -22.2704 -19.7644 2.33214 -22.7516 -20.4003 1.66228 -22.6713 -21.1695 2.3898 -23.3634 -21.931 2.29419 -23.9988 -21.8873 3.07666 -24.4284 -22.7043 2.67701 -25.3956 -22.5596 2.27951 -25.384 -22.1825 1.35644 -25.15 -22.2411 0.3211971 -25.2705 -21.6658 -0.5292969 -24.3142 -21.3541 -0.5466199 -23.588 -22.0542 -0.3334429 -23.5415 -23.0198 -0.4940779 -22.8746 -23.0371 0.2345871 -22.0312 -23.5227 -0.1970019 -21.8002 -24.3502 0.2218071 -21.2913 -25.0181 0.8299931 -22.1779 -25.3834 1.14798 -21.7446 -25.8786 0.3867981 -21.2067 -26.6895 0.6205601 -21.4681 -27.2797 1.40048 -22.2178 -27.8615 0.9611791 -22.2405 -28.5416 0.1671061 -22.0253 -29.1803 0.8594391 -21.1766 -28.7372 0.4869451 -20.7841 -28.9568 1.43094 -19.951 -28.4595 1.77823 -19.7445 -28.4781 2.8397 -19.0263 -28.9197 2.36393 -18.4804 -29.6721 2.79756 -17.9276 -28.8742 2.76709 -17.1634 -28.8814 3.35395 -16.4301 -28.6025 2.79021 -16.2542 -28.1459 3.61319 -15.4133 -28.4568 3.21062 -14.8826 -27.6954 2.93173 -15.42 -26.9724 2.6197 -15.3368 -26.6487 1.63176 -15.9499 -26.3703 0.8685331 -16.7825 -26.099 1.39732 -16.7679 -25.0995 1.27961 -17.4103 -24.4104 1.00427 -17.6339 -23.4168 0.6795921 -18.2092 -23.3152 -0.1660229 -18.7116 -22.4843 -0.05645268 -19.2455 -22.4944 0.6821191 -19.0494 -23.3193 1.14776 -18.8271 -24.0673 1.8293 -19.3946 -24.673 1.28536 -19.8999 -25.122 1.94779 -19.59 -25.8438 2.594 -20.438 -26.1358 3.04804 -20.492 -27.0984 2.87652 -21.006 -27.171 3.74725 -21.9065 -27.6414 3.91769 -21.3803 -27.6646 4.77227 -20.4668 -27.7852 5.20785 -19.4809 -27.8458 5.0824 -18.7737 -27.1688 4.96253 -18.5002 -26.7234 5.81214 -18.791 -25.9188 5.32324 -18.1779 -25.2414 5.05507 -17.2552 -25.4908 5.22652 -16.755 -24.6588 5.05159 -15.9359 -24.1429 5.46816 -16.0255 -23.6971 6.33737 -16.0763 -24.0009 7.22411 -16.2665 -23.7036 8.15069 -17.0089 -23.8093 8.8043 -17.9867 -23.6233 8.58075 -18.2505 -24.6264 8.59636 -19.1316 -25.0869 8.72933 -19.8966 -25.288 8.23042 -19.8349 -26.0441 8.86524 -20.3411 -25.2849 9.25834 -20.6439 -24.9364 10.1343 -20.551 -24.525 11.0441 -21.4969 -24.0495 10.9478 -22.174 -24.7832 10.6338 -22.15 -25.4921 11.3486 -21.2967 -25.4958 11.8533 -20.8683 -24.6807 12.1247 -21.2876 -24.2208 12.9058 -20.8946 -24.7068 13.7719 -20.3843 -24.826 14.6094 -20.0756 -25.0142 15.6003 -19.1647 -25.2685 15.4871 -19.1507 -25.9252 16.2526 -18.46 -26.4217 15.7307 -17.5974 -26.796 15.3835 -17.7285 -27.8052 15.1261 -16.6898 -27.6529 15.0499 -16.1205 -27.5356 15.8298 -15.4223 -27.898 16.416 -14.7248 -27.6752 15.7718 -14.7949 -26.7462 15.4272 -14.0963 -26.0387 15.4734 -13.3727 -26.642 15.1974 -12.577 -26.0112 15.1393 -12.4976 -26.1096 14.1154 -12.0212 -26.6609 13.447 -11.4641 -27.3502 12.9791 -11.1732 -26.5746 12.3464 -11.9641 -25.9724 12.0095 -12.5887 -25.3388 11.522 -11.891 -25.0539 10.8173 -11.1595 -24.7442 11.4336 -10.9504 -24.7667 12.4247 -10.2758 -25.0442 13.1675 -10.0852 -25.8759 13.7777 -9.73414 -25.8163 14.7002 -10.3942 -25.3477 15.1344 -10.4079 -24.3536 15.3628 -10.2915 -23.6999 14.6116 -9.616 -24.4156 14.2288 -8.8367 -25.0383 14.3016 -8.28542 -25.8505 14.5016 -8.54928 -26.7754 14.3833 -8.27389 -27.5484 14.9277 -8.77136 -27.3185 15.7689 -9.43977 -26.7603 15.3167 -9.95525 -27.5982 15.527 -9.83695 -26.9751 16.2811 -9.74588 -26.1794 16.7955 -9.16064 -25.3577 16.6046 -8.87783 -24.9774 17.4617 -9.38927 -24.4671 16.7778 -8.9587 -23.8486 17.3993 -8.34596 -23.5415 18.0924 -8.28692 -22.5797 18.3628 -8.82571 -21.7861 18.018 -8.83679 -20.8225 17.711 -9.13341 -20.6885 16.8397 -8.6825 -21.0573 16.0707 -7.75779 -21.4619 16.1724 -8.25928 -21.7776 15.3313 -8.00777 -21.4888 14.4278 -8.66338 -22.0989 13.9832 -8.59699 -22.8368 14.7242 -7.9489 -23.5298 14.9684 -7.9474 -23.7496 13.9386 -7.75646 -23.5032 12.9596 -7.3013 -23.1784 12.1014 -6.73028 -22.5745 11.5324 -6.09088 -22.1739 12.2073 -5.0975 -22.4724 12.0615 -5.4502 -21.5785 11.7142 -5.55647 -20.5279 11.7076 -4.64705 -20.6812 11.997 -3.81497 -20.2358 12.2813 -4.22566 -20.4078 13.1806 -3.63643 -20.014 13.9276 -3.76402 -19.5365 13.0476 -4.54926 -19.0236 13.4242 -4.01852 -18.3885 13.8635 -3.009 -18.3203 13.5332 -3.32447 -17.3593 13.8897 -3.64607 -17.0395 12.9544 -3.48975 -16.1523 12.6316 -3.24271 -15.7212 13.4922 -3.5622 -15.4342 14.4223 -3.45251 -15.7886 15.3171 -2.94998 -16.566 15.2095 -2.68328 -16.7032 16.215 -1.86329 -16.4068 16.6187 -1.01774 -16.7657 16.708 -1.31893 -16.5403 17.5676 -1.40879 -17.5514 17.5515 -1.49144 -18.5287 17.7754 -2.47682 -18.3334 17.9194 -3.35142 -18.2491 18.3514 -4.05306 -17.9338 18.8816 -4.28017 -16.925 18.9857 -5.14649 -16.6523 18.4404 -5.51375 -16.4576 19.4107 -6.26039 -16.1245 18.7398 -6.7835 -15.7449 19.5853 -6.73335 -14.8933 19.113 -7.44086 -14.3328 18.7276 -8.38266 -14.1805 18.3052 -8.92402 -13.3616 18.5627 -9.91936 -13.0741 18.5753 -9.51039 -13.0645 19.4945 -10.2088 -12.9559 20.2583 -10.6256 -13.6315 20.8839 -9.84254 -13.585 21.4074 -8.84855 -13.5125 21.4069 -7.90687 -13.2061 21.6585 -7.49944 -12.3354 21.9113 -8.48718 -12.0032 21.9556 -9.0501 -11.9312 21.1528 -8.72866 -11.0953 20.6901 -8.13003 -11.7184 20.2547 -7.53979 -12.4457 20.5002 -7.31046 -12.4291 19.5357 -6.28096 -12.2807 19.4151 -6.68411 -11.4193 19.6906 -7.22942 -10.9159 19.0336 -7.43427 -11.0755 18.0475 -7.24588 -10.3235 17.4425 -8.08474 -9.99685 17.799 -8.74957 -10.375 17.1267 -8.44614 -11.0217 16.4659 -8.5643 -12.0533 16.5326 -7.82108 -12.2382 15.8899 -7.86719 -13.1358 15.4483 -8.11702 -13.2102 14.4599 -7.3126 -13.523 14.0102 -7.54363 -14.4589 13.6775 -8.40102 -14.3665 13.097 -8.97345 -13.7431 12.5149 -8.22489 -13.1769 12.8112 -8.00734 -12.3399 12.4024 -7.45971 -12.5357 11.55 -7.45708 -11.533 11.3592 -8.34365 -11.2467 11.748 -8.50544 -10.5063 11.0988 -9.22485 -10.8844 10.6334 -10.1115 -11.4336 10.3926 -10.9116 -10.9354 10.06 -10.8677 -10.6725 9.11123 -10.4092 -9.78053 9.28422 -11.1568 -9.14266 9.61878 -10.8724 -9.14005 10.5646 -10.1444 -8.68249 9.99815 -10.6345 -8.02527 9.36645 -9.73417 -8.31715 9.05193 -8.97903 -8.71486 8.37146 -8.61166 -9.3655 8.99798 -8.38508 -10.1196 8.37292 -8.50095 -10.9778 8.60855 -8.57785 -11.2776 9.54937 -7.92689 -10.4292 9.64216 -7.10824 -10.5464 9.11218 -6.32802 -11.2054 8.97182 -5.46552 -11.466 9.22452 -4.87134 -11.8631 8.56787 -3.99609 -11.2656 8.45961 -3.01342 -11.3284 8.57613 -2.87867 -12.2882 8.29066 -3.14948 -12.89 9.05516 -2.94406 -13.0203 10.0044 -2.92683 -12.0918 9.69697 -3.12245 -11.9106 10.6366 -2.57815 -11.3921 11.3485 -3.47328 -11.9014 11.707 -3.84817 -10.9472 11.612 -4.49184 -11.0334 10.8553 -5.00703 -11.319 11.6533 -5.19056 -12.2663 11.3344 -5.22574 -12.5839 12.2506 -4.37922 -13.1056 12.3643 -3.62585 -13.7446 12.5707 -4.05736 -14.5955 12.7784 -4.12227 -15.1531 11.9105 -3.42155 -15.6174 11.332 -3.04971 -15.281 10.5032 -2.75834 -14.3372 10.8391 -2.52366 -14.1306 11.7973 -1.78895 -14.5328 11.2112 -0.983698 -14.1231 11.4176 -0.349877 -14.8904 11.1176 -0.182532 -14.3915 10.2139 --0.487721 -15.1765 10.2578 --0.02521483 -15.9842 10.2623 -0.426329 -16.9043 10.0091 -0.510958 -17.524 9.24528 -0.289357 -17.4452 8.33545 --0.62125 -17.9137 8.34531 --0.92016 -18.8785 8.41346 --0.157073 -19.3749 8.80904 -0.12156 -19.8885 8.00061 -0.926731 -20.0638 7.41023 -1.56109 -20.3813 6.76297 -1.59479 -21.4031 6.7881 -2.11737 -21.5066 7.621 -2.71854 -20.7215 7.36752 -2.69648 -20.4448 6.37988 -2.97059 -19.5034 6.1049 -3.19111 -20.1283 5.40746 -2.72582 -19.8394 4.51249 -3.35648 -20.2533 3.80942 -3.91846 -20.8786 4.34885 -4.73567 -21.4057 4.41744 -4.94295 -22.1461 5.15118 -5.36638 -22.6877 5.8905 -5.36057 -22.283 6.85552 -6.14272 -22.6075 7.29 -5.49014 -22.0743 7.9857 -4.77355 -22.2507 8.64712 -4.59929 -21.3244 8.18087 -4.4128 -20.9343 9.05105 -4.00931 -20.271 9.68311 -4.18636 -20.8606 10.4832 -3.52748 -20.6795 11.1372 -3.67775 -21.4143 11.8605 -2.72411 -21.6661 11.6562 -2.23315 -21.4211 12.5282 -1.30569 -21.6984 12.2697 -0.511651 -21.2135 11.8628 -0.727752 -20.2274 12.01 -0.203149 -19.3972 12.0728 -0.09454317 -19.0587 11.156 --0.731489 -18.8116 10.5601 --1.13355 -19.7471 10.8956 --1.13625 -19.7973 12.0258 --2.13004 -19.8529 12.1228 --2.35248 -19.9447 13.1017 --2.56359 -20.3278 13.9229 --3.52899 -20.5741 13.9039 --3.20592 -20.7879 14.8715 --3.03317 -21.2225 15.7798 --2.04115 -20.8163 15.8413 --2.51995 -19.9016 15.9421 --2.25386 -20.4716 16.7763 --2.58126 -19.502 16.9599 --2.99606 -18.9402 17.6544 --3.75142 -19.1427 18.1774 --3.89274 -19.7418 17.3956 --3.83718 -20.4726 16.7726 --3.59694 -20.1886 15.8734 --3.53188 -19.3401 15.3232 --3.42116 -18.5874 14.6788 --3.47818 -17.8908 15.3681 --3.69962 -17.0456 15.7799 --3.60226 -17.1214 16.803 --4.52915 -16.8144 17.0444 --5.17232 -17.4951 17.432 --6.02679 -17.0775 17.0122 --5.91278 -16.1131 17.1455 --5.58183 -15.5235 16.3872 --4.87733 -14.8155 16.6282 --3.88667 -14.7306 16.7006 --2.95585 -14.8324 16.4812 --2.07532 -14.5498 16.1837 --1.74039 -13.7238 15.7688 --2.3876 -13.0543 15.5766 --2.48842 -12.1104 15.8763 --2.99133 -12.5475 16.5964 --2.07439 -12.449 16.798 --1.48698 -11.7053 17.1485 --1.3772 -11.2062 18.03 --1.44161 -11.5151 18.9582 --0.883796 -10.8524 19.4217 --0.04533693 -10.3877 19.2196 -0.722677 -10.3485 19.9142 --0.275641 -10.3497 20.2333 --0.120381 -9.88502 21.1354 --0.155147 -8.86607 21.1694 --0.398836 -8.6596 20.1953 --1.31348 -9.09144 20.526 --1.0724 -8.79301 21.5162 --1.67865 -7.9615 21.816 --2.24717 -8.0331 20.935 --2.57366 -8.536 20.2063 --2.45118 -9.23311 19.5752 --2.11305 -9.69347 20.4748 --3.07362 -9.84566 20.16 --3.11701 -9.61546 21.0986 --3.07627 -10.5968 21.1165 --2.73372 -11.5206 20.8974 --3.66424 -11.3411 20.6028 --3.6691 -11.3585 21.5878 --3.56405 -12.3497 21.7751 --3.76211 -11.7651 22.5837 --4.16287 -11.6593 23.5212 --3.9422 -10.9827 24.1632 --3.12398 -11.4467 24.4711 --2.49831 -10.6606 24.4244 --2.17372 -11.3971 23.7481 --2.28378 -11.9994 22.9053 --1.3459 -12.0527 22.7396 --1.73202 -11.1746 22.6219 --2.28385 -11.6767 21.9318 --1.87691 -12.1095 21.0784 --1.66537 -12.8039 20.3592 --0.919531 -13.2308 20.995 --0.238483 -12.8648 21.6475 --0.887125 -13.1498 22.3188 --1.56417 -13.8354 22.1026 --1.73772 -14.7922 22.0992 --1.3094 -15.6271 22.3542 --0.563854 -16.2563 22.1296 --0.314718 -16.3338 21.2568 --0.726518 -17.1734 20.8897 --0.687158 -17.2034 21.8433 --0.283559 -18.0268 21.5059 -0.644767 -17.9099 21.1192 -1.07629 -17.9749 20.2271 -1.20677 -17.3517 19.4042 -1.63976 -16.4553 19.4062 -2.05572 -17.1223 20.0042 -2.08222 -17.9053 20.6089 -1.96049 -18.9481 20.6965 -1.86238 -19.1541 21.6246 -2.57664 -19.7236 21.9544 -2.02057 -20.1147 21.2286 -1.99923 -21.1137 21.0176 -2.92451 -21.3165 20.667 -3.43831 -20.5578 20.8268 -3.92248 -21.1316 21.525 -3.95029 -21.7969 20.7599 -4.68446 -22.5021 21.0377 -5.1662 -22.5768 20.1116 -6.05858 -22.7796 20.1429 -5.95602 -22.3573 19.1769 -5.55935 -21.5817 18.6324 -6.19474 -20.6881 18.7728 -5.82104 -20.0473 18.0594 -4.9587 -20.2672 17.7887 -5.13317 -20.3295 16.8372 -5.74665 -19.5629 16.5781 -6.17084 -18.7745 17.0635 -7.02757 -19.2467 17.1907 -7.57209 -19.7236 17.8469 -7.20697 -18.7506 18.0984 -6.49636 -18.0252 18.2162 -6.08127 -18.3514 19.0421 -5.88614 -17.5378 19.5884 -6.43055 -17.9569 20.3623 -7.13409 -18.07 19.6695 -7.15509 -18.9528 19.2737 -7.36426 -19.0645 20.2216 -7.68241 -18.1859 20.6268 -8.45819 -17.5782 20.811 -8.82659 -16.6844 20.5851 -9.58608 -16.5182 19.9648 -10.0536 -17.0076 19.2215 -9.38029 -17.6977 19.4582 -9.12926 -18.5815 19.7412 -9.36154 -18.1427 20.6198 -9.08495 -18.6725 21.3944 -9.20592 -19.6284 21.8638 -8.94908 -19.4346 22.7851 -9.10099 -19.8638 23.6582 -9.83014 -20.5643 24.0045 -10.4017 -20.0854 23.3843 -10.665 -20.9564 23.0464 -11.2765 -21.3427 23.7143 -11.9089 -20.4571 23.46 -12.1299 -19.8461 24.2137 -11.406 -20.0737 24.8813 -11.4048 -21.0335 25.2286 -10.484 -21.3096 24.8976 -10.8939 -22.0786 24.47 -11.8479 -22.1191 24.682 -12.6113 -22.747 24.8006 -13.4038 -22.6446 24.1272 -13.9955 -22.3636 24.9536 -14.3499 -21.5832 24.5166 -13.3456 -21.6076 24.1277 -13.0979 -21.9365 23.1578 -12.7753 -21.2379 22.561 -11.8386 -21.522 22.7025 -11.1832 -22.086 22.1349 -11.2033 -23.0387 22.0842 -11.6319 -22.8839 21.2018 -12.3931 -22.3136 20.8151 -12.6838 -21.342 20.6859 -12.4753 -20.7889 19.9208 -12.358 -19.8292 20.2162 -12.608 -19.8608 21.2324 -12.7573 -20.7668 21.4824 -13.5349 -21.3071 21.9571 -14.2206 -21.4669 21.2327 -14.6844 -20.5766 21.4973 -15.5451 -21.1126 21.5673 -16.3331 -20.8771 22.0152 -16.4887 -20.7115 21.0798 -16.4753 -19.6943 20.8239 -17.017 -18.9361 20.7536 -17.0839 -18.1424 20.0516 -16.6196 -17.8908 19.271 -17.3481 -17.2856 19.5987 -17.6015 -16.3245 19.3892 -18.2637 -16.515 18.6093 -18.8972 -16.7152 19.3532 -19.149 -16.9126 20.2679 -19.1213 -15.8599 20.3028 -19.1691 -15.2992 19.4411 -20.0077 -15.2174 18.9398 -20.7334 -15.3558 18.1614 -21.3918 -14.9189 18.8316 -21.7751 -15.1778 19.6513 -22.5664 -14.6626 19.3996 -23.1363 -13.8811 19.4779 -23.8363 -13.7466 20.1906 -24.6831 -13.6351 20.716 -25.1917 -13.5184 19.799 -24.8857 -12.5526 19.4906 -24.0378 -12.9664 19.2276 -23.9718 -12.1718 18.6839 -24.7984 -12.3131 18.1317 -24.5179 -12.7572 17.219 -23.6641 -13.0256 16.7891 -22.8601 -13.2596 16.3115 -22.1463 -12.8607 16.8845 -21.9545 -13.8343 17.0275 -21.3383 -13.5781 17.7667 -20.8421 -12.8318 18.1114 -21.1646 -12.7559 19.0344 -20.2453 -12.753 19.5639 -20.392 -13.5071 20.1391 -19.3867 -13.4921 20.1104 -18.8311 -12.9179 20.7251 -18.5822 -12.533 21.6275 -17.9009 -12.7794 22.347 -18.3535 -12.3008 23.0647 -18.1534 -12.8587 23.8886 -17.8768 -11.888 23.9256 -17.2454 -11.1537 24.2782 -16.9861 -10.3368 23.7688 -16.2263 -10.1692 23.166 -16.9364 -9.64589 22.5587 -17.8934 -9.98029 22.7825 -18.5073 -10.7437 22.5333 -18.6662 -10.8285 21.55 -18.1385 -11.0337 20.7673 -17.2119 -10.8653 20.6867 -17.5411 -11.8113 20.7835 -17.8319 -12.4988 20.0736 -16.9891 -12.4385 19.6311 -16.949 -13.0697 20.4184 -17.2994 -13.9314 20.47 -17.013 -14.7956 20.0668 -16.5245 -15.5763 19.6975 -16.8172 -16.4343 20.0732 -16.9008 -16.9131 20.9123 -17.1395 -17.1486 21.8485 -16.2155 -17.446 21.766 -15.84 -17.3172 20.8946 -15.7544 -16.3353 20.9507 -15.084 -16.9566 20.6236 -15.0563 -17.0351 21.6557 -14.2611 -16.56 21.267 -13.7119 -17.3341 21.0813 -14.0032 -18.2219 20.7918 -14.1827 -17.7155 19.9801 -14.8071 -18.0006 19.3217 -13.9015 -17.9622 18.9251 -13.8647 -18.8302 19.3034 -13.9886 -19.8378 19.2192 -13.6881 -20.8305 19.0936 -14.2408 -21.5953 19.1167 -14.1795 -21.2806 18.2367 -13.961 -20.9777 17.2919 -12.9984 -21.1419 17.3934 -12.9449 -22.1265 17.5642 -12.1897 -22.1434 16.9328 -12.1466 -21.8726 15.9481 -12.2631 -20.9671 15.5316 -13.0767 -21.1027 16.0921 -14.0103 -21.58 15.929 -14.7488 -20.9708 15.7604 -15.7524 -20.8953 16.0837 -16.5955 -20.4021 15.9606 -16.6673 -19.7381 15.1495 -16.6776 -19.8394 14.1602 -16.9467 -18.8654 14.1286 -17.3126 -18.0408 13.7169 -18.163 -17.8 13.3223 -17.6048 -17.0148 13.3057 -16.7001 -17.2743 13.3981 -15.9934 -17.4642 14.0808 -16.0506 -16.5445 13.671 -16.6927 -15.7958 13.5902 -16.7102 -14.8682 13.0852 -17.3312 -14.904 12.2556 -16.892 -15.4251 11.4074 -16.4407 -14.9629 10.64 -16.5951 -13.97 10.2789 -16.2226 -14.2067 9.36569 -16.0579 -13.259 9.61267 -15.4941 -12.5795 9.24718 -15.0405 -12.3893 8.37385 -14.8678 -11.9637 7.49552 -15.8046 -12.0011 7.82147 -15.7344 -12.4509 6.98807 -16.2573 -11.5495 7.02433 -16.8516 -11.7195 7.85075 -17.4926 -11.2114 7.2006 -17.3796 -10.9185 8.1573 -17.3381 -9.96655 8.08764 -18.1638 -9.70784 8.626 -18.6871 -9.62755 7.74275 -19.2636 -9.78113 8.59048 -19.1916 -10.5655 9.18979 -19.3419 -9.84208 9.9307 -19.5212 -10.4772 10.5838 -19.3432 -11.3814 10.3235 -19.2035 -11.7701 11.2988 -20.0921 -11.9469 11.5627 -20.3036 -12.4272 12.4377 -20.759 -12.5489 13.4215 -21.4393 -12.7268 14.1906 -22.2976 -12.2942 14.3001 -22.1225 -12.9654 14.9431 -22.9193 -13.5844 14.6886 -23.2896 -13.3093 13.8467 -23.5904 -12.4174 13.447 -23.8179 -11.7742 12.6955 -24.3107 -12.5087 12.2077 -25.0717 -13.0803 11.9282 -25.0339 -14.0096 12.4347 -24.6784 -13.4501 13.2196 -25.3362 -14.1002 13.7278 -24.6905 -14.7766 14.0832 -23.8287 -15.2453 13.8774 -23.2197 -16.0523 14.0253 -23.4218 -16.9241 13.5838 -23.944 -17.4614 12.9731 -23.2524 -16.9649 12.52 -23.6196 -16.7557 11.6996 -23.6712 -16.901 10.6909 -23.4716 -17.6184 9.9473 -22.651 -17.2921 10.3637 -22.2779 -17.2728 11.2573 -21.5749 -17.5074 11.9836 -22.3203 -17.9341 12.5139 -22.9683 -18.4001 11.7951 -22.2801 -19.1681 11.7142 -21.4053 -19.5119 11.3777 -20.3853 -19.7087 11.2918 -19.7 -18.9576 11.2215 -19.9345 -18.3873 12.0063 -19.126 -18.6082 12.6463 -18.4042 -19.2117 12.7478 -18.4064 -19.537 13.7406 -18.9951 -18.7281 13.7091 -19.9867 -18.6716 13.7247 -20.3909 -19.4955 13.3431 -19.8536 -20.3243 13.2528 -20.0922 -20.3937 14.1656 -20.8351 -21.021 13.8194 -21.8029 -20.7591 13.7759 -22.1945 -19.8114 14.0123 -21.3909 -19.3841 13.6528 -21.4389 -18.6875 14.4882 -21.2089 -17.6722 14.6267 -21.0576 -17.0236 15.435 -20.9377 -16.9582 16.4135 -20.0306 -17.2898 16.3151 -19.9979 -17.9765 15.6103 -19.0703 -18.3448 15.218 -18.9522 -17.9068 16.0775 -18.4495 -17.2381 15.6299 -18.5126 -16.6148 16.4152 -18.9441 -15.9439 17.0217 -18.9546 -14.9959 16.8168 -19.8685 -15.4745 17.0768 -20.4988 -15.0382 16.4345 -21.2408 -15.2863 15.8088 -20.3418 -15.4428 15.4217 -19.3418 -15.5429 15.2366 -18.5666 -15.3721 15.7669 -18.6128 -14.5689 15.1505 -17.6924 -14.7383 15.3969 -17.6759 -14.2959 14.4667 -18.017 -13.4109 14.7782 -17.3507 -12.6884 14.9489 -17.6567 -12.599 13.998 -18.055 -11.7295 13.8002 -18.0592 -11.1975 14.7344 -18.0324 -10.5216 14.0607 -17.0804 -10.8654 14.1813 -16.5297 -10.7453 15.0037 -15.8667 -11.3827 14.5954 -15.2078 -11.8968 13.9977 -16.0661 -12.1083 13.5856 -16.9583 -11.992 13.0238 -17.3693 -12.7447 12.6157 -18.3004 -13.0276 12.3623 -19.228 -13.2511 12.3478 -20.0066 -13.863 12.5413 -19.8407 -13.0829 13.1521 -19.6586 -13.8112 13.8225 -19.5386 -13.6666 14.7871 -19.371 -12.9435 15.3981 -19.8265 -12.0696 15.4102 -19.6467 -11.1406 15.4782 -19.8935 -10.5029 16.1671 -19.8266 -9.59691 16.7205 -18.973 -10.1647 17.0347 -18.9617 -9.82738 15.9814 -18.1814 -10.0477 15.4821 -17.7759 -10.8876 15.7384 -17.239 -10.7221 16.5414 -16.283 -10.4647 16.2948 -16.0111 -11.2631 16.8735 -15.6391 -10.6704 17.6561 -14.8049 -10.9685 17.141 -13.9673 -10.7704 16.6961 -14.1578 -9.88572 17.1298 -14.8519 -9.48887 16.5275 -14.809 -9.99201 15.6258 -15.4492 -9.86722 14.8889 -15.1049 -8.91151 14.9435 -15.2064 -8.76762 13.9486 -14.2364 -8.49475 13.7716 -13.4154 -8.41747 14.3545 -12.6618 -9.01112 14.7628 -13.4119 -9.69315 15.0531 -12.789 -10.0758 14.302 -13.0901 -11.0416 14.05 -13.6467 -10.5281 13.4598 -14.448 -10.1921 13.0633 -15.2656 -9.63232 13.2552 -15.1947 -9.39696 12.3088 -15.0809 -10.3276 12.1609 -15.5845 -11.1246 11.6976 -15.5366 -11.9679 12.2144 -15.4046 -12.7256 12.8154 -15.0312 -13.5068 13.3091 -14.9211 -14.4679 12.846 -15.4172 -15.0429 13.4713 -15.3059 -15.2083 14.4182 -15.0825 -15.1953 15.3606 -14.8733 -15.1789 16.3378 -14.0172 -15.4629 15.892 -14.0328 -15.7429 16.8752 -14.0154 -16.6565 17.4312 -13.6074 -17.526 17.7289 -13.4315 -16.7809 18.4251 -12.6991 -17.1439 18.9118 -11.7846 -17.6336 19.1287 -11.2129 -18.3364 19.171 -11.6321 -18.445 18.2921 -11.2596 -19.1415 17.7841 -10.1679 -19.0529 17.7276 -9.36545 -18.9156 17.2041 -9.11291 -18.8502 16.3785 -8.56703 -18.1747 15.871 -7.67693 -18.4741 15.6254 -6.82792 -18.5693 15.0797 -7.13856 -19.5326 15.0178 -6.81154 -20.4277 15.261 -5.85982 -20.2459 14.8552 -6.31378 -19.7093 14.1526 -6.75981 -19.8836 13.3496 -7.50936 -19.2474 13.2306 -7.8768 -18.3566 13.5514 -8.58354 -18.2965 14.2789 -8.17163 -17.3733 14.5608 -8.99199 -16.7854 14.8231 -9.89586 -16.346 14.5029 -10.0455 -15.3727 14.5434 -10.6426 -15.7623 15.2176 -11.4251 -15.5659 14.6038 -10.7794 -15.4679 13.855 -11.092 -14.5143 13.7338 -11.7003 -13.6937 13.7896 -11.6803 -13.1079 12.9605 -11.3886 -12.2086 12.7621 -11.4904 -11.9169 11.8261 -11.0048 -12.684 11.425 -11.2882 -13.6325 11.2094 -11.3929 -13.6703 10.2234 -10.549 -14.0549 9.93925 -9.53525 -14.08 10.0611 -9.40973 -14.7187 10.7889 -8.67742 -14.5854 10.1567 -8.6079 -13.673 10.7156 -8.83867 -13.2266 9.82935 -9.36943 -12.459 9.61909 -9.83852 -11.946 8.86 -9.90208 -11.8822 7.87916 -10.333 -12.3184 7.07397 -10.5024 -11.9338 6.19152 -10.7005 -11.0583 6.32286 -9.94586 -10.3408 6.31861 -9.61294 -9.51184 5.89239 -8.80395 -9.4756 5.36395 -9.07378 -9.71021 4.36965 -9.12608 -10.5007 3.72301 -10.0084 -10.4745 3.30404 -10.3092 -11.3538 3.68395 -10.9156 -12.105 3.27582 -10.5321 -12.9242 2.97742 -9.98694 -13.8338 2.90952 -9.89586 -14.7708 3.20697 -10.223 -15.3217 2.46526 -9.97844 -15.6924 1.56889 -9.82954 -15.655 0.5727841 -8.81993 -15.5104 0.4303571 -8.12205 -15.8642 1.16059 -7.65754 -16.3617 1.86615 -8.05168 -15.6867 2.56303 -8.96663 -15.6841 2.97414 -8.38208 -15.6266 3.7878 -8.38646 -16.3482 4.48296 -8.34792 -16.3616 5.46223 -7.42414 -16.1066 5.66418 -7.18402 -17.0657 5.41715 -6.62461 -17.4258 4.63916 -5.72735 -17.7633 4.91671 -6.04854 -18.4171 5.53724 -6.92644 -18.7474 5.87321 -7.83783 -18.4838 5.71531 -8.63633 -19.0707 5.3145 -8.55091 -18.3936 4.51782 -8.55368 -17.8895 3.73108 -8.53316 -16.9447 3.4305 -8.58464 -17.2938 2.53332 -8.26622 -18.2862 2.72688 -8.69252 -18.9669 2.09442 -9.58921 -18.6614 2.38267 -10.015 -19.3036 2.97027 -9.41062 -20.1496 2.79166 -8.57742 -20.661 2.49731 -7.67804 -20.8562 2.99244 -8.46565 -20.3121 3.36645 -7.66677 -20.1688 3.88434 -7.11442 -19.8842 3.09391 -6.16439 -20.1766 3.25063 -5.57399 -20.219 2.50907 -5.78972 -19.9494 1.49832 -5.88044 -20.8214 0.9294851 -6.79247 -20.5141 0.6326911 -6.90932 -20.929 1.57167 -7.02635 -19.8802 1.67481 -6.44519 -19.1283 1.26306 -6.07805 -18.2226 1.63827 -6.93756 -17.8568 1.37767 -7.52422 -17.9504 0.6069281 -8.05136 -17.3317 1.18247 -9.01215 -17.5457 1.31852 -8.76324 -17.9482 0.4874391 -9.34989 -17.1743 0.02438652 -9.53369 -17.7135 -0.8989129 -9.11113 -18.5564 -1.18454 -9.12063 -18.5801 -2.12252 -8.19189 -18.6962 -2.49704 -7.72058 -18.3817 -1.70593 -6.88454 -17.9556 -1.25368 -6.39212 -18.8045 -0.9549159 -5.40056 -18.6443 -0.6043179 -5.76756 -17.8181 -0.2791149 -6.45936 -17.0981 -0.3282179 -6.24922 -16.5816 0.4280381 -5.86086 -15.6625 0.4950001 -5.34167 -14.8808 0.1436271 -4.4163 -14.9781 0.5095771 -3.52097 -14.8934 0.9120841 -2.56613 -15.0007 0.5170031 -2.69676 -14.5501 -0.3931389 -3.61927 -14.2219 -0.6819869 -3.49604 -14.4886 -1.70499 -4.44689 -14.569 -1.85275 -5.46509 -14.261 -1.75316 -5.30193 -13.4384 -1.17463 -4.94002 -12.6662 -1.62725 -4.4606 -11.8436 -2.0563 -3.58696 -11.7742 -2.47962 -3.04633 -10.9882 -2.06609 -2.16696 -10.3849 -2.01831 -2.77371 -9.81974 -1.44902 -2.72412 -8.79897 -1.29942 -3.04439 -7.87375 -1.35128 -3.37105 -8.10331 -0.4720199 -3.52928 -7.29553 0.06062072 -4.43624 -7.81644 0.1750971 -5.3716 -7.99339 -0.1238339 -4.86472 -8.51695 0.6218711 -4.75794 -8.92904 1.522 -4.45678 -9.73844 1.15905 -3.58662 -9.74819 0.7958001 -2.63399 -9.70525 0.4238561 -2.72948 -8.82313 1.02986 -2.68862 -8.46011 1.95835 -2.18554 -8.77372 2.78064 -2.68466 -8.23363 3.47681 -2.77345 -9.16168 3.89821 -1.84386 -9.18165 4.36558 -1.39328 -8.28059 4.51542 -0.968436 -8.81984 3.91246 -0.802599 -9.82113 4.1676 --0.02486293 -10.1202 4.67014 --0.651518 -10.7537 4.68958 --0.956516 -10.4936 3.77723 --0.825304 -9.55982 3.42885 --1.02781 -9.3845 4.36568 --0.806224 -8.97987 5.22866 --1.79465 -8.77246 4.90286 --2.11381 -7.86269 4.62875 --1.22366 -7.47424 4.36551 --0.74966 -6.64657 4.08254 --0.949338 -6.35999 4.95726 --1.70868 -5.73927 4.7297 --2.283 -6.5991 4.55773 --3.09428 -6.06446 4.35293 --3.09335 -5.74098 3.43666 --3.44008 -4.9789 2.90646 --2.62854 -5.27466 2.42413 --2.31504 -6.05232 1.97806 --2.92725 -6.84625 2.09162 --2.49054 -7.03937 2.95113 --2.92687 -7.98405 3.16055 --3.66632 -7.73651 2.505 --3.21562 -8.07139 1.64681 --2.56948 -8.88732 1.5952 --2.90609 -8.53022 0.6664551 --3.6014 -7.85205 0.5155561 --4.09777 -8.37627 -0.1241289 --3.39339 -8.66398 -0.7305609 --2.85558 -9.48611 -0.4090389 --3.39205 -10.3435 -0.3048929 --3.84741 -10.2002 0.5347171 --3.83694 -10.4713 1.49354 --4.3124 -11.2275 1.89103 --3.62379 -11.5485 1.24503 --4.06218 -11.8028 0.4132911 --4.53541 -12.1938 -0.3112359 --5.22387 -12.3154 0.4226701 --5.90488 -12.9413 0.3303431 --5.98504 -12.5189 -0.5238559 --6.52169 -11.7291 -0.5247459 --6.0407 -10.9634 -0.4622349 --6.85452 -10.8095 0.01692222 --6.95415 -9.94634 0.5340851 --6.78644 -10.2546 1.47959 --7.11856 -10.9133 2.20646 --7.07923 -10.2242 2.91758 --6.48974 -9.6592 3.56758 --5.89954 -9.60204 2.79483 --5.42269 -9.76789 1.94793 --5.82685 -8.9612 1.55245 --6.78315 -8.98944 1.77369 --7.44912 -8.73456 1.12132 --7.33977 -7.75091 0.9030411 --6.83556 -6.87448 0.9853161 --7.83568 -6.79408 1.05395 --8.33363 -7.27487 0.2438741 --9.14178 -6.72569 0.4610531 --9.32293 -6.21423 1.28966 --9.95009 -6.33195 2.04751 --10.9632 -6.49091 1.73494 --10.6126 -7.40076 2.05154 --9.8087 -7.82985 2.54267 --9.58993 -7.71068 3.50286 --8.86256 -7.62766 2.83804 --8.31545 -8.19324 2.32049 --7.85709 -8.23699 3.24886 --7.54141 -7.32521 3.12105 --7.58713 -7.27306 2.1036 --8.33422 -6.61655 2.36262 --8.23622 -5.62875 2.38001 --8.92724 -5.26198 1.74788 --8.57077 -4.40053 2.05091 --7.68166 -4.82536 1.79214 --7.56074 -3.94514 1.2962 --7.02902 -4.63888 0.6917681 --6.89635 -5.60447 0.3935881 --6.93835 -6.37077 -0.2811859 --6.57045 -6.18362 -1.16533 --5.94403 -6.93639 -1.0336 --5.50206 -6.3275 -0.3962679 --5.81484 -6.80342 0.4559041 --5.1477 -6.71311 1.15813 --5.17986 -6.98153 2.13128 --5.47799 -6.99445 3.0306 --6.06193 -6.88907 3.82961 --5.7292 -7.81512 4.09145 --6.06185 -8.67253 4.5227 --5.32488 -9.30201 4.37926 --4.84095 -8.86603 3.64501 --4.1442 -9.10766 2.90698 --3.54038 -9.78693 2.51664 --2.80982 -9.22292 2.90278 --2.76838 -10.0224 3.53774 --3.29812 -10.6565 2.92661 --2.52994 -11.1735 2.94338 --2.5766 -11.8505 3.63434 --2.26721 -11.5252 4.47654 --1.33307 -11.9829 4.42335 --0.604949 -11.9485 3.79041 --0.008740175 -11.16 4.05818 -0.784221 -11.6463 4.34085 -1.20967 -11.4257 3.39496 -0.60522 -11.1084 2.61976 -0.953801 -10.1846 2.71746 -1.88379 -10.5568 2.57629 -2.32579 -11.4941 2.59775 -2.41332 -11.5368 3.61758 -3.15108 -10.8303 3.37661 -3.23791 -10.4003 2.5418 -3.58369 -9.78406 1.89461 -2.67428 -10.1386 1.78762 -2.76005 -10.8251 1.06218 -2.39452 -11.2342 0.2038461 -1.62523 -10.5995 -0.02234418 -1.09516 -10.3402 -0.8112679 -0.310965 -10.7151 -1.28205 --0.668973 -10.3773 -1.26038 --0.448411 -10.9059 -2.11342 --0.202195 -10.0445 -2.57396 -0.179368 -10.0229 -3.41043 -1.0614 -10.2078 -3.77937 -1.06291 -9.59588 -2.92962 -1.27462 -8.65588 -3.09743 -2.22469 -8.78504 -3.56648 -2.0404 -8.19573 -4.2823 -2.33269 -7.53773 -4.9925 -3.20344 -8.01731 -5.11762 -4.01833 -7.93433 -5.6313 -4.05205 -7.44407 -6.49468 -4.13812 -6.74665 -5.89565 -3.50021 -6.297 -6.52848 -2.68425 -6.41716 -6.97116 -2.15217 -6.08391 -6.13965 -2.15548 -5.15873 -5.82287 -1.63476 -4.24018 -5.77109 -2.07633 -4.18104 -4.79978 -1.57298 -4.65904 -4.06422 -1.30034 -5.47744 -4.58232 -0.332169 -5.7058 -4.77863 --0.07058293 -5.01856 -4.14365 --0.05865913 -5.0647 -3.17646 -0.369245 -5.8602 -2.75756 -0.689674 -6.20752 -3.60056 -1.39506 -6.66806 -3.1438 -2.01419 -5.91681 -3.24544 -2.44815 -6.47211 -2.56876 -2.89941 -7.32893 -2.83356 -3.88571 -7.40189 -2.8306 -4.01406 -6.75963 -3.51751 -3.05184 -6.6754 -3.6425 -3.21524 -5.89241 -2.94354 -3.65139 -5.199 -2.30594 -4.0877 -4.43393 -1.82111 -3.059 -4.20825 -1.78038 -3.0879 -3.26638 -1.38515 -2.41525 -3.83137 -0.8495179 -1.81672 -3.62336 -1.6425 -1.04267 -3.50899 -2.17002 -0.441666 -2.6975 -1.9169 -0.869322 -2.93023 -1.09212 -0.879904 -3.45249 -0.2173289 -0.09999727 -4.00713 -0.3587009 --0.07822283 -3.23549 -1.05643 --0.428106 -2.37988 -0.7775749 --0.883838 -1.50207 -0.5620249 --1.18272 -2.24607 0.1411291 --0.722347 -2.18612 1.05283 -0.128696 -2.08644 0.5852701 -1.12233 -2.09671 0.6109281 -1.91318 -2.26381 0.07968072 -2.68129 -1.65855 0.3573331 -3.37601 -1.64886 1.00098 -2.63449 -1.91881 1.61951 -1.90728 -2.6326 1.63034 -2.24899 -3.23308 2.31808 -2.9137 -3.93897 2.41619 -3.0301 -3.53573 3.44249 -3.67235 -3.86698 4.08904 -3.48488 -4.50229 4.84306 -3.97706 -4.60086 5.79375 -4.06978 -5.5768 5.71723 -4.58661 -5.61048 6.62018 -4.09475 -5.0552 7.27425 -3.26925 -4.5776 6.95182 -2.39386 -4.4273 6.49079 -2.32123 -3.55287 6.79206 -1.63267 -3.11959 6.33452 -0.911761 -3.19061 7.10449 -0.07613857 -3.59656 6.74473 --0.136795 -2.57486 6.57032 --0.788555 -2.28166 7.15267 --0.584493 -1.46936 6.57502 --0.15887 -0.5883061 6.28814 -0.714452 -0.6004271 5.99473 -1.26103 -1.10396 6.72533 -0.357338 -1.15578 7.22655 --0.02966983 -0.2250141 7.28448 --0.180034 -0.04484897 8.26217 --0.711168 0.8334549 8.38534 --1.57076 0.5482409 8.72195 --1.16663 1.23719 9.34863 --1.99713 1.57378 8.8652 --2.5053 1.35477 8.01614 --2.93512 1.74288 7.19111 --3.37891 2.3733 6.57435 --3.67903 1.4562 6.20588 --3.66256 0.8233679 7.04884 --3.72016 1.17107 7.98768 --3.7146 1.85782 8.77204 --3.7232 2.35397 9.64058 --4.0995 3.2967 9.51425 --4.70535 3.60286 8.85224 --5.1693 2.99983 9.49489 --6.08956 3.05233 8.99466 --6.36721 3.97462 8.99291 --7.07708 4.19029 8.38901 --7.58076 4.4913 9.20248 --8.26433 4.16024 9.89639 --7.67349 4.55512 10.647 --8.05597 3.62925 10.7198 --7.9435 2.66495 11.1024 --7.58396 2.10884 10.3881 --7.79608 2.5195 9.52343 --7.82724 1.80054 8.87151 --8.66111 1.63352 8.38357 --9.07222 0.6767219 8.13744 --9.04338 -0.07914377 8.74978 --8.35766 -0.8584791 8.69146 --8.94506 -1.06356 7.89374 --8.25392 -0.4423921 7.50055 --8.06382 0.4155509 7.96232 --7.10606 0.2042439 7.84407 --6.31425 0.7975399 7.76879 --6.05446 1.74309 7.63503 --5.88319 1.3502 6.77837 --6.73816 1.09281 6.31818 --6.94238 0.6198309 5.42342 --7.76214 0.6800769 6.04483 --8.47298 0.8085199 5.22459 --9.01502 0.5352019 4.47289 --9.54604 0.2382199 5.29358 --8.80023 0.2170779 5.92721 --9.58948 0.4590359 6.37502 --10.5543 0.6497139 6.48332 --11.07 0.04291493 7.1491 --11.3052 -0.8343971 6.71035 --11.3939 -1.77962 6.97069 --11.9776 -2.4537 6.57936 --12.6991 -2.16566 7.24874 --13.1025 -2.59641 8.06675 --13.416 -1.74848 8.59796 --14.3265 -2.33733 8.5582 --14.9986 -1.57715 8.33084 --14.6866 -1.9283 7.43078 --15.6436 -2.31022 7.38312 --15.7321 -3.23239 7.6272 --14.9336 -3.24806 7.04557 --14.7495 -3.49552 7.99958 --15.1343 -3.90888 8.87761 --15.0341 -4.52608 9.69246 --14.1579 -4.5706 9.19657 --13.4306 -3.86419 8.91343 --12.6615 -3.45573 9.32579 --12.7748 -2.48016 8.95163 --11.8583 -2.23176 9.22924 --11.2258 -2.41529 9.93093 --12.1409 -2.283 10.2977 --12.7554 -1.4789 10.0736 --12.5042 -1.79145 11.0162 --13.1771 -2.50625 11.3292 --13.2945 -1.49843 11.5007 --13.8119 -1.28833 10.6254 --14.3558 -0.8961241 11.3476 --14.9573 -0.7719121 10.5391 --15.3671 -0.5158381 9.75632 --15.6554 0.4962639 9.71188 --16.4669 1.02757 9.69735 --16.9239 0.2878619 10.1884 --16.795 -0.5119051 10.833 --17.3233 -0.9286371 10.1169 --17.9003 -1.53496 9.59746 --18.8312 -1.53839 9.24783 --18.419 -2.41963 8.77454 --18.9629 -3.1781 8.42458 --18.3853 -3.57825 7.78315 --18.0551 -2.74294 7.45256 --17.3498 -2.17615 7.16022 --17.9443 -1.29666 7.13002 --17.8122 -1.16842 6.13755 --18.5356 -0.4191131 6.33706 --19.1599 -1.11058 5.94373 --19.6043 -0.3455701 5.54964 --19.753 -1.29959 5.1581 --20.0812 -0.5405311 4.59497 --20.9892 -0.1161791 4.72888 --20.5949 0.6532929 5.30865 --20.718 -0.1808591 5.82477 --21.3009 -0.9740661 5.85079 --20.4957 -1.54793 6.01556 --20.851 -1.83954 6.86934 --19.8886 -2.15355 6.953 --19.1618 -2.76549 7.18901 --19.5949 -3.17614 6.35648 --20.4163 -3.36997 5.7407 --20.7456 -2.74841 5.04995 --21.7135 -3.0382 4.87326 --22.0084 -3.79759 5.43515 --22.5455 -3.69963 6.21678 --21.5322 -3.55069 6.33498 --20.9944 -4.30631 5.91357 --21.6653 -5.02454 5.56417 --21.8906 -5.22584 4.6327 --22.236 -6.19439 4.60642 --22.136 -7.13678 4.37829 --22.5563 -7.68685 3.61776 --23.2376 -7.29286 3.00613 --22.8 -6.5743 3.37931 --23.443 -6.03809 3.91882 --23.79 -6.76359 4.49515 --23.8292 -7.61084 3.90571 --24.8033 -7.54284 3.94811 --25.0724 -6.64289 4.3289 --25.7831 -7.17918 4.80852 --25.0391 -7.57836 5.31641 --24.4711 -8.39308 5.50226 --24.7625 -8.5808 6.40293 --23.7002 -8.4737 6.38614 --23.6306 -7.47349 6.48781 --23.9674 -7.37908 7.43753 --24.8728 -7.60503 7.81357 --25.7772 -8.03633 7.47732 --26.7986 -8.21379 7.60739 --27.5229 -7.9706 7.0419 --27.8471 -8.89817 7.26341 --28.1121 -8.6893 8.21224 --28.9728 -9.02268 8.17426 --28.8008 -9.47214 7.25817 --28.8903 -10.3333 7.79188 --29.746 -10.5798 8.25109 --30.2959 -10.401 9.12726 --30.7124 -9.47618 8.9877 --30.8798 -8.49928 8.77141 --30.4961 -8.20407 7.89625 --30.9602 -7.89842 7.10152 --31.4638 -7.77651 6.30762 --31.6427 -8.74012 6.23402 --31.6774 -9.67418 5.91967 --31.0421 -10.2497 5.35899 --30.434 -9.95114 4.64196 --30.2946 -9.93402 3.684 --29.688 -9.6531 2.94686 --29.5911 -8.959 2.21303 --29.9523 -8.91761 1.21904 --29.1395 -9.26679 0.7553351 --28.503 -10.0408 0.5690901 --28.6741 -10.4062 1.53046 --27.7655 -10.5537 1.55209 --27.6485 -9.52329 1.54315 --26.8908 -9.45588 2.13679 --25.9656 -9.59319 2.21339 --24.9448 -9.70667 2.01664 --25.1802 -8.9631 1.35016 --24.5921 -9.64305 0.8507291 --24.3806 -8.67904 0.7143361 --23.5636 -8.75185 1.26997 --23.0839 -9.58895 0.8988761 --23.4821 -10.5274 0.7296581 --22.7368 -10.5616 1.41766 --23.604 -10.7885 1.85289 --23.9343 -11.7354 1.83459 --23.7885 -12.4241 2.53541 --23.0343 -12.3539 3.11046 --22.594 -11.5382 2.91653 --22.1069 -10.9557 3.73236 --22.6658 -10.1148 3.76703 --22.2654 -10.191 4.69965 --21.3227 -9.79043 4.83072 --21.4849 -8.89094 5.24785 --21.1539 -8.59825 4.32443 --22.0821 -8.75689 4.13776 --22.9614 -8.57513 4.54538 --23.5514 -8.69337 3.75768 --23.6217 -8.64355 2.69243 --22.5522 -8.49205 2.53009 --21.5255 -8.20206 2.42071 --20.8184 -7.44592 2.7268 --21.2732 -6.99189 1.93919 --20.5244 -6.55127 2.43428 --19.5055 -6.60945 2.38919 --19.6376 -6.25765 3.34364 --20.1163 -6.40019 4.20926 --20.0477 -6.18986 5.18335 --20.4173 -6.08217 6.08258 --20.1527 -6.84352 6.6312 --20.2438 -6.84642 7.62796 --20.1151 -6.02152 8.18266 --19.5463 -5.29809 7.79836 --18.5407 -5.2194 7.80755 --18.5422 -5.15157 8.78069 --17.6793 -5.34803 9.24246 --17.1312 -5.73615 8.47341 --16.5052 -6.51722 8.28069 --15.6275 -6.87766 8.45374 --14.859 -6.1837 8.17454 --14.3886 -6.80816 7.5019 --13.5538 -7.12615 7.12711 --12.9374 -7.98799 7.23576 --13.065 -8.48872 6.42189 --12.6729 -9.02608 5.55513 --12.6995 -9.95237 5.12177 --13.0213 -10.882 5.42496 --12.2789 -10.7597 6.13712 --11.5385 -10.4565 6.72089 --11.4599 -11.4333 6.58586 --10.9839 -12.0721 7.16727 --11.3923 -12.9527 6.85925 --10.4544 -13.2842 6.57464 --10.3448 -13.5834 7.55042 --9.36605 -13.4526 7.56272 --9.13512 -14.1902 6.88959 --9.05221 -14.9759 6.308 --8.09812 -14.8128 6.25897 --8.34814 -14.8619 5.2853 --8.28847 -14.0104 4.74117 --9.26922 -14.2976 4.5517 --9.56161 -13.3339 4.71015 --9.09019 -12.6176 4.36058 --9.69881 -11.7685 4.27918 --10.1788 -10.8784 4.21103 --10.2803 -10.4842 5.08128 --9.42287 -9.9416 5.21628 --8.69397 -9.26695 5.47643 --9.55931 -8.84293 5.67031 --9.62325 -7.89428 5.42089 --9.78625 -7.6749 6.34588 --10.5881 -7.49276 6.89485 --10.7426 -7.43651 7.86997 --10.5225 -8.37894 7.56393 --9.5659 -8.30768 7.45785 --8.60888 -8.25004 7.23432 --8.10368 -8.53678 6.46875 --8.16843 -7.77673 5.91658 --7.98731 -8.18694 5.10034 --8.56159 -8.64916 4.41937 --9.47951 -8.8574 4.10219 --10.2839 -9.4285 3.89998 --11.3399 -9.57069 4.26419 --11.4181 -8.69596 3.79048 --12.4444 -8.73447 3.54697 --13.1544 -9.02972 4.24557 --13.1293 -8.14467 4.70069 --12.214 -7.97171 4.52973 --12.5264 -7.60213 5.44221 --13.2552 -6.94897 5.48903 --12.8803 -6.52341 4.67416 --12.2577 -6.9935 4.04542 --12.23 -6.94654 3.07282 --13.1814 -7.23969 3.278 --13.6149 -6.90467 2.47307 --13.4081 -6.45824 1.56555 --14.3161 -5.93179 1.41258 --14.0942 -5.345 2.16926 --13.093 -5.33255 2.06693 --13.3614 -5.96065 2.69728 --13.3455 -6.10453 3.70964 --13.291 -5.08153 3.73874 --13.5227 -4.08192 3.60732 --12.8318 -3.84538 2.88551 --12.2017 -4.47169 2.30971 --13.0649 -4.20864 1.91403 --12.3919 -3.46652 1.86509 --12.2097 -2.51721 1.87325 --12.0268 -1.50788 2.05332 --11.182 -1.20994 1.5109 --10.2539 -1.41675 1.8266 --10.2083 -1.0579 0.8957651 --9.23047 -0.8263741 0.8760581 --9.50883 -0.9359691 -0.08010118 --9.76948 -1.7394 -0.5646889 --8.73503 -1.93784 -0.2816079 --8.57486 -2.13745 0.7269531 --8.47035 -2.34422 1.65492 --9.01899 -2.43475 2.42116 --9.93013 -2.3205 2.78805 --10.0115 -3.32079 2.96323 --9.53198 -4.00714 2.4232 --9.90379 -4.69911 3.07948 --10.2124 -5.53136 3.58917 --9.32789 -5.21775 3.92169 --8.78577 -5.6123 3.24836 --8.2262 -6.39516 3.64534 --9.07472 -6.55511 4.15219 --9.95873 -6.76745 3.65097 --10.9601 -6.59397 3.84586 --10.528 -6.35217 4.81108 --11.1546 -6.12326 5.52947 --11.9662 -6.65645 5.65621 --11.5739 -7.37179 6.14975 --10.895 -7.99238 5.81369 --10.6494 -8.39647 4.99536 --10.6841 -7.59934 4.36684 --10.8011 -7.90372 3.43788 --11.5797 -7.90165 2.80754 --11.8738 -8.40201 1.99107 --12.3779 -8.8358 1.32324 --12.1949 -9.81591 1.06708 --11.7486 -10.6639 0.6752741 --11.4646 -10.6223 -0.2737539 --10.5722 -10.2134 -0.4441349 --9.74434 -10.6118 0.08877352 --9.41957 -9.70531 -0.1728289 --8.7107 -9.2652 -0.6094719 --8.48307 -8.70124 0.1721361 --9.32538 -8.24195 0.1610261 --9.81965 -7.62159 -0.4705099 --10.5853 -8.12014 -0.8857959 --9.79943 -8.28606 -1.45246 --9.9958 -7.40668 -1.92818 --9.03246 -7.00161 -1.75905 --8.41029 -7.43586 -1.00455 --7.88792 -8.18547 -0.6848129 --6.95254 -7.9172 -0.3502299 --6.51523 -8.57556 -0.9225159 --6.20996 -8.03278 -1.7017 --5.79324 -7.56806 -2.44666 --5.09654 -8.20497 -2.81053 --5.69394 -7.85312 -3.62041 --6.28493 -8.69572 -3.8482 --5.62196 -9.35362 -4.13606 --5.05595 -9.86458 -4.80535 --4.8463 -10.3696 -3.92742 --4.00834 -10.9421 -3.75403 --3.0147 -11.0427 -4.04114 --3.07436 -11.9539 -3.57949 --2.08063 -12.2464 -3.64869 --1.89176 -13.1716 -3.31735 --1.63678 -14.0276 -3.82369 --1.76657 -15.0393 -3.85377 --2.66128 -14.714 -3.60785 --3.40214 -14.1579 -3.21253 --3.15056 -14.7785 -2.43178 --3.90951 -14.6443 -1.81137 --4.42118 -13.8541 -1.82912 --4.00248 -13.824 -0.9943129 --4.72723 -13.9457 -0.3147079 --4.22101 -14.1328 0.4992931 --3.33089 -14.3674 0.1724631 --3.25142 -13.5138 -0.3833709 --2.42272 -13.0636 -0.3962309 --1.62059 -12.8028 0.03944742 --1.57508 -11.7708 -0.1718979 --1.67002 -10.774 -0.2343349 --1.62652 -10.3737 0.5974801 --1.11186 -9.60659 1.02011 --0.336853 -9.48398 0.3556071 -0.432066 -9.15993 0.9872611 -0.08077057 -9.33408 1.95711 -0.672739 -8.69878 2.38883 -0.909954 -7.77095 2.51119 -1.45528 -7.41416 3.35335 -2.41493 -7.15281 3.14864 -2.83638 -6.24356 3.5237 -3.08094 -6.54208 4.51597 -3.948 -6.56963 4.19237 -4.89748 -6.64691 4.2155 -4.59642 -6.70164 5.17332 -5.14828 -5.97505 5.64504 -5.23701 -6.88507 6.00631 -4.95753 -6.72924 6.97154 -4.7598 -7.64717 7.12428 -4.65204 -8.29601 7.84901 -3.82519 -8.74655 8.21496 -4.4953 -9.49388 8.02825 -5.04671 -9.46476 8.87931 -5.23522 -10.3971 8.43525 -6.12849 -10.3272 7.97872 -6.30115 -10.9495 7.14048 -5.67761 -10.4938 6.52576 -5.77502 -9.6163 5.99313 -5.41567 -8.88076 5.6377 -4.50628 -9.08393 5.21407 -5.038 -9.0742 4.3738 -5.79647 -8.42463 4.61976 -5.91618 -7.52148 4.41029 -5.0718 -7.58135 3.81229 -4.33099 -8.18745 4.09156 -4.56226 -8.73472 3.2743 -3.71178 -8.99162 2.78355 -3.98714 -8.32947 2.06322 -4.84558 -7.93126 2.62387 -5.57227 -7.74836 1.97118 -6.58354 -7.65636 2.19929 -6.3115 -8.68952 2.33013 -6.99898 -8.20951 2.90278 -7.30997 -9.15742 2.90309 -7.55762 -10.0051 2.43757 -7.97548 -10.7502 2.92323 -7.60417 -10.4541 3.76985 -7.07053 -10.387 4.62572 -6.69373 -9.75756 3.99018 -6.73742 -8.96194 4.70256 -7.18747 -8.11495 4.75792 -7.26797 -8.61822 5.59198 -6.67993 -9.4375 5.54108 -7.11418 -9.82905 6.32256 -7.70887 -9.20054 6.84463 -8.3969 -9.22973 7.59042 -7.93399 -8.35582 7.73638 -8.33891 -7.45251 7.41603 -7.907 -7.35248 8.39137 -8.05037 -6.43259 7.93478 -7.88318 -6.19632 8.92142 -8.80584 -6.09829 9.19357 -8.7957 -5.09305 9.1631 -9.06011 -4.68811 8.25584 -9.10664 -5.68326 7.89006 -9.95487 -5.63963 8.40052 -10.5617 -5.01073 8.91856 -11.2659 -5.21506 9.5241 -11.7312 -5.78802 10.2017 -11.9783 -5.58917 11.1457 -11.1968 -5.46798 11.7961 -10.521 -6.14165 12.0489 -10.1598 -6.73281 12.7502 -10.0509 -7.75274 12.755 -10.4214 -7.42335 11.9464 -11.179 -7.1991 11.3393 -11.5893 -7.35188 12.2063 -12.312 -6.87068 12.6281 -12.6831 -7.85429 12.569 -12.132 -8.55427 12.1788 -12.4208 -8.62453 13.148 -12.117 -7.92937 13.7809 -11.9941 -7.80083 14.814 -11.1956 -7.98021 15.2516 -10.2209 -7.84038 15.1375 -10.499 -7.20543 14.3926 -10.338 -8.17589 14.1404 -11.0599 -8.80375 14.4674 -10.2212 -9.27043 14.6364 -10.0317 -10.2286 14.8203 -9.27894 -10.0622 14.1543 -9.28348 -10.2237 13.1694 -8.3882 -9.88387 12.7372 -9.12077 -10.2231 12.1365 -9.84451 -10.9652 12.071 -10.2218 -10.3904 11.3941 -10.8749 -10.2237 12.1753 -10.9662 -10.5272 13.0751 -10.2356 -10.7522 13.6997 -10.097 -11.6126 13.2576 -9.7299 -11.6733 14.1353 -9.72061 -12.6372 13.9723 -9.95925 -12.6577 14.986 -10.6026 -11.9496 14.7323 -11.0771 -11.4066 15.4231 -11.568 -11.3582 16.2924 -11.836 -12.1332 16.9063 -12.4842 -12.1259 16.1551 -12.3887 -13.0385 15.7703 -11.5151 -13.3255 16.1246 -11.6945 -13.1965 17.0686 -12.1283 -13.3922 18.0062 -12.9073 -12.835 17.8343 -12.9377 -12.737 18.8467 -13.7886 -12.5446 18.37 -14.5484 -12.7001 17.8034 -14.6223 -13.6912 17.5474 -15.1482 -13.0638 16.8972 -15.4914 -12.098 17.0241 -15.3908 -12.0734 18.0553 -16.2857 -12.2579 18.4674 -15.837 -11.9502 19.4511 -15.0682 -11.3599 19.2191 -14.1151 -11.0734 19.236 -13.7463 -11.6337 20.0014 -13.464 -10.693 20.0342 -13.3875 -10.2778 20.8855 -12.8586 -9.57002 20.4024 -12.3171 -10.1753 19.7942 -11.6184 -10.2722 19.0898 -11.0216 -11.1185 19.2511 -10.6646 -11.1746 18.3268 -10.0072 -11.8448 17.8362 -10.6281 -12.2214 17.1054 -9.70475 -12.6013 17.2345 -9.54628 -13.3623 16.629 -9.03207 -14.0296 16.0862 -9.15908 -15.0596 16.2307 -9.97682 -15.589 16.5196 -9.64289 -15.0507 17.2821 -9.29262 -15.8812 17.7548 -9.70394 -16.7703 17.5603 -10.4463 -16.1508 17.7905 -11.1285 -15.388 17.9942 -12.1672 -15.2387 18.1737 -12.2818 -14.5877 18.9012 -12.5207 -14.2603 19.7641 -13.2142 -13.5657 19.5923 -14.0689 -13.7234 20.098 -13.3768 -14.3737 20.3532 -14.1037 -14.8915 20.8492 -15.0753 -15.067 20.7612 -15.5458 -14.1786 20.9295 -16.1044 -14.7987 21.4944 -16.5785 -14.1033 22.1712 -16.3962 -14.7314 22.8081 -15.5339 -15.2002 22.563 -14.8567 -14.7534 23.1389 -14.9203 -13.7776 23.2839 -14.1287 -13.9812 23.9652 -13.5534 -13.2898 24.4116 -12.9358 -12.6489 24.7571 -13.6792 -12.7236 25.4095 -12.8047 -13.0673 25.8156 -12.3128 -13.786 26.0631 -12.1828 -14.7107 25.7874 -11.9604 -15.7245 25.5152 -11.9557 -14.9466 24.8212 -12.1404 -14.3119 24.0808 -11.2077 -14.6287 24.0369 -11.5552 -14.1281 23.2436 -11.9346 -15.0942 23.1616 -11.5949 -14.8565 22.1977 -10.694 -15.2886 22.1302 -9.88386 -15.5283 22.6895 -9.99171 -16.1353 23.5583 -9.98111 -15.2847 24.2282 -9.12663 -15.8338 24.1335 -8.72211 -16.4585 23.4502 -7.92623 -17.0423 23.7967 -8.43447 -17.9295 23.5176 -7.70158 -18.4094 23.9847 -7.14815 -17.7081 24.4458 -6.67664 -18.5331 24.7911 -5.68821 -18.6968 24.4916 -4.90188 -19.3676 24.5507 -4.95213 -19.6661 23.6052 -3.96198 -19.4151 23.3217 -3.32503 -18.6214 23.0502 -3.44208 -17.924 23.7381 -4.20431 -17.278 23.7983 -3.78635 -16.4847 23.2939 -3.36994 -16.0585 22.4795 -2.39729 -15.7667 22.3306 -1.3923 -15.7672 22.447 -1.0172 -15.9977 21.605 -0.725339 -15.5067 20.799 -1.1464 -14.6508 20.5897 -1.13883 -13.9521 21.238 -0.431807 -13.9369 20.5156 --0.03169973 -13.4196 19.7529 --0.199314 -12.4593 19.4866 -0.01266417 -12.2618 20.4542 -0.290117 -11.8129 21.3103 --0.682834 -11.4939 21.2808 -0.07871707 -10.9362 21.7149 --0.27504 -10.0752 22.2741 --0.03392763 -10.1927 23.2752 -0.292354 -10.9387 22.797 -1.09712 -11.3906 22.3685 -0.728895 -11.718 23.305 --0.268841 -11.773 23.4099 --1.17271 -11.9957 23.7204 --0.647067 -11.5344 24.3714 --0.249529 -10.8341 24.998 -0.654183 -10.6325 25.4435 -0.965977 -9.82209 24.9564 -1.38526 -9.1748 25.5864 -1.05991 -8.78347 26.4863 -1.29989 -9.28799 27.3017 -1.83867 -8.79225 27.9833 -2.53922 -8.32349 27.4377 -2.45067 -8.11709 26.466 -3.30334 -8.17723 26.8565 -3.76545 -7.42818 27.3832 -4.20815 -7.30239 28.3438 -3.47749 -7.61795 28.8443 -3.75542 -6.93913 29.4925 -3.49527 -7.40704 30.3288 -2.59322 -8.02761 30.3854 -2.53578 -8.82534 29.7945 -2.5859 -8.97016 28.788 -2.77692 -9.98062 28.7493 -2.26536 -10.6663 29.25 -1.92433 -11.6165 29.3157 -1.67925 -11.5422 30.2424 -2.64987 -11.5834 30.4728 -3.2702 -11.3923 31.2342 -3.53337 -11.6183 32.178 -2.73506 -12.2551 31.9717 -1.86343 -12.7123 32.0377 -1.97009 -13.3576 31.3318 -1.27986 -13.5194 30.711 -1.30898 -13.2514 29.727 -1.54466 -14.2101 29.652 -0.519134 -14.4606 29.7116 --0.174577 -14.6752 30.3083 --0.149983 -15.3387 29.5832 --0.08527413 -16.2852 29.9599 -0.816636 -16.0088 30.4331 -1.5182 -15.2693 30.5339 -2.53831 -15.4312 30.4409 -2.56591 -15.0899 29.4367 -3.49535 -15.321 29.6702 -3.95118 -15.2959 28.7779 -4.76522 -14.7016 28.9266 -5.01779 -13.7387 28.669 -5.27605 -13.6048 27.7787 -4.74446 -12.9493 27.2891 -4.09996 -13.1977 28.0048 -3.47253 -13.8934 28.3046 -3.6815 -14.7329 27.7457 -3.98234 -15.1186 26.8569 -4.31935 -16.0299 26.8799 -5.10366 -15.4362 27.1509 -5.61577 -15.2916 28.0265 -5.98613 -15.9959 28.6391 -6.72397 -16.2773 28.0296 -6.0561 -16.1552 27.2418 -5.40599 -16.7146 26.7141 -5.48422 -16.2691 25.8193 -4.48032 -16.1774 25.7227 -4.32304 -15.1964 25.6078 -3.63423 -15.7527 25.1602 -2.80507 -15.3075 25.3725 -2.38962 -14.8054 26.1547 -1.65822 -15.1476 26.7986 -1.6929 -16.0912 27.1249 -2.33599 -16.9379 27.3601 -1.77605 -17.7042 27.3306 -2.12298 -18.5888 27.0257 -1.3978 -18.8995 26.4103 -2.11015 -19.5033 26.0965 -2.48352 -18.6382 25.7075 -2.89624 -19.2934 25.0888 -1.97937 -19.0535 24.7623 -1.83954 -18.4934 24.0073 -1.4574 -17.5344 23.876 -0.688629 -17.6855 23.2747 -1.34595 -18.3463 22.9697 -0.707629 -19.0883 23.158 --0.108001 -18.8305 23.7196 --0.462673 -19.6956 23.4572 --0.876909 -20.5862 23.2193 --1.54809 -20.6632 22.5176 --1.97861 -20.3421 23.3592 --2.84115 -19.7889 23.3744 --2.19498 -19.0301 23.6581 --1.89968 -19.4248 24.5108 --2.2922 -19.4154 25.4431 --1.41913 -19.3257 26.0188 --1.36056 -20.178 26.5309 --1.27834 -21.1745 26.4197 --1.24742 -22.2056 26.2937 --0.535256 -22.7409 25.7781 -0.2824 -22.2026 26.1188 -0.807009 -22.3173 25.2541 -1.74429 -22.0295 25.2949 -2.54869 -21.4617 25.4179 -2.95405 -21.2111 24.5657 -2.44994 -21.0632 23.7664 -2.53639 -21.9808 23.4023 -3.08859 -22.7716 23.6821 -3.52303 -23.3115 24.4472 -4.02005 -23.9697 25.0146 -4.89749 -23.5002 24.8581 -5.06867 -23.2381 23.8369 -5.60881 -22.448 23.7529 -5.79652 -22.1132 22.8345 -6.2619 -22.4822 22.0153 -6.62932 -23.408 22.115 -5.92652 -23.6284 22.8216 -6.25707 -24.4767 23.0366 -5.73137 -25.0699 22.4835 -6.56579 -25.6581 22.3257 -7.00724 -26.523 22.7207 -7.15678 -26.7409 21.7357 -6.93846 -26.829 20.7076 -6.43078 -26.5557 19.892 -6.0891 -27.121 19.1746 -5.36694 -27.7347 19.3371 -4.99255 -28.6367 19.1846 -5.0596 -28.6368 20.1468 -4.46459 -28.4094 20.9074 -3.86487 -29.23 20.8405 -3.91483 -28.9199 19.8418 -3.21227 -29.5983 19.7592 -2.73599 -29.5096 18.934 -3.5609 -29.1522 18.4077 -3.37913 -29.3521 17.4118 -3.69959 -30.2931 17.2895 -3.06128 -30.8917 16.8109 -2.1127 -30.8282 16.4966 -2.61277 -30.9872 15.6386 -2.97332 -30.7242 14.7375 -3.50087 -30.4775 13.9507 -4.42087 -30.1839 14.3241 -5.16096 -29.9129 14.9925 -5.26521 -29.2888 15.733 -4.26871 -29.0336 16.036 -4.20427 -28.7056 15.0965 -4.4272 -28.875 14.1493 -5.10462 -28.719 13.3732 -5.44286 -29.1241 12.5427 -5.15537 -29.5327 11.6438 -4.87956 -30.0046 10.8106 -4.7889 -30.91 10.4992 -4.06691 -31.0006 9.75587 -4.31936 -31.8397 9.25919 -4.94265 -31.7022 8.51658 -5.69201 -31.591 9.21544 -6.05245 -32.2578 8.55484 -7.01854 -32.5895 8.53958 -7.25508 -32.5468 7.567 -7.01894 -32.8624 6.61589 -6.41158 -32.1169 6.5313 -6.02511 -31.5674 5.76293 -5.46756 -31.2046 6.48122 -6.00498 -31.3533 7.35979 -6.57477 -30.7834 6.79277 -7.4564 -31.2102 7.04994 -7.50028 -30.3391 6.55868 -6.77008 -30.0039 6.02851 -6.14042 -29.2632 6.26375 -5.37542 -29.5274 5.81603 -5.16051 -30.3033 5.25944 -5.63311 -30.5625 4.38306 -6.33821 -29.9407 4.16891 -6.94997 -30.5923 3.77024 -6.60244 -30.2052 2.96887 -6.75446 -30.1783 2.03276 -7.088 -31.0786 2.17532 -6.28471 -31.3804 1.65422 -6.06878 -31.9897 0.7806721 -5.09407 -32.0449 0.3878521 -4.41302 -31.9268 1.14882 -4.27991 -32.4016 2.00379 -3.92176 -33.2783 1.76938 -4.23981 -34.2466 2.06049 -5.08944 -33.7855 2.09426 -5.90305 -33.2952 2.49566 -6.69152 -32.8372 2.92915 -7.10439 -32.6909 3.78489 -6.75413 -31.7586 3.71431 -7.61967 -31.4689 4.19098 -7.46374 -30.9786 5.08755 -8.20464 -30.4909 4.69328 -8.78869 -30.4725 3.94162 -9.55189 -30.4844 3.2895 -9.94315 -30.7957 2.45022 -9.86763 -31.7499 2.42608 -10.4961 -32.1932 1.84059 -9.65242 -31.9568 1.36016 -10.0294 -31.1282 0.9094231 -9.66795 -30.1425 0.9582691 -10.449 -29.5794 1.08684 -10.2411 -28.592 0.7743931 -11.1735 -28.6603 1.25335 -10.8277 -28.0337 1.92742 -10.339 -27.4794 2.59028 -9.306 -27.3339 2.81054 -8.53278 -27.6322 2.24473 -7.67185 -27.1785 2.56715 -7.20193 -26.259 2.30337 -8.10617 -26.2789 1.95761 -8.64807 -26.5757 1.24665 -8.53029 -27.5536 1.09649 -8.77867 -27.847 0.1648101 -8.97438 -27.0583 -0.4114099 -9.67526 -26.3842 -0.05133288 -10.5479 -25.9287 -0.03319518 -10.5607 -25.1347 -0.7400499 -9.60357 -25.1824 -0.9198149 -8.80356 -25.7505 -0.8872829 -8.02858 -26.1273 -1.44816 -7.7948 -25.1505 -1.54965 -7.46366 -24.959 -2.46012 -7.13635 -25.8907 -2.38113 -6.84258 -26.7744 -2.81514 -6.59198 -26.3773 -3.71811 -5.82379 -25.7037 -3.72308 -5.71126 -25.7539 -2.70447 -4.92815 -26.4689 -2.69205 -4.1097 -26.9138 -3.12939 -3.54376 -26.391 -2.51984 -3.7106 -25.6569 -1.80025 -4.52964 -26.2343 -1.55838 -4.55375 -26.8973 -0.7863659 -3.88718 -26.3333 -0.1962089 -3.01699 -26.2429 0.2913851 -3.61306 -25.6401 0.8360921 -4.19151 -24.8604 1.0508 -3.49137 -24.1774 0.8038601 -3.18427 -23.2902 1.23812 -2.43248 -23.9323 1.36908 -2.37176 -23.5649 2.34107 -1.36405 -23.5402 2.63652 -1.95831 -22.8877 3.19233 -2.40156 -22.0312 2.88845 -3.12641 -21.3777 2.7191 -3.84184 -20.7329 2.5338 -3.35147 -20.7703 1.6574 -4.1301 -20.0916 1.5808 -3.12667 -19.713 1.70466 -3.09079 -18.9287 2.30945 -2.34069 -18.5274 2.91442 -2.51281 -17.5483 3.08418 -2.08626 -16.7421 3.42472 -3.01169 -16.897 3.73091 -3.81953 -17.2272 4.25209 -4.34185 -17.361 5.08157 -3.342 -17.5525 5.07987 -2.6273 -18.2467 4.95602 -2.18612 -17.8911 5.74418 -2.39674 -17.8796 6.63488 -3.39198 -18.0747 6.78539 -3.34136 -17.9617 7.8115 -2.83865 -18.0238 8.69303 -3.73414 -18.2459 9.05234 -4.60729 -18.1067 9.5404 -5.34405 -17.7884 8.99116 -4.61571 -17.5964 8.36354 -4.71512 -16.6839 8.09093 -3.85546 -16.3119 8.43661 -3.54957 -15.3833 8.86311 -2.60937 -15.746 8.51148 -1.71982 -15.6868 9.0269 -1.57991 -15.5125 8.09272 -0.794504 -14.9549 8.18173 -0.166124 -14.1728 8.09784 -0.436231 -14.1736 7.13912 -0.778462 -13.2149 7.06021 --0.08411993 -13.1487 7.58119 --0.770971 -12.5211 7.08491 --1.31601 -12.3584 7.94635 --1.06838 -13.1397 8.43886 --0.958268 -12.7637 9.3415 --1.8792 -12.3874 9.59024 --2.3114 -13.1585 9.28982 --2.87657 -13.9504 8.97557 --2.66081 -14.7454 9.55889 --1.83837 -15.1645 9.7555 --2.10956 -15.8522 10.4864 --2.20354 -16.727 10.0684 --2.19288 -17.5164 9.41281 --2.80917 -18.2756 9.184 --2.6144 -18.8812 10.0036 --3.31415 -19.5641 10.0232 --3.51747 -19.8565 9.13854 --4.38988 -19.6461 9.63977 --4.06872 -20.5848 9.77979 --4.63817 -21.345 9.44221 --4.34385 -22.2107 9.08414 --3.33298 -22.0798 8.92704 --3.72614 -22.3781 8.07962 --2.99287 -21.7021 7.87074 --2.10456 -21.256 7.88261 --1.81144 -21.3777 8.84327 --2.15753 -20.754 9.56648 --2.42406 -20.7831 10.4757 --3.13826 -21.5109 10.5491 --3.05383 -21.3537 11.5143 --3.9174 -21.1297 11.9879 --4.02796 -20.4916 11.2382 --5.00291 -20.3972 11.1148 --5.17723 -19.7483 10.4044 --5.1926 -19.0445 11.1526 --5.31865 -19.5651 11.9568 --6.07963 -20.19 12.2252 --6.63524 -19.6753 12.7716 --6.36725 -19.2462 11.865 --6.19625 -18.4947 11.2311 --6.33071 -17.5618 10.8432 --6.74884 -17.8079 10.0244 --7.07065 -17.2916 9.25436 --7.8367 -17.4916 9.92358 --7.98473 -18.4803 9.86211 --7.08634 -18.8819 10.2249 --6.31155 -19.4265 9.86869 --5.56577 -18.8609 9.54426 --4.95549 -18.1097 9.31955 --4.14308 -18.744 9.11453 --4.66193 -18.9386 8.27486 --4.25268 -18.0536 8.07225 --4.12011 -18.3423 7.08113 --4.37857 -18.4467 6.12653 --3.4432 -18.0029 6.1649 --3.08436 -18.8696 6.42886 --2.3448 -19.4761 6.68824 --2.43923 -19.7932 7.60801 --3.00117 -18.9215 7.63017 --2.0121 -18.7304 7.67984 --1.65559 -18.0215 7.12076 --1.32377 -18.1171 6.14431 --0.589749 -17.4005 6.01699 --1.52826 -16.9539 6.08019 --2.27802 -17.4812 5.75332 --2.76673 -16.8203 6.30379 --3.67332 -16.7793 6.01003 --3.76494 -15.795 6.23469 --3.70776 -14.9935 5.58204 --3.46638 -14.5391 6.44044 --2.82092 -15.3574 6.61286 --1.88157 -15.403 6.46462 --1.42555 -14.5775 6.20287 --2.21204 -14.1701 5.5946 --3.19711 -13.8797 5.32895 --4.10084 -13.8998 4.96984 --4.30015 -14.6775 4.29614 --4.81359 -14.3979 3.50498 --5.03346 -13.4187 3.30984 --5.0091 -12.3744 3.37242 --4.28706 -11.6514 3.42177 --3.84528 -12.5351 3.42797 --3.395 -13.3572 3.88394 --2.55321 -12.9156 3.85573 --2.46949 -13.8245 3.41844 --1.83466 -13.888 4.16778 --1.07269 -14.3704 4.65028 --0.204381 -14.0622 5.07115 -0.604582 -14.7705 5.28947 -0.04996767 -15.5978 5.02013 --0.167659 -16.5286 5.22067 --0.761388 -16.5196 4.4443 --0.07502663 -16.7822 3.73273 -0.531513 -17.104 4.44652 -1.23369 -17.8473 4.29427 -2.13424 -17.5952 4.28589 -2.12737 -16.7452 4.93626 -2.22306 -15.8372 4.99855 -2.16645 -14.8806 4.86766 -2.98479 -14.3478 4.9732 -3.77318 -14.5619 5.52073 -4.55577 -14.6465 6.24447 -5.16692 -14.2527 6.86266 -5.0017 -13.4425 6.22649 -3.98909 -13.4933 6.02705 -3.89183 -12.4989 6.23804 -3.08419 -12.9966 5.96056 -3.35128 -12.6337 5.02006 -2.76839 -12.016 4.57669 -2.60178 -12.5342 3.68564 -2.17268 -12.9641 4.48567 -1.98284 -13.4455 5.30958 -1.23317 -13.9545 4.84272 -0.852034 -13.0821 4.69283 -0.218634 -12.7286 5.42728 -0.04598387 -11.7534 5.41253 --0.858053 -12.0784 5.77539 --1.35532 -11.381 6.2955 --0.741542 -11.0492 7.01377 -0.222019 -11.2074 6.82516 -0.644275 -11.7889 7.55778 -1.10859 -12.2843 8.27182 -1.57917 -11.3455 8.54345 -1.82791 -10.5394 8.0276 -1.48096 -9.72162 8.55164 -1.23803 -9.52806 7.59175 -2.18086 -9.17617 7.4343 -2.95304 -9.33066 6.88949 -3.55401 -10.0112 6.38102 -4.10665 -10.7839 6.26092 -3.86506 -10.1015 5.60869 -3.06497 -9.81245 5.12774 -3.24052 -8.84732 5.09376 -3.87724 -8.13332 5.14488 -3.05207 -7.56565 4.83897 -2.35379 -7.85068 5.52982 -1.72768 -7.14177 5.21044 -2.47821 -6.50118 5.39008 -2.1846 -5.85607 4.61829 -2.55993 -5.40375 5.42054 -2.19381 -5.4894 6.37177 -2.72036 -6.28649 6.74202 -2.14555 -6.10452 7.45072 -1.92842 -6.58579 8.2491 -2.77021 -6.06855 8.68678 -3.68443 -6.34615 9.04043 -4.61243 -6.55482 8.85427 -5.23878 -7.33384 8.92016 -5.71794 -8.11888 8.73715 -6.46797 -8.20633 9.3932 -7.19502 -7.57988 9.44107 -6.98279 -6.56206 9.40688 -6.33106 -6.06809 8.80385 -6.94728 -5.53913 8.20479 -7.02893 -4.54694 7.92184 -7.2901 -5.23104 7.22779 -6.7799 -4.84429 6.44579 -7.23038 -3.98781 6.18673 -6.25066 -3.98663 5.89311 -6.42988 -3.2669 5.20572 -5.87521 -2.44693 5.35534 -6.08657 -2.61301 6.3555 -5.93349 -3.46375 6.94639 -5.17192 -3.13405 7.53098 -4.60964 -3.51306 8.36184 -3.69706 -3.96352 8.49253 -3.26228 -3.6165 9.30574 -3.35026 -4.22518 10.0215 -4.09151 -4.94097 10.0338 -3.31965 -5.17435 10.7026 -3.9591 -5.52151 11.3416 -4.08907 -6.42336 10.8501 -4.97599 -5.95218 10.8875 -5.61309 -5.11238 11.0406 -5.60291 -4.31445 10.5124 -5.0333 -3.62238 10.2114 -4.84778 -2.8316 10.9084 -3.98949 -2.3663 11.151 -3.7653 -1.99442 10.2379 -3.47019 -1.32741 9.52049 -3.91333 -0.5187531 8.99508 -4.65039 -1.19749 8.77088 -5.37174 -1.66994 9.29078 -6.14833 -2.24294 9.64288 -7.02875 -1.91319 9.3368 -7.83577 -1.68445 8.69591 -8.57591 -2.34071 8.96902 -7.99773 -3.09338 8.69459 -7.4737 -2.83836 9.54882 -6.96497 -3.16523 10.3481 -7.96687 -3.3058 10.4128 -7.49334 -3.77973 11.2084 -6.77729 -3.74953 11.8964 -7.4131 -3.9005 12.5595 -6.49517 -4.00731 12.798 -5.76858 -3.89104 13.5446 -5.09561 -4.70182 13.7053 -4.2207 -4.9355 14.1136 -3.38476 -5.19204 13.6223 -3.24404 -5.55199 14.5565 -3.03688 -5.34152 15.5333 -3.68541 -6.12894 15.5208 -4.41917 -5.6839 16.0052 -4.34889 -6.67442 16.0366 -3.43891 -7.05232 15.8659 -2.62956 -7.20852 16.4767 -2.69145 -8.16487 16.093 -1.82258 -8.43695 15.8278 -1.3441 -7.79057 16.4579 -0.765754 -7.53005 17.1835 -0.430452 -8.20105 17.9422 --0.283059 -8.82487 18.0717 --0.515426 -9.82416 18.1682 -0.29211 -10.258 17.8496 -0.716902 -10.9073 18.4042 --0.144323 -11.2171 18.0334 --0.04546883 -12.158 18.3781 --0.356866 -12.7668 17.6711 --0.397227 -12.6639 16.6379 --0.416311 -11.8646 16.0312 --0.437444 -12.5074 15.371 -0.01688057 -13.1286 14.8799 --0.839018 -13.6232 14.5571 --0.785639 -12.6251 14.4972 -0.104365 -12.3285 14.2708 --0.326164 -11.5524 13.7637 --0.727061 -11.4947 12.7973 --1.24766 -10.9375 12.1169 --1.94669 -11.6568 12.4027 --2.78175 -11.5407 12.9042 --2.93037 -10.7327 13.4738 --2.41091 -11.1105 14.1991 --3.01687 -11.7739 14.6727 --3.89672 -11.4316 15.1552 --4.08293 -11.6943 14.2084 --4.43063 -10.7329 14.215 --5.29387 -10.7757 14.6505 --5.80107 -11.6381 14.4818 --6.59529 -11.8214 15.0542 --6.52944 -12.0841 15.9654 --6.47184 -11.1418 16.2919 --6.53021 -10.4308 15.5987 --6.48563 -9.46429 15.3587 --6.08227 -9.60663 14.5085 --6.17465 -8.98245 13.6768 --5.9508 -9.43023 12.8248 --4.89801 -9.08165 13.1164 --4.24492 -8.63113 13.6741 --4.36523 -7.67977 13.901 --5.17175 -7.91564 14.4657 --4.5743 -7.60823 15.2618 --4.97982 -6.89268 15.791 --5.04334 -6.80031 14.7903 --4.51849 -6.26651 14.0927 --4.53205 -6.01778 13.1458 --3.87954 -6.38432 12.4241 --4.17788 -6.53155 11.4705 --4.08115 -7.29424 12.1032 --3.81988 -7.49885 13.0662 --3.33415 -7.92279 13.8139 --2.71877 -7.1352 13.4899 --2.07088 -6.58695 14.0558 --1.9521 -5.92766 13.3529 --1.32448 -6.24247 12.5983 --0.357629 -6.46229 12.2664 --0.702131 -7.44426 12.3254 --1.2584 -7.56773 13.0912 --1.09988 -8.49418 12.6978 --0.216402 -8.13992 12.943 -0.02028247 -8.16046 13.9718 -0.786567 -8.11308 14.6252 -0.323498 -8.96345 14.5137 -1.21826 -9.36684 14.557 -2.13336 -8.8914 14.7562 -2.54018 -9.38078 13.9712 -2.05172 -9.09142 13.1385 -2.38962 -8.21144 12.9051 -2.55431 -7.26994 12.668 -2.6999 -6.38666 13.1432 -1.966 -5.86241 13.5014 -2.05987 -4.83111 13.6853 -2.69225 -4.16291 14.0689 -2.56678 -3.22258 13.8626 -3.36013 -3.51893 14.4634 -3.68308 -3.23998 15.3344 -3.62392 -3.78492 16.2008 -3.3422 -3.72052 17.183 -3.52107 -2.70814 17.2113 -3.07702 -2.94488 18.0722 -4.09383 -3.19575 17.9566 -4.91496 -2.86808 18.4672 -5.12912 -1.97668 18.8763 -4.62362 -1.84807 19.7417 -4.39368 -2.44496 20.484 -4.40131 -3.35288 20.0482 -4.53543 -3.67441 20.9995 -4.45316 -2.79253 21.437 -3.46288 -2.83708 21.7154 -2.81372 -2.31656 21.1796 -3.46503 -1.73192 21.683 -2.66096 -1.15928 21.4143 -2.6485 -0.7028631 20.5356 -2.12429 -0.2663201 19.777 -3.06664 0.05919313 19.9468 -3.85488 0.3177169 19.4501 -4.33606 1.20229 19.4487 -5.0291 1.74488 18.9759 -5.48394 1.62962 18.0449 -5.9931 2.11609 17.3565 -6.37403 1.77953 16.4263 -5.51985 1.17202 16.6704 -5.00785 0.3111489 16.5561 -4.16592 -0.2699511 16.7416 -3.92832 -1.23754 16.4783 -3.06472 -0.8148631 16.3995 -2.66105 -0.9033481 17.3546 -1.76597 -0.6670981 16.9414 -1.17155 0.04145303 16.5867 -1.27731 -0.04189287 15.5874 -1.38275 -0.01368457 14.5944 -1.80543 0.8325329 14.603 -2.27593 0.5375979 13.8068 -3.17183 0.3607529 13.2837 -2.69916 0.1099769 12.4164 -3.4684 -0.4760131 12.4491 -3.30701 -0.8636271 11.5095 -2.59701 -1.54083 11.8007 -1.55811 -1.55701 11.823 -1.08775 -1.89783 11.0172 -0.201415 -2.42139 11.0824 --0.31046 -3.20176 10.8383 --1.08673 -3.6115 11.2771 --1.96286 -3.175 11.3155 --2.36532 -2.56449 10.7426 --1.78186 -2.15825 11.3982 --2.55721 -1.55925 11.6222 --3.48048 -1.80568 11.6969 --4.26734 -1.502 11.1485 --4.38318 -1.88096 12.0259 --5.31622 -1.6945 12.3863 --5.81347 -1.31165 11.6474 --6.57582 -1.62228 12.241 --6.67339 -2.54324 11.8885 --7.14547 -3.19361 12.4623 --6.2835 -3.0541 12.9902 --7.01693 -3.74057 13.2794 --6.51933 -4.46214 13.6805 --5.59484 -4.42649 14.1102 --4.98107 -5.11707 14.3852 --4.99679 -5.80987 15.0447 --4.75859 -5.8398 16.0042 --4.41752 -5.08356 15.4812 --5.34609 -4.59699 15.4305 --6.25967 -4.48022 15.0236 --6.86339 -5.17119 15.5447 --7.61267 -4.6245 15.2369 --7.76317 -4.97882 14.3007 --8.17076 -4.11313 14.5715 --9.06604 -3.9654 15.1836 --9.9874 -4.31267 15.1241 --10.7519 -4.74422 14.6497 --10.2125 -5.58494 14.5989 --11.0049 -6.24681 14.6806 --11.9153 -6.1098 14.5788 --11.6426 -5.56417 13.7195 --11.9427 -5.01632 14.5179 --12.3533 -4.34539 13.8568 --11.4068 -3.99973 13.6988 --11.1456 -4.79498 13.2304 --10.4258 -4.48666 12.7825 --9.75879 -5.30265 12.9364 --9.26915 -6.15436 12.9441 --8.25579 -6.37472 12.8387 --7.93373 -5.52437 13.2511 --7.6288 -4.78464 12.5702 --7.95103 -3.83464 12.553 --8.6281 -3.30244 11.9897 --9.11928 -2.63023 12.503 --9.55589 -1.91505 11.8893 --9.88033 -2.28109 10.9434 --10.2263 -1.29291 11.0682 --10.3243 -0.3518891 10.6634 --9.46919 -0.7696521 10.7087 --8.77558 -1.07513 10.0204 --7.98919 -0.9010871 10.5287 --7.56678 -0.4289851 11.3262 --7.98073 -0.6038271 12.1817 --7.10857 -0.3790811 12.7083 --6.22826 -0.2657351 13.2311 --5.45704 -0.8869851 13.4521 --4.47777 -1.00322 13.1363 --3.68001 -0.9675711 12.5266 --3.75388 0.05887803 12.7101 --3.49299 -0.3281581 11.8339 --4.07029 -0.08476177 11.0325 --4.2986 0.8120999 10.6537 --3.46415 1.1876 11.1414 --3.08395 1.87231 11.7315 --2.13524 2.09825 11.8641 --2.38496 2.39053 10.9266 --1.49337 2.1048 10.5673 --0.521907 1.77636 10.6294 --0.435242 2.76544 10.984 --0.687999 3.58377 10.5102 --1.16898 3.73031 9.59166 --2.02277 3.14273 9.80519 --2.45887 4.10897 9.98994 --2.7961 3.77995 10.9186 --3.67594 3.44272 10.8472 --4.48219 3.4942 11.4632 --4.89968 3.08074 12.3513 --4.49068 3.37885 13.2037 --4.05352 4.25809 13.1394 --3.94307 4.81927 12.2588 --3.38518 3.99847 12.2677 --2.5382 4.46164 12.7445 --2.46159 4.16418 13.6911 --2.5648 4.80279 14.4812 --3.52272 5.00023 14.5712 --2.81483 5.35908 15.2352 --3.31535 4.79501 15.9251 --2.6123 5.24337 16.4454 --3.19615 5.70898 17.0755 --3.86599 6.38646 17.3141 --3.79796 6.18136 16.3679 --4.39236 6.84587 15.8972 --5.17015 7.29948 16.2787 --5.84197 7.54013 15.608 --6.01217 6.57423 15.5502 --5.51044 6.06141 14.8673 --4.58584 6.25247 14.6593 --4.66033 6.03996 13.6564 --3.89407 6.41103 13.034 --3.71748 6.22819 12.0787 --4.16699 6.91125 11.4762 --3.94628 7.89989 11.693 --3.28022 7.29523 12.0774 --2.72851 7.85606 11.43 --2.13459 8.50736 11.1061 --1.23353 8.36916 10.8326 --0.527177 7.71125 10.5514 --0.349383 7.03771 11.314 --0.314746 8.01542 11.5593 -0.591904 8.4892 11.5448 -1.4389 8.57948 12.0841 -1.33297 9.46995 12.5998 -0.851472 9.78219 13.4219 --0.177644 9.87428 13.7594 --0.427083 9.74756 12.7678 --1.3353 9.35121 12.9537 --1.70024 10.2721 12.9008 --2.0931 10.032 11.9578 --1.92929 10.1051 11.0302 --1.0527 10.528 11.2508 --0.334725 10.4059 10.5211 --1.09095 10.0234 10.0642 --1.60538 9.21796 9.96238 --2.62858 9.21152 9.82606 --3.43167 9.23115 10.4479 --3.22991 10.2541 9.99223 --3.55133 9.85172 9.11907 --3.54485 10.8632 8.95226 --3.89975 11.2833 8.09805 --4.76235 11.4185 7.70406 --4.62139 12.2467 7.08888 --4.67567 11.5898 6.34321 --5.3691 10.8657 6.38637 --4.44004 10.4611 6.55982 --3.45934 10.2287 6.61719 --4.04349 9.42249 6.44824 --4.55902 8.63555 6.92527 --4.01416 8.36923 7.70348 --3.05104 7.99184 7.63369 --2.13766 8.30584 7.60096 --1.81268 9.14375 7.17488 --1.66329 10.1056 6.95987 --1.76072 9.74184 6.03042 --1.44697 10.6545 5.80372 --1.02043 11.6261 5.86735 --0.347541 11.2177 6.4096 -0.258269 12.0513 6.59011 --0.10767 11.7881 7.49317 -0.893676 11.7674 7.55022 -1.09597 10.841 7.58973 -0.34784 10.6952 8.26225 --0.474442 10.0596 8.18613 --0.446257 10.8234 8.85446 -0.154289 10.0281 9.08933 -0.257695 9.22195 8.57897 -1.25171 8.9118 8.4777 -0.736533 8.53479 7.74322 --0.149708 7.99524 7.80566 -0.522899 7.33793 8.12932 --0.326996 6.97648 8.4417 -0.08116177 6.28844 9.07703 --0.747868 6.66108 9.4683 --0.839754 7.63454 9.22486 --1.432 7.43562 8.43939 --1.6246 6.57431 7.98528 --0.953214 6.94702 7.25577 --1.72726 6.72931 6.63524 --1.3209 7.16476 5.89604 --1.99405 6.87298 5.12553 --2.44381 7.57684 4.63766 --2.82326 8.04941 5.44157 --3.30461 7.44274 6.03957 --3.69629 7.23254 6.90383 --3.6088 6.39884 6.41614 --3.94607 6.23195 5.51548 --4.90221 6.48635 5.6415 --5.45531 5.95674 5.03023 --6.4002 6.10951 5.19897 --6.04406 6.91052 4.68128 --5.32295 6.76913 3.88619 --6.28906 7.06921 3.68998 --6.82914 6.31462 3.39299 --6.61596 5.37988 3.03909 --7.3079 5.00114 3.6307 --6.91151 4.66733 4.39263 --6.87273 4.92055 5.40103 --6.56384 4.03523 5.58065 --6.14801 3.77822 6.391 --5.98561 4.34983 7.15874 --5.6288 4.59255 8.10602 --4.8601 5.21066 7.89073 --4.40017 6.03088 7.67945 --4.23645 6.55095 8.54546 --3.32219 6.20531 8.3474 --2.68214 6.07936 9.12878 --1.97887 5.50561 8.65302 --1.87406 4.75613 9.31545 --1.14324 5.00448 9.9003 --0.869637 5.42802 10.693 --0.54364 4.58634 10.9918 --1.53977 4.4375 11.1283 --2.28043 4.73818 11.8244 --1.89965 5.63832 12.1339 --2.26837 6.41493 11.6423 --1.70387 6.92853 12.2248 --1.7907 6.53942 13.1453 --0.994715 6.15224 13.6917 --1.38114 5.87656 14.5962 --2.32418 6.08959 14.4726 --2.69008 6.98905 14.5035 --2.90216 7.89765 14.274 --2.82982 8.22728 13.3217 --3.81647 8.3475 13.2422 --4.20021 8.94536 14.0087 --4.38557 7.98575 14.2251 --4.55239 8.29604 15.1019 --5.39764 8.56019 14.6008 --6.27325 8.94769 14.9773 --6.80551 8.7503 15.8325 --7.79511 8.5195 15.943 --7.68748 8.87793 14.9678 --8.52514 9.41219 14.9546 --9.17728 10.1236 15.1858 --9.20804 11.125 15.0151 --9.84193 10.5516 14.4456 --10.2261 10.5041 13.596 --10.3534 9.55721 13.8659 --9.9089 8.75648 14.3288 --9.59659 8.13428 13.6277 --9.43179 7.7906 12.6733 --10.3678 7.58929 12.6974 --9.67188 6.79784 12.9465 --8.92323 6.65916 13.6417 --8.94491 5.74159 13.799 --9.81286 5.87387 14.1247 --10.7117 5.91548 14.5639 --11.0074 5.5899 15.412 --11.2619 4.91773 16.118 --11.2675 5.74598 16.7119 --12.2139 6.14628 16.5112 --13.081 5.63259 16.3911 --13.3993 5.0809 17.0905 --12.541 4.60097 16.955 --12.0568 3.94054 16.4125 --11.4901 3.49721 15.6613 --10.6168 3.13161 15.7515 --10.0492 3.79341 15.1847 --9.21478 4.00485 15.7191 --9.06616 3.04213 15.8331 --9.55061 2.22841 15.5237 --9.96275 1.34043 15.206 --9.81048 0.6915399 14.5041 --9.13119 0.06653543 14.8625 --8.66643 0.07178103 15.7017 --9.07906 0.8022029 16.2011 --8.47326 0.9682909 15.3753 --7.74446 1.61575 14.9932 --7.14814 0.7939719 15.1816 --7.13582 0.1740409 15.9863 --7.22022 0.5054089 16.8598 --6.64208 0.8622849 17.6311 --7.05831 1.46514 18.344 --6.30095 0.9823999 18.7832 --6.45359 0.1881929 19.3683 --6.27281 0.9946179 20.0133 --6.5212 1.80965 19.3878 --7.55521 1.56817 19.4224 --7.89385 2.07691 18.5435 --8.85226 2.27199 18.2555 --9.08515 1.44169 18.8415 --8.91947 0.4828319 19.1229 --8.08843 0.3127129 19.5711 --7.69407 -0.3244541 18.9996 --7.27086 -1.0763 19.3933 --7.05641 -1.41415 20.3437 --7.82329 -1.38555 20.9946 --7.29391 -0.9320491 21.7121 --6.67076 -0.7502901 22.4474 --7.23388 -0.5022371 23.3413 --7.50842 -0.5256911 24.3238 --7.63703 -1.50683 24.6253 --8.21939 -2.18865 24.2094 --8.22691 -1.62573 23.3819 --7.91253 -2.22182 22.6522 --7.09197 -2.15326 23.1464 --6.95474 -3.09519 22.8865 --6.93542 -4.02553 23.3071 --6.88006 -3.33281 24.0833 --6.67724 -4.02408 24.7692 --6.49662 -4.5802 25.5943 --5.73096 -3.98693 26.013 --6.50824 -3.2626 25.9869 --7.29116 -3.75803 25.8734 --8.03204 -3.52123 26.5657 --8.53601 -4.32659 26.5969 --9.4934 -4.52432 26.7511 --9.19591 -5.15098 27.5242 --10.2157 -5.26457 27.356 --10.4582 -5.29809 28.2956 --10.8022 -4.5565 28.9102 --10.8178 -3.76798 29.5732 --11.5312 -3.88711 28.966 --10.8459 -3.13255 28.7077 --10.1623 -2.41776 28.651 --10.9445 -2.42123 27.9418 --11.4935 -1.7409 28.4434 --10.972 -1.04424 28.9034 --10.1436 -1.47161 29.2654 --9.34568 -1.82636 29.7777 --9.81818 -1.92695 30.7014 --10.6304 -2.21054 31.225 --11.3369 -1.56574 31.297 --11.6165 -2.04865 32.0672 --12.0948 -2.94435 31.6494 --11.8791 -2.46847 30.7249 --12.1532 -3.45362 30.4995 --12.1272 -4.45112 30.8605 --11.7169 -5.24954 31.0187 --11.1793 -4.46529 30.7829 --10.5961 -4.06153 31.4418 --9.94057 -3.56386 30.9229 --9.26757 -3.70083 30.2425 --8.25234 -3.4932 29.9969 --7.68623 -3.01594 30.7236 --6.88053 -2.62972 30.397 --5.88347 -2.56345 30.715 --5.01156 -2.11087 30.8838 --4.48271 -2.97004 30.9932 --3.77305 -2.62339 31.5378 --3.71318 -1.65077 31.1442 --2.92682 -1.10004 30.9526 --2.33131 -0.3124831 31.2791 --1.64065 -1.12122 31.3048 --1.10939 -0.8661781 30.5027 --1.08712 -1.3632 29.586 --0.24091 -1.96752 29.4656 --0.429319 -1.75874 28.4853 --0.783835 -2.15648 27.5835 --1.6561 -1.98449 27.7426 --1.69679 -2.98727 27.9991 --2.37261 -3.03852 27.296 --3.2781 -2.8864 26.8666 --3.21352 -2.12205 26.2981 --2.59796 -2.40522 25.5345 --1.73365 -1.95194 25.5726 --1.64609 -1.32461 24.7223 --2.4568 -1.02371 25.3029 --2.96442 -0.2594071 24.6979 --3.57426 -1.04627 24.8369 --4.5425 -0.6538601 24.6278 --5.44121 -0.9810181 24.8567 --4.90843 -1.41591 25.6075 --5.12613 -2.3005 25.2039 --4.64385 -2.64852 24.3723 --3.78141 -2.57055 24.804 --2.86772 -2.90469 24.6501 --2.15604 -3.45435 24.1998 --2.47706 -4.2908 23.7343 --3.44741 -4.09293 23.946 --3.19349 -3.76077 23.0241 --3.52078 -3.38444 22.2145 --3.86066 -2.62264 21.8457 --2.85942 -2.8387 21.7735 --1.93879 -2.41375 21.9507 --1.77573 -2.28829 20.9488 --1.31199 -1.36995 21.123 --0.802421 -1.95324 20.4106 --1.1651 -2.52156 19.8437 --2.14068 -2.19427 19.8958 --2.75939 -2.60443 19.3321 --1.84206 -2.40191 18.8747 --1.06792 -2.75147 18.3181 --1.35313 -3.70872 18.6384 --1.15728 -4.24904 17.7849 --1.98613 -4.88198 17.531 --1.64816 -4.79613 18.4637 --2.18902 -5.08388 19.2484 --3.1157 -5.47209 19.1725 --4.00392 -4.94444 19.2225 --3.92378 -5.2015 18.2462 --3.69565 -4.67564 17.4142 --2.9967 -4.46789 16.7217 --2.6737 -5.38769 16.9716 --2.03776 -6.15211 16.7494 --2.70852 -6.51883 17.3921 --3.70212 -6.4088 17.2801 --3.4814 -7.10076 16.6073 --4.32392 -7.50704 16.9362 --4.31912 -8.30834 17.4777 --5.27928 -8.10106 17.7386 --6.30521 -8.41238 17.7195 --5.95601 -8.27572 16.8171 --5.59574 -8.43346 15.9225 --5.80591 -7.58254 15.4705 --6.24395 -7.00943 14.8071 --6.58093 -6.1752 14.4879 --7.33803 -6.63504 15.0727 --7.35287 -7.26471 15.9336 --6.83367 -6.39506 15.9244 --7.2978 -6.76241 16.7244 --6.5587 -7.35353 16.4628 --6.94321 -8.24447 16.1485 --6.72081 -9.07574 16.8284 --5.80016 -9.48924 16.6334 --5.35016 -10.2833 16.8487 --5.78981 -11.1168 17.0087 --6.62125 -11.2196 17.5397 --7.10156 -10.5272 17.1386 --7.37522 -9.71971 17.5889 --7.07531 -9.85534 18.529 --8.01196 -10.3285 18.4998 --7.98373 -9.61958 19.1575 --8.61213 -8.96609 18.6798 --8.84074 -9.12058 17.7213 --8.77405 -9.80681 16.8979 --9.13785 -10.3994 16.1503 --10.124 -10.6844 16.0407 --11.1375 -10.6023 15.86 --11.0375 -10.5126 16.8605 --10.6826 -10.8534 17.6821 --9.6329 -10.8626 17.7922 --9.67044 -11.1272 18.7127 --8.95365 -11.461 19.3005 --9.34314 -11.461 20.1984 --9.42022 -11.955 21.076 --8.77519 -12.586 20.6106 --7.95002 -12.7926 20.0492 --6.98403 -13.1237 19.986 --7.02688 -13.8101 20.6748 --6.83362 -13.3739 21.5413 --6.32111 -12.6212 21.8621 --6.54723 -12.4777 20.8939 --6.95839 -11.7282 21.4445 --7.1198 -10.8358 21.7547 --6.12733 -10.9464 21.9014 --5.76075 -10.9846 20.931 --5.48358 -10.2446 20.2315 --5.02342 -9.53439 20.7755 --4.94829 -8.84202 20.024 --4.22582 -9.02331 19.407 --3.91009 -8.51404 18.607 --3.06391 -8.56756 19.0534 --2.23907 -8.75966 18.5815 --2.32046 -8.74538 17.5747 --2.90261 -8.90824 16.7905 --3.11086 -8.56597 15.8316 --3.62599 -8.74579 14.9704 --4.2833 -9.40074 15.2515 --4.43787 -9.67338 14.2448 --3.83644 -9.95462 13.4035 --4.24018 -10.6613 12.8104 --3.59824 -10.0719 12.2166 --3.86213 -10.0443 11.2367 --3.60415 -9.27304 10.7547 --2.93779 -9.66163 10.1537 --2.56607 -8.95812 10.7162 --1.75285 -8.77549 11.3065 --1.25895 -9.53537 11.8097 --0.392311 -9.94437 11.5503 --1.02561 -9.9082 10.8417 --0.274919 -9.42106 10.3838 -0.149082 -8.57021 10.3815 --0.12514 -8.72708 11.2997 -0.605462 -8.06588 11.406 -0.486002 -7.64826 12.3685 -1.38987 -7.09402 12.6473 -1.54931 -6.83413 11.6812 -2.17167 -6.29376 12.2161 -1.8855 -5.35329 12.0156 -1.99903 -5.81926 11.1326 -1.04462 -5.6966 10.7749 -0.256095 -6.12228 10.2572 --0.310421 -5.59981 10.8494 -0.468424 -5.35838 11.451 -0.681269 -4.46656 11.0998 -1.65952 -4.35086 11.18 -2.24714 -3.75328 11.5912 -1.75759 -4.20899 12.1983 -1.06196 -3.58475 12.5059 -0.336286 -4.19673 12.4228 --0.03167633 -4.96928 12.9654 --0.452136 -4.30665 13.4969 --0.599502 -5.07432 14.0854 --0.08005263 -5.84849 14.1312 -0.790041 -5.27308 14.1979 -1.17571 -4.71181 14.9512 -2.02791 -4.73739 15.4269 -1.24608 -4.625 16.0875 -1.08559 -3.93566 16.8071 -1.64291 -3.45855 17.6014 -1.23463 -4.33852 18.0695 -1.13245 -5.03726 17.3642 -1.43692 -5.71395 18.0108 -0.862523 -6.35186 17.5004 --0.06090333 -6.71719 17.5568 --0.311585 -6.28907 16.6344 --0.563513 -7.0607 16.1976 --0.872112 -6.29358 15.6758 --0.46517 -5.48299 15.1916 --1.10867 -4.75024 15.0563 --2.01375 -4.35534 15.0505 --2.72631 -4.5263 14.348 --2.67638 -3.70669 13.6913 --3.00621 -2.82511 14.1227 --2.21063 -2.62621 14.6233 --2.45501 -1.96208 13.793 --2.84394 -2.46605 12.9868 --2.06715 -3.03915 12.738 --1.14589 -3.4519 13.0479 --1.19278 -3.18115 14.0265 --0.548949 -2.35636 14.2431 --0.358188 -1.93434 15.1926 --1.29288 -1.74581 15.5282 --1.79159 -1.70995 16.4533 --2.08949 -2.60781 16.2329 --1.36415 -3.0747 16.7165 --1.34129 -3.59945 15.9775 --0.493915 -3.33835 15.6348 -0.381722 -2.89778 15.4777 -1.34917 -2.73743 15.3064 -1.05328 -1.92416 15.6699 -0.53346 -1.45169 16.3717 -0.710963 -1.54428 17.2761 -0.485846 -1.12302 18.0722 --0.175816 -0.4101681 18.1205 -0.522107 0.01083293 17.5461 --0.183227 0.7050479 17.5736 --0.09816243 1.09841 16.5934 --0.882653 1.41526 16.1129 --1.76628 0.8978589 15.8006 --1.09268 0.1896959 15.6147 --1.79488 -0.3547611 15.0799 --2.33796 -0.1611101 15.8618 --2.5377 0.4531059 15.1295 --2.64039 0.4649719 14.1403 --3.35878 0.5101699 13.4452 --4.23745 0.9225439 13.3935 --4.76698 0.2835549 12.9055 --4.85113 0.3164519 11.8754 --5.6994 0.6042979 12.2902 --6.00093 0.8590669 11.3323 --6.06907 1.81673 11.0426 --6.67463 1.26325 10.5502 --7.31623 0.6363999 10.1247 --8.2455 0.5818589 10.0451 --8.88437 1.2162 9.51508 --9.31783 2.06746 9.70156 --10.1044 2.73036 9.48264 --10.5632 1.82053 9.39042 --10.2028 1.97337 10.2713 --10.4588 1.69637 11.171 --11.4505 1.95156 11.1066 --11.8244 1.40418 10.3259 --12.589 1.45814 10.9687 --12.5297 2.08772 11.7639 --11.951 2.76806 11.4434 --12.8439 2.75987 10.9884 --12.3644 3.57143 10.6289 --12.9402 3.75365 11.4237 --13.5825 4.27895 10.8917 --13.4086 5.13209 11.3238 --12.5889 5.65374 11.3923 --13.1343 6.1937 11.9381 --12.3227 6.84616 11.9491 --13.0663 7.43543 11.5406 --13.2373 7.57946 10.5686 --14.2485 7.47404 10.5257 --14.8986 7.86916 9.85107 --15.856 7.42691 9.71315 --15.8452 7.54053 8.6943 --15.307 7.45361 7.85508 --16.0107 6.72168 7.82421 --15.8389 6.17202 7.04386 --15.9353 5.25408 6.67924 --15.9432 4.48542 6.0295 --16.9013 4.3364 6.29861 --17.5701 3.64247 6.55703 --17.1462 2.85743 7.04756 --18.133 2.68737 6.87938 --18.899 2.95836 7.52941 --18.8691 2.11515 8.08872 --18.7004 1.16265 7.81354 --18.19 0.3010649 7.66665 --18.8371 -0.3056651 8.07971 --19.0493 0.2309129 8.91455 --18.576 1.13695 9.05767 --18.573 1.88912 9.68494 --19.3754 2.1555 9.16054 --19.979 2.71011 9.78031 --20.6344 3.49517 9.78648 --20.3889 3.43901 10.782 --19.6876 4.15156 10.9233 --19.9252 5.00812 11.3467 --19.6186 5.83298 10.7654 --20.1573 6.58012 10.42 --19.6918 7.44918 10.0712 --18.9742 7.49434 10.7154 --17.931 7.47347 10.6981 --17.8508 7.72414 9.71155 --18.5615 7.95478 9.04417 --17.7006 8.14471 8.60276 --16.6642 8.24952 8.57516 --15.9058 8.59178 7.9672 --15.3552 8.34372 8.81139 --14.6084 8.75239 9.40578 --14.2244 9.04614 8.52393 --14.4015 8.68682 7.60671 --14.1742 9.19992 6.79667 --13.8524 8.25601 6.62931 --14.5706 8.05865 5.96413 --14.5233 8.99312 5.55202 --14.4294 9.96627 5.46254 --13.4951 9.81921 5.64735 --12.8862 9.50485 6.41514 --11.9925 9.8182 6.76104 --11.5511 9.56146 7.63152 --10.8186 9.9835 8.23854 --10.2462 9.22586 8.64381 --9.88788 9.77025 9.37055 --9.62609 9.68278 10.3025 --8.90211 10.4222 10.4391 --8.32482 10.6296 9.70637 --7.59984 10.8031 10.3587 --6.84556 10.1265 10.431 --6.10837 10.5092 11.0591 --6.02022 11.3494 10.4642 --5.21203 11.5956 9.88522 --4.85507 10.8236 10.5581 --4.85994 9.84128 10.697 --4.39634 9.47594 9.91131 --4.33216 8.51271 9.80911 --5.20243 8.54133 9.31447 --6.03103 8.12546 8.9545 --5.85982 8.10103 7.91277 --5.51729 7.19683 8.01301 --6.10864 6.98984 7.24208 --6.86437 6.50129 7.44652 --7.56231 6.86398 6.87495 --6.99548 7.58646 6.56137 --7.11816 8.46963 6.94121 --6.50016 9.06276 7.42661 --6.51745 10.0346 7.34926 --7.27642 10.1134 8.01784 --7.70651 10.7867 7.33845 --8.00549 9.95435 6.96353 --8.21929 9.04247 7.24914 --8.68047 8.82474 8.15967 --7.85611 8.25914 8.08098 --8.23501 8.1751 9.05778 --7.53581 8.91789 8.90755 --7.33967 8.48725 9.74887 --7.14959 8.85293 10.7401 --8.0018 8.47298 10.7505 --8.61432 8.70168 9.96665 --9.26014 7.86009 9.78408 --9.90223 7.33489 10.3644 --9.65105 7.97972 11.0722 --8.8714 8.63809 11.07 --9.203 9.00601 11.8991 --9.80544 9.55419 12.3783 --9.28456 10.3352 12.8621 --9.69225 11.1767 12.5662 --9.03911 11.6404 12.0258 --8.69329 11.924 11.12 --8.96591 12.9182 11.1665 --8.10278 12.8059 10.5753 --7.99085 13.2565 9.77194 --7.08784 13.3365 9.38313 --7.22932 12.7954 8.49965 --8.07834 12.2391 8.59635 --9.00125 12.2408 9.02422 --9.87248 11.7442 9.12226 --10.2701 10.8446 9.13956 --10.6811 10.7863 10.0386 --10.4239 11.2996 10.8185 --11.3231 10.7404 10.8041 --12.1982 10.9808 11.2628 --11.992 11.624 10.6102 --12.9867 11.8279 10.4976 --13.1912 12.4494 9.83758 --12.8578 12.1833 8.91052 --11.9216 12.0799 9.1765 --11.9463 11.097 9.14009 --12.5984 10.4129 9.49229 --12.8375 10.0412 10.4131 --11.8179 9.98614 10.1741 --11.1639 9.65139 9.41039 --10.837 8.71439 9.36759 --11.1589 7.74809 9.0863 --12.1579 7.96713 9.22428 --11.8695 7.88005 8.28571 --11.1597 7.28984 7.79508 --10.5411 7.89865 7.35078 --10.1158 7.64266 8.29519 --9.97184 6.99227 9.01332 --9.06727 6.68901 9.32356 --8.5644 6.96219 10.1706 --8.5637 5.92967 10.1221 --8.46588 5.65961 11.0521 --8.98366 4.95696 10.5783 --9.79828 4.52449 10.297 --10.6292 4.92354 10.6273 --10.2768 5.75586 10.0816 --10.5825 5.43513 9.17456 --11.4547 4.97996 9.29558 --11.3104 4.03905 9.01654 --11.6262 4.48819 8.17471 --12.6485 4.31601 8.31302 --13.045 4.84579 7.59517 --13.3186 5.76796 7.78117 --13.9159 5.23765 8.4153 --14.5389 4.58841 8.88079 --15.0265 5.43951 8.83734 --14.5364 6.17146 8.338 --14.3918 6.21084 7.31039 --14.1634 6.36404 6.39368 --14.6739 5.73099 5.80543 --15.2847 5.14738 5.22985 --15.6926 4.34405 4.90062 --15.7585 5.0093 4.18366 --15.5031 4.01591 3.89373 --16.1272 3.77777 3.1988 --16.4634 2.82813 3.1113 --17.3157 3.01116 2.64126 --17.6723 3.86891 2.33719 --18.0409 3.3833 1.53222 --18.2165 2.88017 0.7361461 --17.7357 2.0963 0.2453051 --16.7372 1.83455 0.2045991 --16.913 2.81088 -0.1856809 --16.7582 3.12696 -1.1201 --15.9276 3.37958 -0.6253209 --15.6897 3.02213 0.2853951 --15.3035 2.07581 0.4431411 --14.3681 2.28554 0.1505561 --14.2132 1.65168 -0.6012719 --14.1456 0.6139589 -0.7033069 --14.9476 0.3851959 -0.2966519 --14.9304 0.9993829 0.4873221 --15.8009 1.01347 0.9975961 --14.9195 0.9405769 1.40845 --15.5823 0.9411189 2.21365 --15.9164 1.19222 3.20517 --15.5115 0.8742359 3.95977 --15.8877 1.40779 4.74973 --16.4428 1.36976 5.63769 --16.4298 0.5734729 6.16709 --16.184 -0.3402871 6.18573 --16.1932 0.1013339 5.26551 --16.7967 0.2425449 4.45964 --17.1429 -0.7417671 4.54086 --17.4037 -1.02883 3.61758 --17.492 -1.94334 3.24891 --17.9636 -2.31334 2.41669 --18.8062 -1.96075 2.70663 --19.677 -1.41924 2.57433 --18.8454 -0.8433801 2.72582 --19.542 -0.1429751 2.9508 --18.6644 0.1049059 3.41709 --17.8275 0.6973629 3.72347 --18.0774 1.67127 3.58641 --18.8037 1.66641 4.32622 --18.1919 1.99438 5.03676 --18.8035 1.28023 5.42442 --19.795 1.5297 5.50707 --20.4929 1.43578 6.11578 --21.1094 2.12254 5.77178 --21.7258 2.03652 6.58769 --21.1802 1.4012 7.0708 --20.7785 1.63918 7.92788 --20.3834 0.7471979 8.00737 --21.3151 0.3441479 7.92243 --20.9722 0.1772349 8.83804 --20.8551 0.8378309 9.57737 --21.7451 0.6685049 9.91822 --22.2344 1.00464 9.14864 --22.0374 1.98432 9.12114 --22.7204 2.14435 8.45576 --23.1886 2.2542 7.46494 --23.9576 1.70007 7.8585 --24.1455 2.59411 8.28077 --24.7304 2.15813 8.86213 --25.1769 2.2918 9.80419 --24.4549 1.85282 10.3922 --24.3285 2.69548 10.7831 --23.3499 2.51133 11.0813 --22.5664 3.10964 10.78 --22.3368 3.38533 9.87491 --23.2836 3.88289 9.82612 --24.1449 4.07483 9.38539 --24.9055 4.61902 8.98251 --25.5013 5.42584 8.98782 --25.631 5.19946 8.01619 --24.6605 4.86676 7.70353 --23.8525 4.31714 7.4083 --22.9661 4.24454 7.07742 --22.7094 4.43687 8.05281 --22.9206 4.94653 8.89688 --23.8284 4.93664 8.59372 --24.3819 5.7347 8.9128 --23.6262 6.18228 9.39338 --24.1193 6.98848 9.33498 --24.2053 7.94083 9.05715 --23.5087 7.46045 8.43986 --23.2834 8.42186 8.63737 --22.4341 8.89123 8.41329 --22.2178 9.82719 8.46512 --21.8106 9.43343 7.69509 --20.894 9.55573 7.30492 --20.0654 8.93305 7.34534 --19.265 9.2212 7.67301 --18.3816 9.44673 8.08812 --17.731 9.01057 7.45689 --17.0426 9.6192 7.17253 --17.8298 9.79194 6.55086 --17.7975 10.4472 7.3119 --17.5255 10.7146 8.25237 --17.5148 10.6378 9.17237 --18.0964 10.7002 9.99016 --18.3907 10.025 9.30533 --17.8138 9.57765 9.97503 --18.1396 8.75761 10.448 --19.0531 8.78066 10.2435 --20.0016 9.12187 10.0988 --20.9569 8.94695 10.1869 --21.2294 8.0352 9.98872 --21.2522 7.04759 10.3436 --21.9704 6.9235 9.67152 --21.424 6.12567 9.42417 --20.6913 5.48032 9.16043 --20.1316 6.24326 9.07872 --19.1846 5.76322 9.07801 --18.3793 6.30126 8.81004 --18.3877 6.48004 7.85202 --17.624 7.14808 7.66342 --17.3135 7.04684 8.60807 --16.791 6.77513 9.38353 --16.7177 5.82704 9.14941 --15.8721 5.61947 9.71921 --16.3782 5.68636 10.6139 --17.092 6.38617 10.4225 --17.5443 6.01977 11.3014 --17.4926 7.01393 11.5026 --16.7948 7.54734 11.9959 --16.1046 8.08924 11.4435 --15.7626 8.46777 12.2784 --15.451 9.34608 12.7352 --14.5988 8.9751 12.4451 --13.7541 9.33552 12.8393 --12.8093 9.43466 12.7085 --11.8455 9.60099 12.9044 --12.151 10.3416 13.5544 --12.6952 11.1258 13.6531 --13.3494 10.9226 12.9499 --14.1793 10.2769 12.8838 --14.9149 10.6537 13.535 --15.7255 11.0605 13.8447 --16.011 10.7479 14.704 --16.5302 10.193 15.3665 --16.7084 9.57036 14.6131 --16.3208 9.14181 13.7861 --16.183 9.93505 13.1251 --16.1441 9.83574 12.0746 --16.4508 10.7008 12.4501 --15.6069 11.0145 12.0189 --14.8987 11.5184 11.6545 --15.7185 12.006 11.3271 --15.938 11.8136 10.3686 --16.8683 12.104 10.5214 --16.8324 11.951 11.529 --17.5017 12.5844 11.9231 --17.2066 13.284 12.6174 --17.7894 13.3066 13.4123 --18.4096 13.2529 12.5747 --18.7857 12.799 11.7594 --19.4022 12.9778 11.0081 --19.256 13.0572 9.98591 --18.9843 13.9964 10.1475 --19.424 14.5778 10.7953 --18.6411 13.9838 11.1966 --17.8826 13.4844 10.7573 --17.4838 14.1388 10.0833 --17.8797 14.9957 9.87011 --18.4656 14.8126 9.0389 --17.708 14.89 8.34478 --17.0876 14.5853 7.58974 --16.9398 13.7786 6.90326 --17.7986 13.4707 6.46897 --17.984 14.0686 5.6947 --18.8587 13.7561 6.15374 --19.7151 13.525 6.58214 --20.549 13.998 6.78496 --20.128 14.6763 6.09772 --20.6034 14.3541 5.36744 --20.6517 14.9447 4.59836 --20.8325 13.989 4.30592 --20.6443 13.286 3.54381 --20.6099 12.2927 3.83175 --20.3392 11.3376 3.95222 --20.8127 11.4973 3.06679 --21.1908 10.5753 2.98861 --20.6391 10.3568 2.25131 --19.9263 10.1488 1.51188 --19.9415 9.25403 1.85054 --20.1778 8.32909 2.31379 --19.1781 8.5781 2.44287 --18.2118 8.89288 2.19981 --18.189 8.18421 1.54535 --17.2635 7.73017 1.58547 --16.2463 7.6142 1.91922 --15.5176 7.76538 2.56686 --15.3397 8.59926 3.15022 --15.8387 8.99711 2.40566 --16.4118 9.66885 2.10903 --17.1142 10.3377 2.45246 --17.3022 10.7597 3.34678 --16.5022 10.774 3.88684 --17.1771 10.3029 4.53561 --18.0962 9.89471 4.39263 --18.486 9.33381 5.04918 --18.5809 8.28918 5.03958 --19.5188 8.6987 4.76335 --19.4279 9.28357 5.59085 --20.2121 8.82827 6.06637 --20.379 9.78455 6.03393 --21.3931 10.0218 5.82224 --21.5361 9.80027 4.87176 --22.1762 8.96009 4.77926 --22.8106 8.64893 5.44921 --23.0546 7.9394 4.70827 --23.9556 8.14012 5.03945 --24.019 7.36455 4.30359 --23.5155 6.69216 4.80071 --22.5853 6.72563 5.16006 --22.0262 6.14553 5.73502 --22.3174 5.1675 5.73996 --22.7515 4.86146 4.85073 --23.1434 5.34025 4.09166 --22.1286 5.32383 4.17827 --22.1876 4.40554 3.74044 --22.8822 3.74534 3.47025 --23.4825 3.07868 3.14208 --22.6275 2.6008 3.21842 --21.7224 2.17732 3.08397 --21.5842 2.70189 2.29208 --22.165 1.92888 2.03428 --22.4924 1.50822 2.84415 --21.8621 1.0041 3.45336 --21.1759 0.2799409 3.28811 --21.0304 0.2124569 2.27987 --21.3837 1.16093 1.96968 --22.2112 0.5795699 1.80891 --23.0982 0.1978249 2.00713 --24.1497 0.3661199 1.93656 --23.6551 1.1789 2.34114 --24.555 1.43592 2.12021 --23.9178 2.04451 2.5067 --24.8894 2.4385 2.52078 --25.8899 2.73038 2.58456 --26.6693 2.16676 2.80186 --27.073 2.81954 2.13128 --26.9129 3.3228 2.99943 --27.3178 3.50801 3.92297 --27.2207 2.63251 4.37337 --26.229 2.35594 4.22659 --26.3975 2.64501 5.29685 --26.8708 3.21998 5.94523 --25.9895 3.55013 5.96744 --25.5536 3.71375 6.84865 --24.6839 4.2482 6.75215 --23.8419 3.83795 6.39327 --23.7753 2.98498 6.97288 --24.6835 2.61338 6.88265 --25.4888 2.26979 7.40431 --25.2094 1.36746 7.67867 --25.6337 0.4587559 7.83589 --26.1738 -0.2643041 7.44691 --26.661 -0.002927916 6.62758 --27.0067 -0.4739781 5.929 --26.4206 -1.19371 6.24662 --26.8951 -1.65527 5.47457 --27.2878 -2.57816 5.19238 --26.9049 -2.91502 4.4399 --27.5745 -3.65088 4.63716 --27.7888 -4.4724 5.2032 --27.622 -5.39409 5.63329 --27.3587 -6.17373 6.09738 --26.5949 -6.13382 6.70862 --25.913 -6.51277 7.31244 --25.8241 -5.54823 7.14249 --25.3221 -5.19484 7.95659 --24.8095 -4.78294 7.19599 --24.7227 -3.80322 7.55181 --25.1905 -2.95663 7.43491 --25.0433 -1.91334 7.35149 --25.1718 -1.71685 8.40801 --25.7352 -1.68866 9.12552 --26.7156 -1.52124 9.39455 --26.6334 -1.50479 8.44095 --27.3795 -1.96952 8.09198 --28.3869 -2.14528 8.23809 --28.9592 -2.93868 8.14789 --28.6778 -3.58252 7.4632 --28.6849 -4.54608 7.63074 --28.2698 -4.49694 8.54397 --28.7294 -5.39869 8.29093 --27.815 -5.46194 8.71017 --28.4464 -5.74467 9.44507 --28.5756 -6.39893 10.2765 --27.695 -6.56968 10.7968 --26.9222 -6.74896 10.2126 --26.0672 -6.18078 10.3836 --25.5458 -5.71525 11.1128 --26.3116 -5.00214 11.0959 --26.9211 -4.47307 10.5559 --27.8409 -4.66015 10.9436 --28.7333 -4.47199 10.3964 --29.6235 -4.09016 10.6213 --29.6489 -3.60498 11.4264 --29.2607 -4.07263 12.1852 --29.6919 -4.89626 12.5819 --29.5036 -5.93351 12.346 --29.5514 -5.89086 13.4324 --30.5406 -5.89542 13.4369 --30.6046 -6.88492 13.2592 --30.5874 -7.81331 12.8694 --29.8998 -7.59022 13.552 --29.5483 -7.04016 14.3898 --29.0501 -6.68898 15.1997 --28.6048 -6.07493 15.852 --27.9426 -5.2967 16.0139 --27.6255 -6.03937 16.5874 --26.932 -5.99301 15.8604 --26.2152 -6.50559 16.2546 --25.8946 -5.56365 16.1367 --26.1557 -4.94182 16.8582 --26.6813 -5.17347 17.6412 --26.3552 -4.87469 18.5749 --26.4466 -4.87485 19.5439 --26.426 -3.99058 20.1414 --25.3924 -3.78557 20.095 --25.737 -3.56701 19.1945 --26.4127 -2.88894 19.1771 --25.8383 -2.3688 19.9157 --25.6628 -1.96139 19.0106 --26.1634 -1.26354 19.3518 --25.7259 -0.9780581 18.467 --25.4726 -1.36614 17.549 --25.5181 -1.03141 16.6284 --26.0615 -1.18691 15.8425 --26.7691 -0.6453001 15.3685 --27.1294 0.3092749 15.3441 --26.175 0.1346859 15.0941 --25.9244 0.8306779 14.4312 --26.2439 1.76041 14.5625 --25.2909 1.88427 14.7343 --25.7226 2.79308 14.4321 --26.7024 3.07729 14.3015 --27.1107 2.78929 15.1246 --26.8287 3.42657 15.8962 --26.7458 3.89007 16.7561 --27.5244 3.34692 17.0329 --27.3048 2.7958 17.7646 --27.8155 2.04417 17.4256 --28.0311 1.24354 16.9189 --27.8608 0.3248159 17.381 --26.9659 0.6720039 17.1127 --26.0145 0.3812559 17.295 --25.4984 1.0873 17.8029 --25.9629 0.7850579 18.6848 --25.5012 1.66542 18.6498 --25.5098 1.96987 19.5741 --26.3406 2.40596 20.0832 --26.4778 3.08405 20.715 --27.3261 3.33753 21.1002 --27.6467 3.30042 20.1082 --28.6334 3.23709 20.3253 --28.9656 2.75438 19.5715 --28.6018 1.94368 19.0667 --28.5901 1.37771 19.8464 --29.3769 1.28387 20.4473 --29.9444 0.6443659 20.087 --30.5315 0.6079549 19.2905 --30.7536 1.37473 18.6587 --30.7115 0.5954319 18.0366 --31.032 0.2717729 17.1549 --30.585 1.18309 16.9244 --29.7137 1.3711 17.1544 --30.0091 1.18551 16.2038 --29.5971 1.66975 15.4238 --29.8192 1.83544 14.4535 --29.6197 1.14179 13.7434 --29.9036 0.3976679 13.2225 --30.6415 1.03978 13.1375 --30.4247 0.6434279 12.3539 --29.8227 0.9300449 11.5827 --29.6146 1.18524 10.6353 --29.2406 0.4148709 10.0241 --29.1917 -0.5860941 9.85622 --29.5733 -0.9123691 8.98424 --30.2338 -0.1837881 9.1785 --31.2422 -0.1645041 9.33978 --32.0625 0.2955899 9.09603 --32.3144 0.02087193 10.0355 --32.6589 0.05482133 11.0179 --33.5811 -0.2577951 10.9777 --33.5369 -1.20973 11.0289 --34.3822 -0.8621801 10.6339 --34.4271 -0.1483141 9.92666 --34.5935 -1.11388 9.75276 --35.5686 -0.7767251 9.61908 --35.9287 -0.7006961 10.5651 --36.0204 -1.07848 11.4621 --35.6144 -0.5265201 12.2236 --35.1228 0.2258789 12.5105 --34.6471 0.8125789 13.1486 --33.6877 1.10518 13.3468 --33.4504 0.3123529 12.8487 --32.9189 -0.1629371 12.1558 --32.3695 -0.8340281 12.6936 --31.9384 -1.2792 13.5926 --32.2016 -2.1487 13.0573 --31.8808 -3.05301 13.3475 --32.088 -3.34308 14.1983 --32.2819 -4.19825 14.6467 --32.2157 -4.9378 15.3663 --32.1769 -4.2263 16.0915 --31.4863 -4.78034 16.5957 --31.0919 -5.67472 16.9641 --31.7465 -6.39528 17.3529 --30.8769 -6.64758 17.8482 --30.3276 -7.45781 17.6335 --29.3745 -7.41106 17.2507 --28.7972 -7.77078 17.9453 --29.4418 -7.11485 18.2928 --29.2917 -6.61958 19.1649 --28.5758 -7.27643 19.1616 --28.0044 -8.10029 19.3007 --27.2758 -8.75037 19.2871 --26.6174 -8.04401 19.1936 --26.1801 -8.95255 19.39 --25.7653 -9.37365 18.6135 --25.1379 -9.1714 17.907 --25.1235 -8.42584 17.3577 --24.7928 -9.06175 16.7351 --24.9504 -10.0159 16.54 --24.8699 -9.77813 15.6412 --25.0956 -9.07198 14.9029 --24.8203 -9.88053 14.3753 --25.3639 -9.45066 13.6468 --25.7938 -10.3574 13.7914 --26.181 -9.60109 14.344 --26.6214 -9.08793 15.0733 --27.2731 -9.1365 15.8825 --26.8726 -8.31058 15.6607 --25.9779 -7.94232 15.4374 --25.2731 -7.62731 14.7613 --24.4756 -7.18516 14.487 --24.4357 -6.45831 13.8776 --25.2016 -6.7355 13.2178 --25.4334 -5.90063 12.588 --25.6407 -5.70514 13.643 --25.5877 -5.43469 14.5828 --25.3086 -4.56376 14.3085 --24.9828 -4.45121 13.3622 --25.5608 -3.85998 12.7932 --26.4282 -4.13316 12.5627 --26.5913 -3.22701 12.2309 --26.594 -2.57208 12.9443 --26.7012 -1.65764 13.3035 --26.5448 -0.9621601 12.4862 --26.318 -1.31883 11.5684 --25.9956 -1.33097 10.5858 --25.1867 -1.47943 11.1941 --24.4411 -1.30972 11.9535 --24.1108 -1.91808 11.2221 --24.7178 -2.5368 10.7569 --25.1267 -2.81965 11.5721 --24.5432 -3.39903 12.2095 --24.1356 -4.10669 11.6764 --23.3814 -4.69434 11.4393 --23.2924 -5.46786 10.8707 --23.0496 -5.89221 9.97981 --23.0862 -5.15294 9.27277 --22.5623 -5.65117 8.5702 --23.3728 -5.21873 8.18617 --23.0198 -4.37009 7.6553 --22.8381 -4.76251 6.71531 --22.4025 -5.6544 6.88766 --21.8221 -6.45513 7.243 --21.4399 -6.59555 8.18776 --22.1237 -7.14151 8.58826 --21.8435 -6.77451 9.50511 --21.2562 -7.56791 9.7564 --20.5894 -6.89216 9.59344 --20.3391 -6.22386 10.2844 --21.0593 -6.43292 10.9253 --20.9335 -5.79832 11.6809 --20.8546 -4.91165 11.3315 --21.1234 -4.60186 12.2539 --21.0476 -3.60482 11.9846 --22.0568 -3.72156 12.0656 --22.4229 -2.82583 11.736 --23.0751 -2.32674 12.3562 --23.0196 -1.62668 11.6531 --22.5608 -1.46798 10.7824 --21.6715 -1.09373 10.4522 --21.9586 -1.86487 9.92097 --22.1036 -1.50299 8.96405 --23.008 -1.81229 8.835 --23.7661 -2.40563 8.67985 --24.1793 -3.41455 8.76174 --23.5123 -3.5909 9.4388 --23.0986 -3.65306 10.3602 --22.4397 -3.07975 9.9437 --21.5916 -2.8296 9.34811 --20.6621 -3.15761 9.29913 --19.9371 -2.50022 9.01235 --20.0823 -2.05663 9.89497 --19.9478 -1.2457 9.36902 --20.3781 -0.3988081 9.59321 --20.669 -0.5058181 10.6278 --20.7362 -1.21023 11.3537 --20.9524 -1.95235 12.0299 --20.917 -2.31427 11.0806 --20.2164 -3.12942 11.0688 --19.333 -2.81914 10.6488 --18.3306 -2.4761 10.8219 --18.5234 -3.33856 11.3669 --18.0789 -4.18241 11.7876 --18.2974 -5.13544 11.6135 --18.9086 -5.65157 12.2542 --19.7744 -5.88956 12.7234 --20.214 -5.43267 13.4804 --21.1858 -5.07583 13.5286 --21.9615 -4.97327 14.2053 --21.2514 -4.36003 14.6096 --20.8825 -3.51733 14.24 --21.5032 -2.73668 14.1229 --21.3228 -1.75946 14.0414 --22.2305 -1.71753 14.0759 --22.1674 -0.7294791 14.37 --22.0211 -1.13287 15.2912 --22.3259 -0.1691421 15.1527 --22.0435 0.7877679 15.4526 --22.3099 1.59379 14.923 --22.9086 2.14088 15.5381 --23.4327 2.19119 14.7137 --22.7349 1.81394 14.0991 --22.6901 1.57563 13.0961 --23.4556 1.34372 12.395 --23.3723 1.18505 11.4991 --24.0724 0.5088469 11.8057 --25.0408 0.4713649 11.4617 --25.1557 -0.09699677 10.6388 --25.02 -0.1401261 9.68332 --25.6469 0.6376149 9.80482 --26.5643 0.4899109 9.95259 --26.7515 1.48182 10.0958 --26.9032 1.8316 9.17495 --26.5597 2.40939 8.51712 --26.8924 3.35555 8.42586 --27.7733 3.52738 8.79957 --28.3822 4.28917 9.00815 --28.6496 5.2499 8.82537 --29.6425 4.95198 8.8216 --30.4606 5.61892 8.98038 --30.1607 6.49139 9.39425 --30.4715 7.38861 9.15895 --29.4783 7.2489 9.21563 --29.839 7.62772 8.36497 --29.5285 8.60337 8.43811 --29.1279 8.85688 7.47968 --28.8618 8.38022 6.66563 --29.4202 7.62422 6.4091 --29.9015 7.98832 7.17886 --30.5979 8.20259 6.56177 --30.0707 8.87246 5.94509 --30.2015 9.1251 4.99271 --30.7867 8.36685 5.0261 --31.2618 7.47672 4.78821 --30.5924 6.9089 5.31942 --29.9046 7.19666 4.60303 --29.449 7.11285 3.73079 --28.5334 6.73935 3.78008 --27.6569 6.55922 3.17472 --27.3774 7.52569 2.93154 --27.5228 8.2953 3.62326 --27.6777 8.93256 4.31182 --27.1814 9.84019 4.38613 --27.0152 9.60859 3.44533 --26.3463 8.95344 3.11016 --25.6799 8.27405 2.90184 --25.7444 7.55789 3.56676 --26.3772 6.86647 3.51086 --26.3306 6.46957 2.56274 --26.0678 7.10853 1.85843 --25.3259 6.60063 1.42614 --24.674 6.87871 2.18589 --24.354 6.083 1.6884 --23.5238 5.64476 1.49169 --23.1774 6.50247 1.9926 --23.2332 5.91862 2.80852 --22.3693 5.68014 3.01948 --22.5636 6.50465 3.49103 --22.291 7.30925 2.90422 --21.6475 7.14927 3.67409 --21.0724 7.29506 2.86575 --20.8297 6.32276 2.94965 --20.4663 6.84285 3.74954 --20.0391 7.61978 3.45209 --19.2188 7.04228 3.30296 --18.7128 7.40049 2.52101 --19.2925 7.05546 1.86764 --20.017 7.28315 1.12108 --19.5185 6.9241 0.3487671 --19.3133 6.15189 0.9070231 --19.12 5.12737 0.8892201 --18.3041 5.34847 0.5083491 --17.6825 6.1404 0.2806821 --17.0173 6.88321 0.3004321 --16.0731 6.93146 0.3805461 --15.2503 6.97544 -0.09340078 --14.2809 7.28241 -0.1451879 --14.387 8.00765 -0.8039309 --13.7467 8.73298 -0.8390829 --13.9077 9.42991 -1.53027 --12.9481 9.31915 -1.16294 --12.7976 8.69424 -2.00782 --12.6919 7.82858 -1.48348 --11.8145 7.60694 -1.95208 --12.1959 7.58755 -2.93171 --12.2179 6.78221 -3.49398 --12.1477 5.75598 -3.39928 --11.5753 5.39412 -4.13109 --11.026 5.04966 -3.31778 --10.3764 4.99756 -2.62078 --9.99884 4.72605 -1.81986 --10.1489 4.85244 -0.8291499 --10.8322 5.5111 -0.5173629 --10.4136 6.04495 -1.2101 --10.8189 5.96071 -2.10283 --9.99905 6.37485 -2.52359 --10.2281 7.32643 -2.3023 --10.8462 8.05843 -2.0083 --10.4431 8.86394 -2.46212 --10.5238 9.85859 -2.67218 --10.573 10.2239 -3.58413 --11.1936 9.44463 -3.68638 --11.8969 8.8309 -4.03931 --11.5148 8.57704 -4.95341 --10.7034 8.39303 -4.4113 --11.1362 7.59297 -4.70944 --11.4201 6.65187 -5.10396 --11.5737 7.43668 -5.68176 --11.7163 7.71046 -6.58638 --11.9643 6.9971 -7.19448 --11.6017 6.08987 -7.32509 --12.0146 6.09939 -8.23126 --12.1436 5.76275 -9.24258 --11.2345 6.24773 -9.19245 --10.7806 6.60431 -9.98494 --10.7353 7.31581 -9.29093 --10.682 8.01087 -8.6196 --9.91061 8.16822 -9.17815 --9.4224 7.82109 -8.36584 --8.97017 8.65965 -8.0773 --9.17949 9.32574 -7.448 --9.41558 9.5921 -6.50229 --8.45853 9.65419 -6.22249 --8.21816 9.30679 -5.33379 --9.12762 9.82034 -5.30476 --8.9603 9.46731 -4.39415 --9.30718 9.92934 -3.55473 --9.07754 9.45559 -2.70166 --8.33858 8.83144 -2.84237 --8.99419 8.19712 -3.29516 --9.5087 7.95641 -4.12814 --10.0324 7.43393 -4.83318 --10.1041 6.72933 -5.50667 --9.72162 5.75797 -5.44711 --10.3026 5.33063 -6.06774 --10.9271 5.05992 -5.25096 --10.572 4.6707 -4.45718 --11.232 4.05549 -3.81071 --11.523 3.15866 -3.57359 --11.7099 3.48213 -2.64392 --12.6717 3.65958 -2.88172 --12.8725 4.47958 -2.30565 --12.4899 5.38334 -1.95287 --13.0053 5.73168 -1.09357 --13.9061 5.21626 -1.34658 --14.8517 5.19284 -0.9763229 --15.4197 5.8456 -0.5109169 --14.6106 6.31987 -0.8499519 --15.0447 6.24913 -1.72514 --15.4784 6.89131 -2.3545 --15.3086 7.83123 -2.7843 --15.6989 7.37366 -3.53719 --15.5233 6.48981 -3.96339 --14.9225 6.60173 -4.74889 --13.9844 6.616 -4.59388 --13.1216 6.86571 -5.13909 --13.4635 7.81867 -5.1507 --13.3419 7.40184 -4.31827 --13.4263 6.67262 -3.61472 --13.4004 5.62871 -3.86149 --14.1281 5.40602 -4.4228 --14.1154 4.8013 -5.19037 --15.0817 4.84439 -5.41049 --15.2717 5.73521 -5.79179 --16.1499 6.05564 -6.16595 --16.4682 7.04597 -6.32428 --16.9302 7.60502 -5.6828 --16.7302 8.48559 -5.46507 --16.6885 9.4595 -5.64372 --17.6839 9.73689 -5.42704 --18.5986 9.95378 -5.85043 --19.0719 9.57111 -5.00026 --18.8877 9.83801 -4.0256 --19.513 10.6138 -3.80188 --20.5051 10.6743 -4.01591 --21.1561 9.86307 -4.00896 --21.1519 8.81741 -3.94878 --20.2235 9.21195 -3.89795 --19.3659 8.88726 -3.47903 --18.8006 8.23273 -4.00827 --19.3687 7.9456 -4.731 --19.2728 6.95202 -4.7615 --19.5983 6.10917 -4.32602 --20.2171 5.8745 -5.006 --19.6539 5.08108 -4.9063 --18.9857 4.38213 -5.23773 --18.1075 4.75558 -4.92255 --18.4641 4.84977 -3.98064 --18.6762 3.87172 -3.79692 --18.6936 3.19802 -3.04861 --19.5227 3.79903 -2.98037 --19.5678 4.41394 -3.80523 --20.3094 4.35352 -4.41732 --20.0781 3.53678 -4.98257 --19.6286 2.67122 -5.3583 --19.1439 2.1681 -4.5849 --18.2724 1.59576 -4.7822 --18.6027 1.32736 -3.92941 --19.1592 1.24493 -3.06267 --19.3896 0.3918949 -3.52466 --20.197 -0.1223351 -3.90723 --20.7291 0.3309289 -4.60034 --19.8374 0.4542819 -5.07212 --19.8426 -0.5311451 -4.83943 --20.8073 -0.7432431 -5.10712 --20.8311 -0.1517291 -5.91389 --21.7451 -0.5019971 -6.32989 --21.5395 -1.47848 -6.30417 --22.46 -1.31902 -5.96875 --23.3597 -1.07899 -6.26087 --23.5589 -1.99185 -6.35131 --23.8154 -2.08836 -5.43432 --23.0947 -2.77464 -5.67373 --22.1498 -2.45761 -5.83004 --21.2261 -2.9042 -5.63276 --20.3115 -2.98593 -5.85292 --20.3545 -3.7125 -6.56958 --19.452 -3.26868 -6.45938 --18.6563 -2.81125 -6.20628 --18.7165 -1.89256 -6.66738 --17.9805 -1.21646 -6.75457 --17.4952 -0.3717351 -6.9934 --18.1942 0.2106499 -7.45817 --18.8957 0.8307839 -7.09259 --18.2028 1.30242 -7.58214 --18.3339 2.14608 -7.11048 --17.9077 1.32662 -6.60519 --17.3929 2.21233 -6.65665 --17.2748 2.77727 -7.44567 --16.9876 3.53021 -8.02394 --16.1106 3.72551 -7.73011 --15.5881 4.04524 -8.519 --15.7128 4.76379 -9.20817 --15.4165 5.51476 -8.63714 --15.5077 5.88234 -7.73269 --16.407 5.60722 -8.10002 --17.2045 5.95662 -7.62466 --17.9496 6.11831 -8.29189 --18.6815 5.41541 -8.49745 --19.2042 5.66753 -7.74727 --19.7477 4.95403 -7.50318 --19.8178 4.41262 -8.25808 --20.0241 3.80419 -9.03675 --20.4819 4.63743 -9.00464 --19.9207 5.45914 -9.25423 --19.7921 6.37978 -8.85907 --20.3507 7.14918 -8.73126 --20.3127 8.10657 -8.52184 --21.1233 8.20438 -7.89168 --20.8153 8.87648 -7.21366 --20.4778 7.99613 -6.94637 --20.4482 7.49316 -6.10296 --21.058 7.89083 -5.44367 --21.5354 8.44194 -6.14296 --22.4881 8.47635 -5.92487 --22.7136 9.20825 -6.58032 --23.0945 9.95473 -7.12956 --23.7045 9.14438 -7.23641 --23.6321 9.31128 -8.29303 --24.4334 9.87863 -8.43637 --24.3875 10.4852 -7.62894 --24.805 11.1656 -8.1772 --25.7983 11.3854 -8.00778 --25.4015 12.2749 -8.1789 --24.8728 12.1863 -9.04184 --25.174 12.6379 -9.863 --25.929 12.1036 -10.3058 --26.6911 11.4667 -10.2268 --26.2995 10.5914 -10.5764 --25.9527 10.5517 -9.60666 --25.0238 10.7722 -9.78144 --24.5026 10.6294 -10.6642 --24.907 11.2179 -11.3722 --24.8136 12.1902 -11.2656 --24.318 12.8448 -10.7686 --23.2926 12.9205 -10.7046 --23.5386 12.5011 -9.85447 --23.3961 11.6934 -10.4083 --22.5949 11.7602 -9.75761 --23.3465 11.1792 -9.39475 --22.6368 10.4139 -9.17901 --23.0775 9.5903 -9.40562 --22.3863 9.23677 -8.76261 --22.084 8.27614 -8.83622 --21.3969 8.96469 -9.25081 --20.4875 9.30637 -9.28358 --19.8938 9.44747 -10.0615 --18.9414 9.34533 -9.6246 --18.4628 10.2351 -9.55128 --17.7164 10.9549 -9.60271 --16.9629 11.347 -9.09945 --17.5345 12.2014 -9.2866 --17.4949 12.4905 -8.33908 --16.6387 12.4656 -7.77493 --15.9646 12.0387 -7.23904 --15.9506 11.1949 -6.65031 --16.3122 10.4972 -7.25315 --16.8471 9.73084 -6.93524 --17.5557 10.25 -6.61611 --17.9021 10.9991 -7.16127 --18.7917 11.1719 -6.67434 --18.6056 11.7968 -5.88554 --17.8028 12.2446 -5.49451 --17.0098 12.7118 -5.0387 --16.107 12.2979 -4.95444 --15.6959 11.9438 -4.10595 --16.4418 12.3408 -3.53487 --15.6307 12.9079 -3.50283 --15.8986 13.6975 -4.02855 --15.067 14.1614 -4.48553 --15.2637 13.6706 -5.38181 --14.829 13.2131 -6.20256 --15.3153 12.4525 -5.88979 --14.7749 11.6948 -5.40584 --15.2776 10.9008 -5.06106 --15.0973 10.0995 -5.56591 --14.9843 10.5632 -6.41795 --14.179 10.3675 -7.02502 --13.3261 10.5878 -6.63335 --12.6441 11.1266 -6.32804 --12.8244 11.679 -5.50818 --13.4707 12.3861 -5.07084 --12.7579 12.3411 -4.42671 --12.7696 11.5541 -3.80566 --13.2534 10.9773 -4.45564 --13.9531 10.7666 -5.06869 --13.6843 9.96968 -5.61857 --13.6596 9.00316 -5.91481 --14.6007 8.80708 -5.83626 --15.5779 8.71023 -6.06432 --15.2 9.33495 -6.80079 --15.462 8.3841 -7.10268 --14.8532 7.9097 -7.79004 --14.3834 7.69091 -6.86761 --15.0428 6.93855 -6.85699 --14.3667 6.37514 -7.23178 --14.2355 5.42794 -7.12098 --13.3347 4.95422 -7.26355 --13.3137 4.34339 -8.14099 --13.1848 4.01897 -9.10932 --13.2269 3.04417 -8.93466 --13.176 2.08737 -8.58898 --12.7201 2.7952 -8.01062 --12.9957 1.94764 -7.60114 --12.6957 1.34224 -6.80831 --13.0986 1.86618 -6.14069 --12.7098 2.82953 -6.48367 --11.8794 2.94885 -6.04148 --11.1762 3.3857 -6.62258 --10.4282 4.03399 -6.41549 --9.49174 4.21107 -6.71154 --9.0332 4.23622 -7.55147 --8.86703 4.85123 -8.30278 --7.90794 5.25144 -8.33654 --7.24138 4.82035 -8.94138 --7.81053 4.02614 -8.89511 --8.18457 3.08894 -9.15466 --7.42925 3.3879 -9.77915 --6.89185 3.38358 -8.93517 --5.94623 3.5893 -8.74905 --5.78587 4.23851 -7.97279 --6.26167 3.5626 -7.44097 --6.19006 3.27009 -6.42184 --6.76573 2.4857 -6.04426 --7.06767 3.08365 -5.36044 --6.46502 2.81042 -4.59868 --6.72946 2.46806 -3.73044 --6.81441 1.50719 -4.11158 --7.41403 1.55898 -4.95001 --7.60858 1.1741 -5.81483 --8.15298 2.01416 -5.65738 --8.32222 2.35061 -4.81961 --7.78286 3.19303 -4.63598 --7.41137 4.07246 -4.86739 --7.96127 4.73726 -4.54939 --8.72482 4.73233 -5.17417 --9.55905 4.28055 -4.92535 --9.41737 5.00148 -4.28272 --8.66152 5.61794 -4.03895 --8.65811 6.61591 -3.82767 --8.16763 7.27356 -3.21333 --8.49703 7.29976 -2.33935 --7.56766 7.28921 -2.07419 --7.24899 8.10509 -1.49993 --7.29901 8.82218 -0.8172299 --7.22757 9.58276 -0.2351349 --7.75972 10.2704 0.3407071 --8.39822 9.8774 1.02347 --7.77825 9.43214 1.67385 --7.63851 8.55739 1.2645 --8.55409 8.40194 1.49906 --9.54712 8.29805 1.27062 --9.48876 8.30276 0.2935551 --9.54763 7.32849 0.1585261 --9.15259 6.72385 -0.5299689 --9.12374 5.68915 -0.5333089 --8.09509 5.87984 -0.6329369 --7.16409 6.14663 -0.8649879 --7.14394 5.9342 0.1448351 --7.30989 5.50204 0.9595921 --7.30882 5.40363 1.96032 --7.83346 4.75494 1.41691 --8.31249 4.63033 2.26168 --8.70018 5.45677 1.88069 --9.39198 4.82683 1.5159 --10.2497 4.40521 1.48668 --10.2421 3.60649 0.9856751 --10.1543 3.35928 1.8981 --10.9459 2.79278 1.76277 --11.7209 2.84382 1.17626 --11.3249 3.23014 0.2801721 --11.3316 3.8874 -0.4748329 --10.6441 4.18692 0.1500721 --11.43 4.27712 0.8062941 --12.0001 4.59456 -0.03282558 --12.4536 4.36807 -0.8914329 --12.9656 3.52097 -1.2395 --13.6665 3.77073 -1.95519 --14.4875 4.00539 -2.39507 --14.4788 3.12328 -2.81467 --14.3877 3.63809 -3.71945 --15.1304 4.19263 -4.03044 --15.682 5.05209 -4.08885 --16.3302 4.40658 -4.46787 --16.4883 5.17977 -5.12836 --17.3295 5.18545 -5.77468 --17.8902 4.72852 -6.43217 --17.4978 3.78816 -6.54906 --17.5214 4.3233 -7.38828 --18.3023 3.76164 -7.73416 --18.8648 3.01798 -8.16287 --19.1935 2.13466 -8.25581 --19.0216 2.45282 -9.17873 --18.3109 1.78565 -9.29458 --17.5879 1.07993 -9.50118 --17.1957 0.4337719 -10.1499 --17.4094 -0.2813301 -9.49481 --17.12 0.1725629 -8.69921 --17.8142 -0.5341421 -8.44098 --16.948 -0.7491441 -8.08392 --16.726 -1.59539 -8.54765 --16.3894 -2.43117 -8.11806 --16.4664 -2.68833 -9.07415 --17.161 -3.37969 -9.37019 --17.2573 -3.63693 -10.2407 --17.5699 -4.48494 -10.7465 --18.0462 -5.24585 -10.2972 --17.046 -5.36345 -10.1238 --16.7919 -6.11464 -10.7784 --15.768 -5.89248 -10.8483 --14.8823 -5.45584 -10.6175 --14.002 -5.85806 -10.778 --14.6287 -6.6302 -10.9128 --15.5864 -7.01671 -10.9074 --15.6101 -6.77318 -11.8627 --15.1765 -7.60365 -12.2757 --16.0408 -8.00621 -12.2907 --17.1017 -7.90177 -12.1747 --17.237 -7.3157 -12.9705 --17.3192 -6.8145 -12.1483 --18.2605 -6.82124 -12.0673 --18.1814 -7.70392 -12.5244 --18.0131 -7.93409 -13.4833 --18.1246 -7.9925 -14.3695 --17.7641 -7.63038 -15.2641 --18.416 -6.81336 -15.1016 --18.793 -5.96586 -14.6921 --18.8685 -5.31119 -15.4316 --19.5514 -5.76792 -15.9477 --19.617 -4.86232 -16.1876 --20.2038 -4.38558 -16.9137 --19.7246 -3.58536 -16.662 --19.1114 -3.23296 -17.4619 --18.3767 -3.85677 -17.7577 --19.0424 -4.08823 -18.4836 --19.0869 -4.32678 -19.4445 --19.0292 -4.38935 -20.4728 --19.6078 -4.51076 -21.3364 --18.992 -4.9738 -21.9051 --18.6579 -4.11071 -21.9686 --17.9432 -4.45063 -22.6153 --17.599 -4.74409 -23.5639 --17.2532 -3.97686 -23.0387 --16.7655 -3.12116 -23.0206 --16.9809 -2.59668 -22.2243 --16.2563 -2.51724 -21.5019 --15.6278 -3.04796 -21.0019 --15.9348 -3.03495 -20.0513 --15.8446 -4.10863 -19.9915 --14.9598 -3.84776 -19.7083 --14.6766 -2.95459 -19.2593 --14.7783 -2.15762 -19.7842 --15.5933 -1.64263 -19.9579 --15.651 -0.7080521 -20.0752 --16.2167 -1.18483 -20.7433 --16.5569 -0.3364211 -21.0875 --17.1472 0.4057409 -21.2424 --17.9906 0.1318169 -20.8425 --18.6775 -0.4637851 -21.0886 --18.7367 -1.44185 -20.9611 --18.4745 -0.8322611 -20.2082 --18.624 -0.1363201 -19.4956 --19.248 0.7037379 -19.5028 --18.7388 1.50873 -19.328 --19.4803 1.68564 -18.7561 --20.5044 1.59286 -18.7326 --21.0812 0.8775759 -18.4469 --20.5804 0.1627119 -18.9419 --20.6042 -0.5437181 -19.6138 --20.4984 -1.60833 -19.5088 --19.8959 -1.34725 -20.3103 --19.2489 -1.86451 -19.8101 --19.8442 -2.68179 -19.9903 --20.2627 -3.24886 -20.657 --20.8206 -4.02545 -20.3054 --21.5284 -4.34913 -20.9234 --21.744 -5.30256 -21.2814 --21.2637 -5.49298 -22.1912 --20.9915 -6.22891 -21.6213 --21.2326 -6.62476 -20.7031 --20.4457 -6.48843 -20.1067 --21.3012 -6.19876 -19.5073 --20.7945 -6.82727 -18.9251 --20.1509 -6.07596 -18.816 --19.1103 -5.81893 -18.852 --18.9732 -6.8106 -18.9741 --19.3705 -6.80477 -19.8954 --19.0736 -7.5246 -20.585 --18.2613 -6.99293 -20.5625 --17.6523 -6.42853 -20.0983 --16.6682 -6.14715 -19.8434 --16.2363 -5.27509 -20.1385 --15.4526 -5.95183 -20.1411 --15.6922 -6.92491 -20.3256 --16.2187 -7.5523 -19.7738 --16.3353 -8.45429 -20.1194 --15.8048 -8.60722 -19.3075 --16.0203 -8.95795 -18.4104 --16.8407 -8.51878 -17.9814 --17.5036 -7.9811 -18.462 --17.496 -8.0029 -17.4706 --17.4311 -7.07083 -17.9247 --18.4112 -7.3029 -17.8965 --19.3189 -7.63071 -18.0912 --19.6758 -8.14119 -18.8633 --20.1928 -8.83599 -19.2276 --20.5362 -9.20437 -18.4003 --20.1805 -9.13986 -17.4574 --19.6885 -8.58674 -16.7814 --18.8646 -9.23245 -16.8201 --19.4287 -9.88693 -17.2959 --19.9701 -10.1985 -18.1452 --19.2643 -10.2044 -18.8829 --18.2471 -10.3698 -18.7306 --18.2607 -10.8714 -19.5212 --17.349 -10.9621 -19.0757 --17.1728 -10.5634 -18.2374 --16.6719 -11.1398 -17.6331 --15.8123 -11.2429 -17.1 --15.7415 -10.9853 -16.1459 --15.484 -11.6851 -15.438 --14.8397 -11.2007 -14.8804 --14.5464 -12.1573 -14.7748 --14.0417 -12.7586 -14.1692 --14.8255 -13.3139 -13.8861 --15.0649 -13.0726 -12.9215 --14.855 -12.0544 -13.0681 --15.4749 -11.8212 -13.777 --16.0516 -11.4088 -14.4742 --15.7481 -10.627 -13.913 --15.5705 -9.68453 -14.126 --16.1726 -8.89964 -14.4031 --16.2877 -9.02743 -13.4751 --17.1869 -9.52963 -13.2164 --17.9365 -10.1629 -12.9775 --18.4047 -9.6677 -13.7014 --18.9411 -9.50943 -12.9037 --19.519 -9.88829 -12.166 --19.7399 -10.7148 -12.7402 --18.7289 -11.0874 -12.7754 --18.6871 -11.3638 -13.72 --19.3376 -12.1078 -13.5416 --19.273 -12.7159 -12.8039 --19.3146 -13.4692 -12.1574 --19.6442 -14.2849 -12.7201 --19.1709 -13.6961 -13.4347 --19.4704 -13.5126 -14.3045 --18.7866 -12.7799 -14.2901 --18.9128 -12.538 -15.2347 --19.7194 -11.9218 -15.5499 --19.9831 -11.4333 -14.6918 --20.613 -10.7654 -14.3199 --21.154 -11.5483 -14.4957 --21.6933 -11.096 -15.1568 --22.5262 -10.5591 -15.0268 --23.4114 -10.887 -15.4288 --23.2281 -9.91541 -15.4572 --22.6999 -9.16141 -15.8944 --21.8371 -8.81149 -16.3126 --21.5408 -8.08511 -15.6972 --20.7441 -7.47828 -15.9343 --19.8581 -7.46703 -15.4813 --20.6733 -7.19067 -14.9009 --20.7967 -6.22852 -14.7009 --20.7077 -5.90648 -15.6517 --21.4205 -6.09353 -16.361 --21.8981 -6.54667 -15.7191 --22.8655 -6.34797 -15.5698 --22.6583 -6.70301 -14.6793 --21.9507 -6.98463 -13.9696 --21.9822 -7.96415 -14.3465 --21.329 -8.16353 -13.6978 --21.5021 -8.49353 -12.7555 --21.3996 -8.9939 -11.9011 --22.2397 -9.63093 -11.9988 --21.4169 -10.1236 -11.7952 --21.9706 -10.4008 -12.5368 --22.704 -10.7317 -11.9997 --22.6154 -10.889 -10.9681 --22.7963 -11.4315 -10.0462 --21.8905 -11.1696 -10.1984 --21.4624 -10.6179 -9.50345 --21.8774 -9.85874 -9.03791 --21.5885 -10.1511 -8.1827 --20.6214 -9.94133 -8.52348 --19.7331 -9.66824 -8.24706 --19.6182 -9.73862 -7.21172 --20.6276 -9.68963 -6.88797 --21.5595 -9.44883 -6.98547 --22.321 -9.46369 -6.37868 --22.0547 -9.14463 -5.43934 --21.3056 -8.4327 -5.28123 --21.2383 -7.67902 -4.65624 --22.2536 -7.81655 -4.78297 --22.6313 -7.02882 -5.30861 --23.5355 -6.67441 -5.47654 --23.0509 -6.39894 -6.3581 --22.3575 -6.95432 -6.78931 --23.1048 -6.82569 -7.40569 --23.2714 -6.84595 -8.35925 --22.4942 -7.42973 -8.40523 --22.3994 -8.44993 -8.43815 --21.4312 -8.85421 -8.50906 --20.614 -8.47026 -8.87779 --20.5102 -8.30614 -7.90502 --20.737 -7.40812 -8.28047 --20.6615 -7.2783 -9.26135 --21.1854 -7.4988 -10.0818 --22.1749 -7.44367 -10.1385 --23.1307 -7.16925 -10.4427 --23.3337 -8.15553 -10.3792 --23.3214 -9.06716 -10.0132 --22.9874 -9.00068 -9.09937 --23.6518 -8.46115 -8.56621 --24.6083 -8.33062 -8.71314 --24.5775 -7.91479 -9.68922 --25.5722 -7.97489 -9.72691 --25.2321 -8.79316 -10.1483 --25.3648 -8.14991 -10.93 --25.5658 -7.31133 -11.4628 --25.5347 -6.48646 -10.8568 --26.3106 -7.05684 -10.5244 --27.1367 -6.95092 -10.9095 --28.1496 -6.81726 -10.6646 --28.0746 -6.81552 -11.6432 --28.9204 -6.85949 -12.2347 --29.5158 -7.2523 -12.8443 --28.9312 -7.97094 -13.0851 --28.1701 -8.52727 -13.4394 --28.5058 -8.79837 -14.3177 --27.8614 -9.45037 -14.5719 --27.3165 -8.70347 -14.7457 --26.4687 -9.19666 -14.9029 --25.7113 -9.8013 -14.9567 --25.0643 -10.0408 -15.6758 --25.9843 -10.3556 -16.0932 --26.5471 -11.0352 -15.6051 --27.021 -11.9086 -15.5411 --26.4241 -11.7843 -14.7318 --26.3814 -12.5812 -15.1366 --26.3795 -12.964 -15.9997 --27.2844 -13.4095 -15.7998 --26.9271 -14.3325 -15.7698 --26.8113 -15.2286 -15.3016 --27.2849 -16.0883 -15.543 --28.2021 -16.4883 -15.6375 --28.9118 -15.8527 -15.9496 --29.4905 -15.2836 -15.3033 --30.1107 -15.2602 -14.5336 --29.4673 -15.4286 -13.7832 --30.1651 -16.0709 -13.5739 --30.3851 -16.3978 -12.6314 --31.1881 -15.853 -12.8245 --30.7387 -15.434 -12.0495 --30.337 -15.4006 -11.1233 --29.3268 -15.5851 -11.1554 --28.7961 -15.1826 -11.9621 --29.2135 -14.4098 -12.5822 --28.7026 -14.049 -11.7903 --29.4718 -13.48 -12.1127 --30.3263 -14.0433 -12.2379 --31.0087 -13.3105 -12.562 --31.6191 -13.3637 -11.8237 --31.2445 -12.8141 -11.0915 --31.5801 -11.8785 -11.3345 --30.854 -11.3279 -11.0837 --29.9775 -10.9221 -11.2704 --29.6001 -10.0102 -11.1846 --30.2067 -9.21227 -11.0269 --29.6461 -8.63992 -11.5282 --29.6166 -7.73654 -11.0927 --29.7743 -6.80952 -10.7688 --30.6488 -6.25998 -10.778 --30.0154 -5.45339 -10.6363 --29.3968 -5.19754 -9.86278 --29.0682 -5.79428 -10.6034 --28.5322 -4.99089 -11.0523 --28.0498 -5.41028 -11.9037 --28.1254 -4.4165 -11.9805 --27.5696 -4.33426 -11.134 --26.6569 -4.53009 -10.6749 --26.7596 -3.51603 -10.5138 --26.5177 -2.56203 -10.3385 --26.2748 -2.24011 -9.46086 --26.7587 -2.48875 -8.58775 --26.8949 -1.6167 -8.91524 --27.1001 -0.8727731 -8.26105 --28.1074 -0.9495181 -8.52323 --28.2406 -1.86336 -8.14695 --29.1279 -1.81261 -7.73355 --30.0412 -1.87763 -7.39229 --30.0373 -1.7388 -6.4421 --30.3653 -1.61133 -5.57153 --30.0071 -1.9172 -4.68311 --29.0639 -1.58439 -4.84869 --29.1542 -0.6287571 -5.20699 --29.2945 -1.31735 -5.92125 --28.6951 -0.5709951 -6.29527 --27.7625 -0.6045741 -5.95797 --27.413 -1.32677 -5.32575 --27.3992 -2.23503 -5.52083 --28.2173 -2.67215 -4.96722 --28.1936 -2.80461 -3.98196 --28.1394 -2.86364 -2.98111 --28.998 -2.21684 -3.113 --28.9801 -1.242 -3.07789 --29.2173 -0.3706141 -3.23703 --29.8633 0.3819099 -3.15063 --29.9937 1.08532 -3.89204 --30.9831 0.8294419 -4.2029 --31.265 1.46323 -3.45368 --30.7796 1.99087 -2.73087 --31.2593 2.55891 -3.41221 --31.4322 2.98219 -4.3087 --30.7454 2.85519 -4.96846 --30.6785 1.85998 -5.16275 --30.9227 1.4169 -6.02006 --31.6726 1.76526 -6.55666 --31.2014 1.66531 -7.40743 --30.4989 2.27539 -7.55355 --30.0193 2.82024 -6.87711 --30.4914 2.96861 -6.00159 --30.0943 3.84834 -5.80823 --30.6935 4.0374 -6.61104 --30.7213 4.58755 -7.46554 --31.5334 5.04326 -7.2008 --31.1986 5.99822 -6.85385 --30.3724 6.58032 -7.15795 --29.3241 6.71562 -7.03353 --29.408 5.85247 -6.44407 --30.3863 5.90785 -6.15416 --30.6005 5.27053 -5.28232 --29.6812 5.30733 -4.97177 --29.0914 4.54776 -5.4126 --29.0042 4.16937 -6.32179 --28.1731 3.87765 -5.90747 --27.7317 4.31836 -6.68478 --27.1357 3.83249 -6.05319 --27.1404 4.576 -5.42171 --26.9549 5.35894 -4.83619 --27.1806 5.66493 -3.87852 --27.6136 6.5081 -4.13241 --28.0098 7.12844 -3.52965 --28.9461 6.82156 -3.27433 --29.8856 6.99889 -3.12897 --30.1669 6.13522 -3.59491 --29.5307 5.33017 -3.27734 --29.6611 5.03957 -2.37958 --29.6776 4.34286 -1.72301 --30.4161 4.74929 -1.17822 --30.2437 4.5608 -0.2020719 --30.4996 3.67256 0.2289931 --31.4015 3.32453 -0.1085739 --30.9705 2.40719 -0.2701209 --31.0933 1.89655 0.5632351 --30.9248 2.7794 0.9543811 --30.2854 3.33134 1.45602 --31.2458 3.30808 1.80708 --31.7923 4.19225 1.65734 --31.6637 3.99849 2.6438 --32.4203 4.55891 2.36126 --33.0296 5.21834 2.84718 --33.7203 5.31557 2.09953 --34.082 6.23692 2.01545 --34.0994 6.96242 2.64027 --34.4457 7.61008 1.90678 --34.7105 8.57714 1.82871 --34.0877 8.57656 2.65179 --33.1361 8.84915 2.76592 --32.6935 9.81024 2.84905 --32.0533 9.89021 2.10025 --31.2653 10.2474 1.46962 --30.4456 10.7164 1.50993 --30.2051 11.1495 0.6525131 --29.3704 11.5622 0.3392291 --29.0961 10.8239 1.00084 --28.3957 11.1394 1.64397 --28.0562 10.3644 1.16143 --28.3535 9.57279 0.7101611 --28.0068 9.21822 -0.07460388 --27.4338 10.0198 -0.1065269 --26.5419 9.91777 -0.5325629 --25.691 9.62774 -0.9747849 --26.2127 8.83648 -0.7282919 --25.4684 8.13927 -0.9196469 --26.0544 7.41042 -0.5711419 --26.827 7.32799 -1.18345 --27.3038 8.16727 -0.9387929 --27.8678 7.84512 -1.68295 --27.1304 7.59791 -2.31056 --27.2293 6.70011 -1.90829 --26.8836 6.26997 -1.16938 --27.3018 6.18946 -0.2832759 --28.037 5.51473 -0.5245249 --28.6713 5.05802 0.01936942 --28.0733 4.30539 -0.1666699 --27.1442 4.61702 -0.3198909 --26.636 3.80858 -0.6461129 --25.8913 4.17893 -1.24135 --25.0973 3.59859 -1.56521 --24.1104 3.5199 -1.7993 --23.2448 3.36908 -1.21603 --22.8379 4.22902 -0.9817719 --22.6878 3.69788 -0.1510819 --22.8014 2.73863 -0.4565029 --22.1681 2.19973 -1.03789 --21.6676 1.98279 -1.87826 --20.9072 2.27907 -2.36655 --20.1649 1.88298 -1.77811 --19.8448 2.704 -1.19085 --19.7198 2.22191 -0.2348379 --19.796 1.22464 -0.2212119 --20.2013 0.6173169 -0.8109259 --20.6323 -0.1289691 -1.30149 --21.0184 -0.4701381 -2.13347 --21.9924 -0.8434491 -2.1511 --22.1048 -0.2135791 -2.91264 --22.1701 -1.21145 -3.15308 --21.7026 -2.02938 -2.82892 --21.3088 -1.56701 -3.57607 --21.0296 -2.52795 -3.42786 --20.2286 -2.21479 -2.95583 --19.556 -2.37035 -2.22653 --19.0579 -3.23614 -2.21581 --19.0841 -4.16074 -1.71935 --19.9574 -4.28446 -2.17821 --20.3215 -4.22641 -1.26593 --21.1023 -3.69402 -0.8745999 --21.8834 -3.45944 -0.3635359 --22.5017 -3.22909 0.3661381 --22.4834 -4.09257 0.8167011 --21.5981 -4.01555 0.4854791 --20.9798 -3.4286 1.06973 --20.9027 -3.77549 1.94949 --20.3769 -3.58769 2.72147 --20.1407 -3.17675 3.57266 --21.1653 -3.16098 3.57952 --20.9782 -2.27462 3.1002 --20.3876 -2.62354 2.36148 --19.9176 -2.36989 1.4723 --20.1849 -1.55414 0.9620751 --19.302 -1.78172 0.5458511 --18.925 -1.26163 -0.1415559 --18.9466 -1.24642 -1.08482 --19.0094 -0.2684201 -0.8252439 --19.1629 0.6642769 -1.21335 --18.2093 0.5788819 -1.6319 --17.3051 0.2144849 -1.50494 --17.2411 -0.7821791 -1.29343 --16.7012 -1.1842 -2.05998 --17.5821 -1.80669 -1.90968 --18.4715 -1.3398 -2.19486 --17.7284 -0.9058841 -2.68097 --17.6384 -0.2451301 -3.46826 --16.7318 -0.6941181 -3.14707 --16.4766 0.2915919 -3.27827 --15.7853 0.6780629 -3.82778 --15.8603 1.50818 -3.23086 --15.7459 2.07613 -4.00552 --15.2129 2.88055 -4.0293 --16.0441 3.42008 -3.83803 --16.772 3.26847 -3.2713 --17.0481 3.3034 -2.42299 --17.0217 4.29937 -2.69255 --17.16 5.08265 -3.21892 --16.9064 6.04569 -3.04884 --17.1141 6.52947 -2.23896 --17.9371 6.11381 -2.4441 --18.5396 6.10409 -1.67245 --18.7904 5.13153 -1.43602 --19.742 4.70114 -1.26851 --20.8105 4.81562 -1.37206 --20.279 5.0724 -0.5808339 --20.5637 6.05837 -0.7662359 --21.3611 5.42848 -0.5774549 --21.8805 6.24901 -0.2935159 --21.5627 6.91469 -0.8801249 --21.5593 7.85506 -1.19665 --20.6389 7.51594 -1.36899 --20.6276 8.18319 -2.11801 --19.6517 7.99789 -2.04951 --19.0489 8.05402 -1.33813 --19.2651 8.92334 -0.8753659 --18.5154 8.54232 -0.3257789 --17.6089 8.69884 0.03967842 --17.1403 9.08983 -0.7550079 --16.9603 10.056 -0.5056299 --17.9172 9.68384 -0.5207209 --18.6496 9.94074 -1.12208 --18.4394 10.9176 -0.8580399 --19.0533 10.9664 -1.68637 --19.8101 11.004 -2.38598 --20.7845 10.8062 -2.26362 --21.1219 11.3299 -1.47701 --20.9482 11.3215 -0.4693609 --20.71 10.4062 -0.1801799 --21.0843 10.8111 0.6727461 --21.2236 11.8224 0.7412651 --21.1444 12.7528 1.06079 --20.4231 12.792 1.73867 --20.1444 11.7771 1.78825 --19.2816 11.2987 1.84473 --18.534 11.8831 1.86232 --18.3155 12.4794 1.07325 --18.0288 11.9086 0.2957631 --17.2602 12.0692 -0.3634309 --16.6704 11.4872 -0.9307299 --15.8787 11.5024 -0.3678059 --15.716 11.9939 -1.22029 --16.5647 12.2562 -1.61285 --17.4659 12.5964 -1.28113 --17.1926 13.4919 -1.53298 --18.1052 13.6124 -1.11044 --18.1941 14.6358 -1.13917 --18.2533 15.5634 -1.53841 --18.0922 16.0379 -2.43636 --17.2652 15.9983 -1.85595 --17.0449 16.2069 -0.9480219 --16.7956 15.3813 -0.3285369 --16.9527 15.5094 0.6097181 --17.8223 15.4493 0.1317881 --17.4999 16.3532 0.04342042 --17.6824 17.3436 0.2827471 --16.7608 17.234 0.01388132 --16.0495 16.9437 0.6636041 --15.682 16.9122 1.58698 --16.3201 16.2658 1.97051 --15.4319 16.0201 2.37906 --14.4113 15.856 2.2497 --14.8501 14.9799 1.88701 --14.82 14.3542 1.10958 --15.8331 14.2965 1.22881 --16.2445 14.6604 0.3874261 --15.7014 14.0032 -0.1797499 --15.9365 14.4009 -1.06157 --15.3602 15.0854 -1.49592 --15.1333 14.4738 -2.23859 --15.5205 13.5288 -2.42807 --14.6305 13.1686 -2.75663 --13.9132 13.7144 -2.3277 --13.6816 13.8455 -1.37311 --14.4415 14.2573 -0.8110849 --14.3554 13.5372 -0.1144269 --13.7907 14.1178 0.4429241 --12.7852 14.5064 0.5747421 --12.1441 13.7682 0.3527431 --11.688 14.3426 0.9270441 --10.7748 13.8259 1.12115 --10.5129 13.1552 0.4652031 --9.58483 13.3521 0.6175021 --9.22793 12.95 -0.1874239 --9.7248 12.5731 -0.8963849 --10.2519 13.4463 -1.19285 --10.0482 14.4197 -1.05956 --9.67124 15.204 -1.48424 --8.81303 15.3445 -0.9836239 --8.47364 14.3015 -1.05084 --7.9609 13.7315 -0.4515009 --8.26246 13.3183 -1.25289 --8.69615 12.4512 -1.26109 --9.17819 11.8925 -1.87343 --8.83367 12.6726 -2.30815 --8.9503 11.911 -2.96 --8.6432 11.1689 -2.48141 --8.12989 10.6492 -3.11618 --7.94359 11.6142 -2.99665 --7.97105 12.3899 -3.58071 --6.9739 12.3943 -3.4197 --7.26801 13.2369 -3.23288 --6.97999 13.8113 -4.02231 --6.92008 14.6376 -4.63393 --7.53537 14.9196 -5.27154 --7.96711 14.778 -6.17542 --7.5502 14.2287 -6.80799 --7.33518 13.4245 -7.32246 --7.72637 12.4931 -7.47226 --7.55834 11.5023 -7.51813 --6.70259 11.6085 -7.13863 --6.43262 11.2629 -7.99468 --5.54268 11.481 -7.84943 --4.63687 11.0848 -7.74788 --5.08443 11.2419 -6.86425 --5.66808 10.9941 -6.13455 --6.08059 10.1061 -5.85343 --6.97294 10.5134 -6.19523 --7.94161 10.6136 -6.33629 --8.15188 10.3585 -5.36927 --8.0922 11.3303 -5.52918 --8.99209 11.5979 -5.87808 --9.92692 11.4512 -5.55554 --10.0826 10.6945 -4.95855 --10.7765 11.4011 -4.90368 --11.0336 11.9935 -4.16836 --10.5407 12.0206 -3.33543 --10.6531 12.8807 -2.8566 --11.5429 13.1202 -2.39561 --10.9235 12.5665 -1.85422 --10.5163 11.7391 -1.40956 --9.90543 11.6102 -0.6683979 --10.4072 11.2504 0.1456631 --9.52574 11.5282 0.5662861 --8.64568 11.8081 1.00293 --7.88446 11.1769 1.1497 --8.08232 11.3108 0.1626221 --7.18421 11.8266 0.2426351 --7.24949 11.9894 -0.7513159 --6.23237 11.9241 -0.8250039 --6.07268 12.3117 0.1014301 --6.04794 12.3869 1.09335 --5.96504 12.096 2.09355 --5.07852 11.6742 2.45208 --4.28603 11.9515 1.80456 --3.70267 12.4549 2.32543 --2.9301 12.3577 2.87326 --3.44473 13.1004 3.40741 --3.3138 12.1803 3.79436 --2.49269 12.6558 4.13073 --2.41089 13.5245 3.73553 --2.11934 13.8182 2.85582 --2.52019 13.2114 2.11124 --3.41986 13.4062 1.87485 --3.06329 13.1585 0.8697611 --3.9995 13.127 0.9693941 --4.01159 12.9922 -0.01687538 --4.22385 12.125 -0.4425529 --4.97685 11.5549 -0.1999029 --5.58967 10.8626 0.07890422 --6.32567 10.1799 0.3687851 --5.62422 9.84683 0.9763101 --4.81629 9.39697 0.9220071 --4.34857 8.75712 1.45231 --4.49018 8.25065 2.30054 --5.17739 7.53342 2.19485 --5.09667 6.56227 2.37434 --4.43315 5.95 2.87397 --3.66142 5.39437 2.5951 --3.35113 6.23413 3.18002 --3.78233 6.9097 2.63368 --3.16112 7.67651 2.33602 --3.17266 7.12838 1.49074 --2.25199 6.82092 1.68701 --1.63599 7.4975 2.0485 --1.14057 8.06816 2.66717 --0.943707 8.9445 3.19157 --0.523393 9.35895 3.95422 -0.138476 9.32388 3.25424 --0.05106053 10.2376 3.15861 --0.467388 10.297 2.28472 --1.42604 9.9836 2.64822 --1.39225 9.2125 2.03716 --1.23256 9.89802 1.34827 --0.630075 9.0384 1.38951 --0.197621 9.19934 0.5481991 -0.500995 9.9097 0.3311831 --0.397804 10.3138 0.5555881 --0.675505 9.67825 -0.1702709 --0.16712 9.78222 -1.01045 --0.998259 10.3881 -1.11482 --0.920501 9.51418 -1.60061 --1.94264 9.80166 -1.74254 --1.53469 10.3641 -2.44212 --0.638988 10.7543 -2.23828 -0.201844 10.516 -1.68564 -0.920025 10.2319 -2.38864 -0.455667 10.9991 -2.72112 -0.713161 11.6499 -2.10046 -0.20238 11.9739 -1.28766 -0.104399 12.4805 -2.11503 --0.966686 12.3141 -2.17912 --1.30656 12.0716 -1.26156 --2.21253 11.7856 -1.00077 --2.9335 11.6857 -0.3863279 --3.42189 10.8942 0.01735252 --3.58319 10.5459 0.9069221 --3.7044 9.81174 1.57709 --3.77973 9.82443 2.53497 --2.851 10.0689 2.76759 --3.45555 10.2612 3.58823 --3.80881 10.677 4.36824 --4.72178 10.941 4.78482 --5.47869 11.5377 4.47239 --6.27348 10.9534 4.1462 --6.48655 11.9178 3.99542 --6.68245 11.3893 4.86824 --6.87899 10.4046 5.04178 --5.95811 10.1154 5.02666 --5.40197 9.78294 4.21071 --6.23872 9.27706 4.1427 --6.47454 8.90191 5.08216 --7.33146 9.46059 4.90457 --8.01468 9.64651 4.15873 --8.71902 9.77885 3.50136 --8.55013 10.6763 2.98853 --9.22218 10.0502 2.72389 --9.76576 10.0101 3.54905 --9.97286 9.81187 4.45313 --10.0048 8.82189 4.53382 --9.57051 8.84071 5.37917 --10.1784 8.84496 6.16289 --10.9031 8.34496 5.79803 --10.6291 7.73698 4.9934 --11.1001 8.62124 4.84391 --11.3462 9.59761 4.85225 --12.3006 9.4094 4.76371 --12.368 10.3994 4.47912 --12.9045 11.0341 5.04143 --13.8185 10.9916 4.74271 --14.3137 11.8216 4.57588 --13.684 12.3941 5.18215 --12.8348 12.7914 5.1748 --12.9865 13.0324 4.18706 --12.0703 13.0901 3.76773 --11.2235 13.4361 3.3739 --11.4317 12.8314 2.6787 --10.725 12.2958 3.06964 --9.73611 12.1754 2.92224 --9.01346 12.4598 2.34894 --8.02159 12.4875 2.18395 --8.3084 13.3929 1.79439 --9.24621 13.4545 2.06868 --9.6104 13.817 2.84323 --10.0444 14.681 2.5691 --10.9408 14.9928 2.54087 --11.5731 14.4263 3.05553 --11.9768 13.7978 2.45794 --12.4719 13.2176 1.90662 --13.3796 12.8951 1.70326 --12.6242 12.3082 1.4323 --12.1726 12.4424 0.5583481 --12.3234 11.748 -0.1147959 --12.1942 11.1321 0.6867151 --11.9975 10.255 0.3832561 --12.1673 9.48752 -0.1296799 --13.0863 9.48525 0.3646551 --13.9329 9.72229 0.8873411 --14.1335 10.2679 1.66849 --14.2663 9.93174 2.56269 --13.6847 10.5604 3.00298 --12.7353 10.6814 2.72734 --12.0841 9.79055 2.91298 --11.3355 9.1549 3.10306 --10.7172 8.46235 3.25931 --9.90185 8.15034 2.906 --8.90559 7.98822 2.96448 --7.96794 7.53812 2.77102 --7.30097 7.35341 2.03517 --7.57113 7.58127 1.05269 --6.74494 8.11031 1.31677 --6.57104 8.04585 0.3078651 --6.37077 7.04694 0.5089971 --5.86905 6.21928 0.1842841 --5.30755 6.53274 0.9329481 --4.61563 5.98095 0.4786811 --4.55691 5.57784 1.30031 --5.31523 5.45697 1.92796 --5.09862 4.56844 1.45552 --6.0706 4.85085 1.45983 --6.24581 4.26475 2.12015 --7.14755 4.03691 2.60903 --7.1344 3.34806 3.36118 --6.56381 2.53526 3.52535 --6.21593 2.84172 4.4143 --7.18956 3.08622 4.39527 --6.88186 2.7388 5.30143 --7.73512 2.74521 5.7571 --7.81345 2.09734 6.42784 --7.86885 2.61475 7.29455 --7.21275 3.03907 6.75808 --8.02079 3.65558 6.48527 --8.32819 4.38637 7.05048 --7.75026 5.17371 7.37131 --8.53449 5.56414 6.86893 --9.0705 6.18399 6.29359 --9.18547 6.43868 5.37004 --10.1309 6.48984 4.95711 --10.075 5.90596 4.10914 --10.6033 5.77477 3.25684 --11.4915 5.55095 2.86298 --11.4826 6.45165 2.88619 --12.2541 6.34856 2.26058 --12.2754 7.03374 1.60909 --13.2132 7.28498 1.75081 --13.3072 6.29687 1.88416 --14.0779 6.51246 1.24737 --14.5756 5.70484 1.49237 --15.3501 6.2173 1.3197 --14.995 5.94206 0.4915031 --14.9704 4.97506 0.2475571 --14.8867 4.56571 1.12685 --14.2057 3.94815 1.39534 --13.5976 4.61955 1.78343 --13.2819 5.16665 2.51034 --14.2472 5.23537 2.79707 --14.5276 5.70771 3.56346 --13.9732 6.28778 2.90681 --13.0992 6.37031 3.40807 --13.0369 7.09092 4.03209 --13.9625 7.06634 4.32548 --14.5867 7.38594 3.6435 --14.5972 8.02436 4.4101 --15.0789 7.18608 4.62539 --15.5561 6.9159 5.49025 --15.8378 7.82428 5.45924 --16.6706 8.33384 5.64102 --17.2497 8.3269 6.36882 --17.1027 7.29181 6.47553 --17.7013 6.74951 5.9415 --18.2728 5.92549 6.08992 --19.2061 5.69527 5.75225 --19.6374 6.25774 5.06496 --20.5171 5.82204 5.06144 --20.8216 4.94617 5.40425 --20.5654 3.93048 5.26953 --20.0435 3.55313 4.5116 --19.3611 3.88696 3.78356 --20.2026 3.96436 3.1476 --20.2079 4.27207 2.14607 --19.1955 4.02096 2.10907 --19.7393 3.77259 1.3072 --20.7043 3.54772 1.53513 --21.217 4.03306 2.22869 --22.1289 4.3414 2.40394 --21.9778 4.90727 1.56706 --22.188 5.94708 1.6234 --21.5108 5.90785 0.9634941 --21.4206 6.92175 0.7647941 --21.8534 7.82194 0.6919021 --21.4815 8.44541 1.34703 --22.1249 9.13216 1.70433 --22.7184 8.39449 1.3292 --23.5615 8.67741 1.67106 --23.3613 8.92225 0.7785541 --23.4343 9.47534 0.00611501 --24.1533 10.0249 -0.4309919 --24.6745 9.84649 -1.23417 --24.0765 10.5448 -1.45637 --24.4249 11.1656 -2.01152 --25.2414 10.9792 -1.40261 --25.264 10.9464 -2.40865 --25.9243 11.0546 -3.19418 --25.9954 12.0134 -3.6847 --25.7067 11.7566 -4.58168 --25.1907 12.5228 -4.92813 --25.7522 12.8548 -5.57639 --26.0894 13.7857 -5.23268 --26.5051 14.687 -5.24813 --27.1509 14.7527 -4.50099 --27.7902 14.0271 -4.71781 --28.4303 13.3382 -4.33287 --28.0604 12.425 -4.41673 --28.4449 11.5527 -4.20893 --29.0154 10.7519 -4.1762 --29.7423 10.3848 -3.62626 --29.0771 9.75529 -3.25114 --28.4636 9.27589 -3.7982 --28.4591 9.67989 -4.72995 --27.4414 9.93293 -4.63921 --26.7807 9.54115 -3.95225 --27.0007 10.2308 -3.35417 --26.376 9.9653 -2.60018 --25.4792 9.49245 -2.891 --25.7081 8.57828 -2.63242 --25.4127 7.63445 -2.56097 --24.9193 6.77252 -2.79835 --25.4321 6.87424 -3.62368 --24.9536 6.91598 -4.53667 --25.0949 7.85999 -4.18235 --24.2061 8.35185 -4.33653 --24.0745 8.13365 -3.37724 --23.7429 9.05495 -3.05611 --23.1248 9.58027 -2.4885 --23.0958 9.76121 -3.53426 --23.8494 10.2686 -3.91943 --24.7529 10.0975 -4.39213 --24.8167 9.38584 -5.07081 --24.698 9.24554 -6.08325 --23.6644 9.51425 -5.94048 --23.0072 10.2645 -6.1597 --23.2065 10.8913 -5.3995 --22.9179 11.8494 -5.22899 --22.3579 12.1402 -4.40142 --21.4823 11.9736 -4.64223 --21.6031 11.268 -3.95098 --22.1912 11.307 -3.09905 --21.5912 11.8038 -2.47285 --20.8983 12.4775 -2.24333 --20.7455 13.487 -2.37434 --20.4978 13.1116 -1.3607 --19.4836 13.0475 -1.3608 --20.0161 12.7365 -0.5693919 --20.6945 13.2766 0.1004561 --19.9245 13.9454 0.2604961 --19.7888 14.8249 0.6497151 --20.4989 15.3962 1.09294 --20.0252 15.9409 0.4255741 --20.2931 16.2695 -0.4628899 --20.5303 17.1873 -0.3129499 --21.2132 17.3517 -0.9993989 --21.635 17.9579 -1.60284 --22.345 17.2457 -1.3793 --22.4363 17.5096 -2.34842 --22.9029 18.0194 -3.03752 --22.9782 18.6477 -2.34791 --23.9264 18.5152 -2.34204 --24.8799 18.1686 -2.28032 --25.1159 18.438 -1.36889 --25.6816 17.6265 -1.35756 --26.686 17.5441 -1.22327 --27.6022 17.3711 -1.52778 --28.2623 16.8536 -1.01294 --28.8707 17.6311 -1.08455 --29.0186 17.534 -2.06428 --28.7005 17.1163 -2.93395 --28.341 18.0369 -2.89251 --27.5369 18.6453 -3.01391 --26.7437 19.1256 -3.33699 --27.0187 20.0332 -3.47797 --26.7939 20.9147 -3.97372 --26.0383 20.5862 -4.57897 --26.8681 19.9342 -4.52514 --27.51 20.4963 -5.08118 --27.4115 21.4944 -4.88639 --27.7067 21.5405 -5.86996 --26.8684 21.4281 -6.42509 --26.7811 22.3653 -6.87811 --26.2189 22.7569 -6.2405 --25.3222 22.2456 -6.40021 --25.515 21.9115 -5.45219 --25.9744 21.1455 -5.87659 --26.3903 20.289 -5.39732 --27.0644 19.5572 -5.69625 --27.2876 20.3711 -6.25585 --27.7232 19.5245 -6.62455 --27.7964 18.5628 -6.37271 --28.3471 17.6687 -6.37751 --29.303 17.357 -6.44679 --30.1309 16.9536 -6.76217 --30.1254 17.9 -6.42401 --30.7841 17.9221 -7.20002 --29.9551 17.6989 -7.75358 --29.7982 17.8458 -8.741 --29.5214 18.8017 -9.10434 --29.4123 19.7589 -8.8559 --28.8884 20.1688 -8.06704 --28.736 19.3068 -7.59176 --27.9653 19.0667 -8.15494 --27.3462 18.3032 -8.3921 --27.8302 17.4797 -8.01376 --26.9467 17.3914 -7.60317 --26.2098 16.9931 -8.22539 --26.6651 16.121 -8.0663 --26.7417 15.4237 -7.38068 --26.722 14.55 -6.91892 --27.7368 14.6145 -7.08392 --27.6104 14.1286 -7.8877 --28.1844 14.396 -8.62136 --27.3314 13.9342 -8.99711 --27.5018 14.8597 -9.38141 --28.3075 15.4985 -9.42071 --28.0202 16.4543 -9.64596 --28.023 17.3171 -10.0645 --27.3961 17.3127 -10.8207 --26.8957 16.5055 -10.3832 --26.5178 15.6131 -10.1191 --25.6128 15.376 -10.296 --25.821 15.4928 -11.2368 --25.8867 15.3031 -12.2493 --26.4143 14.5556 -12.7675 --27.1197 13.8768 -12.4997 --26.8881 13.941 -11.5509 --27.6134 14.571 -11.3278 --27.5728 15.5615 -11.3652 --28.1417 15.4807 -12.1459 --27.2196 15.3352 -12.4232 --27.166 16.1074 -13.0977 --27.0001 15.6534 -13.9297 --26.0174 15.5751 -13.7829 --25.4125 16.0702 -13.1154 --24.4883 16.3813 -12.8174 --24.979 16.9082 -13.4551 --25.1786 17.3334 -12.5648 --24.5872 18.1127 -12.3256 --24.7345 17.5935 -11.4842 --25.1916 18.3315 -10.9061 --24.2546 18.1091 -10.6206 --23.9746 17.166 -10.1873 --23.5969 16.2928 -10.4534 --23.2238 15.6065 -9.86313 --23.9213 15.1287 -9.38353 --23.5008 15.4741 -8.52616 --24.0574 16.047 -7.88749 --24.5925 15.2674 -7.78446 --24.467 14.2615 -7.53027 --23.6026 13.9358 -7.11613 --23.9574 13.0749 -7.59301 --23.0137 13.2333 -7.47244 --22.5732 12.6268 -8.17045 --21.908 12.4193 -7.50595 --21.9517 13.3393 -7.13227 --21.0207 13.0488 -7.33482 --21.0543 13.6763 -6.55256 --21.3229 14.1302 -5.70845 --21.2057 15.0624 -5.64534 --20.5999 14.8946 -4.87888 --19.8768 14.3607 -5.32014 --19.4179 14.9342 -6.00833 --18.9145 14.9028 -6.83603 --17.8739 14.9603 -6.99184 --17.0261 14.6461 -7.38891 --16.3469 14.168 -6.74876 --16.8644 13.9676 -5.93651 --17.7358 14.5059 -6.02316 --17.241 15.2846 -5.66113 --17.8274 15.4273 -4.91201 --17.2299 16.1751 -4.79841 --16.5514 16.8753 -5.12565 --15.6381 16.7989 -5.55577 --15.2454 17.646 -5.95612 --15.7655 18.472 -5.62926 --16.0848 17.8171 -4.96095 --16.6722 18.2557 -4.21249 --15.8172 18.8644 -4.02979 --15.7053 19.2636 -3.11082 --16.4607 19.6336 -2.54308 --16.6843 19.2845 -1.61709 --17.5188 19.2527 -1.11674 --17.1611 19.6001 -0.2062059 --16.4673 20.2052 0.01248912 --16.0251 20.6163 -0.8306439 --16.7016 21.3305 -0.5482349 --16.0445 21.7821 0.01715102 --15.9532 22.8407 -0.1033119 --15.3756 23.1929 -0.8594319 --15.7502 23.4709 -1.73059 --14.9266 23.5486 -2.25361 --15.1675 23.8165 -3.14253 --15.3971 24.3701 -3.8841 --16.3762 24.4987 -3.86461 --16.9741 24.3455 -3.03916 --17.0251 23.4715 -2.47501 --17.3392 22.5895 -2.69669 --16.5629 22.1377 -3.12897 --16.5372 21.213 -3.1029 --16.3689 20.98 -4.02925 --16.7142 20.6673 -4.92059 --16.2397 19.7774 -5.27578 --16.9679 20.0878 -5.97046 --17.5778 20.8576 -5.74077 --17.8773 19.9557 -5.3316 --18.2429 20.572 -4.61467 --19.0427 20.3617 -5.08644 --19.1487 19.5967 -5.78266 --19.8825 19.5655 -5.11237 --20.4516 18.9214 -4.46369 --21.0092 18.6274 -3.707 --20.7478 19.6016 -3.81768 --21.3001 20.43 -3.74292 --21.5369 21.2207 -4.33797 --21.2397 22.0744 -3.89597 --21.3034 22.1076 -2.89636 --20.6904 21.391 -2.55568 --20.9453 21.1632 -1.68586 --21.403 20.4856 -1.13059 --20.7789 20.9561 -0.5809199 --20.0703 21.0208 0.1376621 --20.1104 21.8118 0.6710611 --20.7752 22.5307 0.7884611 --20.6672 22.9081 -0.1135699 --19.668 22.9947 -0.2081149 --19.7263 23.8208 -0.7670739 --18.8289 23.6473 -1.25644 --18.5119 22.7366 -1.20805 --18.9605 21.9497 -1.55782 --19.6015 22.6866 -1.28634 --18.9762 22.7279 -2.07258 --19.2685 23.5262 -2.60457 --18.298 23.4183 -2.70705 --17.9895 24.3855 -2.41585 --17.8728 24.577 -1.42913 --18.6013 24.9962 -1.8703 --18.0303 25.6088 -2.42637 --18.2884 26.1646 -1.66489 --18.4338 26.4762 -0.7297489 --18.7918 27.1729 -0.1346639 --19.6605 26.7341 -0.1613239 --19.3557 27.0029 0.7704401 --20.21 26.6679 1.18685 --21.15 26.7924 1.48169 --21.7172 27.1796 0.6030421 --22.1836 26.9732 -0.3066439 --22.8798 26.3874 -0.5714109 --22.7718 26.815 -1.49837 --23.026 26.4193 -2.43276 --22.6467 25.5935 -2.85048 --23.1096 25.418 -3.68799 --22.2579 25.5119 -4.32435 --21.8873 24.6409 -4.08363 --21.0859 25.0882 -4.4901 --20.6818 24.5285 -5.23986 --20.9811 23.8705 -4.53334 --21.4337 23.0242 -4.46447 --22.2123 22.4424 -4.48595 --22.8078 22.4809 -5.31991 --23.7937 22.3538 -5.47556 --23.722 23.1272 -4.85262 --23.6754 22.8204 -3.92155 --24.6307 22.6493 -4.1455 --24.4383 21.6185 -4.31251 --23.7152 21.6416 -3.68451 --23.2661 20.8856 -4.11076 --22.7141 20.4717 -4.86332 --22.4343 19.9218 -5.62493 --22.9901 19.1984 -5.9858 --23.9717 19.2426 -5.53193 --24.9155 19.2299 -5.23056 --25.0507 18.7312 -6.11858 --24.579 18.4944 -6.97285 --24.5991 18.0484 -7.83112 --23.8067 17.5434 -8.10522 --23.5594 17.1253 -8.98751 --22.5861 17.1319 -8.91695 --21.8963 17.0707 -9.6787 --21.7816 16.3642 -8.97446 --20.9871 16.1606 -8.38401 --21.1544 16.0508 -7.41429 --21.6133 16.7622 -6.8895 --22.0408 16.3322 -6.05358 --22.048 16.0566 -5.13699 --21.746 16.6427 -4.39104 --21.6479 17.3945 -4.97827 --20.7598 17.4419 -5.3567 --19.7022 17.6338 -5.4915 --19.358 16.7486 -5.20092 --19.0001 17.3722 -4.4464 --18.5239 16.9971 -3.64144 --18.3371 17.6953 -2.96645 --18.1286 18.6031 -2.54258 --17.6263 18.2391 -3.30854 --16.7564 17.992 -2.97297 --16.6435 17.1642 -3.34224 --15.7174 17.1278 -3.65505 --15.0994 17.0504 -2.98033 --14.7041 16.1081 -2.85636 --14.3438 16.1251 -3.78035 --14.1199 15.2154 -3.69995 --13.7826 15.7556 -4.51511 --13.9673 15.1114 -5.24786 --14.6043 14.9931 -5.94873 --14.2982 14.5801 -6.84063 --13.2676 14.6621 -6.79775 --12.9044 15.3863 -6.10743 --12.8412 15.7652 -7.03848 --13.8179 15.8575 -7.30687 --14.6254 15.3766 -7.49181 --14.0515 15.7506 -8.26604 --13.1913 15.2587 -7.93743 --13.0704 14.2871 -7.83145 --13.4616 13.5505 -7.36322 --14.4263 13.5978 -7.71193 --15.2117 12.9592 -7.53646 --15.2397 13.0261 -8.54244 --16.0182 13.1075 -9.2427 --16.1446 14.0665 -9.00893 --16.9791 14.482 -9.39612 --16.8226 15.5094 -9.50108 --15.8756 15.0612 -9.68899 --15.0489 15.0452 -9.02557 --15.5042 15.9341 -8.90758 --16.3871 16.5033 -8.84363 --16.003 17.2138 -8.26638 --15.6224 16.3936 -7.92268 --16.1133 16.8876 -7.26187 --15.2117 16.7569 -6.78134 --15.1319 17.7027 -7.0536 --14.6081 18.31 -7.79186 --14.4354 18.6365 -8.72435 --14.8117 19.4652 -9.13069 --14.2434 19.6458 -9.92601 --14.3219 20.6575 -9.82757 --14.0835 20.7993 -8.88724 --13.9327 21.5816 -8.16964 --14.5541 22.3568 -8.0369 --14.658 21.8784 -7.19371 --13.8476 22.4947 -7.28846 --13.1293 22.6959 -7.94246 --13.057 22.746 -8.9288 --12.5474 22.2119 -9.64743 --11.9517 21.4312 -9.92479 --11.8358 20.5409 -10.4811 --11.1943 20.6219 -9.7497 --11.0011 19.6637 -9.68605 --10.8798 19.5162 -8.71657 --9.95039 19.7176 -9.1393 --10.2293 18.7665 -8.912 --10.8756 18.312 -8.23975 --10.1583 18.5922 -7.59052 --10.8745 19.199 -7.70335 --11.6061 19.0235 -7.09627 --12.6042 18.9966 -7.07194 --13.2068 19.7329 -6.76609 --13.8319 19.9756 -6.00731 --13.0161 20.5032 -5.88355 --12.162 20.6556 -5.40298 --11.762 20.438 -4.4417 --12.5221 19.7955 -4.65782 --11.8664 18.9985 -4.80993 --12.6669 18.587 -4.27297 --12.8672 17.6193 -4.18833 --12.5956 17.1176 -5.08277 --12.203 16.6142 -5.82685 --11.8658 16.0125 -6.47415 --11.5753 15.1731 -6.92645 --11.7731 14.2235 -6.50198 --10.8166 14.0033 -6.66395 --11.0973 13.0481 -6.76632 --11.5704 12.8444 -7.62293 --12.4405 12.5718 -8.08819 --13.0043 11.7803 -8.32459 --12.2821 11.4216 -7.85587 --11.7687 10.8394 -7.25353 --12.0237 9.86803 -7.11939 --11.4147 9.07688 -7.09721 --10.7838 8.42444 -7.56457 --10.4151 9.33783 -7.81213 --10.2323 9.55048 -8.70194 --10.2827 9.72087 -9.69325 --10.1096 9.08885 -10.4169 --10.4883 8.16055 -10.8184 --11.1526 8.5869 -11.4837 --11.4697 9.437 -11.9319 --10.5088 9.46296 -12.2137 --10.3767 10.3581 -12.4279 --10.717 10.4237 -11.4621 --9.92347 9.8409 -11.3087 --9.55691 10.5271 -10.6603 --9.10839 10.4323 -11.559 --9.51822 11.2099 -12.0698 --9.14634 12.0132 -12.5399 --9.54934 12.9027 -12.539 --9.66126 13.6804 -11.8361 --10.0432 13.9192 -10.9677 --9.175 14.2558 -10.7876 --8.59333 13.7615 -11.4713 --8.20658 14.0092 -12.3009 --8.06564 14.7557 -12.9799 --7.11117 14.9362 -13.1302 --7.11484 15.1668 -14.1267 --6.97525 16.1983 -14.0874 --7.0651 16.5686 -13.1717 --6.69712 17.3523 -13.6148 --7.50508 17.6674 -14.117 --7.74932 18.1271 -14.976 --8.35414 18.2974 -14.1387 --8.25858 19.2334 -14.2412 --9.07242 19.338 -14.8047 --8.58525 19.2552 -15.6633 --8.26629 18.9956 -16.4798 --8.567 18.3031 -15.8747 --8.80339 17.4338 -15.4985 --9.75833 17.4694 -15.3841 --9.36128 18.038 -14.7831 --9.38421 17.9274 -13.7571 --10.2788 18.3979 -13.5484 --10.4713 19.1978 -14.0332 --10.7922 19.6961 -13.2183 --10.4323 20.5686 -12.7662 --9.98238 21.4728 -12.8408 --10.8427 21.9415 -12.5412 --10.7064 22.2364 -11.5734 --11.1324 22.7032 -10.7209 --11.2107 22.602 -9.79223 --10.8261 22.5659 -8.82583 --10.7865 23.448 -9.26818 --10.9828 24.2413 -8.69829 --10.7695 24.751 -9.53057 --11.1639 25.5935 -9.87693 --12.0084 25.2794 -9.45695 --12.4676 26.1394 -9.47454 --11.9253 26.9795 -9.62965 --11.524 26.9126 -8.74322 --11.8592 27.2985 -7.83905 --11.9028 26.5259 -7.26944 --12.252 27.0343 -6.54635 --11.925 26.5711 -5.6401 --12.2735 25.8123 -5.0876 --13.333 25.7755 -5.06785 --13.7338 26.607 -5.48742 --14.7046 26.7939 -5.22075 --14.3441 27.562 -5.71306 --13.6199 28.1988 -6.09958 --13.3856 28.7841 -6.96125 --14.2819 29.133 -6.5449 --14.7881 29.652 -5.83118 --15.6172 30.0653 -6.4153 --16.2761 29.4167 -6.45287 --16.6825 28.7275 -7.11752 --16.2966 29.3663 -7.89281 --16.2354 30.347 -8.08221 --16.162 31.3416 -7.96722 --16.496 32.2945 -7.83379 --17.3264 32.7154 -7.49502 --17.376 33.5557 -6.93961 --16.8113 33.4386 -6.131 --16.6423 34.0835 -5.41732 --17.1078 33.7308 -4.60787 --17.2842 33.2345 -3.73526 --17.389 32.3048 -3.30006 --17.2397 31.3122 -3.03504 --17.2413 30.3907 -2.64011 --16.5926 30.5672 -1.84714 --17.1896 29.7607 -1.8157 --18.014 29.7614 -1.14562 --18.681 29.249 -0.6840529 --18.3695 28.7979 0.06311092 --17.6367 28.4164 0.6559691 --16.908 27.8562 0.5002321 --16.2512 27.201 0.1392141 --16.6372 26.3252 -0.06420178 --16.652 25.368 0.02058682 --17.3823 24.8261 0.5051641 --17.3577 25.0698 1.51502 --16.5441 25.6434 1.39153 --17.3571 26.1716 1.52671 --17.7062 26.103 2.48346 --18.6487 25.8187 2.64534 --18.5521 26.5653 3.28568 --18.7105 27.0455 4.20171 --19.0466 27.1345 5.1465 --18.4477 26.9204 5.96335 --19.0226 26.1491 6.07822 --18.1793 25.661 5.89391 --17.7542 24.9286 5.33894 --18.1528 24.0702 4.99122 --18.3483 23.5145 5.7748 --18.8345 23.3947 4.87795 --19.5237 23.134 4.29889 --20.4269 23.453 4.74846 --20.1462 22.6607 5.24028 --19.4624 21.9384 5.24599 --19.0344 21.2359 4.61044 --20.0438 21.0211 4.55822 --20.1742 20.0749 4.17666 --20.4124 19.7532 3.18938 --20.3512 19.3684 2.24161 --21.3262 18.9831 2.05396 --21.6577 18.307 2.78903 --21.5432 17.4068 2.42242 --21.2031 16.6442 1.86931 --20.5953 16.1426 2.47472 --20.1128 15.504 3.10221 --20.3034 15.197 2.206 --21.0868 14.629 1.82692 --21.0724 13.6413 2.02561 --21.9421 13.0763 1.78881 --22.791 12.7266 1.42813 --22.5489 13.4204 0.6979761 --22.5506 14.2707 0.1187931 --22.1294 13.7172 -0.6949629 --22.9919 13.9234 -1.19015 --22.9355 13.2158 -1.9869 --22.2086 13.4632 -2.70325 --21.7641 12.721 -3.21914 --20.7798 12.7595 -3.30013 --20.0417 12.1756 -3.70404 --19.1801 12.2047 -4.16001 --19.3397 12.8714 -4.84206 --19.2116 13.3472 -3.97008 --19.5105 13.0772 -3.08555 --19.0718 13.7675 -2.67992 --18.5089 14.467 -2.08895 --17.8783 13.8531 -2.57886 --18.3345 14.5452 -3.08744 --18.7348 15.4627 -3.22581 --18.7648 15.7871 -4.15544 --19.5971 15.9225 -3.62038 --20.2367 15.5349 -2.94867 --21.0424 15.6029 -3.49934 --21.6068 14.8602 -3.78628 --22.3289 15.1333 -4.47335 --23.1823 15.2826 -4.89144 --23.6153 14.5158 -4.47327 --23.8314 14.3534 -3.56048 --23.9375 15.2556 -3.09432 --24.3321 15.1762 -2.18371 --24.3672 14.3527 -1.58666 --25.3829 14.2879 -1.74964 --25.4659 14.88 -0.8951009 --26.4019 15.0424 -1.02345 --26.9868 14.4858 -0.4004199 --26.8645 15.1911 0.2493721 --26.3235 16.1093 0.05859842 --25.8803 16.7781 0.6393861 --24.9563 16.7921 0.1940701 --25.0996 16.336 -0.6739559 --24.3119 15.9334 -1.15031 --23.8007 15.2316 -0.6280479 --23.9731 15.457 0.4097101 --24.8664 15.4716 0.8796181 --24.4259 15.0229 1.67603 --23.4921 15.1887 1.42569 --23.7305 14.4782 0.7219131 --23.3165 13.9112 1.47808 --23.0257 13.2915 2.2304 --23.7803 12.689 2.12232 --24.4119 12.0659 2.53427 --24.4182 12.6209 3.34293 --24.929 13.3691 3.80775 --25.4502 12.7318 4.36143 --25.8512 12.1795 3.5829 --25.4181 11.5205 4.12192 --25.9251 10.6986 4.04321 --25.5372 9.77124 4.11009 --26.2067 9.07982 4.1542 --25.8902 8.35485 4.69446 --25.8821 8.37883 5.70717 --25.8623 7.53283 6.09484 --25.4361 6.86883 6.53671 --24.6974 6.41979 7.02067 --23.87 6.99475 6.91026 --24.5923 7.64689 6.62208 --24.1649 8.35164 6.10246 --24.6057 9.09881 6.64412 --24.9698 8.72895 7.5009 --25.7037 8.18324 7.88089 --26.3136 7.59813 7.27027 --26.3394 7.03508 8.04692 --26.3881 6.98992 9.08835 --25.9138 6.30267 9.57715 --25.8675 6.16545 10.5967 --26.8063 6.26047 11.0099 --26.5931 6.72695 11.8751 --26.2179 6.90624 12.7936 --25.2465 7.30104 13.047 --25.3453 8.31153 13.0389 --24.4232 7.91459 13.0303 --23.5092 7.90253 13.441 --22.9538 7.01711 13.4548 --22.5872 7.50755 12.74 --22.2369 6.61735 12.8477 --22.0503 6.73493 11.8281 --21.1634 6.85252 12.1497 --20.7454 7.38964 12.8935 --21.2391 7.74877 13.665 --20.7657 8.39357 14.2468 --20.1741 9.05597 13.7239 --19.2922 8.84092 13.4098 --18.2613 8.61245 13.4545 --17.3313 8.55324 13.5982 --16.6771 8.09225 14.1734 --16.8749 7.73011 15.0722 --16.5035 8.40804 15.7052 --17.056 7.85696 16.3241 --17.6971 7.29309 15.6975 --17.7149 6.31407 16.0366 --16.7403 6.38689 15.7 --15.9321 6.98927 15.6124 --16.0061 7.2112 16.6014 --15.8823 8.17923 16.8116 --15.4259 8.92929 17.3787 --14.8292 8.17444 17.7032 --14.2908 8.94322 17.4345 --14.6731 9.68795 18.0248 --15.5522 10.0785 17.6068 --15.6188 10.6859 18.4356 --16.6778 10.5182 18.1317 --17.4791 10.0612 17.7321 --17.8909 10.0258 16.8248 --17.921 8.96961 16.7033 --18.555 8.81343 17.3734 --19.2952 8.17621 17.3342 --19.7527 8.20408 16.4947 --20.3705 7.45076 16.1219 --21.2392 7.09885 15.9159 --21.7878 6.86279 15.1013 --21.2726 6.03072 14.8494 --20.919 5.1416 14.4963 --20.5809 4.2791 14.1208 --19.6913 4.65939 13.9702 --19.9715 5.59716 13.9264 --19.9639 6.43817 13.368 --19.2771 6.75974 13.9822 --18.9022 7.18996 13.1897 --19.5178 6.95863 12.452 --19.8683 7.78218 11.9343 --19.8172 8.63613 11.4069 --20.1734 9.56271 11.4286 --19.5866 10.4284 11.5639 --18.8471 10.3077 10.854 --19.6518 10.3152 10.3084 --20.2489 11.0885 9.95757 --19.8349 11.1896 9.1057 --19.648 11.9471 8.55018 --18.784 11.6062 8.86745 --18.3999 12.4673 8.40962 --18.4576 13.2196 8.9674 --17.482 13.2973 9.19661 --17.3843 12.3167 9.09221 --17.0247 12.2152 8.23006 --16.5096 12.9649 8.39694 --16.0057 13.0896 9.24742 --15.47 13.386 8.45323 --14.5254 13.2475 8.13213 --14.5648 12.2852 7.97273 --14.248 11.3098 8.32196 --14.136 10.5755 9.05648 --13.5737 10.3379 8.28268 --13.4713 10.507 7.31698 --12.5268 11.0092 7.42202 --12.8953 11.1881 6.46385 --13.8749 11.0223 6.13864 --14.156 11.5154 6.87835 --15.087 11.7657 6.87356 --16.0105 11.4358 6.56211 --16.887 11.166 6.2063 --17.7985 11.4229 5.8213 --18.6831 11.1254 5.36312 --18.7592 12.0543 5.62443 --19.2681 12.7588 5.11956 --19.8938 11.9562 5.15318 --19.9173 12.4085 6.09814 --20.735 11.8197 6.16165 --20.9851 11.0521 5.59494 --21.605 11.6003 6.01024 --22.1693 11.3284 6.80579 --21.9585 12.1164 7.27986 --21.8408 12.9514 7.87306 --21.4309 13.6178 8.55351 --22.2791 14.1324 8.41686 --22.9403 14.095 7.61227 --23.0426 13.4 6.9402 --23.8973 13.3357 7.43953 --23.6753 13.1139 8.36916 --24.5475 13.5451 8.42096 --24.2539 14.3101 8.93708 --23.5541 14.6482 8.27878 --23.4007 15.3319 7.53493 --23.3954 15.6122 8.4527 --22.739 15.3695 9.11169 --21.8491 15.5739 8.60609 --22.0091 15.272 7.63976 --21.585 16.0737 7.29546 --20.7148 16.5114 7.05836 --19.9115 16.9825 7.38713 --19.2248 17.1676 8.00019 --18.6335 16.3387 8.01078 --19.5078 16.3171 8.63004 --19.0149 16.9145 9.22063 --18.1045 17.3256 9.20764 --17.7458 17.2574 8.23598 --17.3275 16.4184 7.80737 --17.9038 16.6816 7.02377 --16.8832 16.6372 6.79607 --16.2193 16.0582 7.018 --15.6133 15.7253 7.79258 --15.6229 15.1301 8.6298 --15.0039 14.7373 9.31337 --14.0242 14.3474 9.4133 --13.6635 13.4528 9.65456 --12.9142 14.0499 9.30707 --12.6699 14.0819 10.3109 --13.1564 14.062 11.1319 --13.45 14.0443 12.1246 --12.9146 14.81 12.5125 --12.7008 13.8253 12.7662 --12.1545 14.2783 13.5278 --11.2733 14.1245 13.2201 --10.5426 14.812 13.0884 --11.1482 15.245 13.7764 --11.0641 15.9947 14.4443 --10.4815 16.8227 14.3761 --9.98879 17.0668 13.5391 --9.05994 17.3959 13.6144 --8.19289 17.4039 13.181 --7.65756 17.2894 12.3649 --7.16487 16.5748 12.9074 --6.98068 15.603 13.1991 --7.67139 15.5444 13.8697 --8.28259 16.1781 13.3888 --8.33855 15.4953 12.7495 --8.89007 14.7235 13.0004 --9.60722 14.8262 13.6606 --8.77268 14.8758 14.1918 --8.03127 14.1437 14.0803 --7.20942 13.5155 13.8929 --6.2819 13.9041 13.8605 --6.83052 14.1727 14.6781 --5.92842 14.657 14.598 --5.77372 13.6693 14.7089 --5.75952 12.8729 14.0547 --5.58857 12.9468 13.0404 --5.10265 12.0979 12.9197 --5.88789 11.8027 12.3595 --5.92109 12.7766 12.1148 --6.57022 13.4384 12.2217 --6.97838 14.2192 11.7786 --7.95746 14.2366 11.6211 --8.626 14.7911 11.1321 --8.96517 15.0432 10.2731 --8.57396 15.5019 9.44626 --7.96744 16.0681 8.78005 --8.20721 17.0102 9.00009 --7.42603 17.6826 8.87803 --6.74053 16.9046 8.90941 --6.14497 16.2155 9.00159 --6.85879 16.1485 9.75054 --7.55159 16.822 10.003 --8.31841 16.9826 10.6294 --9.12416 16.3801 10.2891 --10.0102 16.0504 10.0585 --9.93582 15.6495 10.968 --10.8388 15.4002 11.4115 --11.4594 16.1693 11.5813 --11.2778 15.574 12.3644 --12.1019 16.1606 12.5878 --12.6767 16.6684 11.9149 --13.5802 16.9518 11.4864 --14.0161 16.8458 10.6048 --13.6635 16.4451 9.75534 --14.077 16.6095 8.9101 --14.7558 16.9514 9.4831 --15.0319 17.4544 10.28 --15.9202 17.087 10.5756 --15.4991 16.2211 10.3806 --15.2889 16.548 11.2732 --15.194 16.4643 12.3621 --15.6553 15.9154 13.0805 --15.2944 16.243 13.8931 --14.4844 16.2308 13.39 --14.0201 16.9981 14.0054 --13.6357 17.8312 13.7303 --12.9477 18.5798 13.6604 --13.8287 18.8912 14.1531 --14.3676 18.6614 14.9535 --13.7809 18.5327 15.7608 --13.5159 19.4704 15.5759 --13.4606 20.2137 16.1982 --13.4157 21.049 16.6962 --12.4002 20.8872 16.5409 --12.0948 20.7366 15.4981 --12.7483 20.8652 14.7679 --12.2798 20.1365 14.344 --12.2062 19.2142 14.7405 --11.3736 19.4835 15.1831 --10.4242 19.4571 15.5601 --11.0002 18.6398 15.4126 --10.4488 18.0537 15.8184 --10.1777 17.0319 15.7714 --10.6429 16.1411 15.8823 --10.5366 15.1479 15.9519 --10.8437 14.6083 16.7023 --9.90431 14.7944 17.078 --9.85153 13.9508 17.5722 --9.56544 12.9779 17.7015 --10.3984 12.7535 17.2475 --10.4571 13.4697 16.5361 --9.52556 13.4076 16.6856 --9.26236 14.2916 16.1494 --9.37813 15.2612 16.3747 --8.38562 15.4282 16.711 --8.48184 15.6856 17.6591 --9.04587 16.5333 17.8117 --8.72542 17.4947 17.5006 --9.13356 17.9715 16.7171 --8.40605 18.5871 16.3313 --7.66544 18.4304 15.6566 --7.12335 18.4769 16.4799 --6.29528 18.4865 15.9011 --5.39158 18.6192 16.3981 --4.58314 18.2498 15.9979 --3.71007 17.7153 15.9009 --3.46745 17.7477 14.898 --4.28655 17.0509 14.6446 --3.99694 16.1035 14.5151 --4.31983 15.8808 15.4774 --3.49901 15.3249 15.5872 --2.95548 14.7453 16.1881 --2.85346 13.981 15.5902 --2.98141 13.2149 15.0277 --2.8911 12.3545 14.5577 --3.44351 13.0338 13.9651 --2.9431 13.0783 13.076 --2.55568 13.7207 12.4316 --3.45137 14.125 12.6074 --4.22841 14.3716 13.1864 --5.1837 14.7054 13.0432 --5.2242 15.7048 12.9008 --5.84823 15.3585 12.2435 --6.24252 15.3934 11.2625 --5.23606 15.3105 11.2369 --4.94791 16.1198 11.7909 --4.06508 15.9562 11.3657 --3.29488 16.0104 10.73 --2.79668 16.7057 11.3276 --1.90597 16.2979 11.074 --1.17183 16.9147 11.2801 --0.528299 16.6144 10.6304 -0.386695 16.8347 10.5259 -1.24483 16.7373 11.1079 -0.807577 15.824 11.2417 -1.00112 15.0994 10.5336 -0.827965 14.2257 10.9292 -1.04077 14.2725 11.8933 -0.82922 14.3329 12.8334 -0.265262 13.7264 13.4105 --0.145116 14.4998 13.8882 -0.234522 15.2684 13.3393 -0.838451 15.9264 12.999 -1.61164 16.198 13.5262 -2.58748 16.3696 13.8902 -2.53291 16.9452 14.7124 -1.91124 16.1443 14.8088 -2.48864 15.6801 15.4017 -2.85488 15.0965 16.1046 -3.19848 15.4336 16.9883 -3.37567 15.7194 17.9336 -3.68576 15.6472 18.9038 -3.73133 16.4755 19.5336 -2.97927 16.6775 18.8444 -2.3151 16.0307 19.2025 -1.42982 15.4404 18.99 -0.686562 14.7958 19.1064 -0.185258 14.1025 18.4768 --0.02865873 13.7737 17.5867 -0.549877 13.2132 17.0376 -0.35408 12.9203 16.0825 -1.23961 12.8438 16.4375 -2.22795 12.5609 16.3193 -2.8305 12.452 15.6038 -3.05241 12.2764 14.6807 -2.75195 12.9566 14.021 -3.66967 13.1078 13.6776 -4.23362 12.4455 13.3202 -5.19663 12.2563 13.0821 -4.69977 11.3401 13.1315 -5.5189 10.774 13.3025 -6.45332 10.6969 12.8958 -7.04664 10.6529 13.6536 -6.65558 11.5059 14.0257 -6.69998 12.1839 13.3709 -6.71824 13.0966 13.7324 -7.05121 14.088 13.582 -7.86337 13.6618 13.9823 -7.6852 14.3234 14.7008 -8.23142 14.8411 14.1352 -7.68516 15.5874 14.4377 -6.99505 15.7995 15.1716 -6.60596 16.4343 15.7577 -7.01105 17.0814 16.3325 -6.27136 17.6878 16.7447 -6.20135 17.8799 15.7463 -5.31077 17.447 15.6763 -4.94453 17.4954 14.7145 -4.97427 18.378 15.2491 -4.73987 18.0723 16.1844 -3.77326 17.6909 16.0876 -2.7631 17.3667 15.8566 -3.26067 17.0428 16.7168 -2.41126 16.4844 16.4742 -1.43 16.5098 16.6895 -0.726538 16.1897 17.3227 -0.338607 16.2627 16.3811 --0.340568 16.7954 15.871 --0.07459183 17.5418 16.475 --0.59678 17.3296 17.299 --0.50361 17.9657 18.0093 --1.11964 17.7331 18.7979 --1.84589 17.0462 18.8015 --2.50168 17.2567 19.4967 --3.23881 16.8432 19.0173 --3.77709 16.0569 18.7703 --3.64453 16.1423 17.7281 --3.90108 16.2293 16.7888 --4.85859 16.2068 16.6398 --4.32727 15.3166 16.5973 --4.54688 15.2931 17.6156 --4.30761 14.4432 17.0892 --4.89151 13.9237 16.3779 --4.85531 13.0398 16.8944 --4.59658 12.1778 17.3483 --4.57442 11.3451 17.9624 --4.35027 11.9708 18.7095 --4.86944 12.6624 19.2308 --5.70099 13.0731 19.5085 --5.59782 12.6426 20.3648 --4.60837 12.6136 20.685 --3.85789 12.7689 21.3312 --2.93737 12.6661 21.1216 --2.81741 13.2868 20.3856 --3.10154 14.1308 20.8294 --3.87658 14.3672 20.1952 --3.18628 15.0192 20.0057 --3.05176 15.8248 19.4832 --2.35921 15.6286 18.9129 --2.13738 15.2307 18.0519 --1.20429 14.9701 18.3182 --1.55634 14.7108 19.1984 --0.805312 14.3251 19.6892 --1.14344 15.2517 20.0725 --0.119287 15.5422 19.9042 --0.36607 16.3919 19.4238 -0.218311 17.2113 19.5215 -0.346517 17.6086 18.5822 -0.762423 18.5307 18.3856 -1.00527 18.7467 19.3784 -1.69244 18.815 20.0727 -1.61412 18.082 20.702 -1.07048 17.2656 20.4804 -0.824042 16.9264 21.4494 -0.08582117 16.3527 21.3355 --0.688262 16.5827 20.7341 --0.780652 17.3891 20.1664 --1.4795 17.9024 20.6411 --2.27095 18.1667 20.0808 --2.72659 17.764 20.9109 --3.66608 17.4102 21.1872 --3.80204 16.4528 20.8775 --4.66378 16.0681 20.5835 --4.8135 17.0747 20.4427 --5.13339 16.9208 21.3677 --6.11843 16.622 21.2725 --6.94947 16.0064 21.2379 --7.51166 16.0827 22.0957 --8.35459 16.5282 21.7075 --8.50244 15.5476 21.901 --8.46655 14.6384 21.4204 --7.86248 15.1912 20.8568 --7.90182 15.0691 19.8211 --8.37037 14.2333 19.4651 --8.29704 13.4427 20.0026 --7.43897 13.4211 20.6086 --8.23265 13.6654 21.1192 --7.31675 13.7893 21.5215 --7.25485 14.7595 21.762 --6.79238 14.1726 22.5461 --7.23238 14.0376 23.4248 --7.24069 14.8912 23.9504 --6.54127 14.5151 24.5538 --5.88258 15.2255 24.7757 --4.94877 15.2131 24.4247 --5.37139 15.5978 23.5777 --5.37452 16.1942 24.3427 --5.51242 16.6954 25.2287 --5.04655 17.2975 24.5667 --5.14016 18.1517 24.2719 --5.81691 18.6789 23.7819 --6.73069 19.2107 24.0555 --7.41599 19.26 24.7329 --7.87022 19.1669 25.5419 --8.27463 19.823 26.1166 --8.30631 20.8405 26.111 --9.31349 20.6029 25.8025 --10.2905 20.4134 25.7888 --10.2037 19.8813 24.9397 --9.87627 18.8644 24.9883 --9.67419 18.7185 24.0558 --10.2779 17.914 23.837 --9.86146 17.5132 23.019 --10.0957 16.5405 23.0317 --10.7712 15.8827 23.2531 --10.1436 15.5172 23.9845 --10.2324 14.558 24.1485 --9.58726 14.5299 24.9397 --9.37194 14.6121 25.9783 --9.62032 14.2507 26.8247 --10.3952 13.6669 27.1437 --10.6463 12.8703 27.763 --11.2845 12.2594 27.375 --10.5351 11.6409 27.4895 --10.017 10.9889 26.9377 --10.5975 10.529 27.5968 --11.2831 9.7591 27.4231 --10.7157 9.15571 26.942 --10.0847 8.38955 27.0552 --9.73312 8.43277 26.0879 --10.2059 8.28163 25.2074 --10.6597 7.67908 25.7945 --9.9097 7.13266 26.0911 --10.0345 6.9663 27.0687 --9.03112 6.88526 27.2665 --8.82971 7.3601 26.4405 --8.12374 7.46326 25.7888 --8.89146 7.64394 25.1789 --9.12288 8.2631 24.4524 --8.59247 9.01232 24.0349 --7.65658 8.77161 24.1142 --7.4076 7.89838 23.7247 --8.27022 7.81844 23.2961 --8.48534 7.44544 24.1641 --9.35665 7.68762 23.5703 --10.1939 7.11957 23.7268 --9.50617 6.48509 23.8388 --10.1321 5.93411 24.422 --10.9152 5.5422 23.812 --11.3791 5.83057 24.6021 --11.5888 4.86936 24.4333 --11.3926 4.98143 25.4291 --11.1943 4.63544 26.3195 --11.5296 4.94264 27.2556 --10.6465 4.71999 27.7355 --9.64945 4.72284 27.8732 --9.58739 5.74216 27.6969 --9.15043 6.22818 28.4825 --9.91748 6.74908 28.3092 --9.25988 7.33337 28.6391 --8.45 7.50959 29.2634 --8.26468 7.00572 30.022 --8.58737 6.11286 29.7657 --7.90935 5.37691 29.6679 --7.92276 4.45147 29.3318 --8.41873 5.1656 28.7733 --8.27556 5.52567 27.8693 --7.35548 5.90001 28.1699 --6.56946 6.50166 28.1443 --6.30949 6.86527 27.2232 --5.73822 7.62067 26.8621 --6.10448 8.53336 26.8803 --6.49722 9.3667 27.1806 --7.40786 9.72059 26.9601 --7.45054 8.81854 27.3262 --7.94959 9.5869 27.7374 --8.47139 10.365 27.7188 --8.90216 10.6466 26.8866 --9.2844 10.3427 26.0088 --8.78512 10.6915 25.252 --9.11905 11.4863 25.8133 --8.46718 12.1411 26.1402 --7.88891 12.2382 26.9795 --7.89813 12.7563 27.8246 --7.68476 12.3442 28.7757 --8.14219 12.9307 29.4364 --7.44078 13.4392 28.9339 --6.47496 13.2427 28.7759 --6.36921 14.1393 28.2426 --6.95787 14.8775 28.5838 --6.82252 15.0671 27.5782 --7.21055 14.3391 27.1057 --7.07835 14.8096 26.2124 --7.38949 14.3575 25.4073 --7.78507 13.502 24.9861 --7.21225 12.7466 25.0678 --7.85074 12.5767 24.2857 --7.67553 12.6739 23.3704 --8.69544 12.8511 23.3331 --9.29841 13.1462 22.5553 --9.32475 14.0062 22.0615 --10.1832 13.6839 22.5201 --10.775 12.853 22.5391 --11.7399 13.0367 22.7952 --11.0081 13.4303 23.4196 --11.752 13.7055 24.0221 --11.877 14.3786 23.3001 --11.8261 14.7629 22.3423 --11.0113 14.3669 21.907 --11.1206 13.5911 21.3335 --10.9593 14.0013 20.4239 --11.749 14.5106 20.1334 --11.5972 15.5032 19.9772 --10.8026 16.04 20.3984 --10.4304 16.7902 21.0268 --9.62272 17.3794 21.2207 --9.08679 18.1847 21.4167 --8.71931 19.037 21.6905 --9.15964 19.9298 21.7145 --9.22379 19.8998 20.69 --9.58439 20.5615 19.9389 --10.4929 20.1667 19.8993 --11.3644 20.656 19.6432 --10.7333 20.9026 18.8673 --10.8593 20.4903 17.9141 --11.3916 19.7509 17.4479 --10.5613 19.2566 17.6988 --10.7844 19.106 18.7282 --10.4148 18.2184 18.3312 --10.8064 17.273 18.4647 --11.4186 16.5512 18.6024 --12.0162 15.9261 18.0243 --12.5256 15.2488 18.5891 --13.4478 15.472 19.0047 --14.1135 15.2872 18.1791 --15.0066 15.1557 17.7208 --14.7781 14.1801 17.6872 --15.2625 13.3551 17.5449 --14.8851 12.8353 16.8242 --13.9499 12.362 16.9257 --13.5383 13.0428 16.3611 --13.6088 12.7353 15.4402 --12.8933 12.8591 14.727 --12.4887 12.3143 15.5195 --11.6162 12.3067 15.1164 --11.1751 12.6006 15.9511 --11.4776 12.4802 16.8523 --12.4121 12.3243 16.7223 --12.7809 12.7162 17.4788 --12.7912 13.5059 16.8618 --12.1356 13.7076 17.5817 --12.7888 14.4745 17.3984 --13.6732 14.6349 16.873 --13.179 14.8563 16.06 --12.6793 15.6412 15.6744 --12.2449 14.8953 15.0648 --12.3185 13.9296 15.1516 --13.2074 14.1845 14.7177 --14.2425 14.1984 14.9103 --14.5828 14.8819 15.5581 --14.316 15.8535 15.2641 --15.1631 16.4316 15.0817 --16.0766 16.3278 15.3044 --16.6604 15.5164 15.4091 --17.3376 14.8604 14.9808 --18.1667 14.475 14.5652 --19.0187 14.7234 14.9343 --19.583 14.1536 15.5205 --19.8463 13.4387 16.0107 --18.9629 12.8297 16.1806 --19.1386 11.8046 16.1918 --18.2131 11.5093 15.9648 --17.7369 12.2524 15.5134 --16.7936 11.9571 15.5616 --16.3299 12.7826 15.2521 --15.7132 13.5462 15.5829 --16.5108 13.3054 16.1483 --15.6732 13.6171 16.6448 --16.3137 14.3486 16.6398 --15.8638 15.2298 16.6701 --15.6635 16.2157 16.6935 --15.3727 17.0416 16.2747 --15.0865 17.5259 15.4751 --15.7871 18.2198 15.3505 --15.3271 19.1155 15.3146 --16.2434 19.2611 14.9797 --16.7097 18.9534 15.7695 --17.5659 18.5002 15.8649 --17.5395 19.487 15.7356 --17.6871 20.1054 16.5296 --17.6724 19.2189 16.9308 --17.5602 18.4719 17.5933 --17.7957 18.4445 18.5929 --18.305 17.6112 18.6374 --18.1872 16.673 18.8222 --18.2193 16.4391 17.8813 --18.9028 17.16 17.8339 --19.2283 16.7168 16.9826 --18.9506 15.9568 16.4447 --18.5746 15.1322 16.2332 --18.8276 14.8532 17.1804 --18.7575 15.0307 18.1254 --17.8326 15.14 18.3704 --16.9473 14.6204 18.1047 --16.2059 14.884 18.6507 --16.2432 14.5058 19.5919 --15.6099 13.9464 18.9756 --14.6 13.8912 18.9512 --13.9923 13.0595 18.8172 --13.5292 13.425 19.5613 --13.993 13.1978 20.3636 --14.6867 12.6162 20.7416 --15.6073 12.3189 20.9675 --15.0435 11.5698 21.0191 --15.9571 11.3637 21.1133 --15.4662 10.5029 21.4542 --15.9484 10.3951 20.5226 --16.3642 10.0661 21.358 --16.1419 10.185 22.3113 --16.0294 11.1358 22.6692 --16.9598 10.8475 22.5855 --16.6693 11.3827 23.3619 --16.4477 10.7754 24.1139 --17.1124 10.8549 24.7868 --17.7863 11.1782 24.0938 --18.7602 10.816 23.9367 --18.5658 10.0266 23.3521 --19.1886 9.47953 23.9322 --19.8598 10.1438 23.6414 --19.5933 10.6886 22.8562 --19.6146 10.1273 22.0806 --18.706 10.3396 21.7782 --18.6018 10.0445 20.8997 --18.9033 9.17041 20.6803 --18.1376 8.5393 20.4996 --18.9054 8.00844 20.1879 --18.1587 7.74695 19.532 --17.1859 7.75635 19.8588 --17.1805 7.76995 18.8747 --17.1921 7.58457 17.9073 --16.9178 8.50808 18.1169 --17.1231 9.06721 18.8469 --18.0986 9.21289 18.5359 --18.7347 9.6992 18.0076 --19.1564 10.2727 18.8313 --18.7465 10.9604 18.2588 --18.8217 11.7192 18.9407 --18.8928 11.5145 19.9152 --18.4903 12.2012 20.4674 --17.6254 12.7732 20.6308 --17.4326 13.5587 20.1046 --16.4533 13.6925 20.2607 --16.4676 13.3188 21.1241 --16.5107 13.8741 21.9462 --15.6627 14.4111 21.752 --14.8775 13.7723 21.4931 --14.2863 14.3221 20.7981 --13.3127 14.178 20.7393 --13.3767 15.1493 20.3617 --12.5997 15.7726 20.2586 --12.155 16.693 20.3165 --11.8306 17.6467 20.4318 --11.8732 18.5882 20.6413 --12.7358 18.2127 20.7232 --13.1773 17.3858 20.2496 --13.9549 17.0154 19.7743 --13.8654 17.8525 19.2735 --14.0577 17.6219 18.3307 --13.7845 17.4361 17.3413 --14.3983 18.2368 17.258 --15.1951 18.3822 16.6477 --16.0136 17.9061 16.7761 --16.6729 17.2911 16.4149 --17.5746 17.208 15.93 --18.4328 17.4644 15.4581 --18.3357 16.7684 14.7144 --18.045 17.6165 14.1574 --18.1341 18.3125 13.4303 --18.3734 17.6653 12.6935 --17.6663 17.8491 11.9878 --16.8991 17.2766 11.6611 --17.4872 16.7457 11.0615 --17.1805 17.0327 10.1114 --17.7324 17.8299 10.3488 --18.6746 18.0004 10.3405 --19.0055 18.5259 9.58436 --18.5974 19.4175 9.55676 --18.7359 20.4072 9.37613 --19.0353 21.2985 9.78009 --18.3791 21.2753 10.5014 --18.5936 22.0402 11.1632 --18.917 22.9438 11.4671 --18.1151 22.4043 11.9458 --17.6567 22.4105 12.7858 --17.1338 23.2648 12.6985 --16.8677 23.311 13.6922 --16.3439 22.8639 14.5396 --16.171 21.8763 14.4748 --16.2591 22.3087 13.5273 --15.632 22.5935 12.8258 --15.4894 23.4592 13.1395 --15.3173 22.6868 13.778 --14.7481 22.7939 14.5766 --14.9006 22.827 15.5538 --14.8145 23.835 15.3272 --14.0736 24.1743 15.953 --13.9518 25.1392 15.7091 --13.2104 25.7307 16.1456 --12.4487 26.1901 16.4891 --11.9071 25.5218 16.0092 --11.4205 25.4112 16.9006 --11.9475 25.8285 17.6469 --11.277 26.5033 17.9087 --10.7053 27.3219 17.8562 --9.76829 27.2794 18.1556 --10.3519 26.9594 18.9083 --9.94576 26.261 18.4027 --9.38996 25.6628 19.0171 --9.28986 24.8435 19.6535 --8.55894 24.1343 19.5846 --8.27845 23.5274 20.2925 --9.25769 23.3377 20.5657 --10.202 23.2442 21.0384 --11.1574 23.3491 20.7525 --12.1588 23.3874 20.9074 --12.4513 22.6004 21.3801 --12.9049 22.4265 20.5409 --13.6599 22.6359 19.959 --13.9145 23.0959 20.8372 --14.7721 22.6526 20.8068 --14.9544 22.2173 19.9097 --14.7328 22.6622 19.0809 --14.9607 23.3032 18.2774 --14.5427 22.6814 17.6736 --15.4136 22.7159 17.2668 --16.4153 22.7397 17.1208 --16.5893 22.4149 18.1155 --15.9289 22.7518 18.7312 --15.9244 21.7882 18.958 --15.5509 21.1278 18.217 --14.7189 20.9664 17.5766 --14.6613 21.0822 18.5472 --15.0285 20.2393 19.0311 --15.3518 19.3254 18.6501 --15.9325 18.7599 19.2964 --15.7713 18.2651 18.4171 --15.6912 17.6564 19.1452 --15.2923 16.7898 19.2253 --15.4367 16.6545 20.151 --15.9839 15.9609 20.6077 --16.6227 16.7121 20.7775 --17.4859 17.1689 20.5891 --18.4602 16.743 20.7645 --18.3479 16.8156 21.7094 --19.0509 17.5038 21.5016 --19.7257 16.977 22.1125 --19.7439 16.8085 23.1147 --20.6924 16.5805 23.3813 --21.4412 16.4257 22.8399 --20.7082 15.7547 22.641 --20.6844 14.829 22.283 --19.9474 14.961 22.9103 --19.7388 14.0187 22.9859 --19.8466 13.1608 22.4646 --19.4046 13.1681 23.4718 --19.1536 13.9338 23.962 --18.5485 13.2238 24.0471 --18.0648 13.8546 23.4377 --17.5799 14.5686 22.9081 --17.6619 14.8168 23.8613 --18.2578 15.4619 24.2781 --17.9582 16.4469 24.109 --17.6755 16.9236 24.8957 --18.5215 16.9373 25.4714 --19.4183 17.338 25.1469 --18.8808 17.9821 25.637 --18.6362 18.6545 24.9821 --19.5073 18.3459 24.7167 --20.1164 18.8315 23.9816 --19.4923 18.3585 23.3881 --18.8849 17.6557 22.9788 --18.2202 17.8708 22.2271 --17.5589 17.1464 22.1975 --17.2932 17.5585 23.0651 --16.5432 17.7389 22.3837 --15.7144 17.9381 22.9173 --16.3513 17.6815 23.6964 --16.0213 16.7027 23.7297 --15.2124 16.1975 23.5581 --15.2011 15.7188 22.7401 --14.8047 14.8412 22.9806 --14.1778 14.1342 23.2934 --13.1686 14.0071 23.3134 --12.6884 13.2599 23.8103 --13.2402 13.1828 24.7196 --12.9157 12.7744 25.5448 --12.1142 12.5019 26.0817 --12.4625 11.8811 26.7922 --13.317 12.4758 26.6899 --13.7725 11.7677 27.2093 --13.4431 11.0788 26.6688 --13.0654 10.2098 26.3977 --12.7548 10.4749 25.5205 --12.8074 11.4701 25.6319 --13.1337 11.6686 24.729 --12.5095 11.0255 24.1895 --11.5039 10.9275 24.3846 --10.7034 11.2197 24.9484 --10.4626 10.3553 25.4186 --9.9755 10.3003 24.5521 --9.91432 9.29653 24.4089 --10.857 8.89677 24.5524 --11.3036 9.26059 23.7477 --11.8072 9.51852 22.9215 --11.7967 8.56454 23.2307 --11.3209 7.79167 22.9254 --10.7523 7.40492 22.248 --11.5007 6.99869 21.7899 --12.0769 7.31457 20.9871 --11.5715 7.9607 20.44 --11.4073 8.98442 20.5984 --11.3918 9.94881 20.897 --12.2319 10.4451 21.1892 --13.0199 11.055 20.982 --13.3564 11.2534 19.9807 --13.7865 10.5222 19.5117 --13.4502 10.5107 18.5976 --13.043 10.4438 17.749 --12.2273 10.0108 17.4723 --12.5577 9.08826 17.5507 --11.6459 8.66923 17.4206 --11.6707 9.36542 18.1345 --11.117 10.0741 18.4398 --10.8395 9.95574 19.3871 --9.90197 9.49041 19.2377 --9.11125 9.28621 19.9098 --8.4818 9.57175 19.2234 --8.42459 10.3954 18.6877 --8.57474 11.3183 19.1904 --8.74988 12.2759 19.056 --9.40394 12.3205 19.7482 --10.4485 12.3756 19.5622 --10.7964 12.7804 20.4525 --10.5762 12.0403 21.0676 --10.3543 11.1889 20.529 --9.38529 11.3239 20.5157 --8.46428 10.9455 20.5807 --7.50961 11.1828 20.2997 --6.83598 11.6451 20.7898 --6.79848 12.1087 19.9114 --7.01947 12.3553 18.8988 --6.57618 12.6541 18.0601 --6.68889 11.9181 17.3753 --6.43095 12.5005 16.6678 --6.09319 11.6329 16.3833 --5.70758 11.1032 15.6192 --5.4642 10.1379 15.5568 --5.73957 10.029 14.6754 --5.83837 10.6101 13.8236 --6.0324 9.76151 13.3437 --6.5066 8.92616 13.7816 --6.12758 8.49811 12.9124 --5.58692 7.70963 12.5082 --5.65621 7.29758 13.4577 --6.23639 6.82122 12.8195 --6.52923 6.18239 13.4826 --7.12281 6.47546 14.2025 --7.51973 6.02518 13.4423 --7.62218 5.09288 13.2347 --7.0392 4.28759 13.3086 --6.41266 3.61001 12.9435 --6.82261 4.09686 12.1687 --7.80549 4.20824 11.9885 --8.30621 3.41747 12.1095 --9.2627 3.54989 12.316 --10.023 4.08509 12.4124 --9.72938 3.90804 13.3742 --10.0912 2.96597 13.2832 --9.15341 2.98966 13.5886 --8.59627 2.24224 13.5587 --7.60002 2.23444 13.4752 --6.63667 2.17544 13.41 --6.98481 1.4074 13.9763 --6.9083 0.5065679 13.4237 --6.9112 0.9622379 12.596 --7.53448 0.7725789 11.9144 --7.60953 1.6602 11.4576 --8.36788 1.93418 12.1355 --9.34165 1.94978 12.4718 --10.1182 1.22617 12.4151 --9.66928 0.3470699 12.4145 --10.0608 -0.3770331 13.0348 --10.8053 0.04534363 13.5136 --10.9185 -0.2201981 14.4826 --10.0884 -0.8247281 14.357 --9.89581 -1.72135 13.9119 --10.3052 -2.20956 14.6204 --9.43827 -1.7697 14.6702 --9.29361 -2.75503 14.7466 --8.7679 -2.93523 13.9322 --8.77967 -1.97943 13.6263 --8.00721 -1.71124 14.2108 --7.20527 -2.39233 14.3776 --6.28708 -2.46018 14.7517 --5.50978 -2.99763 15.0035 --4.87456 -3.32088 15.7476 --5.09218 -2.82564 16.6017 --5.67044 -3.31431 17.1573 --4.84077 -3.5213 17.587 --4.12491 -2.92833 17.0893 --3.70147 -2.38648 17.8064 --4.15076 -2.14764 18.6848 --5.00106 -2.15323 19.223 --5.76624 -1.47259 19.4341 --6.11242 -1.90146 18.5689 --6.56273 -2.51765 19.1764 --7.39541 -3.01351 19.5393 --8.09007 -2.91378 20.1831 --8.2729 -3.61092 20.8907 --8.15377 -4.62146 20.8853 --7.568 -4.93991 21.6478 --6.63677 -4.55956 21.5797 --5.85004 -3.95808 21.6858 --6.18667 -3.33517 20.9813 --6.18737 -3.78658 20.091 --5.53664 -3.81778 19.2804 --4.74382 -3.39137 19.5492 --4.48988 -4.11556 20.1403 --3.96259 -3.8037 20.977 --4.41188 -4.54418 21.4637 --4.04224 -5.35216 21.9567 --4.40963 -5.44066 22.9089 --5.38588 -5.64926 23.2517 --6.13691 -6.27672 23.4865 --5.57736 -7.13338 23.6287 --5.26086 -7.74733 24.3534 --4.76193 -8.5053 23.9714 --5.01191 -9.00159 23.1045 --5.48674 -9.15889 23.9406 --5.71304 -10.015 24.4442 --5.4502 -11.0022 24.3822 --6.33849 -11.3386 23.9728 --7.02374 -10.8667 23.4476 --7.53232 -11.2014 24.1847 --7.49145 -10.6107 25.0168 --6.9053 -11.4621 25.2611 --6.38879 -12.1357 25.8535 --6.36445 -11.198 26.0922 --5.92291 -10.3555 25.8464 --5.17424 -10.0078 26.3332 --4.17552 -10.1896 26.3951 --4.27346 -11.1812 26.4777 --4.42498 -11.7999 27.2648 --4.90142 -10.9772 27.4722 --5.30733 -11.2148 28.3398 --6.20028 -10.7248 28.3176 --6.33272 -10.5286 29.3213 --6.43742 -9.55612 29.1571 --7.29997 -9.20025 29.2828 --7.58897 -9.9788 29.8861 --6.93379 -10.0995 30.58 --6.14338 -9.92119 31.1486 --6.1572 -10.7217 31.7428 --5.82427 -11.5901 31.4013 --5.30131 -11.6555 30.5361 --4.93664 -10.7189 30.6573 --4.19201 -11.3324 30.9709 --3.68283 -10.5157 31.2255 --3.73708 -9.71466 30.5821 --4.44 -9.83453 31.3634 --3.94838 -9.294 32.0201 --3.18098 -9.11628 31.345 --2.39008 -8.55957 31.2029 --2.05082 -8.53588 32.1061 --2.26029 -8.27083 33.0851 --2.07005 -7.81418 33.9578 --2.96949 -8.29667 34.1874 --2.87032 -9.29739 34.5377 --3.18066 -8.5738 35.1983 --3.65129 -7.86996 35.7071 --4.32729 -7.48876 35.096 --5.23578 -7.74284 34.741 --5.35578 -6.726 34.8471 --6.05153 -6.76102 35.5926 --6.54671 -5.89182 35.2567 --6.68215 -5.98972 34.2487 --6.52886 -5.29829 33.5225 --6.88663 -4.53885 33.0493 --7.16786 -5.23523 32.4089 --8.06323 -5.48035 31.9662 --8.29513 -6.48819 31.8019 --8.82276 -6.89359 31.0891 --9.27165 -6.00209 30.9584 --9.80357 -5.40461 31.6331 --10.405 -5.39372 32.4776 --11.415 -5.11379 32.3357 --11.1509 -5.96425 32.7861 --11.5918 -6.63834 33.4712 --12.4635 -6.42018 33.8848 --13.1562 -6.45987 33.2074 --14.0476 -6.77484 32.8405 --14.3378 -7.0149 31.9364 --14.5929 -6.07239 31.7581 --15.4385 -6.07943 31.1631 --14.6744 -5.57146 30.7134 --15.2822 -4.82025 30.9771 --14.7682 -4.04592 31.1709 --15.084 -3.21782 30.6917 --14.112 -3.10347 30.7817 --13.9216 -3.18426 29.8556 --13.1466 -2.87235 29.3618 --12.5682 -2.92074 28.6379 --12.5167 -2.33895 27.8458 --11.7169 -2.29985 27.2916 --12.0668 -1.42706 27.0851 --11.1609 -1.30288 26.6055 --10.5427 -1.99737 26.7869 --9.74331 -2.47059 27.1014 --9.41825 -3.032 26.2967 --9.80622 -2.55707 25.5282 --9.44122 -1.90508 24.8764 --8.83089 -1.39274 25.4942 --8.6453 -0.8265411 26.2531 --9.56127 -1.1234 26.155 --9.71968 -0.2689041 26.6388 --8.83494 -0.1100241 27.0623 --8.1758 -0.8948181 27.1743 --7.27594 -0.7465051 27.6738 --6.7384 -1.54388 27.2822 --5.96771 -0.9817801 27.0766 --5.40222 -0.5206561 26.3983 --4.97203 -0.09070167 27.2626 --4.24461 0.4979579 26.7936 --3.38887 0.04514773 26.6222 --2.9279 0.9747779 26.6634 --3.2322 1.92719 26.5999 --3.84125 2.3788 27.2713 --3.39326 3.28384 27.4414 --4.11535 3.67397 27.983 --4.75974 4.08214 28.5839 --5.08527 4.21383 27.6826 --5.8542 4.41118 26.9439 --6.01378 3.82445 27.7835 --5.67777 2.99541 27.7152 --5.52844 2.80348 28.68 --5.03618 3.08359 29.472 --4.3058 2.43601 29.6745 --4.42237 1.52481 29.2594 --5.11775 1.03787 28.7661 --5.88508 1.18043 29.402 --6.06451 1.42617 30.3362 --6.70212 1.76528 29.6544 --6.24947 2.67021 29.7726 --6.03974 3.49465 30.1951 --6.7946 4.07921 29.7849 --6.05298 4.8147 29.7259 --5.20269 5.12236 29.349 --5.21677 5.85871 29.9603 --5.41315 6.78781 29.8875 --4.79568 6.81262 29.0268 --3.99514 6.66947 28.3858 --3.03944 6.46079 28.3659 --2.73542 7.34365 27.9838 --1.75812 7.2557 28.2258 --2.25347 7.04342 29.0599 --1.61236 6.25496 28.986 --1.02287 6.91168 29.4939 --0.451451 7.1928 28.7106 -0.365517 7.16305 29.3096 -0.730573 6.38164 29.7813 -0.227381 5.60288 30.2386 -1.17522 5.2819 30.0144 -0.527798 4.85559 29.3264 -1.30285 4.54081 28.7769 -1.77442 5.03089 28.0603 -2.00437 4.99447 27.117 -2.53116 4.7549 26.2939 -3.29996 4.29444 26.6396 -3.29535 3.46968 26.056 -3.30932 3.2663 25.0624 -3.16526 2.49723 24.4967 -3.78679 2.08986 25.2208 -3.4458 1.47527 24.4779 -2.48671 1.31702 24.7223 -1.95008 2.09493 24.3169 -1.35608 2.75267 23.8601 -2.0616 2.64606 23.1265 -2.00713 1.63868 23.3914 -2.00937 1.14744 22.5003 -2.59985 0.6195839 21.9239 -1.80939 0.8462109 21.3958 -1.85162 -0.1277821 21.6161 -1.02254 -0.7200291 21.9197 -0.690945 -0.7312221 22.9215 -0.403874 -0.8673551 23.8584 -0.434681 -1.50882 24.6346 --0.274303 -1.89818 25.2585 --0.639269 -2.74045 25.6398 --0.04237533 -3.49552 25.4272 -0.514925 -4.27574 24.9553 -1.15316 -3.50431 24.9077 -1.60065 -2.75995 25.3418 -1.99883 -2.9098 24.4127 -2.05443 -3.16592 23.4693 -1.33345 -3.77129 23.6844 -1.29112 -4.43999 22.9496 -0.322235 -4.35958 22.7196 -0.105746 -3.45459 23.1529 --0.362931 -2.87389 23.7947 -0.146905 -2.02739 23.5413 -0.44663 -2.24749 22.6242 --0.526826 -2.14007 22.4105 --0.622878 -3.00554 21.9627 --1.08994 -3.85938 21.9486 --1.12968 -4.37923 21.1123 --1.01048 -5.38815 21.1541 --1.76751 -5.03038 20.6074 --1.94746 -5.96863 20.2533 --2.26909 -6.36072 19.3439 --2.0392 -7.05389 18.658 --2.28634 -7.32747 19.5801 --1.62751 -7.22985 20.2615 --1.09849 -7.78448 20.9566 --0.218492 -7.36891 20.9073 --0.419421 -6.39214 20.514 -0.304016 -6.48977 21.2594 --0.28069 -6.40402 22.0212 --0.210638 -5.9323 22.9262 --0.716771 -5.1326 22.6556 --1.68668 -5.40062 22.5905 --2.61417 -5.76572 22.6832 --2.14844 -6.67534 22.4849 --1.75015 -6.63236 23.3474 --2.49746 -6.51173 24.0638 --3.3793 -6.60586 24.5469 --4.36157 -6.31374 24.9615 --4.47375 -5.64805 25.6552 --3.69084 -5.24956 26.2145 --3.89047 -4.7364 27.1186 --4.37352 -4.23448 27.8074 --4.29441 -5.18286 28.1244 --5.17571 -4.87955 28.1981 --4.7282 -4.52529 29.0677 --5.72619 -4.5132 29.0892 --5.54859 -5.22415 29.7358 --4.82587 -4.74857 30.2636 --5.42183 -5.28575 30.8639 --5.76328 -6.18681 31.2043 --5.75381 -7.1412 31.5102 --5.66724 -8.12792 31.6831 --4.91815 -7.36239 31.8159 --4.1578 -6.84564 32.1882 --3.47264 -6.3744 31.6824 --2.87729 -5.71147 31.2161 --2.12123 -6.21802 30.8012 --1.49863 -6.99656 30.7192 --0.845301 -7.36273 29.9408 --0.497765 -8.08031 30.5426 --0.524816 -8.764 31.3038 -0.208163 -9.21771 31.8504 -1.01749 -8.8485 31.4359 -1.17272 -7.85719 31.4748 -1.93303 -7.613 32.1547 -2.86436 -7.56703 32.507 -2.51494 -6.87016 33.0712 -2.85106 -6.25975 33.8482 -2.30752 -6.41459 34.6217 -1.51016 -5.96997 34.3861 -1.43944 -5.28215 35.0192 -2.33784 -5.01546 34.5743 -2.33009 -4.74999 33.6209 -2.73395 -5.14368 32.8468 -2.63126 -5.17544 31.8521 -2.88054 -4.79449 31.0063 -1.8996 -5.00915 30.982 -1.25565 -4.33824 30.5591 -0.58151 -3.69609 30.2306 --0.362328 -3.85429 30.4364 --0.35023 -4.60746 31.1467 -0.330081 -5.18736 30.6682 --0.18175 -5.73773 30.0651 -0.185889 -6.67063 29.8782 -0.811363 -7.14157 29.2376 -1.12166 -6.41543 29.9564 -1.40391 -5.9569 29.1649 -1.46552 -5.33913 28.3903 -2.32138 -5.27667 27.8152 -3.01919 -5.02694 28.4559 -3.4678 -5.92059 28.1798 -3.90833 -5.59594 28.975 -4.82014 -5.35005 29.3698 -4.93707 -4.75136 30.215 -4.41362 -4.10462 30.7744 -4.27884 -4.19642 31.7609 -3.56153 -3.59741 31.8484 -3.7201 -2.60856 32.1932 -4.04701 -1.94419 31.4713 -3.37178 -1.30375 31.511 -3.57398 -0.2698791 31.5979 -3.56605 -0.4208131 30.5606 -4.31313 0.01836233 31.008 -4.83208 0.7215209 30.5145 -5.34699 1.5726 30.4245 -4.85389 2.24517 29.9415 -4.52996 3.18367 29.7697 -4.32128 2.72043 30.6236 -3.51084 2.38909 31.0544 -2.75497 2.84588 31.5962 -1.90812 3.47994 31.7825 -0.929293 3.38519 31.7505 -0.196676 3.09466 32.3419 --0.316065 2.3669 31.8835 -0.200461 1.5933 31.7226 --0.608195 1.03412 31.6335 --0.395155 0.8490619 30.6816 --0.949291 1.29104 29.9099 --1.30035 2.05812 29.3079 --1.95375 1.93891 28.5546 --1.24183 2.22192 27.9019 --1.07515 3.01533 27.2496 --1.07866 3.57916 28.0733 --0.964031 3.73296 29.0427 --0.337105 3.35158 29.6822 -0.271269 3.51284 29.018 -0.736709 2.74606 28.4829 -0.446781 1.99857 27.8718 -0.108797 1.89724 26.9177 -0.777923 1.21703 26.7383 -0.924952 1.71474 25.8795 -0.618567 1.14264 25.0979 -0.378764 0.7466329 24.1631 -0.93713 1.23846 23.4462 -0.855474 1.63827 22.4858 -0.009510075 1.86773 21.9857 --0.710412 1.28226 22.3759 --0.276635 0.9320909 21.4944 --1.20145 0.7377259 21.1138 --1.83873 0.5309719 21.8034 --2.32477 1.28549 22.1568 --2.27728 0.9553069 23.1345 --3.26512 1.22654 23.3708 --3.03484 2.09794 23.8566 --3.60286 2.89649 23.6691 --3.33235 2.93765 24.6656 --3.41956 3.95703 24.7783 --4.40116 3.79314 24.9308 --5.37141 3.73399 24.9075 --5.89451 3.82524 24.0423 --6.48751 3.02895 24.2291 --7.38622 2.73971 24.2945 --8.15523 2.51628 23.7183 --8.74059 2.72597 24.4821 --8.28493 1.90851 24.9018 --8.08307 1.97452 25.9377 --8.18537 1.78968 26.8694 --7.93235 2.06713 27.8024 --6.94646 2.11559 27.3285 --6.75307 2.72775 26.6202 --5.91853 2.25696 26.6893 --6.51786 1.55874 26.2707 --5.97372 1.83486 25.4904 --6.14115 1.52343 24.5476 --6.2118 0.8391489 23.8398 --5.47006 1.14165 23.3156 --5.95577 1.1052 22.4598 --5.17949 1.36423 21.9619 --4.46204 0.9758969 22.5612 --3.79432 1.67466 22.464 --3.72159 2.50009 21.9158 --4.49495 3.10369 21.9539 --5.3014 3.28906 22.5334 --5.0138 4.19 22.7672 --5.45061 4.916 22.2848 --5.48488 5.16796 21.2641 --5.94861 5.2914 20.3308 --5.62445 5.36652 19.3903 --5.22768 6.29182 19.1841 --6.14341 6.26712 18.8145 --5.61719 6.39452 17.9652 --6.10534 5.55273 17.8517 --6.98833 5.62487 17.5105 --7.34195 4.86915 16.8934 --6.48641 4.60352 17.3568 --5.51965 4.48477 17.8496 --4.6781 4.1692 17.2818 --4.99704 4.98921 16.8027 --4.66352 4.23928 16.2949 --4.7597 3.24288 16.4605 --5.02135 3.37023 15.5684 --5.9268 3.40904 15.8462 --5.93066 2.69033 15.1967 --6.46015 1.89183 15.4298 --5.97087 1.25547 16.0639 --5.48825 0.9569169 15.2301 --5.01502 0.6202689 16.016 --5.40873 -0.2522141 16.1655 --5.84557 -0.001250536 17.073 --5.66956 -0.7742791 17.6143 --4.73681 -0.6064961 17.6853 --3.94726 -0.1405641 17.3354 --3.42055 0.3823579 17.9432 --2.43536 0.6982449 18.1111 --1.67294 1.06096 17.5337 --1.92632 1.94263 17.3153 --1.66695 2.4393 16.5278 --2.33579 2.66821 15.8142 --2.26839 3.23438 15.0128 --1.72216 2.55147 14.455 --0.792499 2.39492 13.963 --1.01595 1.47049 13.6366 --0.435737 1.55502 14.4676 -0.281482 2.09536 14.0451 -0.452657 3.02221 13.9832 --0.03647023 3.9488 13.9494 -0.295026 4.51042 14.6784 -0.39807 5.24785 15.291 -1.1862 5.4817 15.9281 -1.30632 6.31889 15.4169 -0.956525 7.22962 15.7198 -0.717265 8.17721 15.9127 -1.48833 8.58118 15.4004 -1.35629 9.61416 15.1757 -0.756229 9.41195 14.4451 -0.233297 8.55392 14.4531 --0.657418 8.36828 14.8184 --1.27213 7.79572 15.3577 --1.56239 6.88016 15.6475 --1.69537 7.17001 16.7054 --1.16217 7.32904 17.5741 --0.519996 6.93806 18.21 -0.001502085 6.94523 19.0375 -0.319531 7.63463 18.4952 -1.08252 7.9272 17.9665 -1.92018 8.48213 17.906 -2.37683 9.36327 17.5847 -3.01797 9.26593 16.8635 -3.05938 9.92907 16.1827 -2.71254 10.8397 15.9111 -1.95224 11.2068 15.419 -1.39757 11.897 15.9257 -0.440535 11.5693 16.0728 --0.431982 11.1584 16.2884 --0.823348 11.7711 16.9477 --1.79572 12.0241 17.0228 --2.44767 11.2706 17.0925 --3.27913 11.5439 17.435 --3.98258 11.1465 16.9052 --4.52637 11.0621 16.0153 --3.96333 11.8639 16.1102 --3.31606 11.4527 15.4064 --3.3598 10.5127 15.1708 --3.07717 9.90199 15.9513 --2.84445 9.41486 15.0957 --1.90804 9.55034 15.0367 --1.95755 9.40783 15.9949 --2.3107 9.64181 16.9336 --1.91241 8.88985 17.5614 --2.3557 7.99968 17.3585 --3.29489 7.82852 17.2924 --4.35085 7.64661 17.2769 --4.52483 8.59425 17.5392 --5.52312 8.61525 17.4682 --6.43929 8.67011 17.9125 --6.62915 8.44699 16.9832 --7.48997 8.93207 17.1254 --8.35121 8.67164 17.4766 --8.73507 7.79997 17.9218 --9.17031 6.96659 18.1828 --9.46145 6.55346 19.0879 --9.99601 6.35177 18.1984 --10.8072 6.10779 17.6038 --10.1708 5.88915 16.8632 --9.32302 5.5957 17.2592 --9.79567 4.85061 17.7652 --9.84323 3.97941 18.1793 --10.3379 3.77281 17.3482 --11.0041 3.11954 17.6233 --11.1846 2.34166 18.2699 --11.3077 2.15845 17.3224 --11.2598 1.68814 16.4474 --10.3608 1.68617 16.956 --10.4009 0.8290709 16.3585 --9.97106 0.4625279 17.1954 --9.72376 0.7649709 18.1487 --9.42196 -0.1227481 17.9359 --9.93362 -1.03028 17.7878 --10.7726 -1.39647 17.2498 --10.1325 -2.14979 16.8517 --10.2503 -3.10051 17.2427 --9.77458 -3.39673 16.3668 --9.07681 -3.00125 15.836 --8.68544 -2.13801 15.6461 --8.46047 -1.29713 15.1198 --7.52676 -0.9147031 15.25 --7.78187 -0.5061731 16.174 --7.61409 -1.22045 16.7775 --8.47026 -1.64882 17.1196 --8.23695 -1.10643 18.0179 --8.87871 -1.79948 18.3726 --9.47966 -2.27646 19.0046 --10.3828 -1.99695 19.4502 --11.3457 -2.32622 19.2508 --11.4249 -1.91662 18.3106 --11.4643 -1.27815 19.057 --12.145 -1.05747 18.3592 --12.3441 -1.8133 18.9196 --12.3564 -2.67689 18.5365 --11.7751 -2.94705 17.7541 --12.7356 -2.60118 17.5336 --12.8955 -2.83162 16.6069 --13.8152 -3.11445 16.8873 --13.2377 -3.9447 16.8912 --13.2704 -4.63087 16.1736 --12.5908 -4.6114 15.4655 --12.364 -4.00137 16.2124 --11.5665 -3.33246 16.1004 --11.1276 -2.91386 15.3262 --12.1046 -2.70158 15.325 --12.3588 -2.89598 14.3428 --12.7441 -3.7051 14.7497 --13.3798 -3.46943 15.4666 --14.2902 -3.85219 15.8335 --15.2945 -3.54731 15.9353 --14.6511 -3.02693 15.3534 --15.2812 -2.305 15.1662 --14.9897 -1.71937 15.9627 --15.9162 -1.74234 15.9776 --16.1593 -0.9150431 15.5164 --16.7863 -1.09016 14.795 --16.9673 -1.87161 14.142 --16.8965 -2.2246 14.9936 --17.6086 -2.91009 14.8043 --17.4582 -3.91199 14.4678 --17.5109 -4.5784 15.2454 --17.3387 -3.67502 15.6705 --17.5511 -3.53909 16.6148 --17.0708 -3.19278 17.4277 --16.7491 -2.56466 18.1019 --16.2673 -1.65735 17.9786 --15.7559 -0.7729371 18.3099 --15.5531 -1.02127 17.3238 --14.9254 -1.44104 17.8584 --14.8566 -2.31879 17.3559 --15.2033 -2.51268 18.296 --14.5085 -2.28098 18.9709 --14.2126 -1.6524 19.6825 --13.8885 -0.8455291 20.2602 --14.0771 0.1001789 20.3876 --14.132 1.08998 20.3361 --14.0657 1.67083 19.5364 --13.561 0.9319009 19.2784 --12.6583 1.18574 18.7263 --12.376 1.57846 19.6251 --12.3124 1.4091 20.6053 --12.2302 0.4217849 20.6174 --12.1371 -0.6572291 20.5515 --11.1698 -0.3581631 20.7003 --10.8272 0.5140509 21.0789 --10.979 1.45377 20.7236 --11.172 2.23599 21.2647 --10.7487 1.78645 22.0483 --10.0083 1.80938 22.7537 --9.81458 1.3421 23.6951 --10.1977 2.0792 24.1954 --11.0591 1.94857 23.6274 --11.946 2.1409 23.8964 --12.8461 1.86973 24.2515 --13.5169 1.02771 24.2243 --13.6795 0.6323989 25.19 --14.5057 1.03741 24.7954 --14.464 1.45838 25.7284 --14.3281 0.8274849 26.5187 --15.2384 1.29468 26.4223 --15.9738 1.91644 26.6419 --16.6474 2.43745 26.1147 --16.4351 3.35893 26.251 --17.1533 3.69354 26.7755 --17.0724 4.67839 26.6334 --16.6069 5.46636 26.807 --15.6239 5.66349 26.9223 --14.7689 5.31954 27.0369 --15.3619 4.64461 27.3967 --14.8233 3.97708 27.823 --14.4789 3.07267 27.7415 --14.0386 3.29948 28.5975 --13.0364 3.38173 28.3586 --12.2707 3.88933 27.8666 --11.9399 4.05107 28.812 --12.5444 4.89123 28.7826 --12.1118 5.57835 29.3341 --11.3539 6.31362 29.3602 --11.2644 6.38652 30.3147 --10.4343 6.39975 29.8653 --10.8 7.30987 30.1272 --10.3176 8.0031 29.5132 --9.83753 8.90007 29.3571 --9.66591 9.70606 28.7058 --8.80694 9.96169 29.1745 --8.72459 10.9123 29.6128 --7.95256 11.4525 29.3908 --7.46787 10.582 29.3119 --7.1167 9.59736 29.1131 --6.38114 10.1605 29.3588 --6.11763 10.2431 28.4125 --5.10435 10.0179 28.2777 --4.6689 10.9536 28.3371 --4.04731 10.2733 27.929 --3.56455 9.77776 27.3134 --4.25147 9.49787 26.5559 --3.41422 9.30634 25.9967 --3.11605 8.40876 25.9881 --2.75844 8.61951 25.0464 --2.77269 7.57708 25.3082 --3.33558 6.76937 25.2797 --3.27294 6.35714 26.1728 --3.49942 5.45805 25.7926 --3.70976 5.52042 24.7639 --3.95999 5.19512 23.8186 --3.76067 4.89075 22.86 --3.18962 5.60944 22.51 --3.36531 6.29943 21.8091 --4.20933 6.31208 21.3261 --3.76648 7.15583 21.6139 --4.23427 6.9834 22.5762 --5.15967 7.42483 22.5685 --5.45973 7.69452 23.4668 --6.18652 7.08279 23.7398 --6.14138 7.36286 24.6649 --6.86478 6.75831 25.0105 --6.43099 5.86369 24.9167 --6.15543 5.16122 24.2012 --6.78254 5.01731 23.3778 --7.29719 4.44378 22.7711 --7.47646 5.22517 22.1777 --7.97357 5.7412 22.9103 --8.48787 5.06287 22.4028 --8.49454 4.26179 21.7851 --8.14959 4.7407 20.9451 --8.62406 4.04348 20.312 --9.33584 4.74227 20.2345 --9.85887 4.74565 21.0707 --10.6094 4.20086 21.2982 --10.4969 3.42628 20.6048 --10.1057 2.49366 20.4265 --9.37048 2.22283 21.0553 --8.83847 1.72776 20.4262 --8.6225 1.48771 21.3957 --8.06066 1.04873 20.6955 --7.13799 1.46432 20.8415 --6.47869 1.54816 21.5671 --5.73978 1.87458 21.2111 --5.06796 1.63251 20.4382 --4.22272 1.0339 20.2933 --3.5307 1.40266 20.8684 --2.71778 1.23901 20.4073 --2.96053 0.3081989 20.4421 --3.78127 -0.01714367 20.8348 --3.72428 -0.7656301 20.1231 --2.76204 -0.7804141 20.0242 --1.86907 -0.4687881 19.6155 --1.16157 0.07829463 19.0897 --0.436628 0.5155719 19.4964 -0.03167987 1.17807 18.9355 --0.129245 2.1454 19.0315 --1.15818 1.96742 19.1921 --1.1119 1.58037 20.0905 --0.263751 2.10266 20.1601 --0.443674 2.60316 21.0204 --1.10246 3.39687 20.7365 --1.56616 3.95572 21.3721 --2.43138 3.45957 21.4434 --2.63951 2.84926 22.1802 --1.67232 2.94211 22.2395 --1.23175 2.31914 22.9423 --0.898716 1.59364 23.641 --0.849194 2.43031 24.2867 --0.739508 3.29586 24.9016 --0.2869 3.80642 25.6161 -0.382319 4.43077 26.0251 --0.333737 4.99124 25.749 --1.12413 4.36119 25.9818 --0.990136 4.78225 25.0796 --1.88272 5.17638 24.8547 --2.55426 5.35055 24.1026 --2.3602 6.14073 23.5913 --2.2866 6.74255 24.3889 --1.79421 7.37781 23.8535 --2.79383 7.52572 23.85 --2.42566 7.3134 22.9673 --1.82791 8.11642 23.0738 --1.61817 8.15036 22.0384 --2.28356 7.40483 21.9268 --2.74413 8.00422 21.212 --1.82105 7.73237 20.9685 --0.857884 7.85424 21.0725 --0.452438 8.3524 20.277 --1.2691 8.80815 20.3247 --1.65149 8.17832 19.6802 --2.02312 7.85721 18.8287 --2.17635 6.85522 18.7187 --1.48834 6.97156 19.3413 --1.61762 5.96273 19.5437 --1.03759 5.47769 18.8034 --0.241701 5.62291 19.4102 --0.75936 4.82325 19.7137 --1.54036 5.05784 20.4184 --2.15771 5.81791 20.7536 --1.43818 6.51241 20.9279 --1.1543 5.63139 21.2759 --0.368647 6.11537 21.6567 -0.374717 6.69013 21.2831 -0.696121 7.41715 20.701 -1.07549 6.46229 20.4345 -1.31146 5.53953 20.0625 -0.556378 5.14609 20.4766 -0.328547 4.22771 20.7173 -0.539241 3.26422 20.7252 -0.776523 3.36445 19.7335 -1.48603 3.03193 20.432 -2.40116 2.7974 20.1711 -3.17091 2.5932 19.6627 -3.06762 2.72151 18.6879 -2.70799 3.43746 18.0576 -2.23343 4.24034 17.7069 -1.35904 4.24038 18.3211 -0.97544 4.48125 17.5101 -1.42054 3.67879 17.1654 -1.34919 2.81517 16.8282 -0.474079 2.82814 16.4032 --0.490896 3.08253 16.1635 --0.555686 2.6366 15.2565 -0.350867 2.97499 15.2968 -1.34414 3.10165 15.0029 -1.04434 2.11463 15.009 -1.75337 1.72056 15.5334 -2.18154 2.34409 16.1841 -2.70576 3.13702 16.0116 -2.91837 3.49003 16.9114 -3.68883 4.09484 16.8241 -4.61692 3.90823 16.6394 -4.33343 3.09237 17.2112 -4.53191 2.12044 17.3156 -4.39102 1.19616 17.041 -3.35443 1.36223 17.262 -2.50747 1.10441 16.8571 -1.73581 0.7118349 16.3518 -0.965049 1.31485 16.5103 -1.3411 0.9003579 17.3351 -1.27293 1.75257 17.9252 -0.739971 2.54536 17.7007 --0.258172 2.64237 17.5495 --0.350157 3.5073 18.1163 --1.32713 3.07561 18.0399 --2.24884 2.67137 18.1282 --3.06663 3.1052 18.6492 --2.92911 2.76705 19.5906 --3.12354 3.3917 20.3402 --2.70003 4.27346 20.2754 --3.33379 4.86894 20.7886 --2.56856 4.89235 21.4081 --2.15486 5.35642 22.2041 --1.41339 5.8773 22.6134 --0.43116 5.73971 22.9834 --0.129524 5.00308 22.368 --0.241375 4.29839 21.693 --0.003512875 3.43022 21.9456 -0.717606 3.14719 22.6411 -0.227399 3.72732 23.3243 -0.340758 3.64375 24.3295 -0.763954 4.28826 24.964 -1.58353 3.77099 25.2489 -2.32893 4.38341 24.9709 -1.85703 5.27578 24.9063 -1.20565 5.9386 24.5953 -1.96457 6.59727 24.4432 -2.87749 6.97947 24.6976 -2.187 7.20575 25.3032 -2.01651 7.87504 26.086 -1.23468 8.419 25.9756 -0.833214 9.03684 26.6049 -0.226623 8.24739 26.9123 -0.128653 8.50486 27.9073 -1.00834 8.63921 28.1557 -1.42311 8.83476 28.9471 -1.26653 9.85496 29.0708 -1.87353 10.5133 28.502 -1.40795 11.0028 29.1941 -0.756412 11.5488 28.7964 -0.142976 12.307 29.0997 -0.925243 12.891 28.7958 -1.25841 12.3249 27.9889 -1.42472 13.1732 27.5042 -0.617704 13.7005 27.2997 --0.270467 13.3004 27.2187 --0.757277 14.1908 27.1943 --0.56207 14.9415 27.7447 --0.240886 15.3555 26.9476 -0.229181 16.0181 26.3045 --0.532917 15.7778 25.7283 --0.959145 15.5875 24.8121 --0.615544 15.8656 23.945 -0.141355 16.0089 23.2849 -0.611625 15.2467 22.8725 -1.05582 15.4761 23.6938 -0.83154 16.1086 24.387 -1.33632 15.9539 25.2726 -1.80584 15.3969 25.9736 -2.3371 14.5656 25.7281 -2.10599 14.366 26.6934 -2.11803 13.3646 26.6438 -1.15599 13.0709 26.5428 -1.67481 12.8631 25.743 -2.5154 12.444 25.2497 -2.61927 11.493 25.4907 -2.16088 10.6256 25.1818 -1.82656 10.6273 24.3044 -2.08344 11.591 24.482 -1.23242 12.1235 24.2612 -1.40502 12.706 23.4598 -1.48481 12.7294 22.4484 -1.79703 11.9219 21.9126 -2.17305 11.4043 22.6274 -1.70389 10.5727 22.8207 -1.56933 9.66225 23.2736 -1.42951 8.77509 22.8014 -1.70107 8.78999 23.6827 -0.742673 8.63485 23.6347 --0.257419 8.61138 23.5598 --0.774801 9.50415 23.5392 --1.56579 9.98542 23.2583 --1.62114 10.9991 23.2331 --1.82707 11.331 22.2793 --1.73312 11.3004 21.2518 --0.776017 10.9841 21.0314 -0.09542387 10.8025 20.5483 -0.273923 9.79455 20.6568 --0.005826175 9.20497 19.9338 --0.835264 9.61603 19.4875 --0.703451 9.83437 18.5096 --0.387791 10.7553 18.5097 --1.05126 11.132 19.231 --0.396326 11.9487 19.1533 --0.06319823 12.9725 19.307 -0.360388 12.877 20.2414 -1.33045 12.5664 20.4017 -1.24448 13.5474 20.5848 -0.906824 13.4818 21.5328 -0.710028 14.4649 21.3322 -0.452694 14.8508 20.4626 -1.43237 15.1947 20.7094 -2.19565 15.4112 21.3972 -1.78387 16.3378 21.6194 -2.73019 16.3739 21.3692 -3.61439 15.917 21.222 -3.71144 15.3155 21.9306 -4.39425 14.9263 22.5009 -4.58766 15.6884 21.8812 -4.3378 16.7289 21.6719 -4.53804 16.6389 20.7162 -4.74376 15.6451 20.7504 -5.58622 15.2612 20.2791 -6.38089 15.4745 20.8395 -6.76335 15.2998 19.9139 -7.68337 15.7348 20.0025 -7.84459 15.6741 19.015 -8.05188 16.5339 18.5067 -7.87005 17.5245 18.6452 -7.96272 17.3367 19.6141 -8.7142 17.5652 19.0509 -8.87512 17.7599 18.0945 -9.13599 17.3845 17.1687 -8.60628 17.115 16.2897 -8.45493 18.1287 16.2216 -9.38024 18.5574 15.999 -9.8873 17.8435 16.53 -10.5558 18.4526 16.891 -10.9788 18.1191 15.9944 -10.4884 18.656 15.2742 -10.4957 18.8953 14.3092 -9.78366 19.4612 13.9734 -10.1385 19.2933 13.0079 -10.2397 19.1707 12.0179 -9.43036 19.8608 12.1311 -9.49623 20.7143 11.6048 -9.17555 20.5718 10.6449 -8.31674 21.0706 10.7115 -7.62043 20.3937 10.3181 -7.13265 20.1675 11.159 -6.27119 19.7206 11.1814 -5.58143 20.315 10.6359 -4.95111 20.3477 11.4885 -4.33249 20.5227 12.2422 -4.75272 20.8967 13.054 -4.83822 20.3194 13.8353 -4.63983 20.0021 14.7333 -5.44803 20.551 14.586 -5.83484 19.7153 15.0081 -6.17688 19.6865 15.9467 -7.14496 19.9828 15.7359 -8.17051 19.8215 15.6566 -8.37111 19.7238 14.6272 -8.78426 20.2588 13.9852 -9.0216 21.0871 14.5141 -9.14634 21.8919 13.8438 -9.85216 22.4885 13.6002 -10.5431 21.9547 13.0239 -11.2586 22.0187 12.3613 -10.448 22.6421 12.2407 -9.61113 22.9564 11.8133 -9.85765 23.8815 11.7619 -10.8456 23.5995 11.9117 -11.2111 23.3075 10.9663 -10.8479 23.7235 10.1872 -10.3052 23.5936 9.35201 -10.0347 24.5599 9.45751 -10.2488 25.3273 8.85273 -10.6829 25.6429 8.03424 -9.98082 26.0372 7.45786 -10.0444 27.0599 7.68847 -9.22008 27.3074 7.16099 -8.18262 27.413 7.12684 -7.26741 27.7889 7.25135 -7.26072 27.3574 8.20461 -6.69415 26.9008 8.8913 -7.07222 27.6872 9.34017 -6.36359 28.4273 9.3997 -5.6665 29.0602 9.14495 -5.13342 28.3867 9.63661 -4.20877 28.8443 9.71646 -4.2066 29.152 8.78141 -3.51107 29.8606 9.17189 -3.69047 30.8214 9.45793 -2.98676 31.5025 9.49575 -2.61374 31.0195 8.65157 -1.67148 31.2851 9.07 -1.45144 30.4914 8.5727 -1.9075 29.5978 8.4442 -1.82205 28.8099 7.84556 -2.41353 29.318 7.18035 -3.26713 29.8141 7.30542 -4.02738 30.4499 7.07925 -3.84851 29.9639 6.2554 -4.17281 29.1139 5.88277 -4.23296 28.6811 6.77184 -5.16005 28.1805 6.66483 -5.71884 28.8467 6.06089 -6.56009 29.1088 6.49345 -5.9674 29.8775 6.30643 -6.93372 30.3073 6.25337 -7.87293 30.4865 6.63735 -7.46155 31.199 6.11149 -6.79772 31.8972 5.97055 -6.72641 31.5436 5.09056 -7.04412 31.1131 4.29 -6.98245 31.294 3.30664 -7.86596 31.3847 3.5672 -8.43131 32.2295 3.57472 -9.23136 32.4987 3.02404 -9.10023 31.8208 2.26017 -9.27437 30.8122 2.66731 -10.0842 31.3261 2.99451 -10.8804 31.8908 2.84736 -11.0166 32.8628 2.99338 -10.8361 33.7017 2.40896 -10.7663 34.6429 2.36308 -10.8494 35.5788 2.76096 -10.486 35.264 3.61417 -9.95462 34.447 3.79743 -10.4208 33.7321 4.41909 -10.1404 33.0102 5.06734 -10.5721 33.5536 5.77781 -10.9896 32.6734 5.90381 -11.6919 33.3885 5.74387 -12.1791 32.4873 5.60959 -11.6444 32.6707 4.80301 -12.4034 32.0118 4.64617 -13.2293 31.3686 4.53846 -14.0298 31.2693 5.1431 -14.3922 32.2408 5.21706 -14.0664 31.8149 6.03783 -14.0815 32.5104 6.77022 -14.1551 31.5761 7.18846 -14.9233 31.029 7.68894 -14.6752 30.1794 7.0545 -15.074 29.8114 7.9879 -14.6787 29.1323 8.57811 -15.0969 29.733 9.22704 -15.0909 30.4303 9.92428 -15.6755 30.4683 10.6793 -14.7357 30.5975 11.1088 -14.0013 31.0192 11.6719 -13.4256 31.5027 11.0397 -13.748 32.18 10.2478 -13.2192 31.6028 9.68953 -13.0599 31.3434 8.76032 -12.2714 31.7216 8.20789 -12.5533 31.7874 7.28819 -12.9348 31.1316 6.69495 -13.1129 30.2759 6.9146 -12.2574 29.8665 6.94601 -11.3421 29.9242 6.43449 -10.8762 30.7971 6.20642 -10.4565 29.9761 5.78691 -10.4885 30.5959 5.02232 -9.72807 30.6918 5.70396 -9.41621 31.1412 6.49475 -9.61332 31.7066 7.20241 -8.81374 31.8004 7.87065 -8.83128 32.3566 8.71559 -9.47481 32.6005 9.35427 -9.67192 31.714 8.9787 -10.6834 31.8763 8.99656 -11.0793 31.0478 8.52058 -11.0229 30.31 9.21281 -10.5755 29.4357 9.44143 -9.61622 29.1784 9.27372 -9.5662 28.372 9.92423 -9.3376 27.7866 10.6299 -9.70266 26.9281 11.0359 -10.3604 27.058 11.772 -11.2929 26.7539 11.5715 -12.157 26.6439 11.0394 -13.0801 26.3636 11.2414 -12.5931 25.787 11.823 -12.5282 26.2747 12.6775 -12.1461 26.9447 13.3184 -11.179 27.0971 13.6292 -10.6438 26.2818 13.6149 -11.077 26.1526 14.4865 -12.0321 25.9221 14.1312 -12.3828 24.9016 13.9001 -12.5856 24.9888 12.88 -12.1197 24.5077 12.0823 -11.7748 23.5764 12.0654 -12.6625 22.9886 12.2 -12.6006 23.596 11.3794 -13.3273 23.9627 10.8952 -14.1563 23.944 11.5735 -13.7962 23.0416 11.8159 -14.3659 22.4795 12.3967 -15.2265 22.8635 12.778 -16.0806 22.7584 13.3002 -15.3114 22.661 13.9793 -15.1206 21.729 14.2311 -14.1192 21.7147 14.6532 -13.3143 21.1658 14.9458 -13.0042 20.9101 14.0569 -13.8295 20.735 13.4289 -13.8301 19.7911 13.8128 -14.5073 19.1431 13.3365 -13.9771 19.1618 12.4972 -13.8217 18.8399 11.4701 -13.3685 19.5642 10.8858 -12.7452 19.295 11.574 -12.8498 20.2966 11.6854 -13.8015 20.5411 11.5048 -14.7299 20.3369 11.1592 -15.5037 20.2446 10.4598 -16.1679 21.0429 10.562 -17.072 21.2172 11.0693 -17.4452 20.6359 11.8201 -18.3124 20.6169 11.3784 -19.1787 20.8812 10.9912 -18.8708 21.2824 10.118 -18.7887 21.9613 10.8269 -18.77 22.7691 10.1705 -19.5865 23.3336 9.92965 -20.047 23.9898 9.38812 -20.7304 24.5113 8.90637 -20.8597 25.4686 8.95764 -20.0115 25.8573 8.61215 -19.2508 26.4674 8.83629 -18.2497 26.3368 9.03043 -17.8216 25.821 9.78176 -17.4105 24.9419 9.85263 -18.0648 24.8341 10.5244 -18.5899 25.0776 11.3178 -17.8312 25.3003 11.9591 -17.5132 24.4242 12.3542 -16.9352 23.9629 11.7169 -16.59 24.7561 11.2072 -16.225 25.6657 11.1164 -16.3976 26.6015 11.3168 -16.0837 26.783 12.1821 -16.1554 25.8557 12.4867 -16.2969 25.9708 13.465 -17.2458 26.1884 13.695 -18.075 25.6158 14.0262 -17.1653 25.2234 14.0932 -16.8765 24.4535 14.5688 -17.0529 23.486 14.7915 -16.2266 23.6471 15.2795 -15.4378 23.5375 15.8422 -15.0973 24.2127 15.3306 -15.3297 24.702 14.5321 -15.083 25.6001 14.8539 -14.8071 26.1133 15.604 -15.0478 25.7755 16.4797 -15.4168 25.172 17.2125 -14.827 24.4044 17.4669 -14.8107 23.752 18.2633 -14.9055 22.7441 18.4027 -14.8851 23.1519 19.3414 -14.1334 22.4733 19.0626 -13.4919 22.8963 18.4085 -12.6986 22.5425 17.8622 -12.0652 22.1757 17.1642 -11.671 22.9959 16.7596 -11.348 23.7736 17.328 -10.5187 23.8904 17.7988 -10.0241 24.688 17.5267 -10.1689 24.9539 18.5082 -10.2349 25.7942 19.1143 -10.0481 25.1283 19.8082 -10.2896 24.37 20.3001 -9.7145 23.6122 20.1175 -10.0751 23.2358 21.0331 -9.8934 23.4121 21.9878 -9.2328 23.1209 22.7419 -9.5182 22.2849 22.2417 -10.3112 22.3718 22.7989 -11.1268 22.5881 22.2292 -11.5483 21.6471 22.4219 -12.0071 21.1386 23.2249 -11.9375 20.5329 24.0381 -12.2235 19.7857 23.4639 -11.4158 19.3232 23.0516 -10.5006 19.02 23.0349 -10.3633 18.0752 23.1254 -11.1725 17.7387 23.6125 -11.7715 17.1881 24.2441 -11.3384 17.3945 25.1652 -11.4943 16.7158 25.9148 -11.812 16.5331 26.8137 -12.4427 15.897 26.3566 -11.8324 15.1732 26.7629 -10.8442 15.4231 27.0729 -10.6878 14.9132 27.9124 -11.2174 14.2899 27.3407 -10.5364 13.6192 26.9137 -9.78373 13.0316 26.4913 -10.4367 12.5377 25.8935 -9.7265 11.8443 25.9003 -9.2275 10.9825 25.7945 -9.07816 11.3501 24.8561 -8.63833 12.0217 24.2689 -8.53077 12.8619 24.7417 -7.78698 12.8511 25.463 -6.98246 12.4768 24.9661 -6.84058 12.0888 25.8546 -6.77492 12.9021 26.2877 -5.99308 13.0142 25.6129 -5.99506 12.43 24.835 -5.30167 13.1794 24.766 -5.79976 13.8332 24.2231 -5.89589 14.6664 23.7055 -5.2393 15.2605 23.9603 -5.68312 15.6559 23.1649 -5.47411 16.5985 23.0154 -5.74914 17.2512 23.6932 -6.49155 16.5699 23.7354 -6.80229 17.2071 24.3655 -7.38697 17.7632 24.9109 -7.92244 17.1467 25.5154 -8.08342 16.2268 25.7783 -8.40244 15.7525 26.5445 -8.46503 14.7762 26.3262 -8.98402 14.0911 25.9222 -9.40273 13.7477 25.1217 -9.16909 13.7073 24.1306 -9.71616 14.4636 24.4038 -10.5092 14.3349 25.0334 -10.8769 13.4162 25.2291 -10.6772 13.0207 24.281 -10.541 12.1187 23.8799 -10.7067 12.4188 22.9558 -11.1978 13.1747 22.5535 -11.7828 13.9926 22.4403 -12.6507 14.3767 22.7017 -13.4796 14.214 22.3097 -14.3599 14.6168 22.6458 -14.381 15.3989 22.0781 -14.4782 14.6835 21.3918 -15.4083 14.5248 21.3374 -16.1136 15.1905 21.5533 -15.7117 16.0728 21.2385 -15.1002 15.6604 20.5305 -14.2479 15.7855 20.0208 -13.3288 15.8352 20.2615 -13.2092 15.375 19.4074 -12.3277 15.3223 19.9857 -11.904 14.3491 20.0366 -11.6727 14.5485 19.0667 -11.7532 15.1607 18.2615 -11.8302 16.0297 17.7796 -12.0537 16.8023 18.2977 -11.1973 17.1412 17.8104 -10.2785 17.1253 17.487 -9.94878 16.2338 17.2609 -10.0638 15.3269 17.4453 -9.81221 14.4831 17.9106 -10.4752 14.215 18.6322 -10.149 13.6965 19.4527 -10.6714 14.3559 19.9304 -10.2748 14.5745 20.7843 -10.2575 15.6136 20.8212 -10.3386 16.5823 20.8847 -10.0445 16.2233 21.8288 -9.4007 16.148 22.5944 -8.94161 16.69 23.3756 -8.03636 16.8379 23.6793 -7.73322 16.0059 23.2497 -7.55178 15.3288 22.5436 -7.58923 14.6598 21.8272 -7.17785 13.8445 22.2071 -6.16185 14.0959 22.3406 -5.61312 14.1045 21.5167 -4.80066 13.5033 21.6329 -4.39877 14.1715 21.0015 -5.0702 14.0124 20.2845 -6.11567 14.1393 20.4838 -6.64264 13.8411 19.6749 -7.3106 13.4 19.0825 -7.14846 14.2448 18.5467 -7.75723 14.5439 19.2515 -7.82049 14.936 18.2848 -8.3778 14.1251 17.9829 -8.24315 13.2509 17.7134 -7.64481 13.1689 16.9582 -7.2356 12.7637 17.6637 -6.35038 12.4289 17.8969 -5.38057 12.0977 17.8386 -4.94692 11.259 17.5019 -5.10903 10.737 18.3533 -5.05627 11.6457 18.8295 -5.86968 12.146 19.0777 -5.93064 12.6497 19.9711 -5.9562 12.7313 20.9984 -6.73811 12.6869 21.6152 -7.13979 11.7413 21.4644 -6.91214 11.049 20.7659 -5.97127 11.088 20.4041 -5.30284 11.6808 20.9141 -4.31643 11.5921 21.0998 -3.8686 11.013 21.7232 -3.64857 10.1019 21.9853 -3.03751 9.59302 21.3178 -2.75026 10.3692 20.7132 -3.4621 10.2988 19.9846 -2.71198 9.96935 19.3434 -1.79661 9.97789 19.7307 -1.58902 9.92466 18.7596 -1.06091 10.1656 17.8914 -1.8455 10.8255 18.1189 -2.82133 10.6043 17.9325 -3.00277 11.4644 17.4601 -3.37622 11.6023 16.6212 -3.2405 12.3594 17.2945 -3.60379 13.0061 16.6469 -3.07322 13.6242 17.261 -3.95514 13.6509 17.8213 -4.4186 14.4831 18.0627 -4.90865 14.873 17.2508 -4.98359 13.9119 16.877 -5.82558 13.8999 16.2672 -6.51645 14.3458 16.8699 -6.66938 15.1998 17.3801 -6.21068 16.0344 17.2566 -5.45392 16.2158 17.8528 -6.19443 16.6439 18.4787 -6.20313 17.6604 18.685 -6.37458 18.3672 19.2102 -6.41231 18.8617 18.3044 -6.42563 18.8582 17.3428 -5.72958 19.5497 17.0827 -5.77572 20.5642 16.8777 -6.21953 21.0864 16.1538 -6.86863 21.8132 16.3163 -6.05717 22.2626 16.7261 -5.18854 21.9938 16.9603 -4.66797 21.4398 17.5349 -4.2928 20.6379 18.0066 -4.92757 20.373 18.7224 -4.63358 20.217 19.6439 -3.70648 20.4738 19.797 -3.89606 19.7361 19.1519 -3.47613 18.8165 18.9535 -3.61423 18.9099 19.9454 -3.66033 18.3081 20.6718 -3.93145 17.9559 21.51 -3.14501 17.5259 21.9473 -3.74516 16.9755 22.5695 -3.1169 17.4008 23.2479 -3.52037 18.0968 23.8657 -3.40116 17.9086 24.8153 -3.22092 18.8038 25.2311 -3.3023 18.0767 25.9406 -3.67426 17.5491 26.7974 -4.27153 18.2495 27.1184 -5.2539 18.1326 27.2486 -4.81265 17.2694 27.7161 -4.11262 17.5534 28.387 -3.81158 16.6628 28.404 -3.46734 16.2581 29.2664 -4.33899 16.3849 29.7207 -4.97567 15.664 29.7689 -5.92271 15.8015 29.4248 -6.084 14.8739 29.773 -5.93299 14.6037 30.7483 -6.81388 14.8247 31.2398 -7.17747 14.4835 30.3646 -7.44496 13.6027 29.8667 -7.39203 14.4106 29.2151 -8.0244 15.0319 28.7407 -8.98983 14.7923 28.6913 -9.52146 14.1448 29.0741 -9.1562 13.2955 29.501 -10.1473 13.2792 29.6592 -11.1708 13.2211 29.6536 -12.0244 12.7961 29.5174 -12.2859 12.6554 28.4883 -11.4104 12.2653 28.224 -11.8973 11.7198 28.8035 -11.7694 10.9414 29.3836 -11.6474 10.2548 28.5984 -10.8349 10.806 28.4936 -9.9169 11.1794 28.3218 -9.4649 11.788 27.6549 -8.72195 12.2037 27.0761 -8.06782 11.4389 27.1509 -7.09883 11.1017 27.2139 -6.83647 10.7229 26.2768 -6.19663 9.9921 26.6075 -5.2019 9.95132 26.3525 -4.35487 9.39658 26.2686 -4.43745 10.0841 27.0775 -3.67501 10.6699 26.8501 -3.76266 10.8304 27.8738 -4.53866 11.0879 28.4944 -4.3801 11.6155 29.361 -5.30423 11.1764 29.3084 -6.15691 10.7022 29.0359 -6.17047 9.86717 28.5594 -6.49364 9.03109 29.0423 -5.89402 8.29601 29.3114 -6.85399 8.16149 29.7211 -7.79699 8.04617 29.788 -7.63673 8.35694 30.734 -6.96324 8.70819 31.3681 -6.01158 8.90959 31.5562 -5.80026 8.7009 30.6512 -5.77275 9.72164 30.6364 -5.33458 10.2781 31.3703 -4.95336 10.9439 30.8161 -4.1037 10.7513 31.2732 -3.62842 10.5475 32.152 -3.08687 10.3253 32.9841 -3.1527 11.326 32.9572 -3.95797 11.7852 32.403 -3.75525 12.399 31.7145 -3.17388 12.8207 30.9924 -3.24947 12.7123 30.0189 -2.26276 13.0476 29.9154 -2.97267 13.182 29.2231 -2.60031 12.2582 29.1089 -2.20285 11.86 28.3406 -2.13847 11.0742 27.7767 -2.45746 10.6357 27.0069 -2.34249 9.70255 26.6191 -2.91316 8.85196 26.773 -3.54106 8.42075 26.1226 -4.06339 7.83031 25.5095 -4.66787 8.5007 24.9348 -4.40158 7.70442 24.4395 -4.36608 7.86712 23.4306 -4.27657 8.32036 22.5546 -4.19186 8.25011 21.578 -4.486 8.80145 20.8238 -5.11857 9.39305 21.3134 -5.48588 8.52843 20.9492 -6.09228 9.26168 20.7977 -6.72213 9.49793 21.5202 -6.94051 9.22803 22.4674 -7.5584 8.36442 22.3992 -6.64869 7.87943 22.6052 -6.75478 7.13995 21.9385 -7.42495 7.17168 22.6934 -8.06266 7.10432 21.9347 -8.78813 6.5464 21.765 -9.49763 5.89254 21.3206 -8.96839 5.08261 21.6855 -8.13699 5.2072 21.029 -7.25405 5.38528 20.4861 -7.13164 4.64201 19.8285 -7.81366 4.32258 19.1134 -7.11194 4.15977 18.4212 -6.34287 4.71205 18.1971 -5.45159 4.51355 17.9012 -4.74387 5.06407 17.4374 -4.08305 5.67654 17.805 -4.3706 5.5881 18.7239 -3.38461 5.59909 18.8178 -2.33206 5.52283 18.894 -2.35443 6.33722 18.2594 -1.44366 6.00948 18.4344 -1.58797 6.61738 17.6868 -1.77572 7.22474 16.9483 -2.68533 7.64907 16.859 -3.02578 6.67946 16.8036 -2.62176 6.96221 15.9011 -2.81326 7.64854 15.1511 -1.79998 7.69857 14.9272 -2.07419 7.82366 13.9377 -1.70714 8.76308 13.8124 -2.25939 9.16749 14.6053 -2.90504 8.72859 15.2783 -3.66132 8.32567 15.8402 -4.17419 8.09563 16.6691 -3.99549 7.7211 17.5638 -3.50258 8.05203 18.3565 -4.31441 8.62916 18.0987 -4.96493 7.82081 18.2689 -5.1183 6.87635 18.2153 -5.17178 6.89134 19.2375 -5.15518 6.628 20.2703 -5.54241 5.97579 20.9506 -5.11574 5.54916 21.7207 -4.28973 5.7359 21.2298 -4.44788 4.90858 20.7328 -4.15657 3.93211 20.9412 -4.03097 3.6763 21.9263 -4.71772 3.64708 22.5632 -4.70452 3.01125 23.4021 -4.03494 3.67241 23.7415 -4.5555 4.55799 23.7131 -5.06738 4.80971 24.4474 -5.385 3.89037 24.4405 -5.71737 3.23981 23.7206 -6.27241 3.15452 22.9025 -6.83909 3.4176 23.7004 -7.53289 2.75636 23.4826 -6.93562 2.02137 23.5891 -7.66254 1.70929 22.9323 -7.60368 0.7879119 23.3328 -8.34709 0.1960579 23.2344 -9.19516 0.1462779 23.7769 -8.55125 -0.01097937 24.4814 -7.82877 -0.2292221 25.1968 -8.01547 0.6502919 25.6395 -7.14262 0.6265179 25.0991 -6.15159 0.6755779 25.1246 -6.3408 0.1507719 25.939 -5.4636 0.08107533 26.3536 -6.17452 -0.1008751 27.0281 -5.43235 0.4709029 27.358 -5.78533 1.23388 26.9711 -5.64912 1.74791 27.8191 -4.76613 1.63876 27.3604 -4.72962 1.16696 26.52 -3.87763 1.13636 27.0719 -4.11712 0.7627909 27.97 -3.3538 0.2300269 27.7944 -2.6415 -0.2687261 28.2678 -1.80274 -0.1115071 28.772 -2.06811 -1.0332 29.0761 -2.80884 -1.03385 29.7229 -3.13887 -1.93097 29.9609 -3.59354 -2.81243 29.6527 -3.06096 -3.50027 29.0532 -2.8939 -2.62539 28.7147 -3.32566 -2.75122 27.8683 -4.25248 -2.66775 27.5028 -5.13384 -3.1324 27.8722 -5.70906 -3.97261 27.5377 -5.67334 -3.75598 26.5732 -6.53417 -4.18608 26.5549 -6.74668 -4.55305 27.4826 -6.41604 -5.33576 28.0654 -6.53964 -5.73901 27.2106 -6.92942 -6.58858 26.8949 -6.62765 -7.02312 26.0217 -6.59777 -8.05148 25.7563 -5.89667 -8.46373 25.1942 -6.24888 -9.41075 24.8693 -7.0431 -9.10277 24.4654 -7.90844 -9.08314 25.0605 -7.56327 -8.17633 25.4744 -7.37966 -8.67747 26.3091 -6.93668 -9.54041 26.3098 -7.74371 -10.0842 26.0233 -8.669 -10.0152 25.6563 -9.25345 -10.2653 26.3994 -10.0859 -10.6764 26.8445 -10.0248 -11.6348 27.009 -9.82829 -11.6095 28.0004 -10.1305 -10.6303 27.9113 -10.4076 -10.4078 28.8585 -10.8215 -9.82706 28.1551 -11.2965 -10.0494 27.2895 -10.9906 -10.4322 26.3962 -11.2453 -9.90729 25.5644 -11.5115 -9.46594 24.6828 -12.0599 -9.35044 23.8577 -12.4506 -10.1989 23.6662 -13.2319 -10.6538 23.2063 -14.0192 -10.0608 23.0569 -14.3234 -9.87886 22.1544 -13.2621 -9.93587 22.1171 -13.2482 -9.29856 22.8548 -13.8894 -8.89802 23.4765 -13.1307 -8.2646 23.5006 -13.5097 -7.48339 22.9268 -13.0098 -6.84747 22.3524 -12.0478 -6.89717 22.0691 -11.8979 -6.95152 23.0482 -12.4151 -6.21283 23.4581 -13.4141 -6.14223 23.7435 -13.2652 -5.54623 22.9691 -14.1843 -5.227 23.0287 -14.6178 -4.96441 23.8616 -14.3678 -4.08116 23.398 -14.4964 -4.27772 22.449 -15.3889 -4.53248 22.5092 -15.1919 -3.78081 21.8119 -16.0753 -3.76027 21.4212 -16.9256 -4.3013 21.4558 -16.5942 -3.89536 22.2921 -16.8359 -4.14391 23.2042 -17.0576 -4.4813 24.1293 -17.2843 -5.45216 24.1441 -16.7426 -6.16347 24.6898 -15.9923 -5.52055 24.812 -15.517 -6.32954 24.597 -15.7361 -7.00867 23.9283 -15.1724 -7.75875 23.8794 -14.8788 -7.17601 23.0878 -15.4073 -7.48229 22.3386 -15.4079 -7.83015 21.4445 -14.8586 -8.04783 20.6712 -14.4437 -7.72601 19.8892 -15.1299 -8.2832 19.6482 -14.8062 -7.63021 18.9998 -14.6148 -6.74048 18.9028 -14.2714 -6.13987 18.2141 -13.8871 -5.30856 18.4728 -14.0805 -4.34682 18.8855 -14.9198 -3.87766 19.2074 -15.4108 -4.06909 18.3904 -16.2627 -4.09087 17.8448 -15.6379 -4.16395 17.0492 -14.9897 -3.71304 16.4427 -14.9306 -2.72037 16.1074 -14.9572 -3.29554 15.2881 -14.6791 -3.59497 14.3911 -14.1764 -2.80789 14.011 -13.6652 -2.16715 13.6322 -13.251 -1.55345 13.0246 -13.4706 -0.7146921 12.5843 -13.9814 0.04938563 12.1996 -13.9307 0.8130229 11.6357 -13.4414 0.4504269 10.868 -12.4467 0.5425829 10.8432 -12.486 1.48008 10.6742 -13.4049 1.78494 10.3533 -13.9047 0.9934809 9.98834 -13.9411 -0.05474867 9.78133 -14.1803 -1.03485 9.48234 -14.7784 -1.34443 10.2225 -13.8835 -1.46052 10.7235 -13.9518 -2.31155 10.3214 -13.613 -2.90334 9.68777 -13.2296 -3.36057 10.4842 -12.9176 -4.31824 10.6244 -13.7059 -4.6044 11.2969 -13.757 -4.80376 10.2754 -14.3824 -4.22222 9.75408 -13.6863 -4.60029 9.16339 -14.3466 -4.0723 8.69729 -13.7447 -3.35285 8.47338 -13.6996 -2.52823 7.91387 -14.1962 -1.71481 8.38885 -14.9682 -1.10501 8.17248 -15.2871 -1.01043 9.10444 -16.1268 -0.4999501 9.31572 -15.7794 0.1632959 8.63851 -16.0393 0.9525639 9.19816 -15.68 1.927 9.32495 -15.6757 2.2787 10.2615 -15.7966 2.89705 11.0662 -16.7529 3.10876 11.1791 -16.4655 3.22631 12.1279 -16.0967 3.91034 12.7495 -15.8919 4.61002 12.1337 -16.0366 4.91532 13.0202 -15.1417 4.50705 13.3845 -14.7688 4.72655 14.2144 -14.1368 5.12329 13.5832 -13.1444 4.88784 13.4299 -12.9502 5.65377 12.7662 -12.1951 6.18554 12.9641 -11.446 6.78359 13.1083 -10.8868 6.06088 13.2966 -11.3182 5.49575 12.5963 -11.5103 4.61306 12.1641 -11.3794 3.83613 12.8266 -10.8849 3.07006 12.5058 -10.1027 3.71495 12.5519 -9.87151 3.2199 13.4096 -9.00304 3.1379 13.9776 -8.16053 2.56427 14.2357 -8.20198 3.23262 14.9202 -8.10338 3.91768 14.2731 -8.34986 3.90585 13.2734 -7.5945 3.33275 12.8575 -6.60976 3.55827 12.8089 -5.96274 3.98748 13.5143 -6.00076 3.68643 14.49 -6.40417 2.77441 14.5 -6.48775 1.84045 14.673 -5.81856 1.15471 14.4001 -5.7111 0.5908089 13.6081 -5.19288 -0.3071891 13.4822 -5.167 -0.5099661 12.5665 -6.07795 -0.7171511 12.2685 -6.86779 -1.34185 12.5276 -7.60599 -1.22059 11.9222 -7.76014 -0.8555171 10.9896 -8.23318 -0.1770331 10.5144 -8.52851 -0.5071431 9.54936 -7.86104 0.09938203 9.09165 -7.61109 1.03826 9.47082 -6.61581 1.37236 9.51416 -6.57228 1.04714 10.5053 -7.08009 1.53682 11.2303 -7.46249 1.66948 12.1627 -7.75646 1.17323 12.9802 -8.70197 1.3379 12.7974 -9.62682 1.45664 12.873 -10.0843 1.69849 12.0566 -10.5484 1.28525 12.8226 -10.1589 0.4427179 13.3111 -9.41138 -0.2212881 13.241 -9.59321 -1.03497 13.8784 -9.10637 -1.78241 14.2204 -8.70874 -2.31484 13.4754 -9.69507 -2.15197 13.5429 -9.43707 -2.70695 12.7621 -10.2278 -2.45007 12.1752 -10.9912 -2.74363 12.7618 -11.7846 -3.24963 12.4902 -11.9593 -2.66412 13.2806 -12.3837 -2.76762 14.1813 -12.7288 -2.2054 14.9489 -12.7979 -1.54393 14.1709 -13.2274 -0.9802271 14.7689 -13.59 -0.8055091 15.6665 -14.2092 -1.38015 16.1953 -13.3278 -1.59949 16.5575 -13.7343 -1.19357 17.4026 -14.5516 -0.8031841 17.0419 -15.4511 -1.24661 17.1641 -16.3481 -1.46505 16.8155 -16.3932 -2.48753 16.7994 -16.9541 -2.06209 17.5595 -17.4292 -2.77426 18.1052 -16.4865 -2.93345 18.5016 -15.5066 -2.77684 18.6182 -14.6339 -2.13776 18.5876 -14.0476 -2.30273 17.7193 -13.6734 -3.2085 17.4798 -12.686 -2.986 17.6083 -12.618 -3.42429 18.5318 -11.9578 -4.08473 18.2815 -11.8053 -4.00621 17.329 -11.5548 -3.09533 17.1543 -10.8127 -3.70869 16.8652 -10.2885 -4.5823 16.8784 -10.3007 -5.50636 16.8819 -9.84575 -5.77082 17.7078 -8.96114 -6.29061 17.5076 -8.20881 -6.39839 18.1928 -7.97408 -5.66667 18.7272 -8.94219 -5.50771 18.7807 -9.33586 -4.66109 18.3976 -9.58334 -3.74524 18.169 -10.0558 -2.99654 18.5721 -10.3261 -2.17994 19.052 -9.87826 -1.87852 19.9582 -10.3915 -1.1466 20.3723 -9.91799 -1.47197 21.248 -10.4979 -1.78229 22.0685 -11.1285 -2.26067 21.4805 -12.0667 -1.93487 21.6289 -11.5094 -1.09751 21.7772 -11.8324 -1.48511 22.6063 -11.5898 -2.22028 23.153 -11.1425 -3.06814 23.1788 -11.1393 -3.26573 24.1209 -10.3468 -3.69427 24.3994 -9.78458 -2.9825 24.1548 -8.77558 -2.80029 24.412 -8.98645 -2.30571 25.18 -9.17642 -3.11509 25.7512 -10.0537 -3.29154 26.3479 -10.113 -3.98426 25.586 -11.0341 -4.57612 25.6194 -11.459 -3.89638 25.0592 -11.8782 -4.77921 24.8377 -12.1817 -5.67274 24.8694 -11.8553 -6.55028 24.7432 -10.8807 -6.37412 24.6808 -10.3183 -6.84417 24.0472 -9.70865 -7.23213 24.7356 -9.02726 -7.04168 25.4255 -9.53376 -7.7919 25.837 -10.2576 -8.25773 26.3056 -10.7327 -8.54283 25.4576 -11.1553 -7.69795 25.4991 -11.7942 -7.6417 26.2663 -11.183 -6.92657 26.4557 -11.3368 -6.88643 27.4363 -10.5413 -7.42872 27.5689 -10.2789 -6.56315 28.063 -9.6465 -6.00439 28.6281 -9.65643 -5.04917 28.336 -10.129 -4.58773 29.0517 -10.479 -4.89578 29.8513 -9.53986 -4.78092 30.2757 -8.61026 -4.58552 30.7869 -8.66983 -4.64549 31.8052 -7.69753 -4.39888 31.9216 -7.22706 -3.49279 32.0981 -7.72875 -2.68339 31.8765 -8.52831 -3.10826 32.1425 -9.34558 -3.7333 32.2147 -9.73542 -3.00303 31.6795 -10.5476 -2.61035 32.0392 -10.8089 -1.82797 31.5166 -10.394 -1.62277 30.632 -10.2663 -2.02692 29.7972 -9.40174 -1.60961 29.3877 -9.6856 -1.65649 28.4208 -8.82929 -1.22927 28.1469 -8.91014 -0.2863901 28.4898 -8.26707 0.4336719 28.7769 -8.27715 1.11368 27.9907 -9.15313 1.13908 27.6027 -9.65913 1.34412 26.8252 -10.688 1.43576 26.744 -11.2138 0.8368559 27.3607 -11.9458 1.01359 28.011 -12.9451 1.28594 27.8279 -12.685 0.6458979 27.0878 -12.1137 0.04405823 26.4796 -12.2049 0.8889659 25.955 -11.5692 1.72429 26.1229 -11.1495 1.28377 25.2722 -10.2178 1.46377 25.1716 -9.35449 1.3909 25.5493 -8.61412 2.12505 25.6995 -9.16634 2.79496 25.2318 -9.29508 3.24273 24.3861 -10.084 3.70113 23.9425 -10.2336 2.95235 23.3514 -9.46786 2.4155 23.0402 -9.99157 1.538 22.9076 -10.8664 1.62851 22.5424 -10.8125 2.59707 22.3027 -11.237 2.16684 21.482 -11.3193 2.54684 20.5291 -10.7011 2.29663 19.759 -11.5994 1.82019 19.5986 -12.0236 0.8752639 19.8116 -11.4219 0.2110019 19.3663 -11.3451 -0.5150101 18.6454 -11.2283 -1.13147 17.8607 -11.9879 -1.07397 17.1963 -11.4515 -0.9004621 16.4308 -11.8985 -0.1433131 16.7667 -11.6799 0.2870219 15.8704 -11.1761 1.13096 15.9139 -10.9186 1.77537 15.2057 -10.7785 1.29961 14.3642 -11.6151 1.18444 13.7393 -12.2366 1.44217 14.4751 -13.0447 1.92905 14.0729 -12.8892 2.97146 13.893 -11.9511 3.09433 13.4421 -11.3192 3.23568 14.2748 -11.7929 2.84565 15.1046 -11.2698 3.41564 15.6706 -11.1384 3.01946 16.5802 -10.6589 2.49655 17.2539 -11.2522 2.86435 18.0497 -11.2427 3.36534 18.8726 -11.1062 3.95548 18.0465 -12.0571 4.02108 17.8523 -12.4592 3.27076 17.3534 -12.1802 2.34927 17.6254 -12.2781 1.6518 18.3534 -12.2089 0.9344209 17.6923 -13.1974 0.9692519 18.0457 -13.1196 1.14103 17.0289 -13.3661 1.10824 16.0462 -14.2005 1.24791 15.5089 -14.0919 1.91489 16.3058 -14.9936 1.39919 16.3196 -15.4992 1.00876 17.052 -16.3741 0.5508839 17.3422 -15.9202 0.1642279 16.5317 -16.673 0.6565399 16.1588 -17.5071 0.3758769 16.6387 -17.9465 -0.1131991 15.9464 -17.5937 -1.02034 15.518 -18.5633 -1.38513 15.5445 -18.2419 -2.31757 15.4582 -18.5526 -3.12031 16.1493 -18.4903 -3.53774 17.041 -18.4009 -4.12716 17.8169 -18.6403 -4.08016 18.8088 -19.5521 -4.4028 18.9664 -19.7684 -3.69501 18.3907 -20.7113 -3.35071 18.5856 -21.2562 -4.23978 18.6343 -21.2725 -5.02789 19.235 -21.0628 -5.18564 20.1572 -21.0755 -6.05535 20.6042 -21.238 -5.51159 21.4119 -22.11 -5.56672 20.8921 -22.1462 -4.58225 20.6628 -22.6379 -3.75533 20.6644 -22.9279 -4.3441 19.9213 -23.3375 -3.45441 19.9475 -24.0123 -3.84834 20.547 -24.9976 -3.61375 20.6044 -25.3775 -3.4625 21.5036 -25.4171 -4.00249 22.3013 -25.9213 -3.44605 22.9095 -25.384 -2.957 23.6738 -25.5104 -2.23344 23.0119 -24.6118 -1.81156 23.0914 -23.7394 -1.33897 22.9139 -23.7749 -0.4516421 22.6126 -23.7934 0.3108499 22.0091 -23.1378 0.7515379 22.5913 -22.9673 0.1470669 23.4084 -22.2618 0.1154579 24.0446 -22.1833 0.7096699 24.819 -21.4625 0.07802103 24.9742 -21.3201 -0.9315631 24.966 -21.5547 -1.34541 25.894 -21.157 -1.21627 26.754 -20.3737 -0.8004481 27.2723 -20.4621 -0.3510251 26.3469 -19.9952 0.4088479 25.9898 -20.2401 0.9407229 26.7606 -20.6526 0.8001589 27.6774 -21.5244 0.7892129 28.2144 -20.9618 1.1824 28.9294 -20.7957 0.2847939 28.7416 -20.2962 -0.3471191 29.3111 -19.3019 -0.3835591 29.5466 -19.1044 -0.07999017 28.5865 -18.6553 -0.5826331 27.8584 -18.0058 -0.9659451 28.6202 -18.3797 -1.81818 29.0703 -17.3658 -1.74673 29.292 -16.7437 -1.20529 28.6812 -16.696 -0.6326311 27.8879 -16.7478 0.04635923 28.6641 -15.781 -0.2604031 28.4639 -15.1599 0.4281279 28.8535 -14.2284 0.5908989 28.8654 -14.3075 -0.2904611 29.3442 -14.4573 0.001689104 30.2382 -13.7239 0.1361979 30.9237 -12.9272 0.5672949 31.4148 -12.7486 -0.1933981 32.0451 -13.1864 -0.8986591 31.503 -13.7647 -1.63492 31.6215 -14.5801 -1.49559 31.0742 -15.4559 -1.7169 31.4208 -14.9315 -1.38825 32.2183 -15.4397 -1.79638 33.0355 -14.573 -1.22908 33.3272 -14.3777 -1.94975 33.9461 -13.8537 -2.64104 33.4781 -12.9718 -2.9522 33.1792 -12.5867 -2.00675 33.5023 -11.8773 -1.91914 32.6735 -11.0842 -1.25841 32.9303 -10.4035 -0.7576341 33.4396 -10.0371 -0.8152961 32.5088 -9.15791 -0.3263291 32.3486 -8.62221 -0.2834061 31.5334 -9.16311 -0.4640701 30.6786 -9.8489 0.1951219 30.3072 -10.6335 0.7299999 29.9953 -10.1671 1.28634 30.7392 -9.90994 1.727 29.8593 -10.2143 2.30198 29.1265 -10.305 3.288 29.2888 -9.809 4.21565 29.3885 -10.5271 4.27244 28.6783 -10.2038 3.44909 28.2022 -10.9709 2.80958 28.3122 -11.3269 3.54162 27.7484 -11.4199 3.90209 26.8356 -11.4511 3.565 25.863 -10.4817 3.71934 25.5981 -10.5265 4.63526 26.0987 -10.3726 5.17692 26.9072 -9.91341 4.64487 27.5389 -9.13626 4.16276 27.8837 -8.37625 3.51115 27.5416 -7.58766 3.49862 26.8869 -6.95528 2.9456 26.3842 -5.97325 3.15709 26.3611 -4.99867 2.99623 26.0442 -4.99613 3.92113 26.2843 -5.00119 4.87825 26.6897 -4.23583 5.16614 27.3246 -4.30855 4.79378 28.2519 -4.04788 5.74211 28.3073 -4.95801 6.22906 28.4354 -5.59581 5.41982 28.5028 -4.76738 5.38686 29.0148 -5.47954 5.52196 29.7948 -5.09839 4.56593 29.8502 -4.12676 4.60173 29.9187 -3.18381 4.75357 30.1689 -2.71193 5.50878 30.703 -2.06905 5.9324 30.1795 -1.76248 5.82305 31.0608 -0.789086 6.11515 31.0101 -1.03261 6.47333 31.8987 -0.762365 6.40693 32.8685 -0.790483 7.39789 33.2033 -0.809175 8.23667 33.7979 -0.547769 7.34979 34.2299 --0.320565 7.50619 34.6679 --1.13294 7.62519 34.0777 --1.80305 8.18581 34.5538 --2.46556 8.40657 33.8674 --2.81454 8.804 32.9615 --3.16984 9.77009 32.8533 --3.50138 10.0469 31.985 --4.51022 10.2717 31.9634 --5.4374 10.0014 31.7056 --5.66918 10.5822 30.8296 --5.27053 10.9557 29.9762 --4.30525 11.01 30.0811 --3.59771 11.6917 30.1106 --4.06496 12.4745 30.6189 --4.30454 13.3517 30.1327 --4.7354 13.146 29.2417 --4.43759 13.8247 28.5367 --4.44589 13.2246 27.6776 --3.54471 12.8259 27.4431 --2.97426 11.9721 27.7024 --2.63082 11.8427 26.7701 --1.79132 11.478 26.4223 --2.04564 11.1707 25.5062 --1.69896 10.2715 25.6491 --2.54514 10.2078 26.0737 --2.92259 10.3012 25.1281 --3.89321 10.1545 25.0886 --4.69932 10.5023 25.4382 --5.44236 10.7704 26.0223 --5.92612 10.8491 25.1167 --5.94666 11.3521 24.2954 --5.98103 10.6516 23.7341 --5.79544 10.9259 22.7268 --6.03681 10.4138 21.8686 --5.02499 10.3981 21.6933 --5.3175 9.76208 20.978 --4.95117 9.22439 20.3478 --4.50195 8.48961 20.7825 --5.14891 7.64304 20.9614 --5.50693 6.71433 21.0533 --6.39082 7.16387 21.3137 --6.15971 7.96535 20.6806 --5.97209 8.60679 21.3932 --6.88254 8.96117 21.3908 --7.5414 8.35542 21.777 --7.96573 9.11367 22.3164 --8.20687 9.93344 21.8859 --9.11952 9.75923 21.4376 --9.37911 8.78747 21.275 --8.92006 8.18755 21.8607 --9.74585 7.6449 21.675 --9.4214 6.74282 21.319 --9.78391 6.42066 20.425 --10.3614 7.0081 19.8029 --10.9148 7.34918 19.0422 --11.4588 7.86553 18.3409 --12.2094 8.21997 18.9922 --12.6787 7.97777 19.7537 --12.5555 7.10324 20.1042 --12.9064 6.45121 19.4266 --13.1518 6.44791 18.4829 --13.7867 5.87947 17.9239 --14.4616 5.30524 17.4434 --15.1579 5.24338 16.7547 --15.8657 5.72659 17.3279 --16.3316 5.04445 17.8508 --17.0806 4.83549 18.3979 --17.6606 5.33174 17.7499 --18.5623 4.85001 17.7364 --19.2185 4.69888 16.9889 --19.6732 3.8089 17.2818 --20.3651 4.52437 17.2226 --20.3227 5.51888 17.5012 --21.1094 6.06236 17.4214 --21.5878 5.23942 17.5871 --21.8801 5.38857 18.5018 --21.2377 6.0622 18.8767 --20.475 5.72109 19.2422 --19.6627 5.69619 18.7191 --18.987 6.17167 19.2432 --19.1327 6.56931 20.1538 --18.5137 5.91762 20.6247 --17.6884 6.37321 20.9763 --17.7948 6.11681 21.9682 --18.2732 5.5893 22.6585 --17.5667 4.89982 22.8932 --16.9097 4.39922 22.5233 --17.2295 3.98463 23.4291 --16.3819 3.36921 23.2535 --16.5822 3.15409 24.2063 --16.9198 3.47553 25.0464 --15.9589 3.19106 24.9607 --15.1913 2.67156 24.5982 --14.6271 3.44168 24.4893 --13.702 3.2744 24.9376 --13.3353 3.43365 24.0285 --13.2848 4.0862 23.2894 --13.1972 3.81034 22.3193 --13.7756 2.99899 22.2779 --14.3248 3.75364 22.6128 --14.5164 3.98136 21.6338 --15.3875 4.31297 21.9605 --15.4825 3.98837 22.8994 --14.8565 4.62548 23.3565 --15.5014 5.18696 22.7354 --16.3159 5.52307 22.2651 --16.3509 6.23878 21.6301 --15.8843 6.24583 22.5212 --16.2967 7.11448 22.3753 --15.4056 7.47757 22.1632 --14.7867 7.79749 22.877 --14.9281 8.57886 23.5063 --14.2384 8.78297 22.75 --14.1538 9.67032 22.3508 --13.4932 9.61191 23.1463 --14.3558 10.0762 23.2016 --14.6818 10.6731 22.4813 --14.1785 10.694 21.6536 --14.067 9.93799 20.9663 --14.6433 9.93238 20.1828 --13.7416 9.56059 20.0677 --13.7089 8.79542 19.3993 --14.7065 8.71758 19.3935 --14.52 8.04798 20.1101 --13.8356 7.39021 20.4236 --14.0701 7.14491 19.4882 --14.5609 6.74878 18.7875 --15.0772 5.91119 19.0819 --14.5916 5.26851 19.6679 --14.383 4.45901 20.1809 --14.6783 3.62418 19.6494 --15.0126 3.5617 20.5823 --15.5845 2.83548 21.047 --14.6093 2.73084 21.4115 --14.7656 1.83973 21.6722 --14.8885 0.9385479 22.1 --15.0353 0.1008669 22.7377 --15.5127 0.3108749 23.6096 --16.2659 0.1665499 23.003 --17.2289 -0.1924341 22.9495 --18.187 -0.4523701 23.2256 --17.827 -0.5251921 24.1657 --18.5091 0.1946159 24.0059 --18.3242 0.6734629 24.8986 --17.5131 0.9857489 24.3253 --16.887 1.66044 24.8039 --17.2923 1.50815 25.6913 --16.9746 0.9162689 26.3324 --16.7503 0.2726529 27.0097 --17.6748 0.5326559 26.7803 --18.2759 -0.3542361 26.7608 --17.9529 -1.32186 26.7978 --18.5836 -1.4212 27.6086 --18.6726 -1.23734 28.6199 --18.8478 -1.38532 29.5823 --18.4953 -0.4692981 29.3457 --18.3006 0.3741809 28.9452 --17.9279 1.13785 28.4125 --17.9008 2.07153 27.968 --18.6189 1.41648 27.6179 --19.1111 0.6868579 28.1118 --19.2358 -0.3026581 28.3022 --19.7716 -0.9590701 27.6981 --20.6998 -1.07101 27.4757 --21.3647 -1.03349 28.1435 --21.0213 -0.1422501 28.4678 --21.1997 -0.09121377 29.5062 --20.8746 0.6891999 28.9494 --21.6105 1.10457 29.4108 --22.0436 0.7902849 28.5038 --23.0433 0.7767919 28.2355 --22.5049 -0.09148827 28.2411 --23.3058 -0.3401701 27.6968 --23.6874 -0.3061921 26.7915 --23.4645 -0.8401271 25.9568 --22.9186 -1.11428 25.0957 --22.5432 -2.06446 25.0774 --23.0421 -2.91505 24.6293 --23.1389 -3.66669 23.9348 --23.1328 -2.78367 23.5223 --23.9242 -2.17944 23.4265 --24.6522 -2.87911 23.3929 --24.9237 -2.18173 22.7169 --25.7609 -2.60663 22.722 --25.8535 -1.64407 22.6945 --24.9753 -1.07581 22.8646 --25.6662 -0.5610121 22.3817 --24.9302 -0.1339661 21.9277 --24.4414 -0.06187377 21.0273 --25.1635 -0.6854571 20.8387 --25.0061 -0.04801927 20.1002 --24.4987 0.6623519 19.7567 --23.6091 0.9984749 20.1518 --23.1415 1.00536 20.9724 --22.3655 0.4108719 21.2204 --22.1078 -0.04754077 20.4028 --21.135 -0.3402271 20.3023 --21.375 -0.8269201 21.1243 --20.4018 -0.6765591 21.2813 --19.8768 -1.42046 20.8733 --20.1698 -1.28786 19.9457 --19.5924 -0.4982951 19.721 --18.876 -0.4377271 18.9896 --18.4751 0.04940623 19.7843 --17.485 0.09339073 19.5815 --17.2054 -0.8796381 19.5343 --17.0477 -1.51909 20.2887 --16.4202 -2.16723 20.7375 --16.8472 -3.02566 20.2944 --17.4558 -3.72183 19.9951 --17.3843 -2.83138 19.4716 --18.217 -2.63031 19.0868 --18.2203 -3.47036 18.5185 --18.2298 -2.99064 17.6879 --19.0302 -2.42943 17.6569 --19.5831 -1.67385 18.1481 --19.1171 -0.8631901 17.8222 --18.6735 -0.002140926 17.8457 --18.3604 -0.7143201 17.2014 --17.6891 -0.7642781 16.444 --17.2961 0.1484479 16.4754 --17.3642 1.06322 16.0277 --17.819 0.9107539 15.2332 --18.7358 1.12058 15.4803 --19.492 0.4399269 15.275 --19.7423 0.9311009 14.4676 --19.1859 0.5498339 13.6909 --18.7957 -0.1102041 14.3288 --17.9028 0.1782979 14.1812 --17.0647 0.4568279 13.8636 --16.9756 1.02058 13.0128 --17.1094 1.68858 13.7578 --17.6488 2.17114 14.4762 --17.7305 2.97121 15.1112 --18.3347 2.89887 15.8646 --18.417 2.94332 16.8662 --17.7097 3.42381 17.3961 --17.3964 3.79071 18.1895 --17.4759 2.98301 18.7294 --18.4235 3.15251 19.1381 --18.7122 3.8279 19.9054 --17.9672 4.27111 20.4602 --17.6016 4.1241 21.2569 --18.586 4.29568 21.2717 --18.5869 3.27437 21.2148 --18.9814 3.11216 22.1666 --18.8782 2.32694 22.7118 --19.6415 2.3604 23.3047 --20.171 1.5208 23.2643 --20.4765 0.6036149 23.3414 --20.772 -0.2996321 22.9523 --21.7501 -0.6225901 23.0502 --22.1293 -0.4463941 23.98 --22.9202 0.1508989 23.8526 --23.784 0.6846109 23.7916 --23.7461 0.7440459 24.7518 --22.7576 0.9736189 25.0705 --22.0851 1.69822 24.889 --22.677 2.25563 24.2488 --22.5912 3.22156 24.5038 --22.5096 4.14021 24.7509 --23.3451 4.72148 24.8352 --23.5204 5.61384 24.8606 --23.1995 5.4771 23.8936 --24.1696 5.25899 24.0561 --25.1103 5.35062 23.7679 --24.5585 6.06632 23.3036 --25.3713 5.97427 22.6805 --25.6226 6.84513 22.1932 --26.4593 6.44698 22.3166 --27.1419 6.05425 21.6622 --26.2487 5.61692 21.8215 --25.292 5.4875 21.5434 --24.6662 5.33119 20.7531 --24.8024 6.28559 20.6408 --24.1696 6.0273 19.8554 --23.3697 5.35595 19.8139 --23.169 4.40361 20.0098 --24.1013 4.20402 19.9151 --24.2843 3.66161 19.0574 --25.0243 3.75273 18.3058 --25.9239 3.7334 18.0207 --25.5343 4.56337 18.4349 --25.8316 5.19426 17.8066 --25.6949 6.17609 18.1529 --24.9472 6.4964 17.4398 --24.1164 7.05103 17.6821 --23.8077 7.66947 18.4121 --23.3644 7.72344 19.3241 --22.4556 7.26196 19.0668 --22.062 8.1736 19.1313 --22.7414 8.69509 18.7794 --22.5631 9.54953 18.2858 --23.1351 10.4148 18.3445 --22.6109 10.7452 19.0418 --22.7223 11.706 18.7633 --23.2833 12.3945 19.3447 --22.6369 11.8544 19.9075 --23.3586 11.3006 20.3522 --23.095 10.6678 21.0036 --23.4794 9.87139 20.5985 --22.5339 9.69464 20.3483 --21.6549 10.0544 20.6277 --20.8194 10.4701 20.1893 --21.0914 11.4228 20.0725 --20.5795 11.5807 19.1729 --20.8305 12.4212 19.6876 --20.8346 12.706 18.7376 --21.7635 12.2962 18.5502 --22.4295 13.0798 18.4389 --21.8848 13.8665 18.1076 --22.7587 14.1077 18.3949 --22.6501 14.9562 18.9063 --23.6685 15.0673 19.0213 --23.7942 14.1084 18.7776 --24.642 13.6849 18.363 --24.8586 13.7307 17.4818 --24.179 13.0176 17.3696 --24.3911 12.0283 17.3361 --24.7808 11.1869 17.1098 --25.7773 10.8549 17.1482 --26.3579 10.7844 16.3098 --26.0516 11.6282 16.05 --25.4175 12.2595 15.4909 --24.9002 11.4044 15.7678 --24.0854 11.5598 15.2399 --24.8667 11.3335 14.6596 --24.3341 12.207 14.4296 --25.2852 12.5713 14.2966 --25.6353 12.8046 13.3467 --24.6491 12.6971 13.2806 --23.7816 12.2378 12.9397 --24.1335 11.6613 12.1639 --23.5195 11.0872 12.6337 --23.1104 10.8908 13.5469 --22.5324 10.0805 13.5635 --22.0808 9.27491 13.1962 --21.8137 9.13135 12.2911 --21.2631 9.10459 11.4543 --21.2817 9.98759 11.0646 --22.1565 10.162 10.6345 --22.5652 10.9669 11.0457 --23.2005 11.5551 11.5629 --23.6474 11.4888 10.6656 --23.9356 10.5341 10.5563 --24.8606 10.1712 10.3967 --25.8043 10.3689 10.0093 --26.3324 11.1998 9.68461 --25.6072 11.5576 9.0225 --25.8804 10.7354 8.56323 --26.6143 10.6941 7.88041 --26.1792 11.0693 7.07356 --26.5145 11.5714 6.23982 --27.2654 11.7498 5.56775 --27.7374 12.1084 6.37974 --28.4716 12.806 6.67095 --29.3842 12.4335 7.00184 --29.7947 11.6028 6.70223 --30.31 10.781 6.71252 --31.0686 11.2663 6.25234 --32.0348 11.5843 6.28058 --31.6137 12.0296 7.01392 --32.3661 12.2151 7.75306 --31.7357 12.9675 8.10269 --31.0297 13.6469 8.12657 --31.5147 13.7893 7.25154 --32.0401 13.1777 6.66333 --31.3428 13.2869 5.98396 --30.8962 13.0869 5.08818 --30.5843 12.1392 5.1499 --29.6671 12.5074 4.92466 --29.1215 13.2127 4.44513 --28.6476 13.6821 5.18371 --27.6386 13.7717 4.97338 --27.022 14.4491 5.29122 --27.2057 14.6123 6.25409 --26.805 15.5738 6.39628 --25.8825 15.4069 6.11553 --24.9938 15.3025 6.59875 --24.279 15.6334 6.00895 --23.9109 16.1239 5.23267 --23.7267 17.0443 4.91467 --22.7246 17.3931 5.04679 --22.4811 17.104 4.09164 --21.6916 16.631 3.70478 --21.0977 16.1224 4.23216 --21.0794 15.683 5.12673 --20.0854 15.518 5.16461 --19.739 16.4343 5.25751 --19.2131 16.6617 6.12038 --18.8459 15.7934 5.83032 --18.1789 15.0831 5.81031 --17.1661 15.1198 5.98822 --17.4644 16.1376 5.85744 --17.6513 16.1619 4.84522 --18.4936 16.7053 4.85462 --18.5345 17.5423 5.41013 --18.2709 18.2763 6.06027 --17.894 19.1554 6.36879 --17.4666 19.4769 7.30791 --17.4344 20.4177 7.12227 --17.9044 21.02 7.83779 --17.6188 21.6705 8.48269 --18.2492 22.3563 8.68685 --19.0491 21.7112 8.33057 --19.883 21.7093 7.91159 --19.4908 22.0909 7.01876 --19.2065 22.9475 6.53505 --19.5051 23.1516 7.43552 --19.8127 23.9034 8.01308 --20.4853 24.4388 8.51202 --20.724 25.3547 8.95203 --21.2292 26.0688 9.45084 --21.1646 26.014 10.4375 --22.1422 25.831 10.1633 --22.5471 26.2039 10.9396 --23.0646 26.3172 11.7763 --22.1152 26.1027 12.0249 --21.7604 26.9981 12.4579 --21.1577 27.7658 12.6511 --21.648 27.6858 11.8031 --20.679 27.9025 11.5702 --20.0775 27.378 12.2064 --19.1424 27.0219 12.4217 --19.0808 26.6068 11.5361 --18.9778 25.6653 11.918 --18.9056 24.7452 12.2398 --18.6698 24.4249 13.1544 --19.5193 24.5188 13.6219 --20.5115 24.6694 13.3884 --20.4561 23.6492 13.3375 --20.7069 23.1358 12.5338 --20.0188 22.7979 11.8716 --20.1708 23.7303 11.4051 --20.7842 23.3466 10.7554 --21.6192 22.8548 10.8845 --21.6499 22.9888 9.86657 --22.0685 22.0659 9.79239 --22.1637 21.7139 10.7249 --21.3694 21.643 11.4308 --21.4744 20.7723 12.0477 --22.1068 20.4377 12.7222 --21.6536 21.1993 13.3045 --21.3793 20.7101 14.1314 --20.6809 21.2881 14.5455 --20.6798 21.4975 15.475 --21.3182 21.4736 16.1669 --22.2474 21.8894 16.0612 --22.5953 21.5518 16.9836 --21.9156 21.9263 17.5473 --22.4599 21.4552 18.255 --23.1808 20.8412 18.05 --22.4578 20.3071 18.258 --22.202 19.4807 17.6634 --21.3894 20.1193 17.7696 --20.6776 20.7987 17.873 --20.3446 21.1227 17.0654 --19.6232 20.3901 16.8719 --19.0894 20.4375 16.0204 --19.1272 19.4581 15.8261 --19.0966 19.217 14.7902 --19.6694 18.7072 14.1803 --20.4552 18.6888 14.8226 --20.6674 18.4306 15.7422 --20.3408 17.5103 15.5035 --20.0707 16.6032 15.1799 --20.8879 16.3217 15.6853 --21.4775 15.8705 16.2557 --22.3568 15.4909 16.382 --22.1894 15.8427 15.5012 --22.3371 16.6869 15.1445 --22.0333 16.0297 14.4469 --22.4082 16.0744 13.5085 --23.3656 16.2672 13.5158 --23.2192 17.1578 12.9702 --23.916 16.9904 12.2647 --24.5851 17.213 11.6874 --24.146 17.2091 10.772 --23.8156 17.4951 9.82253 --23.691 16.5761 9.65023 --24.235 15.861 10.1599 --25.0708 15.571 10.635 --24.3581 15.2828 11.3218 --23.907 14.4246 10.9911 --23.1818 14.3431 10.2233 --22.1994 14.4153 10.3133 --21.3913 13.8928 10.2759 --21.4987 13.5508 11.2282 --20.7441 13.7107 11.7399 --20.2721 14.3938 12.3467 --20.925 14.0418 12.9704 --20.3734 13.3743 13.6485 --20.1928 13.1362 14.5835 --21.0726 12.619 14.8008 --21.907 12.6852 15.3948 --22.6271 12.3618 15.9153 --22.6921 11.4694 16.2772 --23.5591 11.8821 16.8167 --23.5735 10.8329 16.8661 --23.6823 9.95208 16.3182 --23.1899 9.25396 16.9063 --23.6422 8.68967 16.2652 --23.2204 7.80625 16.0122 --23.1589 8.21481 15.0417 --23.6382 7.33632 14.6345 --23.8257 6.44376 15.1577 --23.3361 5.7585 14.6132 --22.541 5.15062 14.3652 --22.4227 4.30402 14.8777 --23.4149 4.40223 14.7731 --24.1127 3.93343 15.271 --24.4207 3.13992 14.8008 --24.4093 2.67677 13.8488 --24.3873 3.18045 13.0363 --24.6592 3.93111 13.6143 --23.979 4.54525 13.1312 --23.3618 3.84353 12.7459 --22.364 3.62566 12.8998 --21.6034 4.25903 12.669 --21.3495 4.03056 11.7903 --21.6773 3.0411 11.8116 --21.0703 2.72507 12.535 --20.2631 3.20918 12.1574 --20.2497 2.23959 11.987 --19.3155 2.55164 11.9415 --18.6353 3.24762 11.9546 --18.0776 3.05433 12.767 --17.7847 3.93117 12.3158 --16.8872 3.99144 11.9943 --17.1921 3.01748 12.3963 --17.2927 2.07128 12.7641 --16.4518 2.48771 13.1928 --16.157 2.64031 12.2582 --16.0055 2.44711 11.2432 --15.144 2.83982 11.4457 --14.5094 2.21121 12.024 --14.3463 1.40988 12.6389 --13.4321 0.9371269 12.7704 --13.4447 -0.04806037 12.5063 --12.5911 -0.1811881 12.9986 --12.0812 0.6491789 12.9888 --11.3775 1.40001 12.7907 --11.7397 1.64666 13.6832 --11.4468 2.254 14.3736 --11.7889 2.98437 13.7965 --11.2182 3.69827 13.9589 --11.7046 4.57666 14.3271 --12.0426 3.98731 13.5007 --12.5908 4.80649 13.5827 --12.6416 4.66244 12.5739 --11.8579 4.12006 12.0974 --11.1874 4.80016 11.8683 --11.3776 5.23437 12.759 --11.4915 6.2562 12.9629 --11.5046 6.70273 13.8868 --12.3315 7.25776 13.9563 --12.7117 6.72575 14.6714 --12.5316 6.85418 15.6202 --11.8064 7.36243 15.1744 --11.8451 8.36513 14.9547 --12.7174 7.92712 14.8537 --13.5642 7.70128 15.2866 --13.8657 8.29963 14.6168 --13.9564 7.79027 13.8161 --14.4094 7.15712 14.3501 --14.3468 6.58089 15.1467 --14.4884 5.90523 14.4795 --14.7155 5.06278 14.9991 --14.0505 4.66439 14.3347 --14.5294 3.93128 13.8956 --14.2364 2.97003 13.9428 --14.6069 2.13064 14.2792 --14.688 1.18424 14.5292 --14.5071 0.1902699 14.7433 --14.2823 -0.5606821 15.3974 --13.524 -1.20811 15.1652 --13.5942 -1.13658 14.2053 --14.0867 -1.97968 14.258 --14.5769 -2.56252 13.5928 --15.4902 -3.04816 13.7549 --15.7385 -2.59165 12.9073 --15.8357 -2.01715 12.0372 --16.445 -2.81988 12.097 --17.0792 -2.68862 12.8949 --17.9881 -2.75599 13.2879 --18.8346 -2.99186 12.9635 --19.4988 -3.02283 12.1673 --20.1976 -3.4139 12.8359 --19.7532 -4.32533 12.5259 --18.839 -4.56991 12.7099 --18.3951 -4.17272 13.4829 --17.4917 -4.52357 13.5213 --17.0641 -4.60136 12.6009 --16.2549 -4.68362 13.1621 --15.4939 -4.12084 13.4292 --14.6691 -4.4765 12.9728 --14.6656 -3.65752 12.4391 --14.6476 -4.32313 11.753 --13.6776 -4.66283 11.7215 --13.7301 -5.69202 11.6376 --13.1448 -6.35061 11.2179 --12.7574 -5.52365 11.584 --12.1736 -4.94371 12.1848 --12.842 -5.2083 12.9384 --13.5783 -5.27939 13.644 --13.4902 -6.17651 13.1994 --14.4057 -6.52402 13.2866 --14.3562 -6.97354 12.3591 --14.615 -7.62887 11.6458 --14.8069 -8.36125 10.8896 --14.5856 -9.17328 11.5389 --13.8087 -9.39008 10.9573 --13.8174 -8.65073 10.2559 --14.0519 -9.47135 9.66708 --14.7789 -9.66902 8.96843 --15.0803 -10.4636 8.54218 --15.0374 -11.4846 8.78984 --14.4105 -11.9962 9.33588 --13.7812 -12.0743 10.1845 --13.1962 -12.9 10.0741 --13.0538 -13.5696 9.34185 --12.2246 -13.1869 9.76267 --12.4798 -12.2357 9.69031 --12.0714 -11.6186 10.3804 --12.1794 -10.6208 10.0733 --12.5165 -10.1044 10.8808 --12.4184 -9.44783 10.1353 --12.1539 -8.6806 10.76 --12.1976 -8.27962 11.7027 --11.4265 -7.86601 11.1753 --10.9556 -7.92769 11.9986 --11.1915 -8.30279 12.8651 --11.8023 -9.12923 13.0127 --11.828 -9.07229 14.0063 --11.2001 -9.0135 14.7836 --11.5952 -9.84168 15.1764 --10.6904 -10.0223 14.9038 --10.1302 -10.8396 14.7605 --10.5029 -11.4179 14.1174 --11.1416 -11.5842 14.9066 --11.2242 -12.5605 15.1777 --11.5317 -13.4836 15.0639 --11.725 -14.4905 15.3132 --12.3741 -13.7678 15.5667 --12.435 -13.9258 14.5695 --11.9904 -14.289 13.7641 --12.6238 -15.1122 14.1629 --13.04 -15.782 14.771 --13.9029 -15.5369 15.2656 --13.7377 -14.5597 15.1611 --14.1663 -13.6683 15.224 --14.217 -12.7216 15.1278 --13.6967 -11.942 14.8575 --14.499 -11.2963 14.8886 --13.7169 -10.6717 15.0105 --14.1385 -9.8111 15.3582 --14.056 -8.81631 15.2429 --14.4813 -8.57581 14.3953 --15.1847 -8.71191 15.0675 --15.0514 -7.71003 14.9407 --15.3321 -7.51251 15.8825 --14.908 -6.58921 15.9068 --14.6714 -5.67807 15.6459 --15.5342 -5.24074 15.5652 --16.2389 -5.21051 14.8716 --17.1144 -5.6317 14.9657 --18.0109 -5.24926 14.7811 --18.3465 -4.32793 14.7115 --19.0306 -5.16055 14.7123 --19.3714 -4.30282 15.1305 --18.8486 -4.78579 15.7512 --19.2384 -5.2351 16.5672 --19.8194 -4.53081 16.9817 --19.7381 -3.62079 16.601 --20.5704 -3.84518 16.0759 --21.5085 -4.2948 15.9969 --21.9579 -3.45094 15.764 --21.2816 -3.02928 15.1384 --21.2253 -2.10826 15.3897 --21.7034 -2.24058 16.2761 --21.0459 -2.78734 16.7232 --20.626 -3.60996 17.2528 --19.8026 -3.20319 17.6697 --20.1867 -2.53149 18.2412 --21.1643 -2.39693 18.3186 --22.1375 -2.51574 18.6108 --22.4368 -3.37668 18.9218 --22.8845 -3.80557 18.125 --22.565 -4.75155 18.0827 --22.6369 -5.53053 17.3699 --22.2214 -6.45394 17.5042 --21.2175 -6.59485 17.2436 --20.6093 -6.59152 16.4205 --21.2274 -6.13979 15.765 --21.007 -6.29038 14.8 --20.1658 -5.87802 14.393 --20.4347 -6.50318 13.659 --20.1294 -7.3614 13.3379 --20.2815 -8.31904 13.6495 --21.1411 -7.81407 13.6691 --21.2453 -8.77627 13.4552 --20.4355 -9.31786 13.6686 --20.464 -10.0844 13.0139 --21.3752 -10.5898 13.1139 --21.8539 -11.4582 12.8058 --22.3566 -10.6054 12.7918 --23.2847 -10.4304 13.1392 --22.8335 -9.86882 13.7944 --22.9326 -9.0004 13.265 --22.8225 -8.2001 12.7304 --22.2137 -7.76809 12.1041 --22.5538 -8.06583 11.2631 --23.4181 -8.13162 10.7142 --23.5371 -9.01777 10.1883 --22.8542 -9.48906 9.59995 --21.9935 -9.85428 10.0257 --21.2578 -10.1448 9.40457 --20.3342 -9.78064 9.55296 --19.8757 -10.0564 10.4057 --20.2877 -10.8476 10.8672 --21.2219 -10.9051 10.7232 --21.232 -11.285 9.76872 --20.976 -11.7902 8.91172 --20.1906 -12.2223 9.4151 --20.1321 -12.2628 10.3815 --19.4145 -11.5355 10.6352 --18.8021 -11.0408 11.2093 --18.0605 -10.9506 11.8919 --18.0788 -10.845 12.8903 --17.2406 -10.3265 12.3753 --17.5709 -9.4526 12.6933 --17.0711 -8.58167 12.3955 --16.1007 -8.82916 12.0808 --15.7548 -8.87283 13.0025 --15.2406 -9.65447 12.7039 --14.4041 -9.93805 13.1609 --13.8399 -9.72105 13.9656 --12.9552 -9.29287 14.2124 --12.3149 -10.0254 14.0559 --11.6958 -10.6328 13.5311 --11.2286 -10.4575 12.616 --11.1151 -11.3363 12.1987 --12.1197 -11.344 11.8726 --12.3337 -11.6469 12.7798 --13.07 -12.2801 13.0694 --13.7741 -12.9705 12.9666 --12.913 -13.4556 13.2667 --12.7811 -13.1876 12.2675 --13.4142 -13.7861 11.7717 --14.1294 -13.6347 11.0755 --13.7435 -14.5436 11.2214 --13.2462 -15.2746 11.6231 --13.619 -15.7563 10.8342 --13.4032 -16.6958 10.5545 --14.1442 -17.177 11.0633 --14.3038 -17.0154 12.0063 --14.2937 -18.0898 12.1521 --13.3573 -18.0653 11.9491 --13.008 -17.1619 12.0144 --12.569 -16.5856 11.3765 --12.0342 -16.2705 12.175 --11.29 -15.682 11.7911 --11.3462 -14.9688 12.5186 --11.3175 -14.3164 11.7542 --11.6705 -13.8169 12.5716 --11.6079 -13.0055 11.9091 --11.0558 -12.5212 11.3573 --11.1217 -12.8611 10.3926 --11.1717 -12.9499 9.44344 --11.4883 -13.4336 8.65279 --11.3911 -14.0536 9.45605 --11.0154 -14.8942 9.90665 --10.9107 -15.7418 9.31658 --10.1674 -15.1091 9.31277 --9.25543 -14.7441 9.48574 --9.35603 -14.8184 8.48217 --9.01679 -15.7862 8.38727 --8.42185 -16.5203 8.69078 --7.71336 -15.9321 8.1799 --7.5319 -15.7941 9.18166 --8.15522 -15.7054 9.99015 --7.27699 -15.5965 10.3733 --6.39986 -15.2661 10.8049 --6.99323 -14.98 11.575 --7.21043 -15.3354 12.513 --7.61294 -16.2207 12.2547 --8.52252 -15.7352 12.159 --8.89485 -16.5281 12.712 --9.44335 -16.5552 13.5329 --9.97968 -15.8482 12.9906 --10.1016 -15.1833 13.7344 --9.76662 -14.3857 13.2031 --10.4265 -13.5756 13.275 --10.1803 -13.1596 14.098 --9.38299 -12.8067 13.616 --9.35298 -12.1008 12.8896 --8.71844 -11.3585 13.0916 --8.48646 -11.9451 13.8439 --8.17243 -12.7794 14.3115 --7.47383 -12.8095 14.9691 --6.70691 -12.5244 14.3243 --6.29636 -12.0625 13.5451 --5.77251 -12.1324 12.7276 --4.96963 -11.957 13.3266 --4.37885 -12.6061 12.8797 --3.4751 -12.7535 13.1224 --2.46644 -12.5955 13.2734 --2.29336 -13.5335 13.3964 --2.28724 -14.2212 14.0714 --3.01944 -13.9878 14.7322 --3.64286 -13.378 15.0489 --4.07825 -14.2475 14.6776 --4.00845 -15.222 14.9321 --3.50938 -15.5669 14.0639 --2.64177 -15.9914 14.1924 --1.78684 -15.6144 14.575 --1.03774 -14.8316 14.5595 --0.257539 -15.0141 13.9101 --0.814122 -14.5346 13.3128 --0.279798 -14.2109 12.5227 --1.13092 -14.0016 11.9281 --1.68929 -14.8867 12.1271 --2.2502 -15.1814 11.3779 --3.22441 -15.4114 11.3595 --3.95495 -15.7002 10.8825 --4.93527 -15.3058 10.6727 --4.52089 -14.4495 10.5088 --5.03661 -13.7371 11.1481 --5.2316 -13.384 10.2465 --4.91356 -13.611 9.38488 --5.13142 -14.5975 9.17386 --4.28 -15.02 8.91954 --3.42342 -15.3088 8.55623 --4.00123 -16.0499 8.4121 --4.26571 -16.1461 9.37968 --5.11562 -15.9241 8.96915 --4.97638 -15.9521 7.98776 --4.82796 -15.4948 7.0453 --4.98525 -16.0406 6.16289 --5.93043 -16.3144 6.1374 --5.8433 -16.0465 5.14941 --6.80047 -16.0544 5.55214 --6.71995 -16.9712 5.07558 --7.29431 -17.7093 5.45684 --8.08481 -17.7934 4.88759 --8.83237 -17.7277 4.31484 --9.29485 -17.406 5.10454 --9.50908 -16.8318 4.2715 --10.0262 -16.4766 3.50252 --9.76806 -15.741 2.95711 --10.4393 -14.9967 2.73803 --10.6939 -13.9773 2.837 --9.86313 -13.4496 3.10292 --9.4669 -12.5588 3.2127 --9.32951 -11.5627 3.1926 --9.49092 -11.8666 2.24387 --8.51063 -12.0104 2.2545 --7.647 -11.7223 2.52399 --7.16154 -11.4849 3.32388 --7.58521 -11.7138 4.1843 --8.08859 -11.2034 3.49062 --8.43055 -10.3051 3.80534 --8.36071 -10.9378 4.66446 --8.52729 -11.7573 5.22929 --8.12353 -12.0899 6.05005 --7.6002 -11.1451 6.04934 --8.22611 -11.223 6.86227 --8.17027 -10.2027 6.81395 --7.66758 -9.85711 6.08457 --6.70709 -9.80032 5.72645 --5.73627 -10.0756 5.73279 --5.90122 -10.6519 4.95043 --6.19392 -11.3805 5.67116 --5.19158 -11.3663 5.79466 --4.21011 -11.3152 5.3763 --3.42291 -11.6358 5.91709 --2.47573 -11.9692 6.03712 --2.82688 -11.7363 6.84839 --3.46379 -11.3149 7.4446 --3.82628 -11.0748 6.58181 --4.14163 -11.9973 6.82995 --5.02245 -11.5529 6.97695 --4.96484 -11.8054 7.93043 --4.97512 -11.9889 8.90666 --5.80108 -12.3064 9.25755 --6.18154 -12.2917 8.31973 --6.86248 -12.9804 8.76474 --7.60562 -13.5297 8.95671 --8.47612 -13.359 9.19352 --8.97273 -12.599 8.88789 --8.88602 -11.7999 8.27398 --8.83056 -10.8708 8.56809 --8.01839 -10.3895 8.4692 --7.56872 -10.0371 9.38398 --8.48196 -9.64187 9.26905 --9.25637 -9.73074 8.65801 --8.94671 -8.73462 8.73173 --8.68501 -7.84965 8.63449 --9.67852 -7.89738 8.57039 --10.5474 -8.17671 9.05984 --10.9916 -8.7796 9.61118 --10.5077 -9.49113 10.1048 --10.9201 -9.65617 10.9771 --11.0191 -9.16513 11.8401 --10.056 -8.98558 11.8441 --9.48656 -9.83375 11.8815 --8.52771 -9.40361 11.9027 --7.65701 -9.19628 11.5324 --7.28913 -8.98857 10.6557 --6.85527 -9.25242 9.75601 --5.8838 -9.45995 9.73748 --6.17547 -10.3458 10.1679 --6.38789 -11.3313 10.4024 --5.60911 -10.9228 10.7947 --5.26977 -11.7576 11.1855 --4.31387 -11.9952 10.8125 --3.81708 -11.2754 10.4831 --3.63662 -10.5949 9.80697 --3.83197 -9.66397 9.35883 --3.23304 -9.97363 8.67636 --4.05337 -9.99381 8.05107 --4.00879 -9.60027 7.20057 --3.24219 -10.2628 7.46003 --2.21937 -10.0085 7.54237 --1.5086 -9.3663 7.61932 --2.03755 -8.64762 7.22902 --2.60656 -7.91609 7.52817 --3.07442 -7.78088 6.71161 --3.90213 -7.30732 6.52288 --4.46595 -6.69211 7.1664 --5.32853 -6.27249 7.12371 --4.85495 -6.14359 8.00402 --4.60717 -6.93374 8.54844 --3.68486 -7.14225 8.26117 --2.76403 -6.97013 8.74928 --2.83071 -5.96947 8.8676 --2.32492 -5.91072 9.68941 --1.43914 -5.59526 9.46368 --0.718796 -5.09829 8.94702 --1.68619 -5.01923 8.72194 --1.86715 -5.94074 8.46423 --1.24196 -5.34578 7.92916 --1.15171 -5.94459 7.08821 --0.978512 -5.92971 6.07717 --1.35606 -6.8707 6.0425 --0.767922 -7.64702 6.42272 --0.865564 -7.45187 7.38743 --0.896027 -6.76326 7.98738 --0.812824 -7.50732 8.60398 --0.9275 -7.38563 9.56079 -0.03925537 -7.66421 9.74743 -0.979635 -8.01612 9.50727 -1.37164 -7.13546 9.24982 -2.22756 -7.59726 8.86003 -2.13468 -8.45454 9.2289 -3.02987 -8.1633 9.69418 -2.89406 -9.09685 9.3726 -3.91906 -9.48224 9.38328 -3.54115 -9.60345 10.25 -2.81453 -10.3028 10.5753 -1.82304 -10.141 10.4085 -1.87521 -10.5727 9.56157 -1.10952 -11.242 9.50076 -0.480168 -11.276 10.2902 --0.181517 -11.7603 10.8565 --0.654144 -12.4303 11.4198 -0.169415 -12.3388 12.0215 -1.11456 -11.87 12.2915 -1.4029 -11.0693 11.6927 -1.96894 -10.3992 12.2367 -2.59011 -11.1355 12.3341 -2.85567 -11.8283 13.0112 -2.89577 -11.3065 13.8757 -3.29015 -10.6659 13.2455 -3.76112 -9.99368 13.9789 -3.70739 -9.27913 13.3061 -3.61942 -8.64505 12.4664 -4.31742 -8.05681 13.0009 -4.67152 -7.25635 12.4987 -4.02476 -7.19478 11.7987 -4.65541 -7.95778 11.5507 -4.26264 -8.4686 10.7116 -5.12178 -8.893 10.6796 -5.9996 -8.6933 11.1762 -6.6614 -8.06781 10.7916 -6.84345 -7.13375 10.7941 -7.11938 -6.21555 11.1719 -6.94666 -5.38361 10.7529 -7.0666 -4.91156 11.6361 -6.12999 -5.16393 11.9884 -5.70367 -5.96256 12.4204 -6.32633 -6.35782 13.1015 -6.16522 -6.99838 13.842 -5.23511 -7.24871 13.7518 -4.67898 -7.53724 14.5081 -3.84233 -7.12629 14.7783 -4.33898 -6.23568 14.6018 -4.92888 -5.54235 15.0331 -4.66588 -4.61073 15.4541 -4.77967 -3.74714 15.8524 -4.56712 -3.11922 16.5592 -5.13401 -2.2673 16.653 -5.7262 -1.72388 17.2534 -5.70437 -1.19063 16.3647 -6.36443 -1.59586 15.742 -6.00244 -2.47326 15.3074 -6.61123 -3.26395 15.342 -7.52945 -3.69607 15.5365 -7.83861 -4.54128 16.0288 -8.05658 -5.10122 15.2442 -8.19459 -5.95882 14.7299 -8.00076 -5.13946 14.1373 -8.01104 -6.00924 13.6213 -8.01555 -6.98035 13.5843 -8.92536 -6.82341 13.2842 -9.37941 -7.38898 13.9703 -9.30533 -7.71918 14.8557 -8.77157 -8.05922 15.6348 -8.06582 -8.34086 16.2745 -7.49695 -8.98885 15.7348 -7.30155 -8.39651 14.956 -6.37858 -8.08252 14.9308 -5.99767 -7.35344 15.4904 -5.89821 -7.57671 16.465 -5.48744 -7.99633 17.2791 -4.94498 -8.65608 17.8231 -4.5791 -8.36726 16.9378 -4.34638 -7.58715 17.5114 -3.58903 -8.31376 17.5636 -2.86878 -7.85887 18.0733 -3.53982 -7.40044 18.7233 -3.63229 -8.24255 19.1673 -4.29521 -8.97527 19.1768 -5.2283 -8.99934 19.471 -4.74273 -9.82793 19.8541 -3.97734 -10.2775 20.4163 -4.38304 -9.43663 20.9001 -5.20799 -8.81106 20.8057 -5.29995 -8.25845 21.666 -5.55068 -9.08412 22.2561 -5.62191 -8.38517 22.9529 -5.45372 -8.9074 23.8446 -4.97544 -9.68615 23.4533 -4.04899 -9.7301 23.2144 -3.02538 -9.72771 23.4248 -2.27777 -9.25773 23.9092 -2.60637 -9.83146 24.642 -2.06834 -10.4691 25.1648 -2.98501 -10.1383 25.4648 -3.77338 -10.2511 24.8341 -3.21226 -11.0752 24.7921 -3.81998 -11.5338 24.1775 -4.53746 -11.2246 24.7592 -5.36673 -11.1681 24.2911 -6.15237 -11.1392 24.9052 -6.94253 -11.2748 25.5101 -7.97556 -11.3918 25.3732 -8.75444 -11.9416 25.4657 -9.3552 -11.9684 26.202 -9.11418 -12.9378 26.0338 -8.35194 -12.4012 26.3399 -7.50797 -12.8752 25.9981 -7.214 -13.4463 26.7573 -7.14874 -12.4359 27.0891 -7.18785 -12.0551 27.9787 -7.87135 -12.7175 27.8276 -8.54403 -13.3965 28.3346 -8.35464 -13.6686 29.2886 -7.86525 -12.8595 29.6467 -7.2894 -12.1995 30.0984 -6.79961 -13.0791 30.1172 -7.02606 -13.1285 31.0434 -6.31541 -13.7693 31.2378 -6.10469 -12.8383 31.2878 -6.11202 -11.9027 31.7524 -6.46447 -11.3053 31.0766 -6.3598 -10.9629 32.1249 -5.8407 -10.3956 32.7331 -5.83679 -9.91114 33.5202 -6.07137 -9.0802 33.0629 -6.69946 -9.23483 32.288 -6.36154 -8.79899 31.4863 -7.27654 -8.85419 30.9645 -7.6829 -9.77268 31.2079 -7.54825 -9.84001 30.2531 -6.598 -9.43911 30.1988 -6.49573 -9.5202 29.2163 -5.53968 -9.42432 28.9313 -5.94915 -10.1031 28.2712 -6.29367 -11.0101 28.1898 -5.53763 -11.4606 28.6116 -4.52598 -11.5743 28.4887 -3.70031 -11.4006 27.9888 -3.19174 -10.6939 27.4435 -3.84825 -10.055 27.8068 -3.86567 -10.0267 26.7991 -4.66197 -9.59274 26.3796 -5.13621 -9.30312 27.2442 -5.95765 -8.82314 27.4399 -6.40266 -7.97045 27.824 -5.78161 -7.2181 27.5977 -5.4157 -7.21001 26.6746 -4.71439 -6.53827 26.4159 -5.47709 -5.87549 26.5892 -5.61399 -5.20001 25.8277 -4.82491 -4.52466 25.7468 -5.5258 -4.10131 25.233 -4.84514 -3.58442 24.6757 -4.60258 -4.39775 24.1562 -5.557 -4.66739 23.9532 -5.76883 -4.56943 22.9462 -6.29055 -5.41666 23.0317 -7.11247 -6.00398 23.0017 -7.44245 -6.40499 23.8456 -6.61126 -6.88402 24.0272 -6.03003 -7.22985 23.3833 -5.08666 -7.44441 23.6712 -5.34654 -7.46644 24.6686 -4.42012 -7.52421 25.0908 -3.49831 -7.76408 24.7625 -3.2266 -7.48022 23.8415 -3.09361 -8.39691 23.3111 -3.55439 -8.59053 22.3858 -4.50134 -8.86873 22.1562 -4.54472 -9.79042 22.3521 -4.038 -10.6354 22.5732 -4.4668 -10.7835 21.6308 -3.43415 -10.7293 21.5707 -3.11937 -10.0331 22.2064 -2.48592 -9.31354 21.8216 -2.29327 -8.36005 21.5487 -2.90525 -7.81561 21.0357 -2.38229 -6.89796 21.1302 -2.28918 -6.84803 22.1209 -2.32682 -5.86216 22.102 -2.12691 -4.88976 21.8634 -2.75841 -4.49507 21.1587 -2.50697 -4.18478 20.2633 -3.4496 -4.52819 20.4 -4.24096 -4.50968 19.7959 -3.68327 -5.37819 19.5996 -3.2398 -6.29003 19.1856 -2.53684 -5.67732 19.0411 -1.56961 -5.66583 19.3355 -0.75988 -6.22473 19.1661 -0.899623 -6.78818 20.0683 -0.547214 -7.46286 19.3833 -0.539714 -8.45438 19.1922 -1.29024 -9.06026 18.9854 -1.75441 -8.73908 18.1814 -1.29721 -9.53868 17.8494 -1.44704 -10.4418 17.3257 -2.02234 -11.1657 17.6451 -2.14466 -11.7531 16.8161 -2.20677 -12.5496 16.0737 -2.36647 -13.1666 16.7384 -3.20061 -13.6084 16.8535 -3.36759 -13.6251 17.8097 -2.54772 -14.2206 17.6785 -2.93428 -15.1225 17.9585 -2.68993 -15.9992 17.5035 -2.96992 -16.9176 17.6857 -3.33369 -17.0413 18.5591 -3.75125 -16.1181 18.6302 -4.07882 -15.6929 17.7624 -5.08229 -15.5845 17.9423 -5.48164 -14.6386 17.8755 -5.08629 -13.7728 18.0506 -4.52667 -14.3918 17.5179 -4.62921 -14.4708 16.5588 -4.72844 -13.5453 16.8963 -4.38939 -12.5043 16.7113 -5.18137 -12.4336 17.3367 -5.52813 -11.6578 17.861 -5.09541 -12.0291 18.7351 -4.72197 -11.1619 18.9894 -4.43964 -10.3012 18.5124 -5.24734 -10.0637 17.9748 -6.08457 -9.81781 17.5114 -6.33838 -10.0576 16.5731 -6.92908 -10.1424 15.7837 -7.28932 -10.7841 15.1079 -7.73375 -10.3466 14.2749 -6.9195 -9.70849 14.2136 -6.00936 -9.61275 13.8606 -5.10514 -9.99442 13.7461 -5.74621 -10.4437 13.1082 -5.74301 -11.2844 12.6527 -4.7558 -11.1957 12.745 -4.64641 -10.9471 13.7978 -5.15186 -11.5766 14.4118 -4.31326 -11.9893 14.6519 -5.13747 -12.1385 15.2478 -4.78688 -13.0588 15.3474 -4.53673 -13.955 14.9734 -3.9135 -14.2002 14.2446 -2.95308 -13.927 14.379 -1.98967 -13.7772 14.7668 -1.93373 -13.5548 15.7345 -0.854417 -13.4668 15.8371 --0.04808563 -13.906 15.9709 --0.150293 -14.829 16.1935 -0.747902 -15.3103 16.517 -0.168313 -14.9827 17.2821 --0.853329 -14.7993 17.2382 --1.49334 -15.1939 17.8202 --1.40807 -16.1634 18.0911 --2.17774 -15.853 17.4891 --1.61044 -15.5683 16.6913 --1.49388 -16.5236 16.4705 --1.56856 -17.5317 16.2759 --1.96747 -18.4769 16.0926 --1.23597 -19.0759 16.4865 --1.25095 -20.0519 16.4228 --0.460609 -19.7369 15.8707 --0.212572 -20.3149 15.0629 --0.997494 -19.7894 14.6618 --1.71278 -19.1639 14.4626 --1.96649 -18.8815 13.5788 --2.73364 -18.9626 12.9202 --3.70405 -19.0521 13.3274 --4.55143 -18.9073 12.8728 --4.31902 -18.4176 12.0317 --3.90402 -18.1546 11.2265 --2.97252 -17.6808 11.2193 --2.26266 -18.0985 11.6979 --1.48453 -18.7856 11.9061 --0.964144 -18.9424 12.7245 --0.415193 -18.1213 13.0718 -0.444879 -18.1274 12.506 -0.974169 -17.4012 12.0582 -0.974092 -17.5739 11.007 -1.84417 -17.9929 10.7105 -1.73225 -18.4558 9.89079 -1.47171 -19.4244 9.74956 -0.974402 -20.2209 9.33611 -0.384932 -20.8911 9.86883 --0.389727 -21.1677 10.4797 -0.01521957 -21.8945 10.9896 -0.05871707 -22.8632 11.345 -0.691047 -22.8057 12.1327 -1.08135 -23.0875 11.2858 -1.83637 -22.9028 10.6416 -1.48242 -22.7551 9.6827 -1.9636 -22.274 8.94491 -1.64352 -22.6525 8.04482 -1.61614 -23.325 7.2721 -0.707763 -23.7478 7.30919 --0.252318 -23.8926 7.35222 --1.01616 -24.2206 6.88791 --1.84438 -23.7502 7.08328 --1.87519 -23.5444 6.10386 --2.13448 -22.6512 6.4576 --1.66074 -21.8049 6.19198 --1.15654 -20.9285 6.44426 --0.718475 -20.1147 6.03695 -0.164708 -20.674 5.78579 --0.01589773 -20.0681 4.97102 -0.885024 -20.4885 4.7685 -0.09926327 -21.1905 4.84691 --0.808385 -21.0182 4.59495 --1.55568 -20.5635 4.18723 --2.18709 -21.3035 4.00798 --3.00055 -20.9676 3.64674 --3.64173 -20.5375 4.2391 --3.31896 -19.8914 4.86656 --2.85119 -20.7578 5.2288 --3.7707 -20.9565 5.39289 --3.54129 -21.611 6.11262 --3.97816 -20.9457 6.67117 --4.61667 -21.1458 6.03375 --5.25223 -20.6076 5.487 --5.94805 -21.2153 5.10035 --5.70048 -22.0811 5.67156 --6.33136 -22.1884 6.45026 --6.91692 -21.5898 5.91666 --7.08882 -20.721 5.48752 --8.10577 -20.9242 5.31144 --8.4604 -21.5184 4.53969 --8.96983 -22.1018 3.89692 --8.65451 -21.5178 3.14012 --9.12891 -22.0878 2.42662 --8.53697 -22.3703 1.75747 --7.92905 -21.9405 2.30111 --7.38358 -22.2354 1.46058 --7.21531 -23.2116 1.03767 --6.93468 -22.6684 0.2045471 --6.83464 -23.6305 -0.02034028 --6.34601 -24.4529 -0.1137839 --5.57126 -25.0974 -0.2584989 --5.76164 -24.7563 -1.2226 --4.82731 -24.6024 -1.53167 --4.07329 -23.9697 -1.66746 --4.4549 -23.4143 -0.9210209 --5.17098 -23.1646 -0.2840259 --4.72227 -23.1454 0.6649081 --4.89059 -23.8285 1.37573 --4.3018 -23.9364 2.23492 --3.73559 -23.9816 1.3695 --3.49921 -23.3683 2.11781 --3.2218 -22.5715 2.60663 --3.02093 -21.5526 2.62711 --3.27769 -21.1495 1.74452 --4.19353 -21.5198 1.80137 --4.98661 -21.3389 1.2447 --5.07125 -21.662 2.17646 --4.9736 -22.0679 3.13657 --4.69462 -21.168 3.57214 --5.4142 -20.4649 3.27682 --6.36537 -20.2916 3.5088 --6.52459 -21.1085 3.05845 --7.14308 -21.8327 2.96512 --6.74055 -22.7726 2.96186 --6.86088 -23.7463 3.01942 --7.68546 -24.3396 3.12521 --8.09746 -23.7225 3.78533 --9.05604 -23.7312 4.04863 --8.95118 -23.1503 4.82985 --8.10779 -22.7169 4.87095 --7.44445 -22.0167 4.83097 --7.00109 -21.9933 3.90778 --6.20854 -22.0169 4.48577 --5.33882 -22.4997 4.69913 --5.11932 -23.3828 4.47648 --5.30212 -24.1704 5.05825 --5.85597 -23.6783 5.70885 --5.46185 -23.5175 6.58709 --4.90568 -23.8177 7.39632 --3.91829 -23.6624 7.22205 --4.06289 -23.1849 6.3398 --4.50825 -23.8857 5.86248 --3.54578 -24.1423 6.19555 --3.07496 -24.3642 7.07094 --2.75904 -25.2549 7.13063 --1.90983 -24.7458 7.32603 --2.04389 -24.413 8.2905 --1.17183 -23.8594 8.16639 --1.09149 -24.292 9.09553 --1.09729 -25.1514 8.53163 --0.284908 -25.6728 8.23479 --0.859386 -26.1114 7.53383 --0.349544 -26.0197 6.60742 --0.152157 -26.3561 5.75123 -0.305957 -25.5013 5.44341 -0.639955 -24.6453 5.0958 -1.45373 -24.1497 5.34998 -1.64969 -25.0663 5.63504 -2.41328 -25.2337 6.32573 -2.55264 -26.158 6.60078 -2.05596 -26.8893 6.99865 -1.12335 -27.1869 7.23222 -0.23524 -27.2218 7.58881 --0.48757 -27.5351 8.20561 --0.006572685 -26.6311 8.53369 -0.716113 -26.635 9.18025 -0.77614 -27.1397 10.0469 -1.05652 -26.4782 10.7392 -0.656988 -25.9826 11.4098 --0.216678 -25.4904 11.557 --0.481458 -25.4373 12.4948 -0.03084727 -25.2949 13.2875 --0.573587 -25.9575 13.6867 --0.200951 -26.6732 14.2632 --0.733612 -27.5667 14.4088 --0.233464 -27.5595 15.2468 --1.1828 -27.4525 15.6123 --1.12796 -27.4415 16.5979 --0.502434 -27.7334 17.3217 --0.700554 -27.3487 18.2064 --1.00912 -26.6588 17.539 --0.987297 -26.1222 18.3746 --1.59682 -25.3207 18.0438 --1.62191 -25.0287 17.0786 --2.10594 -25.2279 16.2842 --1.60907 -24.6897 15.639 --0.876122 -24.1887 15.2298 --1.44249 -24.1263 14.4007 --0.56479 -23.7399 14.1555 -0.110963 -23.5695 14.8308 -1.06158 -23.272 14.5201 -1.4566 -24.1711 14.4872 -2.37447 -24.4431 14.1512 -2.63715 -23.891 14.9731 -3.46508 -23.3658 14.543 -2.96624 -22.7441 13.9468 -3.76553 -23.334 13.6281 -3.79808 -24.2525 13.2187 -3.52321 -24.0009 12.2259 -2.584 -23.6272 12.4786 -1.67907 -23.4555 12.6389 -1.1521 -23.494 13.4485 -1.11797 -24.3445 12.8297 -1.54844 -24.463 11.9369 -1.61891 -24.8841 11.0267 -2.53561 -25.2605 11.344 -2.78562 -25.5501 10.427 -3.76353 -25.6907 10.5259 -3.55617 -25.2277 9.58969 -3.36987 -24.8313 8.67574 -4.14012 -25.1806 8.07 -5.14181 -24.8987 7.87121 -5.9522 -25.4974 8.04003 -6.85831 -25.3212 8.53151 -6.86585 -26.2808 8.60469 -6.44395 -27.1857 8.3371 -6.33149 -27.9985 8.89513 -6.85272 -28.7764 9.26474 -6.62253 -28.1513 10.0319 -5.75778 -28.4818 9.90541 -5.38957 -27.8654 10.5222 -4.62468 -27.7613 9.78821 -3.94717 -27.963 9.12652 -3.93444 -26.9711 9.13797 -3.5934 -27.0736 8.20688 -3.42462 -26.7948 7.2389 -4.06156 -27.0662 6.50515 -3.28864 -27.1677 5.90157 -2.46353 -27.8413 6.17879 -1.93009 -27.5067 5.43119 -1.59997 -28.276 5.90894 -0.83552 -28.9152 6.26924 -1.24913 -29.5007 6.99391 -1.29642 -30.4602 7.08401 -1.49843 -30.114 7.99986 -2.30709 -29.6166 8.27328 -1.57615 -29.3501 8.9327 -1.61161 -28.7752 9.73419 -2.12376 -28.071 10.167 -1.63044 -28.0531 11.0027 -0.734307 -27.9152 10.6489 -0.807459 -28.3035 11.5567 -0.461584 -27.6263 12.2163 -1.35438 -27.8603 12.5701 -1.28963 -26.8496 12.3417 -2.01349 -27.1638 11.7205 -2.46607 -26.4398 12.1324 -1.93959 -25.8992 12.7972 -2.3566 -26.2365 13.6592 -3.33544 -26.2754 13.6219 -4.08726 -26.0701 14.2603 -4.20604 -26.9552 14.7261 -4.70396 -26.2083 15.3324 -5.65204 -26.0619 15.6366 -5.54673 -25.6003 16.5173 -5.54423 -24.614 16.6007 -5.83167 -24.7577 15.6306 -5.20853 -24.082 15.1549 -6.1222 -24.058 14.9134 -6.66397 -23.5562 14.1941 -6.68759 -23.04 15.116 -6.32235 -23.0095 16.0716 -6.13542 -22.0236 16.323 -6.78645 -22.0278 17.049 -6.33427 -22.6708 17.7244 -6.06887 -23.3432 18.4467 -5.32258 -23.4648 19.1422 -4.37887 -23.7634 19.4548 -3.8784 -24.5617 19.2538 -4.27229 -24.7232 20.1783 -3.42339 -24.3393 20.5526 -3.36913 -25.3153 20.3022 -2.87804 -25.5863 21.1708 -2.09713 -25.8004 21.7505 -2.43605 -26.3985 20.9227 -3.1334 -26.8931 20.4288 -4.10975 -26.6882 20.3058 -3.85087 -26.2267 19.4088 -2.90517 -26.5396 19.2663 -2.29152 -25.7341 19.1811 -2.92481 -24.9178 19.0206 -2.38267 -24.1762 19.4055 -2.94325 -23.7052 18.8028 -3.24194 -22.8151 18.4434 -3.82621 -22.7165 17.5647 -3.41857 -22.1278 16.8592 -2.54716 -21.846 16.4648 -2.09006 -22.536 15.859 -1.45522 -22.2497 16.5675 -1.68968 -23.1552 16.8379 -0.887876 -23.7107 16.6331 -0.399985 -22.9812 17.0319 --0.31213 -22.3248 16.8222 -0.163992 -22.7612 16.0343 -0.174185 -22.1584 15.2372 --0.810391 -21.8673 15.1964 --0.48581 -22.0679 14.3025 --1.3678 -22.4179 13.7687 --1.1562 -21.6924 13.147 --0.78409 -20.8726 13.575 -0.09470097 -21.3602 13.5353 -0.777126 -21.9583 13.7832 -0.44622 -22.7062 13.2566 --0.03000863 -23.3829 12.7188 --0.610865 -23.7343 12.0372 --1.55232 -24.1415 12.1249 --2.30107 -24.3469 11.5733 --2.523 -24.5548 12.5104 --2.58265 -24.3953 13.4867 --2.83629 -23.497 13.3208 --2.25993 -23.4314 14.1756 --2.13969 -22.7912 14.9809 --2.15603 -23.3361 15.8462 --2.79124 -23.2592 16.6183 --3.59935 -23.6207 17.0977 --3.89708 -23.5245 18.059 --3.3101 -22.747 17.9856 --2.44118 -22.3407 18.0574 --2.15803 -21.4529 18.0049 --1.90881 -21.0118 18.8369 --1.13707 -21.5799 18.9824 --0.484177 -21.4616 19.7388 -0.01251117 -21.727 20.5728 -0.161859 -22.6651 20.8715 --0.03410003 -23.6637 20.9497 -0.52687 -24.5226 21.0192 -0.532925 -25.442 21.5028 --0.472655 -25.446 21.4809 --1.37446 -25.7227 21.1811 --1.46507 -25.8269 22.1564 --1.2881 -24.8042 22.0565 --1.62893 -24.4157 21.1819 --1.85474 -25.0453 20.3475 --2.36318 -25.8979 20.1873 --3.16894 -25.2585 20.4277 --3.57156 -24.4207 20.4528 --4.54503 -24.4209 20.2405 --5.52895 -24.3369 20.3074 --6.37144 -24.9365 19.9056 --6.9838 -24.5353 19.2033 --7.24008 -23.5232 19.2774 --7.07351 -22.6728 18.7672 --8.02285 -22.4234 18.8033 --8.23905 -23.3358 19.0896 --9.14556 -23.6939 19.0285 --8.73742 -24.5376 18.6243 --9.51019 -25.2223 18.718 --9.70246 -26.1939 18.6072 --10.708 -26.3182 18.7596 --11.6716 -26.4342 18.3661 --12.4937 -27.081 18.4881 --11.9714 -27.8286 18.9425 --11.5439 -28.6414 19.2627 --11.4074 -29.1572 20.089 --10.4892 -29.3092 20.3638 --10.5159 -29.0347 19.4368 --10.5257 -30.02 19.3037 --10.6489 -29.6384 18.3807 --11.0138 -28.9419 17.7084 --10.1331 -28.7683 18.3149 --9.3416 -28.5523 17.6763 --9.6858 -28.0625 16.9398 --9.24671 -27.7551 16.14 --9.54019 -27.8586 15.2271 --10.1879 -27.2647 15.7918 --10.0849 -26.8799 16.7249 --9.31915 -26.5037 16.2415 --8.97102 -26.6635 15.2804 --9.14834 -26.2854 14.3889 --8.23188 -26.3753 14.4552 --7.84262 -27.2627 14.7027 --8.06001 -27.8947 14.0239 --7.45887 -28.5814 14.3882 --7.00771 -28.6853 13.5042 --6.53022 -28.1486 12.8046 --5.62054 -28.2274 13.3704 --5.06215 -27.7064 12.6767 --5.81477 -26.9588 12.6801 --5.14186 -26.7293 11.8991 --5.03935 -26.3616 12.8136 --4.9154 -26.3598 13.7381 --4.08197 -26.0099 14.2226 --3.46725 -25.4384 14.8404 --4.27884 -24.9136 14.7485 --5.10321 -24.8342 15.27 --4.42001 -24.4131 15.8104 --4.79508 -24.4356 16.7017 --5.53575 -23.7539 17.033 --5.7501 -23.6396 18.0262 --5.94048 -22.6733 17.98 --6.52284 -22.9874 17.2244 --6.44533 -22.2642 16.5577 --7.15121 -21.8054 16.0598 --6.72604 -20.9542 16.5032 --7.46794 -20.5757 15.9841 --7.19369 -19.8468 16.5603 --7.88099 -20.1815 17.2086 --7.60257 -19.6976 17.9871 --6.74804 -19.4884 18.4008 --6.03555 -19.7087 18.9722 --5.38873 -19.1204 19.3274 --5.78765 -18.318 18.8767 --5.06561 -17.8807 19.4545 --4.25904 -17.2328 19.2205 --3.92603 -16.5096 19.8651 --3.1054 -15.8943 19.6587 --2.64585 -16.6987 20.12 --3.28847 -16.8075 20.826 --3.7815 -17.6139 21.1534 --4.44437 -17.1303 20.6506 --5.13194 -16.4811 21.0998 --5.70077 -16.4709 20.3017 --6.51383 -15.8338 20.1565 --7.46278 -15.5791 20.0643 --7.27834 -15.6984 19.0724 --6.78736 -16.4565 18.6168 --6.44325 -15.6733 18.1997 --5.93119 -14.8477 18.4148 --5.39244 -13.9372 18.3976 --5.71618 -13.5547 19.2177 --5.50961 -12.5173 19.1616 --5.25301 -12.0544 18.3319 --4.53676 -11.6754 17.8329 --4.85151 -11.9309 16.9261 --5.03605 -12.6697 16.2686 --5.87721 -13.2378 16.0872 --6.41311 -13.2366 16.8715 --7.23485 -12.6469 17.2036 --7.42276 -13.2718 17.858 --7.8791 -14.2312 17.8216 --8.79398 -13.8059 17.6695 --9.30439 -14.4913 17.084 --9.09481 -13.635 16.5333 --9.72135 -13.9192 15.7891 --10.4781 -13.3417 15.5439 --10.6267 -13.9545 16.2763 --11.5079 -14.2793 16.7263 --11.1142 -14.6404 17.5589 --10.528 -14.7966 18.3273 --9.70582 -15.2743 18.5442 --10.1866 -16.2123 18.4838 --10.165 -17.0995 19.0494 --11.0962 -17.4082 19.3316 --10.4385 -18.0636 19.2244 --11.298 -18.6121 19.2929 --11.2919 -18.3803 20.3298 --10.6828 -18.4118 21.1192 --10.7422 -17.4101 21.0978 --11.2026 -17.4099 21.9795 --12.1396 -17.1143 21.7081 --12.4634 -16.5833 22.473 --12.5368 -15.5895 22.6296 --11.5426 -15.7873 22.5737 --11.8052 -15.9041 21.6364 --11.2329 -16.1212 20.8557 --10.7455 -16.132 20.041 --11.6815 -16.2169 19.7123 --12.0337 -16.1453 18.7399 --12.6742 -16.5683 18.1314 --12.0149 -16.8951 17.393 --12.438 -16.3624 16.7644 --11.5579 -16.6103 16.3077 --10.6908 -16.2303 16.5427 --10.0058 -15.6926 16.8669 --9.19448 -15.968 16.2911 --9.44073 -15.7699 15.3374 --9.67662 -16.6259 14.8305 --10.3851 -16.3487 14.2622 --10.8591 -16.4952 13.3854 --11.5681 -17.2469 13.6592 --11.9074 -18.1433 13.8545 --11.8994 -18.381 12.9376 --11.4135 -18.4116 12.1058 --10.8809 -17.9966 12.81 --10.2183 -18.6004 13.3459 --9.86835 -19.1208 14.1503 --8.87507 -19.144 13.9304 --8.05983 -18.578 13.9249 --8.09784 -17.7121 14.4711 --8.60621 -16.807 14.6001 --8.4019 -17.1634 15.4354 --7.62568 -16.4589 15.5323 --7.66705 -15.8741 16.3795 --7.60255 -16.1253 17.365 --7.76913 -17.1362 17.3297 --7.54774 -17.6674 18.131 --7.98511 -17.1014 18.8467 --7.28034 -17.1813 19.5231 --7.96595 -17.9258 19.5959 --8.26694 -17.7012 20.5269 --8.05197 -18.1396 21.4358 --7.30349 -17.5781 21.1136 --7.28509 -17.449 22.091 --7.58323 -16.9566 22.892 --7.5624 -16.3028 22.0871 --7.07354 -15.7103 22.6975 --7.76889 -15.4759 23.4416 --8.2801 -15.6595 24.3045 --8.19737 -16.0739 25.2486 --8.04954 -17.0596 25.3942 --8.51606 -17.8368 25.7287 --8.62742 -18.4899 26.5581 --9.38812 -18.2545 27.1518 --8.75255 -18.8434 27.599 --8.66947 -19.7066 27.1025 --8.35385 -20.7039 27.2569 --8.5254 -20.6776 26.3212 --9.16916 -21.3531 26.0486 --9.68347 -20.5781 25.6684 --9.93035 -20.9536 24.7293 --9.31292 -21.4752 24.0775 --9.11485 -20.781 23.3248 --8.65679 -20.2238 24.0518 --7.66083 -20.016 23.9571 --7.91193 -19.0385 23.8127 --7.6372 -18.5029 24.5857 --8.27473 -19.0409 25.1389 --7.68575 -19.7244 25.6739 --6.68931 -19.6899 25.4424 --6.8236 -20.6117 25.9194 --5.86874 -20.1621 26.0383 --5.47412 -20.5625 26.8344 --4.71573 -20.7621 26.1404 --4.56754 -19.7668 26.3823 --3.98006 -20.2297 27.0652 --3.92964 -19.2061 26.9898 --4.89529 -18.9113 27.0637 --5.10632 -17.9097 27.1824 --5.5715 -17.2045 26.6137 --4.84944 -16.7634 26.1001 --3.94242 -16.6438 25.7508 --3.14103 -16.4021 25.2192 --3.35132 -15.7486 25.9304 --2.76775 -15.3024 25.2748 --2.17604 -14.5139 25.1945 --1.70435 -13.895 24.5228 --1.26579 -14.5957 23.966 --0.48509 -14.7577 23.431 --0.272772 -15.4431 24.1348 -0.103813 -15.5876 25.0554 --0.369081 -14.7419 25.2415 --1.07511 -14.5062 25.8214 --1.08398 -15.5327 26.0883 --2.05371 -15.324 26.3184 --2.45094 -15.1741 27.2699 --2.61954 -15.0977 28.2162 --2.97413 -15.4522 29.1344 --3.06894 -15.9939 29.931 --2.61721 -16.776 29.5453 --3.23666 -16.4799 28.8108 --2.73721 -16.3844 27.944 --3.59764 -15.9838 27.7563 --3.83091 -15.3349 26.9642 --3.68725 -14.3879 26.6733 --3.57378 -13.4284 26.3879 --3.74693 -12.4219 26.273 --3.99801 -12.4045 25.2997 --4.73538 -13.138 25.0926 --5.04249 -13.6616 25.9451 --5.08535 -14.4448 26.5524 --5.75517 -14.0775 27.0102 --5.59186 -13.617 27.8681 --5.20866 -14.6125 27.9267 --6.11328 -14.9814 28.073 --6.39469 -14.2661 28.7306 --7.0818 -13.5561 28.4887 --6.44385 -13.2595 27.8282 --7.42289 -13.2061 27.5456 --7.94154 -14.0528 27.4468 --7.64038 -13.9516 26.5447 --8.18159 -14.0816 25.6834 --8.63178 -14.5505 24.9002 --9.43736 -14.7685 24.396 --9.76875 -15.5633 23.9243 --10.1182 -16.3703 23.4132 --10.6146 -17.2777 23.4551 --11.2882 -17.9909 23.3277 --11.995 -18.2389 22.6706 --11.4503 -19.0615 22.5932 --11.232 -19.647 23.3482 --11.7662 -20.1125 22.6946 --10.9726 -20.7058 22.2877 --10.5666 -20.7442 21.365 --11.4259 -20.5239 21.4039 --11.9979 -19.6795 21.652 --12.7592 -18.9781 21.6011 --13.2415 -19.7656 21.3758 --13.1434 -19.2594 20.4534 --12.1236 -19.2168 20.44 --11.8405 -19.8443 19.7302 --12.5574 -20.0584 19.0178 --13.2557 -20.7334 19.3396 --14.2063 -20.8814 19.2499 --14.6876 -20.0991 19.6854 --14.2323 -20.0109 20.5348 --14.689 -19.8672 21.4413 --14.309 -19.1562 22.0289 --14.4431 -18.5881 22.9321 --14.3278 -19.5094 23.3333 --14.1228 -19.3539 24.3298 --14.5235 -20.0491 25.0076 --14.3519 -19.1686 25.3429 --14.2934 -19.5688 26.2989 --15.2791 -19.6515 26.4714 --15.2584 -19.3511 27.4474 --15.5372 -18.4223 27.1582 --15.513 -17.4517 27.2419 --14.9016 -16.7657 27.5097 --14.176 -16.3833 28.0416 --13.8883 -16.2869 28.8918 --14.6883 -16.8679 28.8448 --15.1372 -17.7551 29.122 --15.8524 -17.2092 28.5187 --16.3952 -16.5583 27.9363 --16.5391 -16.6507 26.9058 --16.7358 -15.7097 26.6077 --16.1617 -15.961 25.8889 --15.6037 -15.2783 26.2909 --15.3217 -14.9598 27.2333 --14.8587 -14.9614 28.1458 --15.0774 -14.1763 28.7593 --15.2979 -13.2778 29.0163 --16.0244 -12.7038 29.3932 --16.9587 -12.9738 28.9447 --16.7835 -12.0703 28.6068 --17.4411 -11.9027 29.4084 --17.8886 -11.5403 28.6411 --17.3513 -10.8472 28.2815 --16.8358 -10.4771 27.5794 --16.7526 -9.47209 27.6357 --16.6165 -8.46407 27.6533 --17.1518 -7.5669 27.811 --17.1646 -6.70497 27.3267 --16.4303 -6.02934 27.308 --16.4266 -6.54797 26.4411 --16.0054 -6.89585 25.6954 --15.0374 -6.84129 25.4815 --15.0911 -6.06164 26.0504 --14.4521 -5.40231 25.703 --13.9652 -4.55283 25.2846 --14.9797 -4.31418 25.4686 --14.9092 -4.07382 24.5592 --14.7151 -3.21017 24.9593 --14.5621 -2.4174 25.5106 --14.973 -1.89718 26.3119 --15.9683 -1.71531 26.3502 --16.9596 -1.47679 26.1897 --16.7071 -0.5897181 25.8218 --16.0002 -0.4847961 25.1537 --16.6024 -1.28446 24.9286 --17.0393 -1.74433 24.1344 --17.0457 -2.69663 23.863 --17.1312 -3.58911 24.3428 --16.6889 -4.00914 23.5284 --15.8246 -3.46588 23.6833 --15.67 -3.50121 22.7003 --16.427 -2.95036 22.3833 --17.0308 -3.49368 21.8502 --17.7311 -2.89337 21.4696 --18.737 -2.61047 21.2764 --18.275 -2.79591 20.3799 --18.8206 -3.64982 20.5265 --19.6051 -3.75862 19.8246 --20.3738 -3.61352 19.2042 --20.6824 -2.66151 19.3487 --21.4669 -3.03126 19.8227 --22.0037 -3.58308 20.534 --21.3179 -4.28817 20.583 --20.4879 -4.59355 21.0812 --20.6328 -4.30987 22.0609 --20.6024 -3.90417 22.9094 --21.2951 -4.02918 23.5881 --21.584 -4.67228 24.3601 --21.3234 -4.40695 25.2496 --20.375 -4.69147 25.1209 --19.7256 -5.4119 25.037 --19.1675 -5.1292 24.2648 --19.7328 -4.3966 23.9174 --19.7064 -4.95229 23.097 --19.7359 -5.09788 22.1259 --19.391 -4.75572 21.2171 --18.8103 -5.5442 21.2532 --18.4147 -6.30364 20.7949 --18.8577 -7.01715 20.2805 --18.5467 -7.50618 19.5048 --17.9568 -7.65583 20.2486 --17.487 -8.54174 20.4205 --16.7588 -8.98013 19.8326 --16.5758 -8.00815 19.5956 --16.2571 -7.0243 19.6966 --16.0143 -6.31483 18.9925 --15.2344 -6.00696 18.3795 --14.4323 -6.05816 17.8213 --15.2716 -6.30961 17.2729 --15.9724 -6.95308 17.2688 --16.8955 -6.59841 17.1697 --17.7682 -7.30675 17.2205 --18.5367 -7.49246 17.8403 --18.2989 -8.34145 17.3868 --17.337 -8.57548 17.1086 --16.5474 -8.93688 16.7022 --16.6185 -9.15321 17.662 --16.5483 -10.0871 17.2301 --17.1672 -10.7683 17.6011 --16.3082 -11.1802 17.7183 --15.9479 -11.6197 16.8738 --15.1189 -11.0084 17.0329 --14.7565 -11.9251 16.7229 --13.7592 -12.1883 16.905 --14.2061 -13.0513 16.5453 --14.9642 -13.0271 17.0654 --15.2854 -13.5587 16.3513 --15.8904 -14.0551 16.9848 --16.0984 -14.8679 16.4998 --16.8958 -15.3377 16.8462 --17.4431 -14.6573 17.3816 --17.8947 -13.835 17.1725 --18.8192 -13.9604 16.7034 --19.613 -13.5918 16.3105 --20.3084 -13.6606 16.9341 --20.2769 -14.6266 16.6566 --21.2026 -14.9576 16.8346 --21.3421 -15.259 15.9106 --21.8675 -14.5042 15.4322 --21.2252 -14.3667 14.6204 --20.2483 -14.3586 14.2852 --20.1064 -13.3779 14.3925 --20.1835 -13.0456 15.2669 --20.515 -12.3431 15.9907 --20.2812 -11.5879 15.462 --21.2773 -11.3453 15.0964 --21.7985 -10.6008 15.445 --21.4939 -10.7128 16.3995 --20.692 -10.2363 16.9441 --20.654 -9.77944 17.8815 --21.5376 -10.1128 18.1064 --22.0979 -10.9348 18.1857 --22.6792 -11.6444 18.6224 --22.5154 -12.2933 19.4096 --22.5723 -11.7236 20.2381 --23.2694 -12.1977 20.8684 --22.4455 -12.7398 20.9281 --23.1573 -13.1984 20.4309 --23.3559 -13.9609 19.7631 --23.2379 -13.2547 19.1031 --23.4759 -13.8726 18.3867 --24.4327 -13.8269 18.656 --25.4578 -13.6325 18.8294 --25.5707 -13.6451 19.8314 --24.9504 -12.9648 20.2063 --25.1186 -12.0285 20.4371 --25.9551 -11.5178 20.3335 --25.876 -10.9292 21.0863 --25.2456 -10.4434 21.6051 --24.9783 -11.4033 21.5771 --24.4422 -12.192 21.7103 --23.6387 -11.5575 21.7145 --23.4415 -10.8955 20.9646 --23.0785 -10.461 21.8559 --23.1605 -9.87577 22.6797 --23.0962 -10.4397 23.4798 --22.6508 -11.1436 22.9126 --21.876 -11.4645 23.4086 --21.7159 -11.6546 24.3664 --21.2289 -12.3501 24.8992 --20.9433 -11.468 25.3777 --21.4905 -10.7767 25.8702 --21.303 -10.5342 26.7716 --20.433 -10.9788 26.8105 --20.1955 -10.2023 26.1829 --19.4408 -10.3201 26.8463 --19.0637 -9.44911 27.1705 --19.5797 -8.90732 26.4761 --20.497 -8.6222 26.6891 --20.7885 -7.82599 26.2452 --21.4229 -7.92819 25.425 --21.7291 -7.05132 25.0931 --22.4997 -7.40124 25.683 --22.6616 -7.59947 24.7542 --22.5917 -7.12027 23.9675 --22.4931 -7.4293 22.9852 --23.2204 -7.22561 22.3092 --22.7929 -6.70239 21.5699 --22.7681 -6.3387 20.6226 --23.4158 -6.76184 19.9514 --23.3657 -5.80011 19.8908 --23.8214 -5.03201 19.5487 --24.2249 -5.57196 18.8657 --24.8174 -5.87683 19.675 --25.5617 -5.95881 20.2926 --24.9291 -5.93948 21.0136 --24.0678 -5.71726 21.4522 --23.7052 -5.66963 22.3666 --23.071 -5.13882 21.9123 --22.9869 -5.02625 22.9209 --22.3019 -5.75401 22.8445 --21.5147 -6.27022 23.0202 --20.8394 -6.72651 23.6688 --20.303 -7.46143 24.0319 --19.3662 -7.30051 24.4012 --19.4187 -7.23002 25.3772 --18.6602 -7.79517 25.0335 --18.1273 -8.58633 25.0186 --17.3517 -8.9683 24.5408 --17.0837 -9.64125 23.7853 --16.1265 -9.96092 24.0671 --15.3586 -9.4639 23.7846 --15.624 -9.09088 24.6663 --15.8706 -8.26117 24.1895 --16.2806 -7.55833 24.6397 --16.2503 -7.04426 23.8273 --16.1328 -6.62698 22.8536 --16.8318 -6.23575 22.2791 --16.8299 -5.34595 21.8877 --15.9808 -4.87865 21.863 --15.4175 -5.65394 22.0081 --15.0505 -6.44001 22.4856 --14.84 -5.72865 23.0758 --13.8677 -6.15882 23.0146 --13.1397 -5.98502 22.282 --13.0941 -5.12391 21.793 --13.5292 -5.67529 21.044 --13.7913 -6.60061 21.0412 --13.6184 -7.23404 20.2868 --13.1319 -7.88142 20.9542 --12.3106 -7.98622 21.4035 --12.1476 -7.80767 22.3451 --12.3106 -8.33743 23.1602 --11.3976 -8.19743 23.4937 --10.6271 -7.77336 23.0571 --11.2756 -6.9686 22.9895 --12.3022 -6.74315 22.9404 --12.8889 -7.44288 23.2993 --12.1911 -6.94348 23.9019 --11.522 -7.4256 24.4598 --10.8649 -7.58938 25.1334 --10.8823 -8.45499 24.7193 --9.92946 -8.64666 24.8669 --10.0608 -9.18774 25.7178 --9.26556 -9.6382 25.3365 --8.475 -9.34272 25.8805 --8.87636 -8.43431 25.9445 --8.54313 -8.44303 25.0122 --8.68253 -7.54128 25.3381 --8.5132 -7.146 24.3579 --9.35516 -6.59228 24.4788 --8.84671 -6.39116 23.6097 --7.99895 -6.35855 23.0846 --7.88448 -6.88183 22.19 --6.89793 -6.75182 21.8784 --6.26864 -6.99816 22.6544 --6.68149 -7.77815 22.9729 --7.3633 -8.06454 23.6666 --7.97337 -7.39204 23.2191 --8.63881 -7.92766 23.661 --8.99322 -8.76848 24.095 --9.76219 -9.4128 24.0899 --9.72335 -10.2925 23.6721 --10.5807 -10.7911 23.7854 --10.9255 -10.7031 24.7423 --10.5605 -10.4276 25.6299 --10.6524 -10.427 26.6021 --10.7348 -11.4241 26.3535 --11.1754 -12.3096 26.5236 --11.3409 -12.2899 25.4973 --11.0069 -13.0497 24.8685 --9.99027 -13.0507 25.0812 --9.43625 -12.2813 24.7316 --8.64563 -12.4617 25.2939 --8.55912 -13.1647 24.568 --8.56346 -13.3295 23.5321 --8.07098 -13.5159 22.661 --7.75684 -12.5524 22.8464 --7.78074 -11.5666 22.7628 --8.6118 -11.2963 22.3509 --7.96638 -10.4891 22.3557 --8.72854 -10.157 22.8887 --9.58592 -9.99251 22.368 --9.54366 -9.85945 21.3744 --8.62648 -9.41592 21.0322 --8.72938 -10.3802 21.3882 --7.84309 -10.6841 21.1092 --7.89715 -10.112 20.3013 --7.01173 -9.67758 20.638 --6.25085 -9.31552 21.1516 --6.77076 -8.44659 21.2927 --6.58973 -8.54534 20.3003 --6.52735 -7.98891 19.4617 --6.77199 -7.62752 18.5687 --6.95144 -7.00528 19.3177 --6.69129 -6.03699 19.4183 --5.9621 -5.98704 20.2022 --5.25744 -5.3858 19.6458 --5.87893 -5.20311 18.8712 --6.47162 -4.47113 18.5365 --6.88199 -3.91654 17.8393 --7.23761 -4.80785 17.5495 --8.12624 -4.51024 17.9324 --9.07345 -4.75816 18.1272 --9.66788 -5.51897 17.7675 --10.5639 -5.08309 17.5697 --10.0731 -4.76253 18.4181 --10.1913 -4.7029 19.4439 --10.6915 -5.51886 19.416 --10.0917 -6.15035 19.8272 --9.50178 -6.88919 20.1233 --8.52426 -7.14324 19.7996 --8.45161 -6.97396 18.7867 --8.81078 -7.07562 17.8277 --8.38704 -7.76464 17.2272 --8.80422 -7.62946 16.3327 --8.39979 -7.93653 15.4825 --8.05114 -8.82905 15.4812 --8.28114 -9.75574 15.1497 --8.97959 -9.36762 14.5247 --9.89542 -9.34574 14.871 --9.73039 -8.91341 15.7845 --10.3752 -8.87255 16.5613 --10.3599 -7.86416 16.3597 --11.3265 -7.84972 15.8942 --12.3186 -7.72608 16.2106 --12.9499 -6.92321 16.2028 --12.7351 -7.15484 17.186 --12.8097 -7.89174 17.9096 --12.7746 -7.91037 18.9275 --13.5501 -8.56062 18.8628 --14.3495 -8.80163 19.2871 --14.9009 -9.14188 20.0401 --14.5734 -9.85185 20.7145 --13.8939 -10.048 20.0459 --13.3633 -10.4018 19.1655 --12.4734 -10.7407 18.7963 --12.0398 -11.6115 18.8743 --12.4961 -11.6901 19.7345 --13.1879 -12.2574 20.2301 --13.9948 -12.1687 19.8259 --14.539 -12.1786 20.6512 --15.2155 -12.105 21.3049 --14.4407 -11.4568 21.5728 --14.9724 -10.6056 21.3467 --15.055 -10.6173 22.3641 --14.9821 -11.4167 22.8041 --15.94 -11.372 23.1827 --15.974 -12.2738 22.7926 --16.2737 -13.1435 23.1906 --17.1505 -13.0583 22.8491 --17.023 -14.018 22.7491 --16.9612 -14.9577 22.3334 --16.6308 -15.6678 22.8782 --16.543 -15.4906 23.8701 --15.6579 -15.2354 23.6288 --15.3509 -14.233 23.7797 --14.5266 -13.8087 24.1113 --13.619 -13.6441 23.6613 --13.4555 -12.7003 23.7173 --14.0966 -11.9588 23.7972 --14.4793 -12.2022 24.6443 --15.4839 -12.3055 24.9095 --15.8294 -11.3123 24.9249 --15.4906 -10.4806 25.4167 --14.7888 -9.90048 25.1738 --14.8462 -10.4824 24.3447 --13.8945 -10.2966 24.6139 --13.3354 -10.6145 25.4171 --13.5112 -9.60895 25.2843 --12.6915 -9.31112 24.8737 --12.0937 -9.68026 25.633 --12.1601 -10.2951 26.3733 --11.8913 -10.5554 27.3399 --12.6401 -11.2411 27.111 --12.7128 -11.8584 26.3429 --13.0572 -12.6683 25.8101 --12.7667 -13.07 26.7037 --13.7584 -13.1668 26.9926 --13.3018 -13.2807 27.85 --13.7195 -12.7147 28.4569 --14.1759 -12.2872 29.2316 --13.6923 -11.4739 28.8769 --14.4353 -11.3904 28.1861 --14.6913 -10.4763 27.9851 --13.9752 -9.90171 28.2723 --12.9442 -9.9411 28.1352 --12.776 -9.98031 29.0935 --12.7506 -10.1391 30.0842 --12.592 -10.8268 30.7909 --12.4352 -10.5791 31.729 --12.706 -9.72422 31.2908 --12.4446 -8.84752 31.7444 --12.4602 -7.89314 31.4568 --11.8107 -7.82755 30.6483 --11.4676 -6.85624 30.7978 --11.2739 -6.17709 30.1011 --10.3384 -6.47646 29.9639 --10.8872 -7.25832 29.5934 --10.7392 -7.92567 30.3007 --10.9245 -8.52177 29.5084 --10.4337 -8.11911 28.7592 --10.5782 -8.1771 27.7933 --11.3223 -8.11876 27.1622 --11.1668 -7.47903 26.4067 --11.8484 -6.97418 25.9909 --12.7121 -6.95536 26.4379 --12.2262 -6.11749 26.6943 --12.7724 -5.32829 27.0418 --13.0548 -4.65336 26.3032 --13.1012 -4.18886 25.3584 --12.4986 -4.75048 24.8162 --11.7017 -4.53946 24.2716 --12.0264 -3.64389 24.055 --12.0688 -3.92831 23.0334 --12.0435 -3.14987 22.4682 --11.3999 -2.6444 23.0745 --11.4227 -2.59358 24.0787 --11.3753 -2.4753 25.0866 --12.2667 -2.06435 24.8185 --12.5848 -1.81631 23.8717 --12.0096 -1.68228 23.1234 --11.9091 -1.86169 22.1114 --11.0285 -2.25799 22.1598 --10.559 -1.57914 21.5817 --10.8128 -2.06642 20.7531 --10.4803 -3.02095 20.5875 --10.401 -3.59043 19.7656 --11.1343 -4.26348 20.0563 --12.0449 -4.4754 20.3364 --11.8838 -3.45458 20.6074 --12.4225 -2.91007 21.2617 --13.019 -2.74261 22.0016 --13.1923 -3.26322 22.7933 --14.2001 -3.46362 22.7229 --14.4232 -2.94191 21.9151 --14.9467 -3.18348 21.0548 --14.8441 -4.09531 20.7972 --15.5072 -3.69947 20.1486 --15.7368 -4.23401 19.3423 --16.1448 -4.05363 18.4323 --15.8052 -4.80459 17.8201 --16.3903 -5.46796 17.4357 --17.2901 -5.38252 17.1133 --18.0764 -5.23962 17.7126 --18.6074 -6.03023 17.9997 --19.2671 -6.6645 18.0932 --19.9199 -7.38276 17.883 --20.2001 -7.98733 18.6157 --19.8692 -8.67504 18.0391 --19.5243 -8.7733 19.0198 --20.3166 -9.23116 19.4277 --20.0842 -10.2228 19.5742 --19.4385 -10.2009 18.8354 --19.3343 -10.2716 17.8946 --19.1319 -11.0613 17.2941 --18.4564 -11.164 16.5692 --17.4024 -11.1156 16.6734 --17.3879 -11.131 15.6775 --17.9397 -10.4549 15.2394 --17.8559 -10.5041 14.2974 --17.9709 -11.3806 13.9071 --17.3818 -11.961 13.2727 --16.5816 -12.5189 13.7007 --15.7899 -12.0165 14.0791 --14.8625 -12.0951 13.8824 --14.8263 -11.153 13.702 --15.4132 -10.6632 12.9975 --15.9967 -11.3467 12.5275 --16.2252 -11.0667 11.5492 --15.4034 -10.4851 11.2336 --15.7317 -9.8602 10.4954 --16.3598 -9.79076 9.69623 --16.6558 -9.47758 8.86158 --16.9034 -8.51422 9.16669 --17.1514 -8.18166 10.0722 --17.9136 -7.65713 9.7389 --18.4221 -7.54334 8.89693 --18.9739 -7.35429 8.04365 --19.5353 -7.78264 7.34318 --18.5828 -7.98184 7.05121 --17.5422 -8.01225 6.88422 --17.4067 -7.04716 6.9567 --17.7364 -6.22406 6.40823 --17.6647 -7.15582 5.95328 --18.0995 -7.3024 5.15454 --19.123 -7.40957 5.258 --19.3571 -8.4383 5.1358 --18.4206 -8.69245 5.04938 --18.8868 -9.18479 4.36119 --19.5662 -9.84982 4.68354 --18.928 -9.86664 5.36154 --18.1402 -10.3628 5.82505 --17.8677 -10.9856 6.57123 --17.2168 -11.2934 7.26523 --17.5769 -10.6648 7.99151 --18.2202 -10.5203 8.62465 --18.8863 -10.9446 7.97711 --18.6643 -11.6209 8.69037 --17.6858 -11.5833 9.06897 --18.169 -12.3931 9.43196 --17.2372 -12.8759 9.35416 --16.3767 -12.327 9.34308 --15.8093 -12.878 9.89257 --15.7391 -13.695 9.41949 --16.2584 -14.5249 9.02677 --16.4353 -13.7727 8.36688 --16.708 -13.2385 7.56292 --15.9808 -12.6088 7.33496 --14.93 -12.4963 7.4124 --14.0421 -12.7034 7.09583 --13.4657 -12.8725 7.81163 --13.2073 -13.4659 7.03725 --13.6635 -13.6677 6.10394 --14.5061 -14.1862 5.85012 --14.0589 -13.7359 5.13811 --14.3586 -13.5461 4.20289 --13.7307 -14.0883 3.65636 --14.2577 -13.3186 3.12609 --15.0485 -12.8493 2.95356 --14.815 -11.8899 3.16312 --15.5913 -11.3731 3.30834 --16.284 -10.6567 3.01516 --16.4799 -10.0128 3.72987 --17.4047 -10.3474 3.60083 --17.7145 -11.3193 3.40233 --17.8889 -11.2387 2.38898 --18.8365 -10.9893 2.35673 --19.2202 -10.0996 2.55681 --19.4736 -9.87045 3.48042 --19.5157 -8.9874 2.92432 --19.3594 -8.35047 3.72188 --18.479 -7.74866 3.74324 --18.0082 -7.04627 3.14702 --18.1096 -6.77018 4.10902 --18.4375 -5.89883 4.39956 --17.6916 -5.85959 3.76617 --16.8817 -6.07979 3.30263 --15.8755 -6.31547 3.34363 --15.3912 -5.6536 3.87336 --15.7007 -5.58853 4.81143 --16.0415 -6.30549 5.55861 --15.9028 -7.01093 6.18353 --15.2602 -7.67732 5.79662 --15.0215 -7.64629 4.79729 --14.8575 -7.63943 3.80743 --14.595 -8.07339 2.9713 --15.0289 -7.20545 2.80891 --15.5401 -7.64142 2.01924 --15.8021 -8.05141 1.16597 --14.953 -8.50671 1.52955 --15.6337 -8.84338 2.26251 --15.5121 -9.72314 2.86245 --14.924 -10.1041 2.13461 --15.6794 -10.7311 2.02913 --15.23 -11.6146 2.0006 --16.1379 -11.8946 2.00282 --16.7927 -12.3432 2.66807 --17.0449 -13.0291 2.02622 --17.262 -13.3969 1.08434 --17.7444 -13.7664 1.84922 --18.5771 -14.2984 1.54221 --19.2692 -13.788 2.00877 --18.8916 -14.1964 2.80971 --19.2573 -13.3565 3.25119 --18.8947 -12.5911 2.87434 --19.0372 -12.7262 1.92061 --19.078 -12.4863 0.9606911 --19.1666 -12.8393 0.01094332 --19.9425 -13.4201 0.02750622 --20.2017 -12.9685 -0.7489729 --20.5391 -12.0617 -1.12257 --19.5228 -12.2508 -1.02169 --18.878 -11.5984 -0.7495329 --18.4902 -11.0235 -0.1191279 --17.5753 -10.5778 -0.4269879 --16.6481 -10.484 -0.08099628 --15.9208 -11.115 -0.1107389 --14.9639 -11.0593 0.2473411 --15.2254 -10.352 0.9017971 --15.0128 -9.4141 0.5678031 --15.2243 -8.91337 -0.2213079 --14.4357 -8.41789 0.05288872 --14.9062 -7.61987 0.3556751 --15.3704 -6.75526 0.5436391 --16.1359 -6.4294 1.02381 --16.2401 -5.67312 1.58794 --16.8932 -6.14203 2.09978 --16.8832 -7.14329 2.07646 --17.0415 -8.13897 1.9131 --16.727 -8.93318 1.37605 --16.2795 -9.00624 0.4360171 --17.261 -8.83958 0.2443261 --17.9771 -8.35304 -0.2831419 --17.6254 -7.4618 -0.5650039 --17.058 -6.62278 -0.8506389 --17.2646 -5.65965 -0.6844559 --17.9705 -6.1158 -1.24358 --18.5333 -6.44615 -1.97525 --17.8681 -6.49678 -2.74695 --17.802 -6.795 -3.70499 --18.6053 -6.25349 -3.42826 --18.6125 -5.24346 -3.27733 --18.066 -4.79734 -4.01595 --18.8342 -4.17637 -3.85408 --18.9706 -4.51385 -4.79125 --19.3243 -5.21392 -5.4699 --19.8725 -5.99635 -5.39059 --19.1327 -6.65718 -5.3248 --18.3803 -7.34925 -5.48122 --18.3687 -8.37562 -5.30182 --17.5574 -8.11834 -5.78981 --17.2588 -7.27937 -6.20958 --18.0258 -6.83771 -6.68384 --18.0607 -5.93849 -6.21315 --17.1578 -6.29659 -6.45402 --17.7706 -5.60213 -6.99269 --17.6282 -5.12089 -7.88915 --16.6785 -5.10921 -7.94746 --16.2191 -5.84324 -7.60147 --15.6737 -5.69921 -8.49004 --14.9898 -5.07629 -8.69215 --14.2561 -5.69313 -8.94822 --13.3916 -5.14971 -9.01518 --12.55 -4.62941 -8.67044 --11.9107 -4.65164 -9.45559 --11.9755 -3.70739 -9.53065 --12.1684 -2.79261 -9.06541 --13.072 -2.85207 -9.46023 --13.0864 -3.44881 -8.60713 --13.9591 -3.26053 -9.14504 --14.1503 -3.92701 -8.36496 --14.9291 -3.70891 -8.95277 --15.2839 -3.53075 -8.05999 --16.2271 -3.41963 -7.76014 --17.1745 -3.52467 -7.36912 --17.462 -3.36917 -6.4266 --16.4947 -3.26251 -6.20248 --16.0781 -4.25785 -6.38463 --15.1869 -4.56692 -6.75814 --14.4118 -4.20819 -7.22915 --14.4164 -5.16593 -7.47513 --14.1406 -6.05357 -7.50263 --14.3648 -6.22788 -6.52053 --15.1773 -5.83078 -6.15556 --15.4744 -5.06855 -5.5926 --16.3414 -4.69841 -5.18431 --16.4251 -5.5353 -4.62981 --16.518 -6.33316 -3.97281 --16.7132 -6.95145 -3.20446 --16.3473 -7.44269 -3.98513 --17.0442 -8.10241 -3.82256 --17.4463 -9.03437 -3.97039 --17.182 -9.74464 -3.40873 --16.2472 -9.46887 -3.11862 --15.9342 -10.1372 -3.77919 --16.1449 -11.1775 -3.91878 --15.9684 -11.1982 -4.96147 --16.4456 -11.7821 -5.57034 --17.412 -11.5047 -5.65659 --17.877 -11.1857 -6.47036 --18.5086 -10.8761 -7.18474 --19.518 -10.9205 -7.05448 --20.2377 -11.3981 -7.41556 --20.8019 -12.0096 -8.03957 --20.5975 -12.9392 -7.72241 --20.3029 -13.1653 -6.74794 --20.7535 -12.897 -5.88058 --20.7381 -13.8678 -5.49862 --20.0035 -13.255 -5.40206 --19.6195 -12.3737 -5.44454 --19.3345 -12.1513 -4.53613 --18.5603 -12.6606 -4.17183 --18.751 -12.0942 -3.32654 --17.8015 -11.8378 -3.62336 --17.7644 -11.1347 -2.92758 --17.5999 -11.3204 -1.97151 --16.9838 -11.5329 -1.25655 --16.4929 -12.3701 -1.22113 --16.3407 -13.0503 -1.94762 --16.9218 -13.6103 -1.26664 --17.2174 -14.2967 -1.87939 --16.7642 -14.6161 -1.02679 --17.5262 -14.6179 -0.2676219 --18.524 -14.5808 -0.01440028 --18.3591 -13.6411 -0.1706759 --18.8882 -13.517 -1.00386 --19.4842 -13.8192 -1.77767 --19.2044 -12.9459 -2.19962 --18.4029 -12.2898 -2.16865 --18.0908 -13.2077 -2.36105 --18.2333 -14.1323 -2.08134 --18.8586 -13.9902 -2.80542 --19.0883 -14.7135 -3.50955 --18.2839 -15.256 -3.32026 --18.3209 -15.8923 -2.47859 --17.6021 -15.8769 -1.82759 --16.7083 -15.6773 -2.32738 --16.7014 -16.0352 -1.44363 --16.4211 -16.2315 -0.4430339 --17.1477 -16.8488 -0.1877479 --17.167 -17.6278 0.4337811 --16.861 -18.0754 1.2904 --17.6047 -17.788 1.80629 --17.6229 -17.0618 2.45654 --18.6084 -17.3201 2.47297 --19.2016 -16.9174 1.70555 --18.8674 -16.8098 0.8007271 --18.8294 -15.8853 0.4150321 --19.5529 -15.266 0.5794591 --19.7042 -14.9409 1.55854 --20.536 -14.6914 1.06234 --21.1002 -15.3471 1.62685 --22.0746 -15.765 1.80648 --22.4927 -14.9835 2.27899 --22.6096 -14.006 1.95844 --22.5236 -13.0623 1.98658 --22.6799 -12.8275 1.02312 --22.1896 -12.2068 1.60314 --21.6665 -11.3148 1.79851 --21.2978 -10.7213 1.16423 --20.7986 -10.272 1.9968 --20.9159 -10.5977 2.97381 --20.1285 -10.982 3.54118 --20.8203 -11.3228 4.13951 --20.2017 -10.6704 4.49365 --20.6835 -11.0611 5.34768 --20.8511 -11.9998 5.57333 --21.8526 -11.8397 5.41481 --21.9526 -12.5821 6.08797 --22.8295 -12.2875 6.52534 --23.1368 -11.3705 6.34837 --22.2961 -11.3946 6.87562 --21.844 -10.9842 7.56685 --21.9915 -11.4163 8.46386 --22.827 -12.0585 8.3727 --22.2571 -12.5046 9.05202 --21.9944 -13.3021 9.51221 --22.9378 -13.517 9.14622 --23.9079 -13.8427 9.2615 --24.3702 -13.0761 8.6829 --24.9555 -13.5982 8.10246 --25.4204 -14.3529 7.54206 --25.8092 -15.1807 7.13748 --26.5197 -15.901 7.27795 --27.0284 -16.0673 8.10792 --26.6683 -15.1575 8.33945 --26.0209 -14.4598 8.66714 --25.7611 -13.7258 9.31001 --25.4286 -13.9632 10.2178 --25.6033 -14.7569 9.7819 --24.7775 -15.0775 9.2928 --24.7076 -15.8936 8.8172 --24.1289 -16.5151 9.42323 --24.3925 -17.1213 10.1547 --23.5673 -17.6156 10.0587 --22.6976 -18.1315 10.0034 --22.2642 -17.9675 9.12324 --22.8581 -18.5158 8.59345 --22.1849 -19.2428 8.42504 --23.0899 -19.243 7.95142 --24.0782 -19.3861 7.72719 --24.0992 -20.1718 7.02174 --24.4663 -20.899 7.61354 --24.1845 -21.9016 7.82978 --23.1899 -21.7722 7.61118 --22.8199 -21.9008 6.75469 --22.4817 -20.9476 6.61434 --23.2397 -20.8565 5.96029 --24.1189 -21.3763 5.81774 --24.1471 -22.2542 5.33011 --23.2495 -22.5661 5.07807 --22.2767 -22.3499 5.1588 --22.236 -21.603 4.43457 --22.1575 -21.1807 5.42874 --21.2758 -20.7228 5.74039 --21.7909 -19.892 5.69952 --21.662 -19.6551 4.71008 --21.8475 -19.0744 3.97977 --21.9095 -18.4841 4.80406 --20.8704 -18.7249 4.85504 --20.6593 -17.7463 4.69751 --20.7583 -17.6991 5.72459 --20.2781 -17.7523 6.64265 --19.6909 -17.8401 7.45255 --19.6183 -16.8502 7.55147 --20.0272 -16.1811 6.85039 --20.7177 -15.4989 6.70258 --20.0271 -14.868 7.0509 --20.0891 -13.8671 6.75451 --20.3426 -13.8064 7.7883 --20.2222 -14.5718 8.44451 --19.5391 -14.3686 9.11965 --18.6989 -14.6208 8.60513 --18.1485 -14.1603 7.96201 --18.7457 -13.3924 7.93491 --18.604 -13.0846 6.97472 --18.926 -13.6583 6.23641 --18.2356 -14.1621 5.62244 --17.8578 -13.2786 5.51122 --17.2634 -12.5949 5.02639 --16.4796 -12.1079 4.67754 --15.5677 -11.7076 4.50541 --14.6414 -11.2841 4.58037 --15.0051 -10.6528 5.18583 --14.2951 -11.0756 5.70686 --14.0702 -11.9169 5.21958 --13.6892 -12.3722 4.42763 --13.1195 -11.6957 3.81921 --12.5624 -12.1939 3.15205 --12.322 -13.1602 3.23067 --11.6648 -13.2714 4.00083 --11.7563 -12.4 4.53912 --11.7976 -11.482 4.15239 --11.1524 -11.1616 3.47078 --11.7528 -10.6017 2.8644 --12.7139 -10.913 2.9438 --12.5803 -10.3437 2.10094 --11.6701 -10.6091 1.70348 --11.3316 -11.5911 1.73756 --10.749 -11.898 0.9526371 --10.5551 -12.7077 1.548 --10.9885 -13.2144 0.8109861 --11.3604 -12.5737 0.1236011 --10.7736 -11.8306 -0.1829209 --10.1609 -12.4889 0.02782242 --9.44033 -12.9272 0.5497491 --9.08814 -12.1416 0.1162441 --8.3989 -12.1433 -0.6025449 --8.3176 -12.9172 -0.06511018 --8.50949 -12.8249 0.9439171 --8.47264 -13.7168 1.42527 --8.3198 -13.9101 2.36208 --8.7295 -14.6818 2.65583 --8.37203 -15.619 2.55081 --8.68207 -16.1834 1.72766 --8.18224 -16.7351 1.00774 --8.57297 -16.7215 0.1399021 --7.97885 -16.744 -0.6450729 --7.43054 -17.217 -1.34063 --6.71517 -17.7187 -1.63362 --6.62189 -17.8027 -0.6146229 --6.50536 -17.2932 0.2981031 --6.02331 -16.8521 1.09006 --5.35079 -16.3477 0.4553941 --6.11783 -16.2396 -0.2509479 --6.54796 -15.6138 0.4008321 --6.48742 -15.6361 1.42974 --7.13988 -15.2444 2.17204 --7.3448 -15.2186 3.1547 --6.9691 -15.2354 4.06684 --6.69408 -16.1796 3.88808 --6.26311 -16.7761 3.28375 --5.7262 -17.6232 3.67206 --5.53528 -18.5636 3.38286 --6.14371 -18.2428 2.69458 --5.18081 -18.4872 2.38342 --4.42132 -18.1866 1.86216 --3.96041 -17.5998 1.17445 --3.63592 -16.6552 1.07837 --3.80473 -16.7126 0.09609402 --3.1401 -16.3779 -0.5458699 --2.51979 -16.9387 -0.06550528 --2.44478 -17.912 0.1262581 --1.58416 -17.8928 0.6103961 --1.02168 -17.1028 0.8116451 --0.698401 -17.2784 1.66179 --1.29405 -16.4718 1.7535 --1.20491 -16.6565 2.70536 --1.83627 -17.3383 2.51024 --2.41765 -16.9109 1.83713 --2.93634 -16.0722 1.92531 --3.30215 -15.1277 1.85612 --2.68966 -14.6529 1.19532 --2.09517 -13.8614 0.8158601 --1.59787 -14.6848 0.9300581 --0.979176 -14.633 0.2424121 --1.43266 -15.3157 -0.3772699 --1.38441 -15.8767 -1.15919 --1.63294 -16.6299 -1.84423 --0.979846 -17.3623 -1.62137 --0.26691 -16.8839 -1.05171 --0.01836083 -17.7326 -0.5577269 -0.311614 -18.6345 -0.2386659 --0.300772 -19.1707 0.3533641 --0.45909 -18.9769 1.33908 --0.765792 -18.7706 2.27261 --0.267866 -17.9749 2.66323 --0.476554 -17.9033 3.65093 --0.04862893 -18.6448 4.1154 -0.160754 -19.1816 3.32306 -0.432145 -20.0162 2.86337 -1.35828 -19.9421 3.20509 -0.918236 -20.851 3.25794 -1.00792 -21.6939 3.71865 -0.01846787 -21.9635 3.63551 --0.03478893 -22.8796 3.965 --0.44018 -23.3375 4.74781 --1.29316 -23.6069 5.09817 --1.4422 -23.8758 4.1608 --2.18571 -24.2742 3.69094 --2.84799 -23.7683 4.21335 --2.42618 -22.9348 3.90019 --2.46041 -23.2094 2.95356 --2.39758 -23.2739 1.94176 --2.98297 -22.9221 1.19968 --2.92175 -22.2346 0.5027861 --2.61479 -21.406 0.08836602 --1.72104 -21.5423 0.5203291 --1.36492 -20.7139 0.2088941 --0.681441 -21.3719 0.3890411 -0.221378 -21.737 -0.08934318 --0.01296833 -21.8795 0.8959241 -0.596142 -22.5959 0.6715991 -1.40294 -23.0858 0.4111251 -1.38058 -23.6248 -0.4516429 -1.35347 -24.6271 -0.3329969 -0.476824 -24.7115 0.2140341 --0.118841 -23.9082 0.1092351 -0.162551 -23.5464 0.9382481 --0.528495 -22.8752 0.7937701 --1.22243 -22.4509 0.1072601 --1.94009 -22.2481 -0.5394919 --2.14375 -23.1794 -0.9199809 --2.68979 -23.5751 -1.67526 --3.13772 -24.1382 -2.39865 --3.03463 -25.1308 -2.13476 --3.52823 -25.2435 -2.97538 --4.11751 -24.541 -2.92176 --4.98222 -25.145 -2.96032 --5.28442 -25.6283 -3.73908 --6.24526 -25.5695 -3.52539 --5.69793 -26.1943 -2.89561 --6.10714 -26.8499 -2.29479 --5.51818 -27.2647 -2.97214 --5.18347 -27.0796 -3.90706 --4.28836 -27.3998 -4.09418 --3.36446 -27.6429 -4.18591 --2.82066 -26.8267 -4.15093 --2.53327 -26.1742 -3.36111 --2.53883 -25.7304 -4.16075 --1.83245 -25.1139 -4.50631 --0.970865 -25.526 -4.44269 --1.28663 -26.2739 -3.85732 --1.59705 -27.0396 -4.42883 --1.52632 -27.7935 -5.0979 --0.800441 -28.4785 -5.12727 --0.744699 -28.3136 -6.13472 --0.720131 -29.1246 -6.65237 --0.629731 -28.78 -7.55645 --0.377451 -29.4107 -8.29517 --0.996488 -29.4598 -8.99045 --0.599697 -30.4016 -9.05727 --1.05784 -30.574 -9.88977 --0.277431 -31.1161 -10.1052 -0.408644 -30.4338 -10.2678 -0.978395 -29.7866 -9.76467 -1.29804 -30.5431 -9.27597 -1.76449 -30.7711 -10.1503 -2.72658 -30.573 -10.0078 -3.25293 -30.1211 -9.28215 -3.51152 -30.303 -8.42115 -3.31075 -29.2896 -8.29259 -2.46667 -29.6373 -8.74994 -2.01793 -29.7625 -9.58242 -1.81954 -28.8668 -9.90537 -2.65316 -28.6716 -9.44185 -2.33536 -27.7881 -9.76625 -3.34896 -27.4633 -10.0527 -3.97128 -27.7919 -10.8043 -4.30927 -26.8921 -11.1651 -4.7887 -26.0184 -11.3504 -5.70995 -26.1383 -11.3205 -6.10342 -26.3904 -12.1577 -5.41486 -27.146 -12.2684 -5.54559 -27.9474 -11.7159 -5.04998 -28.5559 -12.2761 -4.11678 -29.0272 -12.3376 -3.28746 -28.39 -12.1586 -2.77907 -28.9011 -12.8448 -2.71111 -28.2776 -13.6278 -2.54822 -28.9496 -14.3251 -3.32498 -28.3929 -14.7103 -4.30863 -28.4893 -14.4465 -5.15146 -27.9711 -14.1983 -5.91513 -27.4989 -13.7535 -6.60183 -27.5979 -14.4791 -7.30611 -28.0657 -15.0896 -7.61482 -28.5404 -15.9428 -6.72906 -29.0013 -16.1311 -6.57845 -29.3164 -17.1116 -5.7474 -29.6489 -17.5644 -5.21519 -30.3931 -17.9417 -4.76158 -29.5123 -17.877 -5.11433 -28.5404 -18.0793 -4.61588 -27.7529 -17.694 -4.30396 -27.9973 -16.7823 -4.87471 -28.7588 -17.0524 -4.37257 -29.4196 -16.515 -4.34907 -30.36 -16.7674 -3.71661 -31.1385 -16.8334 -3.18788 -31.4624 -17.6259 -3.09708 -30.8725 -18.4167 -2.63163 -30.0338 -18.7512 -1.81601 -29.8788 -19.3065 -1.39484 -28.9596 -19.4089 -1.64554 -27.9775 -19.4681 -2.59088 -27.7061 -19.6773 -3.53325 -27.469 -19.8316 -3.70637 -27.0416 -20.7882 -3.97953 -26.526 -21.6369 -4.00849 -25.6369 -22.0054 -4.67819 -24.9864 -22.411 -5.00228 -24.615 -23.2314 -5.30182 -25.4954 -23.6215 -5.18228 -25.8779 -24.57 -4.65137 -26.3726 -25.2504 -5.00133 -27.2703 -24.9781 -5.68137 -27.0381 -25.6138 -5.54698 -26.2542 -26.1818 -4.80806 -26.1418 -26.771 -4.78139 -25.1744 -27.0733 -5.18275 -25.2179 -28.0197 -5.64785 -26.1033 -28.3246 -5.11108 -26.9582 -28.3317 diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py deleted file mode 100755 index 796347bb0b..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py +++ /dev/null @@ -1,301 +0,0 @@ -#!/usr/bin/env python - -err_msg = """ -Usage: - - generate_system_lt.py n < monomer_coords.raw > system.lt - -Example: - - generate_system_lt.py 30118 47 < coords.raw > system.lt - -Explanation: - ARGUMENTS: - n = total length of the polymer (in monomers) - L = the (average) length of each condensin interval (Poisson- - distributed) This is also 1/probability that each monomer - is a "condensin monomer". - - (Note: 30117 ~= 128000/4.25, but using 30118 makes interpolation cleaner, - and 47 = 200/4.25. Note that 128000 and 200 are for the 10nm model. - See the supplemental section of Naumova et al Science 2013, p 18.) - -""" - - -import sys -import random -from math import * - -# Parse the argument list: -if len(sys.argv) <= 2: - sys.stderr.write("Error:\n\nTypical Usage:\n\n"+err_msg+"\n") - exit(1) -N=int(sys.argv[1]) -L=float(sys.argv[2]) -if len(sys.argv) > 3: - delta_x = float(sys.argv[3]) -else: - delta_x = 2.0 -if len(sys.argv) > 4: - x_offset = float(sys.argv[4]) -else: - x_offset = -((N-1.0)/2) * delta_x - - -coords = [[0.0, 0.0, 0.0] for i in range(0,N)] -lines = sys.stdin.readlines() -if len(lines) != N: - sys.stderr.write("Error: Number of lines in input file ("+str(len(lines))+")\n" - " does not match first argument ("+str(N)+")\n") - exit(1) -for i in range(0, N): - coords[i] = map(float, lines[i].split()) - -# Now calculate the box_boundaries: -box_bounds_min = [0.0, 0.0, 0.0] -box_bounds_max = [0.0, 0.0, 0.0] -for i in range(0, N): - for d in range(0, 3): - if i == 0: - box_bounds_min[d] = coords[i][d] - box_bounds_max[d] = coords[i][d] - else: - if coords[i][d] > box_bounds_max[d]: - box_bounds_max[d] = coords[i][d] - if coords[i][d] < box_bounds_min[d]: - box_bounds_min[d] = coords[i][d] - -# Now scale the box boundaries outward by 50% -box_scale = 1.5 -for d in range(0,3): - box_bounds_cen = 0.5*(box_bounds_max[d] + box_bounds_min[d]) - box_bounds_width = box_bounds_max[d] - box_bounds_min[d] - box_bounds_min[d] = box_bounds_cen - 0.5*box_scale*box_bounds_width - box_bounds_max[d] = box_bounds_cen + 0.5*box_scale*box_bounds_width - -# Now calculate the direction each molecule should be pointing at: -direction_vects = [[0.0, 0.0, 0.0] for i in range(0,N)] -for d in range(0, 3): - direction_vects[0][d] = coords[1][d] - coords[0][d] - direction_vects[N-1][d] = coords[N-1][d] - coords[N-2][d] -for i in range(1, N-1): - for d in range(0, 3): - direction_vects[i][d] = coords[i+1][d] - coords[i-1][d] - -# Optional: normalize the direction vectors -for i in range(1, N-1): - direction_len = 0.0 - for d in range(0, 3): - direction_len += (direction_vects[i][d])**2 - direction_len = sqrt(direction_len) - for d in range(0, 3): - direction_vects[i][d] /= direction_len - -# Now, begin writing the text for the system.lt file: - -sys.stdout.write( -""" -import "monomer.lt" # <-- defines "Monomer" -import "condensin.lt" # <-- defines "CondensinMonomer" - - -""" -) - - - -# Figure out which monomers are "Monomers" and which monomers are -# "CondensinMonomers" - -ic = 0 # count the number of condensins added so far -condensin_is_here = [False for i in range(0, N)] -for i in range(0, N): - #add_condensin_here = random.random() < (1.0 / L) - add_condensin_here = random.random() < (1.0 / (L-2.0)) - - # We do not allow condensin at successive sites separated by less than 2 - # subunits (the "L-2.0" above is to compensate for this) - if (((i > 0) and condensin_is_here[i-1]) or - ((i > 1) and condensin_is_here[i-2])): - add_condensin_here = False - - if add_condensin_here: - condensin_is_here[i] = True - ic += 1 -Nc = ic - - -ic = 0 -for i in range(0, N): - if condensin_is_here[i]: - sys.stdout.write("condensins["+str(ic)+"] = new CondensinMonomer.scale(0.5,0.8,0.8).rotvv(1,0,0,") - ic+=1 - else: - sys.stdout.write("monomers["+str(i)+"] = new Monomer.scale(0.5,0.8,0.8).rotvv(1,0,0,") - sys.stdout.write(str(direction_vects[i][0])+"," - +str(direction_vects[i][1])+"," - +str(direction_vects[i][2])+ - ").move(" - +str(coords[i][0])+"," - +str(coords[i][1])+"," - +str(coords[i][2])+")\n") - - #if condensin_is_here[i]: - # if i < N-1: - # sys.stdout.write("\n" - # "#(override the dihedral angle for this monomer)\n" - # "write(\"Data Dihedrals\") {\n" - # " $dihedral:twistor"+str(i+1)+" @dihedral:CondensinMonomer/TWISTOR $atom:monomers["+str(i)+"]/t $atom:monomers["+str(i)+"]/c $atom:monomers["+str(i+1)+"]/c $atom:monomers["+str(i+1)+"]/t\n" - # "}\n" - # "\n") - - - -sys.stdout.write( -""" - -# ---------------- simulation box ----------------- - -# Now define a box big enough to hold a polymer with this (initial) shape - -""" -) - - -sys.stdout.write("write_once(\"Data Boundary\") {\n" - +str(box_bounds_min[0])+" "+str(box_bounds_max[0])+" xlo xhi\n" - +str(box_bounds_min[1])+" "+str(box_bounds_max[1])+" ylo yhi\n" - +str(box_bounds_min[2])+" "+str(box_bounds_max[2])+" zlo zhi\n" - "}\n\n\n") - - -sys.stdout.write( -""" -# What kind of boundary conditions are we using? - -write_once("In Init") { - boundary s s s # <-- boundary conditions in x y z directions - #boundary p p p # <-- boundary conditions in x y z directions -} -# "p" stands for "periodic" -# "s" stands for "shrink-wrapped" (non-periodic) - - -# ---- Bonds ---- - - -write_once("In Settings") { - # 10nm model: - #bond_coeff @bond:backbone harmonic 100.0 1.0 - # 30nm fiber (4.25^(1/3)=1.6198059006387417) - bond_coeff @bond:backbone harmonic 100.0 1.6198059006387417 -} - - -""" -) - - -sys.stdout.write("write(\"Data Bonds\") {\n") - -# Old bond-loop was simple: -#for i in range(0, N-1): -# sys.stdout.write(" $bond:b"+str(i+1)+" @bond:backbone $atom:monomers["+str(i)+"]/a $atom:monomers["+str(i+1)+"]/a\n") - -ic = 0 -for i in range(0, N-1): - #sys.stderr.write("i="+str(i)+", ic="+str(ic)+", Nc="+str(Nc)+"\n") - - # Figure out if the first atom in the bond pair - # belongs to a regular Monomer or a CondensinMonomer - if condensin_is_here[i]: - sys.stdout.write(" $bond:b"+str(i+1)+" @bond:backbone $atom:condensins["+str(ic)+"]/a") - ic+=1 - else: - sys.stdout.write(" $bond:b"+str(i+1)+" @bond:backbone $atom:monomers["+str(i)+"]/a") - - # Do the same thing for the second atom in the bond pair - if condensin_is_here[i+1]: - assert(ic coords.raw - -Example: - - interpolate_coords.py 30118 3.0 < coords_orig.raw > coords.raw - - # (Note: 30117 ~= 128000/4.25, but using 30118 makes interpolation cleaner. - # See the supplemental section of Naumova et al Science 2013, p 18.) - -""" - - -import sys -from math import * - -# Parse the argument list: -if len(sys.argv) <= 1: - sys.stderr.write("Error:\n\nTypical Usage:\n\n"+err_msg+"\n") - exit(1) - -n_new = int(sys.argv[1]) - -if len(sys.argv) > 2: - scale = float(sys.argv[2]) -else: - scale = 1.0 - -coords_orig = [] - -lines = sys.stdin.readlines() - -for line in lines: - tokens = line.split() - if (len(tokens) > 0): - coords_orig.append(map(float, tokens)) - g_dim = len(tokens) - -n_orig = len(coords_orig) - -if n_orig < 2: - sys.stderr.write("Error:\n\nInput file contains less than two lines of coordinates\n") - exit(1) - -if n_new < 2: - sys.stderr.write("Error:\n\nOutput file will contain less than two lines of coordinates\n") - exit(1) - -coords_new = [[0.0 for d in range(0, g_dim)] for i in range(0, n_new)] - -for i_new in range(0, n_new): - I_orig = (i_new) * (float(n_orig-1) / float(n_new-1)) - i_orig = int(floor(I_orig)) - i_remainder = I_orig - i_orig - - if (i_new < n_new-1): - for d in range(0, g_dim): - coords_new[i_new][d] = scale*(coords_orig[i_orig][d] - + - i_remainder*(coords_orig[i_orig+1][d]- - coords_orig[i_orig][d])) - else: - for d in range(0, g_dim): - coords_new[i_new][d] = scale*coords_orig[n_orig-1][d] - - # print the coordates - for d in range(0, g_dim-1): - sys.stdout.write(str(coords_new[i_new][d]) + ' ') - sys.stdout.write(str(coords_new[i_new][g_dim-1]) + "\n") diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/monomer.lt b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/monomer.lt deleted file mode 100644 index 9ef2b03984..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/monomer.lt +++ /dev/null @@ -1,84 +0,0 @@ -# This file contains the definition of a molecule named "Monomer". -# (This particular molecule contain only one atom, but that is up to you.) -# Later, multiple monomers can be connected together to build a molecule. - - - -Monomer { - - # atom-id mol-id(ignore) atom-type q x y z - - write("Data Atoms") { - $atom:a $mol @atom:A 0.000 0.00000 0.00000 0.00000 - } - - # (The x y z positions will be changed later with move commands - # You can spedify charge and other properties by changing the atom_style.) - - - - # atom-type mass - - write_once("Data Masses") { - @atom:A 1.0 - } - - # pairwise interactions (between non-bonded atoms): - # - # U(r) = 4*eps*((r/sig)^12 - (r/sig)^6) - # - # Note: when sigma=0.8908987181403393=2^(1/6), the minimia is at r=1.0 - # - # atom-type atom-type pair_style epsilon sigma rcutoff - - write_once("In Settings") { - # I usually use sigma = 2^(-(1/6)), with a cutoff of 1 - #pair_coeff @atom:A @atom:A lj/cut 1.0 0.8908987181403393 1.0 - # In the 2013 Science (metaphase) paper, Imakaev used sigma=1.0 - # with a cutoff of 2^(1/6). Here we are trying to reproduce his results. - # 10nm fiber - #pair_coeff @atom:A @atom:A lj/cut 1.0 1.0 1.122462048309373 - # 30nm fiber (4.25^(1/2)=2.0615528128088303) - #pair_coeff @atom:A @atom:A lj/cut 1.0 2.0615528128088303 2.314014792963349 - # 30nm fiber (4.25^(1/3)=1.6198059006387417) - pair_coeff @atom:A @atom:A lj/cut 1.0 1.6198059006387417 1.8181706490945708 - } - -} # Monomer - - - - -# -------------------------------------------------------------------- -# -# At some point we need to specify which force-field styles we want. -# LAMMPS also allows you to customize the kinds of properties you want -# each atom to have (the "atom_style"), such as charge, molecule-id, dipole etc. -# I typically specify this here. Doing it this way means that all systems built -# from "Monomers" (ie which import "monomer.lt") share these atom-styles -# and force-field styles by default. You can override these settings later. - - -write_once("In Init") { - # Default styles for molecules built out of "Monomers" - units lj - atom_style full - - bond_style hybrid harmonic table linear 4001 - angle_style hybrid cosine - dihedral_style none - - # If you need angles, dihedrals and impropers, uncomment or replace: - # angle_style hybrid harmonic - # dihedral_style hybrid fourier - - pair_style hybrid lj/cut 2.5 - - # If you are using gpu acceleration uncomment these lines: - # package gpu force/neigh 0 0 1.0 - # pair_style hybrid lj/cut/gpu 4.0 - - pair_modify mix arithmetic - special_bonds lj/coul 1 1 1 -} - diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/table_bonds_stage2.dat b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/table_bonds_stage2.dat deleted file mode 100644 index 1bfb911c09..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/table_bonds_stage2.dat +++ /dev/null @@ -1,4011 +0,0 @@ -# This table contains the bond potential between condensin-anchors -# used by Imakaev in the Science 2013 (metaphase chromatin HiC) paper, -# two-stage model, during stage 2. -# -# i r_i U(r_i) -dU/dr|r_i -# where U(r) = step(d-3) * abs(d-3) * 10 - -STAGE2 -N 4001 FP 0 0 EQ 0 - -1 0 0 0 -2 .05 0 0 -3 .10 0 0 -4 .15 0 0 -5 .20 0 0 -6 .25 0 0 -7 .30 0 0 -8 .35 0 0 -9 .40 0 0 -10 .45 0 0 -11 .50 0 0 -12 .55 0 0 -13 .60 0 0 -14 .65 0 0 -15 .70 0 0 -16 .75 0 0 -17 .80 0 0 -18 .85 0 0 -19 .90 0 0 -20 .95 0 0 -21 1.00 0 0 -22 1.05 0 0 -23 1.10 0 0 -24 1.15 0 0 -25 1.20 0 0 -26 1.25 0 0 -27 1.30 0 0 -28 1.35 0 0 -29 1.40 0 0 -30 1.45 0 0 -31 1.50 0 0 -32 1.55 0 0 -33 1.60 0 0 -34 1.65 0 0 -35 1.70 0 0 -36 1.75 0 0 -37 1.80 0 0 -38 1.85 0 0 -39 1.90 0 0 -40 1.95 0 0 -41 2.00 0 0 -42 2.05 0 0 -43 2.10 0 0 -44 2.15 0 0 -45 2.20 0 0 -46 2.25 0 0 -47 2.30 0 0 -48 2.35 0 0 -49 2.40 0 0 -50 2.45 0 0 -51 2.50 0 0 -52 2.55 0 0 -53 2.60 0 0 -54 2.65 0 0 -55 2.70 0 0 -56 2.75 0 0 -57 2.80 0 0 -58 2.85 0 0 -59 2.90 0 0 -60 2.95 0 0 -61 3.0 0 -5 -62 3.05 .5 -10 -63 3.10 1.0 -10 -64 3.15 1.5 -10 -65 3.20 2.0 -10 -66 3.25 2.5 -10 -67 3.30 3.0 -10 -68 3.35 3.5 -10 -69 3.40 4.0 -10 -70 3.45 4.5 -10 -71 3.50 5.0 -10 -72 3.55 5.5 -10 -73 3.60 6.0 -10 -74 3.65 6.5 -10 -75 3.70 7.0 -10 -76 3.75 7.5 -10 -77 3.80 8.0 -10 -78 3.85 8.5 -10 -79 3.90 9.0 -10 -80 3.95 9.5 -10 -81 4.00 10.0 -10 -82 4.05 10.5 -10 -83 4.10 11.0 -10 -84 4.15 11.5 -10 -85 4.20 12.0 -10 -86 4.25 12.5 -10 -87 4.30 13.0 -10 -88 4.35 13.5 -10 -89 4.40 14.0 -10 -90 4.45 14.5 -10 -91 4.50 15.0 -10 -92 4.55 15.5 -10 -93 4.60 16.0 -10 -94 4.65 16.5 -10 -95 4.70 17.0 -10 -96 4.75 17.5 -10 -97 4.80 18.0 -10 -98 4.85 18.5 -10 -99 4.90 19.0 -10 -100 4.95 19.5 -10 -101 5.00 20.0 -10 -102 5.05 20.5 -10 -103 5.10 21.0 -10 -104 5.15 21.5 -10 -105 5.20 22.0 -10 -106 5.25 22.5 -10 -107 5.30 23.0 -10 -108 5.35 23.5 -10 -109 5.40 24.0 -10 -110 5.45 24.5 -10 -111 5.50 25.0 -10 -112 5.55 25.5 -10 -113 5.60 26.0 -10 -114 5.65 26.5 -10 -115 5.70 27.0 -10 -116 5.75 27.5 -10 -117 5.80 28.0 -10 -118 5.85 28.5 -10 -119 5.90 29.0 -10 -120 5.95 29.5 -10 -121 6.00 30.0 -10 -122 6.05 30.5 -10 -123 6.10 31.0 -10 -124 6.15 31.5 -10 -125 6.20 32.0 -10 -126 6.25 32.5 -10 -127 6.30 33.0 -10 -128 6.35 33.5 -10 -129 6.40 34.0 -10 -130 6.45 34.5 -10 -131 6.50 35.0 -10 -132 6.55 35.5 -10 -133 6.60 36.0 -10 -134 6.65 36.5 -10 -135 6.70 37.0 -10 -136 6.75 37.5 -10 -137 6.80 38.0 -10 -138 6.85 38.5 -10 -139 6.90 39.0 -10 -140 6.95 39.5 -10 -141 7.00 40.0 -10 -142 7.05 40.5 -10 -143 7.10 41.0 -10 -144 7.15 41.5 -10 -145 7.20 42.0 -10 -146 7.25 42.5 -10 -147 7.30 43.0 -10 -148 7.35 43.5 -10 -149 7.40 44.0 -10 -150 7.45 44.5 -10 -151 7.50 45.0 -10 -152 7.55 45.5 -10 -153 7.60 46.0 -10 -154 7.65 46.5 -10 -155 7.70 47.0 -10 -156 7.75 47.5 -10 -157 7.80 48.0 -10 -158 7.85 48.5 -10 -159 7.90 49.0 -10 -160 7.95 49.5 -10 -161 8.00 50.0 -10 -162 8.05 50.5 -10 -163 8.10 51.0 -10 -164 8.15 51.5 -10 -165 8.20 52.0 -10 -166 8.25 52.5 -10 -167 8.30 53.0 -10 -168 8.35 53.5 -10 -169 8.40 54.0 -10 -170 8.45 54.5 -10 -171 8.50 55.0 -10 -172 8.55 55.5 -10 -173 8.60 56.0 -10 -174 8.65 56.5 -10 -175 8.70 57.0 -10 -176 8.75 57.5 -10 -177 8.80 58.0 -10 -178 8.85 58.5 -10 -179 8.90 59.0 -10 -180 8.95 59.5 -10 -181 9.00 60.0 -10 -182 9.05 60.5 -10 -183 9.10 61.0 -10 -184 9.15 61.5 -10 -185 9.20 62.0 -10 -186 9.25 62.5 -10 -187 9.30 63.0 -10 -188 9.35 63.5 -10 -189 9.40 64.0 -10 -190 9.45 64.5 -10 -191 9.50 65.0 -10 -192 9.55 65.5 -10 -193 9.60 66.0 -10 -194 9.65 66.5 -10 -195 9.70 67.0 -10 -196 9.75 67.5 -10 -197 9.80 68.0 -10 -198 9.85 68.5 -10 -199 9.90 69.0 -10 -200 9.95 69.5 -10 -201 10.00 70.0 -10 -202 10.05 70.5 -10 -203 10.10 71.0 -10 -204 10.15 71.5 -10 -205 10.20 72.0 -10 -206 10.25 72.5 -10 -207 10.30 73.0 -10 -208 10.35 73.5 -10 -209 10.40 74.0 -10 -210 10.45 74.5 -10 -211 10.50 75.0 -10 -212 10.55 75.5 -10 -213 10.60 76.0 -10 -214 10.65 76.5 -10 -215 10.70 77.0 -10 -216 10.75 77.5 -10 -217 10.80 78.0 -10 -218 10.85 78.5 -10 -219 10.90 79.0 -10 -220 10.95 79.5 -10 -221 11.00 80.0 -10 -222 11.05 80.5 -10 -223 11.10 81.0 -10 -224 11.15 81.5 -10 -225 11.20 82.0 -10 -226 11.25 82.5 -10 -227 11.30 83.0 -10 -228 11.35 83.5 -10 -229 11.40 84.0 -10 -230 11.45 84.5 -10 -231 11.50 85.0 -10 -232 11.55 85.5 -10 -233 11.60 86.0 -10 -234 11.65 86.5 -10 -235 11.70 87.0 -10 -236 11.75 87.5 -10 -237 11.80 88.0 -10 -238 11.85 88.5 -10 -239 11.90 89.0 -10 -240 11.95 89.5 -10 -241 12.00 90.0 -10 -242 12.05 90.5 -10 -243 12.10 91.0 -10 -244 12.15 91.5 -10 -245 12.20 92.0 -10 -246 12.25 92.5 -10 -247 12.30 93.0 -10 -248 12.35 93.5 -10 -249 12.40 94.0 -10 -250 12.45 94.5 -10 -251 12.50 95.0 -10 -252 12.55 95.5 -10 -253 12.60 96.0 -10 -254 12.65 96.5 -10 -255 12.70 97.0 -10 -256 12.75 97.5 -10 -257 12.80 98.0 -10 -258 12.85 98.5 -10 -259 12.90 99.0 -10 -260 12.95 99.5 -10 -261 13.00 100.0 -10 -262 13.05 100.5 -10 -263 13.10 101.0 -10 -264 13.15 101.5 -10 -265 13.20 102.0 -10 -266 13.25 102.5 -10 -267 13.30 103.0 -10 -268 13.35 103.5 -10 -269 13.40 104.0 -10 -270 13.45 104.5 -10 -271 13.50 105.0 -10 -272 13.55 105.5 -10 -273 13.60 106.0 -10 -274 13.65 106.5 -10 -275 13.70 107.0 -10 -276 13.75 107.5 -10 -277 13.80 108.0 -10 -278 13.85 108.5 -10 -279 13.90 109.0 -10 -280 13.95 109.5 -10 -281 14.00 110.0 -10 -282 14.05 110.5 -10 -283 14.10 111.0 -10 -284 14.15 111.5 -10 -285 14.20 112.0 -10 -286 14.25 112.5 -10 -287 14.30 113.0 -10 -288 14.35 113.5 -10 -289 14.40 114.0 -10 -290 14.45 114.5 -10 -291 14.50 115.0 -10 -292 14.55 115.5 -10 -293 14.60 116.0 -10 -294 14.65 116.5 -10 -295 14.70 117.0 -10 -296 14.75 117.5 -10 -297 14.80 118.0 -10 -298 14.85 118.5 -10 -299 14.90 119.0 -10 -300 14.95 119.5 -10 -301 15.00 120.0 -10 -302 15.05 120.5 -10 -303 15.10 121.0 -10 -304 15.15 121.5 -10 -305 15.20 122.0 -10 -306 15.25 122.5 -10 -307 15.30 123.0 -10 -308 15.35 123.5 -10 -309 15.40 124.0 -10 -310 15.45 124.5 -10 -311 15.50 125.0 -10 -312 15.55 125.5 -10 -313 15.60 126.0 -10 -314 15.65 126.5 -10 -315 15.70 127.0 -10 -316 15.75 127.5 -10 -317 15.80 128.0 -10 -318 15.85 128.5 -10 -319 15.90 129.0 -10 -320 15.95 129.5 -10 -321 16.00 130.0 -10 -322 16.05 130.5 -10 -323 16.10 131.0 -10 -324 16.15 131.5 -10 -325 16.20 132.0 -10 -326 16.25 132.5 -10 -327 16.30 133.0 -10 -328 16.35 133.5 -10 -329 16.40 134.0 -10 -330 16.45 134.5 -10 -331 16.50 135.0 -10 -332 16.55 135.5 -10 -333 16.60 136.0 -10 -334 16.65 136.5 -10 -335 16.70 137.0 -10 -336 16.75 137.5 -10 -337 16.80 138.0 -10 -338 16.85 138.5 -10 -339 16.90 139.0 -10 -340 16.95 139.5 -10 -341 17.00 140.0 -10 -342 17.05 140.5 -10 -343 17.10 141.0 -10 -344 17.15 141.5 -10 -345 17.20 142.0 -10 -346 17.25 142.5 -10 -347 17.30 143.0 -10 -348 17.35 143.5 -10 -349 17.40 144.0 -10 -350 17.45 144.5 -10 -351 17.50 145.0 -10 -352 17.55 145.5 -10 -353 17.60 146.0 -10 -354 17.65 146.5 -10 -355 17.70 147.0 -10 -356 17.75 147.5 -10 -357 17.80 148.0 -10 -358 17.85 148.5 -10 -359 17.90 149.0 -10 -360 17.95 149.5 -10 -361 18.00 150.0 -10 -362 18.05 150.5 -10 -363 18.10 151.0 -10 -364 18.15 151.5 -10 -365 18.20 152.0 -10 -366 18.25 152.5 -10 -367 18.30 153.0 -10 -368 18.35 153.5 -10 -369 18.40 154.0 -10 -370 18.45 154.5 -10 -371 18.50 155.0 -10 -372 18.55 155.5 -10 -373 18.60 156.0 -10 -374 18.65 156.5 -10 -375 18.70 157.0 -10 -376 18.75 157.5 -10 -377 18.80 158.0 -10 -378 18.85 158.5 -10 -379 18.90 159.0 -10 -380 18.95 159.5 -10 -381 19.00 160.0 -10 -382 19.05 160.5 -10 -383 19.10 161.0 -10 -384 19.15 161.5 -10 -385 19.20 162.0 -10 -386 19.25 162.5 -10 -387 19.30 163.0 -10 -388 19.35 163.5 -10 -389 19.40 164.0 -10 -390 19.45 164.5 -10 -391 19.50 165.0 -10 -392 19.55 165.5 -10 -393 19.60 166.0 -10 -394 19.65 166.5 -10 -395 19.70 167.0 -10 -396 19.75 167.5 -10 -397 19.80 168.0 -10 -398 19.85 168.5 -10 -399 19.90 169.0 -10 -400 19.95 169.5 -10 -401 20.00 170.0 -10 -402 20.05 170.5 -10 -403 20.10 171.0 -10 -404 20.15 171.5 -10 -405 20.20 172.0 -10 -406 20.25 172.5 -10 -407 20.30 173.0 -10 -408 20.35 173.5 -10 -409 20.40 174.0 -10 -410 20.45 174.5 -10 -411 20.50 175.0 -10 -412 20.55 175.5 -10 -413 20.60 176.0 -10 -414 20.65 176.5 -10 -415 20.70 177.0 -10 -416 20.75 177.5 -10 -417 20.80 178.0 -10 -418 20.85 178.5 -10 -419 20.90 179.0 -10 -420 20.95 179.5 -10 -421 21.00 180.0 -10 -422 21.05 180.5 -10 -423 21.10 181.0 -10 -424 21.15 181.5 -10 -425 21.20 182.0 -10 -426 21.25 182.5 -10 -427 21.30 183.0 -10 -428 21.35 183.5 -10 -429 21.40 184.0 -10 -430 21.45 184.5 -10 -431 21.50 185.0 -10 -432 21.55 185.5 -10 -433 21.60 186.0 -10 -434 21.65 186.5 -10 -435 21.70 187.0 -10 -436 21.75 187.5 -10 -437 21.80 188.0 -10 -438 21.85 188.5 -10 -439 21.90 189.0 -10 -440 21.95 189.5 -10 -441 22.00 190.0 -10 -442 22.05 190.5 -10 -443 22.10 191.0 -10 -444 22.15 191.5 -10 -445 22.20 192.0 -10 -446 22.25 192.5 -10 -447 22.30 193.0 -10 -448 22.35 193.5 -10 -449 22.40 194.0 -10 -450 22.45 194.5 -10 -451 22.50 195.0 -10 -452 22.55 195.5 -10 -453 22.60 196.0 -10 -454 22.65 196.5 -10 -455 22.70 197.0 -10 -456 22.75 197.5 -10 -457 22.80 198.0 -10 -458 22.85 198.5 -10 -459 22.90 199.0 -10 -460 22.95 199.5 -10 -461 23.00 200.0 -10 -462 23.05 200.5 -10 -463 23.10 201.0 -10 -464 23.15 201.5 -10 -465 23.20 202.0 -10 -466 23.25 202.5 -10 -467 23.30 203.0 -10 -468 23.35 203.5 -10 -469 23.40 204.0 -10 -470 23.45 204.5 -10 -471 23.50 205.0 -10 -472 23.55 205.5 -10 -473 23.60 206.0 -10 -474 23.65 206.5 -10 -475 23.70 207.0 -10 -476 23.75 207.5 -10 -477 23.80 208.0 -10 -478 23.85 208.5 -10 -479 23.90 209.0 -10 -480 23.95 209.5 -10 -481 24.00 210.0 -10 -482 24.05 210.5 -10 -483 24.10 211.0 -10 -484 24.15 211.5 -10 -485 24.20 212.0 -10 -486 24.25 212.5 -10 -487 24.30 213.0 -10 -488 24.35 213.5 -10 -489 24.40 214.0 -10 -490 24.45 214.5 -10 -491 24.50 215.0 -10 -492 24.55 215.5 -10 -493 24.60 216.0 -10 -494 24.65 216.5 -10 -495 24.70 217.0 -10 -496 24.75 217.5 -10 -497 24.80 218.0 -10 -498 24.85 218.5 -10 -499 24.90 219.0 -10 -500 24.95 219.5 -10 -501 25.00 220.0 -10 -502 25.05 220.5 -10 -503 25.10 221.0 -10 -504 25.15 221.5 -10 -505 25.20 222.0 -10 -506 25.25 222.5 -10 -507 25.30 223.0 -10 -508 25.35 223.5 -10 -509 25.40 224.0 -10 -510 25.45 224.5 -10 -511 25.50 225.0 -10 -512 25.55 225.5 -10 -513 25.60 226.0 -10 -514 25.65 226.5 -10 -515 25.70 227.0 -10 -516 25.75 227.5 -10 -517 25.80 228.0 -10 -518 25.85 228.5 -10 -519 25.90 229.0 -10 -520 25.95 229.5 -10 -521 26.00 230.0 -10 -522 26.05 230.5 -10 -523 26.10 231.0 -10 -524 26.15 231.5 -10 -525 26.20 232.0 -10 -526 26.25 232.5 -10 -527 26.30 233.0 -10 -528 26.35 233.5 -10 -529 26.40 234.0 -10 -530 26.45 234.5 -10 -531 26.50 235.0 -10 -532 26.55 235.5 -10 -533 26.60 236.0 -10 -534 26.65 236.5 -10 -535 26.70 237.0 -10 -536 26.75 237.5 -10 -537 26.80 238.0 -10 -538 26.85 238.5 -10 -539 26.90 239.0 -10 -540 26.95 239.5 -10 -541 27.00 240.0 -10 -542 27.05 240.5 -10 -543 27.10 241.0 -10 -544 27.15 241.5 -10 -545 27.20 242.0 -10 -546 27.25 242.5 -10 -547 27.30 243.0 -10 -548 27.35 243.5 -10 -549 27.40 244.0 -10 -550 27.45 244.5 -10 -551 27.50 245.0 -10 -552 27.55 245.5 -10 -553 27.60 246.0 -10 -554 27.65 246.5 -10 -555 27.70 247.0 -10 -556 27.75 247.5 -10 -557 27.80 248.0 -10 -558 27.85 248.5 -10 -559 27.90 249.0 -10 -560 27.95 249.5 -10 -561 28.00 250.0 -10 -562 28.05 250.5 -10 -563 28.10 251.0 -10 -564 28.15 251.5 -10 -565 28.20 252.0 -10 -566 28.25 252.5 -10 -567 28.30 253.0 -10 -568 28.35 253.5 -10 -569 28.40 254.0 -10 -570 28.45 254.5 -10 -571 28.50 255.0 -10 -572 28.55 255.5 -10 -573 28.60 256.0 -10 -574 28.65 256.5 -10 -575 28.70 257.0 -10 -576 28.75 257.5 -10 -577 28.80 258.0 -10 -578 28.85 258.5 -10 -579 28.90 259.0 -10 -580 28.95 259.5 -10 -581 29.00 260.0 -10 -582 29.05 260.5 -10 -583 29.10 261.0 -10 -584 29.15 261.5 -10 -585 29.20 262.0 -10 -586 29.25 262.5 -10 -587 29.30 263.0 -10 -588 29.35 263.5 -10 -589 29.40 264.0 -10 -590 29.45 264.5 -10 -591 29.50 265.0 -10 -592 29.55 265.5 -10 -593 29.60 266.0 -10 -594 29.65 266.5 -10 -595 29.70 267.0 -10 -596 29.75 267.5 -10 -597 29.80 268.0 -10 -598 29.85 268.5 -10 -599 29.90 269.0 -10 -600 29.95 269.5 -10 -601 30.00 270.0 -10 -602 30.05 270.5 -10 -603 30.10 271.0 -10 -604 30.15 271.5 -10 -605 30.20 272.0 -10 -606 30.25 272.5 -10 -607 30.30 273.0 -10 -608 30.35 273.5 -10 -609 30.40 274.0 -10 -610 30.45 274.5 -10 -611 30.50 275.0 -10 -612 30.55 275.5 -10 -613 30.60 276.0 -10 -614 30.65 276.5 -10 -615 30.70 277.0 -10 -616 30.75 277.5 -10 -617 30.80 278.0 -10 -618 30.85 278.5 -10 -619 30.90 279.0 -10 -620 30.95 279.5 -10 -621 31.00 280.0 -10 -622 31.05 280.5 -10 -623 31.10 281.0 -10 -624 31.15 281.5 -10 -625 31.20 282.0 -10 -626 31.25 282.5 -10 -627 31.30 283.0 -10 -628 31.35 283.5 -10 -629 31.40 284.0 -10 -630 31.45 284.5 -10 -631 31.50 285.0 -10 -632 31.55 285.5 -10 -633 31.60 286.0 -10 -634 31.65 286.5 -10 -635 31.70 287.0 -10 -636 31.75 287.5 -10 -637 31.80 288.0 -10 -638 31.85 288.5 -10 -639 31.90 289.0 -10 -640 31.95 289.5 -10 -641 32.00 290.0 -10 -642 32.05 290.5 -10 -643 32.10 291.0 -10 -644 32.15 291.5 -10 -645 32.20 292.0 -10 -646 32.25 292.5 -10 -647 32.30 293.0 -10 -648 32.35 293.5 -10 -649 32.40 294.0 -10 -650 32.45 294.5 -10 -651 32.50 295.0 -10 -652 32.55 295.5 -10 -653 32.60 296.0 -10 -654 32.65 296.5 -10 -655 32.70 297.0 -10 -656 32.75 297.5 -10 -657 32.80 298.0 -10 -658 32.85 298.5 -10 -659 32.90 299.0 -10 -660 32.95 299.5 -10 -661 33.00 300.0 -10 -662 33.05 300.5 -10 -663 33.10 301.0 -10 -664 33.15 301.5 -10 -665 33.20 302.0 -10 -666 33.25 302.5 -10 -667 33.30 303.0 -10 -668 33.35 303.5 -10 -669 33.40 304.0 -10 -670 33.45 304.5 -10 -671 33.50 305.0 -10 -672 33.55 305.5 -10 -673 33.60 306.0 -10 -674 33.65 306.5 -10 -675 33.70 307.0 -10 -676 33.75 307.5 -10 -677 33.80 308.0 -10 -678 33.85 308.5 -10 -679 33.90 309.0 -10 -680 33.95 309.5 -10 -681 34.00 310.0 -10 -682 34.05 310.5 -10 -683 34.10 311.0 -10 -684 34.15 311.5 -10 -685 34.20 312.0 -10 -686 34.25 312.5 -10 -687 34.30 313.0 -10 -688 34.35 313.5 -10 -689 34.40 314.0 -10 -690 34.45 314.5 -10 -691 34.50 315.0 -10 -692 34.55 315.5 -10 -693 34.60 316.0 -10 -694 34.65 316.5 -10 -695 34.70 317.0 -10 -696 34.75 317.5 -10 -697 34.80 318.0 -10 -698 34.85 318.5 -10 -699 34.90 319.0 -10 -700 34.95 319.5 -10 -701 35.00 320.0 -10 -702 35.05 320.5 -10 -703 35.10 321.0 -10 -704 35.15 321.5 -10 -705 35.20 322.0 -10 -706 35.25 322.5 -10 -707 35.30 323.0 -10 -708 35.35 323.5 -10 -709 35.40 324.0 -10 -710 35.45 324.5 -10 -711 35.50 325.0 -10 -712 35.55 325.5 -10 -713 35.60 326.0 -10 -714 35.65 326.5 -10 -715 35.70 327.0 -10 -716 35.75 327.5 -10 -717 35.80 328.0 -10 -718 35.85 328.5 -10 -719 35.90 329.0 -10 -720 35.95 329.5 -10 -721 36.00 330.0 -10 -722 36.05 330.5 -10 -723 36.10 331.0 -10 -724 36.15 331.5 -10 -725 36.20 332.0 -10 -726 36.25 332.5 -10 -727 36.30 333.0 -10 -728 36.35 333.5 -10 -729 36.40 334.0 -10 -730 36.45 334.5 -10 -731 36.50 335.0 -10 -732 36.55 335.5 -10 -733 36.60 336.0 -10 -734 36.65 336.5 -10 -735 36.70 337.0 -10 -736 36.75 337.5 -10 -737 36.80 338.0 -10 -738 36.85 338.5 -10 -739 36.90 339.0 -10 -740 36.95 339.5 -10 -741 37.00 340.0 -10 -742 37.05 340.5 -10 -743 37.10 341.0 -10 -744 37.15 341.5 -10 -745 37.20 342.0 -10 -746 37.25 342.5 -10 -747 37.30 343.0 -10 -748 37.35 343.5 -10 -749 37.40 344.0 -10 -750 37.45 344.5 -10 -751 37.50 345.0 -10 -752 37.55 345.5 -10 -753 37.60 346.0 -10 -754 37.65 346.5 -10 -755 37.70 347.0 -10 -756 37.75 347.5 -10 -757 37.80 348.0 -10 -758 37.85 348.5 -10 -759 37.90 349.0 -10 -760 37.95 349.5 -10 -761 38.00 350.0 -10 -762 38.05 350.5 -10 -763 38.10 351.0 -10 -764 38.15 351.5 -10 -765 38.20 352.0 -10 -766 38.25 352.5 -10 -767 38.30 353.0 -10 -768 38.35 353.5 -10 -769 38.40 354.0 -10 -770 38.45 354.5 -10 -771 38.50 355.0 -10 -772 38.55 355.5 -10 -773 38.60 356.0 -10 -774 38.65 356.5 -10 -775 38.70 357.0 -10 -776 38.75 357.5 -10 -777 38.80 358.0 -10 -778 38.85 358.5 -10 -779 38.90 359.0 -10 -780 38.95 359.5 -10 -781 39.00 360.0 -10 -782 39.05 360.5 -10 -783 39.10 361.0 -10 -784 39.15 361.5 -10 -785 39.20 362.0 -10 -786 39.25 362.5 -10 -787 39.30 363.0 -10 -788 39.35 363.5 -10 -789 39.40 364.0 -10 -790 39.45 364.5 -10 -791 39.50 365.0 -10 -792 39.55 365.5 -10 -793 39.60 366.0 -10 -794 39.65 366.5 -10 -795 39.70 367.0 -10 -796 39.75 367.5 -10 -797 39.80 368.0 -10 -798 39.85 368.5 -10 -799 39.90 369.0 -10 -800 39.95 369.5 -10 -801 40.00 370.0 -10 -802 40.05 370.5 -10 -803 40.10 371.0 -10 -804 40.15 371.5 -10 -805 40.20 372.0 -10 -806 40.25 372.5 -10 -807 40.30 373.0 -10 -808 40.35 373.5 -10 -809 40.40 374.0 -10 -810 40.45 374.5 -10 -811 40.50 375.0 -10 -812 40.55 375.5 -10 -813 40.60 376.0 -10 -814 40.65 376.5 -10 -815 40.70 377.0 -10 -816 40.75 377.5 -10 -817 40.80 378.0 -10 -818 40.85 378.5 -10 -819 40.90 379.0 -10 -820 40.95 379.5 -10 -821 41.00 380.0 -10 -822 41.05 380.5 -10 -823 41.10 381.0 -10 -824 41.15 381.5 -10 -825 41.20 382.0 -10 -826 41.25 382.5 -10 -827 41.30 383.0 -10 -828 41.35 383.5 -10 -829 41.40 384.0 -10 -830 41.45 384.5 -10 -831 41.50 385.0 -10 -832 41.55 385.5 -10 -833 41.60 386.0 -10 -834 41.65 386.5 -10 -835 41.70 387.0 -10 -836 41.75 387.5 -10 -837 41.80 388.0 -10 -838 41.85 388.5 -10 -839 41.90 389.0 -10 -840 41.95 389.5 -10 -841 42.00 390.0 -10 -842 42.05 390.5 -10 -843 42.10 391.0 -10 -844 42.15 391.5 -10 -845 42.20 392.0 -10 -846 42.25 392.5 -10 -847 42.30 393.0 -10 -848 42.35 393.5 -10 -849 42.40 394.0 -10 -850 42.45 394.5 -10 -851 42.50 395.0 -10 -852 42.55 395.5 -10 -853 42.60 396.0 -10 -854 42.65 396.5 -10 -855 42.70 397.0 -10 -856 42.75 397.5 -10 -857 42.80 398.0 -10 -858 42.85 398.5 -10 -859 42.90 399.0 -10 -860 42.95 399.5 -10 -861 43.00 400.0 -10 -862 43.05 400.5 -10 -863 43.10 401.0 -10 -864 43.15 401.5 -10 -865 43.20 402.0 -10 -866 43.25 402.5 -10 -867 43.30 403.0 -10 -868 43.35 403.5 -10 -869 43.40 404.0 -10 -870 43.45 404.5 -10 -871 43.50 405.0 -10 -872 43.55 405.5 -10 -873 43.60 406.0 -10 -874 43.65 406.5 -10 -875 43.70 407.0 -10 -876 43.75 407.5 -10 -877 43.80 408.0 -10 -878 43.85 408.5 -10 -879 43.90 409.0 -10 -880 43.95 409.5 -10 -881 44.00 410.0 -10 -882 44.05 410.5 -10 -883 44.10 411.0 -10 -884 44.15 411.5 -10 -885 44.20 412.0 -10 -886 44.25 412.5 -10 -887 44.30 413.0 -10 -888 44.35 413.5 -10 -889 44.40 414.0 -10 -890 44.45 414.5 -10 -891 44.50 415.0 -10 -892 44.55 415.5 -10 -893 44.60 416.0 -10 -894 44.65 416.5 -10 -895 44.70 417.0 -10 -896 44.75 417.5 -10 -897 44.80 418.0 -10 -898 44.85 418.5 -10 -899 44.90 419.0 -10 -900 44.95 419.5 -10 -901 45.00 420.0 -10 -902 45.05 420.5 -10 -903 45.10 421.0 -10 -904 45.15 421.5 -10 -905 45.20 422.0 -10 -906 45.25 422.5 -10 -907 45.30 423.0 -10 -908 45.35 423.5 -10 -909 45.40 424.0 -10 -910 45.45 424.5 -10 -911 45.50 425.0 -10 -912 45.55 425.5 -10 -913 45.60 426.0 -10 -914 45.65 426.5 -10 -915 45.70 427.0 -10 -916 45.75 427.5 -10 -917 45.80 428.0 -10 -918 45.85 428.5 -10 -919 45.90 429.0 -10 -920 45.95 429.5 -10 -921 46.00 430.0 -10 -922 46.05 430.5 -10 -923 46.10 431.0 -10 -924 46.15 431.5 -10 -925 46.20 432.0 -10 -926 46.25 432.5 -10 -927 46.30 433.0 -10 -928 46.35 433.5 -10 -929 46.40 434.0 -10 -930 46.45 434.5 -10 -931 46.50 435.0 -10 -932 46.55 435.5 -10 -933 46.60 436.0 -10 -934 46.65 436.5 -10 -935 46.70 437.0 -10 -936 46.75 437.5 -10 -937 46.80 438.0 -10 -938 46.85 438.5 -10 -939 46.90 439.0 -10 -940 46.95 439.5 -10 -941 47.00 440.0 -10 -942 47.05 440.5 -10 -943 47.10 441.0 -10 -944 47.15 441.5 -10 -945 47.20 442.0 -10 -946 47.25 442.5 -10 -947 47.30 443.0 -10 -948 47.35 443.5 -10 -949 47.40 444.0 -10 -950 47.45 444.5 -10 -951 47.50 445.0 -10 -952 47.55 445.5 -10 -953 47.60 446.0 -10 -954 47.65 446.5 -10 -955 47.70 447.0 -10 -956 47.75 447.5 -10 -957 47.80 448.0 -10 -958 47.85 448.5 -10 -959 47.90 449.0 -10 -960 47.95 449.5 -10 -961 48.00 450.0 -10 -962 48.05 450.5 -10 -963 48.10 451.0 -10 -964 48.15 451.5 -10 -965 48.20 452.0 -10 -966 48.25 452.5 -10 -967 48.30 453.0 -10 -968 48.35 453.5 -10 -969 48.40 454.0 -10 -970 48.45 454.5 -10 -971 48.50 455.0 -10 -972 48.55 455.5 -10 -973 48.60 456.0 -10 -974 48.65 456.5 -10 -975 48.70 457.0 -10 -976 48.75 457.5 -10 -977 48.80 458.0 -10 -978 48.85 458.5 -10 -979 48.90 459.0 -10 -980 48.95 459.5 -10 -981 49.00 460.0 -10 -982 49.05 460.5 -10 -983 49.10 461.0 -10 -984 49.15 461.5 -10 -985 49.20 462.0 -10 -986 49.25 462.5 -10 -987 49.30 463.0 -10 -988 49.35 463.5 -10 -989 49.40 464.0 -10 -990 49.45 464.5 -10 -991 49.50 465.0 -10 -992 49.55 465.5 -10 -993 49.60 466.0 -10 -994 49.65 466.5 -10 -995 49.70 467.0 -10 -996 49.75 467.5 -10 -997 49.80 468.0 -10 -998 49.85 468.5 -10 -999 49.90 469.0 -10 -1000 49.95 469.5 -10 -1001 50.00 470.0 -10 -1002 50.05 470.5 -10 -1003 50.10 471.0 -10 -1004 50.15 471.5 -10 -1005 50.20 472.0 -10 -1006 50.25 472.5 -10 -1007 50.30 473.0 -10 -1008 50.35 473.5 -10 -1009 50.40 474.0 -10 -1010 50.45 474.5 -10 -1011 50.50 475.0 -10 -1012 50.55 475.5 -10 -1013 50.60 476.0 -10 -1014 50.65 476.5 -10 -1015 50.70 477.0 -10 -1016 50.75 477.5 -10 -1017 50.80 478.0 -10 -1018 50.85 478.5 -10 -1019 50.90 479.0 -10 -1020 50.95 479.5 -10 -1021 51.00 480.0 -10 -1022 51.05 480.5 -10 -1023 51.10 481.0 -10 -1024 51.15 481.5 -10 -1025 51.20 482.0 -10 -1026 51.25 482.5 -10 -1027 51.30 483.0 -10 -1028 51.35 483.5 -10 -1029 51.40 484.0 -10 -1030 51.45 484.5 -10 -1031 51.50 485.0 -10 -1032 51.55 485.5 -10 -1033 51.60 486.0 -10 -1034 51.65 486.5 -10 -1035 51.70 487.0 -10 -1036 51.75 487.5 -10 -1037 51.80 488.0 -10 -1038 51.85 488.5 -10 -1039 51.90 489.0 -10 -1040 51.95 489.5 -10 -1041 52.00 490.0 -10 -1042 52.05 490.5 -10 -1043 52.10 491.0 -10 -1044 52.15 491.5 -10 -1045 52.20 492.0 -10 -1046 52.25 492.5 -10 -1047 52.30 493.0 -10 -1048 52.35 493.5 -10 -1049 52.40 494.0 -10 -1050 52.45 494.5 -10 -1051 52.50 495.0 -10 -1052 52.55 495.5 -10 -1053 52.60 496.0 -10 -1054 52.65 496.5 -10 -1055 52.70 497.0 -10 -1056 52.75 497.5 -10 -1057 52.80 498.0 -10 -1058 52.85 498.5 -10 -1059 52.90 499.0 -10 -1060 52.95 499.5 -10 -1061 53.00 500.0 -10 -1062 53.05 500.5 -10 -1063 53.10 501.0 -10 -1064 53.15 501.5 -10 -1065 53.20 502.0 -10 -1066 53.25 502.5 -10 -1067 53.30 503.0 -10 -1068 53.35 503.5 -10 -1069 53.40 504.0 -10 -1070 53.45 504.5 -10 -1071 53.50 505.0 -10 -1072 53.55 505.5 -10 -1073 53.60 506.0 -10 -1074 53.65 506.5 -10 -1075 53.70 507.0 -10 -1076 53.75 507.5 -10 -1077 53.80 508.0 -10 -1078 53.85 508.5 -10 -1079 53.90 509.0 -10 -1080 53.95 509.5 -10 -1081 54.00 510.0 -10 -1082 54.05 510.5 -10 -1083 54.10 511.0 -10 -1084 54.15 511.5 -10 -1085 54.20 512.0 -10 -1086 54.25 512.5 -10 -1087 54.30 513.0 -10 -1088 54.35 513.5 -10 -1089 54.40 514.0 -10 -1090 54.45 514.5 -10 -1091 54.50 515.0 -10 -1092 54.55 515.5 -10 -1093 54.60 516.0 -10 -1094 54.65 516.5 -10 -1095 54.70 517.0 -10 -1096 54.75 517.5 -10 -1097 54.80 518.0 -10 -1098 54.85 518.5 -10 -1099 54.90 519.0 -10 -1100 54.95 519.5 -10 -1101 55.00 520.0 -10 -1102 55.05 520.5 -10 -1103 55.10 521.0 -10 -1104 55.15 521.5 -10 -1105 55.20 522.0 -10 -1106 55.25 522.5 -10 -1107 55.30 523.0 -10 -1108 55.35 523.5 -10 -1109 55.40 524.0 -10 -1110 55.45 524.5 -10 -1111 55.50 525.0 -10 -1112 55.55 525.5 -10 -1113 55.60 526.0 -10 -1114 55.65 526.5 -10 -1115 55.70 527.0 -10 -1116 55.75 527.5 -10 -1117 55.80 528.0 -10 -1118 55.85 528.5 -10 -1119 55.90 529.0 -10 -1120 55.95 529.5 -10 -1121 56.00 530.0 -10 -1122 56.05 530.5 -10 -1123 56.10 531.0 -10 -1124 56.15 531.5 -10 -1125 56.20 532.0 -10 -1126 56.25 532.5 -10 -1127 56.30 533.0 -10 -1128 56.35 533.5 -10 -1129 56.40 534.0 -10 -1130 56.45 534.5 -10 -1131 56.50 535.0 -10 -1132 56.55 535.5 -10 -1133 56.60 536.0 -10 -1134 56.65 536.5 -10 -1135 56.70 537.0 -10 -1136 56.75 537.5 -10 -1137 56.80 538.0 -10 -1138 56.85 538.5 -10 -1139 56.90 539.0 -10 -1140 56.95 539.5 -10 -1141 57.00 540.0 -10 -1142 57.05 540.5 -10 -1143 57.10 541.0 -10 -1144 57.15 541.5 -10 -1145 57.20 542.0 -10 -1146 57.25 542.5 -10 -1147 57.30 543.0 -10 -1148 57.35 543.5 -10 -1149 57.40 544.0 -10 -1150 57.45 544.5 -10 -1151 57.50 545.0 -10 -1152 57.55 545.5 -10 -1153 57.60 546.0 -10 -1154 57.65 546.5 -10 -1155 57.70 547.0 -10 -1156 57.75 547.5 -10 -1157 57.80 548.0 -10 -1158 57.85 548.5 -10 -1159 57.90 549.0 -10 -1160 57.95 549.5 -10 -1161 58.00 550.0 -10 -1162 58.05 550.5 -10 -1163 58.10 551.0 -10 -1164 58.15 551.5 -10 -1165 58.20 552.0 -10 -1166 58.25 552.5 -10 -1167 58.30 553.0 -10 -1168 58.35 553.5 -10 -1169 58.40 554.0 -10 -1170 58.45 554.5 -10 -1171 58.50 555.0 -10 -1172 58.55 555.5 -10 -1173 58.60 556.0 -10 -1174 58.65 556.5 -10 -1175 58.70 557.0 -10 -1176 58.75 557.5 -10 -1177 58.80 558.0 -10 -1178 58.85 558.5 -10 -1179 58.90 559.0 -10 -1180 58.95 559.5 -10 -1181 59.00 560.0 -10 -1182 59.05 560.5 -10 -1183 59.10 561.0 -10 -1184 59.15 561.5 -10 -1185 59.20 562.0 -10 -1186 59.25 562.5 -10 -1187 59.30 563.0 -10 -1188 59.35 563.5 -10 -1189 59.40 564.0 -10 -1190 59.45 564.5 -10 -1191 59.50 565.0 -10 -1192 59.55 565.5 -10 -1193 59.60 566.0 -10 -1194 59.65 566.5 -10 -1195 59.70 567.0 -10 -1196 59.75 567.5 -10 -1197 59.80 568.0 -10 -1198 59.85 568.5 -10 -1199 59.90 569.0 -10 -1200 59.95 569.5 -10 -1201 60.00 570.0 -10 -1202 60.05 570.5 -10 -1203 60.10 571.0 -10 -1204 60.15 571.5 -10 -1205 60.20 572.0 -10 -1206 60.25 572.5 -10 -1207 60.30 573.0 -10 -1208 60.35 573.5 -10 -1209 60.40 574.0 -10 -1210 60.45 574.5 -10 -1211 60.50 575.0 -10 -1212 60.55 575.5 -10 -1213 60.60 576.0 -10 -1214 60.65 576.5 -10 -1215 60.70 577.0 -10 -1216 60.75 577.5 -10 -1217 60.80 578.0 -10 -1218 60.85 578.5 -10 -1219 60.90 579.0 -10 -1220 60.95 579.5 -10 -1221 61.00 580.0 -10 -1222 61.05 580.5 -10 -1223 61.10 581.0 -10 -1224 61.15 581.5 -10 -1225 61.20 582.0 -10 -1226 61.25 582.5 -10 -1227 61.30 583.0 -10 -1228 61.35 583.5 -10 -1229 61.40 584.0 -10 -1230 61.45 584.5 -10 -1231 61.50 585.0 -10 -1232 61.55 585.5 -10 -1233 61.60 586.0 -10 -1234 61.65 586.5 -10 -1235 61.70 587.0 -10 -1236 61.75 587.5 -10 -1237 61.80 588.0 -10 -1238 61.85 588.5 -10 -1239 61.90 589.0 -10 -1240 61.95 589.5 -10 -1241 62.00 590.0 -10 -1242 62.05 590.5 -10 -1243 62.10 591.0 -10 -1244 62.15 591.5 -10 -1245 62.20 592.0 -10 -1246 62.25 592.5 -10 -1247 62.30 593.0 -10 -1248 62.35 593.5 -10 -1249 62.40 594.0 -10 -1250 62.45 594.5 -10 -1251 62.50 595.0 -10 -1252 62.55 595.5 -10 -1253 62.60 596.0 -10 -1254 62.65 596.5 -10 -1255 62.70 597.0 -10 -1256 62.75 597.5 -10 -1257 62.80 598.0 -10 -1258 62.85 598.5 -10 -1259 62.90 599.0 -10 -1260 62.95 599.5 -10 -1261 63.00 600.0 -10 -1262 63.05 600.5 -10 -1263 63.10 601.0 -10 -1264 63.15 601.5 -10 -1265 63.20 602.0 -10 -1266 63.25 602.5 -10 -1267 63.30 603.0 -10 -1268 63.35 603.5 -10 -1269 63.40 604.0 -10 -1270 63.45 604.5 -10 -1271 63.50 605.0 -10 -1272 63.55 605.5 -10 -1273 63.60 606.0 -10 -1274 63.65 606.5 -10 -1275 63.70 607.0 -10 -1276 63.75 607.5 -10 -1277 63.80 608.0 -10 -1278 63.85 608.5 -10 -1279 63.90 609.0 -10 -1280 63.95 609.5 -10 -1281 64.00 610.0 -10 -1282 64.05 610.5 -10 -1283 64.10 611.0 -10 -1284 64.15 611.5 -10 -1285 64.20 612.0 -10 -1286 64.25 612.5 -10 -1287 64.30 613.0 -10 -1288 64.35 613.5 -10 -1289 64.40 614.0 -10 -1290 64.45 614.5 -10 -1291 64.50 615.0 -10 -1292 64.55 615.5 -10 -1293 64.60 616.0 -10 -1294 64.65 616.5 -10 -1295 64.70 617.0 -10 -1296 64.75 617.5 -10 -1297 64.80 618.0 -10 -1298 64.85 618.5 -10 -1299 64.90 619.0 -10 -1300 64.95 619.5 -10 -1301 65.00 620.0 -10 -1302 65.05 620.5 -10 -1303 65.10 621.0 -10 -1304 65.15 621.5 -10 -1305 65.20 622.0 -10 -1306 65.25 622.5 -10 -1307 65.30 623.0 -10 -1308 65.35 623.5 -10 -1309 65.40 624.0 -10 -1310 65.45 624.5 -10 -1311 65.50 625.0 -10 -1312 65.55 625.5 -10 -1313 65.60 626.0 -10 -1314 65.65 626.5 -10 -1315 65.70 627.0 -10 -1316 65.75 627.5 -10 -1317 65.80 628.0 -10 -1318 65.85 628.5 -10 -1319 65.90 629.0 -10 -1320 65.95 629.5 -10 -1321 66.00 630.0 -10 -1322 66.05 630.5 -10 -1323 66.10 631.0 -10 -1324 66.15 631.5 -10 -1325 66.20 632.0 -10 -1326 66.25 632.5 -10 -1327 66.30 633.0 -10 -1328 66.35 633.5 -10 -1329 66.40 634.0 -10 -1330 66.45 634.5 -10 -1331 66.50 635.0 -10 -1332 66.55 635.5 -10 -1333 66.60 636.0 -10 -1334 66.65 636.5 -10 -1335 66.70 637.0 -10 -1336 66.75 637.5 -10 -1337 66.80 638.0 -10 -1338 66.85 638.5 -10 -1339 66.90 639.0 -10 -1340 66.95 639.5 -10 -1341 67.00 640.0 -10 -1342 67.05 640.5 -10 -1343 67.10 641.0 -10 -1344 67.15 641.5 -10 -1345 67.20 642.0 -10 -1346 67.25 642.5 -10 -1347 67.30 643.0 -10 -1348 67.35 643.5 -10 -1349 67.40 644.0 -10 -1350 67.45 644.5 -10 -1351 67.50 645.0 -10 -1352 67.55 645.5 -10 -1353 67.60 646.0 -10 -1354 67.65 646.5 -10 -1355 67.70 647.0 -10 -1356 67.75 647.5 -10 -1357 67.80 648.0 -10 -1358 67.85 648.5 -10 -1359 67.90 649.0 -10 -1360 67.95 649.5 -10 -1361 68.00 650.0 -10 -1362 68.05 650.5 -10 -1363 68.10 651.0 -10 -1364 68.15 651.5 -10 -1365 68.20 652.0 -10 -1366 68.25 652.5 -10 -1367 68.30 653.0 -10 -1368 68.35 653.5 -10 -1369 68.40 654.0 -10 -1370 68.45 654.5 -10 -1371 68.50 655.0 -10 -1372 68.55 655.5 -10 -1373 68.60 656.0 -10 -1374 68.65 656.5 -10 -1375 68.70 657.0 -10 -1376 68.75 657.5 -10 -1377 68.80 658.0 -10 -1378 68.85 658.5 -10 -1379 68.90 659.0 -10 -1380 68.95 659.5 -10 -1381 69.00 660.0 -10 -1382 69.05 660.5 -10 -1383 69.10 661.0 -10 -1384 69.15 661.5 -10 -1385 69.20 662.0 -10 -1386 69.25 662.5 -10 -1387 69.30 663.0 -10 -1388 69.35 663.5 -10 -1389 69.40 664.0 -10 -1390 69.45 664.5 -10 -1391 69.50 665.0 -10 -1392 69.55 665.5 -10 -1393 69.60 666.0 -10 -1394 69.65 666.5 -10 -1395 69.70 667.0 -10 -1396 69.75 667.5 -10 -1397 69.80 668.0 -10 -1398 69.85 668.5 -10 -1399 69.90 669.0 -10 -1400 69.95 669.5 -10 -1401 70.00 670.0 -10 -1402 70.05 670.5 -10 -1403 70.10 671.0 -10 -1404 70.15 671.5 -10 -1405 70.20 672.0 -10 -1406 70.25 672.5 -10 -1407 70.30 673.0 -10 -1408 70.35 673.5 -10 -1409 70.40 674.0 -10 -1410 70.45 674.5 -10 -1411 70.50 675.0 -10 -1412 70.55 675.5 -10 -1413 70.60 676.0 -10 -1414 70.65 676.5 -10 -1415 70.70 677.0 -10 -1416 70.75 677.5 -10 -1417 70.80 678.0 -10 -1418 70.85 678.5 -10 -1419 70.90 679.0 -10 -1420 70.95 679.5 -10 -1421 71.00 680.0 -10 -1422 71.05 680.5 -10 -1423 71.10 681.0 -10 -1424 71.15 681.5 -10 -1425 71.20 682.0 -10 -1426 71.25 682.5 -10 -1427 71.30 683.0 -10 -1428 71.35 683.5 -10 -1429 71.40 684.0 -10 -1430 71.45 684.5 -10 -1431 71.50 685.0 -10 -1432 71.55 685.5 -10 -1433 71.60 686.0 -10 -1434 71.65 686.5 -10 -1435 71.70 687.0 -10 -1436 71.75 687.5 -10 -1437 71.80 688.0 -10 -1438 71.85 688.5 -10 -1439 71.90 689.0 -10 -1440 71.95 689.5 -10 -1441 72.00 690.0 -10 -1442 72.05 690.5 -10 -1443 72.10 691.0 -10 -1444 72.15 691.5 -10 -1445 72.20 692.0 -10 -1446 72.25 692.5 -10 -1447 72.30 693.0 -10 -1448 72.35 693.5 -10 -1449 72.40 694.0 -10 -1450 72.45 694.5 -10 -1451 72.50 695.0 -10 -1452 72.55 695.5 -10 -1453 72.60 696.0 -10 -1454 72.65 696.5 -10 -1455 72.70 697.0 -10 -1456 72.75 697.5 -10 -1457 72.80 698.0 -10 -1458 72.85 698.5 -10 -1459 72.90 699.0 -10 -1460 72.95 699.5 -10 -1461 73.00 700.0 -10 -1462 73.05 700.5 -10 -1463 73.10 701.0 -10 -1464 73.15 701.5 -10 -1465 73.20 702.0 -10 -1466 73.25 702.5 -10 -1467 73.30 703.0 -10 -1468 73.35 703.5 -10 -1469 73.40 704.0 -10 -1470 73.45 704.5 -10 -1471 73.50 705.0 -10 -1472 73.55 705.5 -10 -1473 73.60 706.0 -10 -1474 73.65 706.5 -10 -1475 73.70 707.0 -10 -1476 73.75 707.5 -10 -1477 73.80 708.0 -10 -1478 73.85 708.5 -10 -1479 73.90 709.0 -10 -1480 73.95 709.5 -10 -1481 74.00 710.0 -10 -1482 74.05 710.5 -10 -1483 74.10 711.0 -10 -1484 74.15 711.5 -10 -1485 74.20 712.0 -10 -1486 74.25 712.5 -10 -1487 74.30 713.0 -10 -1488 74.35 713.5 -10 -1489 74.40 714.0 -10 -1490 74.45 714.5 -10 -1491 74.50 715.0 -10 -1492 74.55 715.5 -10 -1493 74.60 716.0 -10 -1494 74.65 716.5 -10 -1495 74.70 717.0 -10 -1496 74.75 717.5 -10 -1497 74.80 718.0 -10 -1498 74.85 718.5 -10 -1499 74.90 719.0 -10 -1500 74.95 719.5 -10 -1501 75.00 720.0 -10 -1502 75.05 720.5 -10 -1503 75.10 721.0 -10 -1504 75.15 721.5 -10 -1505 75.20 722.0 -10 -1506 75.25 722.5 -10 -1507 75.30 723.0 -10 -1508 75.35 723.5 -10 -1509 75.40 724.0 -10 -1510 75.45 724.5 -10 -1511 75.50 725.0 -10 -1512 75.55 725.5 -10 -1513 75.60 726.0 -10 -1514 75.65 726.5 -10 -1515 75.70 727.0 -10 -1516 75.75 727.5 -10 -1517 75.80 728.0 -10 -1518 75.85 728.5 -10 -1519 75.90 729.0 -10 -1520 75.95 729.5 -10 -1521 76.00 730.0 -10 -1522 76.05 730.5 -10 -1523 76.10 731.0 -10 -1524 76.15 731.5 -10 -1525 76.20 732.0 -10 -1526 76.25 732.5 -10 -1527 76.30 733.0 -10 -1528 76.35 733.5 -10 -1529 76.40 734.0 -10 -1530 76.45 734.5 -10 -1531 76.50 735.0 -10 -1532 76.55 735.5 -10 -1533 76.60 736.0 -10 -1534 76.65 736.5 -10 -1535 76.70 737.0 -10 -1536 76.75 737.5 -10 -1537 76.80 738.0 -10 -1538 76.85 738.5 -10 -1539 76.90 739.0 -10 -1540 76.95 739.5 -10 -1541 77.00 740.0 -10 -1542 77.05 740.5 -10 -1543 77.10 741.0 -10 -1544 77.15 741.5 -10 -1545 77.20 742.0 -10 -1546 77.25 742.5 -10 -1547 77.30 743.0 -10 -1548 77.35 743.5 -10 -1549 77.40 744.0 -10 -1550 77.45 744.5 -10 -1551 77.50 745.0 -10 -1552 77.55 745.5 -10 -1553 77.60 746.0 -10 -1554 77.65 746.5 -10 -1555 77.70 747.0 -10 -1556 77.75 747.5 -10 -1557 77.80 748.0 -10 -1558 77.85 748.5 -10 -1559 77.90 749.0 -10 -1560 77.95 749.5 -10 -1561 78.00 750.0 -10 -1562 78.05 750.5 -10 -1563 78.10 751.0 -10 -1564 78.15 751.5 -10 -1565 78.20 752.0 -10 -1566 78.25 752.5 -10 -1567 78.30 753.0 -10 -1568 78.35 753.5 -10 -1569 78.40 754.0 -10 -1570 78.45 754.5 -10 -1571 78.50 755.0 -10 -1572 78.55 755.5 -10 -1573 78.60 756.0 -10 -1574 78.65 756.5 -10 -1575 78.70 757.0 -10 -1576 78.75 757.5 -10 -1577 78.80 758.0 -10 -1578 78.85 758.5 -10 -1579 78.90 759.0 -10 -1580 78.95 759.5 -10 -1581 79.00 760.0 -10 -1582 79.05 760.5 -10 -1583 79.10 761.0 -10 -1584 79.15 761.5 -10 -1585 79.20 762.0 -10 -1586 79.25 762.5 -10 -1587 79.30 763.0 -10 -1588 79.35 763.5 -10 -1589 79.40 764.0 -10 -1590 79.45 764.5 -10 -1591 79.50 765.0 -10 -1592 79.55 765.5 -10 -1593 79.60 766.0 -10 -1594 79.65 766.5 -10 -1595 79.70 767.0 -10 -1596 79.75 767.5 -10 -1597 79.80 768.0 -10 -1598 79.85 768.5 -10 -1599 79.90 769.0 -10 -1600 79.95 769.5 -10 -1601 80.00 770.0 -10 -1602 80.05 770.5 -10 -1603 80.10 771.0 -10 -1604 80.15 771.5 -10 -1605 80.20 772.0 -10 -1606 80.25 772.5 -10 -1607 80.30 773.0 -10 -1608 80.35 773.5 -10 -1609 80.40 774.0 -10 -1610 80.45 774.5 -10 -1611 80.50 775.0 -10 -1612 80.55 775.5 -10 -1613 80.60 776.0 -10 -1614 80.65 776.5 -10 -1615 80.70 777.0 -10 -1616 80.75 777.5 -10 -1617 80.80 778.0 -10 -1618 80.85 778.5 -10 -1619 80.90 779.0 -10 -1620 80.95 779.5 -10 -1621 81.00 780.0 -10 -1622 81.05 780.5 -10 -1623 81.10 781.0 -10 -1624 81.15 781.5 -10 -1625 81.20 782.0 -10 -1626 81.25 782.5 -10 -1627 81.30 783.0 -10 -1628 81.35 783.5 -10 -1629 81.40 784.0 -10 -1630 81.45 784.5 -10 -1631 81.50 785.0 -10 -1632 81.55 785.5 -10 -1633 81.60 786.0 -10 -1634 81.65 786.5 -10 -1635 81.70 787.0 -10 -1636 81.75 787.5 -10 -1637 81.80 788.0 -10 -1638 81.85 788.5 -10 -1639 81.90 789.0 -10 -1640 81.95 789.5 -10 -1641 82.00 790.0 -10 -1642 82.05 790.5 -10 -1643 82.10 791.0 -10 -1644 82.15 791.5 -10 -1645 82.20 792.0 -10 -1646 82.25 792.5 -10 -1647 82.30 793.0 -10 -1648 82.35 793.5 -10 -1649 82.40 794.0 -10 -1650 82.45 794.5 -10 -1651 82.50 795.0 -10 -1652 82.55 795.5 -10 -1653 82.60 796.0 -10 -1654 82.65 796.5 -10 -1655 82.70 797.0 -10 -1656 82.75 797.5 -10 -1657 82.80 798.0 -10 -1658 82.85 798.5 -10 -1659 82.90 799.0 -10 -1660 82.95 799.5 -10 -1661 83.00 800.0 -10 -1662 83.05 800.5 -10 -1663 83.10 801.0 -10 -1664 83.15 801.5 -10 -1665 83.20 802.0 -10 -1666 83.25 802.5 -10 -1667 83.30 803.0 -10 -1668 83.35 803.5 -10 -1669 83.40 804.0 -10 -1670 83.45 804.5 -10 -1671 83.50 805.0 -10 -1672 83.55 805.5 -10 -1673 83.60 806.0 -10 -1674 83.65 806.5 -10 -1675 83.70 807.0 -10 -1676 83.75 807.5 -10 -1677 83.80 808.0 -10 -1678 83.85 808.5 -10 -1679 83.90 809.0 -10 -1680 83.95 809.5 -10 -1681 84.00 810.0 -10 -1682 84.05 810.5 -10 -1683 84.10 811.0 -10 -1684 84.15 811.5 -10 -1685 84.20 812.0 -10 -1686 84.25 812.5 -10 -1687 84.30 813.0 -10 -1688 84.35 813.5 -10 -1689 84.40 814.0 -10 -1690 84.45 814.5 -10 -1691 84.50 815.0 -10 -1692 84.55 815.5 -10 -1693 84.60 816.0 -10 -1694 84.65 816.5 -10 -1695 84.70 817.0 -10 -1696 84.75 817.5 -10 -1697 84.80 818.0 -10 -1698 84.85 818.5 -10 -1699 84.90 819.0 -10 -1700 84.95 819.5 -10 -1701 85.00 820.0 -10 -1702 85.05 820.5 -10 -1703 85.10 821.0 -10 -1704 85.15 821.5 -10 -1705 85.20 822.0 -10 -1706 85.25 822.5 -10 -1707 85.30 823.0 -10 -1708 85.35 823.5 -10 -1709 85.40 824.0 -10 -1710 85.45 824.5 -10 -1711 85.50 825.0 -10 -1712 85.55 825.5 -10 -1713 85.60 826.0 -10 -1714 85.65 826.5 -10 -1715 85.70 827.0 -10 -1716 85.75 827.5 -10 -1717 85.80 828.0 -10 -1718 85.85 828.5 -10 -1719 85.90 829.0 -10 -1720 85.95 829.5 -10 -1721 86.00 830.0 -10 -1722 86.05 830.5 -10 -1723 86.10 831.0 -10 -1724 86.15 831.5 -10 -1725 86.20 832.0 -10 -1726 86.25 832.5 -10 -1727 86.30 833.0 -10 -1728 86.35 833.5 -10 -1729 86.40 834.0 -10 -1730 86.45 834.5 -10 -1731 86.50 835.0 -10 -1732 86.55 835.5 -10 -1733 86.60 836.0 -10 -1734 86.65 836.5 -10 -1735 86.70 837.0 -10 -1736 86.75 837.5 -10 -1737 86.80 838.0 -10 -1738 86.85 838.5 -10 -1739 86.90 839.0 -10 -1740 86.95 839.5 -10 -1741 87.00 840.0 -10 -1742 87.05 840.5 -10 -1743 87.10 841.0 -10 -1744 87.15 841.5 -10 -1745 87.20 842.0 -10 -1746 87.25 842.5 -10 -1747 87.30 843.0 -10 -1748 87.35 843.5 -10 -1749 87.40 844.0 -10 -1750 87.45 844.5 -10 -1751 87.50 845.0 -10 -1752 87.55 845.5 -10 -1753 87.60 846.0 -10 -1754 87.65 846.5 -10 -1755 87.70 847.0 -10 -1756 87.75 847.5 -10 -1757 87.80 848.0 -10 -1758 87.85 848.5 -10 -1759 87.90 849.0 -10 -1760 87.95 849.5 -10 -1761 88.00 850.0 -10 -1762 88.05 850.5 -10 -1763 88.10 851.0 -10 -1764 88.15 851.5 -10 -1765 88.20 852.0 -10 -1766 88.25 852.5 -10 -1767 88.30 853.0 -10 -1768 88.35 853.5 -10 -1769 88.40 854.0 -10 -1770 88.45 854.5 -10 -1771 88.50 855.0 -10 -1772 88.55 855.5 -10 -1773 88.60 856.0 -10 -1774 88.65 856.5 -10 -1775 88.70 857.0 -10 -1776 88.75 857.5 -10 -1777 88.80 858.0 -10 -1778 88.85 858.5 -10 -1779 88.90 859.0 -10 -1780 88.95 859.5 -10 -1781 89.00 860.0 -10 -1782 89.05 860.5 -10 -1783 89.10 861.0 -10 -1784 89.15 861.5 -10 -1785 89.20 862.0 -10 -1786 89.25 862.5 -10 -1787 89.30 863.0 -10 -1788 89.35 863.5 -10 -1789 89.40 864.0 -10 -1790 89.45 864.5 -10 -1791 89.50 865.0 -10 -1792 89.55 865.5 -10 -1793 89.60 866.0 -10 -1794 89.65 866.5 -10 -1795 89.70 867.0 -10 -1796 89.75 867.5 -10 -1797 89.80 868.0 -10 -1798 89.85 868.5 -10 -1799 89.90 869.0 -10 -1800 89.95 869.5 -10 -1801 90.00 870.0 -10 -1802 90.05 870.5 -10 -1803 90.10 871.0 -10 -1804 90.15 871.5 -10 -1805 90.20 872.0 -10 -1806 90.25 872.5 -10 -1807 90.30 873.0 -10 -1808 90.35 873.5 -10 -1809 90.40 874.0 -10 -1810 90.45 874.5 -10 -1811 90.50 875.0 -10 -1812 90.55 875.5 -10 -1813 90.60 876.0 -10 -1814 90.65 876.5 -10 -1815 90.70 877.0 -10 -1816 90.75 877.5 -10 -1817 90.80 878.0 -10 -1818 90.85 878.5 -10 -1819 90.90 879.0 -10 -1820 90.95 879.5 -10 -1821 91.00 880.0 -10 -1822 91.05 880.5 -10 -1823 91.10 881.0 -10 -1824 91.15 881.5 -10 -1825 91.20 882.0 -10 -1826 91.25 882.5 -10 -1827 91.30 883.0 -10 -1828 91.35 883.5 -10 -1829 91.40 884.0 -10 -1830 91.45 884.5 -10 -1831 91.50 885.0 -10 -1832 91.55 885.5 -10 -1833 91.60 886.0 -10 -1834 91.65 886.5 -10 -1835 91.70 887.0 -10 -1836 91.75 887.5 -10 -1837 91.80 888.0 -10 -1838 91.85 888.5 -10 -1839 91.90 889.0 -10 -1840 91.95 889.5 -10 -1841 92.00 890.0 -10 -1842 92.05 890.5 -10 -1843 92.10 891.0 -10 -1844 92.15 891.5 -10 -1845 92.20 892.0 -10 -1846 92.25 892.5 -10 -1847 92.30 893.0 -10 -1848 92.35 893.5 -10 -1849 92.40 894.0 -10 -1850 92.45 894.5 -10 -1851 92.50 895.0 -10 -1852 92.55 895.5 -10 -1853 92.60 896.0 -10 -1854 92.65 896.5 -10 -1855 92.70 897.0 -10 -1856 92.75 897.5 -10 -1857 92.80 898.0 -10 -1858 92.85 898.5 -10 -1859 92.90 899.0 -10 -1860 92.95 899.5 -10 -1861 93.00 900.0 -10 -1862 93.05 900.5 -10 -1863 93.10 901.0 -10 -1864 93.15 901.5 -10 -1865 93.20 902.0 -10 -1866 93.25 902.5 -10 -1867 93.30 903.0 -10 -1868 93.35 903.5 -10 -1869 93.40 904.0 -10 -1870 93.45 904.5 -10 -1871 93.50 905.0 -10 -1872 93.55 905.5 -10 -1873 93.60 906.0 -10 -1874 93.65 906.5 -10 -1875 93.70 907.0 -10 -1876 93.75 907.5 -10 -1877 93.80 908.0 -10 -1878 93.85 908.5 -10 -1879 93.90 909.0 -10 -1880 93.95 909.5 -10 -1881 94.00 910.0 -10 -1882 94.05 910.5 -10 -1883 94.10 911.0 -10 -1884 94.15 911.5 -10 -1885 94.20 912.0 -10 -1886 94.25 912.5 -10 -1887 94.30 913.0 -10 -1888 94.35 913.5 -10 -1889 94.40 914.0 -10 -1890 94.45 914.5 -10 -1891 94.50 915.0 -10 -1892 94.55 915.5 -10 -1893 94.60 916.0 -10 -1894 94.65 916.5 -10 -1895 94.70 917.0 -10 -1896 94.75 917.5 -10 -1897 94.80 918.0 -10 -1898 94.85 918.5 -10 -1899 94.90 919.0 -10 -1900 94.95 919.5 -10 -1901 95.00 920.0 -10 -1902 95.05 920.5 -10 -1903 95.10 921.0 -10 -1904 95.15 921.5 -10 -1905 95.20 922.0 -10 -1906 95.25 922.5 -10 -1907 95.30 923.0 -10 -1908 95.35 923.5 -10 -1909 95.40 924.0 -10 -1910 95.45 924.5 -10 -1911 95.50 925.0 -10 -1912 95.55 925.5 -10 -1913 95.60 926.0 -10 -1914 95.65 926.5 -10 -1915 95.70 927.0 -10 -1916 95.75 927.5 -10 -1917 95.80 928.0 -10 -1918 95.85 928.5 -10 -1919 95.90 929.0 -10 -1920 95.95 929.5 -10 -1921 96.00 930.0 -10 -1922 96.05 930.5 -10 -1923 96.10 931.0 -10 -1924 96.15 931.5 -10 -1925 96.20 932.0 -10 -1926 96.25 932.5 -10 -1927 96.30 933.0 -10 -1928 96.35 933.5 -10 -1929 96.40 934.0 -10 -1930 96.45 934.5 -10 -1931 96.50 935.0 -10 -1932 96.55 935.5 -10 -1933 96.60 936.0 -10 -1934 96.65 936.5 -10 -1935 96.70 937.0 -10 -1936 96.75 937.5 -10 -1937 96.80 938.0 -10 -1938 96.85 938.5 -10 -1939 96.90 939.0 -10 -1940 96.95 939.5 -10 -1941 97.00 940.0 -10 -1942 97.05 940.5 -10 -1943 97.10 941.0 -10 -1944 97.15 941.5 -10 -1945 97.20 942.0 -10 -1946 97.25 942.5 -10 -1947 97.30 943.0 -10 -1948 97.35 943.5 -10 -1949 97.40 944.0 -10 -1950 97.45 944.5 -10 -1951 97.50 945.0 -10 -1952 97.55 945.5 -10 -1953 97.60 946.0 -10 -1954 97.65 946.5 -10 -1955 97.70 947.0 -10 -1956 97.75 947.5 -10 -1957 97.80 948.0 -10 -1958 97.85 948.5 -10 -1959 97.90 949.0 -10 -1960 97.95 949.5 -10 -1961 98.00 950.0 -10 -1962 98.05 950.5 -10 -1963 98.10 951.0 -10 -1964 98.15 951.5 -10 -1965 98.20 952.0 -10 -1966 98.25 952.5 -10 -1967 98.30 953.0 -10 -1968 98.35 953.5 -10 -1969 98.40 954.0 -10 -1970 98.45 954.5 -10 -1971 98.50 955.0 -10 -1972 98.55 955.5 -10 -1973 98.60 956.0 -10 -1974 98.65 956.5 -10 -1975 98.70 957.0 -10 -1976 98.75 957.5 -10 -1977 98.80 958.0 -10 -1978 98.85 958.5 -10 -1979 98.90 959.0 -10 -1980 98.95 959.5 -10 -1981 99.00 960.0 -10 -1982 99.05 960.5 -10 -1983 99.10 961.0 -10 -1984 99.15 961.5 -10 -1985 99.20 962.0 -10 -1986 99.25 962.5 -10 -1987 99.30 963.0 -10 -1988 99.35 963.5 -10 -1989 99.40 964.0 -10 -1990 99.45 964.5 -10 -1991 99.50 965.0 -10 -1992 99.55 965.5 -10 -1993 99.60 966.0 -10 -1994 99.65 966.5 -10 -1995 99.70 967.0 -10 -1996 99.75 967.5 -10 -1997 99.80 968.0 -10 -1998 99.85 968.5 -10 -1999 99.90 969.0 -10 -2000 99.95 969.5 -10 -2001 100.00 970.0 -10 -2002 100.05 970.5 -10 -2003 100.10 971.0 -10 -2004 100.15 971.5 -10 -2005 100.20 972.0 -10 -2006 100.25 972.5 -10 -2007 100.30 973.0 -10 -2008 100.35 973.5 -10 -2009 100.40 974.0 -10 -2010 100.45 974.5 -10 -2011 100.50 975.0 -10 -2012 100.55 975.5 -10 -2013 100.60 976.0 -10 -2014 100.65 976.5 -10 -2015 100.70 977.0 -10 -2016 100.75 977.5 -10 -2017 100.80 978.0 -10 -2018 100.85 978.5 -10 -2019 100.90 979.0 -10 -2020 100.95 979.5 -10 -2021 101.00 980.0 -10 -2022 101.05 980.5 -10 -2023 101.10 981.0 -10 -2024 101.15 981.5 -10 -2025 101.20 982.0 -10 -2026 101.25 982.5 -10 -2027 101.30 983.0 -10 -2028 101.35 983.5 -10 -2029 101.40 984.0 -10 -2030 101.45 984.5 -10 -2031 101.50 985.0 -10 -2032 101.55 985.5 -10 -2033 101.60 986.0 -10 -2034 101.65 986.5 -10 -2035 101.70 987.0 -10 -2036 101.75 987.5 -10 -2037 101.80 988.0 -10 -2038 101.85 988.5 -10 -2039 101.90 989.0 -10 -2040 101.95 989.5 -10 -2041 102.00 990.0 -10 -2042 102.05 990.5 -10 -2043 102.10 991.0 -10 -2044 102.15 991.5 -10 -2045 102.20 992.0 -10 -2046 102.25 992.5 -10 -2047 102.30 993.0 -10 -2048 102.35 993.5 -10 -2049 102.40 994.0 -10 -2050 102.45 994.5 -10 -2051 102.50 995.0 -10 -2052 102.55 995.5 -10 -2053 102.60 996.0 -10 -2054 102.65 996.5 -10 -2055 102.70 997.0 -10 -2056 102.75 997.5 -10 -2057 102.80 998.0 -10 -2058 102.85 998.5 -10 -2059 102.90 999.0 -10 -2060 102.95 999.5 -10 -2061 103.00 1000.0 -10 -2062 103.05 1000.5 -10 -2063 103.10 1001.0 -10 -2064 103.15 1001.5 -10 -2065 103.20 1002.0 -10 -2066 103.25 1002.5 -10 -2067 103.30 1003.0 -10 -2068 103.35 1003.5 -10 -2069 103.40 1004.0 -10 -2070 103.45 1004.5 -10 -2071 103.50 1005.0 -10 -2072 103.55 1005.5 -10 -2073 103.60 1006.0 -10 -2074 103.65 1006.5 -10 -2075 103.70 1007.0 -10 -2076 103.75 1007.5 -10 -2077 103.80 1008.0 -10 -2078 103.85 1008.5 -10 -2079 103.90 1009.0 -10 -2080 103.95 1009.5 -10 -2081 104.00 1010.0 -10 -2082 104.05 1010.5 -10 -2083 104.10 1011.0 -10 -2084 104.15 1011.5 -10 -2085 104.20 1012.0 -10 -2086 104.25 1012.5 -10 -2087 104.30 1013.0 -10 -2088 104.35 1013.5 -10 -2089 104.40 1014.0 -10 -2090 104.45 1014.5 -10 -2091 104.50 1015.0 -10 -2092 104.55 1015.5 -10 -2093 104.60 1016.0 -10 -2094 104.65 1016.5 -10 -2095 104.70 1017.0 -10 -2096 104.75 1017.5 -10 -2097 104.80 1018.0 -10 -2098 104.85 1018.5 -10 -2099 104.90 1019.0 -10 -2100 104.95 1019.5 -10 -2101 105.00 1020.0 -10 -2102 105.05 1020.5 -10 -2103 105.10 1021.0 -10 -2104 105.15 1021.5 -10 -2105 105.20 1022.0 -10 -2106 105.25 1022.5 -10 -2107 105.30 1023.0 -10 -2108 105.35 1023.5 -10 -2109 105.40 1024.0 -10 -2110 105.45 1024.5 -10 -2111 105.50 1025.0 -10 -2112 105.55 1025.5 -10 -2113 105.60 1026.0 -10 -2114 105.65 1026.5 -10 -2115 105.70 1027.0 -10 -2116 105.75 1027.5 -10 -2117 105.80 1028.0 -10 -2118 105.85 1028.5 -10 -2119 105.90 1029.0 -10 -2120 105.95 1029.5 -10 -2121 106.00 1030.0 -10 -2122 106.05 1030.5 -10 -2123 106.10 1031.0 -10 -2124 106.15 1031.5 -10 -2125 106.20 1032.0 -10 -2126 106.25 1032.5 -10 -2127 106.30 1033.0 -10 -2128 106.35 1033.5 -10 -2129 106.40 1034.0 -10 -2130 106.45 1034.5 -10 -2131 106.50 1035.0 -10 -2132 106.55 1035.5 -10 -2133 106.60 1036.0 -10 -2134 106.65 1036.5 -10 -2135 106.70 1037.0 -10 -2136 106.75 1037.5 -10 -2137 106.80 1038.0 -10 -2138 106.85 1038.5 -10 -2139 106.90 1039.0 -10 -2140 106.95 1039.5 -10 -2141 107.00 1040.0 -10 -2142 107.05 1040.5 -10 -2143 107.10 1041.0 -10 -2144 107.15 1041.5 -10 -2145 107.20 1042.0 -10 -2146 107.25 1042.5 -10 -2147 107.30 1043.0 -10 -2148 107.35 1043.5 -10 -2149 107.40 1044.0 -10 -2150 107.45 1044.5 -10 -2151 107.50 1045.0 -10 -2152 107.55 1045.5 -10 -2153 107.60 1046.0 -10 -2154 107.65 1046.5 -10 -2155 107.70 1047.0 -10 -2156 107.75 1047.5 -10 -2157 107.80 1048.0 -10 -2158 107.85 1048.5 -10 -2159 107.90 1049.0 -10 -2160 107.95 1049.5 -10 -2161 108.00 1050.0 -10 -2162 108.05 1050.5 -10 -2163 108.10 1051.0 -10 -2164 108.15 1051.5 -10 -2165 108.20 1052.0 -10 -2166 108.25 1052.5 -10 -2167 108.30 1053.0 -10 -2168 108.35 1053.5 -10 -2169 108.40 1054.0 -10 -2170 108.45 1054.5 -10 -2171 108.50 1055.0 -10 -2172 108.55 1055.5 -10 -2173 108.60 1056.0 -10 -2174 108.65 1056.5 -10 -2175 108.70 1057.0 -10 -2176 108.75 1057.5 -10 -2177 108.80 1058.0 -10 -2178 108.85 1058.5 -10 -2179 108.90 1059.0 -10 -2180 108.95 1059.5 -10 -2181 109.00 1060.0 -10 -2182 109.05 1060.5 -10 -2183 109.10 1061.0 -10 -2184 109.15 1061.5 -10 -2185 109.20 1062.0 -10 -2186 109.25 1062.5 -10 -2187 109.30 1063.0 -10 -2188 109.35 1063.5 -10 -2189 109.40 1064.0 -10 -2190 109.45 1064.5 -10 -2191 109.50 1065.0 -10 -2192 109.55 1065.5 -10 -2193 109.60 1066.0 -10 -2194 109.65 1066.5 -10 -2195 109.70 1067.0 -10 -2196 109.75 1067.5 -10 -2197 109.80 1068.0 -10 -2198 109.85 1068.5 -10 -2199 109.90 1069.0 -10 -2200 109.95 1069.5 -10 -2201 110.00 1070.0 -10 -2202 110.05 1070.5 -10 -2203 110.10 1071.0 -10 -2204 110.15 1071.5 -10 -2205 110.20 1072.0 -10 -2206 110.25 1072.5 -10 -2207 110.30 1073.0 -10 -2208 110.35 1073.5 -10 -2209 110.40 1074.0 -10 -2210 110.45 1074.5 -10 -2211 110.50 1075.0 -10 -2212 110.55 1075.5 -10 -2213 110.60 1076.0 -10 -2214 110.65 1076.5 -10 -2215 110.70 1077.0 -10 -2216 110.75 1077.5 -10 -2217 110.80 1078.0 -10 -2218 110.85 1078.5 -10 -2219 110.90 1079.0 -10 -2220 110.95 1079.5 -10 -2221 111.00 1080.0 -10 -2222 111.05 1080.5 -10 -2223 111.10 1081.0 -10 -2224 111.15 1081.5 -10 -2225 111.20 1082.0 -10 -2226 111.25 1082.5 -10 -2227 111.30 1083.0 -10 -2228 111.35 1083.5 -10 -2229 111.40 1084.0 -10 -2230 111.45 1084.5 -10 -2231 111.50 1085.0 -10 -2232 111.55 1085.5 -10 -2233 111.60 1086.0 -10 -2234 111.65 1086.5 -10 -2235 111.70 1087.0 -10 -2236 111.75 1087.5 -10 -2237 111.80 1088.0 -10 -2238 111.85 1088.5 -10 -2239 111.90 1089.0 -10 -2240 111.95 1089.5 -10 -2241 112.00 1090.0 -10 -2242 112.05 1090.5 -10 -2243 112.10 1091.0 -10 -2244 112.15 1091.5 -10 -2245 112.20 1092.0 -10 -2246 112.25 1092.5 -10 -2247 112.30 1093.0 -10 -2248 112.35 1093.5 -10 -2249 112.40 1094.0 -10 -2250 112.45 1094.5 -10 -2251 112.50 1095.0 -10 -2252 112.55 1095.5 -10 -2253 112.60 1096.0 -10 -2254 112.65 1096.5 -10 -2255 112.70 1097.0 -10 -2256 112.75 1097.5 -10 -2257 112.80 1098.0 -10 -2258 112.85 1098.5 -10 -2259 112.90 1099.0 -10 -2260 112.95 1099.5 -10 -2261 113.00 1100.0 -10 -2262 113.05 1100.5 -10 -2263 113.10 1101.0 -10 -2264 113.15 1101.5 -10 -2265 113.20 1102.0 -10 -2266 113.25 1102.5 -10 -2267 113.30 1103.0 -10 -2268 113.35 1103.5 -10 -2269 113.40 1104.0 -10 -2270 113.45 1104.5 -10 -2271 113.50 1105.0 -10 -2272 113.55 1105.5 -10 -2273 113.60 1106.0 -10 -2274 113.65 1106.5 -10 -2275 113.70 1107.0 -10 -2276 113.75 1107.5 -10 -2277 113.80 1108.0 -10 -2278 113.85 1108.5 -10 -2279 113.90 1109.0 -10 -2280 113.95 1109.5 -10 -2281 114.00 1110.0 -10 -2282 114.05 1110.5 -10 -2283 114.10 1111.0 -10 -2284 114.15 1111.5 -10 -2285 114.20 1112.0 -10 -2286 114.25 1112.5 -10 -2287 114.30 1113.0 -10 -2288 114.35 1113.5 -10 -2289 114.40 1114.0 -10 -2290 114.45 1114.5 -10 -2291 114.50 1115.0 -10 -2292 114.55 1115.5 -10 -2293 114.60 1116.0 -10 -2294 114.65 1116.5 -10 -2295 114.70 1117.0 -10 -2296 114.75 1117.5 -10 -2297 114.80 1118.0 -10 -2298 114.85 1118.5 -10 -2299 114.90 1119.0 -10 -2300 114.95 1119.5 -10 -2301 115.00 1120.0 -10 -2302 115.05 1120.5 -10 -2303 115.10 1121.0 -10 -2304 115.15 1121.5 -10 -2305 115.20 1122.0 -10 -2306 115.25 1122.5 -10 -2307 115.30 1123.0 -10 -2308 115.35 1123.5 -10 -2309 115.40 1124.0 -10 -2310 115.45 1124.5 -10 -2311 115.50 1125.0 -10 -2312 115.55 1125.5 -10 -2313 115.60 1126.0 -10 -2314 115.65 1126.5 -10 -2315 115.70 1127.0 -10 -2316 115.75 1127.5 -10 -2317 115.80 1128.0 -10 -2318 115.85 1128.5 -10 -2319 115.90 1129.0 -10 -2320 115.95 1129.5 -10 -2321 116.00 1130.0 -10 -2322 116.05 1130.5 -10 -2323 116.10 1131.0 -10 -2324 116.15 1131.5 -10 -2325 116.20 1132.0 -10 -2326 116.25 1132.5 -10 -2327 116.30 1133.0 -10 -2328 116.35 1133.5 -10 -2329 116.40 1134.0 -10 -2330 116.45 1134.5 -10 -2331 116.50 1135.0 -10 -2332 116.55 1135.5 -10 -2333 116.60 1136.0 -10 -2334 116.65 1136.5 -10 -2335 116.70 1137.0 -10 -2336 116.75 1137.5 -10 -2337 116.80 1138.0 -10 -2338 116.85 1138.5 -10 -2339 116.90 1139.0 -10 -2340 116.95 1139.5 -10 -2341 117.00 1140.0 -10 -2342 117.05 1140.5 -10 -2343 117.10 1141.0 -10 -2344 117.15 1141.5 -10 -2345 117.20 1142.0 -10 -2346 117.25 1142.5 -10 -2347 117.30 1143.0 -10 -2348 117.35 1143.5 -10 -2349 117.40 1144.0 -10 -2350 117.45 1144.5 -10 -2351 117.50 1145.0 -10 -2352 117.55 1145.5 -10 -2353 117.60 1146.0 -10 -2354 117.65 1146.5 -10 -2355 117.70 1147.0 -10 -2356 117.75 1147.5 -10 -2357 117.80 1148.0 -10 -2358 117.85 1148.5 -10 -2359 117.90 1149.0 -10 -2360 117.95 1149.5 -10 -2361 118.00 1150.0 -10 -2362 118.05 1150.5 -10 -2363 118.10 1151.0 -10 -2364 118.15 1151.5 -10 -2365 118.20 1152.0 -10 -2366 118.25 1152.5 -10 -2367 118.30 1153.0 -10 -2368 118.35 1153.5 -10 -2369 118.40 1154.0 -10 -2370 118.45 1154.5 -10 -2371 118.50 1155.0 -10 -2372 118.55 1155.5 -10 -2373 118.60 1156.0 -10 -2374 118.65 1156.5 -10 -2375 118.70 1157.0 -10 -2376 118.75 1157.5 -10 -2377 118.80 1158.0 -10 -2378 118.85 1158.5 -10 -2379 118.90 1159.0 -10 -2380 118.95 1159.5 -10 -2381 119.00 1160.0 -10 -2382 119.05 1160.5 -10 -2383 119.10 1161.0 -10 -2384 119.15 1161.5 -10 -2385 119.20 1162.0 -10 -2386 119.25 1162.5 -10 -2387 119.30 1163.0 -10 -2388 119.35 1163.5 -10 -2389 119.40 1164.0 -10 -2390 119.45 1164.5 -10 -2391 119.50 1165.0 -10 -2392 119.55 1165.5 -10 -2393 119.60 1166.0 -10 -2394 119.65 1166.5 -10 -2395 119.70 1167.0 -10 -2396 119.75 1167.5 -10 -2397 119.80 1168.0 -10 -2398 119.85 1168.5 -10 -2399 119.90 1169.0 -10 -2400 119.95 1169.5 -10 -2401 120.00 1170.0 -10 -2402 120.05 1170.5 -10 -2403 120.10 1171.0 -10 -2404 120.15 1171.5 -10 -2405 120.20 1172.0 -10 -2406 120.25 1172.5 -10 -2407 120.30 1173.0 -10 -2408 120.35 1173.5 -10 -2409 120.40 1174.0 -10 -2410 120.45 1174.5 -10 -2411 120.50 1175.0 -10 -2412 120.55 1175.5 -10 -2413 120.60 1176.0 -10 -2414 120.65 1176.5 -10 -2415 120.70 1177.0 -10 -2416 120.75 1177.5 -10 -2417 120.80 1178.0 -10 -2418 120.85 1178.5 -10 -2419 120.90 1179.0 -10 -2420 120.95 1179.5 -10 -2421 121.00 1180.0 -10 -2422 121.05 1180.5 -10 -2423 121.10 1181.0 -10 -2424 121.15 1181.5 -10 -2425 121.20 1182.0 -10 -2426 121.25 1182.5 -10 -2427 121.30 1183.0 -10 -2428 121.35 1183.5 -10 -2429 121.40 1184.0 -10 -2430 121.45 1184.5 -10 -2431 121.50 1185.0 -10 -2432 121.55 1185.5 -10 -2433 121.60 1186.0 -10 -2434 121.65 1186.5 -10 -2435 121.70 1187.0 -10 -2436 121.75 1187.5 -10 -2437 121.80 1188.0 -10 -2438 121.85 1188.5 -10 -2439 121.90 1189.0 -10 -2440 121.95 1189.5 -10 -2441 122.00 1190.0 -10 -2442 122.05 1190.5 -10 -2443 122.10 1191.0 -10 -2444 122.15 1191.5 -10 -2445 122.20 1192.0 -10 -2446 122.25 1192.5 -10 -2447 122.30 1193.0 -10 -2448 122.35 1193.5 -10 -2449 122.40 1194.0 -10 -2450 122.45 1194.5 -10 -2451 122.50 1195.0 -10 -2452 122.55 1195.5 -10 -2453 122.60 1196.0 -10 -2454 122.65 1196.5 -10 -2455 122.70 1197.0 -10 -2456 122.75 1197.5 -10 -2457 122.80 1198.0 -10 -2458 122.85 1198.5 -10 -2459 122.90 1199.0 -10 -2460 122.95 1199.5 -10 -2461 123.00 1200.0 -10 -2462 123.05 1200.5 -10 -2463 123.10 1201.0 -10 -2464 123.15 1201.5 -10 -2465 123.20 1202.0 -10 -2466 123.25 1202.5 -10 -2467 123.30 1203.0 -10 -2468 123.35 1203.5 -10 -2469 123.40 1204.0 -10 -2470 123.45 1204.5 -10 -2471 123.50 1205.0 -10 -2472 123.55 1205.5 -10 -2473 123.60 1206.0 -10 -2474 123.65 1206.5 -10 -2475 123.70 1207.0 -10 -2476 123.75 1207.5 -10 -2477 123.80 1208.0 -10 -2478 123.85 1208.5 -10 -2479 123.90 1209.0 -10 -2480 123.95 1209.5 -10 -2481 124.00 1210.0 -10 -2482 124.05 1210.5 -10 -2483 124.10 1211.0 -10 -2484 124.15 1211.5 -10 -2485 124.20 1212.0 -10 -2486 124.25 1212.5 -10 -2487 124.30 1213.0 -10 -2488 124.35 1213.5 -10 -2489 124.40 1214.0 -10 -2490 124.45 1214.5 -10 -2491 124.50 1215.0 -10 -2492 124.55 1215.5 -10 -2493 124.60 1216.0 -10 -2494 124.65 1216.5 -10 -2495 124.70 1217.0 -10 -2496 124.75 1217.5 -10 -2497 124.80 1218.0 -10 -2498 124.85 1218.5 -10 -2499 124.90 1219.0 -10 -2500 124.95 1219.5 -10 -2501 125.00 1220.0 -10 -2502 125.05 1220.5 -10 -2503 125.10 1221.0 -10 -2504 125.15 1221.5 -10 -2505 125.20 1222.0 -10 -2506 125.25 1222.5 -10 -2507 125.30 1223.0 -10 -2508 125.35 1223.5 -10 -2509 125.40 1224.0 -10 -2510 125.45 1224.5 -10 -2511 125.50 1225.0 -10 -2512 125.55 1225.5 -10 -2513 125.60 1226.0 -10 -2514 125.65 1226.5 -10 -2515 125.70 1227.0 -10 -2516 125.75 1227.5 -10 -2517 125.80 1228.0 -10 -2518 125.85 1228.5 -10 -2519 125.90 1229.0 -10 -2520 125.95 1229.5 -10 -2521 126.00 1230.0 -10 -2522 126.05 1230.5 -10 -2523 126.10 1231.0 -10 -2524 126.15 1231.5 -10 -2525 126.20 1232.0 -10 -2526 126.25 1232.5 -10 -2527 126.30 1233.0 -10 -2528 126.35 1233.5 -10 -2529 126.40 1234.0 -10 -2530 126.45 1234.5 -10 -2531 126.50 1235.0 -10 -2532 126.55 1235.5 -10 -2533 126.60 1236.0 -10 -2534 126.65 1236.5 -10 -2535 126.70 1237.0 -10 -2536 126.75 1237.5 -10 -2537 126.80 1238.0 -10 -2538 126.85 1238.5 -10 -2539 126.90 1239.0 -10 -2540 126.95 1239.5 -10 -2541 127.00 1240.0 -10 -2542 127.05 1240.5 -10 -2543 127.10 1241.0 -10 -2544 127.15 1241.5 -10 -2545 127.20 1242.0 -10 -2546 127.25 1242.5 -10 -2547 127.30 1243.0 -10 -2548 127.35 1243.5 -10 -2549 127.40 1244.0 -10 -2550 127.45 1244.5 -10 -2551 127.50 1245.0 -10 -2552 127.55 1245.5 -10 -2553 127.60 1246.0 -10 -2554 127.65 1246.5 -10 -2555 127.70 1247.0 -10 -2556 127.75 1247.5 -10 -2557 127.80 1248.0 -10 -2558 127.85 1248.5 -10 -2559 127.90 1249.0 -10 -2560 127.95 1249.5 -10 -2561 128.00 1250.0 -10 -2562 128.05 1250.5 -10 -2563 128.10 1251.0 -10 -2564 128.15 1251.5 -10 -2565 128.20 1252.0 -10 -2566 128.25 1252.5 -10 -2567 128.30 1253.0 -10 -2568 128.35 1253.5 -10 -2569 128.40 1254.0 -10 -2570 128.45 1254.5 -10 -2571 128.50 1255.0 -10 -2572 128.55 1255.5 -10 -2573 128.60 1256.0 -10 -2574 128.65 1256.5 -10 -2575 128.70 1257.0 -10 -2576 128.75 1257.5 -10 -2577 128.80 1258.0 -10 -2578 128.85 1258.5 -10 -2579 128.90 1259.0 -10 -2580 128.95 1259.5 -10 -2581 129.00 1260.0 -10 -2582 129.05 1260.5 -10 -2583 129.10 1261.0 -10 -2584 129.15 1261.5 -10 -2585 129.20 1262.0 -10 -2586 129.25 1262.5 -10 -2587 129.30 1263.0 -10 -2588 129.35 1263.5 -10 -2589 129.40 1264.0 -10 -2590 129.45 1264.5 -10 -2591 129.50 1265.0 -10 -2592 129.55 1265.5 -10 -2593 129.60 1266.0 -10 -2594 129.65 1266.5 -10 -2595 129.70 1267.0 -10 -2596 129.75 1267.5 -10 -2597 129.80 1268.0 -10 -2598 129.85 1268.5 -10 -2599 129.90 1269.0 -10 -2600 129.95 1269.5 -10 -2601 130.00 1270.0 -10 -2602 130.05 1270.5 -10 -2603 130.10 1271.0 -10 -2604 130.15 1271.5 -10 -2605 130.20 1272.0 -10 -2606 130.25 1272.5 -10 -2607 130.30 1273.0 -10 -2608 130.35 1273.5 -10 -2609 130.40 1274.0 -10 -2610 130.45 1274.5 -10 -2611 130.50 1275.0 -10 -2612 130.55 1275.5 -10 -2613 130.60 1276.0 -10 -2614 130.65 1276.5 -10 -2615 130.70 1277.0 -10 -2616 130.75 1277.5 -10 -2617 130.80 1278.0 -10 -2618 130.85 1278.5 -10 -2619 130.90 1279.0 -10 -2620 130.95 1279.5 -10 -2621 131.00 1280.0 -10 -2622 131.05 1280.5 -10 -2623 131.10 1281.0 -10 -2624 131.15 1281.5 -10 -2625 131.20 1282.0 -10 -2626 131.25 1282.5 -10 -2627 131.30 1283.0 -10 -2628 131.35 1283.5 -10 -2629 131.40 1284.0 -10 -2630 131.45 1284.5 -10 -2631 131.50 1285.0 -10 -2632 131.55 1285.5 -10 -2633 131.60 1286.0 -10 -2634 131.65 1286.5 -10 -2635 131.70 1287.0 -10 -2636 131.75 1287.5 -10 -2637 131.80 1288.0 -10 -2638 131.85 1288.5 -10 -2639 131.90 1289.0 -10 -2640 131.95 1289.5 -10 -2641 132.00 1290.0 -10 -2642 132.05 1290.5 -10 -2643 132.10 1291.0 -10 -2644 132.15 1291.5 -10 -2645 132.20 1292.0 -10 -2646 132.25 1292.5 -10 -2647 132.30 1293.0 -10 -2648 132.35 1293.5 -10 -2649 132.40 1294.0 -10 -2650 132.45 1294.5 -10 -2651 132.50 1295.0 -10 -2652 132.55 1295.5 -10 -2653 132.60 1296.0 -10 -2654 132.65 1296.5 -10 -2655 132.70 1297.0 -10 -2656 132.75 1297.5 -10 -2657 132.80 1298.0 -10 -2658 132.85 1298.5 -10 -2659 132.90 1299.0 -10 -2660 132.95 1299.5 -10 -2661 133.00 1300.0 -10 -2662 133.05 1300.5 -10 -2663 133.10 1301.0 -10 -2664 133.15 1301.5 -10 -2665 133.20 1302.0 -10 -2666 133.25 1302.5 -10 -2667 133.30 1303.0 -10 -2668 133.35 1303.5 -10 -2669 133.40 1304.0 -10 -2670 133.45 1304.5 -10 -2671 133.50 1305.0 -10 -2672 133.55 1305.5 -10 -2673 133.60 1306.0 -10 -2674 133.65 1306.5 -10 -2675 133.70 1307.0 -10 -2676 133.75 1307.5 -10 -2677 133.80 1308.0 -10 -2678 133.85 1308.5 -10 -2679 133.90 1309.0 -10 -2680 133.95 1309.5 -10 -2681 134.00 1310.0 -10 -2682 134.05 1310.5 -10 -2683 134.10 1311.0 -10 -2684 134.15 1311.5 -10 -2685 134.20 1312.0 -10 -2686 134.25 1312.5 -10 -2687 134.30 1313.0 -10 -2688 134.35 1313.5 -10 -2689 134.40 1314.0 -10 -2690 134.45 1314.5 -10 -2691 134.50 1315.0 -10 -2692 134.55 1315.5 -10 -2693 134.60 1316.0 -10 -2694 134.65 1316.5 -10 -2695 134.70 1317.0 -10 -2696 134.75 1317.5 -10 -2697 134.80 1318.0 -10 -2698 134.85 1318.5 -10 -2699 134.90 1319.0 -10 -2700 134.95 1319.5 -10 -2701 135.00 1320.0 -10 -2702 135.05 1320.5 -10 -2703 135.10 1321.0 -10 -2704 135.15 1321.5 -10 -2705 135.20 1322.0 -10 -2706 135.25 1322.5 -10 -2707 135.30 1323.0 -10 -2708 135.35 1323.5 -10 -2709 135.40 1324.0 -10 -2710 135.45 1324.5 -10 -2711 135.50 1325.0 -10 -2712 135.55 1325.5 -10 -2713 135.60 1326.0 -10 -2714 135.65 1326.5 -10 -2715 135.70 1327.0 -10 -2716 135.75 1327.5 -10 -2717 135.80 1328.0 -10 -2718 135.85 1328.5 -10 -2719 135.90 1329.0 -10 -2720 135.95 1329.5 -10 -2721 136.00 1330.0 -10 -2722 136.05 1330.5 -10 -2723 136.10 1331.0 -10 -2724 136.15 1331.5 -10 -2725 136.20 1332.0 -10 -2726 136.25 1332.5 -10 -2727 136.30 1333.0 -10 -2728 136.35 1333.5 -10 -2729 136.40 1334.0 -10 -2730 136.45 1334.5 -10 -2731 136.50 1335.0 -10 -2732 136.55 1335.5 -10 -2733 136.60 1336.0 -10 -2734 136.65 1336.5 -10 -2735 136.70 1337.0 -10 -2736 136.75 1337.5 -10 -2737 136.80 1338.0 -10 -2738 136.85 1338.5 -10 -2739 136.90 1339.0 -10 -2740 136.95 1339.5 -10 -2741 137.00 1340.0 -10 -2742 137.05 1340.5 -10 -2743 137.10 1341.0 -10 -2744 137.15 1341.5 -10 -2745 137.20 1342.0 -10 -2746 137.25 1342.5 -10 -2747 137.30 1343.0 -10 -2748 137.35 1343.5 -10 -2749 137.40 1344.0 -10 -2750 137.45 1344.5 -10 -2751 137.50 1345.0 -10 -2752 137.55 1345.5 -10 -2753 137.60 1346.0 -10 -2754 137.65 1346.5 -10 -2755 137.70 1347.0 -10 -2756 137.75 1347.5 -10 -2757 137.80 1348.0 -10 -2758 137.85 1348.5 -10 -2759 137.90 1349.0 -10 -2760 137.95 1349.5 -10 -2761 138.00 1350.0 -10 -2762 138.05 1350.5 -10 -2763 138.10 1351.0 -10 -2764 138.15 1351.5 -10 -2765 138.20 1352.0 -10 -2766 138.25 1352.5 -10 -2767 138.30 1353.0 -10 -2768 138.35 1353.5 -10 -2769 138.40 1354.0 -10 -2770 138.45 1354.5 -10 -2771 138.50 1355.0 -10 -2772 138.55 1355.5 -10 -2773 138.60 1356.0 -10 -2774 138.65 1356.5 -10 -2775 138.70 1357.0 -10 -2776 138.75 1357.5 -10 -2777 138.80 1358.0 -10 -2778 138.85 1358.5 -10 -2779 138.90 1359.0 -10 -2780 138.95 1359.5 -10 -2781 139.00 1360.0 -10 -2782 139.05 1360.5 -10 -2783 139.10 1361.0 -10 -2784 139.15 1361.5 -10 -2785 139.20 1362.0 -10 -2786 139.25 1362.5 -10 -2787 139.30 1363.0 -10 -2788 139.35 1363.5 -10 -2789 139.40 1364.0 -10 -2790 139.45 1364.5 -10 -2791 139.50 1365.0 -10 -2792 139.55 1365.5 -10 -2793 139.60 1366.0 -10 -2794 139.65 1366.5 -10 -2795 139.70 1367.0 -10 -2796 139.75 1367.5 -10 -2797 139.80 1368.0 -10 -2798 139.85 1368.5 -10 -2799 139.90 1369.0 -10 -2800 139.95 1369.5 -10 -2801 140.00 1370.0 -10 -2802 140.05 1370.5 -10 -2803 140.10 1371.0 -10 -2804 140.15 1371.5 -10 -2805 140.20 1372.0 -10 -2806 140.25 1372.5 -10 -2807 140.30 1373.0 -10 -2808 140.35 1373.5 -10 -2809 140.40 1374.0 -10 -2810 140.45 1374.5 -10 -2811 140.50 1375.0 -10 -2812 140.55 1375.5 -10 -2813 140.60 1376.0 -10 -2814 140.65 1376.5 -10 -2815 140.70 1377.0 -10 -2816 140.75 1377.5 -10 -2817 140.80 1378.0 -10 -2818 140.85 1378.5 -10 -2819 140.90 1379.0 -10 -2820 140.95 1379.5 -10 -2821 141.00 1380.0 -10 -2822 141.05 1380.5 -10 -2823 141.10 1381.0 -10 -2824 141.15 1381.5 -10 -2825 141.20 1382.0 -10 -2826 141.25 1382.5 -10 -2827 141.30 1383.0 -10 -2828 141.35 1383.5 -10 -2829 141.40 1384.0 -10 -2830 141.45 1384.5 -10 -2831 141.50 1385.0 -10 -2832 141.55 1385.5 -10 -2833 141.60 1386.0 -10 -2834 141.65 1386.5 -10 -2835 141.70 1387.0 -10 -2836 141.75 1387.5 -10 -2837 141.80 1388.0 -10 -2838 141.85 1388.5 -10 -2839 141.90 1389.0 -10 -2840 141.95 1389.5 -10 -2841 142.00 1390.0 -10 -2842 142.05 1390.5 -10 -2843 142.10 1391.0 -10 -2844 142.15 1391.5 -10 -2845 142.20 1392.0 -10 -2846 142.25 1392.5 -10 -2847 142.30 1393.0 -10 -2848 142.35 1393.5 -10 -2849 142.40 1394.0 -10 -2850 142.45 1394.5 -10 -2851 142.50 1395.0 -10 -2852 142.55 1395.5 -10 -2853 142.60 1396.0 -10 -2854 142.65 1396.5 -10 -2855 142.70 1397.0 -10 -2856 142.75 1397.5 -10 -2857 142.80 1398.0 -10 -2858 142.85 1398.5 -10 -2859 142.90 1399.0 -10 -2860 142.95 1399.5 -10 -2861 143.00 1400.0 -10 -2862 143.05 1400.5 -10 -2863 143.10 1401.0 -10 -2864 143.15 1401.5 -10 -2865 143.20 1402.0 -10 -2866 143.25 1402.5 -10 -2867 143.30 1403.0 -10 -2868 143.35 1403.5 -10 -2869 143.40 1404.0 -10 -2870 143.45 1404.5 -10 -2871 143.50 1405.0 -10 -2872 143.55 1405.5 -10 -2873 143.60 1406.0 -10 -2874 143.65 1406.5 -10 -2875 143.70 1407.0 -10 -2876 143.75 1407.5 -10 -2877 143.80 1408.0 -10 -2878 143.85 1408.5 -10 -2879 143.90 1409.0 -10 -2880 143.95 1409.5 -10 -2881 144.00 1410.0 -10 -2882 144.05 1410.5 -10 -2883 144.10 1411.0 -10 -2884 144.15 1411.5 -10 -2885 144.20 1412.0 -10 -2886 144.25 1412.5 -10 -2887 144.30 1413.0 -10 -2888 144.35 1413.5 -10 -2889 144.40 1414.0 -10 -2890 144.45 1414.5 -10 -2891 144.50 1415.0 -10 -2892 144.55 1415.5 -10 -2893 144.60 1416.0 -10 -2894 144.65 1416.5 -10 -2895 144.70 1417.0 -10 -2896 144.75 1417.5 -10 -2897 144.80 1418.0 -10 -2898 144.85 1418.5 -10 -2899 144.90 1419.0 -10 -2900 144.95 1419.5 -10 -2901 145.00 1420.0 -10 -2902 145.05 1420.5 -10 -2903 145.10 1421.0 -10 -2904 145.15 1421.5 -10 -2905 145.20 1422.0 -10 -2906 145.25 1422.5 -10 -2907 145.30 1423.0 -10 -2908 145.35 1423.5 -10 -2909 145.40 1424.0 -10 -2910 145.45 1424.5 -10 -2911 145.50 1425.0 -10 -2912 145.55 1425.5 -10 -2913 145.60 1426.0 -10 -2914 145.65 1426.5 -10 -2915 145.70 1427.0 -10 -2916 145.75 1427.5 -10 -2917 145.80 1428.0 -10 -2918 145.85 1428.5 -10 -2919 145.90 1429.0 -10 -2920 145.95 1429.5 -10 -2921 146.00 1430.0 -10 -2922 146.05 1430.5 -10 -2923 146.10 1431.0 -10 -2924 146.15 1431.5 -10 -2925 146.20 1432.0 -10 -2926 146.25 1432.5 -10 -2927 146.30 1433.0 -10 -2928 146.35 1433.5 -10 -2929 146.40 1434.0 -10 -2930 146.45 1434.5 -10 -2931 146.50 1435.0 -10 -2932 146.55 1435.5 -10 -2933 146.60 1436.0 -10 -2934 146.65 1436.5 -10 -2935 146.70 1437.0 -10 -2936 146.75 1437.5 -10 -2937 146.80 1438.0 -10 -2938 146.85 1438.5 -10 -2939 146.90 1439.0 -10 -2940 146.95 1439.5 -10 -2941 147.00 1440.0 -10 -2942 147.05 1440.5 -10 -2943 147.10 1441.0 -10 -2944 147.15 1441.5 -10 -2945 147.20 1442.0 -10 -2946 147.25 1442.5 -10 -2947 147.30 1443.0 -10 -2948 147.35 1443.5 -10 -2949 147.40 1444.0 -10 -2950 147.45 1444.5 -10 -2951 147.50 1445.0 -10 -2952 147.55 1445.5 -10 -2953 147.60 1446.0 -10 -2954 147.65 1446.5 -10 -2955 147.70 1447.0 -10 -2956 147.75 1447.5 -10 -2957 147.80 1448.0 -10 -2958 147.85 1448.5 -10 -2959 147.90 1449.0 -10 -2960 147.95 1449.5 -10 -2961 148.00 1450.0 -10 -2962 148.05 1450.5 -10 -2963 148.10 1451.0 -10 -2964 148.15 1451.5 -10 -2965 148.20 1452.0 -10 -2966 148.25 1452.5 -10 -2967 148.30 1453.0 -10 -2968 148.35 1453.5 -10 -2969 148.40 1454.0 -10 -2970 148.45 1454.5 -10 -2971 148.50 1455.0 -10 -2972 148.55 1455.5 -10 -2973 148.60 1456.0 -10 -2974 148.65 1456.5 -10 -2975 148.70 1457.0 -10 -2976 148.75 1457.5 -10 -2977 148.80 1458.0 -10 -2978 148.85 1458.5 -10 -2979 148.90 1459.0 -10 -2980 148.95 1459.5 -10 -2981 149.00 1460.0 -10 -2982 149.05 1460.5 -10 -2983 149.10 1461.0 -10 -2984 149.15 1461.5 -10 -2985 149.20 1462.0 -10 -2986 149.25 1462.5 -10 -2987 149.30 1463.0 -10 -2988 149.35 1463.5 -10 -2989 149.40 1464.0 -10 -2990 149.45 1464.5 -10 -2991 149.50 1465.0 -10 -2992 149.55 1465.5 -10 -2993 149.60 1466.0 -10 -2994 149.65 1466.5 -10 -2995 149.70 1467.0 -10 -2996 149.75 1467.5 -10 -2997 149.80 1468.0 -10 -2998 149.85 1468.5 -10 -2999 149.90 1469.0 -10 -3000 149.95 1469.5 -10 -3001 150.00 1470.0 -10 -3002 150.05 1470.5 -10 -3003 150.10 1471.0 -10 -3004 150.15 1471.5 -10 -3005 150.20 1472.0 -10 -3006 150.25 1472.5 -10 -3007 150.30 1473.0 -10 -3008 150.35 1473.5 -10 -3009 150.40 1474.0 -10 -3010 150.45 1474.5 -10 -3011 150.50 1475.0 -10 -3012 150.55 1475.5 -10 -3013 150.60 1476.0 -10 -3014 150.65 1476.5 -10 -3015 150.70 1477.0 -10 -3016 150.75 1477.5 -10 -3017 150.80 1478.0 -10 -3018 150.85 1478.5 -10 -3019 150.90 1479.0 -10 -3020 150.95 1479.5 -10 -3021 151.00 1480.0 -10 -3022 151.05 1480.5 -10 -3023 151.10 1481.0 -10 -3024 151.15 1481.5 -10 -3025 151.20 1482.0 -10 -3026 151.25 1482.5 -10 -3027 151.30 1483.0 -10 -3028 151.35 1483.5 -10 -3029 151.40 1484.0 -10 -3030 151.45 1484.5 -10 -3031 151.50 1485.0 -10 -3032 151.55 1485.5 -10 -3033 151.60 1486.0 -10 -3034 151.65 1486.5 -10 -3035 151.70 1487.0 -10 -3036 151.75 1487.5 -10 -3037 151.80 1488.0 -10 -3038 151.85 1488.5 -10 -3039 151.90 1489.0 -10 -3040 151.95 1489.5 -10 -3041 152.00 1490.0 -10 -3042 152.05 1490.5 -10 -3043 152.10 1491.0 -10 -3044 152.15 1491.5 -10 -3045 152.20 1492.0 -10 -3046 152.25 1492.5 -10 -3047 152.30 1493.0 -10 -3048 152.35 1493.5 -10 -3049 152.40 1494.0 -10 -3050 152.45 1494.5 -10 -3051 152.50 1495.0 -10 -3052 152.55 1495.5 -10 -3053 152.60 1496.0 -10 -3054 152.65 1496.5 -10 -3055 152.70 1497.0 -10 -3056 152.75 1497.5 -10 -3057 152.80 1498.0 -10 -3058 152.85 1498.5 -10 -3059 152.90 1499.0 -10 -3060 152.95 1499.5 -10 -3061 153.00 1500.0 -10 -3062 153.05 1500.5 -10 -3063 153.10 1501.0 -10 -3064 153.15 1501.5 -10 -3065 153.20 1502.0 -10 -3066 153.25 1502.5 -10 -3067 153.30 1503.0 -10 -3068 153.35 1503.5 -10 -3069 153.40 1504.0 -10 -3070 153.45 1504.5 -10 -3071 153.50 1505.0 -10 -3072 153.55 1505.5 -10 -3073 153.60 1506.0 -10 -3074 153.65 1506.5 -10 -3075 153.70 1507.0 -10 -3076 153.75 1507.5 -10 -3077 153.80 1508.0 -10 -3078 153.85 1508.5 -10 -3079 153.90 1509.0 -10 -3080 153.95 1509.5 -10 -3081 154.00 1510.0 -10 -3082 154.05 1510.5 -10 -3083 154.10 1511.0 -10 -3084 154.15 1511.5 -10 -3085 154.20 1512.0 -10 -3086 154.25 1512.5 -10 -3087 154.30 1513.0 -10 -3088 154.35 1513.5 -10 -3089 154.40 1514.0 -10 -3090 154.45 1514.5 -10 -3091 154.50 1515.0 -10 -3092 154.55 1515.5 -10 -3093 154.60 1516.0 -10 -3094 154.65 1516.5 -10 -3095 154.70 1517.0 -10 -3096 154.75 1517.5 -10 -3097 154.80 1518.0 -10 -3098 154.85 1518.5 -10 -3099 154.90 1519.0 -10 -3100 154.95 1519.5 -10 -3101 155.00 1520.0 -10 -3102 155.05 1520.5 -10 -3103 155.10 1521.0 -10 -3104 155.15 1521.5 -10 -3105 155.20 1522.0 -10 -3106 155.25 1522.5 -10 -3107 155.30 1523.0 -10 -3108 155.35 1523.5 -10 -3109 155.40 1524.0 -10 -3110 155.45 1524.5 -10 -3111 155.50 1525.0 -10 -3112 155.55 1525.5 -10 -3113 155.60 1526.0 -10 -3114 155.65 1526.5 -10 -3115 155.70 1527.0 -10 -3116 155.75 1527.5 -10 -3117 155.80 1528.0 -10 -3118 155.85 1528.5 -10 -3119 155.90 1529.0 -10 -3120 155.95 1529.5 -10 -3121 156.00 1530.0 -10 -3122 156.05 1530.5 -10 -3123 156.10 1531.0 -10 -3124 156.15 1531.5 -10 -3125 156.20 1532.0 -10 -3126 156.25 1532.5 -10 -3127 156.30 1533.0 -10 -3128 156.35 1533.5 -10 -3129 156.40 1534.0 -10 -3130 156.45 1534.5 -10 -3131 156.50 1535.0 -10 -3132 156.55 1535.5 -10 -3133 156.60 1536.0 -10 -3134 156.65 1536.5 -10 -3135 156.70 1537.0 -10 -3136 156.75 1537.5 -10 -3137 156.80 1538.0 -10 -3138 156.85 1538.5 -10 -3139 156.90 1539.0 -10 -3140 156.95 1539.5 -10 -3141 157.00 1540.0 -10 -3142 157.05 1540.5 -10 -3143 157.10 1541.0 -10 -3144 157.15 1541.5 -10 -3145 157.20 1542.0 -10 -3146 157.25 1542.5 -10 -3147 157.30 1543.0 -10 -3148 157.35 1543.5 -10 -3149 157.40 1544.0 -10 -3150 157.45 1544.5 -10 -3151 157.50 1545.0 -10 -3152 157.55 1545.5 -10 -3153 157.60 1546.0 -10 -3154 157.65 1546.5 -10 -3155 157.70 1547.0 -10 -3156 157.75 1547.5 -10 -3157 157.80 1548.0 -10 -3158 157.85 1548.5 -10 -3159 157.90 1549.0 -10 -3160 157.95 1549.5 -10 -3161 158.00 1550.0 -10 -3162 158.05 1550.5 -10 -3163 158.10 1551.0 -10 -3164 158.15 1551.5 -10 -3165 158.20 1552.0 -10 -3166 158.25 1552.5 -10 -3167 158.30 1553.0 -10 -3168 158.35 1553.5 -10 -3169 158.40 1554.0 -10 -3170 158.45 1554.5 -10 -3171 158.50 1555.0 -10 -3172 158.55 1555.5 -10 -3173 158.60 1556.0 -10 -3174 158.65 1556.5 -10 -3175 158.70 1557.0 -10 -3176 158.75 1557.5 -10 -3177 158.80 1558.0 -10 -3178 158.85 1558.5 -10 -3179 158.90 1559.0 -10 -3180 158.95 1559.5 -10 -3181 159.00 1560.0 -10 -3182 159.05 1560.5 -10 -3183 159.10 1561.0 -10 -3184 159.15 1561.5 -10 -3185 159.20 1562.0 -10 -3186 159.25 1562.5 -10 -3187 159.30 1563.0 -10 -3188 159.35 1563.5 -10 -3189 159.40 1564.0 -10 -3190 159.45 1564.5 -10 -3191 159.50 1565.0 -10 -3192 159.55 1565.5 -10 -3193 159.60 1566.0 -10 -3194 159.65 1566.5 -10 -3195 159.70 1567.0 -10 -3196 159.75 1567.5 -10 -3197 159.80 1568.0 -10 -3198 159.85 1568.5 -10 -3199 159.90 1569.0 -10 -3200 159.95 1569.5 -10 -3201 160.00 1570.0 -10 -3202 160.05 1570.5 -10 -3203 160.10 1571.0 -10 -3204 160.15 1571.5 -10 -3205 160.20 1572.0 -10 -3206 160.25 1572.5 -10 -3207 160.30 1573.0 -10 -3208 160.35 1573.5 -10 -3209 160.40 1574.0 -10 -3210 160.45 1574.5 -10 -3211 160.50 1575.0 -10 -3212 160.55 1575.5 -10 -3213 160.60 1576.0 -10 -3214 160.65 1576.5 -10 -3215 160.70 1577.0 -10 -3216 160.75 1577.5 -10 -3217 160.80 1578.0 -10 -3218 160.85 1578.5 -10 -3219 160.90 1579.0 -10 -3220 160.95 1579.5 -10 -3221 161.00 1580.0 -10 -3222 161.05 1580.5 -10 -3223 161.10 1581.0 -10 -3224 161.15 1581.5 -10 -3225 161.20 1582.0 -10 -3226 161.25 1582.5 -10 -3227 161.30 1583.0 -10 -3228 161.35 1583.5 -10 -3229 161.40 1584.0 -10 -3230 161.45 1584.5 -10 -3231 161.50 1585.0 -10 -3232 161.55 1585.5 -10 -3233 161.60 1586.0 -10 -3234 161.65 1586.5 -10 -3235 161.70 1587.0 -10 -3236 161.75 1587.5 -10 -3237 161.80 1588.0 -10 -3238 161.85 1588.5 -10 -3239 161.90 1589.0 -10 -3240 161.95 1589.5 -10 -3241 162.00 1590.0 -10 -3242 162.05 1590.5 -10 -3243 162.10 1591.0 -10 -3244 162.15 1591.5 -10 -3245 162.20 1592.0 -10 -3246 162.25 1592.5 -10 -3247 162.30 1593.0 -10 -3248 162.35 1593.5 -10 -3249 162.40 1594.0 -10 -3250 162.45 1594.5 -10 -3251 162.50 1595.0 -10 -3252 162.55 1595.5 -10 -3253 162.60 1596.0 -10 -3254 162.65 1596.5 -10 -3255 162.70 1597.0 -10 -3256 162.75 1597.5 -10 -3257 162.80 1598.0 -10 -3258 162.85 1598.5 -10 -3259 162.90 1599.0 -10 -3260 162.95 1599.5 -10 -3261 163.00 1600.0 -10 -3262 163.05 1600.5 -10 -3263 163.10 1601.0 -10 -3264 163.15 1601.5 -10 -3265 163.20 1602.0 -10 -3266 163.25 1602.5 -10 -3267 163.30 1603.0 -10 -3268 163.35 1603.5 -10 -3269 163.40 1604.0 -10 -3270 163.45 1604.5 -10 -3271 163.50 1605.0 -10 -3272 163.55 1605.5 -10 -3273 163.60 1606.0 -10 -3274 163.65 1606.5 -10 -3275 163.70 1607.0 -10 -3276 163.75 1607.5 -10 -3277 163.80 1608.0 -10 -3278 163.85 1608.5 -10 -3279 163.90 1609.0 -10 -3280 163.95 1609.5 -10 -3281 164.00 1610.0 -10 -3282 164.05 1610.5 -10 -3283 164.10 1611.0 -10 -3284 164.15 1611.5 -10 -3285 164.20 1612.0 -10 -3286 164.25 1612.5 -10 -3287 164.30 1613.0 -10 -3288 164.35 1613.5 -10 -3289 164.40 1614.0 -10 -3290 164.45 1614.5 -10 -3291 164.50 1615.0 -10 -3292 164.55 1615.5 -10 -3293 164.60 1616.0 -10 -3294 164.65 1616.5 -10 -3295 164.70 1617.0 -10 -3296 164.75 1617.5 -10 -3297 164.80 1618.0 -10 -3298 164.85 1618.5 -10 -3299 164.90 1619.0 -10 -3300 164.95 1619.5 -10 -3301 165.00 1620.0 -10 -3302 165.05 1620.5 -10 -3303 165.10 1621.0 -10 -3304 165.15 1621.5 -10 -3305 165.20 1622.0 -10 -3306 165.25 1622.5 -10 -3307 165.30 1623.0 -10 -3308 165.35 1623.5 -10 -3309 165.40 1624.0 -10 -3310 165.45 1624.5 -10 -3311 165.50 1625.0 -10 -3312 165.55 1625.5 -10 -3313 165.60 1626.0 -10 -3314 165.65 1626.5 -10 -3315 165.70 1627.0 -10 -3316 165.75 1627.5 -10 -3317 165.80 1628.0 -10 -3318 165.85 1628.5 -10 -3319 165.90 1629.0 -10 -3320 165.95 1629.5 -10 -3321 166.00 1630.0 -10 -3322 166.05 1630.5 -10 -3323 166.10 1631.0 -10 -3324 166.15 1631.5 -10 -3325 166.20 1632.0 -10 -3326 166.25 1632.5 -10 -3327 166.30 1633.0 -10 -3328 166.35 1633.5 -10 -3329 166.40 1634.0 -10 -3330 166.45 1634.5 -10 -3331 166.50 1635.0 -10 -3332 166.55 1635.5 -10 -3333 166.60 1636.0 -10 -3334 166.65 1636.5 -10 -3335 166.70 1637.0 -10 -3336 166.75 1637.5 -10 -3337 166.80 1638.0 -10 -3338 166.85 1638.5 -10 -3339 166.90 1639.0 -10 -3340 166.95 1639.5 -10 -3341 167.00 1640.0 -10 -3342 167.05 1640.5 -10 -3343 167.10 1641.0 -10 -3344 167.15 1641.5 -10 -3345 167.20 1642.0 -10 -3346 167.25 1642.5 -10 -3347 167.30 1643.0 -10 -3348 167.35 1643.5 -10 -3349 167.40 1644.0 -10 -3350 167.45 1644.5 -10 -3351 167.50 1645.0 -10 -3352 167.55 1645.5 -10 -3353 167.60 1646.0 -10 -3354 167.65 1646.5 -10 -3355 167.70 1647.0 -10 -3356 167.75 1647.5 -10 -3357 167.80 1648.0 -10 -3358 167.85 1648.5 -10 -3359 167.90 1649.0 -10 -3360 167.95 1649.5 -10 -3361 168.00 1650.0 -10 -3362 168.05 1650.5 -10 -3363 168.10 1651.0 -10 -3364 168.15 1651.5 -10 -3365 168.20 1652.0 -10 -3366 168.25 1652.5 -10 -3367 168.30 1653.0 -10 -3368 168.35 1653.5 -10 -3369 168.40 1654.0 -10 -3370 168.45 1654.5 -10 -3371 168.50 1655.0 -10 -3372 168.55 1655.5 -10 -3373 168.60 1656.0 -10 -3374 168.65 1656.5 -10 -3375 168.70 1657.0 -10 -3376 168.75 1657.5 -10 -3377 168.80 1658.0 -10 -3378 168.85 1658.5 -10 -3379 168.90 1659.0 -10 -3380 168.95 1659.5 -10 -3381 169.00 1660.0 -10 -3382 169.05 1660.5 -10 -3383 169.10 1661.0 -10 -3384 169.15 1661.5 -10 -3385 169.20 1662.0 -10 -3386 169.25 1662.5 -10 -3387 169.30 1663.0 -10 -3388 169.35 1663.5 -10 -3389 169.40 1664.0 -10 -3390 169.45 1664.5 -10 -3391 169.50 1665.0 -10 -3392 169.55 1665.5 -10 -3393 169.60 1666.0 -10 -3394 169.65 1666.5 -10 -3395 169.70 1667.0 -10 -3396 169.75 1667.5 -10 -3397 169.80 1668.0 -10 -3398 169.85 1668.5 -10 -3399 169.90 1669.0 -10 -3400 169.95 1669.5 -10 -3401 170.00 1670.0 -10 -3402 170.05 1670.5 -10 -3403 170.10 1671.0 -10 -3404 170.15 1671.5 -10 -3405 170.20 1672.0 -10 -3406 170.25 1672.5 -10 -3407 170.30 1673.0 -10 -3408 170.35 1673.5 -10 -3409 170.40 1674.0 -10 -3410 170.45 1674.5 -10 -3411 170.50 1675.0 -10 -3412 170.55 1675.5 -10 -3413 170.60 1676.0 -10 -3414 170.65 1676.5 -10 -3415 170.70 1677.0 -10 -3416 170.75 1677.5 -10 -3417 170.80 1678.0 -10 -3418 170.85 1678.5 -10 -3419 170.90 1679.0 -10 -3420 170.95 1679.5 -10 -3421 171.00 1680.0 -10 -3422 171.05 1680.5 -10 -3423 171.10 1681.0 -10 -3424 171.15 1681.5 -10 -3425 171.20 1682.0 -10 -3426 171.25 1682.5 -10 -3427 171.30 1683.0 -10 -3428 171.35 1683.5 -10 -3429 171.40 1684.0 -10 -3430 171.45 1684.5 -10 -3431 171.50 1685.0 -10 -3432 171.55 1685.5 -10 -3433 171.60 1686.0 -10 -3434 171.65 1686.5 -10 -3435 171.70 1687.0 -10 -3436 171.75 1687.5 -10 -3437 171.80 1688.0 -10 -3438 171.85 1688.5 -10 -3439 171.90 1689.0 -10 -3440 171.95 1689.5 -10 -3441 172.00 1690.0 -10 -3442 172.05 1690.5 -10 -3443 172.10 1691.0 -10 -3444 172.15 1691.5 -10 -3445 172.20 1692.0 -10 -3446 172.25 1692.5 -10 -3447 172.30 1693.0 -10 -3448 172.35 1693.5 -10 -3449 172.40 1694.0 -10 -3450 172.45 1694.5 -10 -3451 172.50 1695.0 -10 -3452 172.55 1695.5 -10 -3453 172.60 1696.0 -10 -3454 172.65 1696.5 -10 -3455 172.70 1697.0 -10 -3456 172.75 1697.5 -10 -3457 172.80 1698.0 -10 -3458 172.85 1698.5 -10 -3459 172.90 1699.0 -10 -3460 172.95 1699.5 -10 -3461 173.00 1700.0 -10 -3462 173.05 1700.5 -10 -3463 173.10 1701.0 -10 -3464 173.15 1701.5 -10 -3465 173.20 1702.0 -10 -3466 173.25 1702.5 -10 -3467 173.30 1703.0 -10 -3468 173.35 1703.5 -10 -3469 173.40 1704.0 -10 -3470 173.45 1704.5 -10 -3471 173.50 1705.0 -10 -3472 173.55 1705.5 -10 -3473 173.60 1706.0 -10 -3474 173.65 1706.5 -10 -3475 173.70 1707.0 -10 -3476 173.75 1707.5 -10 -3477 173.80 1708.0 -10 -3478 173.85 1708.5 -10 -3479 173.90 1709.0 -10 -3480 173.95 1709.5 -10 -3481 174.00 1710.0 -10 -3482 174.05 1710.5 -10 -3483 174.10 1711.0 -10 -3484 174.15 1711.5 -10 -3485 174.20 1712.0 -10 -3486 174.25 1712.5 -10 -3487 174.30 1713.0 -10 -3488 174.35 1713.5 -10 -3489 174.40 1714.0 -10 -3490 174.45 1714.5 -10 -3491 174.50 1715.0 -10 -3492 174.55 1715.5 -10 -3493 174.60 1716.0 -10 -3494 174.65 1716.5 -10 -3495 174.70 1717.0 -10 -3496 174.75 1717.5 -10 -3497 174.80 1718.0 -10 -3498 174.85 1718.5 -10 -3499 174.90 1719.0 -10 -3500 174.95 1719.5 -10 -3501 175.00 1720.0 -10 -3502 175.05 1720.5 -10 -3503 175.10 1721.0 -10 -3504 175.15 1721.5 -10 -3505 175.20 1722.0 -10 -3506 175.25 1722.5 -10 -3507 175.30 1723.0 -10 -3508 175.35 1723.5 -10 -3509 175.40 1724.0 -10 -3510 175.45 1724.5 -10 -3511 175.50 1725.0 -10 -3512 175.55 1725.5 -10 -3513 175.60 1726.0 -10 -3514 175.65 1726.5 -10 -3515 175.70 1727.0 -10 -3516 175.75 1727.5 -10 -3517 175.80 1728.0 -10 -3518 175.85 1728.5 -10 -3519 175.90 1729.0 -10 -3520 175.95 1729.5 -10 -3521 176.00 1730.0 -10 -3522 176.05 1730.5 -10 -3523 176.10 1731.0 -10 -3524 176.15 1731.5 -10 -3525 176.20 1732.0 -10 -3526 176.25 1732.5 -10 -3527 176.30 1733.0 -10 -3528 176.35 1733.5 -10 -3529 176.40 1734.0 -10 -3530 176.45 1734.5 -10 -3531 176.50 1735.0 -10 -3532 176.55 1735.5 -10 -3533 176.60 1736.0 -10 -3534 176.65 1736.5 -10 -3535 176.70 1737.0 -10 -3536 176.75 1737.5 -10 -3537 176.80 1738.0 -10 -3538 176.85 1738.5 -10 -3539 176.90 1739.0 -10 -3540 176.95 1739.5 -10 -3541 177.00 1740.0 -10 -3542 177.05 1740.5 -10 -3543 177.10 1741.0 -10 -3544 177.15 1741.5 -10 -3545 177.20 1742.0 -10 -3546 177.25 1742.5 -10 -3547 177.30 1743.0 -10 -3548 177.35 1743.5 -10 -3549 177.40 1744.0 -10 -3550 177.45 1744.5 -10 -3551 177.50 1745.0 -10 -3552 177.55 1745.5 -10 -3553 177.60 1746.0 -10 -3554 177.65 1746.5 -10 -3555 177.70 1747.0 -10 -3556 177.75 1747.5 -10 -3557 177.80 1748.0 -10 -3558 177.85 1748.5 -10 -3559 177.90 1749.0 -10 -3560 177.95 1749.5 -10 -3561 178.00 1750.0 -10 -3562 178.05 1750.5 -10 -3563 178.10 1751.0 -10 -3564 178.15 1751.5 -10 -3565 178.20 1752.0 -10 -3566 178.25 1752.5 -10 -3567 178.30 1753.0 -10 -3568 178.35 1753.5 -10 -3569 178.40 1754.0 -10 -3570 178.45 1754.5 -10 -3571 178.50 1755.0 -10 -3572 178.55 1755.5 -10 -3573 178.60 1756.0 -10 -3574 178.65 1756.5 -10 -3575 178.70 1757.0 -10 -3576 178.75 1757.5 -10 -3577 178.80 1758.0 -10 -3578 178.85 1758.5 -10 -3579 178.90 1759.0 -10 -3580 178.95 1759.5 -10 -3581 179.00 1760.0 -10 -3582 179.05 1760.5 -10 -3583 179.10 1761.0 -10 -3584 179.15 1761.5 -10 -3585 179.20 1762.0 -10 -3586 179.25 1762.5 -10 -3587 179.30 1763.0 -10 -3588 179.35 1763.5 -10 -3589 179.40 1764.0 -10 -3590 179.45 1764.5 -10 -3591 179.50 1765.0 -10 -3592 179.55 1765.5 -10 -3593 179.60 1766.0 -10 -3594 179.65 1766.5 -10 -3595 179.70 1767.0 -10 -3596 179.75 1767.5 -10 -3597 179.80 1768.0 -10 -3598 179.85 1768.5 -10 -3599 179.90 1769.0 -10 -3600 179.95 1769.5 -10 -3601 180.00 1770.0 -10 -3602 180.05 1770.5 -10 -3603 180.10 1771.0 -10 -3604 180.15 1771.5 -10 -3605 180.20 1772.0 -10 -3606 180.25 1772.5 -10 -3607 180.30 1773.0 -10 -3608 180.35 1773.5 -10 -3609 180.40 1774.0 -10 -3610 180.45 1774.5 -10 -3611 180.50 1775.0 -10 -3612 180.55 1775.5 -10 -3613 180.60 1776.0 -10 -3614 180.65 1776.5 -10 -3615 180.70 1777.0 -10 -3616 180.75 1777.5 -10 -3617 180.80 1778.0 -10 -3618 180.85 1778.5 -10 -3619 180.90 1779.0 -10 -3620 180.95 1779.5 -10 -3621 181.00 1780.0 -10 -3622 181.05 1780.5 -10 -3623 181.10 1781.0 -10 -3624 181.15 1781.5 -10 -3625 181.20 1782.0 -10 -3626 181.25 1782.5 -10 -3627 181.30 1783.0 -10 -3628 181.35 1783.5 -10 -3629 181.40 1784.0 -10 -3630 181.45 1784.5 -10 -3631 181.50 1785.0 -10 -3632 181.55 1785.5 -10 -3633 181.60 1786.0 -10 -3634 181.65 1786.5 -10 -3635 181.70 1787.0 -10 -3636 181.75 1787.5 -10 -3637 181.80 1788.0 -10 -3638 181.85 1788.5 -10 -3639 181.90 1789.0 -10 -3640 181.95 1789.5 -10 -3641 182.00 1790.0 -10 -3642 182.05 1790.5 -10 -3643 182.10 1791.0 -10 -3644 182.15 1791.5 -10 -3645 182.20 1792.0 -10 -3646 182.25 1792.5 -10 -3647 182.30 1793.0 -10 -3648 182.35 1793.5 -10 -3649 182.40 1794.0 -10 -3650 182.45 1794.5 -10 -3651 182.50 1795.0 -10 -3652 182.55 1795.5 -10 -3653 182.60 1796.0 -10 -3654 182.65 1796.5 -10 -3655 182.70 1797.0 -10 -3656 182.75 1797.5 -10 -3657 182.80 1798.0 -10 -3658 182.85 1798.5 -10 -3659 182.90 1799.0 -10 -3660 182.95 1799.5 -10 -3661 183.00 1800.0 -10 -3662 183.05 1800.5 -10 -3663 183.10 1801.0 -10 -3664 183.15 1801.5 -10 -3665 183.20 1802.0 -10 -3666 183.25 1802.5 -10 -3667 183.30 1803.0 -10 -3668 183.35 1803.5 -10 -3669 183.40 1804.0 -10 -3670 183.45 1804.5 -10 -3671 183.50 1805.0 -10 -3672 183.55 1805.5 -10 -3673 183.60 1806.0 -10 -3674 183.65 1806.5 -10 -3675 183.70 1807.0 -10 -3676 183.75 1807.5 -10 -3677 183.80 1808.0 -10 -3678 183.85 1808.5 -10 -3679 183.90 1809.0 -10 -3680 183.95 1809.5 -10 -3681 184.00 1810.0 -10 -3682 184.05 1810.5 -10 -3683 184.10 1811.0 -10 -3684 184.15 1811.5 -10 -3685 184.20 1812.0 -10 -3686 184.25 1812.5 -10 -3687 184.30 1813.0 -10 -3688 184.35 1813.5 -10 -3689 184.40 1814.0 -10 -3690 184.45 1814.5 -10 -3691 184.50 1815.0 -10 -3692 184.55 1815.5 -10 -3693 184.60 1816.0 -10 -3694 184.65 1816.5 -10 -3695 184.70 1817.0 -10 -3696 184.75 1817.5 -10 -3697 184.80 1818.0 -10 -3698 184.85 1818.5 -10 -3699 184.90 1819.0 -10 -3700 184.95 1819.5 -10 -3701 185.00 1820.0 -10 -3702 185.05 1820.5 -10 -3703 185.10 1821.0 -10 -3704 185.15 1821.5 -10 -3705 185.20 1822.0 -10 -3706 185.25 1822.5 -10 -3707 185.30 1823.0 -10 -3708 185.35 1823.5 -10 -3709 185.40 1824.0 -10 -3710 185.45 1824.5 -10 -3711 185.50 1825.0 -10 -3712 185.55 1825.5 -10 -3713 185.60 1826.0 -10 -3714 185.65 1826.5 -10 -3715 185.70 1827.0 -10 -3716 185.75 1827.5 -10 -3717 185.80 1828.0 -10 -3718 185.85 1828.5 -10 -3719 185.90 1829.0 -10 -3720 185.95 1829.5 -10 -3721 186.00 1830.0 -10 -3722 186.05 1830.5 -10 -3723 186.10 1831.0 -10 -3724 186.15 1831.5 -10 -3725 186.20 1832.0 -10 -3726 186.25 1832.5 -10 -3727 186.30 1833.0 -10 -3728 186.35 1833.5 -10 -3729 186.40 1834.0 -10 -3730 186.45 1834.5 -10 -3731 186.50 1835.0 -10 -3732 186.55 1835.5 -10 -3733 186.60 1836.0 -10 -3734 186.65 1836.5 -10 -3735 186.70 1837.0 -10 -3736 186.75 1837.5 -10 -3737 186.80 1838.0 -10 -3738 186.85 1838.5 -10 -3739 186.90 1839.0 -10 -3740 186.95 1839.5 -10 -3741 187.00 1840.0 -10 -3742 187.05 1840.5 -10 -3743 187.10 1841.0 -10 -3744 187.15 1841.5 -10 -3745 187.20 1842.0 -10 -3746 187.25 1842.5 -10 -3747 187.30 1843.0 -10 -3748 187.35 1843.5 -10 -3749 187.40 1844.0 -10 -3750 187.45 1844.5 -10 -3751 187.50 1845.0 -10 -3752 187.55 1845.5 -10 -3753 187.60 1846.0 -10 -3754 187.65 1846.5 -10 -3755 187.70 1847.0 -10 -3756 187.75 1847.5 -10 -3757 187.80 1848.0 -10 -3758 187.85 1848.5 -10 -3759 187.90 1849.0 -10 -3760 187.95 1849.5 -10 -3761 188.00 1850.0 -10 -3762 188.05 1850.5 -10 -3763 188.10 1851.0 -10 -3764 188.15 1851.5 -10 -3765 188.20 1852.0 -10 -3766 188.25 1852.5 -10 -3767 188.30 1853.0 -10 -3768 188.35 1853.5 -10 -3769 188.40 1854.0 -10 -3770 188.45 1854.5 -10 -3771 188.50 1855.0 -10 -3772 188.55 1855.5 -10 -3773 188.60 1856.0 -10 -3774 188.65 1856.5 -10 -3775 188.70 1857.0 -10 -3776 188.75 1857.5 -10 -3777 188.80 1858.0 -10 -3778 188.85 1858.5 -10 -3779 188.90 1859.0 -10 -3780 188.95 1859.5 -10 -3781 189.00 1860.0 -10 -3782 189.05 1860.5 -10 -3783 189.10 1861.0 -10 -3784 189.15 1861.5 -10 -3785 189.20 1862.0 -10 -3786 189.25 1862.5 -10 -3787 189.30 1863.0 -10 -3788 189.35 1863.5 -10 -3789 189.40 1864.0 -10 -3790 189.45 1864.5 -10 -3791 189.50 1865.0 -10 -3792 189.55 1865.5 -10 -3793 189.60 1866.0 -10 -3794 189.65 1866.5 -10 -3795 189.70 1867.0 -10 -3796 189.75 1867.5 -10 -3797 189.80 1868.0 -10 -3798 189.85 1868.5 -10 -3799 189.90 1869.0 -10 -3800 189.95 1869.5 -10 -3801 190.00 1870.0 -10 -3802 190.05 1870.5 -10 -3803 190.10 1871.0 -10 -3804 190.15 1871.5 -10 -3805 190.20 1872.0 -10 -3806 190.25 1872.5 -10 -3807 190.30 1873.0 -10 -3808 190.35 1873.5 -10 -3809 190.40 1874.0 -10 -3810 190.45 1874.5 -10 -3811 190.50 1875.0 -10 -3812 190.55 1875.5 -10 -3813 190.60 1876.0 -10 -3814 190.65 1876.5 -10 -3815 190.70 1877.0 -10 -3816 190.75 1877.5 -10 -3817 190.80 1878.0 -10 -3818 190.85 1878.5 -10 -3819 190.90 1879.0 -10 -3820 190.95 1879.5 -10 -3821 191.00 1880.0 -10 -3822 191.05 1880.5 -10 -3823 191.10 1881.0 -10 -3824 191.15 1881.5 -10 -3825 191.20 1882.0 -10 -3826 191.25 1882.5 -10 -3827 191.30 1883.0 -10 -3828 191.35 1883.5 -10 -3829 191.40 1884.0 -10 -3830 191.45 1884.5 -10 -3831 191.50 1885.0 -10 -3832 191.55 1885.5 -10 -3833 191.60 1886.0 -10 -3834 191.65 1886.5 -10 -3835 191.70 1887.0 -10 -3836 191.75 1887.5 -10 -3837 191.80 1888.0 -10 -3838 191.85 1888.5 -10 -3839 191.90 1889.0 -10 -3840 191.95 1889.5 -10 -3841 192.00 1890.0 -10 -3842 192.05 1890.5 -10 -3843 192.10 1891.0 -10 -3844 192.15 1891.5 -10 -3845 192.20 1892.0 -10 -3846 192.25 1892.5 -10 -3847 192.30 1893.0 -10 -3848 192.35 1893.5 -10 -3849 192.40 1894.0 -10 -3850 192.45 1894.5 -10 -3851 192.50 1895.0 -10 -3852 192.55 1895.5 -10 -3853 192.60 1896.0 -10 -3854 192.65 1896.5 -10 -3855 192.70 1897.0 -10 -3856 192.75 1897.5 -10 -3857 192.80 1898.0 -10 -3858 192.85 1898.5 -10 -3859 192.90 1899.0 -10 -3860 192.95 1899.5 -10 -3861 193.00 1900.0 -10 -3862 193.05 1900.5 -10 -3863 193.10 1901.0 -10 -3864 193.15 1901.5 -10 -3865 193.20 1902.0 -10 -3866 193.25 1902.5 -10 -3867 193.30 1903.0 -10 -3868 193.35 1903.5 -10 -3869 193.40 1904.0 -10 -3870 193.45 1904.5 -10 -3871 193.50 1905.0 -10 -3872 193.55 1905.5 -10 -3873 193.60 1906.0 -10 -3874 193.65 1906.5 -10 -3875 193.70 1907.0 -10 -3876 193.75 1907.5 -10 -3877 193.80 1908.0 -10 -3878 193.85 1908.5 -10 -3879 193.90 1909.0 -10 -3880 193.95 1909.5 -10 -3881 194.00 1910.0 -10 -3882 194.05 1910.5 -10 -3883 194.10 1911.0 -10 -3884 194.15 1911.5 -10 -3885 194.20 1912.0 -10 -3886 194.25 1912.5 -10 -3887 194.30 1913.0 -10 -3888 194.35 1913.5 -10 -3889 194.40 1914.0 -10 -3890 194.45 1914.5 -10 -3891 194.50 1915.0 -10 -3892 194.55 1915.5 -10 -3893 194.60 1916.0 -10 -3894 194.65 1916.5 -10 -3895 194.70 1917.0 -10 -3896 194.75 1917.5 -10 -3897 194.80 1918.0 -10 -3898 194.85 1918.5 -10 -3899 194.90 1919.0 -10 -3900 194.95 1919.5 -10 -3901 195.00 1920.0 -10 -3902 195.05 1920.5 -10 -3903 195.10 1921.0 -10 -3904 195.15 1921.5 -10 -3905 195.20 1922.0 -10 -3906 195.25 1922.5 -10 -3907 195.30 1923.0 -10 -3908 195.35 1923.5 -10 -3909 195.40 1924.0 -10 -3910 195.45 1924.5 -10 -3911 195.50 1925.0 -10 -3912 195.55 1925.5 -10 -3913 195.60 1926.0 -10 -3914 195.65 1926.5 -10 -3915 195.70 1927.0 -10 -3916 195.75 1927.5 -10 -3917 195.80 1928.0 -10 -3918 195.85 1928.5 -10 -3919 195.90 1929.0 -10 -3920 195.95 1929.5 -10 -3921 196.00 1930.0 -10 -3922 196.05 1930.5 -10 -3923 196.10 1931.0 -10 -3924 196.15 1931.5 -10 -3925 196.20 1932.0 -10 -3926 196.25 1932.5 -10 -3927 196.30 1933.0 -10 -3928 196.35 1933.5 -10 -3929 196.40 1934.0 -10 -3930 196.45 1934.5 -10 -3931 196.50 1935.0 -10 -3932 196.55 1935.5 -10 -3933 196.60 1936.0 -10 -3934 196.65 1936.5 -10 -3935 196.70 1937.0 -10 -3936 196.75 1937.5 -10 -3937 196.80 1938.0 -10 -3938 196.85 1938.5 -10 -3939 196.90 1939.0 -10 -3940 196.95 1939.5 -10 -3941 197.00 1940.0 -10 -3942 197.05 1940.5 -10 -3943 197.10 1941.0 -10 -3944 197.15 1941.5 -10 -3945 197.20 1942.0 -10 -3946 197.25 1942.5 -10 -3947 197.30 1943.0 -10 -3948 197.35 1943.5 -10 -3949 197.40 1944.0 -10 -3950 197.45 1944.5 -10 -3951 197.50 1945.0 -10 -3952 197.55 1945.5 -10 -3953 197.60 1946.0 -10 -3954 197.65 1946.5 -10 -3955 197.70 1947.0 -10 -3956 197.75 1947.5 -10 -3957 197.80 1948.0 -10 -3958 197.85 1948.5 -10 -3959 197.90 1949.0 -10 -3960 197.95 1949.5 -10 -3961 198.00 1950.0 -10 -3962 198.05 1950.5 -10 -3963 198.10 1951.0 -10 -3964 198.15 1951.5 -10 -3965 198.20 1952.0 -10 -3966 198.25 1952.5 -10 -3967 198.30 1953.0 -10 -3968 198.35 1953.5 -10 -3969 198.40 1954.0 -10 -3970 198.45 1954.5 -10 -3971 198.50 1955.0 -10 -3972 198.55 1955.5 -10 -3973 198.60 1956.0 -10 -3974 198.65 1956.5 -10 -3975 198.70 1957.0 -10 -3976 198.75 1957.5 -10 -3977 198.80 1958.0 -10 -3978 198.85 1958.5 -10 -3979 198.90 1959.0 -10 -3980 198.95 1959.5 -10 -3981 199.00 1960.0 -10 -3982 199.05 1960.5 -10 -3983 199.10 1961.0 -10 -3984 199.15 1961.5 -10 -3985 199.20 1962.0 -10 -3986 199.25 1962.5 -10 -3987 199.30 1963.0 -10 -3988 199.35 1963.5 -10 -3989 199.40 1964.0 -10 -3990 199.45 1964.5 -10 -3991 199.50 1965.0 -10 -3992 199.55 1965.5 -10 -3993 199.60 1966.0 -10 -3994 199.65 1966.5 -10 -3995 199.70 1967.0 -10 -3996 199.75 1967.5 -10 -3997 199.80 1968.0 -10 -3998 199.85 1968.5 -10 -3999 199.90 1969.0 -10 -4000 199.95 1969.5 -10 -4001 200.00 1970.0 -10 diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.min b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.min deleted file mode 100644 index c8c28cd7a1..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.min +++ /dev/null @@ -1,41 +0,0 @@ -######################################################### -# Example how to run this file: -# -# 1) Choose a ransom seed (in this case 141203) -# (or use `bash -c 'echo $RANDOM'`) -# -# 2) Then, from the shell, invoke LAMMPS to collapse the polymer: -# -# lmp_ubuntu_parallel -i run.in -var seed 141203 -# -######################################################### -# eg: -# time mpirun -np 2 lmp_ubuntu_parallel -i run.in.min -######################################################### - -# -- Init Section -- - -include system.in.init - -# -- Atom Definition Section -- - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run Section -- - -dump 1 all custom 10000 traj_min.lammpstrj id mol type x y z ix iy iz -thermo_style custom step pe etotal vol epair ebond eangle edihed -thermo_modify norm no #(report total energy not energy / num_atoms) -thermo 100 #(time interval for printing out "thermo" data) - -# Now minimize the system: - -min_style quickmin -min_modify dmax 0.05 -minimize 1.0e-7 1.0e-8 30000 100000000 - -write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage1 b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage1 deleted file mode 100644 index bf129df04f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage1 +++ /dev/null @@ -1,110 +0,0 @@ -# PREREQUISITES: You must run LAMMPS using "run.in.min" beforehand. -# (This will create the "system_after_min0.data" file needed below.) -######################################################### -# Run using: -# -# lmp_ubuntu_parallel -i run.in.stage1 -# -######################################################### -# GPUs: -# To enable gpu acceleration, make sure settings.in.init includes this line: -# package gpu force/neigh 0 0 1.0 (make sure it is not commented out.) -# ...and replace "lj/cut" in the "settings.in.init" and "settings.in.settings" -# files with "lj/cut/gpu" - - -# -- Init Section -- - -include system.in.init - -# -- Atom Definition Section -- - -#read_data system.data -read_data system_after_min.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run Section -- - -# DON'T MINIMIZE FIRST UNLESS YOU CHOOSE THE CORRECT INITIAL KbondC FORMULA -#thermo_style custom step pe etotal vol epair ebond eangle edihed -#thermo_modify norm no #(report total energy not energy / num_atoms) -#thermo 20 #(time interval for printing out "thermo" data) -#min_style sd -#min_modify dmax 0.05 -#minimize 1.0e-7 1.0e-8 20000 1000000 -#write_data system_after_min_t=0.data - - -mass * 1.0 -timestep 0.005 # "dt" -dump 1 all custom 25000 traj_stage1.lammpstrj id mol type x y z ix iy iz -reset_timestep 0 - - -# --- run the simulation --- - - -# set the velocity to zero -velocity all create 0.0 123456 - -# To use Langevin dynamics in LAMMPS you need both "fix langevin" and "fix nve" -# (See http://lammps.sandia.gov/doc/fix_langevin.html for details.) - -# Tstart Tstop tdamp randomseed - -fix fxlan all langevin 1.0 1.0 10.0 123456 - -# pstart pstop pdamp(time-units, 2000 iters usually) -#fix fxnph all nph x -0.000 -0.000 1.0 -fix fxnve all nve -# (See http://lammps.sandia.gov/doc/fix_langevin.html) - -fix fxcenter all recenter 0.0 0.0 0.0 - -thermo_style custom step temp pe etotal press vol epair ebond eangle edihed -thermo_modify norm no #(report total energy not energy / num_atoms) -thermo 1000 #(time interval for printing out "thermo" data) - -#balance dynamic x 20 1.0 -out tmp.balance -#balance x uniform - - -variable nloop1 loop 300 - - label loop1 - - print "############### LOOP ${nloop1} ###############" - - # Now, change the bond-strength between condensin monomers. - # From the Naumova et al Science 2013 paper (supp materials) - # "Two-stage model: linear compaction + axial compression" - # "First, random consecutive loops with L=100 monomers (see above) were - # introduced, and anchors of neighboring loops were brought together - # using harmonic springs with a potential U = k * (r – r0)2; r0=0.5. - # To avoid abrupt motion of the loop anchors, the force was gradually - # turned on over the first 300000 timesteps, with k linearly increasing - # in time from 0 to 10 kT." - # Do this by changing the parameters in the force-field for these - # bonds. - # - # Formula used for "bond_style harmonic": - # Ubond(r) = k*(r-r0)^2 - # bondType style - #bond_coeff 1 harmonic 0.1 0.5 - - variable time equal step - variable KbondC equal $((v_time+1)*(10.0/300000.0)) - print "timestep = ${time}, KbondC = ${KbondC}" file KbondC_vs_time.dat - - #bond_coeff 1 harmonic ${KbondC} 0.5 - bond_coeff 1 harmonic ${KbondC} 0.5 - run 1000 - - next nloop1 - jump SELF loop1 - -write_data system_after_stage1.data - diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage2 b/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage2 deleted file mode 100644 index e429fc8825..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage2 +++ /dev/null @@ -1,90 +0,0 @@ -# PREREQUISITES: You must run LAMMPS using "run.in.stage1" beforehand. -# (This will create the "system_after_stage1.data" file.) -######################################################### -# Run using: -# -# lmp_ubuntu_parallel -i run.in.stage2 -# -######################################################### -# eg: -# time mpirun -np 2 lmp_ubuntu_parallel -i run.in -var seed 1 -######################################################### -# GPUs: -# To enable gpu acceleration, make sure settings.in.init includes this line: -# package gpu force/neigh 0 0 1.0 (make sure it is not commented out.) -# ...and replace "lj/cut" in the "settings.in.init" and "settings.in.settings" -# files with "lj/cut/gpu" - - -# -- Init Section -- - -include system.in.init - -# -- Atom Definition Section -- - -#read_data system.data -read_data system_after_stage1.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run Section -- - - -mass * 1.0 -timestep 0.005 # "dt" -dump 1 all custom 50000 traj_stage2.lammpstrj id mol type x y z ix iy iz -reset_timestep 300000 - - -# --- run the simulation --- - -# set the velocity to zero -velocity all create 0.0 123456 - -# To use Langevin dynamics in LAMMPS you need both "fix langevin" and "fix nve" -# (See http://lammps.sandia.gov/doc/fix_langevin.html for details.) - -# Tstart Tstop tdamp randomseed - -fix fxlan all langevin 1.0 1.0 10.0 123456 - -# pstart pstop pdamp(time-units, 2000 iters usually) -fix fxnve all nve -# (See http://lammps.sandia.gov/doc/fix_langevin.html) - -fix fxcenter all recenter 0.0 0.0 0.0 - -thermo_style custom step temp pe etotal press vol epair ebond eangle edihed -thermo_modify norm no #(report total energy not energy / num_atoms) -thermo 1000 #(time interval for printing out "thermo" data) - -#balance dynamic x 20 1.0 -out tmp.balance -#balance x uniform - -# atomTypes pairStyle epsilon sigma rcutoff -# 10nm-fiber -#pair_coeff 1 1 lj/cut 1.0 1.0 2.5 -#pair_coeff 2 2 lj/cut 1.0 1.0 2.5 -# 30nm fiber (4.25^(1/3)=1.6198059006387417) -pair_coeff 1 1 lj/cut 1.0 1.6198059006387417 4.049514751596854 -pair_coeff 2 2 lj/cut 1.0 1.6198059006387417 4.049514751596854 - - -# During stage 2, add attractive forces between all pairs of non-consecutive -# condensin anchors. These forces are stored in the table file below: -# bondType bondStyle filename label -bond_coeff 2 table table_bonds_stage2.dat STAGE2 - -# During stage 2, I assume the stage-1 bonds remain in place -# (They have length 0.5. -# After 300000 timesteps during stage 1, the "k" value should be 10.0.) - -# bondType bondStyle k r0 -bond_coeff 1 harmonic 10.0 0.5 - -timestep 0.005 -run 1700000 - -write_data system_after_stage2.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README.TXT deleted file mode 100644 index 09abbc4b2a..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README.TXT +++ /dev/null @@ -1,70 +0,0 @@ - This example shows how to put a protein (inclusion) in a - lipid bilayer mixture composed of two different lipids (DPPC and DLPC). - The DPPC lipid model is described here: - G. Brannigan, P.F. Philips, and F.L.H. Brown, - Physical Review E, Vol 72, 011915 (2005) - (The DLPC model is a truncated version of DPPC. Modifications discussed below.) - The protein model is described here: - G. Bellesia, AI Jewett, and J-E Shea, - Protein Science, Vol19 141-154 (2010) - ---- PREREQUISITES: --- - -1) This example requires the "dihedral_style fourier", which is currently -in the USER-MISC package. Build LAMMPS with this package enabled using - make yes-user-misc -before compiling LAMMPS. -(See http://lammps.sandia.gov/doc/Section_start.html#start_3 for details.) - -2) This example may require additional features to be added to LAMMPS. -If LAMMPS complains about an "Invalid pair_style", then - a) download the "additional_lammps_code" from - http://moltemplate.org (upper-left corner menu) - b) unpack it - c) copy the .cpp and .h files to the src folding of your lammps installation. - d) (re)compile LAMMPS. - - ------ Details -------- - -This example contains a coarse-grained model of a 4-helix bundle protein -inserted into a lipid bilayer (made from a mixture of DPPC and DLPC). - - -- Protein Model: -- - -The coarse-grained protein is described in: - G. Bellesia, AI Jewett, and J-E Shea, Protein Science, Vol19 141-154 (2010) -Here we use the "AUF2" model described in that paper. -(The hydrophobic beads face outwards.) - - -- Memebrane Model: -- - -The DPPC lipid bilayer described in: - G. Brannigan, P.F. Philips, and F.L.H. Brown, - Physical Review E, Vol 72, 011915 (2005) -and: - M.C. Watson, E.S. Penev, P.M. Welch, and F.L.H. Brown - J. Chem. Phys. 135, 244701 (2011) - -As in Watson(JCP 2011), rigid bond-length constraints -have been replaced by harmonic bonds. - -A truncated version of this lipid (named "DLPC") has also been added. -The bending stiffness of each lipid has been increased to compensate -for the additional disorder resulting from mixing two different types -of lipids together. (Otherwise pores appear.) -Unlike the original "DPPC" molecule model, the new "DPPC" and "DLPC" models -have not been carefully parameterized to reproduce the correct behavior in -a lipid bilayer mixture. - - -------------- - -Instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step2) -README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_WARNING.TXT b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_WARNING.TXT deleted file mode 100644 index 8864c3e047..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_WARNING.TXT +++ /dev/null @@ -1,10 +0,0 @@ -WARNING: - - This is not a realistic simulation of proteins in a lipid membrane. This -example was only intented to be a technical demonstration to show how to -combine totally different kinds of coarse-grained molecules (with different -kinds of force-fields) together in the same simulation in LAMMPS. Tuning the -force-field parameters to get realistic results was not the goal. I did -not take the extra time to do this. If you have suggestions for changes, -please email me (jewett.aij at gmail dot com). - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_run.sh b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_run.sh deleted file mode 100755 index d7ea305695..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_run.sh +++ /dev/null @@ -1,33 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The "run.in.nvt" file is a LAMMPS input script containing -# references to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data, and table_int.dat -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # Run a simulation at constant pressure (tension) - -#or - -lmp_mpi -i run.in.nvt # Run a simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation are ignored when beginning the simulation at constant volume. -# This can be fixed. Read "run.in.nvt" for equilibration instructions.) - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#or -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_setup.sh b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_setup.sh deleted file mode 100755 index abf2fce64b..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # The "table_int.dat" file contains tabular data for the lipid INT-INT atom - # 1/r^2 interaction. We need it too. (This slows down the simulation by x2, - # so I might look for a way to get rid of it later.) - cp -f table_int.dat ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/4HelixOrig+Lipid2005_t=1290ps_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/4HelixOrig+Lipid2005_t=1290ps_LR.jpg deleted file mode 100644 index 246ee5462527237be5bf22d1e13febf7624317fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85276 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

    )-| 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 Iz5f4A04XSI@Bjb+ diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_LR.jpg deleted file mode 100644 index fdbb446eed5f2300383813f17bc06bc8dba3ca97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71073 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_no_pbc_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_no_pbc_LR.jpg deleted file mode 100644 index 142f3f706f7d7e7b84895612d02cadc04deb9ad7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51659 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

  1. *x77b1uj=!QCj}>kt3)!y$~&nt4D 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_top_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_top_LR.jpg deleted file mode 100644 index 5d4b15b2915334c23729930bd2680b5a817a2413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67085 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

    HD)K~cr;4JsfkF6GQN23AU1tT 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=105tau_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=105tau_LR.jpg deleted file mode 100644 index a1aa5bd85509a7d43eebe63614b0562ebbbf412c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14944 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 Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index 1470af4bc1..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,97 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 27 !NATOM - 1 1 2 2 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 1 1 0.000000 1.0000 0 - 5 1 2 2 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 3 3 0.000000 1.0000 0 - 8 1 3 3 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 2 2 0.000000 1.0000 0 - 11 1 1 1 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 2 2 0.000000 1.0000 0 - 15 1 3 3 0.000000 1.0000 0 - 16 1 3 3 0.000000 1.0000 0 - 17 1 3 3 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 1 1 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 2 2 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 1 1 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 2 2 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - - 26 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 17 - 17 18 18 19 19 20 20 21 - 21 22 22 23 23 24 24 25 - 25 26 26 27 - - 25 !NTHETA: angles - 13 14 15 7 8 9 6 7 8 - 16 17 18 15 16 17 2 3 4 - 4 5 6 9 10 11 11 12 13 - 14 15 16 1 2 3 3 4 5 - 10 11 12 12 13 14 25 26 27 - 5 6 7 8 9 10 17 18 19 - 18 19 20 22 23 24 21 22 23 - 19 20 21 20 21 22 23 24 25 - 24 25 26 - - 43 !NPHI: dihedrals - 1 2 3 4 1 2 3 4 - 2 3 4 5 2 3 4 5 - 3 4 5 6 3 4 5 6 - 4 5 6 7 4 5 6 7 - 5 6 7 8 6 7 8 9 - 7 8 9 10 8 9 10 11 - 8 9 10 11 9 10 11 12 - 9 10 11 12 10 11 12 13 - 10 11 12 13 11 12 13 14 - 11 12 13 14 12 13 14 15 - 12 13 14 15 13 14 15 16 - 14 15 16 17 15 16 17 18 - 15 16 17 18 16 17 18 19 - 16 17 18 19 17 18 19 20 - 17 18 19 20 18 19 20 21 - 18 19 20 21 19 20 21 22 - 19 20 21 22 20 21 22 23 - 20 21 22 23 21 22 23 24 - 21 22 23 24 22 23 24 25 - 22 23 24 25 23 24 25 26 - 23 24 25 26 24 25 26 27 - 24 25 26 27 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=0tau_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=0tau_LR.jpg deleted file mode 100644 index 152fa88ff927375764035bd9297b1dbf701a8027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7690 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 Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/4HelixBundle_t=0.jpg b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/4HelixBundle_t=0.jpg deleted file mode 100644 index b4d919f9e692fa087f36eb561782ea9b15da95a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38619 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 qcJ1b-Cf?lgwP$x`9lz;%%`vU*zR84*#C~Thi zWRmF1NC|U>4ICycn{#)iFZmkwce~ZQy!)?SSoQn=Op9^8@YYq$r!W6dorosiW?4#elM3%=VZ@Kj4cjHR?TV_}7xDT{1)-{|b z@t|ai+@99-c@`%Ee9LaP{b%@lL8i>N&b#eHz)apPm8abO>d$SD_G{Yf)TCGTx_;In zwvc5PoBK}$2;SRNd}fb_-LbX%-#ppg_GZ?*GSQjBi5vVS4rdg`R6T#||K-;eeXYlf z^QMJI?0os+<<7=S%MV?<-5I`f`=Cb%N$+_F*LXY0RXK+Vd_1_d0 zi<>G>rZh}dDLy`<;2cnB_R<+4(U*0$iLAeSGq~~J z&%@r@Cm8;$7nNa=`8-edhNi;T`l$DFI^O#9y%xHa`%T`_d9B5SC2Lg@mNXw^DePKg z{r$J0!Yk`Jv#%Ywr+h=@bm{Tlvdir~#g3$JA-UF*-RJC(J!ujjhtfu|?rdKj zYsI+g=56kre^?pkTr#+FWPk4rj#AIV9?I{S@62EStIpIgBl|^jaq^i6C$R-qoe$YB z%wN9O<;~6;eP1`+O8>@kL2Q2TyT_YLp1-qR&AVcgfk^O)mHQ9Yy*+W|f?k!=r{8(I z(=v^6m;7g_SSGSa#`F1vshScN|Lpv;7U|u2>Y2N5!sDl$$4_zfvHH$qTk5%^qN!)b z!qgq#R_1xV46}+p6l7%U9yP)6eSa47;xBl{3(=~sx|m#kvt@U^!djcAsyZt=d}j%N zHHB61Bkyms=>2!+@5^DiT{_|9&nKBbUqvOeCQp_7HTRwRsMo-PR3}&*q6dwDq!?b;j@Z zYM$KGg1AXlkN(Z(XT5!M2g}bB{-1O`A6D3~@}yr0S-)W0)w>>_b1NBK->g~w^eAK7 z#aUssU-w%{X9WcqA6V&idiSO;F6?WAZ#zwL_v8|tIbH4S=A5>-eeKL0nx#|a*6YT- zw7c*8pJ8d)o!FAApFX@klc*W^Wr3~Lu0MBP&%X4iW&5>71@jo!zCR@T@p_HNOSVOm z)?1wM?qrvAKe)%Qo`?BIV*tzzC2>$&GUw?7j(Bd>b8w3lz2W2MWI zy^5CpcNr=ZJ#8kvurF)a7Xpf{9-} zofv+<{Fi^E>M#4HhM!04S8$y?RRUS_&vxpup6lxmjsWC7g_?%J;`O^aKW z)Eo6L5MkN8aiZdV)4N-D-#Vn*Q);Q}@}Gghlc6q4p>C`7%enDMH+&yRH60Y~-1hR~ zRIW__?<@PZF3i$U-pQ5AKIb`0;hbxYWf!K!uDc{C(OBTKddUQF)juuM#rsam{&HXN zYx3);FVV^6C!U|1@p57xn}Y~@@Y-;T?YmRFTh~7EY`1K&mwh6$^w>3~NejOyG{>!4 zZ^u`9S!fG$mECK@{rAJfV?Rkm^+#V6S+`|P`hKrzO9VI%cop|_ZMZ^kC{hzN>OF;N zYVVb*uDeUt6zBbF3NCp2K}v7W>vjp|3)L&;G004EkeRh|*6t%~|1-q;O*l8dvP@et z(pz^^q2iOmR*UBaew;7e7+xLJI_CGw@Okzntsl$97q?$On;!OC_0F_C;qOh>F1Wqz z*j$!ZvhE58w`MTe{agH}AKl#)N&_<-^ZyowsOFt*7nlx;?qcx2hy|MP9pnwDH=u823{ftoy#^ zy0K_aH<@>S-ba7&)U+$F7VUF=^?m#LlNkqI@-FIL5tSRh!>rnsxEK`-iIgkA&%$ zsX5+~c1ZVa*cKzp6{xUsX|+sM{mUP3r@wvPD(t@?O8Q5ptE}Fp#izBtGW_aK{ueiO zecWsNdoL!^b_ zWw}?^<~z?8YquT|55Kg2x=r}u(EIbW> zRe91P4+g$xyIZ&X(#Sn_Gqct}L?*WHs+{&YzH?Sn7#{66{VIQMm3rfS7IR+4vfdrD zFY<2N%Iu+bGBxVZ*&QpA&sVcAKl@TeRpv`+%EN?`xGK4>peZcn`>Zc!+|-qNdh1=l z-$R}{x86QX(2KtD*Gc$b&|Ws{NfRnx?ueega(l(8iL2J-pQ=2tSz@0_#)}F~Rr@j5Eo2;*#-)H4_;LfpiQMzB2775sC>A8D` z*?r<)Xt((DpM>Zwo8?znaEVyA@<=g*rKw!rGIH|R8-3Bo?|n&KlRi2{XnI9@(V46#$s;fS<_6i zADucB(!_o4!H)XNpVnTveqPt^Xu0s&iY=C|dHx$yOw6WjUt93x++0obh;HvS9zE}; zKDFRbSkgaRq3@@BYm_bfuGZ_4TeDS{?(9|+T+Z0`q?)x#wf@3i{wmkRYZ{6BO|Lr% zHBRz;8{I8E-RiCM!{oM!G9P53tftlTe6aW0QE}sQyH=E4uAJr37pFciwM%_9KmX%5 z{kvLga_=p?y4^iG?e2=@3(O`=S$f^(hzd{g(=hktTfNr2bA9aT)pKrlmd)zwrMmw< zboI4vTX)n?-9q`wm&Vr()gjy#wHu>-jn^Le*vEV6>6{q5+>$@n-*tLT{nV{F^WvOTWYJSWCGc3rpP^7$SZGiYQklO2P+yQ^`)jO)cC|n=`BsO-6v$_ytFPZitDAq ziZ6fPJYeZ7?wPbSqpIkef@kKFc>#{AW5Q3fE^c`Ib@wLKGts;K?t5*&F|j1~z@#Z( z3$jH^?nQ2VXwBqwX@O9H=liJq{|qa_XJ1xg5;K^RJgZ&r*W*V^c08Kew8-<>^2&S9 zb$%r0FWmf^`#-~s>GN~`+?m`TwLa>3K^519Q@^HFaLO&)_Sbp!v`pGCAKIuUkb5%-Jj_2q)EWx<&)CTy4d#@UhlC#l=SV{ zZmIg_`;4i_AH8Gmh|a0hJDFjfb?LLzXJ*9+&8jGW){1kI3XOACKah|d4`@J@P_YI3Ece*Fin$UMd>h-qQZ$q0aO;Yxn zu6exjMiEEh^w|p5q7OK{&raeKv+7^Qp(4}dTAW{EBl>RMP4C*U)tOhnrHG0>zr_}Q z!CG8GeXY98oKlr~!v)Hb;oIfiWD8yRZko2%B|Y=XY-0*}-F3+GpZxj<*4IRLZc1Ih zaEZw0rllWP)87hA=6}nz=lIpT>6c$Hd0H>oD z0|U!dy9+^ci+=JJ-ih|^dKJf~Fd-nQh{LX3A!(QHmg^dT-?yhO4}8hKEX$YU zM)sprt0^!Q+PxeN^}ffp zy|JMoi{&znpGEGx8eKj)q-^^7cbQdTr^_#geTkLe@?tpWpYr-)@^QnO8x9?_d1#;ya-UJF@+)oUSc>yyDt@yO~UM>(N_dRcp?!4Qx zmo1#Lt!Ihy$!*7@+EPwM*hMjX{Tg^YWvTn6?bGMwS$mf`cVuqiS(zQ+;qhJNx^YcF ze&oHiht)2;?z$`{x8mED`MW-K{`QnOU~ebHU^{8zjmgnk?KT~eH@)SS{f$rJx^6DL z^woFm;Jfo;Znu2DQ}^T}gXqdEE$ssm%qkx&m?apv{zY%)3b|FV-s{XR;ips9FiqtV zaB~!uzxT#JS~hr_YN?5zPpSTt`5z{~{9?b>uev{^ShVQg&h-0t?upm^wENHSb&cw| zUrhdI1Hbe}d`Sw_+&(+1LeWEMo9yljR`V-OMZEpy`DAAcU154R-Cg8}n~)#Vv<;IA z=h+3+J9u1sci+XkohRVOvM+nj&QIMU^Y`~XYqp;4E6+DiSFkOuH=l7RC zE&t=?vF@7Lt*Bg$Oid>Nrl2W3ER8o91NOK6XW+h7eb{YMo$TE2dD~wf$US}b?gPf! zOn;7C<##5N!h+`cpDFT}n6*k~$&+7mWkrsyc*zwswQ~o2AqVsPe-?lAwEg{N?wnmI zGP`6u_pG*iha&{T3hY!F>bd&7{&v24W%X-4bYKUn#fwrOJt-lO=6;Ps!AX&d4Y{E)aQAWu>C; zYL?GUj4Dljfu8%8&3>wJaK{X3p}-t3pZYzOQF}wfoDZLQ;kDCyew~vzqhQD(@6Ho? zE0+9caNvKXwfm*E*E)TpygZ3OBkn$(n!9#8YM87rr!Xl~l zv`F-imwe~*6`yKbqaLqMe*P!PbJ^|N>fU_cqs!jC)SSKg-CUDROU)Scw5&FG1+{!v zbZ3@(ZueCn+c&@Ro^QzN){8|FTeiFu+npGGQdYKU3Onl|%b=a_8wyw})`VSq?{9MF zjGb4bT>jbScZ@5m)GnRe>YDX5Bc^oMIq@eudKT90u>Yc!Qn+BvXZhke+k2mS3xAl9 zd$is^f06C(*zLTBQ-$Ak9Ak_2l-;-W@7>rlc~@mm*RDOI!#8!M-F&alS-DSAcT4t* zwmQvgyztrUiTbO_ue7#i`zC}ekF7kjVv?uYwv(^dbd);Jtt|a|zx@5DUvjdAt1fMe z|1tF|YxC8~0j1XimU0BXeq;S?->$B-#n-1BXJ06bKKd)_n$WVf8|F+}lD^G}@%Z}s ztc`NA`_r#2zY@M<`gsAJ?P(j1l&`g_6$*N?@~BFJ%@Uz$x9oNVMl$p$D~1M7oHS=k zEptnOrQ4GGD>eU}^W8C*+biCj>DL8^E316G4Wc|Ex=vkvwsX$k>oPAH1o&^HZ)(+g z=-4WEo6E+!TK9Oj=#njmb(b&IU8v0IA=kjbsPSMZdvNiF0ppgiu-+MbG720zWi%& zYr+h%?)2jts_xpgUstNHNtf4>^7m)xH>^D8;#b*=x7$n{Y&JnzP~TpaY7UUu{*I7N0!-u!D75vj;;}$l-;1y1z_`erKWM=|62l zt>c4hYj^LCEWY*o(5wl!&)-scSfIzKu<(iCyh-ki$rBt8KDIb0nrpFS+HQH)0zEg#XzxS`;t-U^S(_V9Fg)BY z;(zyzP_4C`b;PM>bDMt2cm*x3vs~@CdDef1$QYe`HR&}mNl_=9gbh`_6h2=P<4|Yb z=6OJ&I;`x`&;D5~IeZo$lb@z6yY%LI_;;OD?Z}H&pTst0e!J!L=#FB7cgMq%IdeYo ze^hTi|B5x|DpO!#RqeTL-LLm;P0cT?TQp^9QZ97XF;x2av8%qjqH?X9moMI}de`n| zdqwV&uNuxlT@$_;e~*rg2xGJ;U-3X;)^^h$r5?`N!ACW7HC0pH8Te!VYG3*CE!jfz z=+QYDyIvhvS!5!SWl{aSqP5&TVg8x_4AZY|x79BGbm^8q`_=^WdwCP${xiH<@-`;o zqseO_fy+!rovFu}*k^6qmt?c)dAz@$a8Ckb{BD^e3l==zxZ0-D?m6$#7kxj&lP=^Q zn>xR`Z>GUPMVpV&ckZ6sk=Z876vydQ<*2lH@2Yz%ZUvp&7A6$38?pgCnG*q)rvMuDUoga{|_R!&Cl;WnRryjibKCdCK zC#>*y@wxdfON!rBFsn2ao7+asSBF&1&8|^f<+>}cZFT*+#Bb-RidN0@ zhKi1p4D8NY9`N7iUp(t_x#?b|({j>J9+;+n%*`!{UzuL!ocbnOc)`M#YYpaGX8ex) z&MxH@x5LA}^19(Km6R__R4pye=6`Ltuxp#$_R9k6E?NaGpM2@JXIRbh;6s;xeKJ1D zA|G}Bs>o!2pI>W(TVD4(yt%Gv%F>D)Xv|@06NsLlFL&*D&hGn}J6CQG7W$l+qxh76 zs=vwW&ZwZe&R~`Q4Et&*HGg_<@T9zB9kXJN9QfR8(IF_{@w3clhw@qJ##N! zv0uN|NobvL$=OG_vjg4BSg&3CwfIceheJ0D)ww+XGpv#KvR!#0@cVy;wUOG>`t)k7 zvTFOcE!cQFb){G4^GDBrIKE>3`ux}R#~EujzLlPsGc|p(YVpIBK|BlAO*$21p?N%K z#gg>bKf|^b?_U>vvY$shzU0e7&L=CbG;X^PxGbvRgl5Rg6wT-C3uGtQHLHI-o87Oo zY?rWJ*~M>e^$as~_e@uV>jY&G;g{r&3_q(a1cPOx+I4Z(&3b zS0xwwg`TvndoSEE-ffg4ZtKpw%#=ssba%-vH?L@OlO~&~J0=)joAOm)oyCegJU~# zbtJx3=S*AbQOTG;rGaUV@+9MzFN|NXhSq9UyUo(9x=|(TAz5s1v|l(#w>{cp=gH6O zgv4IIvRRpR@;}3+r2&^}z4$aay{x<5cm}NhUMszRZTL+N)>bbk)s^uTCKZRRm+Rl`niYha}qbazx&f1RrPIL{lA!l(~iGiEj9E0n`diF4fWnmP_X)a zH(sXyDc1qHgvZUNHcy-*)j8*Nk)M9fiyCd2T`#BTtzEHi<$s30{|w7IcTHL9V093b zN~gA5optN*Lfx(%+1y*CeH`aaJz1i%!{MZt@ZGEfzgM!%&tf(YaX+TsmA?M-ybHU- zOA2>qa|M_0o@35cry1K*c5U+MWEK6N{qiMp>z{YMmlafxyt=eZ>8bX)S*=RXtDU*~ zmI)NtY_mEL5h?5FbwKm+lIJQRwuTqpur&5<+ZW3J$#hr8a=oSbBHKzY?)ZB~Z|T-` z_qOR39@KQ;Jt244UTc4l;~&?QH{Xw}!} z&i+{{qyOvrwA?Qxb5{Sl64je|X~FHe znZ*__f;_@%H%9)pn{zelVBmj-(x@dHg@QXB=9@^oQ4wxhw={VLU-9M1$Fn}4cRTT6 zruw#BlGRm9U%mC_I-M7F{OB&`cS};-v+b?hU$DO_u$~y!6t=2cQnNq*WtL6}+s#}X zmW9d;j9-{V7r)eH&bd|1GiA>&^}EZ>SZ*#=;7O>RUHL>ouJXwo;TLRki?4VUW@d@c z`21c&aoH_auR@mxDvT#pKCtEmmFn($vvzL4xk)G&k}F$ z3M|o{Bf4_QSH_ofRP9%+<_?T+o4a=UmfgWjSL?kq_nj>*Ubk?&)urio4sfs(R7rbh zSf~h1a#XmoGIW~vtlYW#MCIIUw7)q`S(@O5yVw$0s=@KP?2lcB?z^tr)$NH%IWt}= znS7H8sq{$^JiJ0-O3(A9k$w)U>Y_p0x?Ov{a_7-n&_0*D{DLdtERt9ScIh>DT zKH*dq;>J}p$;iOt)hpj$ORKjfJrutyW4kq~e$#f(X}^2a7sf8wv*WYWlu2@#M`U!l z*xyZX<9NI^ccW@6gX8miyObYIK9st?E@9dGgd*G7(T>^6Os=XgUAgix?@2{f7Y4gf zzTo+RM~nFbw%1+UesWiR=?M(hSe1Docdyg9BS` zfBtrDpDcHfY@nu={OQ+0riUZq9jZbL;ZNB)AdvJDox^wm^V5uEk6BIT}WrtiH@#^Gf zx1c;Id)D^5mDP80o&J80yd$?WW~uzl<9tFbzZ5xTRFy9Uk2n)@rtMD1Fg zE{jcT_E}i@qVhk(mO?KHi9r7;hLa4Y%;QvAFxTQm$g&9!e|j~XWn6c@ZN+y@&yuMc zHj6^my?Va?`MrG`^tiX#KQlk&ap>|q5v}^`)w)7I7c9R2<@Cp+x0F05%dBP#uK4nw zLE^aNJ5I?5p#{@6oto0lG+~R7$Rq$`U?Ll?I0IYm0J^`f9)N+HeviZ(1c;>i4;;aB-d8J-7Kv+ljm6)kvZ(DH4*v*MQBo&_I% znyIb59-tVbAFffKa7pg9*@8Vn>>pO1DOhC0uBdg)YvZr?G4^$HzRb+mtaVpb-&$>I zwt1%cDxH&BmAo?QT4xis=v}{WzPmu-vi+0n}_PAx%ow?P#bEZ+k&E;z6Gq!HMSg>c`p}AgRb&q|Qh2R=^jfrE_=PerBYj^IOGBsiC(|I9}PB5>`vQ+t-ox0|!rT5N7bD~z>SGurNGlHmvK%x|8bW7V$3-vQr26ir-rcgk zD?5yD#8d{}^$(KE%+!n$v2|o={&7LZdds2nUQ2dx$RFyDKeu$Q^{(l>wkdzFW)wfX z73AgM&&cpyq5AsjBm3KC|7U2g_4)mA=FF0d!m(Q0?%8apnc#6)$g0A*Q;U;JQL}iL zgRO^)J=?44b1cG>-#hq(RbRUFqC{t^@FdSC*B<@m*nc$7C2z`^zMw4y{0dKGXq`n|n#ItYCDBMR!h-)0Dm?lcriMn(|d6g<+1$r$r8%uPoKzOZs>5uEDqY_g{!F zIMrh7o}B9VUPD!@cB<~y#mesm8cv>k&dt0*G&cA1pG{L09(27n@BGief8meI+s)Hd z?auD|%KA|6Y(e3^1&0qLERFcNXX}zFEBHUGW?91ZL~q%a*s|Zj{+DlUY~*{LU7O>P zVKrSyWU9yjJssHklhdT>R)-T5`gF~h4-rBA=*c?VCL{CV}RO9k1SzhBx~ zz7l<0^=xNeWguhW;TN{{Qq1~Gb3g9ivPO5(Fiv%7tqWVsp3M zZ^?2x%q8*Qiu-aYu_Y6hmRh}JJ^K5vJ!ABo^oyF4+6$JfD0ZlMcK=$)(jALD-xY_K ze=B);GUHO!=HN4#9=%mFjzoAz89r09h>V(48x->1KPPqbeVO3eJ-42`-diYibH(}% zC2t%3mYmw@5qN%D2%{5&=Wi!|)(DS-Di4x&U0m?x>SXtf+qTnP&1HA1?o*O(eWI!5 zb@BfCl{T7QDl1n1=<58sz?g*f37THa(kpq_TGc(-8+6BA=d5et$(PeE6fQaxA{5Wg`YFB4&kGp=@XX5o&>!1E-IJa%@-HT;2cNLkfx^%we&J73GYXZ;DIUMj_ z`D;nR!dDD73D4{#m*7mK6 z+2UTQd8(-TO7@njNU3Fylurg^Iy`7CaDN)TZFjeF?vs+}Q~~=#tC(|c{=FC8?i;Rj zuq?}_SG!>PRn23{3-t{iN_=)|<7%s_YU(^7>BrBtw{VH6k+uKPLVlxPOt%ZUPK8Y} z;;>uL^(1b=mAqK7<*GVs(|4L)uxGvXFzR+v?urSo?oD34)HbWq%iWK;Ry&7zo7?^tAAG^Zk!F_TL*@;u8omAuHnVeo1ZZ#@8D>bxkwQF`M`}5nGPc>(fTu<1d(06YBg>V1u z{V2AQcOiq(lm&7g9!Deo-kqF$WqWGumdp0+TK;EsCluW7`WhkEWw+*m`Zo}GWK z61h$|X7Zw?Co~GT{yD@M`R}LP0_IbbEEFd9T=6ftG-2DnlYF=H=UjO`dFAUFzr7T- z3x28FAF}3oZ2RM!_G{yuWqy|rJr=7DmQk24oypR|f8{iXcC8W#o)ek*klD-+3+zgUtr7E zWvS=BD(;w|V6^5P zgYzO)x7URW9%@`W?RTEReZ2*>llOeEmJf_(Yr0)nJL~AN7w2zoE4swz9)9I_*C!Fb z;wNsAHsSK};vdEA=3o6S^(SKUbE8S0i=^8YADYs{^l#?c-)=A2_42nd8CQ)kMP_4n}n z>In-ABemVx)%I6S4$=!=UHEj8|Fy;1SO4;P1-z1Ep0&=}Slc{+Wx><|TYj%&%&JQ60VS9NEv`0p1{yy}a;igoW)kIdiOK3Q<*u zGMf~EB75W6wo6TO_eb1jx$WH2P!*S2!Dq1lX#{)oU*1sN?RQe6Wu1e>#3c{6s?56m z-s;uOMfo0kUfiCO>R-WfYP*@uk$rP|mL?Q5e^n8Dd7tgvIr-@JgLfW&sEMC0v;J?; z9r;DE`?Bvp-*hHu@oBN&FRf1rK0j4=A6KXW@%=W}p4| zmRQ_snzZm8$NNy@bp`)Y7r(IhIpe2x$yx6g-)c3z!dNDP24^YKo88#219PdLT*-F_Nze%6HbpI63R-~73b(dcdO zwmIr6b$@A8CvDx!oG`PNGe$*}Ur! z-&SAD(wokAFr&;kXU2B6O)|MP|1#|sEsV`xEB5Pd;q#)(ciGlEswRrhTI zweHrc@5TG>KhFGXD*C(k*^^(%M>-CinisX3@df)zbp{4c1+J?T%awF2{P`-yR3@&y zmmBU|yZ*t;v+RP!@4i3Zv*Y4y3)Y&cLjH^jOpE*(n6ejCJ3e5}`QkTk%g!BQ9##88 zH_SIGJ>fE88Q2)rWa@f`iFaOCYY)&N?r9=u=CsNX00@z^vhS; z0~R)Mtc!jB?V9<<+dJ+3Z!*7+oS(XK+EZP}<3gt!`le2>mGQd7`J|<(()6mMq_ zwp{Sg?dp}wX9YTeN-hl<0mnCvU)G-Y%?dTxGGWis*q^Jt(nZdRcP2+$?3-mU`}4z{ z)y0NYw{vHO>=k;+Jyk+~Jd z*5h+-2R-n~*{WuIk~{Z`MxtksKZ}5e!qxJR!ViDBU1`l)yIn~A#qPzrHj zP$TkPl$M3p`Q#SuNt5>HtUmqY;f?E^^FDp;pYYH0qWSB8_3N+vi85XMetv7)OApVN zg;&1+YJB_SO8?R+H(#7Mzt=fR*d=yO*X@nBbJ=ASvk%%|TK;$SrA@83jIAaaZ@BQP z!Rd})!2SgR5B^E66gd@jr>jocH|Ct^7QbIoSC_vtQ<&Lnw7jY=Z{OFB?b+MSricC% zoFCI`_4?*yVcWO}+dJ-?+H3gt_EZZ#yAxgGt0>65_2f&Hq6w>7*GtVf<#qa8seDm( z%@uXAr8lQWY)eVH%X#%u;MecJe$Qp@Rb4r8)I$9)it-0(|7rQR{0f#JTDGPZ172P zFlT>PfRoo02Mi)9BJt{XS1A_WrqNHr*(j`&V8uuJ(7JrQ|aSucC;=l^jv?0>7|q3$XR` zUtsE4@?}GdqGuS#db8F0W4;Rq#_HeN=Cm{>pHK7n^+`;Q4-^@mFV&Rra$mp@wmWB+ z-c7|o)j1Xy52z$)R0)1r`Q`X&OFPy4$11nJ{A)dQv-e@^(!?ECk80X_9?KTrIeWQu zV9c~PPE(f5V_5a>=zj)|pW*%I_7t!G;c1t~|2XLCEz6Sy@5RsQ+)e-P9_x^X`#lyR+Apoz6XIT*|YAJ$+BlQpLlQg6tYre182Sfk!cYru{;7 zWx=GRz2(!td{y1;_hA3FU29jzo+^6w^7*uBpI+_i@mqZ8;QPjT?%VUO+A?vRcp|mZ z{O`WWMVHfRqWh2T3aUB6_VMEJ$CLkR9nY=3a?kA7fzOwuCu{Dm*7Xh&@soFAD3JL) zZ$bU}jckk4Ll#|`^e(O5l^>1}IKCj%c^vJq+8}BI5 zDgEDt9PESGH>|aeecSuqA&>R6%biqHjp#dGJvW}z?&fCnoixES*HuMm@`*1h0zM13 z-_lrH`1n}5<$(vG=gdvJpVZv$`57_I{$KW&{|sv9x6R@W*VHv@`*5r9O5p)f<5$0z z@air*BhWT2F(@;!&-Vfd-#Lne2-o`S(F`cQ>*lQ z%pqxqSAn(-4CN|w>Pi!941O5yjbC5(H*xQT@SH7&gHjwec$`W(S*pd#HR-1Ri3|T3 zcB`*+Np#eF7+U^BWBcNL4{Mal59wvUi`vgymE<=0rmVKmqp6ExX4Fgl68}Csq*c6% zpP5xLL7-Z&XI98;uT}Z^>D4hJ3X66tdIjylxo>sqihR~rVY6@bCYNj#<=pmLa2XKQ$<$qcvDdO<59;afA7?o`?5dki%ebi+Ad4AxHfIu?k9UMPMO_&BK*wKs-Kww zhk|cBUh%vq^lx44>@}*YZ`u~A@)|VX)O^YEZ^`7J*W6vt{!p9cRu{mU`@4Pnr?kv( zTT|!C3rceG-U;dpIcMSBQmA(o7QZ$y_x)O%RZODh8t^CznN5? z?YAh|al11>zLivRYjg+7GJ%Bd?hNcSC%zY-OYTW z{-g1w{qldMN!$K29N72vU2GfcBd0f3N%xET?zFjH@@{j?&3xtgX|~fYKMq@MO=Z(r zA0#*K%8z~Z}WT6+WRRe)oSw9k6P@Ep8o!)dge?BS=cad-OLcpbDl3= z78YhssoZ7$>AR(B_U)x_uKvs29(=g8*IoYUq&E||cGdq%DSSHbLC^Cma|)GT#s;i6 zwM(AqwOgn<^y?kpg_o??O15o%I<KnDgZIjlqVL)}`q|6AcHjHY;1syw zy@;>T{m0IDq)=VweQs0|@!JPB_o%7KyAwJH{oYAX(2GkyqnSUirJT)@i{l?_O zJNVRugS+nh{m*dUc}Zcav6*p@;;zeY>>9Ss%}n%+@;IT;$Dw>}-&XH${WV+L?!G+Y zRCn&`ufvkw!J5I{sn?ixzVM!J@Pb{PRppbL!vV4W-0xN=cbPfc``Ijb%*8R2_kqxt z(1`~EzFAlVoUpKYBA_gu2I@RP>LebwHCM~l@-A18FZDV0AnNVepOfU{JUmoX7}!-^ zT|m=hj3-z1uG$lpRa;sRTxBrVG|lV7O|PJx`VAF9*Bm*{F~0QAa|~+Dyk}ir_ptnK z#4on{y2sYcs?*lLle{p3|4d0`=j(${H8XuhntMc7d_K71z58iT?@a&Vt__Em=|7ry zqN2YuKI+rTs_)r5bzlCK__ltxwU*bN>4h`)ZGURFX}e4q!>K8iHVl^EL{)CSxm>o- zVRC7U>Y<2(rHemr{rb(Osy^yK?wjnX8+FeoPSxCCe0#^*)!}*B=F;91?qn}LWKfj# zPE$9t#4a)Csk(Y{?yvgEK6iTS^!eml%m2<)esWxL)yK7_DxE=*+iyh|#U83Y(Jy4| ztX+9^g(`=~S5+6rAJ?w$Fn7#r_%lUDk$I&<{aoKVzCBi|%aq=wJvz)6`)rBr@+7MT zTaNT>X`0Du@$e~A;mMbt?5)BbmNR9#BwdMWPJJV~db9mRMnUomnsc1&+ zO0Fw?^zvz|MQntuui54kneru!4Fw@?Az86YwR-pNogdO7qO@4AJvZBL(?zSM1KYVZ_uhJPP_N}{WnH$HdzfwE)%mA3Pg(dlI?9q)z-z<#sX2Q# z?U>G8{JLMux|u8Ui1t!X`vAwa-wy5+eq(s$j{21;y0%)95BhULXMS{jC|TWa=C=N} zu$5oY+<6#ac@^eZ`;jHo^m@L?F}|9Kc;=E^~@^(BY1$*DR({B8|^`J+{ zp2Q{16E4{P{H}a$&*b1*o>#3iKIHko=)CWv5~Vvq`ByVS1r}~Dq zWe=;wyC;A0lqihXm-y+<{EIQ}nU@}C)vQ03t{+d$nf;^m`m6i?cV4qjj(a)R>qWNT zD{a|}SIhEb4=$g2W8TR?yY?^Z)tlRD$91f)!h zpH<9uk2f+jX{TMBAh*{u&qn2|ZtTWry~o*}x6khoDpkE^CBdC*xWJV``{81h6$@E@ z%~|QC{&PxUV}tFt-^Nv{Ja-dzOjBF@?9;|iI@PuIf)05fzP7yGxpi;OE?1`szYIU~ zU0s=*_I&R`^SJ9JZA-QbJ=7G`<9*zEyfBmNvGSA;3%`2&x;A_L_Q1c<8hT02Svd(k z$)amB*;2E0%a^YSD_U&yyeM_rDL*cwjaT;n2;$nW#k>YQiXO1F|%}Y(Y5|9Tu~2mqnq0K zZ2#F5P5V8;(SoHky!Of8h2LMln=^O$7ujB`tjGGg_N94GQmhWA2rSv!cJab{`+D`| za~RfWn$Ba^JMWe1TX_Bc#BY7OUY)x3=<2B{iz-z>>m)C;s$Xe5ViYU-wmkjlU+o%N&DY?6q5)cokDRhBk4DlZ1ddf#1a-gT7UgX2<_(5L9*c6&n1 zSC!5-&eOLz)ZjG5gW-z7y@f&12MQj4TvPJbYgy1D+2fD0f_A%dKirqHTj<{OIrkRb zsa4G>6?|fD_nUXRRPB~sw=OK7AR^LQu;j~gP21ygTQ4nOa^PfOFktwyuD(LxwsqUC z>v?&sH)YLuO_nDgP^~ah*JP044^iCCss3}yoOG_^4y#sc-8V|FK2Q*+XY79^Xv&JC z5AbgH05yRB?6@WC@4eFNQbEDOiN}@phb&N%{rchblI`d2EWPu1+4U7OvKNWI(=vGN ztkAM!fk)j!aoMque7)-*t+^NzOP%uJ@nT zsK%sAJlpj+A~$yNnpvL?Yn@(`J5lf3&d!%*CewaRs-41LvZ6{u!10Mdw#ALdH@fRo z!|RPK&YB0T%BtD%Wa0YYSL=_zjO(_(q+QPs@G2L&9@6l7X8!l~ zDv#6kA;0CZq7A1wBpmjOyQmt-+h;D-<;($|69|%m5ftURgab*-|>b0g_ix* zi|ev-PVRJ`a$&-}CDWrdwdDR>-zar1_1&Y+%dy%u0ztK_V%tC5p1h35{gm$^D?3-Y zXB*9CO>6Wic{yWxXO~y^nkI{5Ar|3Z*)~LN57CNV9W=Ft@9?cX)48YI7IwQ>sO6+I zN%F)o_D|QR=Y9M3eP7heUeje7d=E>t!|MLj@R~t!Hm}&v`yqr!{NuVZ$X^$8YH#={fc1 z*xTL}HIG+snj4_1($iqXs4ywLch~LHYS&(JNELe=6^*v|rxqnEyOk%i-~#L1^ln zUVA+gG zQ%9^ZK)4Tmo=Pa4vuFxEL-JCP0cY3c(*Br^cCky4G zCOz<)w7_Z7!U^tMGsQLT?+ROF@@cZHu9o*{3kQdv zoqx2>=ALihjotC9?(~W!uX=Um?w94*MCaz6j46?KVsZ+3U?cLCfkW9Qr1P%WE|D8| z^j>%ey$QRW^84!58yDYx`~Jk<^vG7pC7P=Ky6&7_ZbhCdjPGad{O$hRdfj)+z<1V9 zE0RnE1RidRlGQFf=crNniNWD9i}@A5im1Xc=A;_Mm$H+lT)ng7-=ZsT7c7ZQQ&7}N z5m>Lfz$0JbvC7KW<6)elR@d5dX6Ev6DSTfnz1-yKdXF0qBe$H9xOO{s?}95C8!ujH zyZlA&$s|vkNuHK!n?jams}Vab6SQS+<{qnbr+quNM`lm7-O{Qj<5JnDsBW`jlF+=n zQx;T*Z|t6Y$@F$NaMP-{1Rh_=CZos-Od4-&wmCM^#S037Y zS4D`AtMO^^>xua@wyCtN<+WH+`BrY*^yZ$WaSI+RzYIHkf(v3@MM^PQI|^NXU^Zf=edWf1cy@#Isms+dFr=aIdZ) z0|w2ACrwL3c+GcR=jI7t963An%brP-Rx(WCKd3DEH(PUi`Q7AYU#-51bxm5fE-Tlg zc$t+*yL2GSLXTq{C*)%qif1t|o3iTq);RqeyJMv{zPn?wtFF3>BkjqhQ%O74%#-0d znf=2(FldsexJE4Lq zhjpQOVwYa6UAb@F&6RJ1)^1|+&h>m?HK8En^8CUhwT{2a7Z`C|6AqL<>HV7Hc+R!u zC0W`>y=;Aj@1IuSzqIjujLI=b{SBWOEL4{FU)!g_cSrQwY2EE_CQp_B86f#qSae$I zUd;`Q8=o#c`aOLA(_3rgPUoLnaC7yndmF``-By)3z0D(%*Q(;@LHW`O2G-)QY^&dh z?~~N@j!{%*;P<-m_Pf9W%LP{A3u|&S|2n)9T)k#;$#1_kibA*QA4~f0Ecmj}^SJD! zb^oR&z73BEKV4G!Ei>@hp(%aaQVbqM$@uS3ZjQNiD{@<_J* zTKc#@M)}K1>qE=l*)KNzT;-HJFSk3$Q!_>5Kf}9A9fv~ZRqHdVRDYS+SH${=U_}WY zDFPiJ>Aw5@PWSAxcd6G5kDdzdY|Z`2)G*;exL1cwqNdmM=7TSfuMM*Pyh%Od_2PFn zZ#s**!WF-Zg>1K);~&*&GpVSkZrPgjJ`1DR3%kmqHKG=|?0MwW)F%*j=@6&v#tClz zNe=(C*3T09%sG=I>BprMhgw_yZHvE8aN}6{qqAuL%##&u!DWYI7cX<3zB(*f@mlbt zYgG;3zON0+_KXwZce;Gj`A@I+txHFA#5v`6$Ap~D4~v+!PY?aa8m?Pa+2;nzw!6}{pyC684Y zERQj&{7SZMtqfQh@NWI>bw2idKI$Q7cD!G(@Yr0>Lld^lb7T>4d?K~&H*b0S!xJ8R zrzQD>bSxAPzt700DPO&G>w_tL>*h~kzS=m!kE8j!Sd8z*JAZvwJ#;O*EBCV?rcF}Q zD`ZLn%T&hWfy^r-Y)?M+6|_htDrhTk`t8`{J|9Z-ulf@+?{DzCqL`ciHl= zrhu~N0-9U-AN#uO(&OG0_EIkQ;-bHMbofp9*z@<;YK7g^J-8v}O^$h{cV>wKlWVrx zthTqWEUad|da^=Salyt@!Qt!&zr8$hr*{31=qu~HcE6l{ME%<4sXNYl=&W_OnKWm) z?MX-VdD(Nna~}u~eD!Z@UVXZ7-d^T{bdmn{st_@Oee=97OrNrFPI1E{i}R9S&MU;6 z3Yx;SXS;Na^^s7w-7ei`M(0A#ObdF&|7a?c_Ej&YZSUVVy*1rwcE0=ej?PggU@O-Wv42*~?e$JWa+!;o0VE7L(R(XH$xn4!$HG;3Z`7=j0c;C)ZS8JL!gtC;K>Z zdF^v&JWwdtCGmJ-H0!!Yy3MP^qyr^RysNi5x>j0QRdtJx(VC2n?u{v1_H|CKazC=` z)`!+z>-RWX9CCah+{d7{IsER%D^d(MOPS{PeVS1_Gb1Kvt?pVbZidx;j?7!#X4Uu2-_&dyA?4jh(SwipLN8RxgN!IyR%B=8M;uS*? zo12H^HXge>%cQG}J1VD75WC&GLQ~sQl11laI{t*LNx1-m%N;@$#)qVTpI5Uux$w=IRJ6v1oE+^bBB0N$xAso;&Ncb5`ww z-FkP|Dp+04v`BhzDrCo|;CWm!$87fnxAOEf#u~5h*^v{Yv|Fm0=VZ?>F4@#4tP79K zd+2E+_{DV7ZW(KVPajsFj2ADS^0_oQBV)xLHukzzM{nP&dR>qebEm`b>NSCVHis&M$~=eZZ3sm);YEdDV|%m38AIXo*B_zL@YJy+%3%vgN(*m|bv$@T9~Tzy}V zKkKRPc214IHx6=p%T`3cmOoN_jD5lR>$kbtW|kV+?DSbX>E_Q#Tc%9>DK*QaZ^rRy zZ5JC1UqP7Nrsn#f?Ju4I93$>XV5rWGi^@zv^5Vce=onaZEnWzZ=LHmS~NVe z9W}1>~qOEu7Q5gpIzl`^Goqsqz-S7BY z(bfKEKZ#dXde5$?TzGiWoOi~PC$zAbalDgeXEuF$lb>5kIB`l^W<-(NeVOEwRUZoq ztbR@M3lVM*x?xi=!HD6c?V0^?lF%cE*FTyhHfd_Zk`)O}MjY$kYH(fOXUDO{?_tC` zp^_BF<)u=>&kp@iWpRtTWWP&Sekx~x#3?HW6^+(}=5ur17reXWdvnF?XY6nDR<7J| zFJs}0SDuHO+7-S$p8WHA)~f9l+i$p+u3eM$SCGYa#oCS|Kh7v??{s69QQ@C^B_W|) z^HilG)8@X}mzD2I9<#antEzg={mpkmpP5CT4C-LukJ>05DP$vhe6CJ=x|!32$)}?1 z+gJYjH}5Oc-t26@IO&-@Dh`wEPO3cFv_IsZ-2J5ooBaO$7yW57_8q(<&GhzqLaY77CXq_}KwtLNs<~T#WcJ4VUKgdhM(w8V z;VH*#n?yVxvNzaI`OD{;z2V)gHTp)ogSt2GDiWSQRqk&5r~eFE=U1iPF4kL79_Sr1 zU98}CeCf9KO~E(nZ2z8IZLQtAvG6}b;E}{<@r^lou~IMpGfetczgb^aYs-PH*}hv6 zcehS^spJwi`P+mgR?8zbAMfHkV8a*O{PkE?`t90dtvkw=%k?!&)fi3j?N~hNQpbbl zSIy1MU+k{>*QvaUe%HUaV7H-E!u$O0@4R!F ziA6gWKYD(q_~dp6uU(<4=i>?rru2FKVK36IUsv{H`Sty`^#wLRGWm3;ap~jjd5Me{ zmK|QKU75h-5E%5!^TFR)j=#5Vn^AmL&GC_?zr0*4mEt$E>>SOy^E5-TpaR?eE#7X#R}Qb*eWP$SA*=?|(P^abVwutFo>~ zHS50af0wr{KPZ`#lS4vs)&8B=Zw7iPJG16_#!tIxdC2pty@OHlm!;Q=+;h&iJ^ZKi zRbqa}HIeshd$vbD@rbc@Nx$^;(SxZie@v3<5=1Jv!>oc2KA$7N8=djpTfY7G*1o*P zmJgQ}wj8gWv67W5y5bzF2OT|PH|SK-T7{uhcv!cy|9V$ZKiD(G{Kx4F0Qre3Fg z`McQHrH4#!v1DGmK6|oIvS(%cY)kKsfKws-8(E~jgxY@iyZ_tWePwxbt{TmYoAX)Z z?XCwi-f2I);(w-T0@p6lJB0^dy`QJMbkfiKE7Nv-*XB9#`GFV9X2sUlg%v6?g0DCf z`kgpTCHB}}0UeDju?#=npd0E~&b#6VLqp|qs{UFcZE7(71X|gwE zRNR|(YT={kJRNc0?|a=Yt<2qVN!e`o=G-R>g~LLYGZj>*h+QeX=@lA&Ha>Yz?$m=~ zKTigC%sjgKWmljjK37E}w)X5Y4|vvLOWrnzMgH4i;L=N+hLvsGqgR^<7h z&XX#0=6!weQDS%9;wxdinpv+Zqe^!CJ$Yos7xox0r|555oGg=HUSqI)C7R8Z{4`I0 z<-wGX+;P>d8?IRGHT`LSexX!G_ecI#I9`RF3u7eRaW$WI9=UAk?X z>II|Q8b#K75|8!&Y(DB6<@WB~nI*@rWVp;&zl3e635VpjfG_rbb?tk7*BLdvDz=;! zJT*D6D(!OZ9rZ`i)7c)J@Lp=GGOOQ2Z&R^nUhJ%#BxYmPMKW6^x2#+qBINm>p=83s zuf7T2nTwL{zw542^zgJv?z*H~o_cTVw0YZIDt-4`y%lY{*78+EGj9niwTv#jjBf_5H$i~pRZ75%Y4rd_sjdh~VErS`A9XPcJn>B#m-ZS8*$ zy}ajnlaOeS%!7|n&%5{DE_Z%uF{|j%e}<`*S5Ut!4vpi9C*E;`*QGTxX@#DdML2vrXdkQNbpEC*mbN>2`d)w=e zi>zY3p1bVY+05HV z%9jcJ?g0u*BT~-@o|j}1 z44rDuy>HcC$Bi#5&d02~9)4L)Camzv>n;oC$qlxiDh!M&4V>#{RHWQw+&DY$>ZV6K zK9%yGy=?SVb5h9EJr0apG#b1FCNR7`8MMKw*ZK5`XZ@NNE9#qnhH1yA1f0ElyL#S< z?3-oQGom+kb#L1lH)-)yf!10P!&ZJL{$-q>ZpFqNn!0b%rfPo2AE8|z@7Ha8<$Z0| z<*@$@t#vOm^iIzD6?o-I${H2Lb!#4!CahS#|5Wp_%Em2I_m-`mlCHPnb&D9&9e)M> z6{{X^Q9ZkBQ|8WTH#M&8PkEX1Gv(ts?WfzMXRV!kXGx9m>uTRSDIDL~xc6#s1Txsz zGEF>qepS`viF5j=J-N5#ciD^OzB`y(nO85lqFu9_b<>{JD*eYz*uxL9FmWh+Q`*1v z(WVV=qHWkx)6b_FXB4XlUlC$_Qh5K?-YwwdsipMMd>`+dx_f##N|(O!-aX&4*=U1^ z&6!lcm6lIA{OxuII{Du_%edwB-$xgJr!<(hzB2Lja*QsRI6cL}*5H<-g4}^Q{A-KP z$7e?`d!NVh*1O(mmJvsmNRXqT@{)ONjj|snd43I4zqU2wI_LD?-QTUh>=ftjxo&gP zXo=3+ycNGD)q73fB0JgJHha2q__;jp9E0su9jY!WDPNWpEpEKQ*ufvQp ze{@1i7Bb6(h^~46ZmOD%inUVAa-qvSCQVy+J?ax`SyJSw!oXgXb?l_Zk;fY~=6+k! z@jm$O#f({>efHICC~68lA(~brnltrM?!&z&uJw4dOBsoEv$#(PSbpl_rIjx74_-t~ zn)6*{^+lCavyC4rdu6N$JAH2Z)+75~D_ozc<}y|Dn)0rY&`YwiI4t`0{U42= zY<6tpIGLyz`O|y7#+)j-MfHwRYge5yJ=&DI&T8VvKGW+G8jaJ1PxyH{(RteogQ0APO!hX+mk$+M37%$atna_#Hz)5*bm zp6qnlYI&w~-@KYLJT-@}H{M(9{dVg%p{4ePhm&_WN2q^R@A_69+hbUnlRbN}%>>=; zyxwIYx%#qsC)8J7Z7tb$!~V#o3c3Bk%?(-cmu3epQNDX4x!hE3(e_(UN*4HSJ)YBc z{dhoxW>kYk7>C!!R~9Fa=az)6F`K%6fzg|%?IQPA1^-c)_vE|Hw{y1I=Ihq+TIckf zw70tVTE2lr{*Tk1DMCw6?pt=tXsMktSF-Hk?bnyTiP}5kN}SBLeO}SGch8ZyuDQZn z@6J0Nug@`(_La{k2;ESPd9c)m=bOa6?T3$uF3&e%(z6OG-S@F<@7K+#KgutC_6qXg zu2^Zws{34}YL0r(B#mG&hyX#!Ox2i9_)3?^jxjyB~Oup4C^LA{Ws_A}ZlBenBSe4CL+h?43 z85mTs!L9g<>Bp^Jy+UWMToV!f$id})`9%fb8Uf0SQ+x@*hz zW>VezOUv@P{>i`lJ$rTTt@&XNg}stF1s+aIwgu_+E&0=tBV;w3OEPFfP?cBZ$s?y9 zW*-*ar8i4zap{^1dF9@hf}UuXo>G!`(fDynBw))Nt2Ix4^G!T>HmYTbqM`<)rpEz> z1V)GYOs@d0{?cv#Uc~O-sdszD`rf)vnU+N|Vbc|lo#SMzWoQvT&ZY3@z&Fda>_@-- zICm>oGk5FDaAxthe%qt7{6D%RZkTU)&!$n(yE$C;NdJASIM!MJf!rOG7VL_ukrRr|z66t^tqlFJgEvZP%3 z`oDcsU-^DBoH8Zs_KWld_s$sIsd%6jy!eUiA@6_Ouuklso>XN;?K9`Cwyr<5JHySr4JS&*Q(MMYKl3)3p& z_tj6_FV?6YTD17b%-a53O|R9~8@&iz`(*Q7x+Z$>J|F2NWvPc}ow_+u_6h64YuC6! zTA2^B2yy(n>T>5i6W`9liPjnVf{E@Wtx6Y5f=)?UK2dylW!;=~Mo;z2t8YELw5jK* z+_BjoU+>JyPPe%AA%Bl?m%!6im-*N4n!nr3$@=??S9Z-CY>!_TIJV{1U-#`&jRxg* zm(}j;JPo|?Oyu+e`91B7ngwNVD!z)|u8=S{H}gyeo*z5hg$>R z%-ZaJ=5lwZkjZqRkoKSkv8~BFZO?Hg~1{wyI6`GncIi;z~4lsNgqkjzHn7+bKHD(%8ai`fXCUo7=F5TL)QOvsXaPE=>o_YR{Jk@ue zTwn`c0pP{d`tQO-C9|h5JA-~r%=>#}!RZ#h`G)#ycCbsH@S642_BivkEywnq+PPuJ z$4S!`TUdEbnXpu+u7>~fudDO_F8wvn=-CThv)j3=f?QTNzmwl{J7wV(mExOTUMC;# z&OE+0^se26poWPKS>IoOTI^A#yIWz)x~Y3YCwaVM_*0wxmQOR-<5)-tV^HVGK-;s4 z@*R&-_o$@okO_!?JTJR=(^4S?lZ~e)S%v@T|8@R(km04GRCkFfi$kK`ZsuPe_+j!B zgXgCLK6OYOXL(ZZq?K{|^{-rWiFfv&&8G5P39M?`7ME9IBD!|trB}iygK9bC9&Nhj z{W;HUQfu?^g)6u23tv3#?E3TlM*35FA8quy(@{=sh%_*jQ*Diln^C~bqQYH{ncy%6A(8QA}zqqD8|Fo#LU}d!F zqN^3Q6LxR=a8Jd2(iv;+&O+zajNY~LCU`ua&{|NtLnbBWR-28^n>};qU*P_CNvKr! z?~zlxR4l}1{9rLV9ZFYFd5}rx*S_?R@34K=%zf&sv^6IX)2R}tP9bmF% z_&eK^xj|?S|H_k=DwC_W&RzTZUjM$^3tOf?zn$Wqp}jrmc92`$Ow)6*k~X)y9WN{? zk}X zb#nL$BMkNx$_e` zg&ylJ+0OT9E1O5SX22Ka%Qh3gtex(2_mj}nSzVW7PrrK8+Fe-fy5w%Hu5{6sPb>iqo%bO$~bdNxFKT*S@%^^J|2^A6WHq zb9B?$Y0eY$^A?)j)Kt9mXu}kqBEJfWwP|(xJGcJccW&`*&5T`Y(p`Kls*cldhXp-$ zc~Z(##Bt(;S6hMhVdEttD~@OHaecA(W?|qO6YSo?*er1CSTN@mkD z5y9ME8U>o$r31YtEo_=(-DJzlxIbTPa(CWbv7bq$`VPCzxKDT$et6&5%G~c-`=Hi8 ze7hCzzIUsmk2*igjnS2S|8>o!_3!nxW|SV<7Ge;vctUpgPE$$Cfau=-r!4heU(M!S zY@K@S#Ez4>#)-v2$0xQN4-D>lV8(vNe}mlqsY)+j>f6ax{Nc{B42nJ&_{Tl*U+LpZ zFS3|ZQx$C97cKnE@>}?C{g<_yY!+-V%FbCoS>ftojkWK0&b=hXcj@gn>+1HZ-M4d! z*o_rjyie!bPH}uUzixv62Ga{`r+;|7Jvydi`(8oO@a*O{rSALAO;EMjc5VKin+#?R zK^~`s<}^2Xtg6r75%q4idwx<EkE&QtwCor;zgUd0C(itoHJ0e3gy7vQbZ?~vyc?~rQCTX{P| zd#A$=i{;Ow9xZ;m*rFh0+vPbsrfRD%RaThCD7*HmwubM~w^Bxi4{I#dioUttbIH_d z`E3+AW9qc4lDRAOSo^rVIL_70SesT+mU{G<*nyU9VSx&3=j$GDJT$q7iNB!u)~<_D zVGrLtn{-!<c>Tg7TgTP9`>c)4)4pa4 zEVB7}>}*lS?))jAoJ0>Enics#boo=29ww2=jgwew?ySggThOv>0{6p3@fuHL1TW8D zU-&b8dsbnP!NXG_F)!=(*8OLAa>jXw$1awir!=!=%=qQ!@AaA;y*S}j^yI>KdTbXK z-?`$uQb z<$Q1763e_dc;2qNi+wh~67TY!o}Ijq&-T*1DeVFamgpoepEqIs6ut#oIZGMcM1LF0 z{g^+!$g!uW^74&{=Z*gv_9T3qS2uU(qdocIt+|C8^VZcZ=;=P%sKOGr_ODm!o;eJ! z{LkF#R4AVEq(LNm?bV0-ZYsWtmOXZ{GR0&2-6U(FXq5*Rmpe3~>P;qT@TnUrTWFfj z+OqG@${g3eNslkdc;_yW-?ONI{Z)3tz1m4T-?TmOyZn8jYQUk>({?wyNzayHdi|HKz`|jXU~sS@yR5MmwFWZe6r{A^UM-w%8-LIS;qq zo$tXq{kV6Y{(pvL`y9_pusokr9Aq1~cG-@j)AM$`_?s+wEN|L{?Yf_*t&?+jcj)sU z&v)}no)ljG9Ff~~eNvwH)Mfd4)8}tDkZt+YsU5B8sO8oF!)sz+k<-4ZTBpRPKXcyb z-hMQvFZs~Pc=5$?OZIyOEs_PTEzs0L$F|jTR;)ef6Y*I$`%`4D%g@}OXEkHBidUwyKRZ?A z<;1WgdhR3b*nH;orYqN-bK7FIX4yq%onsy>0wRp3XDG<5Sv~K@8t-Xt@5R`-f^1&A ze984yY2VVr{}~>gUf%ia>D`m+H&yr6#(z^dZ(5wC@oL&chor-zlWWU^H1}=D^VgiT z{a;b#r%6+47PNd|XGm99d6wO?D$RFUR7~IFH8!Uy)Dtdf~FptgtjU>UehSDRr02=Y;MOJg&nWgtx?ro!ZTH49s@(lWC!-ih8>7jA|2o4U8240z+UfywdB1Z$x+FF9{lZgUrU+&g{Y z^Y#n#*tdsoT>EL!RleL3t*l2k%u=mFrrYPQzc_?uV)>Gf7iim`vgwH1+=-^&gRYd# zbd0(i1s(@mbX-duRMS3dal$p*HkE246ruX(bR#o|}T zF@w;j48?c3-oEC|yYI>-c9%otqjQt1y(ypx; zFUou!*$ys`ExMkosbg@PUz5Y#t7y*WlRpb56?v}enP=!46xe_Ci?)%)(oj#0KhfWG zQ|m<*Oqr_Dz;IIK+X~w#sb3fEc~`F2IPp(<_Q~`0skOe9`cmA1aSLp@9@oNy-=;axBo;u*f#sz%qTbZ8E+yFM%pb=^pKCU+HW8A_ijz>t)(jN7tK5`KbyD3 zDs8RKc1Z`G^abnJPb!+=o|6)~>)i3oeMuM70>03i;w&}nK^gK{tdnBcHVt2sMNaX+nr7Au6ytFwJbfN zs?fyAC85fytfd;^yLwMv+rDdI?hDP{XnWKzS@}CSZ_BSBJ`eBKL&5Wo^cCI~{d9Zp zvaPSQYj%j2NfsI14h~k@`6n~r;Q4iY)&CjRhQ}Uz9Td2-*ob#eoXjaxy|jS8`n4hE z7eCi5xw_6!eKt6zLw`sVd*i*N5}Vv2gjyU4pX^~#Dw z$4t)y?9B}o3NpW=VxvoU=x;n$aA(K$={()m>epYt+qd-EQs>*1kEG-lOgpZohq zlNX%19~LFs?GNC5x~aNhk^Azn!kKL=)~pMtnq;@JbEaEpU8>P7k)_&99`J=^Y}>W(MvVoR;Iduj!p zJgKEVsd&z_-R^$sqLQ6RxzKy zInw^fl_yKrZM=4EugTZ_X9YKDPVFq(JY{2Bm~oKai~@lUD>kC@1bj;ZMN&q zD?J|@KQjDhc;uU2zW&JHYaffJX560Hwf&Z)>ed+LNz<1KxP`QqI~7^HJg7Y9bK}q7 z$K&+RoZJ<$ZEv{vCGG34{?;!)ogR3gLiCQ)xv09g-&_waE!MpoT3wYn)D^I1P|6baiWV>5UqNU}S zc~bL8CTQDN)y3;he$WfiezxkU`rEa2vHuxj#UD)-&3X3J;siH_`()+`Zj z>AUN2jcBfic|d?7R8@ua>l(flYu)rKV81D=wpW`Y z`-QI4cT1#aaT%qV)u|cCTNSn{ztS?iCbdwXRag6`t*zG8q7`#ku5RAFzDVM(by3c_ z-9|#6d9$9Xe7g9bA@D!L(%gOgUurmKom?BfYRbfxwY!7$)EO-w`WL@)3!3jERO==s zpS3K`{xerzx-HtS%O|o{|0@%}4Rhe!!v*oqkyY*y9`BZhZ@aubdh*Ik zXW!jkx-NUW)xD%0>)Nh7bE`TewqV_)d8dx?xpAIY=eJMRTJ6d7C+=-LYi3W1pJ-ve ze$Ib}XZCArZ(o1+{P(XmncH_ycOIS<^s6qY?(Br;|Agwjj>Jh{{gq^XCbDIzYi`3P4eLKJjlMoR9RZq zP3q#lu8`!#x~slgEzEqG-SOOKdXQAAr-f$FdH;Z44W55iC*9hiYb@B(((@qw+G1Zf zVKwe7f3H2$FKj+m@%G==eQ&>>aV+fH{H;>*SJ>^>SEby_okL!V9nTXM)2F%wZRPHI+Z`Kf}Z?Yo^Zo&yW%~G4tBJ3=3&V*_daG-g>W$ z4wAF2lzFVS;;H0Ojgs#_|8lJ?K4#c-ec#`@w#obQqraY;Q91M7wmZxA-4dDFKXW?! z*Mo1|w_o8}8&Jx8tMbd%g3KGACj_yS3k5Bnz+v-CWP;-xN0xHYDl_fm2U#ZOYqsu^ z-f8f=+iZ67idU(eT$-O_z1l<;Icmx*;nAMt?pyWoWKM6%M}-p`Ym6sFUcMMy;O(HY z@YCZ{j49=j8Cxo!FIj$B^j?9K&au_gYvp6B#U?-8*rsmVzp(Z4chB(aQFYHg&5a5Y zYN%GIW(?!c2xi=w{Jlw_YI4g|KI72U?$g(Pn$cgFo3qj-c}=<8<9qA)dM=55|FTF; zHNj%r=PRP$vp1~rj`d^j2-T}Sy!}Pe_PT>vg)O#>yo!hKC@}sDRrpbPJwI!$&fj&< zw(c&typ(6{Rhj9L0d_&1=e#zws{Ciz#lLcebnx9Ncb3nLUYf|#cs8d_Y~4D`UDGSp zYSuY#Gu`#btstcR7U%h81zYQuZFzo3Z|$!|rw`2xJKUl1t!Mkz7g48zrn=OIpln@y zCf_TOd-$W`%5GKpx4ef-Gd+K=GMvS3AKde=l!x{^@h{tqlAb>NUQtZ~F1hE?#tU`t|<|k9X`Y%vq~DY1Co`XR3-h#Fa{Yv-cmK4@J&#SF&$ZOqR(VYObV_Rej-Bf!2`vb^RC}z_ z{?d+DukXY>DW5shOYE@R((SK5#jV*ik2h`0y@z)e?MhL-zBVh^m2X08$y!UV%dfw0 z;$OzUH)hp}IG!z!Kb4j~`q>^V#iQT)>ZL4qbQjmL;yDdH518*yvN*eUU32^AO78R% zHgT)}Y1{ezivIQbcSg{ZmCFsZ4DQ+f-t<=6_egZs?kvgNugA6-J@DlGR~~xa$@+1V z=Nk)^{HXPTZkMFuKGyDJm6#U6?^~miGR356E92KgzQxmS*38`@HS6)ptx|tZ_dfHQ zUm_~X*7$qva+@!T7GCZPJXT74`8nzGn~=gjr4KKj^?$ZI_Icf&u}T=LkSA4od6O8@-+l;D?957}-z6sS6SeioV1 z^h`v^t%9Y1HT&1C?CWPkZLc;7TwXe@QR1Z&AN$Yrk7^rEH9xU9eZyYqga3v949~kJ zYaFlgUZnA2-+TR8C%0?r*Uk48_G@_=oU17B7-sGAa(C}OEj^tDElbirty;NQpXuIb zt-zm*Y-^Xzz1Qt*<-1LW`J8jDLP}9#Sjc&gM?2cIr}l1sy7ueu$!}k`JaQ`hzH0ZY z8O8e7EyB8$d$yasH(XJ8`m|<_#j8U?Ar2}$D^eQ#Y+oCA zjeif__f^kp5m~mt-}PM7A*)HZ4X4PS+S@d3iuwF<*5rvvJ#xKs#Q9DaEk1iaSA2ff zw@X*I+|m=9clqThiPMu(G!^usUoo$}`go@W^9u&q)|9VyT^n9|oJbD6r4TEfZx?@L zgV?gqcb3Lps%O$R_j*1*?)i-=K`|>!OrrUYy^uBg&oDph(zXd7;-g|FT%5E-`>yJt zMe|RK?hTsys4I5jE6*~~XFH>l;uQ9Cy_W2p@MOWlXYx6^d@A2r>|fT@E%)1a_gp@^{`{uy%kPvI2I-yt(JDBh z!jDO)LZ+p;&(<%sDr~E7=3AF*tD34kTDFQe-`%-y(-x=p;!T=oO7&R2&iQ`gW%*hK znVtuHhb5kyt}fa(>GP)Y<582Y%$!x4{huLW*OydP^-Z!0iF$lD9>_huQNp#)SkZmQ z(IV4>Z7IhqZS{;kCuT%^)3gzc%0II1#_K54yS?1X>yBF|zh>QVOnQQo;qBF3XES_l zSDH`zH`{NvXO@(Ro!zrX{!<0z_B@_C@q6&A!Z|z>3+~)lySFH4iMIQVs;fOqTs++6 zAIR%}d46rXbnYhES=<3@J}Nu5%am-DGxp5fcC5H%sRH9k+f}?VYJ$_Ad~;ggdepn9 z+QjzQbuoW_Yp=AmlKq)Iccep{7GBr=H*ebP^OEXIR=V$Fx_VBl@#T!`x`9=*>#hok zTfMKCu+msX|HqxclLy`iS+n#pFfcHP?x<+L8@~N`X>4nD$$HP1k=(ucUScA5wqNp! zoqU`{c*=q&f0~tLQ^Mk1U;dePN%*+j)N2Wk|1-QxH+C5`CN!!O;_N}!-+Rj-ad^D{$hH1+Ae<99iQhLK6!F=+K0#` z@v*bsu3e|0DL%DEb^D5qc9x@CJ3|vc3o_rp& z;#WD_gKnw1lI!u#Z@q#R%33Vd4!J8^&!1zWdp+>Zq*x!ZeMhIv5uX?MGMC|V&x)Qo zGCXr+!Y57Y%AIk_OY`J6x8A+?)N-Qj6~&GzYyGY-WXx(g{cww$=P~Zp2Vbhlw6sie zIQf!Ac=C(#zl0O`*jJuv^J^5?+T)wMD_ui!6jAxIJua30Y7BT5tZi)V0Ewk(+ZcWjiQSXJMR25yhw|Sl_ zeo=5!Qr_qK{r?R4zqn6({b#6Wn99?0Z~}i#kz(3WZC%boWb^?K&}tJE$GvX);VQ=5IE_wGeMk;YXz&Fi;^99e$Z=E=vO*Rr+R zZ)JaWyE?n)cclDTk@MfW4i)Y_cIh%#6t8`1uxG&Uryi9l&0l`IJpO1J8fF(zH#PS^ zLx%3Z^DE^qd@_0a=xXtg6kq3)?W+8mvT>fCfu0ufT07KMS^j$yey>KbXmd;0<@@!o zPE7YQnr{+!@$IE0y$*+p9168r(s#T(|0|^J^TW2^SMn2!Pwsb)|8e4PkZax>*ZC{+ z4c6SMvw9Y@&VOmg8RcEq7B~Lj5AtV7na5g_{?F<7lpW8euL=K}esd4|5v?N+!p`Nd zn*E>Qv#|AoZ?}Wqv%YhYmCTQM5`EkIa`-dVC1yJP(URlJ!Yc%z249#|!oMZBhB=XXo;j@5to-kYCcgo20$D(@kW&bsSD_XJ@E;sk@>6 zR>}mc4)u8xdsGS!yq%Qguqxs~_|mg4ip_s)H$JoR^3t=f*Y2(Nzi=>Pt$5Z2sVdvq zz6KGU@{_{WE#0;G`?Srk7XRdTU|GDkcU=+Y#_(MLcUvERIJNv>Lt7JYu6JURQ)N9t|TN)deJQbBJ z$@q8c-7=v)GugLuhA(Q((S2oVa{uNohi_+n>iBHTUGGF1o8~>a)qB`?Q@`4!%ddi@ zW-4g&SqO1xIazrX)dejTYzin$SNq|7%k!OLekR*&4Sx@wn5CO0S-ul^!Seb3{(Q&4 z{|q9FzC^EM)n2rG%eLaH;@$HW?sDCd`Qv?zUO0QunT#`iOLuIQVX(IkKJaz*{fG94 zuk_B};JG(jRP}7)idpW*j9OV2-8rG^**BGc&zcEgj+$Bw>WYe9Q%vkGXZ+pv*{}Wb zwcF0?moL43Gh1)RoXM>gYgY8kJMw7Tt^VA1wcLI3hgKi`v3sLe&=#>pQR?D&ke|HF(cXlg*MNYIo8 z%5C3mqjIhOTHW<&&A60qwk-O^=La^edUkC7LBA$Ewn^4<&#PRuPy4%iK&)csT=`X} zJ$4@G(+gj+;ij{j_kn4%J(N{UZgo{{ZWWbd6iwQ?Z%*ru>YK}ilji?tIFPjC*)l^} zRy}v;x7K3XOBMbcbFNKP>7S_g!KpX&y`*;G-k-CUbL|S|Qp}%x;Ki3ep93s>Vju3TJbNzs_N%(;-7U`|Q`XG;cJJm+X(ijJe^Y;$shuyYUz&CH zJ@?)zZN9Y=_h=p0G5&RJ{llHycP{;K3;J#*oS5;S;b#4h>knRjvwzqAGNL4(iT_^L z#Xr2YlXssHs9L1_b-g{~guRi^Kb%?m>cs6MX|r@*RtPWJRHbzGWu-&ym9;8Nbu$_2 zk`@U5y|B7`h3V7Tp%Krb)(6m70fHk2%!0|YX0Eb-**E*wZ&#H~(vaB~w734l# zBvYcIY1h){@y(|E?ZmTnbN(~5?(yz+=b6uYdcMwsJJWuti@*KsUu!$-`nr9yAN)D5 z&->`kSB-7g{s#ZOZ1PMja<**pj~Mn}SHFC4-;~jsE#12^(&>53g>7$ocg&gbrc`9* z8^J@@n;7K}_*+D-us*!K?eNZB*R-dL-I=*;tv~DCr$x8D6-qhY&U+oy$JBA$i_=DE z&X?9U>7LU$$8vd1E;&i(a&meJu`w`|F;s=`(>{Id%%iwm{Y>4QU(>`&yIC*GO`LrH zMXjb+xJ?ptE^P7NTQ_Bm_k>;9yi$2>cT0)L;a#qWQrw?gu=HqJzMINqX>st`60Y!- zTfX(AbDXo;6z!_M=ZEmsk55W6?*=E%mYDqcZ03#A%$J{f6v$r*yT1J%^V)!=+s#YX z>&1s$Iy5=2Y0{C>0*k`*=K<%cOUfj_ie_g<%U;foR=j?=aG_qtkspUz5m(7s%3N!5LGPiczy-j-W$}PXoPP>`(;PHk2=@-N$ zkBV*yvTgGB-xiczf2%gB*S4bP%Nmh|4s)&^)0yP)bG!Vq;7!r*B5y};w-wG~eIj&G zwtuPHtye#PfBi03E$g;DHgos1*;_kx4lAt9Wchr%t2sZaQ!cuFMe@hhqNeMX%Y9t7 z=2ErG?FYYI4_7^1X&N(C^X0|6VlP$(1z$SF74+x|U-6YiLDoDh-)-H+nilx8ZTqU6 zvrgPyD$2elE-uFa?7gM6)Qz=-TdZ{(t3Ti9j`A0O(rg7Iur^IdAuOw5lsc-R}FH0CFzYm#xJZ#QH?xMBkQ;run?u-gJ zS#RlCyItm$|K%sa>95aOOYQl(I?t|k!|T6hPk7^V)1HbhZIAZ4vPA5f#VfB#PK^hZ zn_mZhTKPG<&?V-S&96D)#j}3rE?8GRb@hV?9iElPm+r86ZuseVir}?Z=NARp2R9gb zurHm~yW{e-YSDd{?k>8oWx7pCY0Jt$>B20h;LB6x=6On<{HpT%`r*87k9~8mE)Dz= zyGVDV5MO+h)wIVq)MfKDrmoC!== zE!XB(XzwVxacc9+SF=7_ZjI7>T57%c%ciS6sbOWD{}~QO`)YZw;^@ z+manmJ9_VO_FJO;@72BA?w>T7MITSxP+hIMb>Ug<9FO>-TOl|9ba^OmUz-1AO`NU& zp719LA6L{q*stO?$;SNck*Tbf%OX5k=5L<%J9(0S$`0HA443w4eK@(TJIHIx1zU9m z>7F(6M=E#N&-F4{qOnToSx->CO2vkcmv61jf6>o7?P%`hvS$l2e+azY5P5#Olrm@L zmgke4f*4MkzFVrDsQ^jYs0UhUVlE_W*b`b&9QWzwqq|?0PdK-Blfu%5XF@aI2v0gR z&4W|n&&j|O>vh7!^+x?wZcNFYMt?_(0=akgkoW<=$ z3~zjMqhq(tT3`Dct*jh%y)lZBZHB<(A}z{t$Z z#LULR%*w{X!oteR$i&RTz$(b5$S!2aA*|#Wm?&aY*yuEIp{R1u#*1Pq#z{p7ImMkn z1UF53XyS6{qiXTwMVr(@lAAC6Kf)lx$jHD1vJPq$0|NsKD-$ytBRj|cBMfGO3`|T+ zjLb|dENqM{%!~{S3?SPCS%nl09Rt~fl@g5#8$XClT)6SzMRsKsH9td;oW{h(#ug6sEJTFeytm=hey z>XLjUOHM6y$LYe!_cyf5JAf0qXS(VZsg;OC42#oAMXi}n`yafc}&4itEAt8X6oJ>(p5ew&sJT!d{x~Hh5r3Z9nU^7 zdK>S5Vc+?k+~(SP+1oGeJDdMY%xv0~?YGx)>8aL5L}v!rFZE4)WqN!<$Mr8t*6Sur zo99+3=0EYD@b`n?Rs~%yoW8^>TtT4uiqwlNKULS=x4T_ZU6R#LElm0(DWbd6?C@x`zVnajoxXp{CFQ62Pfhx2 zS9!?nzSj9*?>iP9$(otRgCm3P79Dc?sFDnI@+MD@m*MsGf-w0n%H&xl^(C<`X`ZjbDy|h zyIHxZ_0wvGzTN*qb^bHV-u$sq_kjJ?$Vql9w5Q$h`Yvg|w4`lO{6ED%FKt*i>gYY| z{Le7EoQKD|fbn0}`xkjCvzIOHIQsC>YdIyRD+Z!{yZ^q{>2=xv$LnS0U%%JlZg-rQ zYjD}tZv6MP>tNu!iVeT2XPxe@+Q;>XsWptYhyI?wLQD(|*} zv_j@Uk8QV}u*D?_Ezww+>EEKuseFXv)kd#v$JV`i9oXM=UQXLRlYZ(R_Z`gz~atk}DrK_1QtQ%z3F zI(1E&&R5tVczt%xsmluHryPzMIIf!WX1U~w(XJ55~Us|-SPbW zeeS-j2Y2-oHN(5VuGrJ-!Cb{QY%O@k@EHY0>uGl77k-&lodVdYX)bmiCL^nXILBlHo z>at;L4+)qDe(?yJ+*&cK_Kfzi_jj((|M29(yH(d$nO^xe>*&ENx8AN+_}q5;<39K4 zT2rFrc4qv&y7o)lgl#W))w3?o%3W%lv)R=p<7CjzDM1rIYy4a>XHv~cwW+o$(MGX&DNW&;A`9W>+CG=E{)5(PHvx9 zqIA>tz?}{z|F5HhJCQ{?q@I)-8WpX*EY?{rs@|Q=bG)S$X6jB!7t> zydHJ#_Tjs#C0DFkADoenDYe@CY-@>^kj<5)i3(K{WA>>RCi{Pwb!z6XWllTq*=$VQ z*lMpDSJSDIV{=l0KV|}-d!3|GL;s-sk*huviEl2o%*QO7(w&E*hf)0fp=#X?l|F6vGJB< z@H$-wRpmRAw9Iskd;ZRpms{x;cV=RN{HA~F-*Q?#nyaw7#=3N=htKY*M~^O?u(Tvs zW@TX1Pe%)8hGdmg%P-lR`%`?iZ+@KWmwEmz+saB+y||QP-l zJm*T}?cFls3#G!|<#Au=J>PI=QplR62?-kEvZsq~tC!50XlJ&rq_1t;!ObbrmYO|Y zhuogbVX%39bKdzshW&@+gfib+oEDrl<4DNfqG;YJ-#=Yrnj6)5*WFIQ@6Sq)0}PB$ z&!?R=ln(p&*yZ*+Kek1yKAb)`scFH6i|?7!3;T*1dVUtC*G+xnn{#t}(v+oDI0|}$ zHH%RA+Scs+J!MBKex6V+U) zQlqwb`|>Hz>wfkqCQJSkH7R~qtF@rBQfBed5X&jslT-C#eQ(@co@bNny{pF6X_AOw z|60c_m;GKvcRlr1HJBO4!OnX5kMf18`5V598tz$nMnS(+hWFK>%ikNF;d_&it(XKxnH7B_E$>P){54Ow?d{@r=c?FC1<1;&4F2(Z6 ztXcD9Qq|<39XZ^qCvRWv`K$Whe}7CH+L6zt4&l57PGMn&(x0d5}A0>hmPSSq(=D7_^RElsc2SiWN-yNRG%O`C;8qs^*`1XQhDDsV*;-V-hcPNV#ll+ zt9c>29(sD8@97ut2rm=iv)p~~s&(pF$-~_11uc40FBMMd@QYJhW;x~E+fDOUh3{mL zQBU$?pIa@ybj#V@ZZA*g_WQfLc;~J%Qa+X{E7a1%UsQ9_dQ!1NY4)e7nllXNPBgq? zbeKcW>d`r&mc~h*Uzqk=Pd%kNkNI=nrpQh{E$)81Plp6 zp_`@jM}W~(kFXoTou8yrHI?(0*G=5?DY-vBI$HV36D`Fn7rj1)xt{xeB>UfzITPMk z&v{y-eL~`CqW$g^jY{p^UdHdA&sy>I-?YN-p{3gtcF7z+vaNB_BsR+fU%vkNH|xFU zho4m&y|RjJE=-$aA!4SqN=`FldPVH2a7Lk)6a0Liq<^y({alz(r}Bj7i!yu8gTRYZ zE&bR2)LeOT&eAJ?W@di8wsVqeT)DLBq!*i>oY0vrQWVk@t^WFyTlS3EtbI4uebN#0 zZZ25vSUhDxdu8f$PS%>cx5g85Gvp99_BPh^Iu5@VTkQ`MoE- z3iq#HTXixn=EKhIrS)Q8=Jr`GMvaZzt_OEs`e^FjF*)_0A>(Ku^D&`GQ@8oKF?wzO>apH3 z@s+8GxBsNuy>m3RZZyA)+xtq|*sAYf@s=||la5}J-WVI?prU$2M96r%b6jYle0$z4 zQ{77^t35kwHruUuUBEPD58I0{{)a&xLH>&x*NVI8N1NOh`7`H6Ri|2TWW>$L*TK7e z|LCZ+{@d!}wf)@o{df0?O8kvR77IP)L)|nm1)DwkNLCJCa=}GCis8 z+48c~lP|Rc6_5UKU*vY6F7*4^E1iZxx9cBU{@CAAb+wZ3kq8@aiSmi}(?a}e+Apn9 z78RMK?xv-w;cm9~*$+P>i?myC* z?Oo<}Myao$Z_!>`YpK%#k$Pnrmvc@TRx#u~#zMa?Fx03zT#woj!Za!IhX|}E2n(6-;1ZSM9Kkcils~US*{NKw2 z-c8$N6u$gtQ2Z=gC9mt5xX<-U*|zlCQ@s6|r_7(p#m=gJM{50V?+WlhDB9jx_nBzz>V`CKTS#hbM;NilF4x_DNDBXYfH@#xaWB1jaKrawdd~1c~$P- z=6Gn%v4UE|(8)n3gEImY9cz}V}VrzJe|zpwogwp{NY*S&DPiZAB; zNB%P`EPk15nbpyfr0lOfg=zWm3jck4hu>&bs(aqdzveC(j&Cck}(vub&2MM6vt6$~LKN{NlFbSb#Rm zn@=_ezkg=GE${z1DtmQV$Cf|56Met$*`eirX~8+cIWZ~Q`nm#pCihHFdT?cr%a%-C zyJ>5*bNw_WP8Cj>Ute|F#`(&+thyg(if2}8EjD4D*D7SE56vVo3fXMOkK_8snGMq^u*4r1R;ko z{{^d=eZKiUIxi^IS+f1*)`Qz)4nzm7GnVRO;ye(UvwH7A=^o|6CgX{7wGY}I5L>HV z&|CTF&W~SRIjO40)&>SGt`EA%C^wr$%kb<8hlE7O|yjm?uc zd|4ABzQ~}kC+y}^(RGK_e70Q{JTh&{dI|L-H@<#ft#?1Ar)|Q8#H|d5yNc?qwwb!k z-2CcpVBzjtZ#S;-@h*d_0Zs~zF~I_R@3wh<Y+ zIIk08_`1?=$zJAZx58UZqwd9e$?BPJ2>i(SI?CJO&!8Hpug{1 zHP6q0{I~n_w%?KAPCfLpQtX0ALR@WdcRpmohkh7=rKVu?_Xb%16PRqr8&># z4c!diU)m62nN{hqVyec^S#w_;S2irjxI6o_O3!D0tz)|$$Al<9l(-&~-PKd0{PAt^ z&D`5tZ@CLu$V#q$x+!bQ-*>!gk61-k2!wq0@O#B|E@aA+=Bddnk7ix+(^3ihWaE)2{+p)}cS?(sn=osSaCx zkKUYrPh_h`Nr3wDh3lt1tq5s-vSPyA_6y+$+UM?AalG%=z37HM7oItxGSgM@xBfG92i~sI?wzh1rWyFNdBLY?Pj*l4izybk>G#vC z^VspFH@x2| z>Q>V`%w*LT-Mv?x6yWC)w!h-#ZDmb)y_&8K{A&YiVy;cDnD8c}EM=$EX_4<;saF$E z>iraDoWN9m;NaR*-~F#XIU)%=Rd>DL)#-!fRru{Z%&wY)KHv)_8r=@Afi__N!+m`78aIV!t+j_9bn@gr_F+ zCvCdc%OMo@m}Q!bI>Y=4ziMr@Ht&f!siN{^*7VoXAA;+hw)8#<)e4~)giB> zyGp)PrmCH~ebM@}?jG&AN0-mES)o3C%9H0u3j2aGb3MH`etBniTHWdAyuevXM<P)+3b4vZ#GlP(3g3sc{I)&sc~3RU)JFa7bqnn$6D1$EDoo(`)x@FD+o90go24$CD>Qt&c zW5Btr2iJXWB}Ci`VO6j^xl`Wj+=X>sU0c>}P3W(B>3=mSZIg8AQIWoeSwdi;2m9o(_OAq(24d3`)VM)d6@1YNp zpUKbl4wLzPxcY-f+MS=9yjI!U2TWsp7XLct>DR$Mwq zGfPhO_vC=Tob^_9(M*Q#Zsl`wN;9y=e(#Pdow{_T*_QH6UUeZ?{B>T0`zU^Mop`gp zQ)}BDnTy+Jatb^tw#|(0KCayIG^gi3gP2#tSFV3rm#4OsoST+sk$duW&^p0sVi%n{ zcvr|Y@dr6dp3UATldbYv*XH*5l}r!Cd3|#PC#+X}P{Q@f_LI%(oELMHubldm7cH%< zcscsr{>gtjV>P`lMPeDVV?Ye;@A>|?Z*_6V$Hl=XqWi=a_=N6l(X2VRW#jKn!Y{Zk zZB4%FwwGhQ;g3nvb!DQiO-%XTn0x=(3UM}(B`cq5YFYEGRCq3NKkI(qSEbd{{X$gs zo?O>ZxjnCEnb)SKg>$a{U9~7m@#PU~$qc?0=8g9@g|7Rt!cR4KHA_g-!y}eO55H?y zx+KeH9rbsYwh2|gD|9mI;)~bOzWdhsJbt#qZ~d&WyE1$3BIZO>VNjS}J(k;$YCm{U4UAuk^56c&JtGE^o)QZ&AHs+Mbzh zQ4U_xPHsX|8aFU7Fs$HDe`}a|X^!&cjU`_^HgbQsJ+V-S_ui}}{T)$PuX;UaN%_L* zAmbddu^W5hhUt5u5xH_D{J?h_8i{!N>GMkQ6 z*S+5z_}TI4U#swgY6osPzPndZTadw5v+@D+-a5e?gZH|{zA2hncP!>}9l!tn!rS0` z+?m<6=R3o`+<(x0b{9`&@lxkvMSdll^th*C95<#gHWhd>yzzB=bMjd#*9lc;%dcy{ zsN64FKV?%uOUXHvK6$GNp}BJkdnf!V{?G7E{?d-mCR^Vb*etTX@sGXgUqa|CHsP3` z$2m>+UKg6T=63mgpB2xe@(#vqlJfSnt9|7E$#lt%?wdyCY!&`XO{Z8IhDF%yNMaM-;Wv?+Fc>dHkJZF=BXx4AtiOubL-^COce43iD>rsFii}2?X zw!Jl1tg>#eDtYr-^qqE)Zn?y%oO^?}c|1Yd6_=@6253di4<3kM5M|Y@d|Y%ySiP z;A-O%ZR|@~EqdYd_SWO2+oc0p1fxG*39k=YJ$=*7S~=yvXW3V-ZM$va-TP0t-MVBY zKc9YZ&aBRv*Ph*}Y@d8m&#L~_f?w6mJO1o>wa0Bw)mJ7PvD+S;%rnzVwQp2$&3W;9 z_O04yPflgJF20_xwXrLxZ%JXe->JN?(3|Un9V1Pr?)vuq@IpVAng1ESZ3;fI`QLoi z$}j5oc5iif?VFpo(}- zAIYx>pBnz;an07N^6aUHJ_ntiyzKswJ*GG9FJGMO6*QIS#ZgV1b3O_8?%3E)U%I2? z+@@yPuTiGly4!U>w0zI;&b67dT)HnsmHp_I*8C^tQ{BJ5Yu)@&-SdvgyVX4^x7X>4 z=ra^=S%2tpO7p2La}ORn627sj+VpnRCR?3P+e}}G^l0r**ZV20z1HK$-JA2HKLkBB z^EObuZ!$YizIBhAL!_7C{QHV3D>pG53}jUKV*O}AmF^d>60ZqP9rn8&W%<{7wa)c- zRdW+srRQ^DkJy7LwlSxt+eRwtC9)jfwp>{~NAoC??H_xe`C41vy8pJ-4O^+(;`URZ z!9d80fqiPo9>Z(zBJy})x%D`QFX6R0# zK=1sEviqd6=D*Qf7`m#e|4sMl16v+i_>^}Xuy?Hpsx{zW8z0*I?6u{rWx^Z8HjD3; z@CvGNzq5M%(iDtHd)IH@)lZ8J?fRX)vfNMY<|C7Z9bqBb?Dj@?i|rQ$KaCFBP@a+frPlkH z^_JDyFDLU(n~~T)!A6@ir?_ao;kgjwuWL(>ubjN;U1|81-&0P#y(B3Styk-C;;;5> z9g*h>&F_QXB$^)IIiG8F%F4K&=5TdQTZ{Sg`Q*h`s|&t6r+I8Lzx&C=?EwvoWF~z! zoMe8?NG{-nC9_KU!qvLP^IIAuBcJ{g-m&uYuK5p2_*QRpPCcIXihZG~pK1h0->GYl zE|uR|nK+4!|5Q~1bG$(hPx8{t_u@A;U&(F1vfFrHuh)V(RtM}}hG{>Yy+R_&zwts{ z^RMf+$xJ&xonu_{ujKEE^}WaLT`7tBJ4L~C)o#xh*TgPexss`OCQw~w>9m+a_T)dA z?$7sDEsiVy&v1CYKXd=!zwl&ex4RR>9ke9pJLGiy9GkAPC?!iuPk!l43K1bBQj;)%r*K;f1XKMn=rX& z4sUCf?a_M*#~%KhT>JFX?!tLf4fA{F-YMw4;{IW|!sIWq9&5Un<>*Ey8OvE&2DLP> zX~pU0#s1~1pLcfMl!edSwVl0EcQ00R{7}qu_2p{Q+=Wt^+a9%)H!54)T3x-bw`GS` z?HZSvJxh<|aDEB+&#*ak?zPW)#@)S!E}DCHJ&`Yb8}xLC%u_!}IZl(gzULnO3@e-; zwRN}dtL5THIKN%dRPDU>)MCpd<8!wzpK_n?x<2vse67=$*BzA%2#vejKCABQk?61I zcWZa%Z28Vr&^zh%x&=#^U!S@>|NC{hpS$rTFH0Q}k}c z&YO|M|Lu4Cwr9zf`8jGoxwI3v=(hB5aym#n^EeP@&%yp-&g)x$?kDcl*>Psth1YsZ z79P7cVaZyRgeLv~_o-F$=ABVzwb-%wl!w(sLFJ`)KI{DHJRcl3pWCA6$#Ng-!$*(o zFtF@9P{q~#ZQg_CJA&5_o=%D>_KpwPzBW(xNb;O@M*XXbr~F#ddy;F_uahM)mb|+z zb!aNQjXZZ;??_IJ){8sSr^Q#@I<#B&fPdq>r-$dRezYwsGR*t$wx3Jqz012W=b4;P z(83E#9R#OL@KCnpEm-zZE%(!U>%6Iln)7Dn?z_u=$nJK7?zWi$wvR6D$)EC6SwSFlzRoPSTermp zZW~8AH!CoeDZi-d+F;7I^z!t(YLd~qN&*z_8J3I8pv{|u-;soYSzPG!@Kr4yQ(>y~SFPM)YU!%_Xxt?0k?%1Q?(JhXYIJ=4ol{oZmZYp>&1 zCkGr^HfddP)548^j)rfT_o4Sy^3tt3v#sZRyUy(QQ(sc^S7oT@7pLO27Mwzdr5{O6 z)?BjE@`;KD^V@A%Yi2H5ywZj9wS+CVT>P(9=ek$siAVPCE}g9uw0Yt^3lDk63$?3U z*W?(y+h*eJQ#R?FQH&Eqpxu+w1$O(6{A!&i_tE2~RLLr}wK*Gp%~eQzHfiZ5w|lSM zY);R#Wiwy<>NB_BE!8{kg9OER#6mv5*Iy(waq?HY!$oDHPs65O$;+ry$voY?GWh;x zy^kqHDxanYO%L)as!Cz9`?{cF^KtI=5=o}nI^4c<`Nc&=+r6f$G+A0-72K~W$-rP# zypN5ct5CaZd!E{BP4jg5IvciY%ieBmZ{L}qeRxit@>Tcic@5$Io>}clEwc|XuUS&x zF|oCO{ls-9wT!kMC#Oji7P>ukNEiJOucy&=zUbmXX{nps>FhTrd@3;flyr51|NGZ} zPJUZ-WvzGiEak?W6%`>?Qp>lly}6aIs3yZ&KHux7@XB!3qYJZDr&l#Usm*dcG>_%} zZ`ZqdoZI}e&Zcgi(rGS!Bf8N$tf1|Zf!M;+lOIX2RCP_YnYSWm;jxFYlCsvfzH4i| zJAY+*#J07zqQ6^D6*sQ9xOl%M7rI;Q9T{N1O z@+93`Q8YQ-JJfJ(naEOYVS=lF1m&~~uH8Pmmb3V>`GqOwmU}j;@8%A1zq~tdiM+{t zot~!PIl^&~cS`=8RbG)-=6${N{zc_--~T>Pd?pRaZ^gj+u*9zjYq+Em(SR+dFOuy&wpFx z>O)TJh{+Tts3%RT3Xt7B_roIZ&dkH7C-+D_wyy}z_CC9sJJ-?E?r~NB$sO7=R;;$K zdgi_Rp^ETceyRIOZyHOB>b2MJS~``dXKsU?)2>|`eeeIsuim1vGAJ&=QdW`Wv&F5Z zOA{NfOnJ0un~_Av;rdPv5BmVE>LpVSshg~xT$wU)&ac3|9YAA& z%xjpJ)?UBErNnfnLb_bqw#%%VTPq*k6e{_fOZ?@4T?N(BVd|UUVMMf~I-#0;}>P?XJA!-_Or^XZ4g4 z)8DVxdL4PadUa>Zk`-T8Oup{3_9$G@wqX#Qf-x||B-lJHq*^PfuU%9XjQ|Ucw!b`25|j(;*q7yXRmqe zX6h8t9gn*>y@c32Ro*a2KikLsZRysR9rJ~2XB{y+e@bk<(D_9{=7HZBuF4+0r)IlO z=j7&05sNdN?8bK|%yZo}!O=^wsYbo#`MSf)ig&G2Pkz(&=3lThpYBc7{rN#VAGfXY zmo(+h==m~jP1(E@M~4IaI)BbP*3Ss@(tg(qf+nA{*DUvg-iZ3bWEsGK0Tu{ zurTM{xb-suKqRqRriF#xmngb@bQM5(S2*(88tobOsZ)O^W)?9dAG4BabnOW_S0$=4DWrdIm5d*=jq6| z^(oj8*W&WsCJz;P~)iZ#lqO$Sb<+ZR&4w|>_6^IDbBiQ1zn99-=Z58uY4|MyBj4PzRIbC{T*BOuN|=>r}-_F%U?u^L`{o~ylmkIm*V*DzZbxG!tQ#iD@jZq>^VpGlt0s;KHZ zb8Zr+>b}pDSA1Qa5xMyJPl;Opjo%E9T6AuowoHYcsla{WD(Oxp)4xX6>zO*Way{*} zR?lC#Rg3rF{r33w8IRc(8|VKyVHy8A?o?o5=C4^VSN({VJo>%AY29qy%)-oS#Y`0q zc_r`K#w=)5`Gqb1Zkc<4FN(E|dQ-7Ut8CYleM|4V`%PJzl!w3Z>ilEn zk&HP8m;7Uwsqd@J;&JMq|8ahRs=_-PWtKVl4TXDsv}L}XyK?UIBi^oK9D-}7UDilQ zm>yT?Y5A2=S6Mzd^19qgl@mL+TdkNfeUja?HS<@kTX*OErEsm3)>N;+o609O#P^&QI~pwhy*`?|IU)rd~Pr^tClbw{?##-s8l0;NS|k zg?kn~IlN+0<)ud+mP>ABe3shjmc2b`(bZoaX6=mO6JKTfeUp0gW_NP#N8>10jk&s9 z|IWKd-km1aBgxLb>e5mbCNn?(M-nTmt-e)HJXWW6sy@hMX~tV)MXfoZ6V!LO8y8-3 zlywu?Qz9WP${aUg)9J!n&Vd)&X5}hsI0*?&S;E7>@Iq_W&95H6(&hVBtu%dAUpl+G zDCYV`rF>W&GtRY>sYwSAn3*4N8*!gR1^dXJc8UELb5%>GTvS;e`lgLckA+f zTyx9yCrx~ynYolnq_*glhg{8)pJ9tCTchR$c*(GG%Q|gS+8-L@W_3L^aCW6cVP4Y^uJ>e{yqRpY4ll7PiOEdM{ghUh#CXkxPf7=F@jGD>+Mb1t;%fI%NEe z!9w!DU7szd-nq*^J1Fa2du79tm0Sl!mBMyTNiL85w6m~pYsitkOcPtfujMPtoBD>y z9QknXk5J|Hr7KfY)9s@kp1X4QmPgRW@9R`-1N^ zeYemwj}OhC^?!v1uKJO0-+b#`*^Dc_Yu0gX=KN}Ys&ite;`Yf`1RN|SZB}u4-c?(A zE9u*cBI!b|V;rB?hB|tF_1Jj+)LhY3tKNS9&)~Z0?OrqU!-f|Gjz46`4b$f^-Eryr zR_8f;qTZzxub4Zdpd@~SE&q+5AuRWlVsmv@K3!tl&mlcI=%1`%e#jK12SQG5mea$$ zxK5PpXBXD#HZ%&oP#^yO@SNky-O@4hvpyr^w*V_HE*YBUQ zuG5~m-gJlQ%Ju%5|9svBO<8gD0%H6beU5gGCaVFn>U{H=kto=3_TpQ>+!1SF0GSyp6%xjF1L-hey~PI^Ly2fbsd@ZM;1S^ z4}Lm1KA+b_{oB76jiobkzddjZnez1b-pO+t{xg{UXK;R6x!%Y9!fKalYsL=c1s*^5 zp8Rb0Y@4IyzJDB*VTa}Hz3%ManDZ@MC(5Gw@4U)?pI+updcA2<85f_333a<=3e?Wjc@(NW4ms~zEAdK zmz2;5^7NYIz9K;R?Y67@TJxvtuIG92L(Vt#@{+{NR-oLvy|GYNms#KTUq|2Azi>H2a*}h?U%-1k0mFme2wkOu;uX`^Zrx`!B zZl~SUQ@YTvnRA}Ekr{}k;)oc4qZeRZKS}0vB zWVQ*XQCQ{1QzCs&YW-qgezgmY{nk3;+UCc7JFAKUerN7lr*N!H@IXSslL__ZS86wg zA5W@p-S%p(r`f9;sn_4WbaB6Cc&=sj+$YO(<~E5o{;{jLt)uqG)b-WVlA!A4>w@K` zY}>ghASNrEVGY9@N9G+nRtNqLG>qcSo z_qnSoE{l~v(%xntBegNeVAhXiGAdWvqqMTmY_6(GjWoMicK;Ex4}UpR|I4`LWiAhn z&3~BBsbel}5lE@7H=2LeCvDA zq%huDuXJY9+Ti80qrY7>vk409S!en68S~*68|EI+IwyWPNTzbhbVm0T%4~b>ul$DRf>+^TBFHHO=X)hKNed?~C%BLrDKldJ3d*kAi z`APd{?OU~A*PhL*7l(f|o|$>H!c%m?I;$$y<-XfB+b79BJsq#ao8y;1t)Eve`0R9xMB!5r#>=Lbp2ts~vRb`+PxYkTeXC0kExYzH$nmz? z8ojf#_SWB)?wv7do1UQc$DKBPW)3eer06{P&oI?=rs^xv1(UX>zYjZ~Vt!}e$0Fym zpH{BUUHM!_HC{7lLd%1yclBCVYda4vizu`RTCZi?xi!-(H1Q7JT~cfXkM}1_iwmos z-1nkW_vKt~#jG;NCt97BDNj}&;k~e^YOQRMr&r(C-mS}7zt(f)2TD8&VOxBBTKI<| z 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� zPKjqH*Fo;6xyQ{yyf!f&U}s=pSm&OV`RM+E+K{p{ZIOM9EYJ7UZkadNOuhc!)$FT` zw}TvHG+PA~G;eNS=HzH`z&mfn{4&GF=a~F&BlFvA@v^|E9Dlvv%C6ZUDbuk z80SvAE>E^4jZ;l3V?4duCyM^qXJ*2={I1}n-=AZh17`;YcX4`J^URw)cUAd{Eirs@ zg-j2VTW!P5*CsAgKY4(6W+L-`?^=GP@F`6WcEYoM@6b#$|7Y})V^2pR@7<^=uflsY zxAE6(DBk#C+uBv~`Ma&FcX;je4Vtd@Sn(vkrni<>)RmA$o_FR<-nsV2>sL2J&v=KF z{GN8TDI>taKWb~qp2(i>MFF?Eg7+1Mluex>IpbpFhgP0vTc=I9Qs%a02fx_iM(O6~ z;R2i8&lPR7n)%)M$cZ(M@0O|aF*ey|^*z#TUU5-(`Yq=k`_BqrUQhffQy2OtJJ#*s zPU{b=Wm?@OOu2W&H%%y7uOD^tlvRC^ZONVG;@h`AeiO!^cir~JlOKzB1Wz!WU?qQQ zO|H6X`L{X&^|=+Vs`%H2Pj_9Ewjk)*qG{LI9@HEuW%z6O^U8bg^R7F6{}^z1e3C2m zS#jsq7rW_pfrsUcyo<8GsDF#KIyb*$^6%@{uO70h=64L2XD|J6S=|0+xa(50-Q5co zrvGa`&LC7XsetjzjW@=jHIW&+oV*Uoyp-E&@$lZ<&f+QdS?ks1SeiGimbl6pesSG# z$+XfhscYJGPyhbAU)gud=lpHcC8A_S7n#lh9)p08F!9lFr@?Wj!p#AjEpE@xm_^6Rm3z16zia-rWp^TZxzgI9B|;Eq>*F%q9%&)2#%)uHUt zrA_)V+Wln>trmMN3tZX{*h)m`u6cZ(D>(fItJJyeE0yd*VpdLyI~KO_jLu5wx3ez) z(cKl zosQ80#@k*i7Z^R4Zu;IXJ?V9Sbl#uNogP6(pw$KiDkWZCeTUV#Y<;s^R_H2vD0&8* zPNL&@%vY0d+cJvA1{smV>=_LDJWzS1GCEHOB?GmbWtwZhGdCQp2a8ZeW%ef!kF5MvO6lVCNEqk`rO;Lpj7uf&0|GL(E zIY#dCt$ml4A3gXwW=fuuM-<2B4|D%BCTEpG9>RWYm3P?!rwfzBtg5d2#0&S&TC!TuH%(;99-)`lzl&{J zsxyCWL0;7IT~0f%_pWX<`!i+9Q|Hes!;Uh_c}W~>ThF~!3R9Q9uDT^tPV!q#xZrLrPOkLbSBjsX*c%xe;1yECnaL|E zIPdL|t#i*AEm?h9)G;!4%IR}%vkqTe;#TNuclv}zw72J>NejwZ1RUkAzFfUN%0zCu zXJppx)QyL|Gnj4G7~OITns{Xn1A}ZfgRIKcdtZxpIF(+Lo@@F2rqgYYr(So0CUHpf zFj$a*+Kf3aK)DgcgpBQ`6mLK!8?en@*ar>*@lVxAmEIGxM=6y8L zI&aOD^_%yti85Vt+G>uP?IESPUR-U~*G}Bw|1!1Yi`>+?sjsGrYWiufpO}N@~YM$FR?t^x$XkIZGkVuc|JM|AJpeebVvU*15+{RbO1X73^=euG^`R%kx*0Yu%RxHV+=JXIejpcdza@fv=~%d`i=JzD-#A z$EtY3<>wM!2VPWZ@brFSO`7Y{s{UMlZq<1snd%<%M==sK;=RWm*?I?ZFqh`B4`G*OWcW$x-(+xRNI6cXs=) zNmY|y`KEV=JeR1<@pif~Q8sn^tU^_-+)N8ig)a(C9IL(Ev!|`qZF|SZaA_OoXM4xs z*OR(#o_rRZy6I=tpNU$*9Yt1`HI_0mYX$W&h^CiSJ$CV)@_Es_yj^jbTA|Cl+Yfyb zGFnz!G=XdKDH7GrcJtRr{&l9O%WvKz{y z*G_nx{BDWb2Hi!k`ku1L&t9gTQZRi>XnWYpA3m>cPl*m&=S^TIaKg z&Y!N(Jh3NXR{2(O4#iB)Gp~D1KI=xk`!wmw3SIMuxlb2nzn`#hyHb<6ghb#8_1T;k zLw?0|+x*F&&AZf2jT-EPNW%Id0e?NDW zY1?j{x*}FDBh5)VTwmE?>aGnn8*YWw-Odm7&$xZ!O6&sDDN}Y`UeRl6a49NK)4$-B zl;*2)E~m!tXXC8O!&f_hoOJK&x2#*+IkPgq$Hbjoni*uY$m0Xk0>7$cTi4{1Ra6W1UaQ0_A?pp@t`t1mFP%r*m`E{+)Hlxj}FKk)fziW+q@Ozd2472P`&Wd6^ zGF_zA;M1-hC!eanvXVcw<5NlW+2%WUuCOnfasEF;s8`aRWDk#bcRj-FLUXczPFtgL z?XK(EMLVNwi(c05xBol!>2bf64L+Ugtk@?7o}7Q>`dZm}CCOIoO}p$a97zUYtheaP zF3j{*RJ*z`PjJ~Q>FFjRt3>*W^W1FmCN)2dVCR%%pV7QulTCHj{p5v*UKhNY82xSH zm33>`EdTJC{d)hiI7)l_yZo5cja+wbPfGJC)j6KHD!41t1sND?$~8!5ShYQ+jWV-W-rUyT@M~;ClxsDQhBW6x_j5}lay#D z3!k%dpQz@pRn_upb839W@nyZmZ@&-L|9rC3;y0MN&DcM6C!@`sW5%5a3nxEsJj3Pr ziqBlr^nLKP-mDdxmP_ya`Lg%x>LvQE(-zLj@mzn-q%5>RGdD5kbF%Wn6`~9OxiWZu z%qd^}ynPny>bDz%L^g;_dCqdZ?NDIG!=rs4mreUw%Q2xPh39Ja%CD`rt}a?HrTaYC z>b&Z)J3Z6)c(px}@!C1d&e1_+;^iYA2hY{bbuXK`Ox04feTsnDu`I^2-C9XgwuerY zw_^UYVLBJ1oM7-;t2a-)a-!2tb-h$z-Sla;{lZoM4(eFU3n=$Gm38Z~m0$6No*yf< zc>5CjZ30BiMYpnax2>3*KH2o9XH%uhuBD$vclRC)yz}X~e9SMdHN1NZWOR4%v7cI# zv+#9%NM)b@lrKBk^*u}db`)Rrvb0~hvTtgd?y=;YSZU{;H9f6dOagAKHJki|YF~T4 z;$zMfPBMO5?)gz=jcV-qis@2*w;MQ~-M{O;{?^LMTShvWd}dFs%X(O_YH(ZQtiS-SzEWCxb*B@2Xmy`1EUAXZ2Rs3Y1&^ z?`T|%?xoyU%O-8wU^HRjWQT~T@b+)jz4ISWR^9f@$Y{dCjo(%s?zq1E$W-@$r@5Q^ zIdARWweh5sozr8tnomC)R;_#YUB92(h~M7gz6nd>w)9uhPo#Ytm!8-evt(h%T7?HI zk7_XPpK$WdPu|xT&vAU1rOv*^IjrMdjn7ZNn$UA${~7jASh7TWid+YyqC$20N>lGL z!v}jj1Y{oZK5?6AR$1C@5#-ckc4@2GqhoI8G?pw^E|}BTWx6VJGtr}RQ@nAxAAc8(eRyoDPUeU9t+F?@ z^O*Sm3b1!Re){ml0oxGw06v4B=$P&4YlWL%&-mQxxAIZQ)|Kw6E^|++Jhv--?|toT z)(y)Y>UXQECN7Ouy?ycC+NCR}%>Ni6`!D*-U#NH<1$@Tk-wx~Ytyl%PC=^a*nB_L2cMkX6;+nE`N>fo~ z!ITD1^~)-Z*DrnQKg_=QpYl@YdcFB?!}I1my0JAPoHN5~(iV{k3plJp+4CpOShKK! zt9nVxgRi%CDODVgViLMl$CUjs#PgkO5Tmjr!<%}ocem1}?3?#CLennv{FM)<`~Ku8 zPA_Z^u$PeKzqT*e=GDE@E!#x4u6e*< zy=q5L*oupH3a6w@x}m;2ZtDCmeO(hR6pQ0s0HQ3)R>9nM~U? zaajQ8B$ zBO`w_{A=a)#igl-U0-R0ujV?G<{anbaVpkRB1pvMAWQ$1Jl6cXnk$oD-RAM0yQg6$ zZ_{H}hn4LHmb1fb4&MIyBKxjw&e2m^vDWWOUwVbN;n}kfSt+93zuGi*x9g3x*!AnC zJ$A~U>*??;>f}vLkI#YD{Q5y`zM(ORj}L6{ulId%v^Dnjf$7$qK}y0ug!n4w9FOTy zS6+EeOHJhOv!rLSPpplipX=HDI(23J&TqHnB370pd7XQ|$?{(KBd!g%Tf{^5FS3}v z`s?BNSC!?rpPfG)CY2(y%-Z=$uHAvkpOgIOM(z@B+wg8;%jw6A9{FY0FM9rx`t{{H zcf?M`of!f7>^7a!+HYg?RI-+tOq~(^pziHaW$E0lku^Jx*{Ta|dbjQVyxIPBUiy98 zr!P1i65;(`QCZXL;?sZYz0OVFy<8zsYjt#ZeDmFxHLb1BXK2@4e|d9$qt|0|f&UCy zcO$qi-YN@{nKPX&*zn;amjn()&!1k$Kgi^SXs!CSn0?3G{|tij^IU7q*1f)dXL4E1 zo2dIjU(UpaAK5+i*!}#St(I)pIXQE$N8O(Ibk~A4s&P6B>MBL6XQYcRu2{HCM@Ib3 z^ObL_lx|Di<}C1ud%N**ZT_bXOV`GRZJL_r=XbAZU0P(GwMS-);`DSzaKcY?sBxr^OKRided(_e(Bk~%Tb*n zxhU($!)1H6+`JK8?ztjUeIZBCpY1;#*Suc(kk9S(@fnTJpN5sq+HR`(?RFePAk%v7 z*ucwn;nP)P?-qXQTQ8m#wUv9FeddHKZTB3xK8VcuE5f+ydDq=(362kAx5pQp3>S|! zysY*yyY${i9Yu%YX-4zv!mgg-2%6&MR#f15QNLgr&+5crufua@%j;a1cPV5&Cv(nk z-W5;hTct;J8N`kyi>{bden5B9Qc>pD6QA+KoQj=zr+Q0VjrqyrLf^TkEw-1t|4$Ip)&tMZd)rL}Bq+PXS{;iRe3TiyfPD_qyvDc!LDH+jF+_S`-*PQkvSR=KyC&;Un9ys`-1v!h>g9?>Y10@$pT!)upn1mfiZ4a_-Q*S1qNy zzkknv8ZOUm`r~4Fs%b&ge})u41v{Zh>t0qfJYcSyEt9VNLTk;|^TLu0^97_srytH{ z@t*Qv_emC&y0@Fk)URBfqt(2AacrNk`h=5hK_`lS?X}&nf8vta>O0(zWxpXXj-uHXAGDvz7P!y2T~M}Kyglmf-u%?yQyzIa zu5C-VS+OQ7I{#Vzw|}YQe#vXQrk9k?@i&(_X|-%u+WwIL3`(J1L5rp@f)qU1#_tx# zcw9Ysp^EQ!eUQ`DoR;lUjxV+swq2_2I^}+E$<~On89iUtv1J`O`uw>|+T3uBlTVz_ zuC31tne#h*^~u)W6=prD%h$d4oA6|H_vyNr>D=qB9-f-ERc2D%vvsk&33Y#)N$`YaHcWKbM#>hJM$U7q=w*{KVEm!);eo_-+GuN-<`V5@S~ z@)@T*EZC>?cGb1**Hidt+x`2%hM+0EZMmVw zE|;Y|7k&QR88~HubKoqNVvCmypO&Q5dNSlWtaq^}UGR2~@x`*W<_T^}(Gnbbf~|HB z?;a2Rm#VSS{j!BLVKMb~`SgS8cbS|e8bA3tS^8#59=Nxi zHTX&XnqTJpm;c!9|EaI89ePi6dCA^KuUg8xwmH-VxEY^`&hbmByJ$z;2K4Xy7isY-DAodub(qA*dj8g-}m*o7fWxu>=ek; z)b(uobhDO4AZUxwB=h?#))(ILIX=B-DeI!jj0bm52RTRoO8jwtO3IA)`n%&durK`m zXtDS^*(~XhX1Ut^yUJzl6t^;d=Tcg3CHGlNiD|J%;fD1pb3)HAFX^2g79~^lR^-Ig zChpenLhkb?Z4BNQm7T8rC+A_h`?S=z#>?hi65gNVF`=XB}xd+;q}T#Ioi4E9NUZIL-%6QNGNSyMD`>W$O#yZZp}j zJ^h@E+wHqCtD=4e62t5L`;sfK-ds|2Gh%L#)uyd?ZZoHuOy0%DZW<=F>W5z6j>qk)p+8@r zEjoJb(c_6%<^|QPVlKGCJTXq|#+xX`@OHZ;S$2|9Z|~$k@Y$=sN+9Hp_;gPF<+6{x zJiL2$^==DtI`I9e!V@8F8LhkezFFE!`>JkM`OYf7Fu!z?cXqV5MxdXA#VP*)ZTD|} zR}HtEn{fTtq(7f-Z#hzBRAl(5P%~1~LA`YKo?M08NvEe~5d<$ceC)snYXEf#w_-M{&Tcsxf!=;wN|{Tsh$99?)b*KBjEM(^2-7rR_n zNYxrgR&zgjcH>%B(ebiN4|fJVw*Ig*j?=?ack&DWiQi0B;zieSZR?o(sXHN=<;sbZ z$2Xq6?~?m#dQoiERsLN|jXtjm3fypV-G0VWr5TU16c*kwFK&A!a_@_KS5(x$=qp8O!HxU9!|!xp0EV zt$n)!ydkEq=b?L_OgzDO7T z;l12qXNvFc@FT%peIYxFZbs(5SSK>^Oe??cr=X(AjS~tCC+ujvaXk8E%899q)ts(e z`xYJDxaW_}0^!N0PZUj^7gG}EdG2t|sn)++PRXp(JQW-8A=GHyZ{hR(drM2s_3q3n zRSP-yO?R!9WYi?5d2$`!{xg{SuXQVV;&xx7u4>Y!ZJO>6<>RAvewq7M&t%3Wj;F`i zw|X_bdUr}@+Nk_Uw_SOHrv)J}qQE{jOa7-WGP2iUr+Q(!M-fFrhx@ zm{U*a4)^cdg4hl`SIv|>@lSB>hc)T9&z`ew-SlPZkI+vGtyji-t-p75y4m}W>&sSZ zx0*3Gp6Jg0H&On)Enii0^R}zcQXXEu{3_>1zP$GH-8RnG>-O(2zWD0Q-qjU0#}C`D zUz7Kpe?ye(Eq%3M1yR*4R+FqWQdrZI7_0><*Z$-C=qE2)GCBB`u4ze+(A9HFM%L|x zSJLZTlQk{vl2w}H^Tl<%uIw?mD)!7#-(%~(2u4@SQVp&A!l!4ZJioO%>C3mWX<^I7 z#gcmMS3SNh=~b}&u6(OHgM4v#J6lDw(nHe|*@-PC8>jS4TDX1vzpInq2stp%xVm_O z=`542H&^Cu`h9l!Gw%wP{+(;jD;?W1Gd7;LQ?m4w_4M63k-N@+(-&Wx=a;C{_O6%J zYEpr~)}j@U|7zKl2A5sA;QK;O->|OrREO2YsU8{ zvm|cqdiLdXjc4G67k6yf>YcI-Z#|DPKQgyE!9z>O>GDLebqm_>vp${Ikix2{E|;l% zg(YXsv)P}j^JFD{eCiRKtUbH*jL34Xb(hPx3-qX_%SWxNlY5%^pJCZbpPv>NPX1oL z{&)DVxj{EhM15HD#?eCI_m!n-d*=N4uxsAqJ9AF$S(Ea4{<+2FYlD_Whj-f@xKb6i zk}p+9)M9~^LduoTZkaaVpqTZm`Nh#%H-D~E;TQP)Zi3LY+o{^h3e92f z`E|~|GQTMxBAc%~d-|%{{-r@-(Lr-cdA3aw@iXk&XR?^NeOml2*VrqI=Jxyime0?+ z>gV13ZnyAGJt<4WJF3g}PfUKjx<%J=+0`uGEiWo%)-BBB@@iiwI`wOi^fsI2i82O$ zFVvs>st(!ppW(>;w}OW5+AGBOV9K-D?T*J+%KT%OuF?Nl9QF67wybsfzCx)Vcc;5X-`{z@BxUKwmM!y5 zcWmAy{LbS(^Gc@e{~1^+-1(b-nXXRu%5%NsC%enXLBa0(f^&aXp4WJ}?XR!*mv1w+ zWNH^QE`2*e*P!Xt?~cGrr?~oz774L=9=N~m>g820&z^X*@nfRb+b2O&)^IA}ZUjMO zlH;!0@D_XCRn6Y3cB?+wuSDyksIolQud97O?Vm(-ocI)Y?qQsiXm8RTg~$|S_PBuNXy|8ie zZ}c9Gh*I8?d*0pV@8oXHi4|L>h21|=RD9Cy_@Olu@2Pyb zUpQ~s;%jS5?OohM!Y2iB96Yh=e8m0Mcgg)L7{ZFO4=WiaX7VmbR)2kMd6luD@-BX?&vlrVQUDiMAbKAwco2D!gZkW;&x_8+_ zB^8g2eH^J<7EFBJ*tInG-0s3F0*7A(I{USU2wAbb|95|FW}U>#lC1P5uSsS%o-Mv< zw=DWm@~-6jCsSXn6-=3#Eqv{@$BYBdJOW>TUG=?d*V5-tBu>cmY=3yj&$V=GOQn?M zr6c7hJY|_yZQC8wbFb*<^JlN;evS}2$GYr%(Y0U8ZZH4x$oh2eC8x;r8kY1`S866r z;OhLswpaOKKmWsms2N)_trEjcmoAx_*((|=4 zLGyRT%q!w4p4{;To|4PVPnxon-&GUmktuK)(fPk~&os^B zS;ewE>c`LT8qb(nn6`_wrlwlnVd#14{G;JdXyv`Uk0yT?<(_->Dxx(%F@N8qzLQRl zD*v4JynD1==y_p#w8tKw_fp$8g`8cdw8^^7c%!mP@#>^SHs4;bGKL?DOmz?lTJn{p zWcB8jTmQu7vG{uV-7Ee0VxFLK?85Wi!4rk1$VF=SdHGLspYiQqY}THuyQ=a!_EE3hA6A3E9+q8C0FP2%ZwuAqUNV%5j$=M~5AIzs} zx-;-CYnT|V_I=V4?bC-C|Ge_&4)kofug$ko;g?i<^xAwwQB^&rPka2BFHC;*#|`>6Qbij~JzEtU#jnU@^otu2`6Z!Y&}!m=raa~|{;WNB)w zGQD`OWF_O%^3G=x=c@kgT(^eP#cD!pVhHPe>&>s?w*0AW4>%kVp!K6NSCdPwLDTZw zjZdOcF(oc1)~{T?#QDSAE3KOGZ?vjYcb$k5IDLM{vOc4EIb8b^Km7L1;*+u0H0!9B zX%UL|u=y8P`R!i`n@?wEcXH-Yvvps;3%6P=?A^=oNz~$^)FZz+sZ)g>ljP zzo+^3Y(24k_nhLj?%J90&yI2Y5_}moZ_o9X&u2XoZ)g{;^tGD0Y1=uG*5)Y_YC0^| z-aTYnw>EdVl<$>o-FHM(g`+)>R}|P+O?=^3*CKdX@~i9C%`xj*(iYq=fBZ!~WU2Py z1lV%TDNK+88Kb`%E*}1xJFIQv-qI^YEEQ`7rZiYi`*i+Pi~2{62X9|+S};s>ykGHm zrK$B%t4xj!2aho_>f7!8HC3Z%c}@g0pr;}%%-T_#$~Zl=?7i0SYLEUc z+b?~}SmQw=k*wTCk}S=L6}>1#+bW>PFOFsDa7$97sFchoPyi!+t!I^ z+%B7QIhVz)=>nfs5Yv-g?!8wZubNVBH=A(-(}v&Q`)~i6^to_C^^v=2`#ybsCbp@T zec~5+$B4_Kn&oCi=BHNeo5ZqPsjKqQgC}`S^;2v757jc4#r|iwkaes1aP-o-wEW^ZbNg=O2ojf8)oNJ)F~3RUG?X-}ua& z`2A(n`Q}||kG@TvDpioW;1O5QRLiqF0_70->5-kQ@Muza#U-LPc+j32w2PZc>F z?EHA>3d^Dwe&>~|cJFYlvTAOdRTgzeZi1`|EqeJvs+)k)s~Exln{-dneljEss@9dQPl!I- zzggEFunUd5nP+on?c_OMR=2kqCLh|VlzP=N$o<{si;_1czYp8$WGky#X2J7j^*yJ3 zLBICe9bLQJ;w0BYU4ySOt~ciwG~Dhko;y|EX$@cSSBdYdg;xAiT6fb*C{%v8-mm4N zw;t5(EP8XK*S@%T&*a=3OVOi3A&(^wdj4l{)Re8#;K}iIK6xylKg6%U<+=LA^b>oR z{gwKvn-w&b_l^!D&x9T+vo=2W2dig`<}{yq3p;8{$x z&(j4e{~1JM9=|g5__^L_dFiIfI(NAXlWyE}xzbXcT%5HP=T!V-@)P%E z*^7^u>wZvR7W7?urjAK#((ZV#pH0*J?=3MGzq4$e+2I#)W}#KrzU+v7B**1Fm&xPK z{H$xWQz``ZN#BsUGHaK;-kSZ}EN2(mY1bqbO{;afx@r35f+>#=Po7^g=XA(C?U$;r z#1>hKuHNh&wB$`o!V``84h7}6bHA;3$XcwqZ>_w`gRJ(Gudf$I@W;J8`a(|e-kbAg zQmHGw%M{p?Wm8seGPiGO{K~fdX~^HjJ962hGbF#8Th83|a!0>U$1mflik#02m+~7d z=-qShn9ae#=_Nwz#f;CyqW`bSt1# z;H_WOyo!gaUMXfl9_JrDD|mbPdSNi1de)6;YvVe3mpSXZOt}3blA&UPQya%QbJ>FI zski&%opyO&igM%VS9JJybJBOckd`Scw+T&6U(_@=s8POkbKu)aQzyPmJumM&<>8I> zeKY+tey%Uq{qAw{z(?)nPs7&D*?li*t^MZIRaR3Be{bRc&bHcDN1*Kjo7Uw^PZmDA zCU}PNY~-cgGUm$mYq#`0eRg`4{)H=l54p_rP*|2%X6c;40V2;50r9pd~Ldx^>_A-1*j5!g+ z$K^j!?(5SltCb%8mi#zp%7^^k4YkpqddrryE?JtOsU@M%)1-a&p2CgfOgXJr)uuD& zw{CaXp(_}1>U`Nvh9yjEPaJ%`|H{|30eu%WwiKj_d*+!chp>z1_8dB)`jgW`@u|AP z6qc3TVP+?vo_HoYH{qse-GnczPll|V92>meZtb+~B1NGSpLv=F`x?EjPktdYUD(Id}f9x@+BgB;K9fo)@<4 z^3+Z2vnH88{m)=CE8gIOtNlwe zwnfj3u{fnr_w(zgsmaQVg0J-CZQLIi^+_+5SJ| zIBpSpr2A;=v1w;a_Qh|TDym^Am@@4|(DpF40RNAQaZ`WZ%71rznoQ3_r}i19TPv;~ z)Q*>U)4NqQiS-$W+WjIg%kIiotv!7yG9~AZ7e1fkyVfFfT}7_qwXdp8Rf|mgbq`6W zxuh;vVJ%*6v-4QNzR=_qqGqe7Z8?`b;j!wqr=nX*-${K-Il`!VRfF+$;Oe%O>W3zI zO(_sESNRo^WPA4Zs-KEX&sS~URJUyTEwPhaA`{i>RQ&#M*=xtYl-vE)eyK-L(TCu3 zT`!|2y?;|`GHpV%j@H9U&mY$>IZ4@n39A3qKYzJ@)a4qsM}>1PM+FD$SnAu;T6ccJ zn#5;8Y|`qM+8*c3?rMIOG?^uOsl?`{Nel=H8URkm4=0WEUg~d~TH8K8b zeD5>EG4#&omJ_Gu)n9)2^PBhg$M33y<4w%jgr%=|{elVl0C^Q#uWV4r?%x?EP!tyyC2vjUwv zA{3T7Jm`^|VHcX2!M!_d_mT7^Hn%mr8nvPhImlNvzxLQD^(btGSf=MxhPzKzS+AYs zG$|(VSk1>d>E|Wa@4G6fx1(kCnRgi#le|4P>^N_ByJUx&>!uvdnzui?g@m5*+4ct3 zcw9O6>YUAI(UQS37Hq8%+djXPdPEpM%= z<2`iozU`^44{~2dJi2bcFo`#^D!$7&NAUMH8Jiu)qqent>7V!Hv8H#Go}Z%TYL%l( z$}{8|uEv+{{@!VG>ioSO<@Xf#R#f_V6ik&54)k8O!Yeww|MazOr=Bk2t*M!_NB+s_ zMz@80Tc+$h)h`tKeE-Yv>FjTPvR-EB_PyVE_t@1d^?@N`-HqyjXJcBnESky3Vzj2_ zfQ*ps=850dYVsQXNL^a}X~CWAf>Q(v9FKMhU8{|qV5JF6D1 zwapZ}p`z+)vwX@IiIt?)rY->D`o^ejF#8fZ1lQLJYL@T_g9W{!W(67T8nVq zO>>Dc>w2T7^dsfVjjeyTxa=su=^p;tvd4a1z+U52i|Ed%Nh|Y~C!d+}6B_gS8Pm>j&Uc7esS$$M-T z^R$ZADDMq9we9vw&94ls};q%(yO~KVEXJV`h7haC~&ye#v^Q>^;zR7yG zZZ9yY;da!tluP&>@=IT?^jzDbiDn-xF2#oZN7B{w>wJdR24g z6y=B9EHKs0WMB7a`7P~^OD3DRBCG`+{PMqdw@ue`)Ynm#IF@by(eJ_2b8oqnM1rCm zYgWiSb$O8c_Ef#qjMsUJGh0vkPgovSaLf3!_OGg|cB@xUE|r+3~ zTr0R9bW>i_^RnLL#Y`V|biYe&y4`$zq1>X~y>SzQY(hV4aU0!yGU--~|Bjbm>_R_y zTwb$4=PJ&9@%v$&p7*8>2p4Nsap(cW;Sw}y^dT#0+zHE-}Q z^|0v8?Oz_oy7z&je9P5vyUGHMwUKIz<}&^&*xeqyj|G2ZRN2_u-@TXP*zuZ>e;cl6tut8Oack*X)8+Bnmw(k>ijVMPS=p=^)OhZN zgU#Z^osoBnCa@K6Td{b`+!J3{FK_;y++ginOlEV3b-Aq?p?usz3cky;D)+Wn$r2FL#~`| zE8bhE8h^k3PdeAWWjlq}$8=blu-|#Jbg#{K<=GS26>44UUhG&dq0Ulu{dMAoQ$P5- z3z*)_(cXQGEBJ}sUjKXhBMlpFemidPDXLubb$6U^!8YMr-Adt}%VNK?{E%?)a;rJ_ znAbw|^bK=Gi{Eud1px3thGRZroT>vhME6W7D>5H{>jw znzLl}GVQ~OC)>*=@-iwqX2=Td{TT23YqG{YyZ;RT(*Ipeus$@~_S(JFoBEv{FD(sI zP0viQoyJ#pM1HN4ddBj_cF}byK@+d~7Hj`(j9jg@$4GZZ#OLWDi|_O3$HKJ6e+tYjE9L+HEgP&KN$q>xxvAi?s@i~6!Rj+E>7pyyTR&wPV zt1{Vl?-O?&+jKsY|M(6qqi$~J_5;-iEZxm+urw8!-2-pocQT0Tx@0{)H(l#hvF=fg z-?JX>EslQe?ZdQP2DG6rd&1>&r!7*|*+0rQtd#ANHe|Q_xNqUE^V2tcThDVkyy1>Z zeT!7*^7z22tA(6-uP&UtZEZ2ZUdX6$;|VQUKexBrViw)Yy}10=J(rGRDepB_eceuN zj`GQI1&32lo?F-^6!y5ClWEIy=B=Nr6m>KIy6R85@Iand@$$pIm)1@Gr&?v^JCxrL zayt>K>ALlW^NDlIx)WpW&FPi&`g3E#m1UFOghy8{{j)mP(bL{Z`^(xC=-r8UQuz9( z$AvD5Y!8{D$N(C(WV|vtL~q+$t;L09_YYTGOxtoT;ORM!pxHs29N$ggc*cA(<-t!T z1HXcG!Bw5o>UwiBN^gDXo1Ph`WxqtH=jB_AUo-dK7pT0K8xa$6Q_-7!MNo&P=YNJk z>1CT7FYs5$ZZU~rmwB@!W%-?|{@=fR^FF)_U+Zi2y|(z#(pdTTVlVs{ZZk4evMgb+ zZCKsja!W-fMs4wd`zJVFWgU{(_~J^Rv-13{PgY*~H$T7h_dl0($IKVEgnhMM7kN3q zatoY)X+@uA*7~=pXRoU~%y8<+d0g_BH{PahuW>1x=*kO+Zk~wrKlSkYzpazkuRY^) z?2*~w^Inr4MI|nq6t+BUam!MLQk4k|a$DJMrAEIi`C&6xvhbJO{O#{g{(fO6`-)HV z)zpX*XI`%vZQ_boZ9Zi3Y?;Iu)cNVuBr}#Ly}Pco$#aP=Db2YNwKMS9`7K_-TDen2 z4aAy1GZlpJ9ZBKa-Sg#k?JNte>+B{{f|fS7x_(Gct|*vLDJJ|NLGVZPvw+X1rfj~@ zpw)NzmgHOOwG&q^*zj=MeSwLZ2aKjIRVjM#AV;KOlJS++>r=B=@7!#^{>i?!@WK+A z*|(-Wo6Eav^Uj{7E!viUEN{Q@c)2ZmYWXGe-C0+z-1a@XbjgEfMjPtdCG4}_zx3?e z^(&nB(*^cte$UqRDlbcX74HA`daBn`zmxAP9sg|qn{~`|rEi%%j(M>nX^@IdwIUkHM^d|A|x9VqM7iYVMWhX?q$DE zYC9=!+a6Y>%BiLPHp;oBs_M-b_t_!lLbop1l`ge7ztM87V9U~nIh%KDb=80Jb^n|x zB6C-k@AK-l+dB2Rb1J{9DeYBd;Cr}r$CQ;7FE^~}ibGGN|AN>(} zMDq~0&7M6oWZBGaFHP{%%#gmi>b2(imLR8)uvWz*lV5Q#JllS5#%{I0%hsBkO^b0o z#%&a|>84{q6jS3B-;Sz#!HTzK9xY!h zEF;NhI`_8Li?E)CD&b8Vm|ER(b@uBX`C}xq@Y%YC+SeD~X%$?%eKb~H>v+Xs@9_7E zr#QGm!VlQ2V|-?=(9^SI;>0=EICk91v(gScclp=EC5A=YETn5WBZB;bM5e0zT^+RuZ09ubGG_su)}@6W2@w9S?)^8_EbG3-=~ zQ2F9jHTj#QX>3GHl~0Sgq-v^reb&A$rd@gS`_vciD_v=4ntb{~-PBw!FDv)+mD1|k zv6HKF{xhW9TrZ~tq8y^9Kb&O7-*#>5R=2LmNldQuq5SC>2qQQX47?)9i}-h)5uY_hIDTdn1C zWz)narhwZSUT*f6*sn~gc@=p0i_&w`wkZo+1+=aUstPy!Xghhc_*-nZwd3svCkwV0 zXKt5{_!%R~woK~Ot7|hZ>nWYPaa>(1Xz~t;*YD$74|{FQ+%kRfilw>BEmzI^&#)q{ zVkO_Mr7XW@&HAeM+%S66+T(FvngHR0`mQp0)@Ey!4>?)clPua-&3xX;`&8}F zp=0N)CI#(ek?rujDO=+(w<{=X=_6)==bJVw>#mr4$MN9tdD$0EODUMAZeQ%bwB^=C z(T$vj2YB0@+{*-ecUBhmXRSUx+26hT!&lQ&dUY#)ub#T9uvR4V(sEzRrlWP@;cH|-uqxu?|$dd`8g6jS=#IQN+aJ*)8AFI?ekjY z309B2ygH6g<35u7cJ8XsqixI=ADv)+p0^_=rtj+SP2ak9i(Pth*R-yT>5jkoyO{+R z9?Hv}8h-zkzf*MWtv8cisa!vPy*=bE@7jsEY};leE;;Tb?RQ%xX^T0}vQMWt)Kiy> zPTvxHR@bcOv&Ju#(EZCwr|ix?Yt5!5vgAL*BaQdp zY|VB_TTLmYoNKxpmUz#3CDALo)avtU3l1l@ki~Bp)b@OP)O%LybC*?r@Qs_=+s{p! zaFBP()NQvjGW8PPKjL_H@J?|aYh3KAiXAhB+4)U=KjqsY@b&4lJI5QIEHn4FS(

    GFkv_vG5i2rfpnqi3UbN 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 FO#ne>4dVa+ diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index de47509ed4..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,214 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 73 !NATOM - 1 1 1 1 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 2 2 0.000000 1.0000 0 - 5 1 1 1 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 2 2 0.000000 1.0000 0 - 8 1 2 2 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 1 1 0.000000 1.0000 0 - 11 1 2 2 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 1 1 0.000000 1.0000 0 - 15 1 2 2 0.000000 1.0000 0 - 16 1 2 2 0.000000 1.0000 0 - 17 1 1 1 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 2 2 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 1 1 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 2 2 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 1 1 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - 28 1 2 2 0.000000 1.0000 0 - 29 1 1 1 0.000000 1.0000 0 - 30 1 1 1 0.000000 1.0000 0 - 31 1 2 2 0.000000 1.0000 0 - 32 1 2 2 0.000000 1.0000 0 - 33 1 1 1 0.000000 1.0000 0 - 34 1 1 1 0.000000 1.0000 0 - 35 1 2 2 0.000000 1.0000 0 - 36 1 2 2 0.000000 1.0000 0 - 37 1 1 1 0.000000 1.0000 0 - 38 1 1 1 0.000000 1.0000 0 - 39 1 2 2 0.000000 1.0000 0 - 40 1 2 2 0.000000 1.0000 0 - 41 1 1 1 0.000000 1.0000 0 - 42 1 1 1 0.000000 1.0000 0 - 43 1 2 2 0.000000 1.0000 0 - 44 1 2 2 0.000000 1.0000 0 - 45 1 1 1 0.000000 1.0000 0 - 46 1 1 1 0.000000 1.0000 0 - 47 1 2 2 0.000000 1.0000 0 - 48 1 2 2 0.000000 1.0000 0 - 49 1 1 1 0.000000 1.0000 0 - 50 1 1 1 0.000000 1.0000 0 - 51 1 2 2 0.000000 1.0000 0 - 52 1 2 2 0.000000 1.0000 0 - 53 1 1 1 0.000000 1.0000 0 - 54 1 1 1 0.000000 1.0000 0 - 55 1 2 2 0.000000 1.0000 0 - 56 1 2 2 0.000000 1.0000 0 - 57 1 1 1 0.000000 1.0000 0 - 58 1 1 1 0.000000 1.0000 0 - 59 1 2 2 0.000000 1.0000 0 - 60 1 2 2 0.000000 1.0000 0 - 61 1 1 1 0.000000 1.0000 0 - 62 1 1 1 0.000000 1.0000 0 - 63 1 2 2 0.000000 1.0000 0 - 64 1 2 2 0.000000 1.0000 0 - 65 1 3 3 0.000000 1.0000 0 - 66 1 3 3 0.000000 1.0000 0 - 67 1 3 3 0.000000 1.0000 0 - 68 1 3 3 0.000000 1.0000 0 - 69 1 3 3 0.000000 1.0000 0 - 70 1 3 3 0.000000 1.0000 0 - 71 1 3 3 0.000000 1.0000 0 - 72 1 3 3 0.000000 1.0000 0 - 73 1 3 3 0.000000 1.0000 0 - - 72 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 65 - 17 18 17 70 18 19 19 20 - 20 21 21 22 22 23 23 24 - 24 25 25 26 26 27 27 28 - 28 29 29 30 30 31 31 32 - 32 67 33 34 33 68 34 35 - 35 36 36 37 37 38 38 39 - 39 40 40 41 41 42 42 43 - 43 44 44 45 45 46 46 47 - 47 48 48 71 49 50 50 51 - 51 52 52 53 53 54 54 55 - 55 56 56 57 57 58 58 59 - 59 60 60 61 61 62 62 63 - 63 64 64 73 65 66 66 67 - 68 69 69 70 71 72 72 73 - - 71 !NTHETA: angles - 16 65 66 32 67 66 48 71 72 - 64 73 72 2 3 4 3 4 5 - 6 7 8 7 8 9 10 11 12 - 11 12 13 14 15 16 18 19 20 - 19 20 21 22 23 24 23 24 25 - 26 27 28 27 28 29 30 31 32 - 34 35 36 35 36 37 38 39 40 - 39 40 41 42 43 44 43 44 45 - 46 47 48 50 51 52 51 52 53 - 54 55 56 55 56 57 58 59 60 - 59 60 61 62 63 64 15 16 65 - 31 32 67 47 48 71 63 64 73 - 34 33 68 18 17 70 1 2 3 - 4 5 6 5 6 7 8 9 10 - 9 10 11 12 13 14 13 14 15 - 17 18 19 20 21 22 21 22 23 - 24 25 26 25 26 27 28 29 30 - 29 30 31 33 34 35 36 37 38 - 37 38 39 40 41 42 41 42 43 - 44 45 46 45 46 47 49 50 51 - 52 53 54 53 54 55 56 57 58 - 57 58 59 60 61 62 61 62 63 - 17 70 69 33 68 69 65 66 67 - 68 69 70 71 72 73 - - 122 !NPHI: dihedrals - 4 5 6 7 8 9 10 11 - 12 13 14 15 20 21 22 23 - 24 25 26 27 28 29 30 31 - 36 37 38 39 40 41 42 43 - 44 45 46 47 52 53 54 55 - 56 57 58 59 60 61 62 63 - 2 3 4 5 6 7 8 9 - 10 11 12 13 18 19 20 21 - 22 23 24 25 26 27 28 29 - 34 35 36 37 38 39 40 41 - 42 43 44 45 50 51 52 53 - 54 55 56 57 58 59 60 61 - 3 4 5 6 1 2 3 4 - 7 8 9 10 5 6 7 8 - 11 12 13 14 9 10 11 12 - 13 14 15 16 19 20 21 22 - 17 18 19 20 23 24 25 26 - 21 22 23 24 27 28 29 30 - 25 26 27 28 29 30 31 32 - 35 36 37 38 33 34 35 36 - 39 40 41 42 37 38 39 40 - 43 44 45 46 41 42 43 44 - 45 46 47 48 51 52 53 54 - 49 50 51 52 55 56 57 58 - 53 54 55 56 59 60 61 62 - 57 58 59 60 61 62 63 64 - 4 5 6 7 8 9 10 11 - 12 13 14 15 20 21 22 23 - 24 25 26 27 28 29 30 31 - 36 37 38 39 40 41 42 43 - 44 45 46 47 52 53 54 55 - 56 57 58 59 60 61 62 63 - 2 3 4 5 6 7 8 9 - 10 11 12 13 18 19 20 21 - 22 23 24 25 26 27 28 29 - 34 35 36 37 38 39 40 41 - 42 43 44 45 50 51 52 53 - 54 55 56 57 58 59 60 61 - 3 4 5 6 1 2 3 4 - 7 8 9 10 5 6 7 8 - 11 12 13 14 9 10 11 12 - 13 14 15 16 19 20 21 22 - 17 18 19 20 23 24 25 26 - 21 22 23 24 27 28 29 30 - 25 26 27 28 29 30 31 32 - 35 36 37 38 33 34 35 36 - 39 40 41 42 37 38 39 40 - 43 44 45 46 41 42 43 44 - 45 46 47 48 51 52 53 54 - 49 50 51 52 55 56 57 58 - 53 54 55 56 59 60 61 62 - 57 58 59 60 61 62 63 64 - 68 69 70 17 33 68 69 70 - 65 66 67 32 16 65 66 67 - 71 72 73 64 48 71 72 73 - 34 33 68 69 18 17 70 69 - 68 33 34 35 70 17 18 19 - 15 16 65 66 31 32 67 66 - 47 48 71 72 63 64 73 72 - 14 15 16 65 30 31 32 67 - 46 47 48 71 62 63 64 73 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/1beadProtSci2010.lt deleted file mode 100644 index 9b4ff25354..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/1beadProtSci2010.lt +++ /dev/null @@ -1,274 +0,0 @@ -# This file defines a family of coarse-grained protein models used in: -# G. Bellesia, AI Jewett, and J-E Shea, Protein Science, Vol19 141-154 (2010) -# -# Strategy: -# -#1) First I'll define some building blocks (A16, B16, T3) -# which are helices, sheets and turns of a predetermined length) -# -#2) Then I'll copy and paste them together to build -# a 4-helix bundle or a 4-strand beta-barrel. -# This approach is optional. If your protein has helices which are not -# identical, you should probably just include all 4 helices in a single -# "Data Atoms" section and don't try to subdivide the protein into pieces.) - - -1beadProtSci2010 { # <-- enclose definitions in a namespace for portability - - write_once("In Init") { - units lj - atom_style full - bond_style hybrid harmonic - angle_style hybrid harmonic - dihedral_style hybrid fourier - pair_style hybrid lj/charmm/coul/charmm/inter es4k4l maxmax 3.5 4.0 - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 #(turn on "1-4" interactions) - } - - - # A16 is a coarse-grained alpha-helix containing 16 residues (one "atom" each) - - A16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../L 0.0 -0.4 -0.4 0.0 - $atom:a2 $mol:... @atom:../L 0.0 0.4 -0.4 0.6 - $atom:a3 $mol:... @atom:../H 0.0 0.4 0.4 1.2 - $atom:a4 $mol:... @atom:../H 0.0 -0.4 0.4 1.8 - $atom:a5 $mol:... @atom:../L 0.0 -0.4 -0.4 2.4 - $atom:a6 $mol:... @atom:../L 0.0 0.4 -0.4 3.0 - $atom:a7 $mol:... @atom:../H 0.0 0.4 0.4 3.6 - $atom:a8 $mol:... @atom:../H 0.0 -0.4 0.4 4.2 - $atom:a9 $mol:... @atom:../L 0.0 -0.4 -0.4 4.8 - $atom:a10 $mol:... @atom:../L 0.0 0.4 -0.4 5.4 - $atom:a11 $mol:... @atom:../H 0.0 0.4 0.4 6.0 - $atom:a12 $mol:... @atom:../H 0.0 -0.4 0.4 6.6 - $atom:a13 $mol:... @atom:../L 0.0 -0.4 -0.4 7.2 - $atom:a14 $mol:... @atom:../L 0.0 0.4 -0.4 7.8 - $atom:a15 $mol:... @atom:../H 0.0 0.4 0.4 8.4 - $atom:a16 $mol:... @atom:../H 0.0 -0.4 0.4 9.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # A16 - - - # B16 is a coarse-grained beta-strand containing 16 residues (one "atom" each) - - B16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../L 0.0 -0.3 0.0 0.0 - $atom:a2 $mol:... @atom:../H 0.0 0.3 0.0 0.8 - $atom:a3 $mol:... @atom:../L 0.0 -0.3 0.0 1.6 - $atom:a4 $mol:... @atom:../H 0.0 0.3 0.0 2.4 - $atom:a5 $mol:... @atom:../L 0.0 -0.3 0.0 3.2 - $atom:a6 $mol:... @atom:../H 0.0 0.3 0.0 4.0 - $atom:a7 $mol:... @atom:../L 0.0 -0.3 0.0 4.8 - $atom:a8 $mol:... @atom:../H 0.0 0.3 0.0 5.6 - $atom:a9 $mol:... @atom:../L 0.0 -0.3 0.0 6.4 - $atom:a10 $mol:... @atom:../H 0.0 0.3 0.0 7.2 - $atom:a11 $mol:... @atom:../L 0.0 -0.3 0.0 8.0 - $atom:a12 $mol:... @atom:../H 0.0 0.3 0.0 8.8 - $atom:a13 $mol:... @atom:../L 0.0 -0.3 0.0 9.6 - $atom:a14 $mol:... @atom:../H 0.0 0.3 0.0 10.4 - $atom:a15 $mol:... @atom:../L 0.0 -0.3 0.0 11.2 - $atom:a16 $mol:... @atom:../H 0.0 0.3 0.0 12.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # B16 - - T3 { # T3 is a "turn" region consisting of 3 beads - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../N 0.0 -0.8 0.0 0.0 - $atom:a2 $mol:... @atom:../N 0.0 0.0 0.55 -0.24 - $atom:a3 $mol:... @atom:../N 0.0 0.8 0.0 0.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - } - - } # T3 - - # ----- Now build larger molecules using A16, B16 and T3 ------- - - 4SheetBarrel { - - sheet1 = new B16.rot( 45, 0,0,1).move(-0.793700526,-0.793700526, -6) - sheet2 = new B16.rot( 135, 0,0,1).move( 0.793700526,-0.793700526, -6) - sheet3 = new B16.rot( 225, 0,0,1).move( 0.793700526, 0.793700526, -6) - sheet4 = new B16.rot( 315, 0,0,1).move(-0.793700526, 0.793700526, -6) - - turn1 = new T3.rot(180,1,0,0).rot(0,0,0,1).move(0,-1.3,6.6) - turn2 = new T3.rot( 0,1,0,0).rot(-90,0,0,1).move(0.7,-0.0,-6.9) - turn3 = new T3.rot(180,1,0,0).rot(-180,0,0,1).move(0,1.3,6.6) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:sheet1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:sheet2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:sheet3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:sheet2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:sheet3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:sheet4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - } - - - 4HelixBundle { - - helix1 = new A16.rot( -45, 0,0,1).move(-1.12691645,-1.12691645, -4.5) - helix2 = new A16.rot( 45, 0,0,1).move( 1.12691645,-1.12691645, -4.5) - helix3 = new A16.rot( 135, 0,0,1).move( 1.12691645, 1.12691645, -4.5) - helix4 = new A16.rot( 225, 0,0,1).move(-1.12691645, 1.12691645, -4.5) - - turn1 = new T3.rot(180,1,0,0).rot(-17,0,0,1).move(-0.2,-0.7,5.4) - turn2 = new T3.rot( 0,1,0,0).rot(-100,0,0,1).move(0.7,-0.15,-4.8) - turn3 = new T3.rot(180,1,0,0).rot(163,0,0,1).move(0.2,0.7,5.4) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - } - - - - # 2-body (non-bonded) interactions: - # - # Uij(r) = 4*eps_ij * (K*(sig_ij/r)^12 + L*(sig_ij/r)^6) - # - # i j pairstylename eps sig K L - # - write_once("In Settings") { - pair_coeff @atom:H @atom:H lj/charmm/coul/charmm/inter 1.0 1.0 1 -1 - pair_coeff @atom:L @atom:L lj/charmm/coul/charmm/inter 1.0 1.0 1 0 - pair_coeff @atom:N @atom:N lj/charmm/coul/charmm/inter 1.0 1.0 1 0 - } - # Interactions between different atoms use "repulsive wins" mixing rules - - - # bond_coeff bondType bondstylename k r0 - - write_once("In Settings") { - bond_coeff @bond:backbone harmonic 66.6 1.0 - } - - - # angle_coeff angleType anglestylename k theta0 - - write_once("In Settings") { - angle_coeff @angle:backbone harmonic 66.6 105.0 - } - - # We use the same bond-angle forces whenever - # there are 3 consecutively-bonded atoms: - # - # angleType atomtypes1 2 3 bondtypes1 2 - - write_once("Data Angles By Type") { - @angle:backbone @atom:* @atom:* @atom:* @bond:* @bond:* - } - - - - # From the Bellesia et al 2010 paper: - # for helices: U_{dih}(\phi) = 1.2*(cos(3\phi) + cos(\phi+\delta)) - # for turns: U_{dih}(\phi) = 0.2*cos(3\phi) - # - # General formula used for "dihedral_style fourier": - # U_{dih}(\phi) = \Sum_{i=1}^m K_i [ 1.0 + cos(n_i \phi - d_i) ] - # - # Syntax: - # dihedralType dihedralstyle m K_1 n_1 d_1 K2 n_2 d_2 ... - - write_once("In Settings") { - dihedral_coeff @dihedral:delta60_0 fourier 2 2.167862 3 0 2.167862 1 -60.0 - dihedral_coeff @dihedral:delta62_5 fourier 2 2.167862 3 0 2.167862 1 -62.5 - dihedral_coeff @dihedral:delta65_0 fourier 2 2.167862 3 0 2.167862 1 -65.0 - dihedral_coeff @dihedral:turn fourier 1 0.361310 3 0 - # Note: 2.167862=1.2*epsilon and 0.361310=0.2*epsilon. - } - - - # dihedralType atomtypes1 2 3 4 bondtypes1 2 3 - - write_once("Data Dihedrals By Type") { - @dihedral:delta60_0 @atom:H @atom:L @atom:H @atom:L * * * - @dihedral:delta60_0 @atom:H @atom:H @atom:L @atom:L * * * - @dihedral:delta60_0 @atom:H @atom:L @atom:L @atom:H * * * - @dihedral:delta60_0 @atom:L @atom:H @atom:H @atom:L * * * - @dihedral:turn @atom:N @atom:* @atom:* @atom:* * * * - } - # Note: This next rule is not needed: - # @dihedral:turn @atom:* @atom:* @atom:* @atom:N * * * - # (By reflection symmetry, it's equivalent to the rule above.) - # - # Note: The example in ../../membrane+protein/moltemplate_files/ - # demonstrates how to define dihedral angles for this model - # in an alternate way which might be easier to understand. - - - # --- Mass Units --- - # There are 3 atom types (referred to above as ../H, ../L, and ../N) - # Define their masses (in reduced units): - - write_once("Data Masses") { - @atom:H 1.0 - @atom:L 1.0 - @atom:N 1.0 - } - - -} # 1beadProtSci2010 (namespace) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/README.sh b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/README.sh deleted file mode 100755 index 852b9b76f2..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/README.sh +++ /dev/null @@ -1,13 +0,0 @@ -# run moltemplate this way - -moltemplate.sh system.lt - -# This will generate various files with names ending in *.in* and *.data -# which are needed by LAMMPS. - -# ------ Other versions: -------- -# -# If you are using the "other_versions/charmm/1beadProtSci2010.lt" file, -# then you must run moltemplate this way: -# -# moltemplate.sh -overlay-dihdedrals system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/README.TXT deleted file mode 100644 index 82bc8c5c43..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/README.TXT +++ /dev/null @@ -1,13 +0,0 @@ -This directory contains other versions of the same molecule -(with the same force-field), implemented in different ways. - -charmm/1beadProtSci2010.lt <-- This applies multiple "charmm" dihedral angle - forces to the same quartet of atoms to create - a Fourier series. (No packages needed.) - - NOTE: You must run moltemplate this way: - - moltemplate.sh -overlay-dihdedrals system.lt - -class2/1beadProtSci2010.lt <-- This uses the "class2" dihedral angles forces - (You must build LAMMPS with the CLASS2 package) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/charmm/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/charmm/1beadProtSci2010.lt deleted file mode 100644 index d57186bee7..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/charmm/1beadProtSci2010.lt +++ /dev/null @@ -1,411 +0,0 @@ -# This file defines a family of coarse-grained protein models used in: -# G. Bellesia, AI Jewett, and J-E Shea, Protein Science, Vol19 141-154 (2010) -# -# -# For portability, all definitions in this file are enclosed within -# the "1beadProtSci2010" namespace. To access them, put -# "using namespace 1beadProtSci2010" in your LT file. - -# Strategy: -# -#1) First I'll define some building blocks -# (short helices, sheets and turns of a predetermined length) -# -#2) Then I'll cut and paste them together to build -# a 4-helix bundle or a 4-strand beta-barrel. -# -# Doing it this way is optional. It's simpler (but longer) to simply write -# out the entire sequence of all 73 atoms in a single "Data Atoms" section. -# (IE. Don't try to subdivide it.) It's also simpler to explicitly list the -# 72 bonds, 71 3-body angles and 70 4-body dihedral angle interactions -# manually (instead of inferring them from the atom type). If your protein -# has helices which are not identical, this would probably be easier. -# Use whichever style you prefer. -# -# -# Note that atom types, bond types, angle types, and dihedral types -# are shared between all molecules defined in the "1beadProtSci2010" family. -# (That's why there is a "../" in their path-names. Otherwise atom, bond, -# angle types, etc... are not shared between different molecules.) -# -# Confusing detail: -# Each molecule in LAMMPS can be assigned a unique molecule-ID (an integer). -# These are represented by the "$mol" variable written next to each atom. -# Our protein has multiple subunits (in this case: helices, sheets, turns). -# Because we want the subunits to share the same molecule-ID counter we use -# "$mol:..." instead of "$mol" which tells moltemplate to search for the -# parent molecule's ID. This is optional. If it bothers you, just use "$mol" - - - -1beadProtSci2010 { - - write_once("In Init") { - # -- Default styles for "1beadProtSci2010" -- - units lj - atom_style full - # (Hybrid force fields were not necessary but are used for portability.) - bond_style hybrid harmonic - angle_style hybrid harmonic - dihedral_style hybrid charmm - pair_style hybrid lj/charmm/coul/charmm/inter es4k4l maxmax 3.5 4.0 - - # If charges are needed, (assuming biopolymers), try one of: - #dielectric 80.0 - #pair_style hybrid lj/cut/coul/debye 0.1 4.0 - # or (for short distances, below a couple nm) - #pair_style hybrid lj/charmm/coul/charmm/implicit 3.5 4.0 - - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 #(turn on "1-4" interactions) - } - - - # ---- Building blocks: A16, B16, Turn3 ---- - - # A16 is a coarse-grained alpha-helix containing 16 residues (one "atom" each) - - A16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../L 0.0 -0.4 -0.4 0.0 - $atom:a2 $mol:... @atom:../L 0.0 0.4 -0.4 0.6 - $atom:a3 $mol:... @atom:../H 0.0 0.4 0.4 1.2 - $atom:a4 $mol:... @atom:../H 0.0 -0.4 0.4 1.8 - $atom:a5 $mol:... @atom:../L 0.0 -0.4 -0.4 2.4 - $atom:a6 $mol:... @atom:../L 0.0 0.4 -0.4 3.0 - $atom:a7 $mol:... @atom:../H 0.0 0.4 0.4 3.6 - $atom:a8 $mol:... @atom:../H 0.0 -0.4 0.4 4.2 - $atom:a9 $mol:... @atom:../L 0.0 -0.4 -0.4 4.8 - $atom:a10 $mol:... @atom:../L 0.0 0.4 -0.4 5.4 - $atom:a11 $mol:... @atom:../H 0.0 0.4 0.4 6.0 - $atom:a12 $mol:... @atom:../H 0.0 -0.4 0.4 6.6 - $atom:a13 $mol:... @atom:../L 0.0 -0.4 -0.4 7.2 - $atom:a14 $mol:... @atom:../L 0.0 0.4 -0.4 7.8 - $atom:a15 $mol:... @atom:../H 0.0 0.4 0.4 8.4 - $atom:a16 $mol:... @atom:../H 0.0 -0.4 0.4 9.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # A16 - - - # B16 is a coarse-grained beta-strand containing 16 residues (one "atom" each) - - B16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../L 0.0 -0.3 0.0 0.0 - $atom:a2 $mol:... @atom:../H 0.0 0.3 0.0 0.8 - $atom:a3 $mol:... @atom:../L 0.0 -0.3 0.0 1.6 - $atom:a4 $mol:... @atom:../H 0.0 0.3 0.0 2.4 - $atom:a5 $mol:... @atom:../L 0.0 -0.3 0.0 3.2 - $atom:a6 $mol:... @atom:../H 0.0 0.3 0.0 4.0 - $atom:a7 $mol:... @atom:../L 0.0 -0.3 0.0 4.8 - $atom:a8 $mol:... @atom:../H 0.0 0.3 0.0 5.6 - $atom:a9 $mol:... @atom:../L 0.0 -0.3 0.0 6.4 - $atom:a10 $mol:... @atom:../H 0.0 0.3 0.0 7.2 - $atom:a11 $mol:... @atom:../L 0.0 -0.3 0.0 8.0 - $atom:a12 $mol:... @atom:../H 0.0 0.3 0.0 8.8 - $atom:a13 $mol:... @atom:../L 0.0 -0.3 0.0 9.6 - $atom:a14 $mol:... @atom:../H 0.0 0.3 0.0 10.4 - $atom:a15 $mol:... @atom:../L 0.0 -0.3 0.0 11.2 - $atom:a16 $mol:... @atom:../H 0.0 0.3 0.0 12.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # B16 - - T3 { # T3 is a "turn" region consisting of 3 beads - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../N 0.0 -0.8 0.0 0.0 - $atom:a2 $mol:... @atom:../N 0.0 0.0 0.55 -0.24 - $atom:a3 $mol:... @atom:../N 0.0 0.8 0.0 0.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - } - - } # T3 - - # (Note: Again, atom types, bond-types, (dihedral-types, any variable, etc) - # can be shared. The ".." in "@atom:../CA" tells moltemplate that - # atom type CA is defined in the parent's environment. (We are - # sharing the CA atom type between both the H and P residues. - # The same is true of the ".." in "@bond:../sidechain". - # - # - # Note: The "..." in "$mol:..." tells moltemplate that this molecule may - # be a part of a larger molecule, and (if so) to use the larger - # molecule's id number as it's own. - - - - # ----- Now build larger molecules using A16, B16 and T3 ------- - - 4HelixBundle { - - helix1 = new A16.rot( -45, 0,0,1).move(-1.12691645,-1.12691645, 0) - helix2 = new A16.rot( 45, 0,0,1).move( 1.12691645,-1.12691645, 0) - helix3 = new A16.rot( 135, 0,0,1).move( 1.12691645, 1.12691645, 0) - helix4 = new A16.rot( 225, 0,0,1).move(-1.12691645, 1.12691645, 0) - # Note: 1.12691645 ~= 0.5*2^(1/6) + 0.4*sqrt(2) - - turn1 = new T3.rot(180,1,0,0).rot(-17,0,0,1).move(-0.2,-0.7,9.9) - turn2 = new T3.rot( 0,1,0,0).rot(-100,0,0,1).move(0.7,-0.15,-0.3) - turn3 = new T3.rot(180,1,0,0).rot(163,0,0,1).move(0.2,0.7,9.9) - - # Note: In the paper, this is described as the "UA2" conformation - # (I played around with the angles until it looked "okay". This is not - # the minimum energy conformation. Further minimization is necessary.) - - # Now bond the pieces together. - # (Note: angle & dihedral interactions will be generated automatically.) - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # <-- create a variable for the parent's Molecule-ID - } - - 4SheetBundle { - - sheet1 = new B16.rot( 45, 0,0,1).move(-0.793700526,-0.793700526, 0) - sheet2 = new B16.rot( 135, 0,0,1).move( 0.793700526,-0.793700526, 0) - sheet3 = new B16.rot( 225, 0,0,1).move( 0.793700526, 0.793700526, 0) - sheet4 = new B16.rot( 315, 0,0,1).move(-0.793700526, 0.793700526, 0) - # Note: 0.793700526 ~= 0.5*2^(1/6) * sqrt(1/2) - - turn1 = new T3.rot(180,1,0,0).rot(0,0,0,1).move(0,-1.3,12.6) - turn2 = new T3.rot( 0,1,0,0).rot(-90,0,0,1).move(0.7,-0.0,-0.9) - turn3 = new T3.rot(180,1,0,0).rot(-180,0,0,1).move(0,1.3,12.6) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:sheet1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:sheet2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:sheet3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:sheet2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:sheet3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:sheet4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - } - - - # There are 3 atom types (referred to above as ../H, ../L, and ../N) - # Define their masses: - - write_once("Data Masses") { - @atom:H 1.0 - @atom:L 1.0 - @atom:N 1.0 - - } - - - - # -------------------------------------------------------------------- - # -- In this example, all force field parameters are stored in the -- - # -- file named "In Settings". They can also go in sections like -- - # -- "Data Pair Coeffs", "Data Bond Coeffs", "Data Angle Coeffs"... -- - # -------------------------------------------------------------------- - - - - - # 2-body (non-bonded) interactions: - # - # Uij(r) = 4*eps_ij * (K*(sig_ij/r)^12 + L*(sig_ij/r)^6) - # - # i j pairstylename eps sig K L - # - write_once("In Settings") { - pair_coeff @atom:H @atom:H lj/charmm/coul/charmm/inter 1.0 1.0 1 -1 - pair_coeff @atom:L @atom:L lj/charmm/coul/charmm/inter 1.0 1.0 1 0 - pair_coeff @atom:N @atom:N lj/charmm/coul/charmm/inter 1.0 1.0 1 0 - } - # (Interactions between different atom types use "arithmetic" - # and "maxmax" ("repulsion-wins") mixing rules.) - - - # 2-body (bonded) interactions: - # - # Ubond(r) = (k/2)*(r-0)^2 - # - # The corresponding command is: - # - # bond_coeff bondType bondstylename k r0 - # - - write_once("In Settings") { - bond_coeff @bond:backbone harmonic 66.6 1.0 - } - - - - # 3-body interactions in this example are listed by atomType and bondType - # The atomIDs involved are determined automatically. The forumula used is: - # - # Uangle(theta) = (k/2)*(theta-theta0)^2 - # (k in kcal/mol/rad^2, theta0 in degrees) - # - # The corresponding command is: - # - # angle_coeff angleType anglestylename k theta0 - - write_once("In Settings") { - angle_coeff @angle:backbone harmonic 66.6 105.0 - } - - # Generate a "backbone" 3-body interaction whenever 3 atoms are bonded - # together. We do this by to asking moltemplate to generate this - # 3-body interaction whenever 3 consecutively bonded atoms satisfy - # the following type requirement: - # - # angleType atomtypes1 2 3 bondtypes1 2 - - write_once("Data Angles By Type") { - @angle:backbone * * * * * - } - - - - - - # 4-body interactions in this example are listed by atomType and bondType - # The atomIDs involved are determined automatically. The forumula used is: - # - # Udihedral(phi) = K * (1 + cos(n*phi - d)) - # - # The d parameter is in degrees, K is in kcal/mol/rad^2. - # - # The corresponding command is: - # - # dihedral_coeff dihedralType dihedralstylename K n d w - # ("w" is the weight for 1-4 pair interactions, which we set to 0) - - write_once("In Settings") { - dihedral_coeff @dihedral:turn charmm 0.2 3 0 0 - dihedral_coeff @dihedral:term3 charmm 1.2 3 0 0 - - dihedral_coeff @dihedral:delta65_0 charmm 1.2 1 -65 0 - dihedral_coeff @dihedral:delta62_5 charmm 1.2 1 -62 0 - dihedral_coeff @dihedral:delta60_0 charmm 1.2 1 -60 0 - dihedral_coeff @dihedral:delta57_5 charmm 1.2 1 -57 0 - dihedral_coeff @dihedral:delta55_0 charmm 1.2 1 -55 0 - } - - #write_once("In Settings") { - # dihedral_coeff @dihedral:turn charmm 0.2 3 0.0 0 - # dihedral_coeff @dihedral:term3 charmm 1.2 3 0.0 0 - # dihedral_coeff @dihedral:delta65_0 charmm 1.2 1 -65.0 0 - # dihedral_coeff @dihedral:delta62_5 charmm 1.2 1 -62.5 0 - # dihedral_coeff @dihedral:delta60_0 charmm 1.2 1 -60.0 0 - # dihedral_coeff @dihedral:delta57_5 charmm 1.2 1 -57.5 0 - # dihedral_coeff @dihedral:delta55_0 charmm 1.2 1 -55.5 0 - #} - - # Generate 4-body interactions whenever 4 consecutively bonded atoms satisfy - # the following type requirements: - - write_once("Data Dihedrals By Type") { - # The dihedral interaction between backbone atoms in the helix or sheet-like - # regions is proportional to the sum of two terms: cos(phi+delta)+cos(3*phi) - # where delta is a constant used to control the bias between helices/sheets. - # As of 2013-4-07, the "fourier", "table", "class2", and "charmm", - " dihedral_styles can implement this potential. - # However dihedral_style "charmm" can only handle one cosine term at a time. - # So we use two commands to create two dihedral interactions for the same - # set of of four atoms ("cos3" and "delta60_0"). (To allow the - # superposition of multiple dihedral interactions on the same atoms, - # be sure to run moltemplate with the "-overlay-dihdedrals" argument.) - # - # dihedralType atomtypes1 2 3 4 bondtypes1 2 3 - - @dihedral:term3 @atom:H @atom:L @atom:H @atom:L * * * - @dihedral:delta60_0 @atom:H @atom:L @atom:H @atom:L * * * - - @dihedral:term3 @atom:H @atom:L @atom:L @atom:H * * * - @dihedral:delta60_0 @atom:H @atom:L @atom:L @atom:H * * * - - @dihedral:term3 @atom:L @atom:H @atom:H @atom:L * * * - @dihedral:delta60_0 @atom:L @atom:H @atom:H @atom:L * * * - - @dihedral:term3 @atom:H @atom:H @atom:L @atom:L * * * - @dihedral:delta60_0 @atom:H @atom:H @atom:L @atom:L * * * - - # Comment out the next 4 lines: (They are redundant with the lines above) - #@dihedral:term3 @atom:L @atom:L @atom:H @atom:H * * * - #@dihedral:delta60_0 @atom:L @atom:L @atom:H @atom:H * * * - #@dihedral:term3 @atom:L @atom:H @atom:L @atom:H * * * - #@dihedral:delta60_0 @atom:L @atom:H @atom:L @atom:H * * * - # (Redundant: The LLHH pattern is identical to HHLL after order reversal) - # (Redundant: The LHLH pattern is identical to HLHL after order reversal) - - # Right now the dihedral-angle settings are "unfrustrated", meaning that the - # peptide backbone is equally happy to adopt helical or sheet-like secondary - # structure (See Table IV of Bellesia et. al, Prot Sci, 19, 141 (2010)). - # You can change that by changing "delta60_0" to one of the other choices. - - # Any dihedral interactions containing "N" atoms use the @dihedral:turn - # interaction (which is much weaker). - @dihedral:turn @atom:N @atom:* @atom:* @atom:* * * * - @dihedral:turn @atom:N @atom:N @atom:* @atom:* * * * - @dihedral:turn @atom:N @atom:N @atom:N @atom:* * * * - @dihedral:turn @atom:N @atom:N @atom:N @atom:N * * * - # Comment out the next 4 lines: (They are redundant with the lines above) - # @dihedral:turn @atom:N @atom:N @atom:N @atom:N * * * - # @dihedral:turn @atom:* @atom:N @atom:N @atom:N * * * - # @dihedral:turn @atom:* @atom:* @atom:N @atom:N * * * - # @dihedral:turn @atom:* @atom:* @atom:* @atom:N * * * - } - -} # 1beadProtSci2010 (namespace) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/class2/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/class2/1beadProtSci2010.lt deleted file mode 100644 index a0e305f844..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/class2/1beadProtSci2010.lt +++ /dev/null @@ -1,385 +0,0 @@ -# This file defines a family of coarse-grained protein models used in: -# G. Bellesia, AI Jewett, and J-E Shea, Protein Science, Vol19 141-154 (2010) -# -# -# For portability, all definitions in this file are enclosed within -# the "1beadProtSci2010" namespace. To access them, put -# "using namespace 1beadProtSci2010" in your LT file. - -# Strategy: -# -#1) First I'll define some building blocks -# (short helices, sheets and turns of a predetermined length) -# -#2) Then I'll cut and paste them together to build -# a 4-helix bundle or a 4-strand beta-barrel. -# -# Doing it this way is optional. It's simpler (but longer) to simply write -# out the entire sequence of all 73 atoms in a single "Data Atoms" section. -# (IE. Don't try to subdivide it.) It's also simpler to explicitly list the -# 72 bonds, 71 3-body angles and 70 4-body dihedral angle interactions -# manually (instead of inferring them from the atom type). If your protein -# has helices which are not identical, this would probably be easier. -# Use whichever style you prefer. -# -# -# Note that atom types, bond types, angle types, and dihedral types -# are shared between all molecules defined in the "1beadProtSci2010" family. -# (That's why there is a "../" in their path-names. Otherwise atom, bond, -# angle types, etc... are not shared between different molecules.) -# -# Confusing detail: -# Each molecule in LAMMPS can be assigned a unique molecule-ID (an integer). -# These are represented by the "$mol" variable written next to each atom. -# Our protein has multiple subunits (in this case: helices, sheets, turns). -# Because we want the subunits to share the same molecule-ID counter we use -# "$mol:..." instead of "$mol" which tells moltemplate to search for the -# parent molecule's ID. This is optional. If it bothers you, just use "$mol" - - - -1beadProtSci2010 { - - write_once("In Init") { - # -- Default styles for "1beadProtSci2010" -- - units lj - atom_style full - # (Hybrid force fields were not necessary but are used for portability.) - bond_style hybrid harmonic - angle_style hybrid harmonic - dihedral_style hybrid class2 - pair_style hybrid lj/charmm/coul/charmm/inter es4k4l maxmax 3.5 4.0 rsoftcore 1 - - # If charges are needed, (assuming biopolymers), try one of: - #dielectric 80.0 - #pair_style hybrid lj/cut/coul/debye 0.1 4.0 - # or (for short distances, below a couple nm) - #pair_style hybrid lj/charmm/coul/charmm/implicit 3.5 4.0 - - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 #(turn on "1-4" interactions) - } - - - # ---- Building blocks: A16, B16, Turn3 ---- - - # A16 is a coarse-grained alpha-helix containing 16 residues (one "atom" each) - - A16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../L 0.0 -0.4 -0.4 0.0 - $atom:a2 $mol:... @atom:../L 0.0 0.4 -0.4 0.6 - $atom:a3 $mol:... @atom:../H 0.0 0.4 0.4 1.2 - $atom:a4 $mol:... @atom:../H 0.0 -0.4 0.4 1.8 - $atom:a5 $mol:... @atom:../L 0.0 -0.4 -0.4 2.4 - $atom:a6 $mol:... @atom:../L 0.0 0.4 -0.4 3.0 - $atom:a7 $mol:... @atom:../H 0.0 0.4 0.4 3.6 - $atom:a8 $mol:... @atom:../H 0.0 -0.4 0.4 4.2 - $atom:a9 $mol:... @atom:../L 0.0 -0.4 -0.4 4.8 - $atom:a10 $mol:... @atom:../L 0.0 0.4 -0.4 5.4 - $atom:a11 $mol:... @atom:../H 0.0 0.4 0.4 6.0 - $atom:a12 $mol:... @atom:../H 0.0 -0.4 0.4 6.6 - $atom:a13 $mol:... @atom:../L 0.0 -0.4 -0.4 7.2 - $atom:a14 $mol:... @atom:../L 0.0 0.4 -0.4 7.8 - $atom:a15 $mol:... @atom:../H 0.0 0.4 0.4 8.4 - $atom:a16 $mol:... @atom:../H 0.0 -0.4 0.4 9.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # A16 - - - # B16 is a coarse-grained beta-strand containing 16 residues (one "atom" each) - - B16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../L 0.0 -0.3 0.0 0.0 - $atom:a2 $mol:... @atom:../H 0.0 0.3 0.0 0.8 - $atom:a3 $mol:... @atom:../L 0.0 -0.3 0.0 1.6 - $atom:a4 $mol:... @atom:../H 0.0 0.3 0.0 2.4 - $atom:a5 $mol:... @atom:../L 0.0 -0.3 0.0 3.2 - $atom:a6 $mol:... @atom:../H 0.0 0.3 0.0 4.0 - $atom:a7 $mol:... @atom:../L 0.0 -0.3 0.0 4.8 - $atom:a8 $mol:... @atom:../H 0.0 0.3 0.0 5.6 - $atom:a9 $mol:... @atom:../L 0.0 -0.3 0.0 6.4 - $atom:a10 $mol:... @atom:../H 0.0 0.3 0.0 7.2 - $atom:a11 $mol:... @atom:../L 0.0 -0.3 0.0 8.0 - $atom:a12 $mol:... @atom:../H 0.0 0.3 0.0 8.8 - $atom:a13 $mol:... @atom:../L 0.0 -0.3 0.0 9.6 - $atom:a14 $mol:... @atom:../H 0.0 0.3 0.0 10.4 - $atom:a15 $mol:... @atom:../L 0.0 -0.3 0.0 11.2 - $atom:a16 $mol:... @atom:../H 0.0 0.3 0.0 12.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # B16 - - T3 { # T3 is a "turn" region consisting of 3 beads - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../N 0.0 -0.8 0.0 0.0 - $atom:a2 $mol:... @atom:../N 0.0 0.0 0.55 -0.24 - $atom:a3 $mol:... @atom:../N 0.0 0.8 0.0 0.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - } - - } # T3 - - # (Note: Again, atom types, bond-types, (dihedral-types, any variable, etc) - # can be shared. The ".." in "@atom:../CA" tells moltemplate that - # atom type CA is defined in the parent's environment. (We are - # sharing the CA atom type between both the H and P residues. - # The same is true of the ".." in "@bond:../sidechain". - # - # - # Note: The "..." in "$mol:..." tells moltemplate that this molecule may - # be a part of a larger molecule, and (if so) to use the larger - # molecule's id number as it's own. - - - - # ----- Now build larger molecules using A16, B16 and T3 ------- - - 4HelixBundle { - - helix1 = new A16.rot( -45, 0,0,1).move(-1.12691645,-1.12691645, 0) - helix2 = new A16.rot( 45, 0,0,1).move( 1.12691645,-1.12691645, 0) - helix3 = new A16.rot( 135, 0,0,1).move( 1.12691645, 1.12691645, 0) - helix4 = new A16.rot( 225, 0,0,1).move(-1.12691645, 1.12691645, 0) - # Note: 1.12691645 ~= 0.5*2^(1/6) + 0.4*sqrt(2) - - turn1 = new T3.rot(180,1,0,0).rot(-17,0,0,1).move(-0.2,-0.7,9.9) - turn2 = new T3.rot( 0,1,0,0).rot(-100,0,0,1).move(0.7,-0.15,-0.3) - turn3 = new T3.rot(180,1,0,0).rot(163,0,0,1).move(0.2,0.7,9.9) - - # Note: In the paper, this is described as the "UA2" conformation - # (I played around with the angles until it looked "okay". This is not - # the minimum energy conformation. Further minimization is necessary.) - - # Now bond the pieces together. - # (Note: angle & dihedral interactions will be generated automatically.) - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # <-- create a variable for the parent's Molecule-ID - } - - 4SheetBundle { - - sheet1 = new B16.rot( 45, 0,0,1).move(-0.793700526,-0.793700526, 0) - sheet2 = new B16.rot( 135, 0,0,1).move( 0.793700526,-0.793700526, 0) - sheet3 = new B16.rot( 225, 0,0,1).move( 0.793700526, 0.793700526, 0) - sheet4 = new B16.rot( 315, 0,0,1).move(-0.793700526, 0.793700526, 0) - # Note: 0.793700526 ~= 0.5*2^(1/6) * sqrt(1/2) - - turn1 = new T3.rot(180,1,0,0).rot(0,0,0,1).move(0,-1.3,12.6) - turn2 = new T3.rot( 0,1,0,0).rot(-90,0,0,1).move(0.7,-0.0,-0.9) - turn3 = new T3.rot(180,1,0,0).rot(-180,0,0,1).move(0,1.3,12.6) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:sheet1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:sheet2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:sheet3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:sheet2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:sheet3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:sheet4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - } - - - # There are 3 atom types (referred to above as ../H, ../L, and ../N) - # Define their masses: - - write_once("Data Masses") { - @atom:H 1.0 - @atom:L 1.0 - @atom:N 1.0 - - } - - - - # -------------------------------------------------------------------- - # -- In this example, all force field parameters are stored in the -- - # -- file named "In Settings". They can also go in sections like -- - # -- "Data Pair Coeffs", "Data Bond Coeffs", "Data Angle Coeffs"... -- - # -------------------------------------------------------------------- - - - - - # 2-body (non-bonded) interactions: - # - # Uij(r) = 4*eps_ij * (K*(sig_ij/r)^12 + L*(sig_ij/r)^6) - # - # i j pairstylename eps sig K L - # - write_once("In Settings") { - pair_coeff @atom:H @atom:H lj/charmm/coul/charmm/inter 1.0 1.0 1 -1 0 0 0 0 - pair_coeff @atom:L @atom:L lj/charmm/coul/charmm/inter 1.0 1.0 1 0 0 0 0 0 - pair_coeff @atom:N @atom:N lj/charmm/coul/charmm/inter 1.0 1.0 1 0 0 0 0 0 - } - # (Interactions between different atom types use "arithmetic" - # and "maxmax" ("repulsion-wins") mixing rules.) - - - # 2-body (bonded) interactions: - # - # Ubond(r) = (k/2)*(r-0)^2 - # - # The corresponding command is: - # - # bond_coeff bondType bondstylename k r0 - # - - write_once("In Settings") { - bond_coeff @bond:backbone harmonic 66.6 1.0 - } - - - - # 3-body interactions in this example are listed by atomType and bondType - # The atomIDs involved are determined automatically. The forumula used is: - # - # Uangle(theta) = (k/2)*(theta-theta0)^2 - # (k in kcal/mol/rad^2, theta0 in degrees) - # - # The corresponding command is: - # - # angle_coeff angleType anglestylename k theta0 - - write_once("In Settings") { - angle_coeff @angle:backbone harmonic 66.6 105.0 - } - - # Generate a "backbone" 3-body interaction whenever 3 atoms are bonded - # together. We do this by to asking moltemplate to generate this - # 3-body interaction whenever 3 consecutively bonded atoms satisfy - # the following type requirement: - # - # angleType atomtypes1 2 3 bondtypes1 2 - - write_once("Data Angles By Type") { - @angle:backbone * * * * * - } - - - - - - # 4-body interactions in this example are listed by atomType and bondType - # The atomIDs involved are determined automatically. The forumula used is: - # - # Udihedral(phi) = K * (1 + cos(n*phi - d)) - # - # The d parameter is in degrees, K is in kcal/mol/rad^2. - # - # The corresponding command is: - # - - # From the Bellesia et al paper: Udihedral(x) = 1.2*(cos(x+delta) + cos(3x)) (delta=60) - # (scratchwork: 1.2*cos(x+60) = -1.2*cos(x+60-180) = -1.2*cos(x-120)) - # and 1.2*cos(3x) = -1.2*cos(3x-180) - # and 0.2*cos(x) = -0.2*cos(x - 180) - # This way, the energies match exactly with the implementation using charmm dihedrals.) - # - # dihedralType dihedralstylename K1 phi1 K2 phi2 K3 phi3 - - write_once("In Settings") { - dihedral_coeff @dihedral:delta60_0 class2 1.2 120.0 0 0 1.2 180.0 - dihedral_coeff @dihedral:turn class2 0 0 0 0 0.2 180.0 - - # All of the cross-terms (for the class2 force-field) are zero (see docs): - dihedral_coeff @dihedral:delta60_0 class2 mbt 0 0 0 0 - dihedral_coeff @dihedral:delta60_0 class2 ebt 0 0 0 0 0 0 0 0 - dihedral_coeff @dihedral:delta60_0 class2 at 0 0 0 0 0 0 0 0 - dihedral_coeff @dihedral:delta60_0 class2 aat 0 0 0 - dihedral_coeff @dihedral:delta60_0 class2 bb13 0 0 0 - dihedral_coeff @dihedral:turn class2 mbt 0 0 0 0 - dihedral_coeff @dihedral:turn class2 ebt 0 0 0 0 0 0 0 0 - dihedral_coeff @dihedral:turn class2 at 0 0 0 0 0 0 0 0 - dihedral_coeff @dihedral:turn class2 aat 0 0 0 - dihedral_coeff @dihedral:turn class2 bb13 0 0 0 - } - - # Generate 4-body interactions whenever 4 consecutively bonded atoms satisfy - # the following type requirements: - - write_once("Data Dihedrals By Type") { - # dihedralType atomtypes1 2 3 4 bondtypes1 2 3 - - @dihedral:delta60_0 @atom:H @atom:L @atom:H @atom:L * * * - @dihedral:delta60_0 @atom:H @atom:H @atom:L @atom:L * * * - @dihedral:delta60_0 @atom:H @atom:L @atom:L @atom:H * * * - @dihedral:delta60_0 @atom:L @atom:H @atom:H @atom:L * * * - - @dihedral:turn @atom:N @atom:* @atom:* @atom:* * * * - @dihedral:turn @atom:N @atom:N @atom:* @atom:* * * * - @dihedral:turn @atom:N @atom:N @atom:N @atom:* * * * - @dihedral:turn @atom:N @atom:N @atom:N @atom:N * * * - - #### Comment out the next 6 lines: (They are redundant with the lines above) - ## @dihedral:delta60_0 @atom:L @atom:H @atom:L @atom:H * * * - ## @dihedral:delta60_0 @atom:L @atom:L @atom:H @atom:H * * * - ## @dihedral:turn @atom:N @atom:N @atom:N @atom:N * * * - ## @dihedral:turn @atom:* @atom:N @atom:N @atom:N * * * - ## @dihedral:turn @atom:* @atom:* @atom:N @atom:N * * * - ## @dihedral:turn @atom:* @atom:* @atom:* @atom:N * * * - ################################################################### - } - - -} # 1beadProtSci2010 (namespace) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/system.lt deleted file mode 100644 index 6300c4ce3f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/system.lt +++ /dev/null @@ -1,12 +0,0 @@ -import "1beadProtSci2010.lt" - -using namespace 1beadProtSci2010 - -prot = new 4HelixBundle - -write_once("Data Boundary") { - 0 100 xlo xhi - 0 100 ylo yhi - 0 100 zlo zhi -} - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.min b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.min deleted file mode 100644 index 8eb3a03cbb..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.min +++ /dev/null @@ -1,19 +0,0 @@ -# -- Init section -- - -include system.in.init - -# -- Atom definition section -- - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run section -- - -dump 1 all custom 50 traj_min.lammpstrj id mol type x y z ix iy iz - -minimize 1.0e-5 1.0e-7 500 2000 - -write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.nvt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.nvt deleted file mode 100644 index a0f02dc738..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.nvt +++ /dev/null @@ -1,44 +0,0 @@ -# -- Init Section -- - -include system.in.init - -# -- Atom Definition Section -- - -# I you want to be careful, you can minimize the system first. -# (Try using "run.in.min" and uncomment the line below) -# read_data system_after_min.data - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run Section -- - - -timestep 0.008 -dump 1 all custom 500 traj_nvt.lammpstrj id mol type x y z ix iy iz - -# To use Langevin dynamics in LAMMPS you need both "fix langevin" and "fix nve". -# (See http://lammps.sandia.gov/doc/fix_langevin.html for details.) - -fix fxlan all langevin 0.4 0.4 1.0 48279 -fix fxnve all nve - -# Notes: -# The temperature is in reduced units and is set to 0.4. -# The inverse-damping-rate "damp" (which has units of time) is set to 1.0. -# (See http://lammps.sandia.gov/doc/fix_langevin.html) - - -thermo_style custom step temp pe etotal press vol epair ebond eangle edihed -thermo_modify norm no #(report total energy not energy / num_atoms) -thermo 500 #(time interval for printing out "thermo" data) - -restart 10000000 restart_nvt - -run 1000000 - -write_data system_after_nvt.data - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README.TXT deleted file mode 100644 index 305d00d636..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README.TXT +++ /dev/null @@ -1,114 +0,0 @@ - This example shows how to build a multicomponent spherical vesicle. - The lipid bilayer is composed of two different lipids (DPPC and DLPC). - The vesicle also contains trans-membrane protein inclusions. - - The coordinates for the vesicle are constructed by PACKMOL (see below). - - The DPPC lipid model is described here: - G. Brannigan, P.F. Philips, and F.L.H. Brown, - Physical Review E, Vol 72, 011915 (2005) - (The DLPC model is a truncated version of DPPC. Modifications discussed below.) - The protein model is described here: - G. Bellesia, AI Jewett, and J-E Shea, - Protein Science, Vol19 141-154 (2010) - ---- PREREQUISITES: --- - -1) This example requires PACKMOL. You can download PACKMOL here: - - http://www.ime.unicamp.br/~martinez/packmol/ - - (Moltemplate does not come with an easy way to generate spherically-symmetric - structures, so I used the PACKMOL program to move the molecules into position.) - -2) This example requires the "dihedral_style fourier", which is currently -in the USER-MISC package. Build LAMMPS with this package enabled using - make yes-user-misc -before compiling LAMMPS. -(See http://lammps.sandia.gov/doc/Section_start.html#start_3 for details.) - -3) This example may require additional features to be added to LAMMPS. -If LAMMPS complains about an "Invalid pair_style", then - a) download the "additional_lammps_code" from - http://moltemplate.org (upper-left corner menu) - b) unpack it - c) copy the .cpp and .h files to the src folding of your lammps installation. - d) (re)compile LAMMPS. - ------- Details ------- - -This example contains a coarse-grained model of a 4-helix bundle protein -inserted into a lipid bilayer (made from a mixture of DPPC and DLPC). - - -- Protein Model: -- - -The coarse-grained protein is described in: - G. Bellesia, AI Jewett, and J-E Shea, Protein Science, Vol19 141-154 (2010) -Here we use the "AUF2" model described in that paper. -(The hydrophobic beads face outwards.) - - -- Memebrane Model: -- - -The DPPC lipid bilayer described in: - G. Brannigan, P.F. Philips, and F.L.H. Brown, - Physical Review E, Vol 72, 011915 (2005) -and: - M.C. Watson, E.S. Penev, P.M. Welch, and F.L.H. Brown - J. Chem. Phys. 135, 244701 (2011) - -As in Watson(JCP 2011), rigid bond-length constraints -have been replaced by harmonic bonds. - -A truncated version of this lipid (named "DLPC") has also been added. -The bending stiffness of each lipid has been increased to compensate -for the additional disorder resulting from mixing two different types -of lipids together. (Otherwise pores appear.) -Unlike the original "DPPC" molecule model, the new "DPPC" and "DLPC" models -have not been carefully parameterized to reproduce the correct behavior in -a lipid bilayer mixture. - - -- Interactions between the proteins and lipids -- - -This is discussed in the "system.lt" file. - ---- Building the files necessary to run a simulation in LAMMPS --- - -step 1) Run PACKMOL - - Type these commands into the shell. - (Each command could take several hours.) - -cd packmol_files - packmol < step1_proteins.inp # This step determines the protein's location - packmol < step2_innerlayer.inp # this step builds the inner monolayer - packmol < step3_outerlayer.inp # this step builds the outer monolayer -cd .. - -step 2) Run MOLTEMPLATE - Type these commands into the shell. - (This could take up to 10 minutes.) - -cd moltemplate_files - moltemplate.sh system.lt -xyz ../system.xyz - mv -f system.in* system.data ../ - cp -f table_int.dat ../ -cd .. - ---- Running LAMMPS --- - -step3) Run LAMMPS: - Type these commands into the shell. - (This could take days.) - -lmp_linux -i run.in.min # Minimize the system (important, and very slow) - -lmp_linux -i run.in.nvt # Run a simulation at constant volume - -If you have compiled the MPI version of lammps, you can run lammps in parallel: - -mpirun -np 4 lmp_linux -i run.in.min - or -mpirun -np 4 lmp_linux -i run.in.nvt - -(Assuming you have 4 cores, for example.) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_WARNING.TXT b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_WARNING.TXT deleted file mode 100644 index f11c438ad4..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_WARNING.TXT +++ /dev/null @@ -1,20 +0,0 @@ -WARNING: - - This is not a realistic simulation of proteins in a lipid membrane. This -example was only intented to be a technical demonstration to show how to -combine totally different kinds of coarse-grained molecules (with different -kinds of force-fields) together in the same simulation in LAMMPS. Tuning the -force-field parameters to get realistic results was not the goal. I did -not take the extra time to do this. If you have suggestions for changes, -please email me (jewett.aij at gmail dot com). - - In addition, I have noticed that newer versions of PACKMOL do not -always succeed at generating a spherical vesicle in a reasonable amount of time. -(You may have to play with the .inp files in the packmol_files directory - to get PACKMOL to produce any files at all. - -(NOTE: This example also demonstrantes how to use an external program - ("packmol") to generate the coordinates for the atoms in the system. - PLEASE USE "packmol", NOT "ppackmol". -the parallel version of "packmol". - This is because "ppackmol" is more likely to get caught in infinite loops.) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_run.sh b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_run.sh deleted file mode 100755 index ab62f6fb59..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_run.sh +++ /dev/null @@ -1,24 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The "run.in.nvt" file is a LAMMPS input script containing -# references to the input scripts and data files -# you hopefully have created earlier with MOLTEMPLATE and PACKMOL: -# system.in.init, system.in.settings, system.in.coords, system.data, -# and table_int.dat -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - -lmp_mpi -i run.in.min # Minimize the system (important, and very slow) - -lmp_mpi -i run.in.nvt # Run a simulation at constant volume - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.min -#or -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_setup.sh b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_setup.sh deleted file mode 100755 index f695f6d0ef..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_setup.sh +++ /dev/null @@ -1,65 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - -# First, generate the coordinates (the "system.xyz" file). -# (This can be a very slow process.) - - - -cd packmol_files - - # You must run each packmol commend one after the other. - # NOTE: If PACKMOL gets stuck in an endless loop, then edit the corresponding - # "inp" file. This should not happen. You can also usually interrupt - # packmol after 30 minutes, and the solution at that point (an .xyz file) - # should be good enough for use. - packmol < step1_proteins.inp # This step determines the protein's location - # It takes ~20 minutes (on an intel i7) - packmol < step2_innerlayer.inp # this step builds the inner monolayer - # It takes ~90 minutes - packmol < step3_outerlayer.inp # this step builds the outer monolayer - # It takes ~4 hours - - - # NOTE: PLEASE USE "packmol", NOT "ppackmol". ("ppackmol" is the parallel - # version of packmol using OpemMP. This example has NOT been tested - # with "ppackmol". Our impression was that the "ppackmol" version - # is more likely to get stuck in an infinite loop. -Andrew 2015-8) - - - # Step3 creates a file named "step3_outerlayer.xyz" containing the coordinates - # in all the atoms of all the molecules. Later we will run moltemplate.sh - # using the "-xyz ../system.xyz" command line argument. That will instruct - # moltemplate to look for a file named "system.xyz" in the parent directory. - # So I rename the "step3_outerlayer.xyz" file to "system.xyz", and move it - # to this directory so that later moltemplate.sh can find it. - - mv -f step3_outerlayer.xyz ../system.xyz -cd .. - - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh -xyz ../system.xyz system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # The "table_int.dat" file contains tabular data for the lipid INT-INT atom - # 1/r^2 interaction. We need it too. (This slows down the simulation by x2, - # so I might look for a way to get rid of it later.) - cp -f table_int.dat ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/images/vesicle_membrane+protein_L.jpg b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/images/vesicle_membrane+protein_L.jpg deleted file mode 100644 index c3ff5995601bc8b6ca882ad14d82454d896f642d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284201 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�|#Pwk>zlPXv5 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 z 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010.lt deleted file mode 100644 index 2e510ebd9e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010.lt +++ /dev/null @@ -1,233 +0,0 @@ -# This file defines a 4-helix bundle coarse-grained protein model (AUF2) used in -# G. Bellesia, AI Jewett, and J-E Shea, -# Protein Science, Vol19 141-154 (2010) -# -# Strategy: -# -#1) First I'll define some building blocks (A16, B16, T3) -# which are helices, sheets and turns of a predetermined length) -# -#2) Then I'll copy and paste them together to build -# a 4-helix bundle (or a 4-strand beta-barrel). -# This approach is optional. If your protein has helices which are not -# identical, you should probably just include all 4 helices in a single -# "Data Atoms" section and don't try to subdivide the protein into pieces.) - - - -1beadProtSci2010 { # <-- enclose definitions in a namespace for portability - - # A16 is a coarse-grained alpha-helix containing 16 residues (one "atom" each) - - A16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../sL 0.0 -2.4 -2.4 0.0 - $atom:a2 $mol:... @atom:../sL 0.0 2.4 -2.4 3.6 - $atom:a3 $mol:... @atom:../sH 0.0 2.4 2.4 7.2 - $atom:a4 $mol:... @atom:../sH 0.0 -2.4 2.4 10.8 - $atom:a5 $mol:... @atom:../sL 0.0 -2.4 -2.4 14.4 - $atom:a6 $mol:... @atom:../sL 0.0 2.4 -2.4 18.0 - $atom:a7 $mol:... @atom:../sH 0.0 2.4 2.4 21.6 - $atom:a8 $mol:... @atom:../sH 0.0 -2.4 2.4 25.2 - $atom:a9 $mol:... @atom:../sL 0.0 -2.4 -2.4 28.8 - $atom:a10 $mol:... @atom:../sL 0.0 2.4 -2.4 32.4 - $atom:a11 $mol:... @atom:../sH 0.0 2.4 2.4 36.0 - $atom:a12 $mol:... @atom:../sH 0.0 -2.4 2.4 39.6 - $atom:a13 $mol:... @atom:../sL 0.0 -2.4 -2.4 43.2 - $atom:a14 $mol:... @atom:../sL 0.0 2.4 -2.4 46.8 - $atom:a15 $mol:... @atom:../sH 0.0 2.4 2.4 50.4 - $atom:a16 $mol:... @atom:../sH 0.0 -2.4 2.4 54.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # A16 - - - T3 { # T3 is a "turn" region consisting of 3 beads - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../tN 0.0 -4.8 0.0 0.0 - $atom:a2 $mol:... @atom:../tN 0.0 0.0 3.3 -1.44 - $atom:a3 $mol:... @atom:../tN 0.0 4.8 0.0 0.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - } - - } # T3 - - - # ----- Now build a larger molecule using A16 and T3 ------- - - # Create a 4-Helix bundle. - # In this version, the hydrophobic beads are poing outward. - # I oriented them this way because I want to place this protein in a membrane. - # (There is another file in this directory containing alternate version - # of this same molecule with the hydrophobic beads pointing inward.) - - 4HelixInsideOut { - helix1 = new A16.rot(-225, 0,0,1).move(-5.70,-5.70,-32.4) - helix2 = new A16.rot(-135, 0,0,1).move( 5.70,-5.70,-28.8) - helix3 = new A16.rot( -45, 0,0,1).move( 5.70, 5.70,-25.2) - helix4 = new A16.rot( 45, 0,0,1).move(-5.70, 5.70,-21.6) - - turn1 = new T3.rot(180,1,0,0).rot(-20,0,1,0).rot( 10,0,0,1).move(0.78,-4.2, 27.9) - turn2 = new T3.rot(-10,1,0,0).rot( 20,0,1,0).rot(-70,0,0,1).move(4.55, 2.4,-33.0) - turn3 = new T3.rot(180,1,0,0).rot(-20,0,1,0).rot(190,0,0,1).move(-0.78,4.2, 34.2) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - - } # 4HelixInsideOut - - - # -------- Minor coordinates adjustment: ----------- - - # Those coordinates in the commands above are a little too large. - # To make it easier to type them in, I was using sigma=6.0 Angstroms. - # Instead, here I'll try using sigma=4.8 Angstroms. 4.8/6 = 0.8) - - 4HelixInsideOut.scale(0.8) - - # Note: "scale()" only effects the initial coordinates of - # the molecule, not the force field parameters. - # (If you plan to minimize the molecule, you don't need to - # be so careful about the initial coordinates. In that case, - # you don't have worry about "scale()". Feel free to remove.) - - - - # -------------- Force-Field Parameters ------------ - - # Units and force-field styles for this protein model - # (These can be overridden later.) - - write_once("In Init") { - units real - atom_style full - bond_style hybrid harmonic - angle_style hybrid harmonic - dihedral_style hybrid fourier - pair_style hybrid lj/charmm/coul/charmm/inter es4k4l maxmax 21.0 24.0 - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 #(turn on "1-4" interactions) - } - - # --- Distance Units --- - # In this version of the model, sigma (the bond-length - # and particle diameter) is rounded to 4.8 Angstroms. - # - # --- Energy & Temperature Units --- - # In this protein model, "epsilon" represents the free energy - # bonus for bringing two hydrophobic amino acids together. - # Here I choose to set epsilon to 1.806551818181818 kCal/mole. - # This value was chosen so that a temperature of 300 Kelvin lies at - # 0.33 epsilon, which is the unfolding temperature of the marginally stable - # "ASF1" protein model from the Bellesia et al 2010 paper. - # This choice insures that both the "ASF1" model from that paper, - # as well as the much more stable "AUF2" protein we use here (which - # unfolds at 0.42*eps) should definitely remain stable at 300 degrees Kelvin, - # in the bulk at least. (However it's not clear that these energy - # parameters will work well for a protein in membrane. Perhaps I'll - # run some tests and fine tune these parameters for this scenario.) - - - # 2-body (non-bonded) interactions: - # - # Uij(r) = 4*eps_ij * (K*(sig_ij/r)^12 + L*(sig_ij/r)^6) - # - # i j pairstylename eps sig K L - # - write_once("In Settings") { - pair_coeff @atom:sH @atom:sH lj/charmm/coul/charmm/inter 1.8065518 4.8 1 -1 - pair_coeff @atom:sL @atom:sL lj/charmm/coul/charmm/inter 1.8065518 4.8 1 0 - pair_coeff @atom:tN @atom:tN lj/charmm/coul/charmm/inter 1.8065518 4.8 1 0 - } - - # The exact value of the bond_coeff does not matter too much as long as - # it is "stiff enough". Here I use a softer bond spring than the one - # used in the paper so that I can increase the time step. - # I also use a relatively soft spring to constrain the bond angles. - - # bond_coeff bondType bondstylename k r0 - - write_once("In Settings") { - bond_coeff @bond:1beadProtSci2010/backbone harmonic 10.0 4.8 - } - - - # angleType atomtypes1 2 3 bondtypes1 2 - - write_once("Data Angles By Type") { - @angle:backbone @atom:* @atom:* @atom:* @bond:* @bond:* - } - - # angle_coeff angleType anglestylename k theta0 - write_once("In Settings") { - angle_coeff @angle:backbone harmonic 100.0 105.0 - } - - - # dihedralType atomtypes1 2 3 4 bondtypes1 2 3 - - write_once("Data Dihedrals By Type") { - # For a chain of sH and sL atoms, use the @dihedral:delta65_0 - # parameters. (This corresponds to the "AUF2" model from the - # Bellesia et. al 2010 paper.) - - @dihedral:delta65_0 @atom:s* @atom:s* @atom:s* @atom:s* * * * - - # If "tN" (turn) atoms are present, use the @dihedral:turn parameters - - @dihedral:turn @atom:tN @atom:* @atom:* @atom:* * * * - } - - write_once("In Settings") { - dihedral_coeff @dihedral:delta60_0 fourier 2 2.167862 3 0 2.167862 1 -60.0 - dihedral_coeff @dihedral:delta65_0 fourier 2 2.167862 3 0 2.167862 1 -65.0 - dihedral_coeff @dihedral:turn fourier 1 0.361310 3 0 - # Note: 2.167862=1.2*epsilon and 0.361310=0.2*epsilon. - } - - - # --- Mass Units --- - # Typical amino acids weigh approximately 110.0 grams/mole. (Rounding down): - write_once("Data Masses") { - @atom:1beadProtSci2010/sH 100.0 - @atom:1beadProtSci2010/sL 100.0 - @atom:1beadProtSci2010/tN 100.0 - } - -} # 1beadProtSci2010 (namespace) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010_variations.lt b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010_variations.lt deleted file mode 100644 index 38b1b48f88..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010_variations.lt +++ /dev/null @@ -1,225 +0,0 @@ -### THIS FILE IS OPTIONAL AND IS NOT NECESSARY. IN THIS FILE, I DEFINED SOME ## -### ADDITIONAL PROTEIN TYPES FROM THE PAPER THAT I DID NOT USE IN THIS EXAMPLE## -# -# This file defines a family of coarse-grained protein models used in: -# G. Bellesia, AI Jewett, and J-E Shea, -# Protein Science, Vol19 141-154 (2010) -# -# Strategy: -# -#1) First I'll define some building blocks (A16, B16, T3) -# which are helices, sheets and turns of a predetermined length) - -import "1beadProtSci2010.lt" - -# We defined A16 and T3 earlier in "1beadPRotSci2010.lt" Will define B16 below -# -#2) Then I'll copy and paste them together to build -# a 4-helix bundle or a 4-strand beta-barrel. - - -1beadProtSci2010 { #<-- Add new molecules to existing namespace defined earlier - # This way we don't have to start from scratch. We can - # use all the atom types and angle settings defined earlier - - # B16 is a coarse-grained beta-strand containing 16 residues (one "atom" each) - - B16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../sL 0.0 -1.8 0.0 0.0 - $atom:a2 $mol:... @atom:../sH 0.0 1.8 0.0 4.8 - $atom:a3 $mol:... @atom:../sL 0.0 -1.8 0.0 9.6 - $atom:a4 $mol:... @atom:../sH 0.0 1.8 0.0 14.4 - $atom:a5 $mol:... @atom:../sL 0.0 -1.8 0.0 19.2 - $atom:a6 $mol:... @atom:../sH 0.0 1.8 0.0 24.0 - $atom:a7 $mol:... @atom:../sL 0.0 -1.8 0.0 28.8 - $atom:a8 $mol:... @atom:../sH 0.0 1.8 0.0 33.6 - $atom:a9 $mol:... @atom:../sL 0.0 -1.8 0.0 38.4 - $atom:a10 $mol:... @atom:../sH 0.0 1.8 0.0 43.2 - $atom:a11 $mol:... @atom:../sL 0.0 -1.8 0.0 48.0 - $atom:a12 $mol:... @atom:../sH 0.0 1.8 0.0 52.8 - $atom:a13 $mol:... @atom:../sL 0.0 -1.8 0.0 57.6 - $atom:a14 $mol:... @atom:../sH 0.0 1.8 0.0 62.4 - $atom:a15 $mol:... @atom:../sL 0.0 -1.8 0.0 67.2 - $atom:a16 $mol:... @atom:../sH 0.0 1.8 0.0 72.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # B16 - - # ----- Now build larger molecules using B16 and T3 ------- - - - 4SheetBarrel { - sheet1 = new B16.rot( 45, 0,0,1).move(-4.762203156,-4.762203156, -36.0) - sheet2 = new B16.rot( 135, 0,0,1).move( 4.762203156,-4.762203156, -36.0) - sheet3 = new B16.rot( 225, 0,0,1).move( 4.762203156, 4.762203156, -36.0) - sheet4 = new B16.rot( 315, 0,0,1).move(-4.762203156, 4.762203156, -36.0) - - turn1 = new T3.rot(180,1,0,0).rot( 0, 0,0,1).move( 0, -7.8, 39.6) - turn2 = new T3.rot( 0,1,0,0).rot(-90,0,0,1).move(4.2, 0.0,-41.4) - turn3 = new T3.rot(180,1,0,0).rot(-180,0,0,1).move( 0, 7.8, 39.6) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:sheet1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:sheet2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:sheet3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:sheet2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:sheet3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:sheet4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - } - - - # Below I define several alternate conformations of the"4HelixBundleInsideOut" - # molecule I defined earlier in "1beadProtSci2010.lt". Same molecule however. - - 4HelixBundle { - helix1 = new A16.rot( -45, 0,0,1).move(-5.70,-5.70,-32.4) - helix2 = new A16.rot( 45, 0,0,1).move( 5.70,-5.70,-28.8) - helix3 = new A16.rot( 135, 0,0,1).move( 5.70, 5.70,-25.2) - helix4 = new A16.rot( 225, 0,0,1).move(-5.70, 5.70,-21.6) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - - turn1 = new T3.rot(150,1,0,0).rot(-23,0,1,0).rot( 8,0,0,1).move(-3.6,-4.8,28.2) - turn2 = new T3.rot(-5,1,0,0).rot( 21,0,1,0).rot(-100,0,0,1).move(4.2,-0.66,-30.9) - turn3 = new T3.rot(150,1,0,0).rot(-23,0,1,0).rot(188,0,0,1).move(3.6,4.8,35.4) - - create_var { $mol } # molecule ID number shared by all atoms in this protein - - } # 4HelixBundle - - - - - # --- alternate conformations (same molecule) ---- - - # In the following version, the helices are oriented in a similar way, - # but they are separated a little further away from eachother. - - 4HelixBundleLoose { - - helix1 = new A16.rot( -45, 0,0,1).move(-6.7347723,-6.7347723, -27.0) - helix2 = new A16.rot( 45, 0,0,1).move( 6.7347723,-6.7347723, -27.0) - helix3 = new A16.rot( 135, 0,0,1).move( 6.7347723, 6.7347723, -27.0) - helix4 = new A16.rot( 225, 0,0,1).move(-6.7347723, 6.7347723, -27.0) - - turn1 = new T3.rot(180,1,0,0).rot(-17,0,0,1).move(-1.2,-4.2,32.4) - turn2 = new T3.rot( 0,1,0,0).rot(-100,0,0,1).move(4.2,-0.9,-28.8) - turn3 = new T3.rot(180,1,0,0).rot(163,0,0,1).move(1.2,4.2,32.4) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - } - - - # In following version, the helices are oriented in a similar way, - # but they are separated a little further away from eachother. - - 4HelixInsideOutLoose { - helix1 = new A16.rot(-225, 0,0,1).move(-6.7347723,-6.7347723, -27.0) - helix2 = new A16.rot(-135, 0,0,1).move( 6.7347723,-6.7347723, -27.0) - helix3 = new A16.rot( -45, 0,0,1).move( 6.7347723, 6.7347723, -27.0) - helix4 = new A16.rot( 45, 0,0,1).move(-6.7347723, 6.7347723, -27.0) - - turn1 = new T3.rot(180,1,0,0).rot( 10,0,0,1).move( 0.78,-4.2,28.8) - turn2 = new T3.rot( 70,1,0,0).rot(-70,0,0,1).move( 10.8,2.4,-28.2) - turn3 = new T3.rot(180,1,0,0).rot(190,0,0,1).move(-0.78,4.2,28.8) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - - } # 4HelixInsideOutLoose - - - - - # In the following version, the 4 helices are arranged next to each other, - # side-by-side, in a planar conformation (instead of a compact bundle). - - 4HelixPlanar { - helix1 = new A16.rot(-00, 0,0,1).move(0, 0, -27.0) - helix2 = new A16.rot( 00, 0,0,1).move(14.4, 0, -27.0) - helix3 = new A16.rot(-00, 0,0,1).move(28.8, 0, -27.0) - helix4 = new A16.rot( 00, 0,0,1).move(43.2, 0, -27.0) - - turn1 = new T3.rot(180,1,0,0).rot( 0,0,0,1).move( 4.8, 0, 31.8) - turn2 = new T3.rot( 0,1,0,0).rot(180,0,0,1).move(19.2, 0,-31.8) - turn3 = new T3.rot(180,1,0,0).rot( 0,0,0,1).move(34.6, 0, 31.8) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - - } # 4HelixPlanar - - - # -------- Minor coordinates adjustment: ----------- - # Those coordinates in the commands above are a little too large. - # To make it easier to type them in, I was using sigma=6.0 Angstroms. - # Instead, here I'll try using sigma=4.8 Angstroms. 4.8/6.0 = 0.8) - - 4SheetBarrel.scale(0.8) - 4HelixBundle.scale(0.8) - 4HelixBundleLoose.scale(0.8) - 4HelixInsideOutLoose.scale(0.8) - 4HelixPlanar.scale(0.8) - - # Note: "scale()" only effects the initial coordinates of - # the molecule, not the force field parameters. - # (If you plan to minimize the molecule, you don't need to - # be so careful about the initial coordinates. In that case, - # you don't have worry about "scale()". Feel free to remove.) - - -} # 1beadProtSci2010 (namespace) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/CGLipidBr2005.lt b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/CGLipidBr2005.lt deleted file mode 100644 index 24be50aced..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/CGLipidBr2005.lt +++ /dev/null @@ -1,196 +0,0 @@ -# Note: -# -# This example may require additional features to be added to LAMMPS. If -# LAMMPS complains about an "Invalid pair_style", then download copy the -# "additional_lammps_code" from moltemplate.org, unpack it into your LAMMPS -# "src" directory and recompile LAMMPS. -# -# -------- Description -------- -# -# This example contains an implementation of the DPPC lipid bilayer described in -# G. Brannigan, P.F. Philips, and F.L.H. Brown, -# Physical Review E, Vol 72, 011915 (2005) -# and: -# M.C. Watson, E.S. Penev, P.M. Welch, and F.L.H. Brown -# J. Chem. Phys. 135, 244701 (2011) -# -# As in Watson(JCP 2011), rigid bond-length constraints have been replaced -# by harmonic bonds. -# -# A truncated version of this lipid (named "DLPC") has also been added. -# Unlike the original "DPPC" molecule model, "DLPC" has not been carefully -# parameterized to reproduce the correct behavior in a lipid bilayer mixture. -# -# Units: -# -# The "epsilon" parameter in their model is approximately 2.75 kJ/mole -# ( = 0.657265774378585 kCal/mole, using 1kCal=4.184kJ) -# The "sigma" parameter corresponds to 7.5 angstroms. - - -CGLipidBr2005 { - - - write_once("In Init") { - # -- Default styles for "CGLipidBr2005" -- - units real - atom_style full - # (Hybrid force field styles were used for portability.) - bond_style hybrid harmonic - - #angle_style hybrid cosine/delta # <- used in the original article - angle_style hybrid harmonic # <- prevents unphysical acute angle turns - # Explanation: - # angle_style cosine/delta: U(theta) = k*(1-cos(theta-theta0)) - # angle_style harmonic: U(theta) = k*(theta-theta0)^2 - - dihedral_style none - improper_style none - - pair_style hybrid table linear 1130 & - lj/charmm/coul/charmm/inter es4k4l 14.5 15 - - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 # turn off pairs if "less than 3 bonds" - } - - - DPPC { - write("Data Atoms") { - $atom:h $mol:. @atom:head 0.0 0.00 0.00 33.75 # DPPC head atom - $atom:i $mol:. @atom:../int 0.0 -1.00 0.00 26.25 - $atom:t1 $mol:. @atom:../tail 0.0 1.00 0.00 18.75 - $atom:t2 $mol:. @atom:../tail 0.0 -1.00 0.00 11.25 - $atom:t3 $mol:. @atom:../tail 0.0 1.00 0.00 3.75 - } - write("Data Bonds") { - $bond:b1 @bond:../backbone $atom:h $atom:i - $bond:b2 @bond:../backbone $atom:i $atom:t1 - $bond:b3 @bond:../backbone $atom:t1 $atom:t2 - $bond:b4 @bond:../backbone $atom:t2 $atom:t3 - } - write("Data Angles") { - $angle:a1 @angle:../backbone $atom:h $atom:i $atom:t1 - $angle:a2 @angle:../backbone $atom:i $atom:t1 $atom:t2 - $angle:a3 @angle:../backbone $atom:t1 $atom:t2 $atom:t3 - } - - # Define properties of the local (lipid-specific) atom:head type atom: - write_once("Data Masses") { - @atom:head 200.0 - } - write_once("In Settings") { - pair_coeff @atom:head @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../int @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../tail @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - } - - } #DPPC - - - DLPC { - write("Data Atoms") { - $atom:h $mol:. @atom:head 0.0 0.00 0.00 30.00 # DLPC head atom - $atom:i $mol:. @atom:../int 0.0 -1.00 0.00 22.50 - $atom:t1 $mol:. @atom:../tail 0.0 1.00 0.00 15.00 - $atom:t2 $mol:. @atom:../tail 0.0 -1.00 0.00 7.50 - } - write("Data Bonds") { - $bond:b1 @bond:../backbone $atom:h $atom:i - $bond:b2 @bond:../backbone $atom:i $atom:t1 - $bond:b3 @bond:../backbone $atom:t1 $atom:t2 - } - write("Data Angles") { - $angle:a1 @angle:../backbone $atom:h $atom:i $atom:t1 - $angle:a2 @angle:../backbone $atom:i $atom:t1 $atom:t2 - } - # Define properties of the local (lipid-specific) atom:head type atom: - write_once("Data Masses") { - @atom:head 200.0 - } - write_once("In Settings") { - pair_coeff @atom:head @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../int @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../tail @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - } - } #DLPC - - - # Particles and properties shared by all lipid types: - - write_once("Data Masses") { - @atom:int 200.0 - @atom:tail 200.0 - } - - write_once("In Settings") { - # -- Default settings/parameters for "CGLipidBr2005" -- - # (Hybrid bond & angle styles were used for portability.) - - # As in Watson(JCP 2011), rigid bond-length constraints - # have been replaced by harmonic bonds. - # The k_theta parameter should lie in between 5*epsilon and 10*epsilon. - bond_coeff @bond:backbone harmonic 116.847 7.5 #<--2*5000*eps/sig^2 - } - - write_once("In Settings") { - # cosine/delta: U(theta) = k*(1-cos(theta-theta0)) - #angle_coeff @angle:backbone cosine/delta 4.60086042 180 #<-- 7*eps - # harmonic: U(theta) = k*(theta-theta0)^2 not (k/2)*(theta-theta0)^2 - angle_coeff @angle:backbone harmonic 9.85898661 180 #<-->30*eps - } - # I use a stiffer bond-angle than the original Brannigan & Brown 2005 paper - # to attempt to compensate for the fact that here we are using a lipid - # mixture of DPPC and DLPC. (The mixture of lipids introduces a great deal - # of disorder into the bilayer which would not be present in a DPPC bilayer. - # This causes pores to form. Increasing the angle stiffness prevents this.) - - write_once("In Settings") { - - # The interaction of "atom:int" with other "atom:int" atoms is given by - # epsilon*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2), shifted and cutoff at - # r=3*sigma. This was implemented using pair_style table. - # Unfortunately, mixing lj/charmm and "table" pair styles in the same - # simulation is very inneficient. - - pair_coeff @atom:int @atom:int table table_int.dat INT - - # The interaction of tail beads with eachother is given by the formula below - # and with other atoms ...using Lorenz-Berthelot and "repulsive wins" rules: - # epsilon*(0.4*(sigma/r)^12 - 1.0*(sigma/r)^6), - pair_coeff @atom:tail @atom:tail lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 -1 - pair_coeff @atom:int @atom:tail lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 -1 - - # The interaction between head beads from different types of lipids - # is (currently) repulsive: - pair_coeff @atom:DPPC/head @atom:DLPC/head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - - } # write_once("In Settings") - - - # Note: I divided epsilon by 4 to get "0.1643" because we are using the - # "es4k4l" coeffstyle, corresponding to U(r)=eps(4*K*(s/r)^12 + 4*L*(s/r)^6) - # (The "es4k4l" coeffstyle is the default.) Using this convention makes it - # easier to mix this coarse-grained lipid model with other molecular models. - - - -} # CGLipidBr2005 - - - - - - - - -# Note: This example has not been optimized for speed. -# -# Unfortunately, using both lj/charmm and "table" pair styles in the same -# simulation seems to be very inneficient. (The simulation is twice as slow -# as using only the "lj/charmm" pair styles for every pairwise interaction, -# ...and about 25% slower than using "table" for every pairwise interaction. -# However the lennard-jones pair styles support mixing, so we use them to -# make it easier to run these molecules with other molecules which don't use -# pair_table. I felt that portability was worth the extra 25% slow down.) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh deleted file mode 100755 index b0de637379..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh +++ /dev/null @@ -1,22 +0,0 @@ -# This example shows how to build a multicomponent spherical vesicle. -# The lipid bilayer is composed of two different lipids (DPPC and DLPC), -# The vesicle contains 120 trans-membrane protein inclusions. -# -# ---------------- Prerequisites: ------------------ -# You must run packmol to generate the coordinates beforehand. -# Afterwards, move and rename the final coordinate file to "../system.xyz" -# To do this, check the README.sh file in the ../packmol_files directory. -# (or follow these instructions below) -# -# cd ../packmol_files -# packmol < step1_proteins.inp -# packmol < step2_innerlayer.inp -# packmol < step3_outerlayer.inp -# cp step3_outerlayer.xyz ../system.xyz -# -# These steps could take a few hours. -# -# --- After you have done that, you can run moltemplate using this command: --- - -moltemplate.sh system.lt -xyz ../system.xyz - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py deleted file mode 100755 index 0d09e4d02e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -# Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in -# Brannigan et al, Phys Rev E, 72, 011915 (2005) -# The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) -# However it is truncated at rc2 = 22.5 (shifted upwards to maintain continuity) - -def U(r, eps, sigma): - return eps* (0.4*pow((sigma/r),12) - 3.0*sigma*sigma/(r*r)) -def F(r, eps, sigma): - return eps*(12*0.4*pow((sigma/r),13)/sigma - 2*3.0*sigma*sigma/(r*r*r)) - -epsilon = 2.75/4.184 # kCal/mole -sigma = 7.5 -Rmin = 0.02 -Rmax = 22.6 -rcut = 22.5 -N = 1130 - -for i in range(0,N): - r = Rmin + i*(Rmax-Rmin)/(N-1) - U_r = U(r, epsilon, sigma) - U(rcut, epsilon, sigma) - F_r = F(r, epsilon, sigma) - if r > rcut: - U_r = 0.0 - F_r = 0.0 - print(str(i+1)+' '+str(r)+' '+str(U_r)+' '+str(F_r)) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py deleted file mode 100755 index 32147e444a..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env python - -# Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in -# Brannigan et al, Phys Rev E, 72, 011915 (2005) -# The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) -# I realized later this is not what we want because although energy is conserved -# all enrgies are shifted with respect to energies used in the Brannigan paper -# (by 0.27 kCal/mole) and the later Watson JCP 2011 paper (by 0.224 kCal/mole). -# (So don't use this.) - -# Calculate and print a - -def S(r, rc1, rc2, derivative=False): - """ - Calculate the switching function S(r) which decays continuously - between 1 and 0 in the range from rc1 to rc2 (rc2>rc1): - S(r) = (rc2^2 - r^2)^2 * (rc2^2 + 2*r^2 - 3*rc1^2) / (rc2^2-rc1^2)^3 - I'm using the same smoothing/switching cutoff function used by the CHARMM - force-fields. (I'm even using the same code to implement it, taken - from lammps charmm/coul/charmm pair style, rewritten in python.) - - """ - assert(rc2>rc1) - rsq = r*r - rc1sq = rc1*rc1 - rc2sq = rc2*rc2 - denom_lj_inv = (1.0 / ((rc2sq-rc1sq)* - (rc2sq-rc1sq)* - (rc2sq-rc1sq))) - if rsq > rc2sq: - return 0.0 - elif rsq < rc1sq: - if derivative: - return 0.0 - else: - return 1.0 - else: - rc2sq_minus_rsq = (rc2sq - rsq) - rc2sq_minus_rsq_sq = rc2sq_minus_rsq * rc2sq_minus_rsq - if derivative: - return (12.0 * rsq * rc2sq_minus_rsq * (rsq-rc1sq) * denom_lj_inv) - else: - return (rc2sq_minus_rsq_sq * - (rc2sq + 2.0*rsq - 3.0*rc1sq) * denom_lj_inv) - - -def U(r, eps, sigma): - return eps* (0.4*pow((sigma/r),12) - 3.0*sigma*sigma/(r*r)) - -def F(r, eps, sigma): - return eps*(12*0.4*pow((sigma/r),13)/sigma - 2*3.0*sigma*sigma/(r*r*r)) - -epsilon = 2.75/4.184 # kCal/mole -sigma = 7.5 -Rmin = 0.02 -Rmax = 22.6 -Rc1 = 22.0 -Rc2 = 22.5 -N = 1130 - -for i in range(0,N): - r = Rmin + i*(Rmax-Rmin)/(N-1) - U_r = U(r, epsilon, sigma) - F_r = F(r, epsilon, sigma) - # Multiply U(r) & F(r) by the smoothing/switch function - U_r = U_r * S(r, Rc1, Rc2) - F_r = U_r * S(r, Rc1, Rc2, True) + F_r * S(r, Rc1, Rc2, False) - print(str(i+1)+' '+str(r)+' '+str(U_r)+' '+str(F_r)) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/system.lt deleted file mode 100644 index f73c0d5f1d..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/system.lt +++ /dev/null @@ -1,166 +0,0 @@ -# Description: -# -# This example shows how to build a multicomponent spherical vesicle. -# The lipid bilayer is composed of two different lipids (DPPC and DLPC), -# The vesicle contains 120 trans-membrane protein inclusions. -# -# The DPPC lipid model is described here: -# G. Brannigan, P.F. Philips, and F.L.H. Brown, -# Physical Review E, Vol 72, 011915 (2005) -# The protein model is described here: -# G. Bellesia, AI Jewett, and J-E Shea, -# Protein Science, Vol19 141-154 (2010) -# The new DLPC model is a truncated version of DPPC, -# (Its behaviour has not been rigorously tested.) -# Note that 50%/50% mixtures of DPPC & DLPC are commonly used to -# build liposomes http://www.ncbi.nlm.nih.gov/pubmed/10620293 -# -# NOTE: THE COORDINATES FOR THESE MOLECULES ARE GENERATED BY PACKMOL (see below) -# -# NOTE: -# This example may require additional features to be added to LAMMPS. -# If LAMMPS complains about an "Invalid pair_style", then copy the code -# in the "additional_lammps_code" directory into your LAMMPS "src" directory -# and recompile LAMMPS. - -# First, load the definitions of the molecules we will need: - -import "CGLipidBr2005.lt" -using namespace CGLipidBr2005 - -import "1beadProtSci2010.lt" -using namespace 1beadProtSci2010 - -# PREREQUISITES: -# Coordinates for the molecules in this example are loaded from an .XYZ file -# created by PACKMOL. This must be done in advance. (See ../packmol_files/) -# -# The XYZ file was created by PACKMOL in 3 steps: -# (Add the proteins, then pack lipids in the inner & outer layers around them.) -# -# step1) Creae 120 proteins. Distribute them on the surface of the sphere. -# -# step2) Keeping the coordinates from step1 fixed, -# a) first we add 9500 DPPC lipids to the inner monolayer -# b) then we add 9500 DLPC lipids to the inner monolayer -# -# step3) Keeping the coordinates from steps 1 and 2 fixed, -# a) first we add 12500 DPPC lipids to the outer monolayer -# b) then we add 12500 DLPC lipids to the outer monolayer -# -# The order that molecules are created in moltemplate should match the order -# they appear in the final XYZ file created by PACKMOL. (See above.) -# Consequently I instantiate the molecules in the same order here: - - -# Step 1) ---- protein inclusions ---- - -proteins = new 4HelixInsideOut [120] - -# Step 2a) ---- inner monolayer ---- -dppc_in = new DPPC [9500] -# Step 2b) -dlpc_in = new DLPC [9500] - -# Step 3a) ---- outer monolayer ---- -dppc_out = new DPPC [12500] -# Step 3b) -dlpc_out = new DLPC [12500] - - - -# ------------------ boundary conditions -------------------- - -write_once("Data Boundary") { - -500.0 500.0 xlo xhi - -500.0 500.0 ylo yhi - -500.0 500.0 zlo zhi -} - - -# -------- interactions between protein and lipids ---------- - -# Note: All atom types must include the full path (the name of -# the namespace which defined them as well as the atom type name). -# (This is because we are no longer inside that namespace.) - - -write_once("In Settings") { - - # Interactions between the protein and lipid atoms are usually - # determined by mixing rules. However this is not possible some - # for atoms (such as the "int" atoms in the lipid model which - # interact using -1/r^2 attraction). Lorentz-Berthelot mixing - # rules do not make sense for these atoms so we must explicitly - # define their interaction with all other atoms. - - # i j pairstylename eps sig K L - - pair_coeff @atom:CGLipidBr2005/int @atom:1beadProtSci2010/sH lj/charmm/coul/charmm/inter 1.8065518 7.5 1 -1 - pair_coeff @atom:CGLipidBr2005/int @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/int @atom:1beadProtSci2010/tN lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - - # We want the interactions between hydrophobic residues and atoms in - # the interior of the lipid to be energetically similar to the attractive - # interactions between hydrophobic residues. (See 1beadProtSci2010.) - - pair_coeff @atom:CGLipidBr2005/tail @atom:1beadProtSci2010/sH lj/charmm/coul/charmm/inter 1.8065518 7.5 1 -1 - - # All other interactions between proteins and lipids are steric. - pair_coeff @atom:CGLipidBr2005/tail @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/tail @atom:1beadProtSci2010/tN lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/DPPC/head @atom:1beadProtSci2010/sH lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/DPPC/head @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/DLPC/head @atom:1beadProtSci2010/sH lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/DLPC/head @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - - - # We also add an artificial attractive interaction between the - # turn residues of the protein and the lipid head groups in - # order to keep the protein upright. This might not be necessary - - pair_coeff @atom:CGLipidBr2005/DPPC/head @atom:1beadProtSci2010/tN lj/charmm/coul/charmm/inter 1.8065518 6.0 1 -1 - pair_coeff @atom:CGLipidBr2005/DLPC/head @atom:1beadProtSci2010/tN lj/charmm/coul/charmm/inter 1.8065518 6.0 1 -1 - - # Add a weak attractive interaction between hydrophilic "sL" beads - # (Whose strength mimics the strength of interaction between tail beads - # in the lipid. This was absent from the original protein model. - # However without some kind of weak attraction between residues, - # the negative pressure in the interior of the bilayer membrane - # allways pulls the protein apart. Recall that in the membrane, - # the hydrophobic beads in the protein will face outwards towards the lipid - # tails leaving the hydrophilic amino acids of the protein in the interior. - # In reality, these polar groups form hydrogen bonds with each other.) - - pair_coeff @atom:1beadProtSci2010/sL @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 0.3286 6.0 0.4 -1 - - # However these hydrophilic amino acids are not attracted to - # the bilayer interior. - - pair_coeff @atom:CGLipidBr2005/int @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:CGLipidBr2005/tail @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - -} - - - - -# Finally, we must combine the two force-field styles which were used for -# the coarse-grained lipid and protein. To do that, we write one last time -# to the "In Init" section. When reading the "Init" section LAMMPS will -# read these commands last and this will override any earlier settings. - -write_once("In Init") { - # -- These styles override earlier settings -- - units real - atom_style full - # (Hybrid force field styles were used for portability.) - bond_style hybrid harmonic - angle_style hybrid cosine/delta harmonic - dihedral_style hybrid fourier - improper_style none - pair_style hybrid table linear 1001 lj/charmm/coul/charmm/inter es4k4l 14.5 15 - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 # turn off pairs if "less than 3 bonds" -} - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/table_int.dat b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/table_int.dat deleted file mode 100644 index b0d651d67f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/table_int.dat +++ /dev/null @@ -1,1139 +0,0 @@ -# Table for the INT-INT interaction from -# Brannigan et al, Phys Rev E, 72, 011915 (2005) -# This table contains -# i r_i U(r_i) -dU/dr|r_i -# where U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) - -INT -N 1130 - -1 0.02 2.0331818401e+30 1.21990910406e+33 -2 0.04 4.9638228518e+26 1.48914685554e+29 -3 0.06 3.82579033251e+24 7.65158066501e+26 -4 0.08 1.21187081343e+23 1.81780622014e+25 -5 0.1 8.32791281704e+21 9.99349538045e+23 -6 0.12 9.34030842897e+20 9.34030842897e+22 -7 0.14 1.46892540453e+20 1.25907891817e+22 -8 0.16 2.95866897809e+19 2.21900173357e+21 -9 0.18 7.19889946863e+18 4.79926631242e+20 -10 0.2 2.0331818401e+18 1.21990910406e+20 -11 0.22 6.47834392264e+17 3.53364213962e+19 -12 0.24 2.28034873754e+17 1.14017436877e+19 -13 0.26 8.72681951932e+16 4.02776285507e+18 -14 0.28 3.58624366341e+16 1.53696157003e+18 -15 0.3 1.56704372019e+16 6.26817488078e+17 -16 0.32 7.2233129348e+15 2.70874235055e+17 -17 0.34 3.48970861422e+15 1.23166186384e+17 -18 0.36 1.75754381558e+15 5.85847938527e+16 -19 0.38 9.18613895646e+14 2.90088598625e+16 -20 0.4 4.96382285179e+14 1.48914685554e+16 -21 0.42 2.76404230108e+14 7.89726371739e+15 -22 0.44 1.58162693423e+14 4.31352800247e+15 -23 0.46 9.27773983256e+13 2.42027995633e+15 -24 0.48 5.56725765996e+13 1.391814415e+15 -25 0.5 3.41111308981e+13 8.18667141564e+14 -26 0.52 2.13057117167e+13 4.91670270393e+14 -27 0.54 1.35459994024e+13 3.0102220895e+14 -28 0.56 8.75547769351e+12 1.87617379153e+14 -29 0.58 5.74645813711e+12 1.18892237325e+14 -30 0.6 3.8257903322e+12 7.65158066491e+13 -31 0.62 2.58128463312e+12 4.99603477424e+13 -32 0.64 1.7635041342e+12 3.30657025205e+13 -33 0.66 1.21901470178e+12 2.21639036726e+13 -34 0.68 8.51979641904e+11 1.50349348607e+13 -35 0.7 6.0167184547e+11 1.0314374497e+13 -36 0.72 4.29087845387e+11 7.15146409276e+12 -37 0.74 3.08855637556e+11 5.00846980094e+12 -38 0.76 2.24270970425e+11 3.54112058818e+12 -39 0.78 1.64210505205e+11 2.52631546702e+12 -40 0.8 1.2118708117e+11 1.81780621971e+12 -41 0.82 90109367359.1 1.31867367068e+12 -42 0.84 67481501334.4 9.64021449503e+11 -43 0.86 50880896383.4 7.09965997788e+11 -44 0.88 38613938681.2 5.26553710913e+11 -45 0.9 29486692086.8 3.93155896009e+11 -46 0.92 22650731882.4 2.95444330322e+11 -47 0.94 17498544395.3 2.23385674464e+11 -48 0.96 13591937526.4 1.69899220331e+11 -49 0.98 10612635712.6 1.29950642555e+11 -50 1.0 8327912706.34 99934953582.6 -51 1.02 6566502316.69 77252969474.2 -52 1.04 5201589672.36 60018343356.8 -53 1.06 4138717434.11 46853405843.3 -54 1.08 3307128665.58 36745874940.0 -55 1.1 2653529579.27 28947596241.1 -56 1.12 2137567708.15 22902511945.9 -57 1.14 1728534024.3 18195095739.0 -58 1.16 1402943799.0 14513212422.1 -59 1.18 1142752163.37 11621209113.9 -60 1.2 934030766.093 9340308300.6 -61 1.22 765981286.774 7534242773.65 -62 1.24 630196371.787 6098675145.29 -63 1.26 520103253.414 4953364870.6 -64 1.28 430542934.103 4036340534.04 -65 1.3 357450462.101 3299543229.91 -66 1.32 297610947.802 2705554551.18 -67 1.34 248472587.186 2225128105.44 -68 1.36 208002782.573 1835319108.76 -69 1.38 174576985.011 1518061159.35 -70 1.4 146892484.084 1259078837.33 -71 1.42 123901294.937 1047053582.16 -72 1.44 104757721.536 872981382.419 -73 1.46 88777241.639 729676313.267 -74 1.48 75404158.02 611385405.387 -75 1.5 64186061.7033 513488820.507 -76 1.52 54753607.1486 432265633.695 -77 1.54 46804443.7318 364710253.134 -78 1.56 40090410.0598 308388060.159 -79 1.58 34407297.9713 261321529.95 -80 1.6 29586646.6744 221900119.2 -81 1.62 25489145.661 188808745.634 -82 1.64 21999316.2868 160970856.824 -83 1.66 19021212.5921 137502982.517 -84 1.68 16474936.8715 117678352.86 -85 1.7 14293808.3245 100897694.735 -86 1.72 12422056.6082 86665727.6626 -87 1.74 10812938.3788 74572197.8496 -88 1.76 9427195.57103 64276535.39 -89 1.78 8231790.46096 55495411.7777 -90 1.8 7198865.45512 47992625.088 -91 1.82 6304885.77339 41570857.9644 -92 1.84 5529931.32911 36064946.1544 -93 1.86 4857110.59557 31336368.341 -94 1.88 4272074.43377 27268725.7382 -95 1.9 3762612.01167 23764025.6584 -96 1.92 3318314.28383 20739619.609 -97 1.94 2930293.18879 18125675.4316 -98 1.96 2590946.89128 15863086.114 -99 1.98 2293763.15199 13901736.4186 -100 2.0 2033154.33079 12199063.3122 -101 2.02 1804318.68586 10718858.1296 -102 2.04 1603123.57305 9430268.02169 -103 2.06 1426006.91783 8306962.01537 -104 2.08 1269893.96121 7326433.30293 -105 2.1 1132126.79514 6469414.48445 -106 2.12 1010404.62602 5719386.63441 -107 2.14 902733.052344 5062166.44376 -108 2.16 807380.928986 4485558.44681 -109 2.18 722843.627253 3979061.59742 -110 2.2 647811.695319 3533621.30686 -111 2.22 581144.085827 3141419.57242 -112 2.24 521845.251959 2795697.07302 -113 2.26 469045.525153 2490602.13576 -114 2.28 421984.280794 2221062.32522 -115 2.3 379995.475978 1982675.10836 -116 2.32 342495.208369 1771614.62868 -117 2.34 308970.999537 1584552.10475 -118 2.36 278972.551763 1418587.76828 -119 2.38 252103.765513 1271192.59046 -120 2.4 228015.837009 1140158.32224 -121 2.42 206401.282366 1023554.60663 -122 2.44 186988.75765 919692.114521 -123 2.46 169538.563484 827090.818108 -124 2.48 153838.739168 744452.651831 -125 2.5 139701.665073 670637.92543 -126 2.52 126961.103835 604644.949624 -127 2.54 115469.620781 545592.416037 -128 2.56 105096.332511 492704.141327 -129 2.58 95724.9397832 445295.843157 -130 2.6 87252.0069441 402763.664479 -131 2.62 79585.4554502 364574.203947 -132 2.64 72643.2434671 330255.845328 -133 2.66 66352.2073932 299391.208536 -134 2.68 60647.0444312 271610.570248 -135 2.7 55469.4181565 246586.123584 -136 2.72 50767.1714483 224026.964698 -137 2.74 46493.633237 203674.709811 -138 2.76 42607.0073083 185299.659567 -139 2.78 39069.8329526 168697.439095 -140 2.8 35848.5085794 153686.051901 -141 2.82 32912.8705664 140103.294183 -142 2.84 30235.8206098 127804.483324 -143 2.86 27792.9956998 116660.460548 -144 2.88 25562.4755962 106555.833042 -145 2.9 23524.5233195 97387.4254387 -146 2.92 21661.3547409 89062.9145204 -147 2.94 19956.9338374 81499.6244039 -148 2.96 18396.7906059 74623.4624292 -149 2.98 16967.8589974 68367.9785194 -150 3.0 15658.3325568 62673.5329856 -151 3.02 14457.5357325 57486.5596649 -152 3.04 13355.809067 52758.912937 -153 3.06 12344.4066925 48447.2886046 -154 3.08 11415.4047444 44512.7098736 -155 3.1 10561.6194689 40920.0707567 -156 3.12 9776.5339459 37637.7301715 -157 3.14 9054.23247117 34637.1508274 -158 3.16 8389.34175838 31892.5777179 -159 3.18 7776.97821258 29380.7516608 -160 3.2 7212.7006167 27080.6538766 -161 3.22 6692.4676457 24973.2780793 -162 3.24 6212.59969004 23041.4269669 -163 3.26 5769.74452856 21269.5303734 -164 3.28 5360.84644195 19643.4826615 -165 3.3 4983.1184041 18150.4972204 -166 3.32 4634.01702836 16778.97618 -167 3.34 4311.21998136 15518.393672 -168 3.36 4012.60560869 14359.191159 -169 3.38 3736.23454428 13292.6835236 -170 3.4 3480.33310029 12310.9747549 -171 3.42 3243.27825585 11406.8822043 -172 3.44 3023.58408279 10573.8684961 -173 3.46 2819.88946345 9805.98028003 -174 3.48 2630.94697101 9097.79310596 -175 3.5 2455.61279669 8444.36177626 -176 3.52 2292.83761972 7841.17560602 -177 3.54 2141.65832756 7284.11808108 -178 3.56 2001.19050257 6769.43046025 -179 3.58 1870.62160083 6293.67891689 -180 3.6 1749.20475558 5853.72485855 -181 3.62 1636.25314534 5446.69810179 -182 3.64 1531.13487237 5069.97261409 -183 3.66 1433.26830277 4721.1445646 -184 3.68 1342.11782445 4398.01245332 -185 3.7 1257.18998347 4098.55911171 -186 3.72 1178.02996319 3820.93539003 -187 3.74 1104.21837425 3563.44536511 -188 3.76 1035.36832639 3324.53291993 -189 3.78 971.122756088 3102.76956138 -190 3.8 911.151986554 2896.84335615 -191 3.82 855.151498616 2705.54887715 -192 3.84 802.83989347 2527.77806329 -193 3.86 753.957029799 2362.51190574 -194 3.88 708.262319576 2208.81288195 -195 3.9 665.533168297 2065.81806693 -196 3.92 625.563546756 1932.73285812 -197 3.94 588.162682667 1808.82525631 -198 3.96 553.153861545 1693.42065104 -199 3.98 520.373327227 1585.89706361 -200 4.0 489.669273313 1485.68080556 -201 4.02 460.900917596 1392.24251449 -202 4.04 433.937652306 1305.09353282 -203 4.06 408.6582636 1223.78259822 -204 4.08 384.950214367 1147.89281764 -205 4.1 362.708984933 1077.03889938 -206 4.12 341.837466738 1010.86461999 -207 4.14 322.245404503 949.040505266 -208 4.16 303.848882793 891.261706073 -209 4.18 286.569853265 837.246052066 -210 4.2 270.33569919 786.732267446 -211 4.22 255.078834164 739.47833469 -212 4.24 240.736332164 695.259993326 -213 4.26 227.249586386 653.869362042 -214 4.28 214.563994495 615.113673492 -215 4.3 202.628668126 578.814112106 -216 4.32 191.396164684 544.804746089 -217 4.34 180.822239621 512.931545605 -218 4.36 170.865617553 483.051479815 -219 4.38 161.487780703 455.031686127 -220 4.4 152.652773286 428.748705595 -221 4.42 144.327020575 404.087778912 -222 4.44 136.479161479 380.942197972 -223 4.46 129.07989358 359.212708377 -224 4.48 122.101829632 338.806958688 -225 4.5 115.519364658 319.638992577 -226 4.52 109.308552789 301.628780369 -227 4.54 103.446993117 284.701786758 -228 4.56 97.9137238447 268.788571763 -229 4.58 92.6891241175 253.824422244 -230 4.6 87.7548229339 239.749011508 -231 4.62 83.0936146036 226.506084761 -232 4.64 78.6893802546 214.043168343 -233 4.66 74.5270149351 202.31130085 -234 4.68 70.5923598871 191.264784422 -235 4.7 66.8721396072 180.860954593 -236 4.72 63.353903336 171.05996726 -237 4.74 60.0259706488 161.824601429 -238 4.76 56.8773808439 153.120076496 -239 4.78 53.8978458491 144.913882966 -240 4.8 51.0777063884 137.175625538 -241 4.82 48.4078911713 129.876877635 -242 4.84 45.8798788842 122.991046476 -243 4.86 43.485662782 116.493247913 -244 4.88 41.2177176913 110.360190267 -245 4.9 39.0689692529 104.570066494 -246 4.92 37.0327652428 99.1024540566 -247 4.94 35.102848823 93.9382219092 -248 4.96 33.2733335874 89.05944408 -249 4.98 31.5386802724 84.4493193479 -250 5.0 29.8936750183 80.0920965658 -251 5.02 28.3334090704 75.9730052143 -252 5.04 26.8532598202 72.0781907976 -253 5.06 25.4488730938 68.3946547294 -254 5.08 24.116146599 64.9101983786 -255 5.1 22.8512144543 61.6133709734 -256 5.12 21.650432722 58.4934210835 -257 5.14 20.5103658787 55.5402514226 -258 5.16 19.4277741591 52.7443767307 -259 5.18 18.3996017121 50.0968845179 -260 5.2 17.4229655155 47.5893984632 -261 5.22 16.4951449988 45.2140442802 -262 5.24 15.6135723236 42.9634178757 -263 5.26 14.775823281 40.8305556374 -264 5.28 13.979608762 38.808906703 -265 5.3 13.2227667648 36.8923070701 -266 5.32 12.5032549016 35.0749554196 -267 5.34 11.8191433738 33.3513905323 -268 5.36 11.1686083831 31.7164701895 -269 5.38 10.5499259512 30.1653514539 -270 5.4 9.96146612005 28.693472236 -271 5.42 9.40168750976 27.2965340593 -272 5.44 8.86913220892 25.9704859397 -273 5.46 8.36242097742 24.7115093061 -274 5.48 7.88024874079 23.5160038893 -275 5.5 7.4213803577 22.3805745153 -276 5.52 6.98464664308 21.3020187412 -277 5.54 6.56894063048 20.2773152771 -278 5.56 6.1732140587 19.3036131423 -279 5.58 5.79647406826 18.3782215059 -280 5.6 5.43778009463 17.4986001669 -281 5.62 5.09624094585 16.6623506308 -282 5.64 4.77101205293 15.867207745 -283 5.66 4.46129288233 15.1110318537 -284 5.68 4.16632450031 14.3918014404 -285 5.7 3.88538727999 13.7076062261 -286 5.72 3.61779874199 13.0566406912 -287 5.74 3.36291152072 12.4371979973 -288 5.76 3.12011144838 11.8476642796 -289 5.78 2.8888157497 11.2865132882 -290 5.8 2.66847134042 10.7523013555 -291 5.82 2.45855322349 10.2436626676 -292 5.84 2.25856297681 9.7593048226 -293 5.86 2.06802732724 9.2980046552 -294 5.88 1.88649680546 8.85860431242 -295 5.9 1.71354447704 8.44000756375 -296 5.92 1.548764745 8.04117633127 -297 5.94 1.39177221978 7.66112742597 -298 5.96 1.24220065245 7.29892947717 -299 5.98 1.09970192753 6.9537000433 -300 6.0 0.963945111861 6.62460289254 -301 6.02 0.83461555631 6.31084544295 -302 6.04 0.711414047074 6.01167635216 -303 6.06 0.594056003831 5.72638324756 -304 6.08 0.482270721937 5.45429058822 -305 6.1 0.375800656137 5.19475765055 -306 6.12 0.274400743381 4.94717663025 -307 6.14 0.177837762511 4.71097085338 -308 6.16 0.0858897286772 4.48559308998 -309 6.18 -0.00165467948361 4.27052396409 -310 6.2 -0.0849966617872 4.06527045435 -311 6.22 -0.164327809314 3.8693644797 -312 6.24 -0.239830589745 3.68236156522 -313 6.26 -0.311678806773 3.50383958321 -314 6.28 -0.380038035049 3.33339756513 -315 6.3 -0.445066032049 3.17065458013 -316 6.32 -0.506913128135 3.0152486763 -317 6.34 -0.56572259604 2.866835881 -318 6.36 -0.621631000928 2.72508925658 -319 6.38 -0.674768532081 2.58969800863 -320 6.4 -0.725259317268 2.46036664323 -321 6.42 -0.773221720709 2.33681417085 -322 6.44 -0.818768625574 2.21877335375 -323 6.46 -0.862007701832 2.10598999469 -324 6.48 -0.90304166028 1.99822226439 -325 6.5 -0.941968493479 1.8952400656 -326 6.52 -0.978881704324 1.79682443166 -327 6.54 -1.01387052292 1.70276695755 -328 6.56 -1.04702011237 1.61286926168 -329 6.58 -1.07841176412 1.52694247655 -330 6.6 -1.10812308336 1.44480676668 -331 6.62 -1.13622816508 1.36629087245 -332 6.64 -1.1627977612 1.29123167801 -333 6.66 -1.18789943936 1.21947380239 -334 6.68 -1.21159773365 1.15086921208 -335 6.7 -1.23395428792 1.08527685416 -336 6.72 -1.25502799183 1.02256230873 -337 6.74 -1.27487511024 0.962597459596 -338 6.76 -1.2935494061 0.90526018218 -339 6.78 -1.31110225728 0.850434047748 -340 6.8 -1.32758276773 0.798008043011 -341 6.82 -1.34303787302 0.747876304295 -342 6.84 -1.35751244086 0.699937865467 -343 6.86 -1.3710493666 0.654096418865 -344 6.88 -1.38368966412 0.610260088543 -345 6.9 -1.3954725523 0.568341215144 -346 6.92 -1.40643553728 0.528256151786 -347 6.94 -1.41661449078 0.489925070364 -348 6.96 -1.42604372459 0.453271777711 -349 6.98 -1.43475606153 0.418223541087 -350 7.0 -1.44278290299 0.384710922497 -351 7.02 -1.45015429321 0.352667621378 -352 7.04 -1.45689898057 0.322030325194 -353 7.06 -1.46304447588 0.292738567537 -354 7.08 -1.46861710792 0.264734593325 -355 7.1 -1.47364207647 0.237963230734 -356 7.12 -1.47814350264 0.2123717695 -357 7.14 -1.482144477 0.187909845266 -358 7.16 -1.48566710537 0.16452932965 -359 7.18 -1.48873255248 0.142184225751 -360 7.2 -1.49136108362 0.120830568787 -361 7.22 -1.49357210429 0.100426331626 -362 7.24 -1.49538419809 0.0809313349308 -363 7.26 -1.4968151628 0.0623071617066 -364 7.28 -1.49788204479 0.044517076001 -365 7.3 -1.49860117187 0.0275259455594 -366 7.32 -1.49898818464 0.0113001682279 -367 7.34 -1.49905806636 -0.00419239808778 -368 7.36 -1.4988251715 -0.0189825020854 -369 7.38 -1.49830325295 -0.0330995625254 -370 7.4 -1.49750548803 -0.0465717286462 -371 7.42 -1.49644450327 -0.0594259376903 -372 7.44 -1.49513239812 -0.0716879696855 -373 7.46 -1.49358076759 -0.0833824996199 -374 7.48 -1.4918007238 -0.0945331471409 -375 7.5 -1.48980291663 -0.105162523901 -376 7.52 -1.48759755345 -0.115292278666 -377 7.54 -1.48519441791 -0.124943140307 -378 7.56 -1.48260288794 -0.13413495876 -379 7.58 -1.47983195293 -0.142886744076 -380 7.6 -1.47689023018 -0.151216703644 -381 7.62 -1.47378598053 -0.159142277674 -382 7.64 -1.47052712344 -0.166680173038 -383 7.66 -1.46712125128 -0.173846395532 -384 7.68 -1.46357564306 -0.180656280652 -385 7.7 -1.45989727753 -0.187124522948 -386 7.72 -1.45609284575 -0.193265204023 -387 7.74 -1.45216876302 -0.199091819249 -388 7.76 -1.4481311804 -0.204617303261 -389 7.78 -1.44398599566 -0.20985405428 -390 7.8 -1.43973886378 -0.214813957332 -391 7.82 -1.43539520696 -0.21950840641 -392 7.84 -1.43096022428 -0.223948325627 -393 7.86 -1.42643890087 -0.228144189416 -394 7.88 -1.42183601669 -0.232106041819 -395 7.9 -1.41715615498 -0.235843514899 -396 7.92 -1.41240371029 -0.239365846333 -397 7.94 -1.40758289625 -0.242681896213 -398 7.96 -1.40269775292 -0.245800163096 -399 7.98 -1.39775215386 -0.248728799339 -400 8.0 -1.39274981294 -0.251475625745 -401 8.02 -1.38769429081 -0.254048145572 -402 8.04 -1.3825890011 -0.256453557906 -403 8.06 -1.37743721643 -0.258698770453 -404 8.08 -1.37224207403 -0.260790411767 -405 8.1 -1.3670065813 -0.262734842931 -406 8.12 -1.36173362096 -0.264538168734 -407 8.14 -1.35642595614 -0.26620624836 -408 8.16 -1.35108623513 -0.267744705599 -409 8.18 -1.34571699603 -0.269158938625 -410 8.2 -1.34032067115 -0.270454129338 -411 8.22 -1.33489959126 -0.271635252315 -412 8.24 -1.32945598963 -0.272707083354 -413 8.26 -1.32399200593 -0.273674207668 -414 8.28 -1.31850968998 -0.274541027712 -415 8.3 -1.3130110053 -0.275311770682 -416 8.32 -1.30749783257 -0.275990495686 -417 8.34 -1.30197197291 -0.276581100614 -418 8.36 -1.29643515102 -0.277087328708 -419 8.38 -1.29088901827 -0.277512774857 -420 8.4 -1.28533515553 -0.277860891625 -421 8.42 -1.279775076 -0.278134995017 -422 8.44 -1.27421022789 -0.278338270004 -423 8.46 -1.26864199697 -0.27847377582 -424 8.48 -1.26307170904 -0.278544451025 -425 8.5 -1.25750063229 -0.278553118366 -426 8.52 -1.25192997959 -0.278502489422 -427 8.54 -1.24636091063 -0.27839516907 -428 8.56 -1.24079453406 -0.278233659745 -429 8.58 -1.23523190945 -0.27802036554 -430 8.6 -1.22967404925 -0.277757596126 -431 8.62 -1.22412192063 -0.277447570509 -432 8.64 -1.21857644724 -0.277092420635 -433 8.66 -1.21303851096 -0.276694194842 -434 8.68 -1.20750895348 -0.276254861174 -435 8.7 -1.20198857794 -0.275776310556 -436 8.72 -1.19647815038 -0.275260359835 -437 8.74 -1.19097840123 -0.274708754702 -438 8.76 -1.18549002669 -0.274123172492 -439 8.78 -1.18001369009 -0.273505224869 -440 8.8 -1.17455002313 -0.272856460401 -441 8.82 -1.16909962718 -0.272178367032 -442 8.84 -1.16366307443 -0.271472374453 -443 8.86 -1.15824090903 -0.270739856375 -444 8.88 -1.1528336482 -0.269982132713 -445 8.9 -1.14744178329 -0.269200471678 -446 8.92 -1.14206578078 -0.26839609179 -447 8.94 -1.13670608326 -0.267570163805 -448 8.96 -1.13136311038 -0.266723812565 -449 8.98 -1.1260372597 -0.26585811878 -450 9.0 -1.12072890764 -0.264974120729 -451 9.02 -1.11543841024 -0.2640728159 -452 9.04 -1.11016610399 -0.263155162565 -453 9.06 -1.10491230659 -0.262222081284 -454 9.08 -1.09967731769 -0.261274456364 -455 9.1 -1.09446141962 -0.260313137244 -456 9.12 -1.08926487805 -0.259338939836 -457 9.14 -1.08408794265 -0.258352647809 -458 9.16 -1.07893084774 -0.257355013824 -459 9.18 -1.07379381288 -0.256346760718 -460 9.2 -1.06867704347 -0.255328582644 -461 9.22 -1.06358073129 -0.254301146164 -462 9.24 -1.05850505508 -0.253265091305 -463 9.26 -1.053450181 -0.252221032561 -464 9.28 -1.04841626319 -0.251169559871 -465 9.3 -1.04340344425 -0.25011123955 -466 9.32 -1.03841185563 -0.249046615186 -467 9.34 -1.03344161818 -0.2479762085 -468 9.36 -1.0284928425 -0.246900520178 -469 9.38 -1.02356562938 -0.245820030663 -470 9.4 -1.0186600702 -0.244735200927 -471 9.42 -1.01377624733 -0.243646473201 -472 9.44 -1.00891423443 -0.242554271687 -473 9.46 -1.0040740969 -0.241459003238 -474 9.48 -0.999255892143 -0.240361058009 -475 9.5 -0.994459669928 -0.239260810093 -476 9.52 -0.989685472697 -0.238158618121 -477 9.54 -0.984933335869 -0.237054825845 -478 9.56 -0.980203288132 -0.235949762702 -479 9.58 -0.975495351726 -0.234843744346 -480 9.6 -0.970809542708 -0.233737073173 -481 9.62 -0.966145871217 -0.232630038816 -482 9.64 -0.961504341725 -0.231522918625 -483 9.66 -0.956884953272 -0.230415978128 -484 9.68 -0.952287699705 -0.229309471477 -485 9.7 -0.947712569897 -0.228203641873 -486 9.72 -0.943159547963 -0.22709872198 -487 9.74 -0.938628613467 -0.225994934317 -488 9.76 -0.934119741622 -0.224892491642 -489 9.78 -0.929632903477 -0.223791597316 -490 9.8 -0.925168066109 -0.222692445658 -491 9.82 -0.920725192794 -0.221595222284 -492 9.84 -0.916304243179 -0.220500104432 -493 9.86 -0.91190517345 -0.219407261278 -494 9.88 -0.907527936486 -0.218316854241 -495 9.9 -0.903172482012 -0.217229037271 -496 9.92 -0.898838756748 -0.216143957132 -497 9.94 -0.894526704547 -0.215061753669 -498 9.96 -0.890236266534 -0.213982560076 -499 9.98 -0.885967381232 -0.212906503136 -500 10.0 -0.881719984692 -0.211833703472 -501 10.02 -0.877494010612 -0.210764275774 -502 10.04 -0.873289390453 -0.209698329022 -503 10.06 -0.869106053554 -0.208635966708 -504 10.08 -0.864943927233 -0.207577287034 -505 10.1 -0.860802936899 -0.206522383122 -506 10.12 -0.856683006147 -0.205471343199 -507 10.14 -0.852584056854 -0.204424250786 -508 10.16 -0.848506009271 -0.203381184875 -509 10.18 -0.844448782117 -0.202342220105 -510 10.2 -0.840412292656 -0.201307426921 -511 10.22 -0.836396456786 -0.20027687174 -512 10.24 -0.832401189115 -0.199250617102 -513 10.26 -0.828426403039 -0.19822872182 -514 10.28 -0.824472010811 -0.197211241119 -515 10.3 -0.820537923617 -0.196198226777 -516 10.32 -0.81662405164 -0.195189727259 -517 10.34 -0.812730304126 -0.19418578784 -518 10.36 -0.808856589444 -0.193186450732 -519 10.38 -0.805002815152 -0.1921917552 -520 10.4 -0.801168888049 -0.191201737679 -521 10.42 -0.797354714233 -0.190216431881 -522 10.44 -0.793560199154 -0.189235868906 -523 10.46 -0.789785247667 -0.188260077336 -524 10.48 -0.786029764076 -0.187289083343 -525 10.5 -0.782293652189 -0.186322910778 -526 10.52 -0.778576815358 -0.185361581264 -527 10.54 -0.774879156522 -0.184405114284 -528 10.56 -0.771200578253 -0.183453527268 -529 10.58 -0.767540982794 -0.182506835671 -530 10.6 -0.763900272099 -0.181565053055 -531 10.62 -0.760278347867 -0.180628191165 -532 10.64 -0.75667511158 -0.179696260001 -533 10.66 -0.753090464539 -0.17876926789 -534 10.68 -0.749524307893 -0.177847221551 -535 10.7 -0.745976542671 -0.176930126167 -536 10.72 -0.742447069815 -0.176017985441 -537 10.74 -0.738935790206 -0.175110801662 -538 10.76 -0.735442604695 -0.174208575761 -539 10.78 -0.731967414126 -0.173311307369 -540 10.8 -0.728510119361 -0.172418994873 -541 10.82 -0.72507062131 -0.171531635464 -542 10.84 -0.721648820948 -0.170649225192 -543 10.86 -0.718244619341 -0.169771759015 -544 10.88 -0.714857917667 -0.168899230842 -545 10.9 -0.711488617235 -0.168031633581 -546 10.92 -0.708136619505 -0.167168959186 -547 10.94 -0.704801826108 -0.166311198692 -548 10.96 -0.701484138863 -0.165458342262 -549 10.98 -0.698183459794 -0.164610379221 -550 11.0 -0.694899691148 -0.1637672981 -551 11.02 -0.691632735406 -0.162929086665 -552 11.04 -0.688382495303 -0.162095731957 -553 11.06 -0.68514887384 -0.161267220326 -554 11.08 -0.681931774298 -0.160443537459 -555 11.1 -0.678731100249 -0.159624668416 -556 11.12 -0.675546755573 -0.15881059766 -557 11.14 -0.672378644462 -0.15800130908 -558 11.16 -0.669226671439 -0.157196786028 -559 11.18 -0.666090741365 -0.156397011339 -560 11.2 -0.662970759447 -0.155601967361 -561 11.22 -0.659866631253 -0.154811635976 -562 11.24 -0.656778262715 -0.154025998629 -563 11.26 -0.653705560141 -0.153245036348 -564 11.28 -0.650648430223 -0.152468729768 -565 11.3 -0.647606780043 -0.15169705915 -566 11.32 -0.644580517084 -0.150930004405 -567 11.34 -0.641569549231 -0.150167545112 -568 11.36 -0.638573784781 -0.149409660536 -569 11.38 -0.635593132451 -0.148656329652 -570 11.4 -0.632627501379 -0.147907531156 -571 11.42 -0.629676801133 -0.147163243484 -572 11.44 -0.626740941713 -0.146423444834 -573 11.46 -0.62381983356 -0.145688113174 -574 11.48 -0.620913387554 -0.144957226261 -575 11.5 -0.618021515027 -0.144230761656 -576 11.52 -0.615144127757 -0.143508696739 -577 11.54 -0.612281137978 -0.14279100872 -578 11.56 -0.609432458382 -0.142077674653 -579 11.58 -0.606598002119 -0.141368671449 -580 11.6 -0.603777682806 -0.140663975889 -581 11.62 -0.600971414522 -0.139963564633 -582 11.64 -0.598179111815 -0.139267414235 -583 11.66 -0.595400689704 -0.138575501149 -584 11.68 -0.592636063678 -0.137887801745 -585 11.7 -0.589885149701 -0.137204292313 -586 11.72 -0.587147864211 -0.136524949077 -587 11.74 -0.584424124122 -0.135849748201 -588 11.76 -0.581713846826 -0.135178665802 -589 11.78 -0.579016950193 -0.134511677954 -590 11.8 -0.576333352571 -0.133848760697 -591 11.82 -0.573662972788 -0.133189890048 -592 11.84 -0.571005730151 -0.132535042004 -593 11.86 -0.56836154445 -0.131884192552 -594 11.88 -0.565730335952 -0.131237317677 -595 11.9 -0.563112025406 -0.130594393364 -596 11.92 -0.560506534041 -0.129955395608 -597 11.94 -0.557913783565 -0.129320300421 -598 11.96 -0.555333696166 -0.128689083832 -599 11.98 -0.552766194514 -0.1280617219 -600 12.0 -0.550211201752 -0.127438190715 -601 12.02 -0.547668641506 -0.126818466403 -602 12.04 -0.545138437876 -0.126202525133 -603 12.06 -0.542620515439 -0.125590343118 -604 12.08 -0.540114799247 -0.124981896625 -605 12.1 -0.537621214828 -0.124377161973 -606 12.12 -0.53513968818 -0.123776115544 -607 12.14 -0.532670145775 -0.123178733779 -608 12.16 -0.530212514555 -0.122584993188 -609 12.18 -0.52776672193 -0.121994870352 -610 12.2 -0.525332695778 -0.121408341923 -611 12.22 -0.522910364445 -0.120825384632 -612 12.24 -0.52049965674 -0.120245975289 -613 12.26 -0.518100501935 -0.119670090788 -614 12.28 -0.515712829763 -0.119097708107 -615 12.3 -0.513336570418 -0.118528804313 -616 12.32 -0.51097165455 -0.117963356563 -617 12.34 -0.508618013267 -0.11740134211 -618 12.36 -0.506275578128 -0.116842738298 -619 12.38 -0.503944281147 -0.116287522571 -620 12.4 -0.501624054788 -0.115735672472 -621 12.42 -0.49931483196 -0.115187165645 -622 12.44 -0.497016546022 -0.114641979838 -623 12.46 -0.494729130774 -0.114100092904 -624 12.48 -0.49245252046 -0.1135614828 -625 12.5 -0.490186649763 -0.113026127594 -626 12.52 -0.487931453803 -0.112494005462 -627 12.54 -0.485686868135 -0.11196509469 -628 12.56 -0.48345282875 -0.111439373678 -629 12.58 -0.481229272066 -0.110916820936 -630 12.6 -0.479016134933 -0.110397415091 -631 12.62 -0.476813354625 -0.109881134884 -632 12.64 -0.474620868841 -0.109367959171 -633 12.66 -0.472438615702 -0.108857866928 -634 12.68 -0.470266533747 -0.108350837244 -635 12.7 -0.468104561934 -0.107846849332 -636 12.72 -0.465952639633 -0.107345882519 -637 12.74 -0.463810706629 -0.106847916255 -638 12.76 -0.461678703116 -0.106352930108 -639 12.78 -0.459556569693 -0.105860903769 -640 12.8 -0.457444247367 -0.105371817049 -641 12.82 -0.455341677547 -0.10488564988 -642 12.84 -0.453248802042 -0.104402382317 -643 12.86 -0.451165563056 -0.103921994536 -644 12.88 -0.449091903193 -0.103444466836 -645 12.9 -0.447027765446 -0.102969779639 -646 12.92 -0.4449730932 -0.102497913489 -647 12.94 -0.442927830229 -0.102028849053 -648 12.96 -0.440891920688 -0.101562567122 -649 12.98 -0.438865309121 -0.101099048608 -650 13.0 -0.436847940448 -0.100638274548 -651 13.02 -0.434839759968 -0.100180226101 -652 13.04 -0.432840713358 -0.0997248845489 -653 13.06 -0.430850746664 -0.0992722312959 -654 13.08 -0.428869806307 -0.0988222478696 -655 13.1 -0.426897839073 -0.0983749159199 -656 13.12 -0.424934792115 -0.0979302172191 -657 13.14 -0.42298061295 -0.0974881336614 -658 13.16 -0.421035249454 -0.097048647263 -659 13.18 -0.419098649864 -0.0966117401617 -660 13.2 -0.417170762771 -0.0961773946166 -661 13.22 -0.41525153712 -0.0957455930079 -662 13.24 -0.413340922208 -0.0953163178365 -663 13.26 -0.411438867679 -0.0948895517235 -664 13.28 -0.409545323527 -0.0944652774101 -665 13.3 -0.407660240085 -0.0940434777572 -666 13.32 -0.405783568032 -0.0936241357448 -667 13.34 -0.403915258384 -0.0932072344716 -668 13.36 -0.402055262494 -0.0927927571548 -669 13.38 -0.400203532049 -0.0923806871294 -670 13.4 -0.39836001907 -0.091971007848 -671 13.42 -0.396524675907 -0.0915637028799 -672 13.44 -0.394697455235 -0.0911587559112 -673 13.46 -0.392878310058 -0.0907561507435 -674 13.48 -0.391067193701 -0.0903558712944 -675 13.5 -0.389264059808 -0.0899579015961 -676 13.52 -0.387468862344 -0.0895622257951 -677 13.54 -0.385681555589 -0.089168828152 -678 13.56 -0.383902094135 -0.0887776930406 -679 13.58 -0.382130432887 -0.0883888049474 -680 13.6 -0.380366527059 -0.088002148471 -681 13.62 -0.378610332173 -0.0876177083216 -682 13.64 -0.376861804052 -0.0872354693205 -683 13.66 -0.375120898826 -0.0868554163993 -684 13.68 -0.373387572922 -0.0864775345994 -685 13.7 -0.371661783067 -0.0861018090713 -686 13.72 -0.369943486282 -0.0857282250742 -687 13.74 -0.368232639885 -0.0853567679751 -688 13.76 -0.366529201481 -0.0849874232486 -689 13.78 -0.364833128968 -0.0846201764757 -690 13.8 -0.363144380531 -0.0842550133436 -691 13.82 -0.361462914638 -0.083891919645 -692 13.84 -0.359788690043 -0.0835308812773 -693 13.86 -0.358121665778 -0.0831718842421 -694 13.88 -0.356461801157 -0.0828149146446 -695 13.9 -0.354809055768 -0.0824599586927 -696 13.92 -0.353163389476 -0.0821070026966 -697 13.94 -0.351524762418 -0.0817560330682 -698 13.96 -0.349893135001 -0.0814070363201 -699 13.98 -0.348268467902 -0.0810599990654 -700 14.0 -0.346650722064 -0.0807149080166 -701 14.02 -0.345039858694 -0.0803717499853 -702 14.04 -0.343435839265 -0.0800305118814 -703 14.06 -0.341838625506 -0.0796911807123 -704 14.08 -0.340248179409 -0.0793537435825 -705 14.1 -0.338664463221 -0.079018187693 -706 14.12 -0.337087439445 -0.0786845003402 -707 14.14 -0.335517070835 -0.0783526689157 -708 14.16 -0.333953320399 -0.0780226809053 -709 14.18 -0.332396151392 -0.0776945238888 -710 14.2 -0.330845527319 -0.0773681855387 -711 14.22 -0.329301411928 -0.0770436536203 -712 14.24 -0.327763769212 -0.0767209159903 -713 14.26 -0.326232563407 -0.0763999605967 -714 14.28 -0.324707758986 -0.076080775478 -715 14.3 -0.323189320665 -0.0757633487623 -716 14.32 -0.321677213392 -0.075447668667 -717 14.34 -0.320171402352 -0.0751337234981 -718 14.36 -0.318671852963 -0.0748215016493 -719 14.38 -0.317178530874 -0.0745109916017 -720 14.4 -0.315691401963 -0.0742021819228 -721 14.42 -0.314210432337 -0.0738950612663 -722 14.44 -0.312735588328 -0.073589618371 -723 14.46 -0.311266836492 -0.0732858420606 -724 14.48 -0.309804143609 -0.0729837212427 -725 14.5 -0.308347476679 -0.0726832449085 -726 14.52 -0.306896802922 -0.0723844021319 -727 14.54 -0.305452089775 -0.072087182069 -728 14.56 -0.304013304893 -0.0717915739575 -729 14.58 -0.302580416142 -0.0714975671162 -730 14.6 -0.301153391604 -0.071205150944 -731 14.62 -0.29973219957 -0.0709143149198 -732 14.64 -0.298316808542 -0.0706250486013 -733 14.66 -0.29690718723 -0.0703373416252 -734 14.68 -0.29550330455 -0.0700511837056 -735 14.7 -0.294105129623 -0.0697665646344 -736 14.72 -0.292712631773 -0.06948347428 -737 14.74 -0.291325780527 -0.069201902587 -738 14.76 -0.289944545612 -0.0689218395755 -739 14.78 -0.288568896953 -0.0686432753407 -740 14.8 -0.287198804672 -0.068366200052 -741 14.82 -0.285834239089 -0.0680906039529 -742 14.84 -0.284475170717 -0.0678164773599 -743 14.86 -0.283121570262 -0.0675438106623 -744 14.88 -0.281773408622 -0.0672725943215 -745 14.9 -0.280430656883 -0.0670028188703 -746 14.92 -0.279093286324 -0.0667344749127 -747 14.94 -0.277761268406 -0.066467553123 -748 14.96 -0.276434574779 -0.0662020442454 -749 14.98 -0.275113177278 -0.0659379390934 -750 15.0 -0.273797047918 -0.0656752285492 -751 15.02 -0.272486158899 -0.0654139035635 -752 15.04 -0.271180482599 -0.0651539551544 -753 15.06 -0.269879991575 -0.0648953744073 -754 15.08 -0.268584658563 -0.0646381524742 -755 15.1 -0.267294456476 -0.0643822805732 -756 15.12 -0.266009358398 -0.064127749988 -757 15.14 -0.264729337592 -0.0638745520673 -758 15.16 -0.263454367489 -0.0636226782243 -759 15.18 -0.262184421693 -0.0633721199364 -760 15.2 -0.260919473977 -0.0631228687444 -761 15.22 -0.259659498285 -0.062874916252 -762 15.24 -0.258404468725 -0.0626282541256 -763 15.26 -0.257154359572 -0.0623828740934 -764 15.28 -0.255909145268 -0.0621387679452 -765 15.3 -0.254668800416 -0.061895927532 -766 15.32 -0.253433299783 -0.061654344765 -767 15.34 -0.252202618295 -0.0614140116156 -768 15.36 -0.250976731041 -0.0611749201148 -769 15.38 -0.249755613266 -0.0609370623526 -770 15.4 -0.248539240374 -0.0607004304776 -771 15.42 -0.247327587926 -0.0604650166966 -772 15.44 -0.246120631637 -0.0602308132741 -773 15.46 -0.244918347377 -0.0599978125317 -774 15.48 -0.243720711169 -0.0597660068478 -775 15.5 -0.242527699187 -0.0595353886571 -776 15.52 -0.241339287756 -0.05930595045 -777 15.54 -0.240155453352 -0.0590776847726 -778 15.56 -0.238976172597 -0.0588505842256 -779 15.58 -0.237801422264 -0.0586246414643 -780 15.6 -0.236631179269 -0.0583998491983 -781 15.62 -0.235465420674 -0.0581762001905 -782 15.64 -0.234304123687 -0.057953687257 -783 15.66 -0.233147265658 -0.057732303267 -784 15.68 -0.231994824078 -0.0575120411416 -785 15.7 -0.23084677658 -0.0572928938542 -786 15.72 -0.229703100938 -0.0570748544293 -787 15.74 -0.228563775063 -0.0568579159429 -788 15.76 -0.227428777006 -0.0566420715213 -789 15.78 -0.226298084954 -0.0564273143414 -790 15.8 -0.22517167723 -0.0562136376296 -791 15.82 -0.224049532291 -0.0560010346619 -792 15.84 -0.222931628729 -0.0557894987635 -793 15.86 -0.22181794527 -0.0555790233081 -794 15.88 -0.220708460771 -0.0553696017175 -795 15.9 -0.21960315422 -0.0551612274618 -796 15.92 -0.218502004734 -0.0549538940582 -797 15.94 -0.217404991561 -0.0547475950712 -798 15.96 -0.216312094077 -0.0545423241119 -799 15.98 -0.215223291785 -0.0543380748379 -800 16.0 -0.214138564315 -0.0541348409526 -801 16.02 -0.21305789142 -0.0539326162051 -802 16.04 -0.21198125298 -0.0537313943897 -803 16.06 -0.210908628999 -0.0535311693457 -804 16.08 -0.209839999602 -0.0533319349567 -805 16.1 -0.208775345037 -0.0531336851505 -806 16.12 -0.207714645672 -0.0529364138987 -807 16.14 -0.206657881997 -0.0527401152166 -808 16.16 -0.205605034619 -0.0525447831621 -809 16.18 -0.204556084266 -0.0523504118362 -810 16.2 -0.20351101178 -0.0521569953823 -811 16.22 -0.202469798123 -0.0519645279856 -812 16.24 -0.201432424372 -0.0517730038733 -813 16.26 -0.200398871718 -0.0515824173138 -814 16.28 -0.199369121467 -0.0513927626166 -815 16.3 -0.198343155039 -0.051204034132 -816 16.32 -0.197320953965 -0.0510162262506 -817 16.34 -0.196302499889 -0.050829333403 -818 16.36 -0.195287774565 -0.0506433500599 -819 16.38 -0.194276759859 -0.0504582707309 -820 16.4 -0.193269437746 -0.0502740899651 -821 16.42 -0.192265790306 -0.0500908023503 -822 16.44 -0.191265799733 -0.0499084025129 -823 16.46 -0.190269448323 -0.0497268851171 -824 16.48 -0.189276718481 -0.0495462448654 -825 16.5 -0.188287592716 -0.0493664764977 -826 16.52 -0.187302053643 -0.0491875747911 -827 16.54 -0.186320083981 -0.0490095345599 -828 16.56 -0.185341666552 -0.0488323506547 -829 16.58 -0.18436678428 -0.0486560179629 -830 16.6 -0.183395420192 -0.0484805314077 -831 16.62 -0.182427557417 -0.0483058859483 -832 16.64 -0.181463179181 -0.0481320765793 -833 16.66 -0.180502268813 -0.0479590983305 -834 16.68 -0.179544809739 -0.0477869462668 -835 16.7 -0.178590785487 -0.0476156154877 -836 16.72 -0.177640179677 -0.0474451011271 -837 16.74 -0.176692976031 -0.0472753983531 -838 16.76 -0.175749158364 -0.0471065023674 -839 16.78 -0.174808710589 -0.0469384084057 -840 16.8 -0.173871616713 -0.0467711117367 -841 16.82 -0.172937860836 -0.0466046076623 -842 16.84 -0.172007427154 -0.0464388915171 -843 16.86 -0.171080299953 -0.0462739586683 -844 16.88 -0.170156463616 -0.0461098045155 -845 16.9 -0.169235902612 -0.04594642449 -846 16.92 -0.168318601505 -0.0457838140552 -847 16.94 -0.167404544949 -0.0456219687059 -848 16.96 -0.166493717686 -0.0454608839681 -849 16.98 -0.165586104549 -0.0453005553988 -850 17.0 -0.164681690459 -0.045140978586 -851 17.02 -0.163780460423 -0.044982149148 -852 17.04 -0.162882399539 -0.0448240627335 -853 17.06 -0.161987492989 -0.0446667150213 -854 17.08 -0.161095726042 -0.0445101017198 -855 17.1 -0.160207084053 -0.0443542185673 -856 17.12 -0.15932155246 -0.0441990613312 -857 17.14 -0.158439116788 -0.0440446258081 -858 17.16 -0.157559762644 -0.0438909078236 -859 17.18 -0.156683475719 -0.0437379032318 -860 17.2 -0.155810241787 -0.0435856079154 -861 17.22 -0.154940046702 -0.0434340177851 -862 17.24 -0.154072876401 -0.0432831287799 -863 17.26 -0.153208716903 -0.0431329368663 -864 17.28 -0.152347554306 -0.0429834380385 -865 17.3 -0.151489374787 -0.0428346283181 -866 17.32 -0.150634164605 -0.0426865037537 -867 17.34 -0.149781910096 -0.0425390604208 -868 17.36 -0.148932597673 -0.0423922944219 -869 17.38 -0.148086213829 -0.0422462018856 -870 17.4 -0.147242745133 -0.0421007789672 -871 17.42 -0.146402178232 -0.0419560218477 -872 17.44 -0.145564499846 -0.0418119267343 -873 17.46 -0.144729696774 -0.0416684898597 -874 17.48 -0.143897755889 -0.0415257074823 -875 17.5 -0.143068664136 -0.0413835758856 -876 17.52 -0.142242408539 -0.0412420913782 -877 17.54 -0.141418976192 -0.0411012502937 -878 17.56 -0.140598354262 -0.0409610489904 -879 17.58 -0.139780529991 -0.0408214838511 -880 17.6 -0.138965490691 -0.040682551283 -881 17.62 -0.138153223746 -0.0405442477172 -882 17.64 -0.137343716613 -0.0404065696091 -883 17.66 -0.136536956816 -0.0402695134376 -884 17.68 -0.135732931952 -0.0401330757054 -885 17.7 -0.134931629688 -0.0399972529384 -886 17.72 -0.134133037758 -0.0398620416858 -887 17.74 -0.133337143966 -0.0397274385201 -888 17.76 -0.132543936186 -0.0395934400363 -889 17.78 -0.131753402356 -0.0394600428522 -890 17.8 -0.130965530486 -0.0393272436083 -891 17.82 -0.130180308648 -0.0391950389674 -892 17.84 -0.129397724985 -0.0390634256142 -893 17.86 -0.128617767704 -0.0389324002559 -894 17.88 -0.127840425077 -0.0388019596211 -895 17.9 -0.127065685442 -0.0386721004602 -896 17.92 -0.126293537203 -0.0385428195454 -897 17.94 -0.125523968827 -0.0384141136698 -898 17.96 -0.124756968844 -0.038285979648 -899 17.98 -0.12399252585 -0.0381584143155 -900 18.0 -0.123230628501 -0.0380314145287 -901 18.02 -0.122471265519 -0.0379049771648 -902 18.04 -0.121714425686 -0.0377790991214 -903 18.06 -0.120960097846 -0.0376537773164 -904 18.08 -0.120208270905 -0.0375290086883 -905 18.1 -0.119458933831 -0.0374047901954 -906 18.12 -0.11871207565 -0.0372811188161 -907 18.14 -0.117967685451 -0.0371579915483 -908 18.16 -0.117225752381 -0.0370354054099 -909 18.18 -0.116486265647 -0.0369133574381 -910 18.2 -0.115749214515 -0.0367918446895 -911 18.22 -0.11501458831 -0.0366708642398 -912 18.24 -0.114282376416 -0.0365504131839 -913 18.26 -0.113552568273 -0.0364304886354 -914 18.28 -0.11282515338 -0.0363110877269 -915 18.3 -0.112100121292 -0.0361922076096 -916 18.32 -0.111377461622 -0.0360738454529 -917 18.34 -0.110657164039 -0.0359559984449 -918 18.36 -0.109939218269 -0.0358386637917 -919 18.38 -0.109223614091 -0.0357218387177 -920 18.4 -0.108510341341 -0.0356055204649 -921 18.42 -0.107799389911 -0.0354897062933 -922 18.44 -0.107090749747 -0.0353743934808 -923 18.46 -0.106384410848 -0.0352595793223 -924 18.48 -0.105680363268 -0.0351452611307 -925 18.5 -0.104978597114 -0.0350314362357 -926 18.52 -0.104279102547 -0.0349181019845 -927 18.54 -0.103581869781 -0.0348052557411 -928 18.56 -0.102886889082 -0.0346928948865 -929 18.58 -0.102194150767 -0.0345810168186 -930 18.6 -0.101503645208 -0.0344696189517 -931 18.62 -0.100815362825 -0.0343586987167 -932 18.64 -0.100129294092 -0.0342482535611 -933 18.66 -0.0994454295322 -0.0341382809484 -934 18.68 -0.0987637597204 -0.0340287783585 -935 18.7 -0.0980842752811 -0.0339197432873 -936 18.72 -0.0974069668887 -0.0338111732465 -937 18.74 -0.0967318252675 -0.0337030657637 -938 18.76 -0.0960588411908 -0.0335954183822 -939 18.78 -0.0953880054812 -0.0334882286609 -940 18.8 -0.0947193090095 -0.0333814941741 -941 18.82 -0.0940527426954 -0.0332752125115 -942 18.84 -0.0933882975062 -0.0331693812782 -943 18.86 -0.0927259644573 -0.033063998094 -944 18.88 -0.0920657346112 -0.0329590605941 -945 18.9 -0.0914075990779 -0.0328545664286 -946 18.92 -0.0907515490141 -0.0327505132621 -947 18.94 -0.0900975756229 -0.0326468987742 -948 18.96 -0.089445670154 -0.032543720659 -949 18.98 -0.0887958239027 -0.0324409766249 -950 19.0 -0.0881480282103 -0.032338664395 -951 19.02 -0.0875022744633 -0.0322367817064 -952 19.04 -0.0868585540934 -0.0321353263106 -953 19.06 -0.0862168585771 -0.0320342959728 -954 19.08 -0.0855771794356 -0.0319336884725 -955 19.1 -0.084939508234 -0.0318335016031 -956 19.12 -0.0843038365819 -0.0317337331714 -957 19.14 -0.0836701561321 -0.0316343809981 -958 19.16 -0.0830384585813 -0.0315354429176 -959 19.18 -0.0824087356692 -0.0314369167774 -960 19.2 -0.0817809791782 -0.0313388004388 -961 19.22 -0.0811551809338 -0.031241091776 -962 19.24 -0.0805313328034 -0.0311437886765 -963 19.26 -0.079909426697 -0.031046889041 -964 19.28 -0.079289454566 -0.030950390783 -965 19.3 -0.0786714084036 -0.0308542918291 -966 19.32 -0.0780552802445 -0.0307585901186 -967 19.34 -0.0774410621642 -0.0306632836034 -968 19.36 -0.0768287462793 -0.0305683702482 -969 19.38 -0.0762183247467 -0.0304738480301 -970 19.4 -0.0756097897639 -0.0303797149388 -971 19.42 -0.0750031335683 -0.0302859689762 -972 19.44 -0.0743983484373 -0.0301926081566 -973 19.46 -0.0737954266876 -0.0300996305063 -974 19.48 -0.0731943606756 -0.0300070340638 -975 19.5 -0.0725951427967 -0.0299148168796 -976 19.52 -0.071997765485 -0.0298229770161 -977 19.54 -0.0714022212134 -0.0297315125477 -978 19.56 -0.0708085024932 -0.0296404215602 -979 19.58 -0.0702166018738 -0.0295497021514 -980 19.6 -0.0696265119425 -0.0294593524306 -981 19.62 -0.0690382253245 -0.0293693705184 -982 19.64 -0.0684517346822 -0.0292797545471 -983 19.66 -0.0678670327154 -0.0291905026603 -984 19.68 -0.0672841121609 -0.0291016130126 -985 19.7 -0.0667029657922 -0.0290130837702 -986 19.72 -0.0661235864195 -0.02892491311 -987 19.74 -0.0655459668893 -0.0288370992202 -988 19.76 -0.0649701000843 -0.0287496402998 -989 19.78 -0.0643959789228 -0.0286625345588 -990 19.8 -0.0638235963592 -0.028575780218 -991 19.82 -0.0632529453832 -0.0284893755087 -992 19.84 -0.0626840190197 -0.0284033186731 -993 19.86 -0.0621168103288 -0.0283176079638 -994 19.88 -0.0615513124053 -0.0282322416441 -995 19.9 -0.0609875183786 -0.0281472179874 -996 19.92 -0.0604254214128 -0.0280625352778 -997 19.94 -0.0598650147059 -0.0279781918096 -998 19.96 -0.0593062914901 -0.027894185887 -999 19.98 -0.0587492450313 -0.0278105158248 -1000 20.0 -0.0581938686292 -0.0277271799475 -1001 20.02 -0.0576401556166 -0.0276441765898 -1002 20.04 -0.0570880993599 -0.0275615040963 -1003 20.06 -0.056537693258 -0.0274791608214 -1004 20.08 -0.0559889307431 -0.0273971451294 -1005 20.1 -0.0554418052798 -0.0273154553941 -1006 20.12 -0.0548963103651 -0.0272340899992 -1007 20.14 -0.0543524395283 -0.0271530473379 -1008 20.16 -0.0538101863307 -0.027072325813 -1009 20.18 -0.0532695443654 -0.0269919238365 -1010 20.2 -0.0527305072574 -0.0269118398301 -1011 20.22 -0.0521930686629 -0.0268320722247 -1012 20.24 -0.0516572222695 -0.0267526194605 -1013 20.26 -0.0511229617959 -0.0266734799867 -1014 20.28 -0.0505902809917 -0.0265946522621 -1015 20.3 -0.0500591736373 -0.026516134754 -1016 20.32 -0.0495296335436 -0.0264379259393 -1017 20.34 -0.0490016545518 -0.0263600243033 -1018 20.36 -0.0484752305336 -0.0262824283405 -1019 20.38 -0.0479503553904 -0.0262051365543 -1020 20.4 -0.0474270230535 -0.0261281474567 -1021 20.42 -0.0469052274841 -0.0260514595684 -1022 20.44 -0.0463849626725 -0.0259750714189 -1023 20.46 -0.0458662226388 -0.0258989815462 -1024 20.48 -0.0453490014319 -0.0258231884968 -1025 20.5 -0.0448332931297 -0.0257476908257 -1026 20.52 -0.0443190918392 -0.0256724870964 -1027 20.54 -0.0438063916958 -0.0255975758806 -1028 20.56 -0.0432951868634 -0.0255229557586 -1029 20.58 -0.0427854715342 -0.0254486253186 -1030 20.6 -0.0422772399288 -0.0253745831572 -1031 20.62 -0.0417704862954 -0.0253008278792 -1032 20.64 -0.0412652049103 -0.0252273580972 -1033 20.66 -0.0407613900774 -0.0251541724321 -1034 20.68 -0.040259036128 -0.0250812695126 -1035 20.7 -0.039758137421 -0.0250086479756 -1036 20.72 -0.0392586883422 -0.0249363064654 -1037 20.74 -0.0387606833045 -0.0248642436347 -1038 20.76 -0.0382641167479 -0.0247924581434 -1039 20.78 -0.0377689831387 -0.0247209486595 -1040 20.8 -0.0372752769703 -0.0246497138585 -1041 20.82 -0.036782992762 -0.0245787524235 -1042 20.84 -0.0362921250596 -0.0245080630453 -1043 20.86 -0.0358026684351 -0.0244376444219 -1044 20.88 -0.0353146174863 -0.0243674952592 -1045 20.9 -0.0348279668369 -0.0242976142701 -1046 20.92 -0.0343427111362 -0.0242280001751 -1047 20.94 -0.0338588450591 -0.0241586517019 -1048 20.96 -0.0333763633058 -0.0240895675856 -1049 20.98 -0.0328952606017 -0.0240207465683 -1050 21.0 -0.0324155316974 -0.0239521873994 -1051 21.02 -0.0319371713684 -0.0238838888354 -1052 21.04 -0.0314601744149 -0.0238158496399 -1053 21.06 -0.0309845356618 -0.0237480685835 -1054 21.08 -0.0305102499587 -0.0236805444437 -1055 21.1 -0.0300373121794 -0.0236132760051 -1056 21.12 -0.0295657172219 -0.023546262059 -1057 21.14 -0.0290954600085 -0.0234795014037 -1058 21.16 -0.0286265354851 -0.0234129928442 -1059 21.18 -0.028158938622 -0.0233467351922 -1060 21.2 -0.0276926644126 -0.0232807272662 -1061 21.22 -0.0272277078743 -0.0232149678915 -1062 21.24 -0.0267640640477 -0.0231494558997 -1063 21.26 -0.0263017279969 -0.0230841901292 -1064 21.28 -0.0258406948088 -0.0230191694249 -1065 21.3 -0.0253809595937 -0.0229543926381 -1066 21.32 -0.0249225174848 -0.0228898586266 -1067 21.34 -0.0244653636377 -0.0228255662547 -1068 21.36 -0.0240094932312 -0.0227615143929 -1069 21.38 -0.0235549014661 -0.0226977019182 -1070 21.4 -0.023101583566 -0.0226341277136 -1071 21.42 -0.0226495347765 -0.0225707906687 -1072 21.44 -0.0221987503655 -0.0225076896791 -1073 21.46 -0.021749225623 -0.0224448236465 -1074 21.48 -0.0213009558606 -0.0223821914788 -1075 21.5 -0.020853936412 -0.02231979209 -1076 21.52 -0.0204081626323 -0.0222576244002 -1077 21.54 -0.0199636298985 -0.0221956873354 -1078 21.56 -0.0195203336085 -0.0221339798275 -1079 21.58 -0.0190782691821 -0.0220725008144 -1080 21.6 -0.0186374320597 -0.02201124924 -1081 21.62 -0.0181978177032 -0.0219502240539 -1082 21.64 -0.0177594215953 -0.0218894242115 -1083 21.66 -0.0173222392394 -0.0218288486741 -1084 21.68 -0.0168862661598 -0.0217684964086 -1085 21.7 -0.0164514979014 -0.0217083663878 -1086 21.72 -0.0160179300295 -0.0216484575898 -1087 21.74 -0.0155855581298 -0.0215887689986 -1088 21.76 -0.0151543778082 -0.0215292996039 -1089 21.78 -0.014724384691 -0.0214700484006 -1090 21.8 -0.0142955744243 -0.0214110143895 -1091 21.82 -0.0138679426741 -0.0213521965765 -1092 21.84 -0.0134414851265 -0.0212935939733 -1093 21.86 -0.013016197487 -0.0212352055967 -1094 21.88 -0.0125920754809 -0.0211770304692 -1095 21.9 -0.012169114853 -0.0211190676184 -1096 21.92 -0.0117473113675 -0.0210613160772 -1097 21.94 -0.0113266608076 -0.021003774884 -1098 21.96 -0.0109071589762 -0.0209464430823 -1099 21.98 -0.0104888016947 -0.0208893197208 -1100 22.0 -0.010071584804 -0.0208324038534 -1101 22.02 -0.00965550416359 -0.0207756945391 -1102 22.04 -0.0092405556517 -0.020719190842 -1103 22.06 -0.00882673516534 -0.0206628918315 -1104 22.08 -0.00841403862003 -0.0206067965819 -1105 22.1 -0.0080024619498 -0.0205509041723 -1106 22.12 -0.00759200110698 -0.0204952136871 -1107 22.14 -0.00718265206222 -0.0204397242155 -1108 22.16 -0.00677441080431 -0.0203844348517 -1109 22.18 -0.00636727334011 -0.0203293446947 -1110 22.2 -0.00596123569445 -0.0202744528484 -1111 22.22 -0.00555629391005 -0.0202197584216 -1112 22.24 -0.00515244404737 -0.0201652605278 -1113 22.26 -0.00474968218459 -0.0201109582853 -1114 22.28 -0.00434800441746 -0.0200568508172 -1115 22.3 -0.00394740685922 -0.0200029372512 -1116 22.32 -0.00354788564052 -0.0199492167196 -1117 22.34 -0.0031494369093 -0.0198956883597 -1118 22.36 -0.00275205683071 -0.0198423513132 -1119 22.38 -0.00235574158704 -0.0197892047262 -1120 22.4 -0.00196048737759 -0.0197362477497 -1121 22.42 -0.00156629041861 -0.0196834795391 -1122 22.44 -0.00117314694319 -0.0196308992543 -1123 22.46 -0.000781053201174 -0.0195785060596 -1124 22.48 -0.000390005459079 -0.019526299124 -1125 22.5 0.0 -0.0194742776206 -1126 22.52 0.0 0.0 -1127 22.54 0.0 0.0 -1128 22.56 0.0 0.0 -1129 22.58 0.0 0.0 -1130 22.6 0.0 0.0 diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh deleted file mode 100755 index 2fe282995a..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh +++ /dev/null @@ -1,33 +0,0 @@ -# Here we generate the starting coordinates of the simulation -# using PACKMOL. - - - -# You must run each packmol commend one after the other. -# NOTE: If PACKMOL gets stuck in an endless loop, then edit the corresponding -# "inp" file. This should not happen. You can also usually interrupt -# packmol after 30 minutes, and the solution at that point (an .xyz file) -# should be good enough for use. -packmol < step1_proteins.inp # This step determines the protein's location - # It takes ~20 minutes (on an intel i7) -packmol < step2_innerlayer.inp # this step builds the inner monolayer - # It takes ~90 minutes -packmol < step3_outerlayer.inp # this step builds the outer monolayer - # It takes ~4 hours - - -# NOTE: PLEASE USE "packmol", NOT "ppackmol". ("ppackmol" is the -# parallel-version of packmol using OpemMP. This example has NOT been -# tested with "ppackmol". Our impression was that the "ppackmol" -# version is more likely to get stuck in an infinite loop. -Andrew 2015-8) - - -# Step3 creates a file named "step3_outerlayer.xyz" containing the coordinates -# in all the atoms of all the molecules. Later we will run moltemplate.sh -# using the "-xyz ../system.xyz" command line argument. That will instruct -# moltemplate to look for a file named "system.xyz" in the parent directory. -# So I rename the "step3_outerlayer.xyz" file to "system.xyz", and move it -# to this directory so that later moltemplate.sh can find it. - -mv -f step3_outerlayer.xyz ../system.xyz - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step1_proteins.inp b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step1_proteins.inp deleted file mode 100644 index abb48db7d6..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step1_proteins.inp +++ /dev/null @@ -1,49 +0,0 @@ -# Step 1: Create a sphere of proteins lying -# (In step 2 we will pack lipids around these proteins -# -# ----- Run using: ----- -# packmol < step1_proteins.inp -# (This takes about 30 minutes on an Intel i7 processor) - - -# ----- Settings: ----- - -# All the atoms from diferent proteins will be at least 50.0 Angstrons apart. -tolerance 50.0 -# (Setting "discale" to 2.0 increases the typical separation -# distance to approximately 2.0*50.0 = 100.0 Angstroms.) -discale 2.0 -# The other parameters below are optional: -nloop 10000 -maxit 20 -seed 12345 -sidemax 3000.0 -# What fraction of the molecules are moved during "large moves"? (default 0.05) -movefrac 0.05 - - -# The output file name - -output step1_proteins.xyz - - -# File types are in xyz format - -filetype xyz - - - -# First, specify the protein inclusions -# We will pack the lipids around these later - -structure protein.xyz - number 120 - atoms 68 69 70 - inside sphere 0. 0. 0. 273.75 - end atoms - atoms 65 66 67 71 72 73 - outside sphere 0. 0. 0. 325.0 - end atoms -end structure - - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step2_innerlayer.inp b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step2_innerlayer.inp deleted file mode 100644 index 9f61960f2e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step2_innerlayer.inp +++ /dev/null @@ -1,70 +0,0 @@ -# NOTE: YOU MUST COMPLETE STEP 1 BEFORE RUNNING PACKMOL ON THIS FILE - -# Step 2: Pack the lipids in the inner monolayer around the proteins from step1. -# -# ----- Run using: ----- -# packmol < step2_innerlayer.inp -# (This takes about 90 minutes on an Intel i7 processor) - - -# ----- Settings: ----- - -# All the atoms from diferent molecules will be at least 5.5 Angstrons apart -tolerance 5.5 -# (Setting "discale" to 1.4 increases the typical separation -# distance to approximately 1.4*5.5 = 7.7 Angstroms.) -discale 1.4 -# The other parameters below are optional: -nloop 10000 -maxit 20 -seed 12345 -sidemax 3000.0 -# What fraction of the molecules are moved during "large moves"? (default 0.05) -movefrac 0.05 - - -# The output file name - -output step2_innerlayer.xyz - -# File types are in xyz format - -filetype xyz - - -# The proteins whose position we determined earlier in step 1 -# will be frozen in place during this step. - -structure step1_proteins.xyz - number 1 - fixed 0. 0. 0. 0. 0. 0. -end structure - - -# 9500 DPPC lipids will be put in a shell with their hydrophilic heads -# (atom 1) pointing inwards, and their tails (atom 5) pointing outwards. - - -structure DPPC.xyz - number 9500 - atoms 1 - inside sphere 0. 0. 0. 270.0 - end atoms - atoms 5 - outside sphere 0. 0. 0. 295.0 - end atoms -end structure - -# 9500 DLPC lipids will be put in a shell with their hydrophilic heads -# (atom 1) pointing inwards, and their tails (atom 4) pointing outwards. - -structure DLPC.xyz - number 9500 - atoms 1 - inside sphere 0. 0. 0. 273.0 - end atoms - atoms 4 - outside sphere 0. 0. 0. 295.0 - end atoms -end structure - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step3_outerlayer.inp b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step3_outerlayer.inp deleted file mode 100644 index bed1c04246..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step3_outerlayer.inp +++ /dev/null @@ -1,70 +0,0 @@ -# NOTE: YOU MUST COMPLETE STEPS 1 AND 2 BEFORE RUNNING PACKMOL ON THIS FILE - -# Step 3: Pack the lipids in the outer monolayer around the proteins from step1. -# -# ----- Run using: ----- -# packmol < step3_outerlayer.inp -# (This takes about 4 hours on an Intel i7 processor) - - -# ----- Settings: ----- - -# All the atoms from diferent molecules will be at least 5.5 Angstrons apart -tolerance 5.5 -# (Setting "discale" to 1.4 increases the typical separation -# distance to approximately 1.4*5.5 = 7.7 Angstroms.) -discale 1.4 -# The other parameters below are optional: -nloop 10000 -maxit 20 -seed 12345 -sidemax 3000.0 -# What fraction of the molecules are moved during "large moves"? (default 0.05) -movefrac 0.05 - - -# The output file name - -output step3_outerlayer.xyz - -# File types are in xyz format - -filetype xyz - - -# The proteins and lipids whose position we determined earlier in steps 1-2 -# will be frozen in place during this step. - -structure step2_innerlayer.xyz - number 1 - fixed 0. 0. 0. 0. 0. 0. -end structure - - -# 12500 DPPC lipids will be put in a shell with their hydrophilic heads -# (atom 1) pointing outwards, and their tails (atom 5) pointing inwards. - - -structure DPPC.xyz - number 12500 - atoms 5 - inside sphere 0. 0. 0. 310.0 - end atoms - atoms 1 - outside sphere 0. 0. 0. 336.0 - end atoms -end structure - -# 12500 DLPC lipids will be put in a shell with their hydrophilic heads -# (atom 1) pointing outwards, and their tails (atom 4) pointing inwards. - -structure DLPC.xyz - number 12500 - atoms 4 - inside sphere 0. 0. 0. 313.0 - end atoms - atoms 1 - outside sphere 0. 0. 0. 332.0 - end atoms -end structure - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.min b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.min deleted file mode 100644 index 25ed25ad77..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.min +++ /dev/null @@ -1,50 +0,0 @@ -# -------- REQUIREMENTS: --------- -# 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# 2) It also may require additional features and bug fixes for LAMMPS. -# So, after typing "make yes-user-misc" in to the shell, ... -# be sure to download and copy the "additional_lammps_code" from -# http://moltemplate.org (upper-left corner menu) -# 3) Unpack it -# 4) copy the .cpp and .h files to the src folding of your lammps installation. -# 5) Compile LAMMPS. -# -# If LAMMPS complains about an "Invalid pair_style", or "Invalid dihedral_style" -# then you made a mistake in the instructions above. - - - -# -- Init section -- - -include system.in.init - -# -- Atom definition section -- - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run section -- - -dump 1 all custom 250 traj_min.lammpstrj id mol type x y z ix iy iz - -# minimize - -#balance 1.3 rcb - -min_style quickmin -min_modify dmax 0.1 -minimize 1.0e-5 1.0e-7 5000 20000 - -# If minimization crashes, then instead try Langevin dynamics -# with a small timestep and a fast damping parameter. For example: -# -# timestep 0.05 -# fix fxlan all langevin 300.0 300.0 100.0 48279 -# fix fxnve all nve -# -# run 10000 - -write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.nvt b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.nvt deleted file mode 100644 index 253c042670..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.nvt +++ /dev/null @@ -1,63 +0,0 @@ -# -------- REQUIREMENTS: --------- -# 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# 2) It also may require additional features and bug fixes for LAMMPS. -# So, after typing "make yes-user-misc" in to the shell, ... -# be sure to download and copy the "additional_lammps_code" from -# http://moltemplate.org (upper-left corner menu) -# 3) Unpack it -# 4) copy the .cpp and .h files to the src folding of your lammps installation. -# 5) Compile LAMMPS. -# -# If LAMMPS complains about an "Invalid pair_style", or "Invalid dihedral_style" -# then you made a mistake in the instructions above. -# -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -# Commenting out: -# -# read_data system.data -# -# Instead read the data file created by "run.in.min". - -read_data system_after_min.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - -# Just in case the previous minimization failed, try again. -# (I don't know why this helps, but sometimes it does. Magic.) - -minimize 1.0e-5 1.0e-7 5000 20000 - -# Run main simulation - -timestep 10.0 # The time-step in Watson et. al 2011 was 0.002*3ps = 6fs -dump 1 all custom 2500 traj_nvt.lammpstrj id mol type x y z ix iy iz - - -thermo_style custom step temp pe etotal vol epair ebond eangle -thermo 100 # time interval for printing out "thermo" data - - - - -fix fxlan all langevin 300.0 300.0 120 48279 -fix fxnve all nve - -# Note: The energy scale "epsilon" = 2.75kJ/mole = 330.7485200981 Kelvin*kB. -# So a temperature of 300.0 Kelvin corresponds to 0.907033536873*epsilon. -# Note: The langevin damping parameter "120" corresponds to -# the 0.12ps damping time used in Watson et. al JCP 2011. - -run 1000000 - -write_data system_after_nvt.data - diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.TXT b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.TXT deleted file mode 100644 index d69f1d6ffa..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.TXT +++ /dev/null @@ -1,83 +0,0 @@ -########################################################### -# Interaction of a carbon nanotube with a pair of "mystery -# molecules" (extracted from the cnat-cnt.data/in files). -########################################################### -# Author: Aysun Itai and Andrew Jewett - -This example uses "ltemplify.py" to create molecule templates out -of two different molecules in a pre-existing LAMMPS IN/DATA file. -Then I show how to use "moltemplate.sh" to make copies of these -molecules and to move and rotate them (creating new LAMMPS IN/DATA files). - - Disclaimer: -The molecules in this example are not physically realistic. -The purpose of this example is to demonstrate ltemplify usage. - - REQUIRED INPUT FILES - -cnad-cnt.data cnad-cnt.in system.lt - - cnad-cnt.data - This is a LAMMPS data file containing the coordinates and the topology - for a system combining the two molecules together. ltemplify will extract - molecules from this file, one at a time. - - cnad-cnt.in - This file contains force-field parameters and old run settings for the system. - (We ignore the run settings in this file.) The force-field parameters in - the "cnad-cnt.in" file are only necessary because we are going to build - a completely new set of simulation input files. (We are not only going to - rotate them and duplicate the molecules.) ltemplify.py will extract the - force field parameters from this file. This approach allows us to combine - these molecules with other types of molecules later on.) - - system.lt - The "system.lt" contains the instructions what we will do with these molecules - after ltemplify.py has converted them into .LT format. In this example - it contains instructions for rotating and copying the two molecules, - (It also defines the periodic boundary conditions.) - - OUTPUT FILES - -cnad.lt -cnt.lt - -These files are referenced in system.lt. -Running moltemplate.sh on system.lt (using "moltemplate.sh system.lt") -creates new LAMMPS data and input files: -system.data, system.in, system.in.init, system.in.settings -(These files are referenced in run.in.nvt.) - -You can run a simulation from the files created by moltemplate using - -lmp_linux -i run.in.nvt - -NOTE: BECAUSE ALL OF THE ORIGINAL FORCE FIELD PARAMETERS WERE INTENTIONALLY - ALTERED, THE SYSTEM WILL MOVE IN A VERY UNREALISTIC WAY WHEN SIMULATED. - (This was done to protect the original source of the files.) - The goal of this example is only to demonstrate how to use - "ltemplify.py" to convert lammps input and data files into - LT format and back again.) - - ----------- - -Instructions: -Run the commands (follow the instructions) in these files: - -step 1) -README_step1_run_ltemplify.sh - -and then - -step 2) -README_step2_run_moltemplate.sh - -step 3) OPTIONAL - -To run a short LAMMPS simulation, you can use the "in.nvt" file, for example: - -$LAMMPS_BINARY -i run.in.nvt - -where "$LAMMPS_BINARY" is the name of the command you use to invoke lammps -(such as lmp_linux, lmp_g++, lmp_mac, lmp_ubuntu, lmp_cygwin, etc...). - ----------- diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step1_run_ltemplify.sh b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step1_run_ltemplify.sh deleted file mode 100755 index 4bb42d7ea6..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step1_run_ltemplify.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# Aysun Itai's LAMMPS files contain two molecules: - -# The CNAD molecule has molecule-id 1 - -ltemplify.py -name CNAD -molid "1" cnad-cnt.in cnad-cnt.data > cnad.lt - -# The CNT (carbon nanotube) corresponds to molecule-id 2 -ltemplify.py -name CNT -molid "2" cnad-cnt.in cnad-cnt.data > cnt.lt - -# This will extract both molecules and save them as separate .LT files. -# (We can include these files later when preparing new simulations.) diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step2_run_moltemplate.sh b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step2_run_moltemplate.sh deleted file mode 100755 index 6903a855f9..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step2_run_moltemplate.sh +++ /dev/null @@ -1,22 +0,0 @@ -# --- Running Moltemplate --- -# -- Prerequisites: -- -# The "system.lt" moltemplate file links to other ".lt" files -# files you hopefully have created earlier when you ran "ltemplify.py: -# cnad.lt and cnt.lt -# If not, carry out the instructions in "README_run_ltemplify.sh". - -moltemplate.sh system.lt - -# (Note: If you have VMD installed, try this instead:) -# moltemplate.sh system.lt -vmd - - -# Moltemplate will generate various files with names ending in *.in* and *.data. -# These files are the input files directly read by LAMMPS. - -# Optional: -# The "./output_ttree/" directory is full of temporary files generated by -# moltemplate. They can be useful for debugging, but are usually thrown away. - -rm -rf output_ttree/ - diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step3_run_lammps.sh b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step3_run_lammps.sh deleted file mode 100755 index ab9a7dc6e8..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step3_run_lammps.sh +++ /dev/null @@ -1,16 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The "run.in.nvt" LAMMPS input script links to the input -# scripts and data files you hopefully have created earlier -# with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_run_moltemplate.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps this way: - -lmp_mpi -i run.in.nvt - -# NOTE: BECAUSE ALL OF THE ORIGINAL FORCE FIELD PARAMETERS WERE INTENTIONALLY -# REMOVED, THE SYSTEM WILL MOVE IN A VERY UNREALISTIC WAY. diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_visualize.txt b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_visualize.txt deleted file mode 100644 index 3b9be3e9c3..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_visualize.txt +++ /dev/null @@ -1,50 +0,0 @@ - - ------- To view the trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - - -Later, to Load a trajectory in VMD: - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it - ------ Wrap the coordinates to the unit cell - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Enter: - - DISCLAIMER: I'M NOT SURE THESE COMMANDS ARE CORRECT. - LOOKUP "pbctools" FOR DETAILS. - - pbc wrap -compound res -all - pbc box - -3) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/cnad-cnt.data b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/cnad-cnt.data deleted file mode 100644 index 1f18ff4aef..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/cnad-cnt.data +++ /dev/null @@ -1,1157 +0,0 @@ -Created by Aysun Itai and modified by Andrew Jewett -NOTE: This file has been extensively modified. -Only the bond connectivity and atomic positions are accurate. - - 101 atoms - 134 bonds - 252 angles - 457 dihedrals - 0 impropers - - 16 atom types - 24 bond types - 50 angle types - 78 dihedral types - 0 improper types - - 0 50 xlo xhi - 0 50 ylo yhi - 0 50 zlo zhi - -Masses - - 1 10.0 - 2 10.0 # atom type names often appear - 3 10.0 # in the comments follwing - 4 10.0 # each line in the Masses section - 5 10.0 - 6 10.0 - 7 10.0 - 8 10.0 - 9 10.0 - 10 10.0 - 11 10.0 - 12 10.0 - 13 10.0 - 14 10.0 - 15 10.0 - 16 10.0 - -Atoms - -1 2 1 0.000000 12.345 10.000 4.328 -2 2 1 0.000000 12.031 11.173 5.037 -3 2 1 0.000000 12.031 11.173 6.455 -4 2 1 0.000000 11.173 12.031 7.164 -5 2 1 0.000000 11.173 12.031 4.328 -6 2 1 0.000000 10.000 12.345 5.037 -7 2 1 0.000000 10.000 12.345 6.455 -8 2 1 0.000000 8.827 12.031 7.164 -9 2 1 0.000000 8.827 12.031 4.328 -10 2 1 0.000000 7.969 11.173 5.037 -11 2 1 0.000000 7.969 11.173 6.455 -12 2 1 0.000000 7.655 10.000 7.164 -13 2 1 0.000000 7.655 10.000 4.328 -14 2 1 0.000000 7.969 8.827 5.037 -15 2 1 0.000000 7.969 8.827 6.455 -16 2 1 0.000000 8.827 7.969 7.164 -17 2 1 0.000000 8.827 7.969 4.328 -18 2 1 0.000000 10.000 7.655 5.037 -19 2 1 0.000000 10.000 7.655 6.455 -20 2 1 0.000000 11.173 7.969 7.164 -21 2 1 0.000000 11.173 7.969 4.328 -22 2 1 0.000000 12.031 8.827 5.037 -23 2 1 0.000000 12.031 8.827 6.455 -24 2 1 0.000000 12.345 10.000 7.164 -25 2 1 0.000000 12.345 10.000 8.582 -26 2 1 0.000000 12.031 11.173 9.291 -27 2 1 0.000000 12.031 11.173 10.709 -28 2 1 0.000000 11.173 12.031 11.418 -29 2 1 0.000000 11.173 12.031 8.582 -30 2 1 0.000000 10.000 12.345 9.291 -31 2 1 0.000000 10.000 12.345 10.709 -32 2 1 0.000000 8.827 12.031 11.418 -33 2 1 0.000000 8.827 12.031 8.582 -34 2 1 0.000000 7.969 11.173 9.291 -35 2 1 0.000000 7.969 11.173 10.709 -36 2 1 0.000000 7.655 10.000 11.418 -37 2 1 0.000000 7.655 10.000 8.582 -38 2 1 0.000000 7.969 8.827 9.291 -39 2 1 0.000000 7.969 8.827 10.709 -40 2 1 0.000000 8.827 7.969 11.418 -41 2 1 0.000000 8.827 7.969 8.582 -42 2 1 0.000000 10.000 7.655 9.291 -43 2 1 0.000000 10.000 7.655 10.709 -44 2 1 0.000000 11.173 7.969 11.418 -45 2 1 0.000000 11.173 7.969 8.582 -46 2 1 0.000000 12.031 8.827 9.291 -47 2 1 0.000000 12.031 8.827 10.709 -48 2 1 0.000000 12.345 10.000 11.418 -49 2 1 0.000000 12.345 10.000 12.836 -50 2 1 0.000000 12.031 11.173 13.545 -51 2 1 0.000000 12.031 11.173 14.963 -52 2 1 0.000000 11.173 12.031 15.672 -53 2 1 0.000000 11.173 12.031 12.836 -54 2 1 0.000000 10.000 12.345 13.545 -55 2 1 0.000000 10.000 12.345 14.963 -56 2 1 0.000000 8.827 12.031 15.672 -57 2 1 0.000000 8.827 12.031 12.836 -58 2 1 0.000000 7.969 11.173 13.545 -59 2 1 0.000000 7.969 11.173 14.963 -60 2 1 0.000000 7.655 10.000 15.672 -61 2 1 0.000000 7.655 10.000 12.836 -62 2 1 0.000000 7.969 8.827 13.545 -63 2 1 0.000000 7.969 8.827 14.963 -64 2 1 0.000000 8.827 7.969 15.672 -65 2 1 0.000000 8.827 7.969 12.836 -66 2 1 0.000000 10.000 7.655 13.545 -67 2 1 0.000000 10.000 7.655 14.963 -68 2 1 0.000000 11.173 7.969 15.672 -69 2 1 0.000000 11.173 7.969 12.836 -70 2 1 0.000000 12.031 8.827 13.545 -71 2 1 0.000000 12.031 8.827 14.963 -72 2 1 0.000000 12.345 10.000 15.672 -73 1 9 -0.18 -3.365 0.678 1.133 -74 1 4 0.09 -2.854 1.624 1.417 -75 1 4 0.09 -4.302 0.58 1.719 -76 1 9 -0.09 -1.647 -0.716 0.047 -77 1 4 0.09 -1.451 -1.802 -0.11 -78 1 10 -0.18 -2.425 -0.518 1.369 -79 1 5 0.09 -1.756 -0.365 2.24 -80 1 5 0.09 -3.037 -1.427 1.561 -81 1 11 -0.09 -3.628 0.67 -0.366 -82 1 4 0.09 -3.892 1.592 -0.905 -83 1 10 -0.18 -4.015 -0.644 -0.985 -84 1 5 0.09 -4.264 -1.466 -0.292 -85 1 5 0.09 -4.56 -0.575 -1.945 -86 1 12 -0.09 -2.584 -0.196 -1.019 -87 1 4 0.09 -2.203 0.152 -1.987 -88 1 8 0.28 1.737 0.629 -0.049 -89 1 16 -0.71 1.009 1.811 -0.085 -90 1 7 0.34 -0.238 1.412 -0.066 -91 1 3 0.12 -1.102 2.079 -0.079 -92 1 14 -0.05 -0.385 0.043 -0.026 -93 1 15 -0.74 3.524 -0.923 0.002 -94 1 7 0.5 2.59 -1.876 0.037 -95 1 3 0.13 2.97 -2.901 0.072 -96 1 15 -0.75 1.258 -1.76 0.035 -97 1 8 0.43 0.895 -0.468 -0.01 -98 1 6 0.46 3.123 0.37 -0.042 -99 1 13 -0.77 4.058 1.336 -0.077 -100 1 2 0.38 5.012 1.052 -0.068 -101 1 2 0.38 3.805 2.299 -0.107 - - -Bond Coeffs - - 1 2.0 1.4 - 2 2.0 1.4 # comments can appear - 3 2.0 1.4 # at the end of lines - 4 2.0 1.4 # in each data file section - 5 2.0 1.1 - 6 2.0 1.4 - 7 2.0 1.4 - 8 2.0 1.4 - 9 2.0 1.4 - 10 2.0 1.4 - 11 2.0 1.4 - 12 2.0 1.4 - 13 2.0 1.4 - 14 2.0 1.4 - 15 2.0 1.4 - 16 2.0 1.1 - 17 2.0 1.4 - 18 2.0 1.4 - 19 2.0 1.1 - 20 2.0 1.4 - 21 2.0 1.4 - 22 2.0 1.1 - 23 2.0 1.1 - 24 2.0 1.1 - -Bonds - -1 1 1 2 # descriptive comments can -2 1 1 22 # appear at the end of lines -3 1 2 3 # in each data file section -4 1 2 5 # (removed from this file) -5 1 3 24 -6 1 3 4 -7 1 4 7 -8 1 4 29 -9 1 5 6 -10 1 6 7 -11 1 6 9 -12 1 7 8 -13 1 8 33 -14 1 8 11 -15 1 9 10 -16 1 10 13 -17 1 10 11 -18 1 11 12 -19 1 12 15 -20 1 12 37 -21 1 13 14 -22 1 14 17 -23 1 14 15 -24 1 15 16 -25 1 16 19 -26 1 16 41 -27 1 17 18 -28 1 18 21 -29 1 18 19 -30 1 19 20 -31 1 20 23 -32 1 20 45 -33 1 21 22 -34 1 22 23 -35 1 23 24 -36 1 24 25 -37 1 25 26 -38 1 25 46 -39 1 26 27 -40 1 26 29 -41 1 27 48 -42 1 27 28 -43 1 28 31 -44 1 28 53 -45 1 29 30 -46 1 30 31 -47 1 30 33 -48 1 31 32 -49 1 32 57 -50 1 32 35 -51 1 33 34 -52 1 34 37 -53 1 34 35 -54 1 35 36 -55 1 36 39 -56 1 36 61 -57 1 37 38 -58 1 38 41 -59 1 38 39 -60 1 39 40 -61 1 40 43 -62 1 40 65 -63 1 41 42 -64 1 42 45 -65 1 42 43 -66 1 43 44 -67 1 44 47 -68 1 44 69 -69 1 45 46 -70 1 46 47 -71 1 47 48 -72 1 48 49 -73 1 49 50 -74 1 49 70 -75 1 50 51 -76 1 50 53 -77 1 51 72 -78 1 51 52 -79 1 52 55 -80 1 53 54 -81 1 54 55 -82 1 54 57 -83 1 55 56 -84 1 56 59 -85 1 57 58 -86 1 58 61 -87 1 58 59 -88 1 59 60 -89 1 60 63 -90 1 61 62 -91 1 62 65 -92 1 62 63 -93 1 63 64 -94 1 64 67 -95 1 65 66 -96 1 66 69 -97 1 66 67 -98 1 67 68 -99 1 68 71 -100 1 69 70 -101 1 70 71 -102 1 71 72 -103 13 73 81 -104 19 73 74 -105 19 73 75 -106 18 76 78 -107 19 76 77 -108 20 76 92 -109 18 78 73 -110 23 78 79 -111 23 78 80 -112 14 81 86 -113 15 81 83 -114 16 81 82 -115 21 83 86 -116 23 83 84 -117 23 83 85 -118 17 86 76 -119 22 86 87 -120 12 88 89 -121 8 89 90 -122 5 90 91 -123 10 92 97 -124 6 92 90 -125 4 93 98 -126 7 94 93 -127 5 94 95 -128 7 94 96 -129 11 97 96 -130 9 97 88 -131 3 98 99 -132 2 98 88 -133 24 99 100 -134 24 99 101 - - -Angle Coeffs - - 1 0 120.0 0 2.0 - 2 0 120.0 0 2.0 # comments can appear - 3 0 120.0 0 2.0 # at the end of lines - 4 0 120.0 0 2.0 # in each data file section - 5 0 120.0 0 2.0 - 6 0 120.0 0 2.0 - 7 0 120.0 0 2.0 - 8 0 120.0 0 2.0 - 9 0 120.0 0 2.0 - 10 0 120.0 0 2.0 - 11 0 120.0 0 2.0 - 12 0 120.0 0 2.0 - 13 0 120.0 0 2.0 - 14 0 120.0 0 2.0 - 15 0 120.0 0 2.0 - 16 0 120.0 0 2.0 - 17 0 120.0 0 2.0 - 18 0 120.0 0 2.0 - 19 0 60.0 0 2.0 - 20 0 120.0 0 2.0 - 21 0 60.0 0 2.0 - 22 0 120.0 0 2.0 - 23 0 120.0 0 2.0 - 24 0 120.0 0 2.0 - 25 0 120.0 0 2.0 - 26 0 120.0 0 2.0 - 27 0 120.0 0 2.0 - 28 0 120.0 0 2.0 - 29 0 120.0 0 2.0 - 30 0 60.0 0 2.0 - 31 0 120.0 0 2.0 - 32 0 90.0 0 2.0 - 33 0 120.0 0 2.0 - 34 0 120.0 0 2.0 - 35 0 120.0 0 2.0 - 36 0 120.0 0 2.0 - 37 0 120.0 0 2.0 - 38 0 120.0 0 2.0 - 39 0 120.0 0 2.0 - 40 0 120.0 0 2.0 - 41 0 120.0 0 2.0 - 42 0 120.0 0 2.0 - 43 0 120.0 0 2.0 - 44 0 120.0 0 2.0 - 45 0 120.0 0 2.0 - 46 0 120.0 0 2.0 - 47 0 120.0 0 2.0 - 48 0 120.0 0 2.0 - 49 0 120.0 0 2.0 - 50 0 120.0 0 2.0 - -Angles - -1 1 2 1 22 -2 1 1 2 3 # comments can appear -3 1 1 2 5 # at the end of lines -4 1 3 2 5 # in each data file section -5 1 2 3 24 -6 1 2 3 4 -7 1 4 3 24 -8 1 3 4 7 -9 1 3 4 29 -10 1 7 4 29 -11 1 2 5 6 -12 1 5 6 7 -13 1 5 6 9 -14 1 7 6 9 -15 1 4 7 6 -16 1 4 7 8 -17 1 6 7 8 -18 1 7 8 33 -19 1 7 8 11 -20 1 11 8 33 -21 1 6 9 10 -22 1 9 10 13 -23 1 9 10 11 -24 1 11 10 13 -25 1 8 11 10 -26 1 8 11 12 -27 1 10 11 12 -28 1 11 12 15 -29 1 11 12 37 -30 1 15 12 37 -31 1 10 13 14 -32 1 13 14 17 -33 1 13 14 15 -34 1 15 14 17 -35 1 12 15 14 -36 1 12 15 16 -37 1 14 15 16 -38 1 15 16 19 -39 1 15 16 41 -40 1 19 16 41 -41 1 14 17 18 -42 1 17 18 21 -43 1 17 18 19 -44 1 19 18 21 -45 1 16 19 18 -46 1 16 19 20 -47 1 18 19 20 -48 1 19 20 23 -49 1 19 20 45 -50 1 23 20 45 -51 1 18 21 22 -52 1 1 22 21 -53 1 1 22 23 -54 1 21 22 23 -55 1 20 23 22 -56 1 20 23 24 -57 1 22 23 24 -58 1 3 24 23 -59 1 3 24 25 -60 1 23 24 25 -61 1 24 25 26 -62 1 24 25 46 -63 1 26 25 46 -64 1 25 26 27 -65 1 25 26 29 -66 1 27 26 29 -67 1 26 27 48 -68 1 26 27 28 -69 1 28 27 48 -70 1 27 28 31 -71 1 27 28 53 -72 1 31 28 53 -73 1 4 29 26 -74 1 4 29 30 -75 1 26 29 30 -76 1 29 30 31 -77 1 29 30 33 -78 1 31 30 33 -79 1 28 31 30 -80 1 28 31 32 -81 1 30 31 32 -82 1 31 32 57 -83 1 31 32 35 -84 1 35 32 57 -85 1 8 33 30 -86 1 8 33 34 -87 1 30 33 34 -88 1 33 34 37 -89 1 33 34 35 -90 1 35 34 37 -91 1 32 35 34 -92 1 32 35 36 -93 1 34 35 36 -94 1 35 36 39 -95 1 35 36 61 -96 1 39 36 61 -97 1 12 37 34 -98 1 12 37 38 -99 1 34 37 38 -100 1 37 38 41 -101 1 37 38 39 -102 1 39 38 41 -103 1 36 39 38 -104 1 36 39 40 -105 1 38 39 40 -106 1 39 40 43 -107 1 39 40 65 -108 1 43 40 65 -109 1 16 41 38 -110 1 16 41 42 -111 1 38 41 42 -112 1 41 42 45 -113 1 41 42 43 -114 1 43 42 45 -115 1 40 43 42 -116 1 40 43 44 -117 1 42 43 44 -118 1 43 44 47 -119 1 43 44 69 -120 1 47 44 69 -121 1 20 45 42 -122 1 20 45 46 -123 1 42 45 46 -124 1 25 46 45 -125 1 25 46 47 -126 1 45 46 47 -127 1 44 47 46 -128 1 44 47 48 -129 1 46 47 48 -130 1 27 48 47 -131 1 27 48 49 -132 1 47 48 49 -133 1 48 49 50 -134 1 48 49 70 -135 1 50 49 70 -136 1 49 50 51 -137 1 49 50 53 -138 1 51 50 53 -139 1 50 51 72 -140 1 50 51 52 -141 1 52 51 72 -142 1 51 52 55 -143 1 28 53 50 -144 1 28 53 54 -145 1 50 53 54 -146 1 53 54 55 -147 1 53 54 57 -148 1 55 54 57 -149 1 52 55 54 -150 1 52 55 56 -151 1 54 55 56 -152 1 55 56 59 -153 1 32 57 54 -154 1 32 57 58 -155 1 54 57 58 -156 1 57 58 61 -157 1 57 58 59 -158 1 59 58 61 -159 1 56 59 58 -160 1 56 59 60 -161 1 58 59 60 -162 1 59 60 63 -163 1 36 61 58 -164 1 36 61 62 -165 1 58 61 62 -166 1 61 62 65 -167 1 61 62 63 -168 1 63 62 65 -169 1 60 63 62 -170 1 60 63 64 -171 1 62 63 64 -172 1 63 64 67 -173 1 40 65 62 -174 1 40 65 66 -175 1 62 65 66 -176 1 65 66 69 -177 1 65 66 67 -178 1 67 66 69 -179 1 64 67 66 -180 1 64 67 68 -181 1 66 67 68 -182 1 67 68 71 -183 1 44 69 66 -184 1 44 69 70 -185 1 66 69 70 -186 1 49 70 69 -187 1 49 70 71 -188 1 69 70 71 -189 1 68 71 70 -190 1 68 71 72 -191 1 70 71 72 -192 1 51 72 71 -193 25 73 81 82 -194 24 73 81 83 -195 23 73 81 86 -196 29 73 78 80 -197 29 73 78 79 -198 44 74 73 75 -199 7 76 92 90 -200 15 76 92 97 -201 27 76 86 87 -202 26 76 86 83 -203 18 76 86 81 -204 29 76 78 80 -205 29 76 78 79 -206 28 76 78 73 -207 45 77 76 92 -208 38 78 76 92 -209 37 78 76 77 -210 37 78 73 75 -211 37 78 73 74 -212 16 78 73 81 -213 46 79 78 80 -214 20 81 86 87 -215 19 81 86 83 -216 22 81 83 85 -217 22 81 83 84 -218 21 81 83 86 -219 17 81 73 75 -220 17 81 73 74 -221 39 83 86 87 -222 36 83 81 82 -223 46 84 83 85 -224 35 86 83 85 -225 35 86 83 84 -226 31 86 81 82 -227 30 86 81 83 -228 34 86 76 92 -229 33 86 76 77 -230 32 86 76 78 -231 11 88 98 93 -232 9 88 89 90 -233 14 89 88 97 -234 43 91 90 89 -235 12 92 97 88 -236 49 92 97 96 -237 48 92 90 89 -238 41 92 90 91 -239 50 93 94 96 -240 42 93 94 95 -241 5 94 93 98 -242 42 95 94 96 -243 13 96 97 88 -244 8 97 96 94 -245 6 97 92 90 -246 4 98 99 101 -247 4 98 99 100 -248 2 98 88 97 -249 3 98 88 89 -250 47 99 98 93 -251 10 99 98 88 -252 40 100 99 101 - -Dihedral Coeffs - - 1 0.0 2 180 1 - 2 0.0 2 180 1 # comments can appear - 3 0.0 2 180 1 # at the end of lines - 4 0.0 2 180 1 # in each data file section - 5 0.0 2 180 1 - 6 0.0 2 180 1 - 7 0.0 2 180 1 - 8 0.0 2 180 1 - 9 0.0 1 180 1 - 10 0.0 1 180 1 - 11 0.0 3 180 1 - 12 0.0 2 180 1 - 13 0.0 2 180 1 - 14 0.0 2 180 1 - 15 0.0 2 180 1 - 16 0.0 2 180 1 - 17 0.0 2 180 1 - 18 0.0 2 180 1 - 19 0.0 2 180 1 - 20 0.0 2 180 1 - 21 0.0 2 180 1 - 22 0.0 2 180 1 - 23 0.0 1 180 1 - 24 0.0 1 180 1 - 25 0.0 3 180 1 - 26 0.0 2 180 1 - 27 0.0 2 180 1 - 28 0.0 2 180 1 - 29 0.0 2 180 1 - 30 0.0 6 180 1 - 31 0.0 3 180 1 - 32 0.0 3 180 1 - 33 0.0 3 180 1 - 34 0.0 3 180 1 - 35 0.0 3 180 1 - 36 0.0 3 180 1 - 37 0.0 3 180 1 - 38 0.0 3 180 1 - 39 0.0 3 180 1 - 40 0.0 3 180 1 - 41 0.0 3 180 1 - 42 0.0 3 180 1 - 43 0.0 3 180 1 - 44 0.0 3 180 1 - 45 0.0 3 180 1 - 46 0.0 3 180 1 - 47 0.0 3 180 1 - 48 0.0 3 180 1 - 49 0.0 2 180 1 - 50 0.0 2 180 1 - 51 0.0 2 180 1 - 52 0.0 3 180 1 - 53 0.0 3 180 1 - 54 0.0 3 180 1 - 55 0.0 3 180 1 - 56 0.0 3 180 1 - 57 0.0 3 180 1 - 58 0.0 3 180 1 - 59 0.0 3 180 1 - 60 0.0 3 180 1 - 61 0.0 3 180 1 - 62 0.0 3 180 1 - 63 0.0 3 180 1 - 64 0.0 3 180 1 - 65 0.0 3 180 1 - 66 0.0 2 180 1 - 67 0.0 3 180 1 - 68 0.0 3 180 1 - 69 0.0 3 180 1 - 70 0.0 3 180 1 - 71 0.0 3 180 1 - 72 0.0 3 180 1 - 73 0.0 3 180 1 - 74 0.0 3 180 1 - 75 0.0 2 180 1 - 76 0.0 2 180 1 - 77 0.0 2 180 1 - 78 0.0 2 180 1 - -Dihedrals - -1 1 22 1 2 3 -2 1 22 1 2 5 -3 1 2 1 22 21 -4 1 2 1 22 23 -5 1 1 2 3 24 -6 1 1 2 3 4 -7 1 5 2 3 24 -8 1 5 2 3 4 -9 1 1 2 5 6 -10 1 3 2 5 6 -11 1 2 3 24 23 -12 1 2 3 24 25 -13 1 4 3 24 23 -14 1 4 3 24 25 -15 1 2 3 4 7 -16 1 2 3 4 29 -17 1 24 3 4 7 -18 1 24 3 4 29 -19 1 3 4 7 6 -20 1 3 4 7 8 -21 1 29 4 7 6 -22 1 29 4 7 8 -23 1 3 4 29 26 -24 1 3 4 29 30 -25 1 7 4 29 26 -26 1 7 4 29 30 -27 1 2 5 6 7 -28 1 2 5 6 9 -29 1 5 6 7 4 -30 1 5 6 7 8 -31 1 9 6 7 4 -32 1 9 6 7 8 -33 1 5 6 9 10 -34 1 7 6 9 10 -35 1 4 7 8 33 -36 1 4 7 8 11 -37 1 6 7 8 33 -38 1 6 7 8 11 -39 1 7 8 33 30 -40 1 7 8 33 34 -41 1 11 8 33 30 -42 1 11 8 33 34 -43 1 7 8 11 10 -44 1 7 8 11 12 -45 1 33 8 11 10 -46 1 33 8 11 12 -47 1 6 9 10 13 -48 1 6 9 10 11 -49 1 9 10 13 14 -50 1 11 10 13 14 -51 1 9 10 11 8 -52 1 9 10 11 12 -53 1 13 10 11 8 -54 1 13 10 11 12 -55 1 8 11 12 15 -56 1 8 11 12 37 -57 1 10 11 12 15 -58 1 10 11 12 37 -59 1 11 12 15 14 -60 1 11 12 15 16 -61 1 37 12 15 14 -62 1 37 12 15 16 -63 1 11 12 37 34 -64 1 11 12 37 38 -65 1 15 12 37 34 -66 1 15 12 37 38 -67 1 10 13 14 17 -68 1 10 13 14 15 -69 1 13 14 17 18 -70 1 15 14 17 18 -71 1 13 14 15 12 -72 1 13 14 15 16 -73 1 17 14 15 12 -74 1 17 14 15 16 -75 1 12 15 16 19 -76 1 12 15 16 41 -77 1 14 15 16 19 -78 1 14 15 16 41 -79 1 15 16 19 18 -80 1 15 16 19 20 -81 1 41 16 19 18 -82 1 41 16 19 20 -83 1 15 16 41 38 -84 1 15 16 41 42 -85 1 19 16 41 38 -86 1 19 16 41 42 -87 1 14 17 18 21 -88 1 14 17 18 19 -89 1 17 18 21 22 -90 1 19 18 21 22 -91 1 17 18 19 16 -92 1 17 18 19 20 -93 1 21 18 19 16 -94 1 21 18 19 20 -95 1 16 19 20 23 -96 1 16 19 20 45 -97 1 18 19 20 23 -98 1 18 19 20 45 -99 1 19 20 23 22 -100 1 19 20 23 24 -101 1 45 20 23 22 -102 1 45 20 23 24 -103 1 19 20 45 42 -104 1 19 20 45 46 -105 1 23 20 45 42 -106 1 23 20 45 46 -107 1 18 21 22 1 -108 1 18 21 22 23 -109 1 1 22 23 20 -110 1 1 22 23 24 -111 1 21 22 23 20 -112 1 21 22 23 24 -113 1 20 23 24 3 -114 1 20 23 24 25 -115 1 22 23 24 3 -116 1 22 23 24 25 -117 1 3 24 25 26 -118 1 3 24 25 46 -119 1 23 24 25 26 -120 1 23 24 25 46 -121 1 24 25 26 27 -122 1 24 25 26 29 -123 1 46 25 26 27 -124 1 46 25 26 29 -125 1 24 25 46 45 -126 1 24 25 46 47 -127 1 26 25 46 45 -128 1 26 25 46 47 -129 1 25 26 27 48 -130 1 25 26 27 28 -131 1 29 26 27 48 -132 1 29 26 27 28 -133 1 25 26 29 4 -134 1 25 26 29 30 -135 1 27 26 29 4 -136 1 27 26 29 30 -137 1 26 27 48 47 -138 1 26 27 48 49 -139 1 28 27 48 47 -140 1 28 27 48 49 -141 1 26 27 28 31 -142 1 26 27 28 53 -143 1 48 27 28 31 -144 1 48 27 28 53 -145 1 27 28 31 30 -146 1 27 28 31 32 -147 1 53 28 31 30 -148 1 53 28 31 32 -149 1 27 28 53 50 -150 1 27 28 53 54 -151 1 31 28 53 50 -152 1 31 28 53 54 -153 1 4 29 30 31 -154 1 4 29 30 33 -155 1 26 29 30 31 -156 1 26 29 30 33 -157 1 29 30 31 28 -158 1 29 30 31 32 -159 1 33 30 31 28 -160 1 33 30 31 32 -161 1 29 30 33 8 -162 1 29 30 33 34 -163 1 31 30 33 8 -164 1 31 30 33 34 -165 1 28 31 32 57 -166 1 28 31 32 35 -167 1 30 31 32 57 -168 1 30 31 32 35 -169 1 31 32 57 54 -170 1 31 32 57 58 -171 1 35 32 57 54 -172 1 35 32 57 58 -173 1 31 32 35 34 -174 1 31 32 35 36 -175 1 57 32 35 34 -176 1 57 32 35 36 -177 1 8 33 34 37 -178 1 8 33 34 35 -179 1 30 33 34 37 -180 1 30 33 34 35 -181 1 33 34 37 12 -182 1 33 34 37 38 -183 1 35 34 37 12 -184 1 35 34 37 38 -185 1 33 34 35 32 -186 1 33 34 35 36 -187 1 37 34 35 32 -188 1 37 34 35 36 -189 1 32 35 36 39 -190 1 32 35 36 61 -191 1 34 35 36 39 -192 1 34 35 36 61 -193 1 35 36 39 38 -194 1 35 36 39 40 -195 1 61 36 39 38 -196 1 61 36 39 40 -197 1 35 36 61 58 -198 1 35 36 61 62 -199 1 39 36 61 58 -200 1 39 36 61 62 -201 1 12 37 38 41 -202 1 12 37 38 39 -203 1 34 37 38 41 -204 1 34 37 38 39 -205 1 37 38 41 16 -206 1 37 38 41 42 -207 1 39 38 41 16 -208 1 39 38 41 42 -209 1 37 38 39 36 -210 1 37 38 39 40 -211 1 41 38 39 36 -212 1 41 38 39 40 -213 1 36 39 40 43 -214 1 36 39 40 65 -215 1 38 39 40 43 -216 1 38 39 40 65 -217 1 39 40 43 42 -218 1 39 40 43 44 -219 1 65 40 43 42 -220 1 65 40 43 44 -221 1 39 40 65 62 -222 1 39 40 65 66 -223 1 43 40 65 62 -224 1 43 40 65 66 -225 1 16 41 42 45 -226 1 16 41 42 43 -227 1 38 41 42 45 -228 1 38 41 42 43 -229 1 41 42 45 20 -230 1 41 42 45 46 -231 1 43 42 45 20 -232 1 43 42 45 46 -233 1 41 42 43 40 -234 1 41 42 43 44 -235 1 45 42 43 40 -236 1 45 42 43 44 -237 1 40 43 44 47 -238 1 40 43 44 69 -239 1 42 43 44 47 -240 1 42 43 44 69 -241 1 43 44 47 46 -242 1 43 44 47 48 -243 1 69 44 47 46 -244 1 69 44 47 48 -245 1 43 44 69 66 -246 1 43 44 69 70 -247 1 47 44 69 66 -248 1 47 44 69 70 -249 1 20 45 46 25 -250 1 20 45 46 47 -251 1 42 45 46 25 -252 1 42 45 46 47 -253 1 25 46 47 44 -254 1 25 46 47 48 -255 1 45 46 47 44 -256 1 45 46 47 48 -257 1 44 47 48 27 -258 1 44 47 48 49 -259 1 46 47 48 27 -260 1 46 47 48 49 -261 1 27 48 49 50 -262 1 27 48 49 70 -263 1 47 48 49 50 -264 1 47 48 49 70 -265 1 48 49 50 51 -266 1 48 49 50 53 -267 1 70 49 50 51 -268 1 70 49 50 53 -269 1 48 49 70 69 -270 1 48 49 70 71 -271 1 50 49 70 69 -272 1 50 49 70 71 -273 1 49 50 51 72 -274 1 49 50 51 52 -275 1 53 50 51 72 -276 1 53 50 51 52 -277 1 49 50 53 28 -278 1 49 50 53 54 -279 1 51 50 53 28 -280 1 51 50 53 54 -281 1 50 51 72 71 -282 1 52 51 72 71 -283 1 50 51 52 55 -284 1 72 51 52 55 -285 1 51 52 55 54 -286 1 51 52 55 56 -287 1 28 53 54 55 -288 1 28 53 54 57 -289 1 50 53 54 55 -290 1 50 53 54 57 -291 1 53 54 55 52 -292 1 53 54 55 56 -293 1 57 54 55 52 -294 1 57 54 55 56 -295 1 53 54 57 32 -296 1 53 54 57 58 -297 1 55 54 57 32 -298 1 55 54 57 58 -299 1 52 55 56 59 -300 1 54 55 56 59 -301 1 55 56 59 58 -302 1 55 56 59 60 -303 1 32 57 58 61 -304 1 32 57 58 59 -305 1 54 57 58 61 -306 1 54 57 58 59 -307 1 57 58 61 36 -308 1 57 58 61 62 -309 1 59 58 61 36 -310 1 59 58 61 62 -311 1 57 58 59 56 -312 1 57 58 59 60 -313 1 61 58 59 56 -314 1 61 58 59 60 -315 1 56 59 60 63 -316 1 58 59 60 63 -317 1 59 60 63 62 -318 1 59 60 63 64 -319 1 36 61 62 65 -320 1 36 61 62 63 -321 1 58 61 62 65 -322 1 58 61 62 63 -323 1 61 62 65 40 -324 1 61 62 65 66 -325 1 63 62 65 40 -326 1 63 62 65 66 -327 1 61 62 63 60 -328 1 61 62 63 64 -329 1 65 62 63 60 -330 1 65 62 63 64 -331 1 60 63 64 67 -332 1 62 63 64 67 -333 1 63 64 67 66 -334 1 63 64 67 68 -335 1 40 65 66 69 -336 1 40 65 66 67 -337 1 62 65 66 69 -338 1 62 65 66 67 -339 1 65 66 69 44 -340 1 65 66 69 70 -341 1 67 66 69 44 -342 1 67 66 69 70 -343 1 65 66 67 64 -344 1 65 66 67 68 -345 1 69 66 67 64 -346 1 69 66 67 68 -347 1 64 67 68 71 -348 1 66 67 68 71 -349 1 67 68 71 70 -350 1 67 68 71 72 -351 1 44 69 70 49 -352 1 44 69 70 71 -353 1 66 69 70 49 -354 1 66 69 70 71 -355 1 49 70 71 68 -356 1 49 70 71 72 -357 1 69 70 71 68 -358 1 69 70 71 72 -359 1 68 71 72 51 -360 1 70 71 72 51 -361 38 73 81 86 76 -362 39 73 81 86 83 -363 40 73 81 86 87 -364 41 73 81 83 86 -365 42 73 81 83 84 -366 42 73 81 83 85 -367 46 73 78 76 86 -368 47 73 78 76 77 -369 48 73 78 76 92 -370 47 74 73 78 76 -371 71 74 73 78 79 -372 71 74 73 78 80 -373 53 74 73 81 86 -374 58 74 73 81 83 -375 67 74 73 81 82 -376 47 75 73 78 76 -377 71 75 73 78 79 -378 71 75 73 78 80 -379 53 75 73 81 86 -380 58 75 73 81 83 -381 67 75 73 81 82 -382 51 76 92 97 96 -383 20 76 92 97 88 -384 49 76 92 90 91 -385 50 76 92 90 89 -386 43 76 86 81 83 -387 44 76 86 81 82 -388 36 76 86 83 81 -389 45 76 86 83 84 -390 45 76 86 83 85 -391 30 76 78 73 81 -392 33 77 76 86 81 -393 64 77 76 86 83 -394 70 77 76 86 87 -395 71 77 76 78 79 -396 71 77 76 78 80 -397 25 77 76 92 97 -398 11 77 76 92 90 -399 32 78 76 86 81 -400 61 78 76 86 83 -401 62 78 76 86 87 -402 24 78 76 92 97 -403 10 78 76 92 90 -404 52 78 73 81 86 -405 57 78 73 81 83 -406 60 78 73 81 82 -407 55 79 78 76 86 -408 74 79 78 76 92 -409 31 79 78 73 81 -410 55 80 78 76 86 -411 74 80 78 76 92 -412 31 80 78 73 81 -413 34 81 86 76 92 -414 35 81 86 83 84 -415 35 81 86 83 85 -416 37 81 83 86 87 -417 63 82 81 86 83 -418 68 82 81 86 87 -419 56 82 81 83 86 -420 69 82 81 83 84 -421 69 82 81 83 85 -422 65 83 86 76 92 -423 59 83 81 86 87 -424 54 84 83 81 86 -425 73 84 83 86 87 -426 54 85 83 81 86 -427 73 85 83 86 87 -428 23 86 76 92 97 -429 9 86 76 92 90 -430 72 87 86 76 92 -431 17 88 98 99 100 -432 17 88 98 99 101 -433 12 88 98 93 94 -434 7 88 97 92 90 -435 14 88 97 96 94 -436 29 88 89 90 92 -437 28 88 89 90 91 -438 22 89 90 92 97 -439 75 89 88 98 99 -440 77 89 88 98 93 -441 76 89 88 97 92 -442 78 89 88 97 96 -443 8 90 92 97 96 -444 4 90 89 88 98 -445 16 90 89 88 97 -446 21 91 90 92 97 -447 15 92 97 96 94 -448 2 92 97 88 98 -449 66 93 98 99 100 -450 66 93 98 99 101 -451 19 93 98 88 97 -452 27 93 94 96 97 -453 13 94 93 98 99 -454 5 95 94 93 98 -455 26 95 94 96 97 -456 3 96 97 88 98 -457 6 96 94 93 98 diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/cnad-cnt.in b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/cnad-cnt.in deleted file mode 100644 index 1f403e2bd0..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/cnad-cnt.in +++ /dev/null @@ -1,49 +0,0 @@ -#Created by Aysun Itai and modified by Andrew Jewett -# NOTE: This file has been extensively modified. -# Only the bond connectivity and atomic positions are accurate. - -units real - -neigh_modify delay 2 every 1 - -atom_style full -bond_style harmonic -angle_style charmm -dihedral_style charmm -pair_style lj/charmm/coul/charmm 8.0 10.0 -pair_modify mix arithmetic - -read_data cnad-cnt.data - -pair_coeff 1 1 0.02 4.0 -pair_coeff 2 2 0.02 1.0 # atoms will not interact sterically -pair_coeff 3 3 0.02 2.0 # in this version of the file. -pair_coeff 4 4 0.02 2.0 # (All pair forces and atom names removed) -pair_coeff 5 5 0.02 2.0 -pair_coeff 6 6 0.02 3.0 -pair_coeff 7 7 0.02 3.0 -pair_coeff 8 8 0.02 3.0 -pair_coeff 9 9 0.02 4.0 -pair_coeff 10 10 0.02 4.0 -pair_coeff 11 11 0.02 4.0 -pair_coeff 12 12 0.02 4.0 -pair_coeff 13 13 0.02 3.0 -pair_coeff 14 14 0.02 3.0 -pair_coeff 15 15 0.02 3.0 -pair_coeff 16 16 0.02 3.0 - -group cnt type 1 -group cnad type 2:16 - -displace_atoms cnad move 0 -7 0 units box -special_bonds charmm - -velocity all create 0.0 54321 dist uniform - -thermo 1 -thermo_style multi -timestep 0.005 - -dump 1 all atom 10 cnad-cnt.dump - -run 20000 diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnad-cnt_after_rotate_copy.jpg b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnad-cnt_after_rotate_copy.jpg deleted file mode 100644 index 3b79b405ef778425d0007fc674e5b082a6200427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29386 zcmex=$<%PwSRFvdYWaQ-KK!z}~va+(XvGZ|o z@X3h?ipY@+{vTiv@+je&uIg_V(snT`Gb5e5T6 zMg}G(MivGZW=^P^7@3#_Sy+V>4cUYp1CyI1U7ZP0I18PUxlzQKYP zvm_1tY;L_bd{SmV>+|K0@=|*`51Y=dx_|l4;(wRp-d*`B-pd*ydL#f@_&w6y*DtECUh!Y?7p>r^X*lJBCU(p*<2{mn}7AH;Ui7Cti`gC z+WWTD$W;B|eMmTfbZz(1C37d6 z@7KIjC3r>Nsrjz><2%<3_P*oIkW`t&Ama6R-P$iL2XpdYa{gzCTrOz-JHGnqj|EfD zn*_MLOrJW@?f#bUJ52az2JHT}yLXaQwT#lr-_6DcdDt(MmOru6QY_zb{jQ3sc-H=6 z%N*aEy7m=B7ioFX6PpYQ9KW&%eu|l1c~!_;?~=I8&(-WrQa7Sk?{~ZI!zvoxzUTe- zpc3{6Rq_+x1jL`{Xz1wRz(ed)pM0qG)5Ljh)059L)~+pEKE-j_y2(NgeSPUU1!akv zN_`i3?M@sjSKWE)=0`S%+afw&PF;Md`7Bqv;7#>D$LfzlI}hCymSewR-TF}f!*`>d zb@`ot)z5zmKQHysI&u!@B+rW2tdhRsev=2nPt+%{S_GWqa7lWYI&mE@>%|lQ8OoQ* zYTvP|UODUAkK~Bg@>A5WU+CywtfZu%q{IXzG?uNu_U$)sa_*V*t>FSPKMwDVmaygS zpZQ6C+Rdr!A|LUVhRTb+-x#|4{m)yEXm!oh7vuVNA%5-FX{R@~BwI5EuxypUwO;3%ysUnj%d7geWrFPbg z-Tk*@IlgGmd6_pgM6`d&+O{gI6?0Fk7#nPSW9K4!Xp@QB($%ZhG_^UYwuQIN%R8a| ztLuHy?o%&bYe!|=c(b)fW{t%=_u`L%r+y!mW#;H-J-qAZqvWUC?>t?;NM_^K1zWpj z?|r2_z4&C`4M)TMSodim(US2I@cJ8vv=;eDIaQ(p5zgHzXbe6dcAc(zSbH!0)9LFs;_<^_To6}3gP z-Y?F*`c=|spV4*Ut9RDvKKuFU`LpdO@MN?m%XOwMRz+N8Y+JvUrXCX8ZNa$XbpK)9 z+xtQ)?z|J*OhkK=-8JM2^DK_y_kZIXFL=FbC^y+_w-Z*Pox;)Im;HLeIE052Y8+`fn zOtzZ!0+;oX-Ku&EE?m#fjn|HPRqiR%!oRwj-8go?kKm6~cJ0Hyp{CYL+c?vB(~VC{ z#h$V`XT>VJ`&ygHyS48)WbQkh<7_hrtVbJ()?QOs1M&0&!{e6zdU{xza8U; zv%j8w{Ig)cQ}nVI^NNl?-FM^T{1W*q>~Cd$RX$#>RcdOTE)v$|e*FXk!|``VY>i*O zFnqOm+w9=P%OQc`zW!O89Jy=f_3_R=eWhIW_&!gS=e8%KW`EnWV5`HcXda%%#mU;+ z3%@!h9WDE?BqdxU+T**q%^`a45QE>LK2JfS@|C+g6$>NTIMJty8~XP?u~ zJhyA}mVGPvvLlX5N^U5%p8MYTYRgxN-}~DHa=yN6xOD5<#EWrn&zQ>0*?8>`vzF4Q zr*&4$`}o{vXwR;wWmtN}?^EY4Z2+q!sF(_vh5- z>+gC$_WSLf5cPd-Z2Gnku6W^FYVw&ACOF%vTd-eDy}6Zl+lxxYDaZ8+l&3Que|Y21 zRQ^?etUZ=yXGQ&L7q3{jJnhSYzpo!%uTy4nS9qc8n!aHFjn_KcJy@=kPLx=h_`3N{ zr9gq>8wc&Kt^cO1zhHH2(b32=zlwae1W&Tt#pIFQXZP)f@|nuSl4WzQiv~G@%+-W z)~$wH?x@Xbyx=19Q@+i#A!WL7gPpd1ikKjhA2k_xY0*Rwq7P z+TIo`{KaSguI--JBhu#2{36_`nB4ca&-a8}^tBc(DZkL455jg74 ztk9(9Dw4~aEOFu57QP0?3kpwpT^GOqW4}W1&clzHDieN$Ud)$i-(bJ$O_|+}^PzK7 z_gOAoeng?KkG)`5*<)At!bQ`%_Dz#omFccC(d)po9aT*$?kN;B?Yj1J-7Ncgt9q)> zZ5Q&{*kJzQj;Fr-rt(kE9CuxgTCpk2_H#wi8=Jr#1)nP3*_(!DeD5@Es4ie$9pkQH zaoqBS)p~2+yJspB^|EJG#vIRaly&5O?r1$b@WA8!rk=J{zfY)vvuf(U1%FRF=3eF7 zo>`IcGD>lRq>ZQXd->Y?2lIby{CC0oujB7&_B<8AW-FVdufE%SaI@{Fijoi3uhX9v zO7DJWK0`jZ@8&6vxs%SW*n0Ksm2FnV<}Dx6R!+UM(TVf-xzArDtz~$p+5Wm;e<_^p z!Ye6GO}Rfmf}YRPba;2Yw?A-u;M@bT*;(5!+**6#_S-ERgDyGTi+I$#BipU`_ep!x z-$e@+?!36K@3Fgoq|bkbts)=WxBTflVd;0bqPQSZ?OtSH_MA;uB(qd)E}d2=?q69D z&Mv&e(Kl&(NEWYoVNJ+}+EiEB;Dd}y{xj^ZyKDR{c2c#>1C8u8X1~^om+#!!m+Gsm zRFY!R_Tjzwb@IQ_O|m{zj^cgfz|vbzHS#67F@X&EFs0G7|FKi;&f||jFL@< zV)@*EANzgwj|amqp`B`35wUVEzUL2?t$OyiaMA0z>)&lL>sUOqf5pd$J8eZj8tkXn zZm`_A{fAcH+Wg58r|+)#`u4K?e6CrX%eKWnShK9MD804O0P=RM|6JN%I&i@Q+N)~)i{CiqH-dtSk<9`Oh(}9cE^KA*)v}#(64Ug%Q z^yj;#xd*!zC;wfg@zm(=a>1SFYZh$y*Y9HO8anMi!{6rZ$Be%QYRiVnXzh&p@|NY> z$|p62zCmeS;d$4d_T+2Y?mJifdjHxvmt-zHo8TzPQttSx``ogM%mp=Hg*Iu-FnYfC z21C`<@N7F(PyJ5E<&M2eKF!+BU-6$IpzO!|39vzTeTrK3Y2Uc^R8!`S}OiL#};4eKxvy&L*SEInQ_N zRlX|uq%U?4a z3_j0T#d%ouS!J0mUu=)O>bVf}lPNP!sbQn9*(|l zljiu)Jn{J>bM`0YKegOuuC+0~Qgc}OaP#(h$r*pHK0bQ?KSS^P*!l&s#=qWv3R&AW z<@(F2*TxGcbiLgsR4^z9Js=AbEw!ME2AT4h0VP zSMQpC_r;Q1<)N0p+O&0@)6c9`+-H6(yFu@D&jk1Ri*9eT%`^YzwVmtgn)4-jw#WV~ zThXz_8EmI$YKZ;YxQG84I{E)IaEs1bdHU!lEj`^kiQmdS9_lzeXlwlH6SB9ub^h$5 zKO?m7=Kg1xzk8XsYwk{u(u2R2|7Qp-E?co+`KtZCCU5n1ZkWv7&sy<1Hqa||8fU^Z zql*)tevA>IDu2=uH zpHq>0;;hH=vI{#O3wRusc4qdwA#v!)kqPZvD1{~YM`rbwVlCt5iB`N|ck>e{ne(wweaOWxt( zkNy2qL|k{?x9bhptxHWeWoPY{aXc_Gt9P$`R<&x`L5@j_7KImW?3FoJ_=%CFIV5XW z*QUoRd)CNG@f~!}-FExkvS*X-GT(GL{>d{^LCI|11Nl8~%H(Dq3t8>=;n2E=0;{f= zs%dg>x@EEVS=;0HJLGo0xx3fjG2c12|EIcVYU7!nU=Q!p%HJa{Uudu|;&NK;n3Wwj zzih#RyOnlGN!@v11 zYj*11edb%wPS|>Q*M=|qR!-tPa=}kw=8fmKb*Av0lkfW*%C9nATK8JE@3X!tsbA$q zr+LmEZlCy-eT8z8IhSMBZn4LFH(9^e@4joAXr`5==IpJIIYao|%fjaC3-apHnU{IQ z7g?QNoN4=>Z`s2h#)fFA^*Xbr?P{94mFJ_B%yEu;?lDhfueu zD$Dff*O6H&HCIg~znnYhYLUNk`RuMR&Y9{eYWpls_dCf{`p4ZU4DjljHG9sps6{T7 zx9sh^ZoK@tx9dMc-l{~N4_e6;whV_G9q+z?4~ki8eRhvrvi0n-(?N&DTLWHd&atu+ z7fLSpnft;~cIx5fuWzsTa$8P@H&?m*b3uH)$6S?stMD&>Sq*A0UEtZ7d3e76HMgHK zwF~dxRj6Gf)$N=evBp&3s_oN<@0yGyMNC=t(cwjqwcMnzvSh+E2e&J6EB%nNJ}1$_)uj0toYe_U&)n^ugo&D zKBCvA)#q-MW_x&=o3I_s$VrYE_q~$92y0{>v{>{~4a8KPr5kGkO2zmp^U3 zvhCayr5*2-QtInd?Qvpb$N7nNb=^YqJFdAu@Z=3i`Fc3Y;m>um3o*+k*^5Q0PRiu0 z=`U10S9oXgGtZ!C)@9!-doKkXd30@#^^CduB4X=&j#e*I_x$?k(K@|1Q|Di;b6)%9 z&5X0rk5Bx*Xq|sRbfVhY%WE3WdU1YE;+|(xqSG%D{POD>?H28m)q<`B}1+5w|1}D(XX=b%9o;D_t|XUSX8|KV|U_5 z{_C5e-(}sEyJx$d=aE~duBU!p%T(s*xx$H0ChvQFY|+LZ_JT#JCo8t+_)UC2TUXa~ z$?GqXF{W#U?nJ%~U9+57zohSesrj~7Ufz8>wwdMgg&((X7d~L??d^E`@rRiA&ec=G z+&#TzHlH^>tkk78eeXM4hKxItpRBKA&!~QCdn2pY-B*>f&*+v`B%g}vfp*)+?|v_7 zxV-Pl1OsESIngyIwkQSn=g$=D=bkGly6ObD%^1SB?E8-M#p?O%dvc2Zz3loI^SAE& zU*)^+3U}BpTGN(4q0%8gX1@Ntf~eHUGHR zn_r&0xMcoC-)`P}>t=qwd^;<(bARUBo(XoU3C^Om(~r)oxXaCP@O0a&rx$LPP1?!8 zc>DCl%q_h(p*9|yTulm391eIccH+XbIfh4aYMoYf{<4`bK09aUV%9~bn*JBhd&aKK zU4Ny#EB(^0U1po6Nt)HGRnB?Nck^)J=Ws5imx6*X-?X?y!kUFKpT8_!Te54>)x48W zmM=C=mc93h@9(!By|xf`*%z6sEG7!8_a5DJ;gF|w?f2gOEFz{yZ)C>(3Tk^Cn7#Ar z#lS1RJT~iA&zv~vM)EmE^=+PiI$!YV%q=}!ZMx5c*EF?U zU(DNefBU&_RuL{!O@+)>9x1l+3v!NnRLxLT^1XkitX-mg-dIq}f(o#zxxdo%7HU%b<>n zs*kw4r>Gl$f#1=5lW@-WzxqXYP4ep2<=&oSA$M8fhy08G3|ov}-iUO|} zpiOG;)H06z{QR-*qP ze5Oia+m7~(OH%9oPs*)b*4KOS_>63$iz+VPyL|HZ+1_j45p#LD?v)Ss=KH@D3Oy+6 zn36xu;Lx}B9B)SpyP1lSyPkdbE#7j`+0~@C;lxYT#^Z|X7}zG%@fEE%`DgFvdCKhD z;{OagS?3;QxaR9B9VK-w*o481A$ifVS8J}GTeJ3x?)EGGj=tK;lNKLVvyiLGzpS47 zJEi2r*^@`*zs~Y`|L5-ho&FZCuI_~oeRX+DRZK-T?^-zNs50|xg^%;El!FEp>aH~g zYDZtNdHitd8#bBCPn>3F=*UEvQ?`ye&Ld zi~nW*%9r-8fiERkimqBYMp|!E6S&~azIg5#|J?SsdNbCVZt<~txOH{Ktkt=eB|Bo? z96Rst@al|(*#3X-|NIF%eq)u+!?n9_#Yro&nV;}iP$@Za+v4Y%bt1Ms3mRuKBqywS zo1C?5^`&5!^saPo!NVMP`;Hxd61MT9o{!~jwTZX?*2jN&>)&ORc>1PE-~ILXzy4>4 z3gzGL%y2|!Nw@r}177DZOI^#VI{En9&PsVX@8}IGvimCoW{34(``#Cvf9ZN<#D9j( z$}jIq^M9M$_;cm7c@O3bs?FK8jJtG0QQoVr1)q1`VU#HQ`S)Oiu!GAZ@bhXg-S>cl2yFTaHvwD3#sxo!EbxVlYu1c*{OAAs8 zk6BH=e4)l`M@c?|-q!V9>m%+;x^prf>*~GpN&aR@`(62)&%S7JFT1DluE3K+F!90D zeeZ0;6OVjU@tKe#bK&9Vh*?L@-MCVnQIgklIm&7Bfep77EG?cPt@7j9teCpp=bqPo zynKRH!6h;UT;97xz4b0%zA<9eyQ|8Em)*~vo>Ocw$8_i0Ne(|3T>K~<=$W-RbzhTT z)T@c#+9MXfd*AuOE`8JL+rIv+cHWiF?z7HpKWX}ERrcA8iEpR*oHvksD%*a5hkw%5 zk4)>D8t+Vdbw6{t?s-EAg`c8Z^RxcFd2vZ}&AK|l3jPysmfm;w^?z%X9rALgDsSPk zX`7}zX_wis_4l6{Znj>_zOrV&6V2<9FUfm6|D;Ljy==CHZM$?2JWJ_4$@p=H*xuch zTPA*v&7X8r`J?HTsuFqrWd2LjlPAC1AiC`0xeq_4CYKridC-5fPyT4`j`C1{v6(xK zBBd_dI3MD(c>Y7zZidYq*Nw9KuQS|fydtpp+aXb_bg}8(*LKbL^YkJ|$EJDUL4Poz zrQetP^pUUd#)j7=(T~?(JGI``t?)r|M+o1u%(J@;Pv5D{nf;O}-lV>p{}K zEwX#R>&@KEq$}d^*zUYsfq~tL7Y2qu6i&Oiu<~EGvA+Ck`MgCDzPu;iX=fhbSC^1^ zy!hDRb^ly6n-re&Nd^X8zy4b{$7faNMQfYG>(~RIEWCE&Hs9*iU1rlZS-q6HIOmOA z!SX$t&vO4Baz69mq-B51+)oR>+xFam_ zaP5|#`|AIdue#r*{`0McZSCBhe?%uA3~=Ywjby35{PjP>@rkUKs}9IS?P1$I`R9k* zlc%fm-j~~3eBbij_Bp9Z3PF$`#lR-YEJHhZfd*0~;@C0+S>zTjYb=P}gYSRtw*BQ@p zV+{GfFI{+GL)EmMH@-5IpL(uqT~?wmbEHQ`pj!0Ow2p7HkDTond-id=k8Gi%_mbD^ zzCK+$t7*zLN=wXvtF zbN87`JTllI?yFv8yp8SVXY~uKAGiN8xLjqn^6Hg&SL5S~q(h^g?fuAP;LIGwT)gkc zxhLt;TDw22&VFAfYX0zA{`*7eUdNC7iWFJTe4D^$dCo(6y^E`hp(_`Mc zTOK=R)|>FBOxYZ^FJr#sX&Jf7&dhg4{=VC8vR_p^(o^mudcDf8?8?jPn70`jwJPq+ z5^^s-#k6{H?{s!lnb=^xZtjJxn*(3YE@kiZR=IHC+CKIjN50L;W3=S6Z{nP#6Y+Yn zwZF`i$ zfAG%Pf2S^lY}k76@y2k!MT?hTi4nUb&Str0N8nl2JwJ>1@^*Yl=Kt2!xw*YuYDQ1n zu8BPd?JMTrS#nu+eZ0W2FDEWlbsjn_lV87|f9K9u*7fBl^GiZ6-~Q2_*x8p+zimU4 zpPBT;AE}NnOO8Ih?iRTwz`uC)%p1JDa~3W>d)y-9s|xFd7{!MwQeLa9pFZ0Vqi-`K zA>l~KO^Jg1a=FDb9w%Skb=l-sXTO2dWf#|@6A|lcf@12P{)@QPq4(^Y?Qy*uANkDx z)a#p;t#W?J6YIM=XDVOjhb7CZ8I^Ok{;B7D=dLa`d3tKz+D&%LZ}D8&VE*^LvBLq| z2HlfCdQuk5EmRM@{pH>C)zj7`sLc~U?k{lMq+gkt;hW^0Rm#ohbEKM>m75(hStj@7 zY_VGOyXeaF&b;lBJ(KpQnbgj>Wo5c}!#|bDJ5@7p7nu~Bo~g|H>-eJS(aK9D;@rLd zFRONS#Y-MJlAQ7M=j5sBk?RGcU#!f?GyK8RXLelH+xA7A6oYjCraJ4~>zfvr?Au$= zx#hZA*9@!FyG|Q*wzHk~e{?HLGT86^c3-vM3R|L_XUSaRP*&)Bu~4k*(MiM16(3Z7 zfBQA5#`yXh`Q6vIKU-3E`>tuM`zD{0n%WE}n-ZI9e)_xfe{PX>iI|=}RdiMF)zYuL zO^Vz6!{rsMCch9ZUtzlS*fU?-xtjtm%l0gn)BYzr%TD@Ni|BX$)wA=~)CNDA=6K@S z*0p(@>gR36&+1LfUKbS8axP_(Us`nxW8QNMS+S2Bg92R7DrOw}5qQ^e)#BcDDS8YF zw?6W%liIZ+p8IEWBClOSYw`!Hhwf%=OSc`@_%_Sk`_Zv7i;}*I0=c;F@iyzy*6%+Z z9ujqu@Alj)^POK+?e;w;bt=+ZwdX<4n}>IopAnI+z8!T=`yR85?7vBc=MBo9Jo)nV z?UfSiwbzCEf5rL#G5hy)<&x@mQH!3IO;g)=b*kRXwS3Q>vb-^VvF+C!*Ix!ddRf|X z-aTZ!yZpwFHD*7a6wmn z{KOqsoBiwV{%4SFP)V;tT+Me1urGV*PI>YzJ z8OMu4_B|}v9lv_MYx?4q>sLJ~{-Yrg&1C@jZc-?wLC39czj>&QM*o?JUu^`Gr=!j zuy&X2xEQrUW!;XDOB)4h*xy$EY_R- zZrG=Gqmmb$y}9)BgCDuc8=j@_t3MHE z5`N1{%G{YVXX+Y>n)dIlua|5&`#bhd$5Oqf#&t)&UNYB7U+m^?y_enZN8o$UrMpwb z)vS}ZTsv`h+dgjHTUK4^&phVH3f6IEo;&_%jd#3|@=D&+OI=bu55ybWYeIYOiDWpZ z_uaPb(&}^E>pkyb!1vrqDVgls3JmV;kO-LTc%aPi+DC6`OLUEb~!LiMe_3oO*Y|6MwFKvg(w$FLH?6<9xT*pY-dpT+e48n|Xa! z=8-#VLW2(RT@^__-qZ8dX7`r*2-e40*Goe_?45XhZ?D4E!!twf_fOiqHFsmmnzxsx zaeuWvv?wdsIOfN3}kU zVo&d{FUPzN_lx%w-hXS(5~nHq@7g3Ky?2L{6rSo9I_1uK^wsIvC$=z;Z~QkZpXdLZ z&MLKr`5xD?$4B`$epJe8Fk82*t9}NX{eK4kv*A;d@7XOZp6%l|uX^Iu&5zFJRQ1cR z|CzUC?dcN=u*MgDI+QQP7j+_9 ze9Nu5Z*z+qo_#oAr|kH4``*5%%@-rIpM@Dk%opj+p7Cwk&Lt@VRZU!c5u5KPFWJT! z|9-zjHha;Qa;crKSKSW}d9(K}!;6bg#P?o0Ydi0I!R8&F+ACJ2v@Vz4x$yYZ8($^t zO_#1;m6K~}aftuat7XS7@46HmeD(fnUtLX}&LtI>cT{iee^k@-r_ZYU$a$X02bLxN zx_QS;uKCO_?fAAD>z!GILX`JxbVzzrtAD2T7R$Xk=p3*DtUR5)zxsGn#D7w zAGc&k*l*pu{gzzi!H{k1E|;3^ZhvvtGvDND%+9v5`P=Lx`{gt8FMs6F;k91-_Pd)A z_YOfHvz#|K{#?1cHT6qx-#)Wg4ZAmMf9HHX^(?Eax^?;MsK=q+{~0O{RL-!^s26;C z)8|L^s&$6foMmmE99C}jD0{GAgMOgdvbUzrtF^Qe*#%Dqe2S57-1geNY=2OI+cTG_ z80+C3q4(ZBOtM^>t-ie6{@ig>Tw5U#HIee&FUr{%h5JXXTc%oes*{ zZa-&cft_}6=C<(r&vK?3OG%l_Oy80EUVf8xjsJ1hxIK0cbSK?s&Mqxkw3**^v4U8}r?n;iro?|JW|A?O1)#a@GvKJ%`_$e{1)9oHJp${xz>& z<6^_u;97<^RZit8K~Fv(-F3!|>>C3V z)E2A|@ZIhArv5emd&iWQs}CmMc+=z_P`$EeecSuuZ9(qS-9tk~{Nx;Vu%|zr>VF|* znuTp^bc|H**I(CeKHhppz|5;Jc%wyP#-BU}udY2J!JSf4x7V)Sa4_6t%hZr_#Vc1WV%TNm#-Z>v^MFe3g*>sOQtOhV zb*GO`<^C$WYu0h*Oz*vGnjcLs`KcQ>Z9}~2+uMg0=S+y6@h9ZECD5s?>5eFJ5a`$`J?;r zY_Ux(XN_&UUR?ZIdSOfP8#8|S+I{VXH(HHdPewhyTe|$KUC+vI(nmD~JhzliczWTK zP4mW$pV`@;?z$Ls^|AE2gO6lmS@}A5UyFH>w0>#Z%=5J-Yxr_nY9~0}ew$o(H(cnj z_G~-0v+9XYmKE-l*FRLxKlRh{t%eI)ubXphc+QskeCkdMS%--4-m8^5E(h^*DQ>hq ze>5#)*7>xZmru@Ncq8Am9}cg}nycEZ1%+1m2Poyolo$~)B; z*cF@QzWY{L9d&d4&TpG02K-9zvg%9ojxE{|RAeA@s{B&hCVz)#@A#+3&)Q*9w_x#= zYZ7`_Dzf9Jos>88@t2LNKkvj}D$K4gmpSYD9pmZ!HHAC##P&tYPKvr1tvm0&YOtqL zda%JB;VYk$t=Beb`oUHmFRzlt!$dJ6^_*&h&)v<^!}5GU32^Tox%G8 zO9hL}tuH^3pKo;gV}0OdK4pJD?`PjMl-sB7I2_|{dH?)9`KDXZ??a~i(#mdWy}mF7E@seOsExGv7Zh+Bhr9_r{+?Yky3PNnM@a_Mvj_oaUPu8hWJy6F60>G)=y4z3y>z`qS&G z%kS?f{eJOg^H1%P*;7)#yZ8KT6sdo-=4eQ*#Ja+(FS=HVTXe08TJ$r*-EHrJE&p`O zAFM6i^#(G61zYOkc+P6YhQhX&58E2wu6_CZ)SZ8o@iw7bFNEAnDfzO|VrRp2#-_5* z((CW$%C{cl-psvobEx#@zZo|Qf37*FnqR8^PvY+hg9_~hZ>qW;JdaVHaPjsnm2YnS zt7o1oZg_6zJbiinG=6tSkpQO?3Y`;OrJW;=nV7C+UcgYoHRqR^SjF_RN%x9nDn1{m znfdqer*I>tBYUECzjxPc`#o1BG-Okcoh93S!8?Li1b5hqMJYVLr&92#R=s=ax~-d| zRp+=V&X}m8@}zcWr0>&oF0Q!{g(>#o6P(zW9~=HEsp3 z;lE4v`#)d*&+uMD-NxrX!>i~28F=cRW)wI{EPS|j>%~JS?kYd4XYsLFrd2?Q#c-I!bchSZPyM*rUeYWHIY`Ymh*L6Ie z`JZ8P)w}tZ9k2XnIGX=xW%Xg_9Yy|X9y^W{_dLE^_HSOiiR2&4Ew_~}f47=;;qYT4 z!;{K0&pi9Xd8cODe}-nC;vY>i*BK<;wdcMvy7>H=`>bm(lzX*HZv1WBb-Tc)|LL2X z8J62mHgCK4r}{s`N!B~i`FZf7Wg9(_Dc`xcy0}iXY`H3Er5RCWxlTg)gZ3=b{Y>kp zW#oxlr=IFtciWR^s(n<<&7Tt7J1d<%^bWk@IQd50Uw`J}zKnRDHT=DAb&LI-_>L$F zFPC|7yLi>oW~A zZj0v`S@%#C={FwP9qju9o3HQMzA|gk>WdHO*(5ER`|wR>!L#EF{)o(cmNx6#`$H+8 zH=j+Ld(ZB4;yK>T;ywmR)q-v7ukc^lb?^NO8QIg(LC=rKUfsxFW>D+Q?0<U3P2o znmuYOb_7_So%iBe&}AE;OZP>WOs{N`ka1rpu6Wsa>ca3M^$#x(^HkmnR$IBEw97hP zCAZIbf^)g{qPm_dTMG-GUY#1avv=LvNfpN57xQK_{)u>hVqL<M-S$8YVd`-e~ejp3be>J+Clx7C(u6VHA+SLZEk z)w@}6=j9oBrMbJaRxdqeeCE`tm#Jw#zsG!Xf7+_^$Ys&}#k$uX6g)Sdd(g$CbKAbI z%2%tSSuU6xZut9X>#yq}XDhN|ka5^y;T~4t?IW_4ta^TVHC-<)lup z%33*BUH8hR<}+p86Xf#!>vQ*f+{pG=S&3ch{^zLZbr1KB6z}#7 z6nS&ba&bYypJ|_k<5O3gUb}aqW5X42$UzC2mq!dw9`jzm$NzfpocR&Skun|!cQpTJ z;M`p^&0gr+W7#Xs`#b&b|6|EEj(4U~DlYd$7KCm}NbJ_F0aEF5HxtE-8pRYfx^~S-)MZnHV_)ljV=YNKnZi_Pe=#M|@ zi=N*#-L`PD7d!NyK@^E@TgrY+OwoO7e_@FqX&p1QBT_kPY_r1^4D_I>Slfx9QJ zRr%EMPxAr4wI=z&hqq}kk4GA zyPx^?e}=fMyZf#^@ArMu|9e8L2Yf{ZxJa=q?*C|a@F>^Gh1trvha^_bJXLEcQ+Q*# z;qhk+4PIqUli7LX*HiBukF`tXh4RiMmLyG{HqBi2d&2#vXJS^pZr$|SdAhgHcZ1q* z)rUX5{OnnLI&y28;;y}Mul0j3Up{HGZs{`CvpqXLwa;5F&mca3gVVDosmm``WLC@! z;+(8oZpJ4%rNl&k^T9~jlMhaQYwVDz%Wi#S>wV_a&Wi`P=R{>MyZ++%lH^razDCWe zxbs5y?1#+LZO77kPuS(A$G_gPt}nokE&8SIF8Q08p2e*(>t-I8EIw!T_*

    Nx$n+ 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 Bm*)Tg diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnad-cnt_orig.jpg b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnad-cnt_orig.jpg deleted file mode 100644 index 1f46c1b7b258a494ea68e3975e5919bc7361dccc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19144 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 diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnad.jpg b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/cnad.jpg deleted file mode 100644 index 628371b0d71ce1c5b062d97fb13cd8b6bccca029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18403 zcmex=$<%PwSRFvdYWaQ-KK!z}~va+(XvGZ|o z@X3h?ipY@+{vTive%#vZKPowbG0m{C-19r+ONbLueMGR z%gdFMoJj zbK*Yz?aix?Kg--$VtVO6gOmK~b&3;DJbGGKE%8#_F=@x^UB`C#msT!Y%u>?W_hat- z_cnt6_(Pq8qP4cp+qpHd7jC}2_#>pm z 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 diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_after_rotate_and_copy.psf b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_after_rotate_and_copy.psf deleted file mode 100644 index 7b2b066767..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_after_rotate_and_copy.psf +++ /dev/null @@ -1,598 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 130 !NATOM - 1 1 1 1 0.000000 10.0000 0 - 2 1 1 1 0.000000 10.0000 0 - 3 1 1 1 0.000000 10.0000 0 - 4 1 1 1 0.000000 10.0000 0 - 5 1 1 1 0.000000 10.0000 0 - 6 1 1 1 0.000000 10.0000 0 - 7 1 1 1 0.000000 10.0000 0 - 8 1 1 1 0.000000 10.0000 0 - 9 1 1 1 0.000000 10.0000 0 - 10 1 1 1 0.000000 10.0000 0 - 11 1 1 1 0.000000 10.0000 0 - 12 1 1 1 0.000000 10.0000 0 - 13 1 1 1 0.000000 10.0000 0 - 14 1 1 1 0.000000 10.0000 0 - 15 1 1 1 0.000000 10.0000 0 - 16 1 1 1 0.000000 10.0000 0 - 17 1 1 1 0.000000 10.0000 0 - 18 1 1 1 0.000000 10.0000 0 - 19 1 1 1 0.000000 10.0000 0 - 20 1 1 1 0.000000 10.0000 0 - 21 1 1 1 0.000000 10.0000 0 - 22 1 1 1 0.000000 10.0000 0 - 23 1 1 1 0.000000 10.0000 0 - 24 1 1 1 0.000000 10.0000 0 - 25 1 1 1 0.000000 10.0000 0 - 26 1 1 1 0.000000 10.0000 0 - 27 1 1 1 0.000000 10.0000 0 - 28 1 1 1 0.000000 10.0000 0 - 29 1 1 1 0.000000 10.0000 0 - 30 1 1 1 0.000000 10.0000 0 - 31 1 1 1 0.000000 10.0000 0 - 32 1 1 1 0.000000 10.0000 0 - 33 1 1 1 0.000000 10.0000 0 - 34 1 1 1 0.000000 10.0000 0 - 35 1 1 1 0.000000 10.0000 0 - 36 1 1 1 0.000000 10.0000 0 - 37 1 1 1 0.000000 10.0000 0 - 38 1 1 1 0.000000 10.0000 0 - 39 1 1 1 0.000000 10.0000 0 - 40 1 1 1 0.000000 10.0000 0 - 41 1 1 1 0.000000 10.0000 0 - 42 1 1 1 0.000000 10.0000 0 - 43 1 1 1 0.000000 10.0000 0 - 44 1 1 1 0.000000 10.0000 0 - 45 1 1 1 0.000000 10.0000 0 - 46 1 1 1 0.000000 10.0000 0 - 47 1 1 1 0.000000 10.0000 0 - 48 1 1 1 0.000000 10.0000 0 - 49 1 1 1 0.000000 10.0000 0 - 50 1 1 1 0.000000 10.0000 0 - 51 1 1 1 0.000000 10.0000 0 - 52 1 1 1 0.000000 10.0000 0 - 53 1 1 1 0.000000 10.0000 0 - 54 1 1 1 0.000000 10.0000 0 - 55 1 1 1 0.000000 10.0000 0 - 56 1 1 1 0.000000 10.0000 0 - 57 1 1 1 0.000000 10.0000 0 - 58 1 1 1 0.000000 10.0000 0 - 59 1 1 1 0.000000 10.0000 0 - 60 1 1 1 0.000000 10.0000 0 - 61 1 1 1 0.000000 10.0000 0 - 62 1 1 1 0.000000 10.0000 0 - 63 1 1 1 0.000000 10.0000 0 - 64 1 1 1 0.000000 10.0000 0 - 65 1 1 1 0.000000 10.0000 0 - 66 1 1 1 0.000000 10.0000 0 - 67 1 1 1 0.000000 10.0000 0 - 68 1 1 1 0.000000 10.0000 0 - 69 1 1 1 0.000000 10.0000 0 - 70 1 1 1 0.000000 10.0000 0 - 71 1 1 1 0.000000 10.0000 0 - 72 1 1 1 0.000000 10.0000 0 - 73 2 9 9 -0.180000 10.0000 0 - 74 2 4 4 0.090000 10.0000 0 - 75 2 4 4 0.090000 10.0000 0 - 76 2 9 9 -0.090000 10.0000 0 - 77 2 4 4 0.090000 10.0000 0 - 78 2 10 10 -0.180000 10.0000 0 - 79 2 5 5 0.090000 10.0000 0 - 80 2 5 5 0.090000 10.0000 0 - 81 2 11 11 -0.090000 10.0000 0 - 82 2 4 4 0.090000 10.0000 0 - 83 2 10 10 -0.180000 10.0000 0 - 84 2 5 5 0.090000 10.0000 0 - 85 2 5 5 0.090000 10.0000 0 - 86 2 12 12 -0.090000 10.0000 0 - 87 2 4 4 0.090000 10.0000 0 - 88 2 8 8 0.280000 10.0000 0 - 89 2 16 16 -0.710000 10.0000 0 - 90 2 7 7 0.340000 10.0000 0 - 91 2 3 3 0.120000 10.0000 0 - 92 2 14 14 -0.050000 10.0000 0 - 93 2 15 15 -0.740000 10.0000 0 - 94 2 7 7 0.500000 10.0000 0 - 95 2 3 3 0.130000 10.0000 0 - 96 2 15 15 -0.750000 10.0000 0 - 97 2 8 8 0.430000 10.0000 0 - 98 2 6 6 0.460000 10.0000 0 - 99 2 13 13 -0.770000 10.0000 0 - 100 2 2 2 0.380000 10.0000 0 - 101 2 2 2 0.380000 10.0000 0 - 102 3 9 9 -0.180000 10.0000 0 - 103 3 4 4 0.090000 10.0000 0 - 104 3 4 4 0.090000 10.0000 0 - 105 3 9 9 -0.090000 10.0000 0 - 106 3 4 4 0.090000 10.0000 0 - 107 3 10 10 -0.180000 10.0000 0 - 108 3 5 5 0.090000 10.0000 0 - 109 3 5 5 0.090000 10.0000 0 - 110 3 11 11 -0.090000 10.0000 0 - 111 3 4 4 0.090000 10.0000 0 - 112 3 10 10 -0.180000 10.0000 0 - 113 3 5 5 0.090000 10.0000 0 - 114 3 5 5 0.090000 10.0000 0 - 115 3 12 12 -0.090000 10.0000 0 - 116 3 4 4 0.090000 10.0000 0 - 117 3 8 8 0.280000 10.0000 0 - 118 3 16 16 -0.710000 10.0000 0 - 119 3 7 7 0.340000 10.0000 0 - 120 3 3 3 0.120000 10.0000 0 - 121 3 14 14 -0.050000 10.0000 0 - 122 3 15 15 -0.740000 10.0000 0 - 123 3 7 7 0.500000 10.0000 0 - 124 3 3 3 0.130000 10.0000 0 - 125 3 15 15 -0.750000 10.0000 0 - 126 3 8 8 0.430000 10.0000 0 - 127 3 6 6 0.460000 10.0000 0 - 128 3 13 13 -0.770000 10.0000 0 - 129 3 2 2 0.380000 10.0000 0 - 130 3 2 2 0.380000 10.0000 0 - - 166 !NBOND: bonds - 1 2 1 22 2 3 2 5 - 3 24 3 4 4 7 4 29 - 5 6 6 7 6 9 7 8 - 8 33 8 11 9 10 10 13 - 10 11 11 12 12 15 12 37 - 13 14 14 17 14 15 15 16 - 16 19 16 41 17 18 18 21 - 18 19 19 20 20 23 20 45 - 21 22 22 23 23 24 24 25 - 25 26 25 46 26 27 26 29 - 27 48 27 28 28 31 28 53 - 29 30 30 31 30 33 31 32 - 32 57 32 35 33 34 34 37 - 34 35 35 36 36 39 36 61 - 37 38 38 41 38 39 39 40 - 40 43 40 65 41 42 42 45 - 42 43 43 44 44 47 44 69 - 45 46 46 47 47 48 48 49 - 49 50 49 70 50 51 50 53 - 51 72 51 52 52 55 53 54 - 54 55 54 57 55 56 56 59 - 57 58 58 61 58 59 59 60 - 60 63 61 62 62 65 62 63 - 63 64 64 67 65 66 66 69 - 66 67 67 68 68 71 69 70 - 70 71 71 72 73 81 73 74 - 73 75 73 78 76 78 76 77 - 76 92 76 86 78 79 78 80 - 81 86 81 83 81 82 83 86 - 83 84 83 85 86 87 88 89 - 88 97 88 98 89 90 90 91 - 90 92 92 97 93 98 93 94 - 94 95 94 96 96 97 98 99 - 99 100 99 101 102 110 102 103 - 102 104 102 107 105 107 105 106 - 105 121 105 115 107 108 107 109 - 110 115 110 112 110 111 112 115 - 112 113 112 114 115 116 117 118 - 117 126 117 127 118 119 119 120 - 119 121 121 126 122 127 122 123 - 123 124 123 125 125 126 127 128 - 128 129 128 130 - - 312 !NTHETA: angles - 2 1 22 1 2 3 1 2 5 - 3 2 5 2 3 24 2 3 4 - 4 3 24 3 4 7 3 4 29 - 7 4 29 2 5 6 5 6 7 - 5 6 9 7 6 9 4 7 6 - 4 7 8 6 7 8 7 8 33 - 7 8 11 11 8 33 6 9 10 - 9 10 13 9 10 11 11 10 13 - 8 11 10 8 11 12 10 11 12 - 11 12 15 11 12 37 15 12 37 - 10 13 14 13 14 17 13 14 15 - 15 14 17 12 15 14 12 15 16 - 14 15 16 15 16 19 15 16 41 - 19 16 41 14 17 18 17 18 21 - 17 18 19 19 18 21 16 19 18 - 16 19 20 18 19 20 19 20 23 - 19 20 45 23 20 45 18 21 22 - 1 22 21 1 22 23 21 22 23 - 20 23 22 20 23 24 22 23 24 - 3 24 23 3 24 25 23 24 25 - 24 25 26 24 25 46 26 25 46 - 25 26 27 25 26 29 27 26 29 - 26 27 48 26 27 28 28 27 48 - 27 28 31 27 28 53 31 28 53 - 4 29 26 4 29 30 26 29 30 - 29 30 31 29 30 33 31 30 33 - 28 31 30 28 31 32 30 31 32 - 31 32 57 31 32 35 35 32 57 - 8 33 30 8 33 34 30 33 34 - 33 34 37 33 34 35 35 34 37 - 32 35 34 32 35 36 34 35 36 - 35 36 39 35 36 61 39 36 61 - 12 37 34 12 37 38 34 37 38 - 37 38 41 37 38 39 39 38 41 - 36 39 38 36 39 40 38 39 40 - 39 40 43 39 40 65 43 40 65 - 16 41 38 16 41 42 38 41 42 - 41 42 45 41 42 43 43 42 45 - 40 43 42 40 43 44 42 43 44 - 43 44 47 43 44 69 47 44 69 - 20 45 42 20 45 46 42 45 46 - 25 46 45 25 46 47 45 46 47 - 44 47 46 44 47 48 46 47 48 - 27 48 47 27 48 49 47 48 49 - 48 49 50 48 49 70 50 49 70 - 49 50 51 49 50 53 51 50 53 - 50 51 72 50 51 52 52 51 72 - 51 52 55 28 53 50 28 53 54 - 50 53 54 53 54 55 53 54 57 - 55 54 57 52 55 54 52 55 56 - 54 55 56 55 56 59 32 57 54 - 32 57 58 54 57 58 57 58 61 - 57 58 59 59 58 61 56 59 58 - 56 59 60 58 59 60 59 60 63 - 36 61 58 36 61 62 58 61 62 - 61 62 65 61 62 63 63 62 65 - 60 63 62 60 63 64 62 63 64 - 63 64 67 40 65 62 40 65 66 - 62 65 66 65 66 69 65 66 67 - 67 66 69 64 67 66 64 67 68 - 66 67 68 67 68 71 44 69 66 - 44 69 70 66 69 70 49 70 69 - 49 70 71 69 70 71 68 71 70 - 68 71 72 70 71 72 51 72 71 - 73 81 82 73 81 83 73 81 86 - 73 78 80 73 78 79 74 73 75 - 76 92 90 76 92 97 76 86 87 - 76 86 83 76 86 81 76 78 80 - 76 78 79 73 78 76 77 76 92 - 78 76 92 77 76 78 75 73 78 - 74 73 78 78 73 81 79 78 80 - 81 86 87 81 86 83 81 83 85 - 81 83 84 81 83 86 75 73 81 - 74 73 81 83 86 87 82 81 83 - 84 83 85 85 83 86 84 83 86 - 82 81 86 83 81 86 86 76 92 - 77 76 86 78 76 86 88 98 93 - 88 89 90 89 88 97 89 90 91 - 88 97 92 92 97 96 89 90 92 - 91 90 92 93 94 96 93 94 95 - 94 93 98 95 94 96 88 97 96 - 94 96 97 90 92 97 98 99 101 - 98 99 100 97 88 98 89 88 98 - 93 98 99 88 98 99 100 99 101 - 102 110 111 102 110 112 102 110 115 - 102 107 109 102 107 108 103 102 104 - 105 121 119 105 121 126 105 115 116 - 105 115 112 105 115 110 105 107 109 - 105 107 108 102 107 105 106 105 121 - 107 105 121 106 105 107 104 102 107 - 103 102 107 107 102 110 108 107 109 - 110 115 116 110 115 112 110 112 114 - 110 112 113 110 112 115 104 102 110 - 103 102 110 112 115 116 111 110 112 - 113 112 114 114 112 115 113 112 115 - 111 110 115 112 110 115 115 105 121 - 106 105 115 107 105 115 117 127 122 - 117 118 119 118 117 126 118 119 120 - 117 126 121 121 126 125 118 119 121 - 120 119 121 122 123 125 122 123 124 - 123 122 127 124 123 125 117 126 125 - 123 125 126 119 121 126 127 128 130 - 127 128 129 126 117 127 118 117 127 - 122 127 128 117 127 128 129 128 130 - - 554 !NPHI: dihedrals - 22 1 2 3 22 1 2 5 - 2 1 22 21 2 1 22 23 - 1 2 3 24 1 2 3 4 - 5 2 3 24 5 2 3 4 - 1 2 5 6 3 2 5 6 - 2 3 24 23 2 3 24 25 - 4 3 24 23 4 3 24 25 - 2 3 4 7 2 3 4 29 - 24 3 4 7 24 3 4 29 - 3 4 7 6 3 4 7 8 - 29 4 7 6 29 4 7 8 - 3 4 29 26 3 4 29 30 - 7 4 29 26 7 4 29 30 - 2 5 6 7 2 5 6 9 - 5 6 7 4 5 6 7 8 - 9 6 7 4 9 6 7 8 - 5 6 9 10 7 6 9 10 - 4 7 8 33 4 7 8 11 - 6 7 8 33 6 7 8 11 - 7 8 33 30 7 8 33 34 - 11 8 33 30 11 8 33 34 - 7 8 11 10 7 8 11 12 - 33 8 11 10 33 8 11 12 - 6 9 10 13 6 9 10 11 - 9 10 13 14 11 10 13 14 - 9 10 11 8 9 10 11 12 - 13 10 11 8 13 10 11 12 - 8 11 12 15 8 11 12 37 - 10 11 12 15 10 11 12 37 - 11 12 15 14 11 12 15 16 - 37 12 15 14 37 12 15 16 - 11 12 37 34 11 12 37 38 - 15 12 37 34 15 12 37 38 - 10 13 14 17 10 13 14 15 - 13 14 17 18 15 14 17 18 - 13 14 15 12 13 14 15 16 - 17 14 15 12 17 14 15 16 - 12 15 16 19 12 15 16 41 - 14 15 16 19 14 15 16 41 - 15 16 19 18 15 16 19 20 - 41 16 19 18 41 16 19 20 - 15 16 41 38 15 16 41 42 - 19 16 41 38 19 16 41 42 - 14 17 18 21 14 17 18 19 - 17 18 21 22 19 18 21 22 - 17 18 19 16 17 18 19 20 - 21 18 19 16 21 18 19 20 - 16 19 20 23 16 19 20 45 - 18 19 20 23 18 19 20 45 - 19 20 23 22 19 20 23 24 - 45 20 23 22 45 20 23 24 - 19 20 45 42 19 20 45 46 - 23 20 45 42 23 20 45 46 - 18 21 22 1 18 21 22 23 - 1 22 23 20 1 22 23 24 - 21 22 23 20 21 22 23 24 - 20 23 24 3 20 23 24 25 - 22 23 24 3 22 23 24 25 - 3 24 25 26 3 24 25 46 - 23 24 25 26 23 24 25 46 - 24 25 26 27 24 25 26 29 - 46 25 26 27 46 25 26 29 - 24 25 46 45 24 25 46 47 - 26 25 46 45 26 25 46 47 - 25 26 27 48 25 26 27 28 - 29 26 27 48 29 26 27 28 - 25 26 29 4 25 26 29 30 - 27 26 29 4 27 26 29 30 - 26 27 48 47 26 27 48 49 - 28 27 48 47 28 27 48 49 - 26 27 28 31 26 27 28 53 - 48 27 28 31 48 27 28 53 - 27 28 31 30 27 28 31 32 - 53 28 31 30 53 28 31 32 - 27 28 53 50 27 28 53 54 - 31 28 53 50 31 28 53 54 - 4 29 30 31 4 29 30 33 - 26 29 30 31 26 29 30 33 - 29 30 31 28 29 30 31 32 - 33 30 31 28 33 30 31 32 - 29 30 33 8 29 30 33 34 - 31 30 33 8 31 30 33 34 - 28 31 32 57 28 31 32 35 - 30 31 32 57 30 31 32 35 - 31 32 57 54 31 32 57 58 - 35 32 57 54 35 32 57 58 - 31 32 35 34 31 32 35 36 - 57 32 35 34 57 32 35 36 - 8 33 34 37 8 33 34 35 - 30 33 34 37 30 33 34 35 - 33 34 37 12 33 34 37 38 - 35 34 37 12 35 34 37 38 - 33 34 35 32 33 34 35 36 - 37 34 35 32 37 34 35 36 - 32 35 36 39 32 35 36 61 - 34 35 36 39 34 35 36 61 - 35 36 39 38 35 36 39 40 - 61 36 39 38 61 36 39 40 - 35 36 61 58 35 36 61 62 - 39 36 61 58 39 36 61 62 - 12 37 38 41 12 37 38 39 - 34 37 38 41 34 37 38 39 - 37 38 41 16 37 38 41 42 - 39 38 41 16 39 38 41 42 - 37 38 39 36 37 38 39 40 - 41 38 39 36 41 38 39 40 - 36 39 40 43 36 39 40 65 - 38 39 40 43 38 39 40 65 - 39 40 43 42 39 40 43 44 - 65 40 43 42 65 40 43 44 - 39 40 65 62 39 40 65 66 - 43 40 65 62 43 40 65 66 - 16 41 42 45 16 41 42 43 - 38 41 42 45 38 41 42 43 - 41 42 45 20 41 42 45 46 - 43 42 45 20 43 42 45 46 - 41 42 43 40 41 42 43 44 - 45 42 43 40 45 42 43 44 - 40 43 44 47 40 43 44 69 - 42 43 44 47 42 43 44 69 - 43 44 47 46 43 44 47 48 - 69 44 47 46 69 44 47 48 - 43 44 69 66 43 44 69 70 - 47 44 69 66 47 44 69 70 - 20 45 46 25 20 45 46 47 - 42 45 46 25 42 45 46 47 - 25 46 47 44 25 46 47 48 - 45 46 47 44 45 46 47 48 - 44 47 48 27 44 47 48 49 - 46 47 48 27 46 47 48 49 - 27 48 49 50 27 48 49 70 - 47 48 49 50 47 48 49 70 - 48 49 50 51 48 49 50 53 - 70 49 50 51 70 49 50 53 - 48 49 70 69 48 49 70 71 - 50 49 70 69 50 49 70 71 - 49 50 51 72 49 50 51 52 - 53 50 51 72 53 50 51 52 - 49 50 53 28 49 50 53 54 - 51 50 53 28 51 50 53 54 - 50 51 72 71 52 51 72 71 - 50 51 52 55 72 51 52 55 - 51 52 55 54 51 52 55 56 - 28 53 54 55 28 53 54 57 - 50 53 54 55 50 53 54 57 - 53 54 55 52 53 54 55 56 - 57 54 55 52 57 54 55 56 - 53 54 57 32 53 54 57 58 - 55 54 57 32 55 54 57 58 - 52 55 56 59 54 55 56 59 - 55 56 59 58 55 56 59 60 - 32 57 58 61 32 57 58 59 - 54 57 58 61 54 57 58 59 - 57 58 61 36 57 58 61 62 - 59 58 61 36 59 58 61 62 - 57 58 59 56 57 58 59 60 - 61 58 59 56 61 58 59 60 - 56 59 60 63 58 59 60 63 - 59 60 63 62 59 60 63 64 - 36 61 62 65 36 61 62 63 - 58 61 62 65 58 61 62 63 - 61 62 65 40 61 62 65 66 - 63 62 65 40 63 62 65 66 - 61 62 63 60 61 62 63 64 - 65 62 63 60 65 62 63 64 - 60 63 64 67 62 63 64 67 - 63 64 67 66 63 64 67 68 - 40 65 66 69 40 65 66 67 - 62 65 66 69 62 65 66 67 - 65 66 69 44 65 66 69 70 - 67 66 69 44 67 66 69 70 - 65 66 67 64 65 66 67 68 - 69 66 67 64 69 66 67 68 - 64 67 68 71 66 67 68 71 - 67 68 71 70 67 68 71 72 - 44 69 70 49 44 69 70 71 - 66 69 70 49 66 69 70 71 - 49 70 71 68 49 70 71 72 - 69 70 71 68 69 70 71 72 - 68 71 72 51 70 71 72 51 - 73 81 86 76 73 81 86 83 - 73 81 86 87 73 81 83 86 - 73 81 83 84 73 81 83 85 - 86 76 78 73 77 76 78 73 - 92 76 78 73 74 73 78 76 - 74 73 78 79 74 73 78 80 - 74 73 81 86 74 73 81 83 - 74 73 81 82 75 73 78 76 - 75 73 78 79 75 73 78 80 - 75 73 81 86 75 73 81 83 - 75 73 81 82 76 92 97 96 - 76 92 97 88 91 90 92 76 - 89 90 92 76 83 81 86 76 - 82 81 86 76 81 83 86 76 - 84 83 86 76 85 83 86 76 - 81 73 78 76 77 76 86 81 - 77 76 86 83 77 76 86 87 - 77 76 78 79 77 76 78 80 - 77 76 92 97 77 76 92 90 - 78 76 86 81 78 76 86 83 - 78 76 86 87 78 76 92 97 - 78 76 92 90 78 73 81 86 - 78 73 81 83 78 73 81 82 - 86 76 78 79 92 76 78 79 - 81 73 78 79 86 76 78 80 - 92 76 78 80 81 73 78 80 - 92 76 86 81 84 83 86 81 - 85 83 86 81 81 83 86 87 - 82 81 86 83 82 81 86 87 - 82 81 83 86 82 81 83 84 - 82 81 83 85 92 76 86 83 - 83 81 86 87 86 81 83 84 - 84 83 86 87 86 81 83 85 - 85 83 86 87 86 76 92 97 - 86 76 92 90 92 76 86 87 - 88 98 99 100 88 98 99 101 - 94 93 98 88 90 92 97 88 - 94 96 97 88 88 89 90 92 - 88 89 90 91 89 90 92 97 - 89 88 98 99 89 88 98 93 - 89 88 97 92 89 88 97 96 - 90 92 97 96 98 88 89 90 - 97 88 89 90 91 90 92 97 - 94 96 97 92 98 88 97 92 - 93 98 99 100 93 98 99 101 - 97 88 98 93 93 94 96 97 - 94 93 98 99 98 93 94 95 - 95 94 96 97 98 88 97 96 - 98 93 94 96 102 110 115 105 - 102 110 115 112 102 110 115 116 - 102 110 112 115 102 110 112 113 - 102 110 112 114 115 105 107 102 - 106 105 107 102 121 105 107 102 - 103 102 107 105 103 102 107 108 - 103 102 107 109 103 102 110 115 - 103 102 110 112 103 102 110 111 - 104 102 107 105 104 102 107 108 - 104 102 107 109 104 102 110 115 - 104 102 110 112 104 102 110 111 - 105 121 126 125 105 121 126 117 - 120 119 121 105 118 119 121 105 - 112 110 115 105 111 110 115 105 - 110 112 115 105 113 112 115 105 - 114 112 115 105 110 102 107 105 - 106 105 115 110 106 105 115 112 - 106 105 115 116 106 105 107 108 - 106 105 107 109 106 105 121 126 - 106 105 121 119 107 105 115 110 - 107 105 115 112 107 105 115 116 - 107 105 121 126 107 105 121 119 - 107 102 110 115 107 102 110 112 - 107 102 110 111 115 105 107 108 - 121 105 107 108 110 102 107 108 - 115 105 107 109 121 105 107 109 - 110 102 107 109 121 105 115 110 - 113 112 115 110 114 112 115 110 - 110 112 115 116 111 110 115 112 - 111 110 115 116 111 110 112 115 - 111 110 112 113 111 110 112 114 - 121 105 115 112 112 110 115 116 - 115 110 112 113 113 112 115 116 - 115 110 112 114 114 112 115 116 - 115 105 121 126 115 105 121 119 - 121 105 115 116 117 127 128 129 - 117 127 128 130 123 122 127 117 - 119 121 126 117 123 125 126 117 - 117 118 119 121 117 118 119 120 - 118 119 121 126 118 117 127 128 - 118 117 127 122 118 117 126 121 - 118 117 126 125 119 121 126 125 - 127 117 118 119 126 117 118 119 - 120 119 121 126 123 125 126 121 - 127 117 126 121 122 127 128 129 - 122 127 128 130 126 117 127 122 - 122 123 125 126 123 122 127 128 - 127 122 123 124 124 123 125 126 - 127 117 126 125 127 122 123 125 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_orig.psf b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_orig.psf deleted file mode 100644 index cb8d7eda97..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_orig.psf +++ /dev/null @@ -1,489 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 101 !NATOM - 1 2 1 1 0.000000 10.0000 0 - 2 2 1 1 0.000000 10.0000 0 - 3 2 1 1 0.000000 10.0000 0 - 4 2 1 1 0.000000 10.0000 0 - 5 2 1 1 0.000000 10.0000 0 - 6 2 1 1 0.000000 10.0000 0 - 7 2 1 1 0.000000 10.0000 0 - 8 2 1 1 0.000000 10.0000 0 - 9 2 1 1 0.000000 10.0000 0 - 10 2 1 1 0.000000 10.0000 0 - 11 2 1 1 0.000000 10.0000 0 - 12 2 1 1 0.000000 10.0000 0 - 13 2 1 1 0.000000 10.0000 0 - 14 2 1 1 0.000000 10.0000 0 - 15 2 1 1 0.000000 10.0000 0 - 16 2 1 1 0.000000 10.0000 0 - 17 2 1 1 0.000000 10.0000 0 - 18 2 1 1 0.000000 10.0000 0 - 19 2 1 1 0.000000 10.0000 0 - 20 2 1 1 0.000000 10.0000 0 - 21 2 1 1 0.000000 10.0000 0 - 22 2 1 1 0.000000 10.0000 0 - 23 2 1 1 0.000000 10.0000 0 - 24 2 1 1 0.000000 10.0000 0 - 25 2 1 1 0.000000 10.0000 0 - 26 2 1 1 0.000000 10.0000 0 - 27 2 1 1 0.000000 10.0000 0 - 28 2 1 1 0.000000 10.0000 0 - 29 2 1 1 0.000000 10.0000 0 - 30 2 1 1 0.000000 10.0000 0 - 31 2 1 1 0.000000 10.0000 0 - 32 2 1 1 0.000000 10.0000 0 - 33 2 1 1 0.000000 10.0000 0 - 34 2 1 1 0.000000 10.0000 0 - 35 2 1 1 0.000000 10.0000 0 - 36 2 1 1 0.000000 10.0000 0 - 37 2 1 1 0.000000 10.0000 0 - 38 2 1 1 0.000000 10.0000 0 - 39 2 1 1 0.000000 10.0000 0 - 40 2 1 1 0.000000 10.0000 0 - 41 2 1 1 0.000000 10.0000 0 - 42 2 1 1 0.000000 10.0000 0 - 43 2 1 1 0.000000 10.0000 0 - 44 2 1 1 0.000000 10.0000 0 - 45 2 1 1 0.000000 10.0000 0 - 46 2 1 1 0.000000 10.0000 0 - 47 2 1 1 0.000000 10.0000 0 - 48 2 1 1 0.000000 10.0000 0 - 49 2 1 1 0.000000 10.0000 0 - 50 2 1 1 0.000000 10.0000 0 - 51 2 1 1 0.000000 10.0000 0 - 52 2 1 1 0.000000 10.0000 0 - 53 2 1 1 0.000000 10.0000 0 - 54 2 1 1 0.000000 10.0000 0 - 55 2 1 1 0.000000 10.0000 0 - 56 2 1 1 0.000000 10.0000 0 - 57 2 1 1 0.000000 10.0000 0 - 58 2 1 1 0.000000 10.0000 0 - 59 2 1 1 0.000000 10.0000 0 - 60 2 1 1 0.000000 10.0000 0 - 61 2 1 1 0.000000 10.0000 0 - 62 2 1 1 0.000000 10.0000 0 - 63 2 1 1 0.000000 10.0000 0 - 64 2 1 1 0.000000 10.0000 0 - 65 2 1 1 0.000000 10.0000 0 - 66 2 1 1 0.000000 10.0000 0 - 67 2 1 1 0.000000 10.0000 0 - 68 2 1 1 0.000000 10.0000 0 - 69 2 1 1 0.000000 10.0000 0 - 70 2 1 1 0.000000 10.0000 0 - 71 2 1 1 0.000000 10.0000 0 - 72 2 1 1 0.000000 10.0000 0 - 73 1 9 9 -0.180000 10.0000 0 - 74 1 4 4 0.090000 10.0000 0 - 75 1 4 4 0.090000 10.0000 0 - 76 1 9 9 -0.090000 10.0000 0 - 77 1 4 4 0.090000 10.0000 0 - 78 1 10 10 -0.180000 10.0000 0 - 79 1 5 5 0.090000 10.0000 0 - 80 1 5 5 0.090000 10.0000 0 - 81 1 11 11 -0.090000 10.0000 0 - 82 1 4 4 0.090000 10.0000 0 - 83 1 10 10 -0.180000 10.0000 0 - 84 1 5 5 0.090000 10.0000 0 - 85 1 5 5 0.090000 10.0000 0 - 86 1 12 12 -0.090000 10.0000 0 - 87 1 4 4 0.090000 10.0000 0 - 88 1 8 8 0.280000 10.0000 0 - 89 1 16 16 -0.710000 10.0000 0 - 90 1 7 7 0.340000 10.0000 0 - 91 1 3 3 0.120000 10.0000 0 - 92 1 14 14 -0.050000 10.0000 0 - 93 1 15 15 -0.740000 10.0000 0 - 94 1 7 7 0.500000 10.0000 0 - 95 1 3 3 0.130000 10.0000 0 - 96 1 15 15 -0.750000 10.0000 0 - 97 1 8 8 0.430000 10.0000 0 - 98 1 6 6 0.460000 10.0000 0 - 99 1 13 13 -0.770000 10.0000 0 - 100 1 2 2 0.380000 10.0000 0 - 101 1 2 2 0.380000 10.0000 0 - - 134 !NBOND: bonds - 1 2 1 22 2 3 2 5 - 3 24 3 4 4 7 4 29 - 5 6 6 7 6 9 7 8 - 8 33 8 11 9 10 10 13 - 10 11 11 12 12 15 12 37 - 13 14 14 17 14 15 15 16 - 16 19 16 41 17 18 18 21 - 18 19 19 20 20 23 20 45 - 21 22 22 23 23 24 24 25 - 25 26 25 46 26 27 26 29 - 27 48 27 28 28 31 28 53 - 29 30 30 31 30 33 31 32 - 32 57 32 35 33 34 34 37 - 34 35 35 36 36 39 36 61 - 37 38 38 41 38 39 39 40 - 40 43 40 65 41 42 42 45 - 42 43 43 44 44 47 44 69 - 45 46 46 47 47 48 48 49 - 49 50 49 70 50 51 50 53 - 51 72 51 52 52 55 53 54 - 54 55 54 57 55 56 56 59 - 57 58 58 61 58 59 59 60 - 60 63 61 62 62 65 62 63 - 63 64 64 67 65 66 66 69 - 66 67 67 68 68 71 69 70 - 70 71 71 72 73 81 73 74 - 73 75 73 78 76 78 76 77 - 76 92 76 86 78 79 78 80 - 81 86 81 83 81 82 83 86 - 83 84 83 85 86 87 88 89 - 88 97 88 98 89 90 90 91 - 90 92 92 97 93 98 93 94 - 94 95 94 96 96 97 98 99 - 99 100 99 101 - - 252 !NTHETA: angles - 2 1 22 1 2 3 1 2 5 - 3 2 5 2 3 24 2 3 4 - 4 3 24 3 4 7 3 4 29 - 7 4 29 2 5 6 5 6 7 - 5 6 9 7 6 9 4 7 6 - 4 7 8 6 7 8 7 8 33 - 7 8 11 11 8 33 6 9 10 - 9 10 13 9 10 11 11 10 13 - 8 11 10 8 11 12 10 11 12 - 11 12 15 11 12 37 15 12 37 - 10 13 14 13 14 17 13 14 15 - 15 14 17 12 15 14 12 15 16 - 14 15 16 15 16 19 15 16 41 - 19 16 41 14 17 18 17 18 21 - 17 18 19 19 18 21 16 19 18 - 16 19 20 18 19 20 19 20 23 - 19 20 45 23 20 45 18 21 22 - 1 22 21 1 22 23 21 22 23 - 20 23 22 20 23 24 22 23 24 - 3 24 23 3 24 25 23 24 25 - 24 25 26 24 25 46 26 25 46 - 25 26 27 25 26 29 27 26 29 - 26 27 48 26 27 28 28 27 48 - 27 28 31 27 28 53 31 28 53 - 4 29 26 4 29 30 26 29 30 - 29 30 31 29 30 33 31 30 33 - 28 31 30 28 31 32 30 31 32 - 31 32 57 31 32 35 35 32 57 - 8 33 30 8 33 34 30 33 34 - 33 34 37 33 34 35 35 34 37 - 32 35 34 32 35 36 34 35 36 - 35 36 39 35 36 61 39 36 61 - 12 37 34 12 37 38 34 37 38 - 37 38 41 37 38 39 39 38 41 - 36 39 38 36 39 40 38 39 40 - 39 40 43 39 40 65 43 40 65 - 16 41 38 16 41 42 38 41 42 - 41 42 45 41 42 43 43 42 45 - 40 43 42 40 43 44 42 43 44 - 43 44 47 43 44 69 47 44 69 - 20 45 42 20 45 46 42 45 46 - 25 46 45 25 46 47 45 46 47 - 44 47 46 44 47 48 46 47 48 - 27 48 47 27 48 49 47 48 49 - 48 49 50 48 49 70 50 49 70 - 49 50 51 49 50 53 51 50 53 - 50 51 72 50 51 52 52 51 72 - 51 52 55 28 53 50 28 53 54 - 50 53 54 53 54 55 53 54 57 - 55 54 57 52 55 54 52 55 56 - 54 55 56 55 56 59 32 57 54 - 32 57 58 54 57 58 57 58 61 - 57 58 59 59 58 61 56 59 58 - 56 59 60 58 59 60 59 60 63 - 36 61 58 36 61 62 58 61 62 - 61 62 65 61 62 63 63 62 65 - 60 63 62 60 63 64 62 63 64 - 63 64 67 40 65 62 40 65 66 - 62 65 66 65 66 69 65 66 67 - 67 66 69 64 67 66 64 67 68 - 66 67 68 67 68 71 44 69 66 - 44 69 70 66 69 70 49 70 69 - 49 70 71 69 70 71 68 71 70 - 68 71 72 70 71 72 51 72 71 - 73 81 82 73 81 83 73 81 86 - 73 78 80 73 78 79 74 73 75 - 76 92 90 76 92 97 76 86 87 - 76 86 83 76 86 81 76 78 80 - 76 78 79 73 78 76 77 76 92 - 78 76 92 77 76 78 75 73 78 - 74 73 78 78 73 81 79 78 80 - 81 86 87 81 86 83 81 83 85 - 81 83 84 81 83 86 75 73 81 - 74 73 81 83 86 87 82 81 83 - 84 83 85 85 83 86 84 83 86 - 82 81 86 83 81 86 86 76 92 - 77 76 86 78 76 86 88 98 93 - 88 89 90 89 88 97 89 90 91 - 88 97 92 92 97 96 89 90 92 - 91 90 92 93 94 96 93 94 95 - 94 93 98 95 94 96 88 97 96 - 94 96 97 90 92 97 98 99 101 - 98 99 100 97 88 98 89 88 98 - 93 98 99 88 98 99 100 99 101 - - 457 !NPHI: dihedrals - 22 1 2 3 22 1 2 5 - 2 1 22 21 2 1 22 23 - 1 2 3 24 1 2 3 4 - 5 2 3 24 5 2 3 4 - 1 2 5 6 3 2 5 6 - 2 3 24 23 2 3 24 25 - 4 3 24 23 4 3 24 25 - 2 3 4 7 2 3 4 29 - 24 3 4 7 24 3 4 29 - 3 4 7 6 3 4 7 8 - 29 4 7 6 29 4 7 8 - 3 4 29 26 3 4 29 30 - 7 4 29 26 7 4 29 30 - 2 5 6 7 2 5 6 9 - 5 6 7 4 5 6 7 8 - 9 6 7 4 9 6 7 8 - 5 6 9 10 7 6 9 10 - 4 7 8 33 4 7 8 11 - 6 7 8 33 6 7 8 11 - 7 8 33 30 7 8 33 34 - 11 8 33 30 11 8 33 34 - 7 8 11 10 7 8 11 12 - 33 8 11 10 33 8 11 12 - 6 9 10 13 6 9 10 11 - 9 10 13 14 11 10 13 14 - 9 10 11 8 9 10 11 12 - 13 10 11 8 13 10 11 12 - 8 11 12 15 8 11 12 37 - 10 11 12 15 10 11 12 37 - 11 12 15 14 11 12 15 16 - 37 12 15 14 37 12 15 16 - 11 12 37 34 11 12 37 38 - 15 12 37 34 15 12 37 38 - 10 13 14 17 10 13 14 15 - 13 14 17 18 15 14 17 18 - 13 14 15 12 13 14 15 16 - 17 14 15 12 17 14 15 16 - 12 15 16 19 12 15 16 41 - 14 15 16 19 14 15 16 41 - 15 16 19 18 15 16 19 20 - 41 16 19 18 41 16 19 20 - 15 16 41 38 15 16 41 42 - 19 16 41 38 19 16 41 42 - 14 17 18 21 14 17 18 19 - 17 18 21 22 19 18 21 22 - 17 18 19 16 17 18 19 20 - 21 18 19 16 21 18 19 20 - 16 19 20 23 16 19 20 45 - 18 19 20 23 18 19 20 45 - 19 20 23 22 19 20 23 24 - 45 20 23 22 45 20 23 24 - 19 20 45 42 19 20 45 46 - 23 20 45 42 23 20 45 46 - 18 21 22 1 18 21 22 23 - 1 22 23 20 1 22 23 24 - 21 22 23 20 21 22 23 24 - 20 23 24 3 20 23 24 25 - 22 23 24 3 22 23 24 25 - 3 24 25 26 3 24 25 46 - 23 24 25 26 23 24 25 46 - 24 25 26 27 24 25 26 29 - 46 25 26 27 46 25 26 29 - 24 25 46 45 24 25 46 47 - 26 25 46 45 26 25 46 47 - 25 26 27 48 25 26 27 28 - 29 26 27 48 29 26 27 28 - 25 26 29 4 25 26 29 30 - 27 26 29 4 27 26 29 30 - 26 27 48 47 26 27 48 49 - 28 27 48 47 28 27 48 49 - 26 27 28 31 26 27 28 53 - 48 27 28 31 48 27 28 53 - 27 28 31 30 27 28 31 32 - 53 28 31 30 53 28 31 32 - 27 28 53 50 27 28 53 54 - 31 28 53 50 31 28 53 54 - 4 29 30 31 4 29 30 33 - 26 29 30 31 26 29 30 33 - 29 30 31 28 29 30 31 32 - 33 30 31 28 33 30 31 32 - 29 30 33 8 29 30 33 34 - 31 30 33 8 31 30 33 34 - 28 31 32 57 28 31 32 35 - 30 31 32 57 30 31 32 35 - 31 32 57 54 31 32 57 58 - 35 32 57 54 35 32 57 58 - 31 32 35 34 31 32 35 36 - 57 32 35 34 57 32 35 36 - 8 33 34 37 8 33 34 35 - 30 33 34 37 30 33 34 35 - 33 34 37 12 33 34 37 38 - 35 34 37 12 35 34 37 38 - 33 34 35 32 33 34 35 36 - 37 34 35 32 37 34 35 36 - 32 35 36 39 32 35 36 61 - 34 35 36 39 34 35 36 61 - 35 36 39 38 35 36 39 40 - 61 36 39 38 61 36 39 40 - 35 36 61 58 35 36 61 62 - 39 36 61 58 39 36 61 62 - 12 37 38 41 12 37 38 39 - 34 37 38 41 34 37 38 39 - 37 38 41 16 37 38 41 42 - 39 38 41 16 39 38 41 42 - 37 38 39 36 37 38 39 40 - 41 38 39 36 41 38 39 40 - 36 39 40 43 36 39 40 65 - 38 39 40 43 38 39 40 65 - 39 40 43 42 39 40 43 44 - 65 40 43 42 65 40 43 44 - 39 40 65 62 39 40 65 66 - 43 40 65 62 43 40 65 66 - 16 41 42 45 16 41 42 43 - 38 41 42 45 38 41 42 43 - 41 42 45 20 41 42 45 46 - 43 42 45 20 43 42 45 46 - 41 42 43 40 41 42 43 44 - 45 42 43 40 45 42 43 44 - 40 43 44 47 40 43 44 69 - 42 43 44 47 42 43 44 69 - 43 44 47 46 43 44 47 48 - 69 44 47 46 69 44 47 48 - 43 44 69 66 43 44 69 70 - 47 44 69 66 47 44 69 70 - 20 45 46 25 20 45 46 47 - 42 45 46 25 42 45 46 47 - 25 46 47 44 25 46 47 48 - 45 46 47 44 45 46 47 48 - 44 47 48 27 44 47 48 49 - 46 47 48 27 46 47 48 49 - 27 48 49 50 27 48 49 70 - 47 48 49 50 47 48 49 70 - 48 49 50 51 48 49 50 53 - 70 49 50 51 70 49 50 53 - 48 49 70 69 48 49 70 71 - 50 49 70 69 50 49 70 71 - 49 50 51 72 49 50 51 52 - 53 50 51 72 53 50 51 52 - 49 50 53 28 49 50 53 54 - 51 50 53 28 51 50 53 54 - 50 51 72 71 52 51 72 71 - 50 51 52 55 72 51 52 55 - 51 52 55 54 51 52 55 56 - 28 53 54 55 28 53 54 57 - 50 53 54 55 50 53 54 57 - 53 54 55 52 53 54 55 56 - 57 54 55 52 57 54 55 56 - 53 54 57 32 53 54 57 58 - 55 54 57 32 55 54 57 58 - 52 55 56 59 54 55 56 59 - 55 56 59 58 55 56 59 60 - 32 57 58 61 32 57 58 59 - 54 57 58 61 54 57 58 59 - 57 58 61 36 57 58 61 62 - 59 58 61 36 59 58 61 62 - 57 58 59 56 57 58 59 60 - 61 58 59 56 61 58 59 60 - 56 59 60 63 58 59 60 63 - 59 60 63 62 59 60 63 64 - 36 61 62 65 36 61 62 63 - 58 61 62 65 58 61 62 63 - 61 62 65 40 61 62 65 66 - 63 62 65 40 63 62 65 66 - 61 62 63 60 61 62 63 64 - 65 62 63 60 65 62 63 64 - 60 63 64 67 62 63 64 67 - 63 64 67 66 63 64 67 68 - 40 65 66 69 40 65 66 67 - 62 65 66 69 62 65 66 67 - 65 66 69 44 65 66 69 70 - 67 66 69 44 67 66 69 70 - 65 66 67 64 65 66 67 68 - 69 66 67 64 69 66 67 68 - 64 67 68 71 66 67 68 71 - 67 68 71 70 67 68 71 72 - 44 69 70 49 44 69 70 71 - 66 69 70 49 66 69 70 71 - 49 70 71 68 49 70 71 72 - 69 70 71 68 69 70 71 72 - 68 71 72 51 70 71 72 51 - 73 81 86 76 73 81 86 83 - 73 81 86 87 73 81 83 86 - 73 81 83 84 73 81 83 85 - 86 76 78 73 77 76 78 73 - 92 76 78 73 74 73 78 76 - 74 73 78 79 74 73 78 80 - 74 73 81 86 74 73 81 83 - 74 73 81 82 75 73 78 76 - 75 73 78 79 75 73 78 80 - 75 73 81 86 75 73 81 83 - 75 73 81 82 76 92 97 96 - 76 92 97 88 91 90 92 76 - 89 90 92 76 83 81 86 76 - 82 81 86 76 81 83 86 76 - 84 83 86 76 85 83 86 76 - 81 73 78 76 77 76 86 81 - 77 76 86 83 77 76 86 87 - 77 76 78 79 77 76 78 80 - 77 76 92 97 77 76 92 90 - 78 76 86 81 78 76 86 83 - 78 76 86 87 78 76 92 97 - 78 76 92 90 78 73 81 86 - 78 73 81 83 78 73 81 82 - 86 76 78 79 92 76 78 79 - 81 73 78 79 86 76 78 80 - 92 76 78 80 81 73 78 80 - 92 76 86 81 84 83 86 81 - 85 83 86 81 81 83 86 87 - 82 81 86 83 82 81 86 87 - 82 81 83 86 82 81 83 84 - 82 81 83 85 92 76 86 83 - 83 81 86 87 86 81 83 84 - 84 83 86 87 86 81 83 85 - 85 83 86 87 86 76 92 97 - 86 76 92 90 92 76 86 87 - 88 98 99 100 88 98 99 101 - 94 93 98 88 90 92 97 88 - 94 96 97 88 88 89 90 92 - 88 89 90 91 89 90 92 97 - 89 88 98 99 89 88 98 93 - 89 88 97 92 89 88 97 96 - 90 92 97 96 98 88 89 90 - 97 88 89 90 91 90 92 97 - 94 96 97 92 98 88 97 92 - 93 98 99 100 93 98 99 101 - 97 88 98 93 93 94 96 97 - 94 93 98 99 98 93 94 95 - 95 94 96 97 98 88 97 96 - 98 93 94 96 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/run.in.nvt b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/run.in.nvt deleted file mode 100644 index abaa3a2254..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/run.in.nvt +++ /dev/null @@ -1,46 +0,0 @@ -########################################################### -# Interaction of a carbon nanotube with a pair of mystery -# molecules (extracted from the cnat-cnt.data/in files). -########################################################### -# -# define the system being simulated: - -# -- init section -- -include system.in.init - -# -- atom definition section -- - -read_data system.data - -# -- settings section -- - -include system.in.settings - -# -- run section -- - - -timestep 0.05 -dump 1 all custom 2000 traj_nvt.lammpstrj id mol type x y z ix iy iz - -# The Nose-Hoover thermostat used with "fix nvt" can produce very odd-looking -# dynamics in dilute systems with few atoms (such as this one). -# Commenting this next line out: - -# fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 - -# Alternately, I receive fewer questions if I use langevin/nve instead: -fix fxlan all langevin 300.0 300.0 1000.0 48279 scale 3 1.5 -fix fxnve all nve - - -thermo_style custom step temp pe etotal press vol epair ebond eangle edihed -thermo 500 # time interval for printing out "thermo" data -#thermo_modify flush yes - -#restart 1000000 restart_nvt - -run 500000 - -write_data system_after_nvt.data - - diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/system.lt b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/system.lt deleted file mode 100644 index 70fdb7548b..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/system.lt +++ /dev/null @@ -1,29 +0,0 @@ -#Define the CNT and CNAD molecules, by including the files which define them -import cnt.lt -import cnad.lt - -# The cnt's center was originally at position 10,10,10, -# so I moved it back to the origin -cnt = new CNT.move(-10,-10,-10) - -# Rotation around the center of mass does not work (yet), -# so instead you have to move the molecule to the origin, -# rotate it, and move it back to where you want it. -# That's why the next line contains move().rot().move() -# I'll add center-of-mass rotation as a later feature. - -cnad1 = new CNAD.move(0.611276,-0.0237931,-0.0487586).rot(90,0,1,0).move(-7,0,0) -cnad2 = new CNAD.move(0.611276,-0.0237931,-0.0487586).rot(-90,0,1,0).move(7,0,0) - - -# You can leave the periodic boundary conditions unspecified -# and change them later, OR you can declare them -# using the "write_once("Data Boundary") {}" command: - -write_once("Data Boundary") -{ - 0 50.0 xlo xhi - 0 50.0 ylo yhi - 0 50.0 zlo zhi -} - diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.TXT b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.TXT deleted file mode 100644 index 0e58ef44c7..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.TXT +++ /dev/null @@ -1,10 +0,0 @@ -This is a simple system of 260 water molecules. - -In this example, the coordinates of the atoms are read from a PDB file -instead of being specified manually (as well as the boundary information). - -The PDB file was generated by the useful "solvate" utility which comes with VMD. -(To generate this file yourself, run VMD, click on the "Extensions" menu, -and select Modeling-->Add Solvation Box. -In this example, I made a box whose x,y,z dimensions were 16,24,24.) - diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_run.sh b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_run.sh deleted file mode 100755 index 2944f68403..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_run.sh +++ /dev/null @@ -1,31 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation are ignored when beginning the simulation at constant volume. -# This can be fixed. Read "run.in.nvt" for equilibration instructions.) - - - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_setup.sh b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_setup.sh deleted file mode 100755 index 5d2be21331..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_setup.sh +++ /dev/null @@ -1,32 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - -cd moltemplate_files/ # (The .lt input files are in this directory) - - moltemplate.sh -pdb solvate.pdb system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ - - -# -#This will prepare LAMMPS input files for a box of water -#(In this example, we are using the "SPC/E" water model.) -#The number of water molecules in the "wat = new SPCE [260]" command -#must equal the number of water molecules in the PDB file. -# -#Coordinates and boundary-box information is read from the .pdb file. -# -#You can also specify this information directly in the ttree file. -#See the comments section in "system.lt" for details. -# diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_visualize.txt b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_visualize.txt deleted file mode 100644 index 8063d535f8..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_visualize.txt +++ /dev/null @@ -1,64 +0,0 @@ - ------- Instructions to view a trajectory in VMD -------- - - ------- Disclaimer ------- - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - - (Note, at this point the image shown in the VMD graphics window may - not appear correct or incomplete. The coordinates of the atoms may - overlap if you asked moltemplate.sh to load your coordinates from - a PDB or XYZ file. - However, later after you have run a simulation, the trajectories - should appear reasonably correct when you load them in VMD using - the PSF file you just generated.) - - -Later, to Load a trajectory in VMD: - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it - ------ Wrap the coordinates to the unit cell - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Enter: - - DISCLAIMER: I'M NOT SURE THESE COMMANDS ARE CORRECT. - LOOKUP "pbctools" FOR DETAILS. - - pbc wrap -compound res -all - pbc box - - # If you have a solute of type 1, then use this: - #pbc wrap -sel type=1 -all -centersel type=2 -center com - -"1" corresponds to the "O" atom type -"2" corresponds to the "H" atom type - -3) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types: - -sed -e 's/ 1 1 / O O /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > system.psf - -(If you do this, I guess that you might have to use - "type=O" and "type=H" in step 2 above.) diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/.0 b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/.0 deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/README.sh b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/README.sh deleted file mode 100755 index 4ebc7b17a3..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/README.sh +++ /dev/null @@ -1,11 +0,0 @@ - -# Run moltemplate this way: - -moltemplate.sh -pdb solvate.pdb system.lt - - -# The PDB file was generated by the "solvate" utility which comes with VMD. -# (To generate this file yourself, run VMD, click on the "Extensions" menu, -# and select Modeling-->Add Solvation Box. -# In this example, I made a box whose x,y,z dimensions were 16,24,24.) - diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/solvate.pdb b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/solvate.pdb deleted file mode 100644 index 0ed5103cbb..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/solvate.pdb +++ /dev/null @@ -1,782 +0,0 @@ -CRYST1 16.000 24.000 24.000 90.00 90.00 90.00 P 1 1 -ATOM 1 OH2 TIP3W 5 3.668 10.082 15.904 1.00 0.00 WT1 O -ATOM 2 H1 TIP3W 5 3.224 10.451 15.101 1.00 0.00 WT1 H -ATOM 3 H2 TIP3W 5 3.092 10.379 16.627 1.00 0.00 WT1 H -ATOM 4 OH2 TIP3W 7 6.033 4.876 20.891 1.00 0.00 WT1 O -ATOM 5 H1 TIP3W 7 6.078 5.224 21.798 1.00 0.00 WT1 H -ATOM 6 H2 TIP3W 7 6.592 4.088 20.961 1.00 0.00 WT1 H -ATOM 7 OH2 TIP3W 21 5.186 16.696 12.072 1.00 0.00 WT1 O -ATOM 8 H1 TIP3W 21 6.083 16.979 11.816 1.00 0.00 WT1 H -ATOM 9 H2 TIP3W 21 5.337 15.832 12.490 1.00 0.00 WT1 H -ATOM 10 OH2 TIP3W 29 8.324 13.811 21.332 1.00 0.00 WT1 O -ATOM 11 H1 TIP3W 29 8.633 13.348 22.112 1.00 0.00 WT1 H -ATOM 12 H2 TIP3W 29 8.506 13.116 20.645 1.00 0.00 WT1 H -ATOM 13 OH2 TIP3W 44 3.786 16.318 1.310 1.00 0.00 WT1 O -ATOM 14 H1 TIP3W 44 3.781 15.388 1.196 1.00 0.00 WT1 H -ATOM 15 H2 TIP3W 44 4.528 16.580 0.781 1.00 0.00 WT1 H -ATOM 16 OH2 TIP3W 46 6.205 6.991 18.442 1.00 0.00 WT1 O -ATOM 17 H1 TIP3W 46 6.782 7.347 19.152 1.00 0.00 WT1 H -ATOM 18 H2 TIP3W 46 5.309 7.062 18.800 1.00 0.00 WT1 H -ATOM 19 OH2 TIP3W 48 2.750 8.844 9.629 1.00 0.00 WT1 O -ATOM 20 H1 TIP3W 48 2.110 8.290 9.998 1.00 0.00 WT1 H -ATOM 21 H2 TIP3W 48 2.164 9.245 8.962 1.00 0.00 WT1 H -ATOM 22 OH2 TIP3W 52 3.935 16.195 22.109 1.00 0.00 WT1 O -ATOM 23 H1 TIP3W 52 4.870 16.034 21.985 1.00 0.00 WT1 H -ATOM 24 H2 TIP3W 52 3.655 15.367 22.581 1.00 0.00 WT1 H -ATOM 25 OH2 TIP3W 64 10.674 8.909 4.986 1.00 0.00 WT1 O -ATOM 26 H1 TIP3W 64 10.998 8.871 5.932 1.00 0.00 WT1 H -ATOM 27 H2 TIP3W 64 9.748 9.270 5.075 1.00 0.00 WT1 H -ATOM 28 OH2 TIP3W 67 0.002 5.667 14.591 1.00 0.00 WT1 O -ATOM 29 H1 TIP3W 67 0.483 5.990 13.830 1.00 0.00 WT1 H -ATOM 30 H2 TIP3W 67 0.608 5.781 15.347 1.00 0.00 WT1 H -ATOM 31 OH2 TIP3W 68 9.882 9.156 14.916 1.00 0.00 WT1 O -ATOM 32 H1 TIP3W 68 9.574 9.753 15.597 1.00 0.00 WT1 H -ATOM 33 H2 TIP3W 68 10.021 8.264 15.289 1.00 0.00 WT1 H -ATOM 34 OH2 TIP3W 87 1.661 6.681 1.943 1.00 0.00 WT1 O -ATOM 35 H1 TIP3W 87 1.943 5.739 1.981 1.00 0.00 WT1 H -ATOM 36 H2 TIP3W 87 0.778 6.599 1.483 1.00 0.00 WT1 H -ATOM 37 OH2 TIP3W 88 4.821 20.603 11.239 1.00 0.00 WT1 O -ATOM 38 H1 TIP3W 88 5.466 20.782 11.963 1.00 0.00 WT1 H -ATOM 39 H2 TIP3W 88 5.384 20.914 10.456 1.00 0.00 WT1 H -ATOM 40 OH2 TIP3W 90 15.022 20.855 12.831 1.00 0.00 WT1 O -ATOM 41 H1 TIP3W 90 14.222 20.809 13.292 1.00 0.00 WT1 H -ATOM 42 H2 TIP3W 90 14.673 21.057 11.918 1.00 0.00 WT1 H -ATOM 43 OH2 TIP3W 94 1.339 3.782 22.814 1.00 0.00 WT1 O -ATOM 44 H1 TIP3W 94 0.839 3.425 22.087 1.00 0.00 WT1 H -ATOM 45 H2 TIP3W 94 1.775 3.077 23.138 1.00 0.00 WT1 H -ATOM 46 OH2 TIP3W 95 0.485 15.137 22.476 1.00 0.00 WT1 O -ATOM 47 H1 TIP3W 95 0.644 15.425 23.349 1.00 0.00 WT1 H -ATOM 48 H2 TIP3W 95 0.312 15.961 21.975 1.00 0.00 WT1 H -ATOM 49 OH2 TIP3W 111 10.426 7.604 2.404 1.00 0.00 WT1 O -ATOM 50 H1 TIP3W 111 10.761 8.401 1.994 1.00 0.00 WT1 H -ATOM 51 H2 TIP3W 111 10.248 7.889 3.308 1.00 0.00 WT1 H -ATOM 52 OH2 TIP3W 113 4.269 22.752 16.265 1.00 0.00 WT1 O -ATOM 53 H1 TIP3W 113 4.149 23.680 15.888 1.00 0.00 WT1 H -ATOM 54 H2 TIP3W 113 5.061 22.796 16.776 1.00 0.00 WT1 H -ATOM 55 OH2 TIP3W 130 10.926 5.365 1.018 1.00 0.00 WT1 O -ATOM 56 H1 TIP3W 130 11.138 4.769 1.754 1.00 0.00 WT1 H -ATOM 57 H2 TIP3W 130 10.657 6.212 1.493 1.00 0.00 WT1 H -ATOM 58 OH2 TIP3W 133 8.647 4.314 19.278 1.00 0.00 WT1 O -ATOM 59 H1 TIP3W 133 7.964 3.611 19.326 1.00 0.00 WT1 H -ATOM 60 H2 TIP3W 133 8.043 5.064 19.153 1.00 0.00 WT1 H -ATOM 61 OH2 TIP3W 134 8.381 17.319 23.275 1.00 0.00 WT1 O -ATOM 62 H1 TIP3W 134 7.516 17.340 23.695 1.00 0.00 WT1 H -ATOM 63 H2 TIP3W 134 8.431 18.263 23.009 1.00 0.00 WT1 H -ATOM 64 OH2 TIP3W 150 4.299 17.774 7.169 1.00 0.00 WT1 O -ATOM 65 H1 TIP3W 150 3.303 17.803 7.322 1.00 0.00 WT1 H -ATOM 66 H2 TIP3W 150 4.533 18.755 6.924 1.00 0.00 WT1 H -ATOM 67 OH2 TIP3W 152 8.892 12.977 5.321 1.00 0.00 WT1 O -ATOM 68 H1 TIP3W 152 8.119 12.478 5.443 1.00 0.00 WT1 H -ATOM 69 H2 TIP3W 152 9.342 12.557 4.536 1.00 0.00 WT1 H -ATOM 70 OH2 TIP3W 167 2.174 18.468 2.212 1.00 0.00 WT1 O -ATOM 71 H1 TIP3W 167 2.632 17.628 2.203 1.00 0.00 WT1 H -ATOM 72 H2 TIP3W 167 2.931 19.120 2.281 1.00 0.00 WT1 H -ATOM 73 OH2 TIP3W 239 13.612 17.680 18.622 1.00 0.00 WT1 O -ATOM 74 H1 TIP3W 239 13.744 17.414 19.508 1.00 0.00 WT1 H -ATOM 75 H2 TIP3W 239 14.526 17.831 18.347 1.00 0.00 WT1 H -ATOM 76 OH2 TIP3W 443 9.935 12.876 10.191 1.00 0.00 WT1 O -ATOM 77 H1 TIP3W 443 9.709 12.098 9.634 1.00 0.00 WT1 H -ATOM 78 H2 TIP3W 443 9.472 12.766 11.018 1.00 0.00 WT1 H -ATOM 79 OH2 TIP3W 450 7.060 2.074 19.830 1.00 0.00 WT1 O -ATOM 80 H1 TIP3W 450 7.650 1.619 20.528 1.00 0.00 WT1 H -ATOM 81 H2 TIP3W 450 6.148 1.796 20.035 1.00 0.00 WT1 H -ATOM 82 OH2 TIP3W 465 13.891 1.919 2.992 1.00 0.00 WT1 O -ATOM 83 H1 TIP3W 465 14.198 2.681 3.422 1.00 0.00 WT1 H -ATOM 84 H2 TIP3W 465 13.212 1.577 3.578 1.00 0.00 WT1 H -ATOM 85 OH2 TIP3W 466 8.823 10.581 8.827 1.00 0.00 WT1 O -ATOM 86 H1 TIP3W 466 8.183 10.753 8.148 1.00 0.00 WT1 H -ATOM 87 H2 TIP3W 466 8.389 10.061 9.534 1.00 0.00 WT1 H -ATOM 88 OH2 TIP3W 469 9.078 11.967 12.734 1.00 0.00 WT1 O -ATOM 89 H1 TIP3W 469 8.228 11.561 12.993 1.00 0.00 WT1 H -ATOM 90 H2 TIP3W 469 9.512 12.194 13.560 1.00 0.00 WT1 H -ATOM 91 OH2 TIP3W 484 10.282 0.640 2.053 1.00 0.00 WT1 O -ATOM 92 H1 TIP3W 484 10.367 0.959 3.016 1.00 0.00 WT1 H -ATOM 93 H2 TIP3W 484 9.743 1.323 1.667 1.00 0.00 WT1 H -ATOM 94 OH2 TIP3W 485 4.618 8.125 7.777 1.00 0.00 WT1 O -ATOM 95 H1 TIP3W 485 5.405 7.919 8.314 1.00 0.00 WT1 H -ATOM 96 H2 TIP3W 485 4.002 8.458 8.422 1.00 0.00 WT1 H -ATOM 97 OH2 TIP3W 486 3.403 4.687 9.815 1.00 0.00 WT1 O -ATOM 98 H1 TIP3W 486 3.109 5.272 9.097 1.00 0.00 WT1 H -ATOM 99 H2 TIP3W 486 3.817 3.973 9.327 1.00 0.00 WT1 H -ATOM 100 OH2 TIP3W 489 3.276 7.465 19.325 1.00 0.00 WT1 O -ATOM 101 H1 TIP3W 489 2.772 6.991 19.964 1.00 0.00 WT1 H -ATOM 102 H2 TIP3W 489 3.604 8.288 19.753 1.00 0.00 WT1 H -ATOM 103 OH2 TIP3W 503 3.119 10.325 13.158 1.00 0.00 WT1 O -ATOM 104 H1 TIP3W 503 3.598 10.900 12.512 1.00 0.00 WT1 H -ATOM 105 H2 TIP3W 503 3.440 9.430 12.962 1.00 0.00 WT1 H -ATOM 106 OH2 TIP3W 506 2.378 5.806 16.253 1.00 0.00 WT1 O -ATOM 107 H1 TIP3W 506 2.157 6.161 17.099 1.00 0.00 WT1 H -ATOM 108 H2 TIP3W 506 3.301 6.032 16.126 1.00 0.00 WT1 H -ATOM 109 OH2 TIP3W 507 6.382 22.271 2.319 1.00 0.00 WT1 O -ATOM 110 H1 TIP3W 507 5.550 22.035 1.847 1.00 0.00 WT1 H -ATOM 111 H2 TIP3W 507 6.859 21.472 2.192 1.00 0.00 WT1 H -ATOM 112 OH2 TIP3W 509 4.017 3.905 19.418 1.00 0.00 WT1 O -ATOM 113 H1 TIP3W 509 3.142 4.042 19.132 1.00 0.00 WT1 H -ATOM 114 H2 TIP3W 509 4.582 4.727 19.295 1.00 0.00 WT1 H -ATOM 115 OH2 TIP3W 511 2.344 20.472 21.631 1.00 0.00 WT1 O -ATOM 116 H1 TIP3W 511 2.932 20.821 20.945 1.00 0.00 WT1 H -ATOM 117 H2 TIP3W 511 1.467 20.548 21.138 1.00 0.00 WT1 H -ATOM 118 OH2 TIP3W 517 14.526 10.532 20.137 1.00 0.00 WT1 O -ATOM 119 H1 TIP3W 517 14.162 9.733 20.503 1.00 0.00 WT1 H -ATOM 120 H2 TIP3W 517 14.466 10.420 19.194 1.00 0.00 WT1 H -ATOM 121 OH2 TIP3W 533 5.573 14.804 19.090 1.00 0.00 WT1 O -ATOM 122 H1 TIP3W 533 5.959 15.339 19.808 1.00 0.00 WT1 H -ATOM 123 H2 TIP3W 533 5.869 15.413 18.331 1.00 0.00 WT1 H -ATOM 124 OH2 TIP3W 543 5.458 13.097 4.589 1.00 0.00 WT1 O -ATOM 125 H1 TIP3W 543 5.673 13.019 3.612 1.00 0.00 WT1 H -ATOM 126 H2 TIP3W 543 4.899 13.894 4.657 1.00 0.00 WT1 H -ATOM 127 OH2 TIP3W 550 4.552 1.370 20.330 1.00 0.00 WT1 O -ATOM 128 H1 TIP3W 550 4.274 2.194 19.953 1.00 0.00 WT1 H -ATOM 129 H2 TIP3W 550 4.235 0.801 19.571 1.00 0.00 WT1 H -ATOM 130 OH2 TIP3W 554 5.160 13.744 7.954 1.00 0.00 WT1 O -ATOM 131 H1 TIP3W 554 6.048 13.422 8.207 1.00 0.00 WT1 H -ATOM 132 H2 TIP3W 554 5.008 14.493 8.528 1.00 0.00 WT1 H -ATOM 133 OH2 TIP3W 558 10.390 6.386 18.828 1.00 0.00 WT1 O -ATOM 134 H1 TIP3W 558 10.688 6.484 19.731 1.00 0.00 WT1 H -ATOM 135 H2 TIP3W 558 9.844 5.589 18.921 1.00 0.00 WT1 H -ATOM 136 OH2 TIP3W 562 1.678 21.942 1.035 1.00 0.00 WT1 O -ATOM 137 H1 TIP3W 562 1.272 21.280 1.592 1.00 0.00 WT1 H -ATOM 138 H2 TIP3W 562 1.498 22.809 1.493 1.00 0.00 WT1 H -ATOM 139 OH2 TIP3W 568 9.630 21.547 3.000 1.00 0.00 WT1 O -ATOM 140 H1 TIP3W 568 9.601 22.471 2.643 1.00 0.00 WT1 H -ATOM 141 H2 TIP3W 568 9.287 20.954 2.312 1.00 0.00 WT1 H -ATOM 142 OH2 TIP3W 575 2.344 10.571 2.624 1.00 0.00 WT1 O -ATOM 143 H1 TIP3W 575 2.122 10.753 3.553 1.00 0.00 WT1 H -ATOM 144 H2 TIP3W 575 2.947 9.791 2.617 1.00 0.00 WT1 H -ATOM 145 OH2 TIP3W 584 0.823 23.668 2.888 1.00 0.00 WT1 O -ATOM 146 H1 TIP3W 584 1.636 23.316 3.340 1.00 0.00 WT1 H -ATOM 147 H2 TIP3W 584 0.253 23.978 3.640 1.00 0.00 WT1 H -ATOM 148 OH2 TIP3W 594 2.710 6.185 7.540 1.00 0.00 WT1 O -ATOM 149 H1 TIP3W 594 2.467 6.236 6.561 1.00 0.00 WT1 H -ATOM 150 H2 TIP3W 594 3.410 6.855 7.580 1.00 0.00 WT1 H -ATOM 151 OH2 TIP3W 595 6.911 19.458 17.335 1.00 0.00 WT1 O -ATOM 152 H1 TIP3W 595 7.517 20.118 16.957 1.00 0.00 WT1 H -ATOM 153 H2 TIP3W 595 6.315 19.136 16.588 1.00 0.00 WT1 H -ATOM 154 OH2 TIP3W 613 13.540 22.220 2.748 1.00 0.00 WT1 O -ATOM 155 H1 TIP3W 613 12.965 22.475 3.462 1.00 0.00 WT1 H -ATOM 156 H2 TIP3W 613 14.428 22.404 3.074 1.00 0.00 WT1 H -ATOM 157 OH2 TIP3W 634 10.929 14.750 5.718 1.00 0.00 WT1 O -ATOM 158 H1 TIP3W 634 10.050 14.541 5.408 1.00 0.00 WT1 H -ATOM 159 H2 TIP3W 634 11.401 13.879 5.717 1.00 0.00 WT1 H -ATOM 160 OH2 TIP3W 822 0.747 4.469 10.579 1.00 0.00 WT1 O -ATOM 161 H1 TIP3W 822 0.426 3.568 10.339 1.00 0.00 WT1 H -ATOM 162 H2 TIP3W 822 1.505 4.585 9.990 1.00 0.00 WT1 H -ATOM 163 OH2 TIP3W 849 5.356 5.388 16.046 1.00 0.00 WT1 O -ATOM 164 H1 TIP3W 849 5.884 6.064 16.461 1.00 0.00 WT1 H -ATOM 165 H2 TIP3W 849 5.592 4.622 16.537 1.00 0.00 WT1 H -ATOM 166 OH2 TIP3W 867 10.704 6.721 15.883 1.00 0.00 WT1 O -ATOM 167 H1 TIP3W 867 10.901 6.912 16.836 1.00 0.00 WT1 H -ATOM 168 H2 TIP3W 867 10.127 5.972 15.998 1.00 0.00 WT1 H -ATOM 169 OH2 TIP3W 891 11.763 19.614 9.958 1.00 0.00 WT1 O -ATOM 170 H1 TIP3W 891 12.279 20.405 9.866 1.00 0.00 WT1 H -ATOM 171 H2 TIP3W 891 12.435 18.905 9.901 1.00 0.00 WT1 H -ATOM 172 OH2 TIP3W 906 7.027 2.224 13.411 1.00 0.00 WT1 O -ATOM 173 H1 TIP3W 906 6.185 2.801 13.535 1.00 0.00 WT1 H -ATOM 174 H2 TIP3W 906 6.692 1.403 13.742 1.00 0.00 WT1 H -ATOM 175 OH2 TIP3W 908 4.028 7.699 12.776 1.00 0.00 WT1 O -ATOM 176 H1 TIP3W 908 4.577 7.193 12.138 1.00 0.00 WT1 H -ATOM 177 H2 TIP3W 908 3.171 7.320 12.544 1.00 0.00 WT1 H -ATOM 178 OH2 TIP3W 924 12.493 9.451 2.215 1.00 0.00 WT1 O -ATOM 179 H1 TIP3W 924 12.908 9.840 2.987 1.00 0.00 WT1 H -ATOM 180 H2 TIP3W 924 12.982 8.641 2.039 1.00 0.00 WT1 H -ATOM 181 OH2 TIP3W 927 11.177 9.610 7.928 1.00 0.00 WT1 O -ATOM 182 H1 TIP3W 927 10.443 10.172 8.053 1.00 0.00 WT1 H -ATOM 183 H2 TIP3W 927 10.866 8.788 8.298 1.00 0.00 WT1 H -ATOM 184 OH2 TIP3W 928 1.838 3.206 15.398 1.00 0.00 WT1 O -ATOM 185 H1 TIP3W 928 2.201 4.081 15.545 1.00 0.00 WT1 H -ATOM 186 H2 TIP3W 928 2.117 2.999 14.422 1.00 0.00 WT1 H -ATOM 187 OH2 TIP3W 930 1.899 11.624 17.893 1.00 0.00 WT1 O -ATOM 188 H1 TIP3W 930 1.139 11.678 17.305 1.00 0.00 WT1 H -ATOM 189 H2 TIP3W 930 2.258 12.535 17.855 1.00 0.00 WT1 H -ATOM 190 OH2 TIP3W 932 9.220 13.904 17.340 1.00 0.00 WT1 O -ATOM 191 H1 TIP3W 932 10.062 14.198 17.738 1.00 0.00 WT1 H -ATOM 192 H2 TIP3W 932 9.394 12.999 17.102 1.00 0.00 WT1 H -ATOM 193 OH2 TIP3W 933 3.458 9.868 22.419 1.00 0.00 WT1 O -ATOM 194 H1 TIP3W 933 4.398 10.016 22.654 1.00 0.00 WT1 H -ATOM 195 H2 TIP3W 933 3.448 10.189 21.495 1.00 0.00 WT1 H -ATOM 196 OH2 TIP3W 947 15.430 3.274 7.407 1.00 0.00 WT1 O -ATOM 197 H1 TIP3W 947 15.458 2.741 8.157 1.00 0.00 WT1 H -ATOM 198 H2 TIP3W 947 15.933 2.740 6.770 1.00 0.00 WT1 H -ATOM 199 OH2 TIP3W 948 13.134 4.535 6.559 1.00 0.00 WT1 O -ATOM 200 H1 TIP3W 948 12.434 3.932 6.938 1.00 0.00 WT1 H -ATOM 201 H2 TIP3W 948 13.959 4.162 6.965 1.00 0.00 WT1 H -ATOM 202 OH2 TIP3W 951 10.295 14.066 14.320 1.00 0.00 WT1 O -ATOM 203 H1 TIP3W 951 10.592 14.067 15.226 1.00 0.00 WT1 H -ATOM 204 H2 TIP3W 951 9.322 14.226 14.350 1.00 0.00 WT1 H -ATOM 205 OH2 TIP3W 964 7.830 19.751 1.995 1.00 0.00 WT1 O -ATOM 206 H1 TIP3W 964 7.257 19.870 1.247 1.00 0.00 WT1 H -ATOM 207 H2 TIP3W 964 8.329 18.923 1.885 1.00 0.00 WT1 H -ATOM 208 OH2 TIP3W 972 15.027 11.249 9.806 1.00 0.00 WT1 O -ATOM 209 H1 TIP3W 972 15.636 10.953 9.104 1.00 0.00 WT1 H -ATOM 210 H2 TIP3W 972 14.929 12.194 9.545 1.00 0.00 WT1 H -ATOM 211 OH2 TIP3W 974 10.274 11.448 20.959 1.00 0.00 WT1 O -ATOM 212 H1 TIP3W 974 10.893 11.073 21.654 1.00 0.00 WT1 H -ATOM 213 H2 TIP3W 974 10.344 10.891 20.238 1.00 0.00 WT1 H -ATOM 214 OH2 TIP3W 975 11.473 6.075 21.702 1.00 0.00 WT1 O -ATOM 215 H1 TIP3W 975 12.046 5.667 22.431 1.00 0.00 WT1 H -ATOM 216 H2 TIP3W 975 10.554 5.939 22.100 1.00 0.00 WT1 H -ATOM 217 OH2 TIP3W 995 6.800 16.659 17.184 1.00 0.00 WT1 O -ATOM 218 H1 TIP3W 995 7.143 16.649 16.327 1.00 0.00 WT1 H -ATOM 219 H2 TIP3W 995 7.109 17.502 17.568 1.00 0.00 WT1 H -ATOM 220 OH2 TIP3W1007 14.603 18.110 3.213 1.00 0.00 WT1 O -ATOM 221 H1 TIP3W1007 14.275 17.655 3.963 1.00 0.00 WT1 H -ATOM 222 H2 TIP3W1007 13.842 18.606 2.878 1.00 0.00 WT1 H -ATOM 223 OH2 TIP3W1011 4.753 20.139 5.475 1.00 0.00 WT1 O -ATOM 224 H1 TIP3W1011 4.769 21.053 5.846 1.00 0.00 WT1 H -ATOM 225 H2 TIP3W1011 5.663 20.031 5.201 1.00 0.00 WT1 H -ATOM 226 OH2 TIP3W1013 1.615 17.355 14.355 1.00 0.00 WT1 O -ATOM 227 H1 TIP3W1013 1.225 16.480 14.420 1.00 0.00 WT1 H -ATOM 228 H2 TIP3W1013 0.859 17.984 14.051 1.00 0.00 WT1 H -ATOM 229 OH2 TIP3W1014 11.087 15.787 20.150 1.00 0.00 WT1 O -ATOM 230 H1 TIP3W1014 11.221 14.877 19.698 1.00 0.00 WT1 H -ATOM 231 H2 TIP3W1014 11.936 15.940 20.591 1.00 0.00 WT1 H -ATOM 232 OH2 TIP3W1017 9.784 18.060 16.439 1.00 0.00 WT1 O -ATOM 233 H1 TIP3W1017 10.576 18.166 15.922 1.00 0.00 WT1 H -ATOM 234 H2 TIP3W1017 9.941 18.584 17.234 1.00 0.00 WT1 H -ATOM 235 OH2 TIP3W1018 2.369 19.620 10.838 1.00 0.00 WT1 O -ATOM 236 H1 TIP3W1018 2.051 19.425 11.701 1.00 0.00 WT1 H -ATOM 237 H2 TIP3W1018 3.347 19.717 10.923 1.00 0.00 WT1 H -ATOM 238 OH2 TIP3W1027 15.158 15.218 1.453 1.00 0.00 WT1 O -ATOM 239 H1 TIP3W1027 15.286 16.123 1.160 1.00 0.00 WT1 H -ATOM 240 H2 TIP3W1027 14.175 15.219 1.587 1.00 0.00 WT1 H -ATOM 241 OH2 TIP3W1032 7.929 9.601 4.322 1.00 0.00 WT1 O -ATOM 242 H1 TIP3W1032 7.364 10.340 3.912 1.00 0.00 WT1 H -ATOM 243 H2 TIP3W1032 7.318 9.011 4.820 1.00 0.00 WT1 H -ATOM 244 OH2 TIP3W1053 11.585 23.121 19.455 1.00 0.00 WT1 O -ATOM 245 H1 TIP3W1053 12.413 23.205 19.982 1.00 0.00 WT1 H -ATOM 246 H2 TIP3W1053 10.816 23.266 20.095 1.00 0.00 WT1 H -ATOM 247 OH2 TIP3W1301 3.320 1.439 3.693 1.00 0.00 WT1 O -ATOM 248 H1 TIP3W1301 3.018 1.263 2.795 1.00 0.00 WT1 H -ATOM 249 H2 TIP3W1301 4.218 1.737 3.533 1.00 0.00 WT1 H -ATOM 250 OH2 TIP3W1308 8.378 22.836 14.074 1.00 0.00 WT1 O -ATOM 251 H1 TIP3W1308 9.127 23.085 13.478 1.00 0.00 WT1 H -ATOM 252 H2 TIP3W1308 7.806 23.652 14.112 1.00 0.00 WT1 H -ATOM 253 OH2 TIP3W1328 4.539 2.605 8.295 1.00 0.00 WT1 O -ATOM 254 H1 TIP3W1328 5.460 2.702 8.123 1.00 0.00 WT1 H -ATOM 255 H2 TIP3W1328 4.434 1.616 8.363 1.00 0.00 WT1 H -ATOM 256 OH2 TIP3W1344 8.883 21.581 5.760 1.00 0.00 WT1 O -ATOM 257 H1 TIP3W1344 8.705 22.232 6.446 1.00 0.00 WT1 H -ATOM 258 H2 TIP3W1344 9.357 22.008 5.077 1.00 0.00 WT1 H -ATOM 259 OH2 TIP3W1349 12.793 13.364 12.168 1.00 0.00 WT1 O -ATOM 260 H1 TIP3W1349 12.787 13.548 11.223 1.00 0.00 WT1 H -ATOM 261 H2 TIP3W1349 11.995 13.794 12.399 1.00 0.00 WT1 H -ATOM 262 OH2 TIP3W1352 6.667 7.547 9.646 1.00 0.00 WT1 O -ATOM 263 H1 TIP3W1352 6.103 6.975 10.296 1.00 0.00 WT1 H -ATOM 264 H2 TIP3W1352 7.558 7.292 10.046 1.00 0.00 WT1 H -ATOM 265 OH2 TIP3W1354 0.182 23.403 21.361 1.00 0.00 WT1 O -ATOM 266 H1 TIP3W1354 0.301 23.585 22.346 1.00 0.00 WT1 H -ATOM 267 H2 TIP3W1354 1.001 22.867 21.220 1.00 0.00 WT1 H -ATOM 268 OH2 TIP3W1355 11.347 16.007 23.148 1.00 0.00 WT1 O -ATOM 269 H1 TIP3W1355 11.779 15.126 23.087 1.00 0.00 WT1 H -ATOM 270 H2 TIP3W1355 10.586 15.923 22.581 1.00 0.00 WT1 H -ATOM 271 OH2 TIP3W1367 10.129 17.485 6.550 1.00 0.00 WT1 O -ATOM 272 H1 TIP3W1367 9.231 17.467 6.920 1.00 0.00 WT1 H -ATOM 273 H2 TIP3W1367 10.108 16.702 5.985 1.00 0.00 WT1 H -ATOM 274 OH2 TIP3W1370 4.654 5.717 5.023 1.00 0.00 WT1 O -ATOM 275 H1 TIP3W1370 5.059 5.126 4.395 1.00 0.00 WT1 H -ATOM 276 H2 TIP3W1370 5.409 5.785 5.634 1.00 0.00 WT1 H -ATOM 277 OH2 TIP3W1371 12.336 14.905 9.350 1.00 0.00 WT1 O -ATOM 278 H1 TIP3W1371 11.849 15.588 8.883 1.00 0.00 WT1 H -ATOM 279 H2 TIP3W1371 11.568 14.375 9.770 1.00 0.00 WT1 H -ATOM 280 OH2 TIP3W1374 5.488 14.255 13.212 1.00 0.00 WT1 O -ATOM 281 H1 TIP3W1374 6.279 14.126 13.709 1.00 0.00 WT1 H -ATOM 282 H2 TIP3W1374 4.864 13.991 13.878 1.00 0.00 WT1 H -ATOM 283 OH2 TIP3W1387 3.686 8.353 3.401 1.00 0.00 WT1 O -ATOM 284 H1 TIP3W1387 4.494 7.930 3.084 1.00 0.00 WT1 H -ATOM 285 H2 TIP3W1387 3.041 7.727 3.197 1.00 0.00 WT1 H -ATOM 286 OH2 TIP3W1388 15.005 14.526 19.133 1.00 0.00 WT1 O -ATOM 287 H1 TIP3W1388 15.742 13.941 19.238 1.00 0.00 WT1 H -ATOM 288 H2 TIP3W1388 14.746 14.453 18.188 1.00 0.00 WT1 H -ATOM 289 OH2 TIP3W1389 15.427 13.899 13.418 1.00 0.00 WT1 O -ATOM 290 H1 TIP3W1389 15.598 14.703 13.915 1.00 0.00 WT1 H -ATOM 291 H2 TIP3W1389 14.569 14.032 12.994 1.00 0.00 WT1 H -ATOM 292 OH2 TIP3W1392 15.117 16.342 15.320 1.00 0.00 WT1 O -ATOM 293 H1 TIP3W1392 14.190 16.658 15.235 1.00 0.00 WT1 H -ATOM 294 H2 TIP3W1392 15.725 17.080 14.950 1.00 0.00 WT1 H -ATOM 295 OH2 TIP3W1407 13.263 23.513 7.326 1.00 0.00 WT1 O -ATOM 296 H1 TIP3W1407 14.083 23.900 7.689 1.00 0.00 WT1 H -ATOM 297 H2 TIP3W1407 13.669 22.803 6.739 1.00 0.00 WT1 H -ATOM 298 OH2 TIP3W1411 10.030 11.441 3.434 1.00 0.00 WT1 O -ATOM 299 H1 TIP3W1411 9.274 10.827 3.422 1.00 0.00 WT1 H -ATOM 300 H2 TIP3W1411 10.533 11.362 2.661 1.00 0.00 WT1 H -ATOM 301 OH2 TIP3W1412 10.550 9.544 11.315 1.00 0.00 WT1 O -ATOM 302 H1 TIP3W1412 10.055 10.343 11.396 1.00 0.00 WT1 H -ATOM 303 H2 TIP3W1412 11.460 9.846 11.337 1.00 0.00 WT1 H -ATOM 304 OH2 TIP3W1414 2.005 17.796 21.122 1.00 0.00 WT1 O -ATOM 305 H1 TIP3W1414 2.773 17.325 21.598 1.00 0.00 WT1 H -ATOM 306 H2 TIP3W1414 2.173 18.758 21.265 1.00 0.00 WT1 H -ATOM 307 OH2 TIP3W1415 13.553 15.240 21.435 1.00 0.00 WT1 O -ATOM 308 H1 TIP3W1415 14.103 14.959 20.726 1.00 0.00 WT1 H -ATOM 309 H2 TIP3W1415 13.422 14.470 21.979 1.00 0.00 WT1 H -ATOM 310 OH2 TIP3W1418 11.456 2.350 19.585 1.00 0.00 WT1 O -ATOM 311 H1 TIP3W1418 10.731 2.931 19.730 1.00 0.00 WT1 H -ATOM 312 H2 TIP3W1418 11.546 1.862 20.401 1.00 0.00 WT1 H -ATOM 313 OH2 TIP3W1428 13.068 2.914 10.149 1.00 0.00 WT1 O -ATOM 314 H1 TIP3W1428 12.803 2.473 9.295 1.00 0.00 WT1 H -ATOM 315 H2 TIP3W1428 14.010 2.849 10.112 1.00 0.00 WT1 H -ATOM 316 OH2 TIP3W1429 5.450 9.067 5.337 1.00 0.00 WT1 O -ATOM 317 H1 TIP3W1429 4.722 8.840 4.711 1.00 0.00 WT1 H -ATOM 318 H2 TIP3W1429 4.939 8.770 6.117 1.00 0.00 WT1 H -ATOM 319 OH2 TIP3W1433 3.297 18.771 17.303 1.00 0.00 WT1 O -ATOM 320 H1 TIP3W1433 3.913 19.272 17.825 1.00 0.00 WT1 H -ATOM 321 H2 TIP3W1433 3.616 18.935 16.408 1.00 0.00 WT1 H -ATOM 322 OH2 TIP3W1435 6.597 15.954 21.463 1.00 0.00 WT1 O -ATOM 323 H1 TIP3W1435 7.157 15.160 21.200 1.00 0.00 WT1 H -ATOM 324 H2 TIP3W1435 7.205 16.451 22.021 1.00 0.00 WT1 H -ATOM 325 OH2 TIP3W1440 1.443 3.980 18.627 1.00 0.00 WT1 O -ATOM 326 H1 TIP3W1440 1.536 3.050 18.247 1.00 0.00 WT1 H -ATOM 327 H2 TIP3W1440 0.589 4.282 18.256 1.00 0.00 WT1 H -ATOM 328 OH2 TIP3W1451 3.248 22.876 3.701 1.00 0.00 WT1 O -ATOM 329 H1 TIP3W1451 2.662 22.334 4.248 1.00 0.00 WT1 H -ATOM 330 H2 TIP3W1451 4.106 22.410 3.781 1.00 0.00 WT1 H -ATOM 331 OH2 TIP3W1454 8.943 19.607 9.393 1.00 0.00 WT1 O -ATOM 332 H1 TIP3W1454 9.890 19.666 9.174 1.00 0.00 WT1 H -ATOM 333 H2 TIP3W1454 8.551 19.202 8.586 1.00 0.00 WT1 H -ATOM 334 OH2 TIP3W1455 7.534 23.313 22.010 1.00 0.00 WT1 O -ATOM 335 H1 TIP3W1455 7.309 22.777 22.738 1.00 0.00 WT1 H -ATOM 336 H2 TIP3W1455 6.697 23.403 21.532 1.00 0.00 WT1 H -ATOM 337 OH2 TIP3W1457 13.340 13.560 16.477 1.00 0.00 WT1 O -ATOM 338 H1 TIP3W1457 13.400 13.568 15.542 1.00 0.00 WT1 H -ATOM 339 H2 TIP3W1457 12.852 14.406 16.633 1.00 0.00 WT1 H -ATOM 340 OH2 TIP3W1458 8.344 7.845 20.429 1.00 0.00 WT1 O -ATOM 341 H1 TIP3W1458 8.479 8.292 21.236 1.00 0.00 WT1 H -ATOM 342 H2 TIP3W1458 9.102 8.059 19.900 1.00 0.00 WT1 H -ATOM 343 OH2 TIP3W1474 6.901 21.557 9.326 1.00 0.00 WT1 O -ATOM 344 H1 TIP3W1474 7.410 20.744 9.384 1.00 0.00 WT1 H -ATOM 345 H2 TIP3W1474 7.474 22.077 8.759 1.00 0.00 WT1 H -ATOM 346 OH2 TIP3W1494 14.403 7.815 15.212 1.00 0.00 WT1 O -ATOM 347 H1 TIP3W1494 13.532 8.206 14.911 1.00 0.00 WT1 H -ATOM 348 H2 TIP3W1494 14.885 7.681 14.373 1.00 0.00 WT1 H -ATOM 349 OH2 TIP3W1497 6.857 11.138 6.829 1.00 0.00 WT1 O -ATOM 350 H1 TIP3W1497 6.107 11.750 6.800 1.00 0.00 WT1 H -ATOM 351 H2 TIP3W1497 6.480 10.387 6.353 1.00 0.00 WT1 H -ATOM 352 OH2 TIP3W1512 10.309 21.500 11.481 1.00 0.00 WT1 O -ATOM 353 H1 TIP3W1512 11.014 20.928 11.185 1.00 0.00 WT1 H -ATOM 354 H2 TIP3W1512 9.595 20.961 11.183 1.00 0.00 WT1 H -ATOM 355 OH2 TIP3W1532 13.235 22.943 15.633 1.00 0.00 WT1 O -ATOM 356 H1 TIP3W1532 12.613 22.525 16.194 1.00 0.00 WT1 H -ATOM 357 H2 TIP3W1532 14.027 22.981 16.180 1.00 0.00 WT1 H -ATOM 358 OH2 TIP3W1559 6.818 20.066 20.150 1.00 0.00 WT1 O -ATOM 359 H1 TIP3W1559 7.686 20.067 20.626 1.00 0.00 WT1 H -ATOM 360 H2 TIP3W1559 6.969 19.869 19.212 1.00 0.00 WT1 H -ATOM 361 OH2 TIP3W1611 7.975 20.030 22.745 1.00 0.00 WT1 O -ATOM 362 H1 TIP3W1611 8.632 20.654 22.435 1.00 0.00 WT1 H -ATOM 363 H2 TIP3W1611 7.441 20.490 23.501 1.00 0.00 WT1 H -ATOM 364 OH2 TIP3W1707 12.113 0.921 4.942 1.00 0.00 WT1 O -ATOM 365 H1 TIP3W1707 12.819 0.635 5.562 1.00 0.00 WT1 H -ATOM 366 H2 TIP3W1707 11.814 1.896 5.223 1.00 0.00 WT1 H -ATOM 367 OH2 TIP3W1723 9.197 4.375 15.964 1.00 0.00 WT1 O -ATOM 368 H1 TIP3W1723 9.163 3.590 15.387 1.00 0.00 WT1 H -ATOM 369 H2 TIP3W1723 8.516 4.167 16.604 1.00 0.00 WT1 H -ATOM 370 OH2 TIP3W1725 2.421 3.775 5.058 1.00 0.00 WT1 O -ATOM 371 H1 TIP3W1725 2.684 2.934 4.652 1.00 0.00 WT1 H -ATOM 372 H2 TIP3W1725 3.219 4.340 5.048 1.00 0.00 WT1 H -ATOM 373 OH2 TIP3W1729 6.794 6.875 22.997 1.00 0.00 WT1 O -ATOM 374 H1 TIP3W1729 7.166 7.815 23.093 1.00 0.00 WT1 H -ATOM 375 H2 TIP3W1729 5.834 7.029 23.036 1.00 0.00 WT1 H -ATOM 376 OH2 TIP3W1730 11.518 2.141 14.835 1.00 0.00 WT1 O -ATOM 377 H1 TIP3W1730 11.356 2.769 14.101 1.00 0.00 WT1 H -ATOM 378 H2 TIP3W1730 12.345 1.727 14.583 1.00 0.00 WT1 H -ATOM 379 OH2 TIP3W1733 3.174 1.584 16.976 1.00 0.00 WT1 O -ATOM 380 H1 TIP3W1733 2.370 2.077 16.810 1.00 0.00 WT1 H -ATOM 381 H2 TIP3W1733 3.270 0.961 16.252 1.00 0.00 WT1 H -ATOM 382 OH2 TIP3W1746 10.848 10.071 18.631 1.00 0.00 WT1 O -ATOM 383 H1 TIP3W1746 10.345 10.477 17.907 1.00 0.00 WT1 H -ATOM 384 H2 TIP3W1746 11.663 10.551 18.638 1.00 0.00 WT1 H -ATOM 385 OH2 TIP3W1752 12.069 8.766 23.082 1.00 0.00 WT1 O -ATOM 386 H1 TIP3W1752 12.023 9.290 23.888 1.00 0.00 WT1 H -ATOM 387 H2 TIP3W1752 11.590 7.956 23.400 1.00 0.00 WT1 H -ATOM 388 OH2 TIP3W1764 5.141 1.611 0.499 1.00 0.00 WT1 O -ATOM 389 H1 TIP3W1764 4.697 1.110 1.234 1.00 0.00 WT1 H -ATOM 390 H2 TIP3W1764 6.031 1.302 0.586 1.00 0.00 WT1 H -ATOM 391 OH2 TIP3W1771 2.509 3.505 12.910 1.00 0.00 WT1 O -ATOM 392 H1 TIP3W1771 2.114 4.138 12.315 1.00 0.00 WT1 H -ATOM 393 H2 TIP3W1771 2.715 2.712 12.383 1.00 0.00 WT1 H -ATOM 394 OH2 TIP3W1773 14.354 1.352 14.004 1.00 0.00 WT1 O -ATOM 395 H1 TIP3W1773 14.694 0.623 14.565 1.00 0.00 WT1 H -ATOM 396 H2 TIP3W1773 14.573 2.195 14.426 1.00 0.00 WT1 H -ATOM 397 OH2 TIP3W1788 14.578 23.489 17.850 1.00 0.00 WT1 O -ATOM 398 H1 TIP3W1788 15.476 23.267 17.861 1.00 0.00 WT1 H -ATOM 399 H2 TIP3W1788 14.359 23.484 18.771 1.00 0.00 WT1 H -ATOM 400 OH2 TIP3W1789 5.461 6.754 1.943 1.00 0.00 WT1 O -ATOM 401 H1 TIP3W1789 6.412 6.627 2.018 1.00 0.00 WT1 H -ATOM 402 H2 TIP3W1789 5.209 5.956 1.434 1.00 0.00 WT1 H -ATOM 403 OH2 TIP3W1795 14.101 1.902 22.316 1.00 0.00 WT1 O -ATOM 404 H1 TIP3W1795 14.886 2.398 22.002 1.00 0.00 WT1 H -ATOM 405 H2 TIP3W1795 14.108 1.041 21.813 1.00 0.00 WT1 H -ATOM 406 OH2 TIP3W1813 6.142 11.858 16.052 1.00 0.00 WT1 O -ATOM 407 H1 TIP3W1813 5.762 12.642 15.675 1.00 0.00 WT1 H -ATOM 408 H2 TIP3W1813 5.566 11.146 15.661 1.00 0.00 WT1 H -ATOM 409 OH2 TIP3W1814 11.187 19.104 18.681 1.00 0.00 WT1 O -ATOM 410 H1 TIP3W1814 12.029 18.566 18.863 1.00 0.00 WT1 H -ATOM 411 H2 TIP3W1814 10.574 18.773 19.364 1.00 0.00 WT1 H -ATOM 412 OH2 TIP3W1829 11.780 13.509 0.983 1.00 0.00 WT1 O -ATOM 413 H1 TIP3W1829 12.311 13.422 1.794 1.00 0.00 WT1 H -ATOM 414 H2 TIP3W1829 12.379 13.816 0.300 1.00 0.00 WT1 H -ATOM 415 OH2 TIP3W1830 13.410 13.796 3.206 1.00 0.00 WT1 O -ATOM 416 H1 TIP3W1830 12.860 13.342 3.952 1.00 0.00 WT1 H -ATOM 417 H2 TIP3W1830 14.378 13.624 3.486 1.00 0.00 WT1 H -ATOM 418 OH2 TIP3W1831 7.314 0.228 9.152 1.00 0.00 WT1 O -ATOM 419 H1 TIP3W1831 7.447 0.196 8.157 1.00 0.00 WT1 H -ATOM 420 H2 TIP3W1831 8.219 0.336 9.426 1.00 0.00 WT1 H -ATOM 421 OH2 TIP3W1853 0.289 10.538 13.468 1.00 0.00 WT1 O -ATOM 422 H1 TIP3W1853 0.286 10.937 12.602 1.00 0.00 WT1 H -ATOM 423 H2 TIP3W1853 1.262 10.357 13.669 1.00 0.00 WT1 H -ATOM 424 OH2 TIP3W1856 12.440 12.407 5.370 1.00 0.00 WT1 O -ATOM 425 H1 TIP3W1856 11.652 11.887 5.105 1.00 0.00 WT1 H -ATOM 426 H2 TIP3W1856 12.893 11.867 5.977 1.00 0.00 WT1 H -ATOM 427 OH2 TIP3W1871 6.968 11.629 2.353 1.00 0.00 WT1 O -ATOM 428 H1 TIP3W1871 6.575 10.896 1.807 1.00 0.00 WT1 H -ATOM 429 H2 TIP3W1871 7.083 12.290 1.590 1.00 0.00 WT1 H -ATOM 430 OH2 TIP3W1873 13.533 10.550 7.160 1.00 0.00 WT1 O -ATOM 431 H1 TIP3W1873 12.608 10.309 7.490 1.00 0.00 WT1 H -ATOM 432 H2 TIP3W1873 14.008 10.940 7.925 1.00 0.00 WT1 H -ATOM 433 OH2 TIP3W1874 13.043 18.831 22.933 1.00 0.00 WT1 O -ATOM 434 H1 TIP3W1874 13.439 17.936 22.986 1.00 0.00 WT1 H -ATOM 435 H2 TIP3W1874 12.139 18.764 23.145 1.00 0.00 WT1 H -ATOM 436 OH2 TIP3W1894 11.706 15.811 16.829 1.00 0.00 WT1 O -ATOM 437 H1 TIP3W1894 10.892 16.347 16.590 1.00 0.00 WT1 H -ATOM 438 H2 TIP3W1894 12.344 16.466 17.162 1.00 0.00 WT1 H -ATOM 439 OH2 TIP3W1911 11.642 19.030 4.866 1.00 0.00 WT1 O -ATOM 440 H1 TIP3W1911 10.752 18.786 5.209 1.00 0.00 WT1 H -ATOM 441 H2 TIP3W1911 11.534 19.147 3.897 1.00 0.00 WT1 H -ATOM 442 OH2 TIP3W1912 13.550 21.522 9.565 1.00 0.00 WT1 O -ATOM 443 H1 TIP3W1912 13.279 21.744 8.655 1.00 0.00 WT1 H -ATOM 444 H2 TIP3W1912 13.859 22.419 9.914 1.00 0.00 WT1 H -ATOM 445 OH2 TIP3W1914 12.001 20.877 14.108 1.00 0.00 WT1 O -ATOM 446 H1 TIP3W1914 12.060 21.566 14.774 1.00 0.00 WT1 H -ATOM 447 H2 TIP3W1914 11.186 21.104 13.629 1.00 0.00 WT1 H -ATOM 448 OH2 TIP3W1915 12.814 17.906 7.383 1.00 0.00 WT1 O -ATOM 449 H1 TIP3W1915 13.379 17.410 6.688 1.00 0.00 WT1 H -ATOM 450 H2 TIP3W1915 11.963 17.994 6.954 1.00 0.00 WT1 H -ATOM 451 OH2 TIP3W1952 15.989 19.751 4.862 1.00 0.00 WT1 O -ATOM 452 H1 TIP3W1952 15.952 20.632 4.460 1.00 0.00 WT1 H -ATOM 453 H2 TIP3W1952 15.557 19.210 4.188 1.00 0.00 WT1 H -ATOM 454 OH2 TIP3W2123 10.963 1.737 11.790 1.00 0.00 WT1 O -ATOM 455 H1 TIP3W2123 10.319 2.240 11.334 1.00 0.00 WT1 H -ATOM 456 H2 TIP3W2123 11.709 2.167 11.210 1.00 0.00 WT1 H -ATOM 457 OH2 TIP3W2163 5.526 8.369 14.858 1.00 0.00 WT1 O -ATOM 458 H1 TIP3W2163 4.950 8.218 14.072 1.00 0.00 WT1 H -ATOM 459 H2 TIP3W2163 4.945 8.919 15.363 1.00 0.00 WT1 H -ATOM 460 OH2 TIP3W2165 14.776 4.939 12.443 1.00 0.00 WT1 O -ATOM 461 H1 TIP3W2165 14.636 5.952 12.252 1.00 0.00 WT1 H -ATOM 462 H2 TIP3W2165 13.865 4.712 12.604 1.00 0.00 WT1 H -ATOM 463 OH2 TIP3W2167 7.529 4.508 1.396 1.00 0.00 WT1 O -ATOM 464 H1 TIP3W2167 8.313 4.582 0.857 1.00 0.00 WT1 H -ATOM 465 H2 TIP3W2167 6.783 4.511 0.768 1.00 0.00 WT1 H -ATOM 466 OH2 TIP3W2172 11.435 0.836 22.059 1.00 0.00 WT1 O -ATOM 467 H1 TIP3W2172 11.858 0.103 21.657 1.00 0.00 WT1 H -ATOM 468 H2 TIP3W2172 12.219 1.281 22.508 1.00 0.00 WT1 H -ATOM 469 OH2 TIP3W2227 11.200 4.151 3.471 1.00 0.00 WT1 O -ATOM 470 H1 TIP3W2227 12.053 4.360 3.928 1.00 0.00 WT1 H -ATOM 471 H2 TIP3W2227 10.572 4.426 4.138 1.00 0.00 WT1 H -ATOM 472 OH2 TIP3W2231 4.884 4.081 13.713 1.00 0.00 WT1 O -ATOM 473 H1 TIP3W2231 4.970 4.746 14.373 1.00 0.00 WT1 H -ATOM 474 H2 TIP3W2231 3.932 3.975 13.593 1.00 0.00 WT1 H -ATOM 475 OH2 TIP3W2244 13.867 4.624 3.954 1.00 0.00 WT1 O -ATOM 476 H1 TIP3W2244 14.067 4.641 4.904 1.00 0.00 WT1 H -ATOM 477 H2 TIP3W2244 14.122 5.494 3.648 1.00 0.00 WT1 H -ATOM 478 OH2 TIP3W2270 3.174 11.159 5.954 1.00 0.00 WT1 O -ATOM 479 H1 TIP3W2270 3.904 11.073 5.352 1.00 0.00 WT1 H -ATOM 480 H2 TIP3W2270 3.204 12.104 6.129 1.00 0.00 WT1 H -ATOM 481 OH2 TIP3W2272 12.922 2.911 17.412 1.00 0.00 WT1 O -ATOM 482 H1 TIP3W2272 12.421 2.431 18.089 1.00 0.00 WT1 H -ATOM 483 H2 TIP3W2272 12.240 2.996 16.701 1.00 0.00 WT1 H -ATOM 484 OH2 TIP3W2277 13.644 7.961 20.946 1.00 0.00 WT1 O -ATOM 485 H1 TIP3W2277 13.183 7.158 20.680 1.00 0.00 WT1 H -ATOM 486 H2 TIP3W2277 13.018 8.315 21.687 1.00 0.00 WT1 H -ATOM 487 OH2 TIP3W2280 6.612 3.396 17.042 1.00 0.00 WT1 O -ATOM 488 H1 TIP3W2280 6.138 2.987 17.830 1.00 0.00 WT1 H -ATOM 489 H2 TIP3W2280 6.248 2.883 16.306 1.00 0.00 WT1 H -ATOM 490 OH2 TIP3W2288 3.628 15.453 9.684 1.00 0.00 WT1 O -ATOM 491 H1 TIP3W2288 3.604 16.368 9.365 1.00 0.00 WT1 H -ATOM 492 H2 TIP3W2288 3.266 15.478 10.592 1.00 0.00 WT1 H -ATOM 493 OH2 TIP3W2293 1.641 18.264 8.136 1.00 0.00 WT1 O -ATOM 494 H1 TIP3W2293 0.755 18.490 8.008 1.00 0.00 WT1 H -ATOM 495 H2 TIP3W2293 1.981 19.003 8.665 1.00 0.00 WT1 H -ATOM 496 OH2 TIP3W2295 8.716 0.819 21.571 1.00 0.00 WT1 O -ATOM 497 H1 TIP3W2295 8.359 0.399 22.460 1.00 0.00 WT1 H -ATOM 498 H2 TIP3W2295 9.622 1.046 21.690 1.00 0.00 WT1 H -ATOM 499 OH2 TIP3W2309 14.269 10.001 4.369 1.00 0.00 WT1 O -ATOM 500 H1 TIP3W2309 14.973 10.528 4.752 1.00 0.00 WT1 H -ATOM 501 H2 TIP3W2309 13.690 9.859 5.092 1.00 0.00 WT1 H -ATOM 502 OH2 TIP3W2311 14.691 13.817 9.050 1.00 0.00 WT1 O -ATOM 503 H1 TIP3W2311 15.162 14.372 8.385 1.00 0.00 WT1 H -ATOM 504 H2 TIP3W2311 13.821 14.250 9.113 1.00 0.00 WT1 H -ATOM 505 OH2 TIP3W2316 12.273 5.424 10.404 1.00 0.00 WT1 O -ATOM 506 H1 TIP3W2316 12.384 4.472 10.210 1.00 0.00 WT1 H -ATOM 507 H2 TIP3W2316 13.153 5.714 10.501 1.00 0.00 WT1 H -ATOM 508 OH2 TIP3W2317 3.759 13.253 15.143 1.00 0.00 WT1 O -ATOM 509 H1 TIP3W2317 3.552 13.546 16.059 1.00 0.00 WT1 H -ATOM 510 H2 TIP3W2317 2.862 13.321 14.740 1.00 0.00 WT1 H -ATOM 511 OH2 TIP3W2335 7.319 14.432 15.015 1.00 0.00 WT1 O -ATOM 512 H1 TIP3W2335 7.633 15.319 14.742 1.00 0.00 WT1 H -ATOM 513 H2 TIP3W2335 7.702 14.303 15.933 1.00 0.00 WT1 H -ATOM 514 OH2 TIP3W2357 3.117 11.819 10.070 1.00 0.00 WT1 O -ATOM 515 H1 TIP3W2357 3.490 12.496 9.523 1.00 0.00 WT1 H -ATOM 516 H2 TIP3W2357 3.937 11.583 10.539 1.00 0.00 WT1 H -ATOM 517 OH2 TIP3W2358 0.549 16.393 10.366 1.00 0.00 WT1 O -ATOM 518 H1 TIP3W2358 1.292 16.322 11.016 1.00 0.00 WT1 H -ATOM 519 H2 TIP3W2358 0.665 17.283 9.972 1.00 0.00 WT1 H -ATOM 520 OH2 TIP3W2607 10.050 5.605 5.758 1.00 0.00 WT1 O -ATOM 521 H1 TIP3W2607 10.155 6.554 5.556 1.00 0.00 WT1 H -ATOM 522 H2 TIP3W2607 10.797 5.389 6.309 1.00 0.00 WT1 H -ATOM 523 OH2 TIP3W2608 7.881 3.518 5.700 1.00 0.00 WT1 O -ATOM 524 H1 TIP3W2608 8.550 4.225 5.812 1.00 0.00 WT1 H -ATOM 525 H2 TIP3W2608 7.070 3.834 6.169 1.00 0.00 WT1 H -ATOM 526 OH2 TIP3W2634 8.559 3.515 11.535 1.00 0.00 WT1 O -ATOM 527 H1 TIP3W2634 8.435 4.298 12.155 1.00 0.00 WT1 H -ATOM 528 H2 TIP3W2634 7.955 2.899 11.952 1.00 0.00 WT1 H -ATOM 529 OH2 TIP3W2669 13.039 10.511 11.777 1.00 0.00 WT1 O -ATOM 530 H1 TIP3W2669 13.825 10.589 11.282 1.00 0.00 WT1 H -ATOM 531 H2 TIP3W2669 12.883 11.473 11.916 1.00 0.00 WT1 H -ATOM 532 OH2 TIP3W2691 15.316 3.976 15.033 1.00 0.00 WT1 O -ATOM 533 H1 TIP3W2691 15.353 4.265 14.065 1.00 0.00 WT1 H -ATOM 534 H2 TIP3W2691 14.585 4.533 15.460 1.00 0.00 WT1 H -ATOM 535 OH2 TIP3W2694 8.400 5.552 13.557 1.00 0.00 WT1 O -ATOM 536 H1 TIP3W2694 9.070 5.240 14.185 1.00 0.00 WT1 H -ATOM 537 H2 TIP3W2694 7.739 5.945 14.163 1.00 0.00 WT1 H -ATOM 538 OH2 TIP3W2714 4.281 21.161 19.066 1.00 0.00 WT1 O -ATOM 539 H1 TIP3W2714 5.157 21.058 19.381 1.00 0.00 WT1 H -ATOM 540 H2 TIP3W2714 4.169 22.110 18.904 1.00 0.00 WT1 H -ATOM 541 OH2 TIP3W2732 13.870 7.474 12.187 1.00 0.00 WT1 O -ATOM 542 H1 TIP3W2732 13.209 8.073 12.633 1.00 0.00 WT1 H -ATOM 543 H2 TIP3W2732 14.457 8.029 11.659 1.00 0.00 WT1 H -ATOM 544 OH2 TIP3W2735 13.600 17.247 9.998 1.00 0.00 WT1 O -ATOM 545 H1 TIP3W2735 13.256 16.385 10.107 1.00 0.00 WT1 H -ATOM 546 H2 TIP3W2735 13.616 17.337 9.047 1.00 0.00 WT1 H -ATOM 547 OH2 TIP3W2758 10.099 18.083 21.099 1.00 0.00 WT1 O -ATOM 548 H1 TIP3W2758 10.453 17.258 20.699 1.00 0.00 WT1 H -ATOM 549 H2 TIP3W2758 9.398 17.746 21.690 1.00 0.00 WT1 H -ATOM 550 OH2 TIP3W2778 15.465 7.955 17.814 1.00 0.00 WT1 O -ATOM 551 H1 TIP3W2778 15.150 7.979 16.932 1.00 0.00 WT1 H -ATOM 552 H2 TIP3W2778 14.706 7.563 18.306 1.00 0.00 WT1 H -ATOM 553 OH2 TIP3W3010 9.016 4.086 8.814 1.00 0.00 WT1 O -ATOM 554 H1 TIP3W3010 9.377 5.001 8.813 1.00 0.00 WT1 H -ATOM 555 H2 TIP3W3010 8.726 3.741 9.661 1.00 0.00 WT1 H -ATOM 556 OH2 TIP3W3072 6.439 5.144 7.455 1.00 0.00 WT1 O -ATOM 557 H1 TIP3W3072 7.310 4.836 7.837 1.00 0.00 WT1 H -ATOM 558 H2 TIP3W3072 6.121 5.819 8.116 1.00 0.00 WT1 H -ATOM 559 OH2 TIP3W3096 13.331 4.563 23.416 1.00 0.00 WT1 O -ATOM 560 H1 TIP3W3096 14.315 4.772 23.360 1.00 0.00 WT1 H -ATOM 561 H2 TIP3W3096 13.215 3.678 23.134 1.00 0.00 WT1 H -ATOM 562 OH2 TIP3W3134 11.401 21.480 17.136 1.00 0.00 WT1 O -ATOM 563 H1 TIP3W3134 11.522 22.112 17.856 1.00 0.00 WT1 H -ATOM 564 H2 TIP3W3134 11.255 20.672 17.636 1.00 0.00 WT1 H -ATOM 565 OH2 TIP3W3173 12.076 4.645 13.566 1.00 0.00 WT1 O -ATOM 566 H1 TIP3W3173 12.000 5.522 13.148 1.00 0.00 WT1 H -ATOM 567 H2 TIP3W3173 11.827 4.835 14.443 1.00 0.00 WT1 H -ATOM 568 OH2 TIP3W3177 9.131 1.075 15.841 1.00 0.00 WT1 O -ATOM 569 H1 TIP3W3177 9.948 1.463 15.412 1.00 0.00 WT1 H -ATOM 570 H2 TIP3W3177 9.113 0.161 15.464 1.00 0.00 WT1 H -ATOM 571 OH2 TIP3W3196 7.694 8.338 16.687 1.00 0.00 WT1 O -ATOM 572 H1 TIP3W3196 7.323 8.081 17.508 1.00 0.00 WT1 H -ATOM 573 H2 TIP3W3196 6.991 8.476 16.072 1.00 0.00 WT1 H -ATOM 574 OH2 TIP3W3218 11.912 13.212 19.726 1.00 0.00 WT1 O -ATOM 575 H1 TIP3W3218 12.854 13.225 19.881 1.00 0.00 WT1 H -ATOM 576 H2 TIP3W3218 11.504 12.764 20.555 1.00 0.00 WT1 H -ATOM 577 OH2 TIP3W3223 5.115 19.820 22.632 1.00 0.00 WT1 O -ATOM 578 H1 TIP3W3223 4.270 19.752 22.092 1.00 0.00 WT1 H -ATOM 579 H2 TIP3W3223 5.800 19.585 21.996 1.00 0.00 WT1 H -ATOM 580 OH2 TIP3W3303 14.170 23.047 20.478 1.00 0.00 WT1 O -ATOM 581 H1 TIP3W3303 15.015 22.883 20.902 1.00 0.00 WT1 H -ATOM 582 H2 TIP3W3303 13.757 22.177 20.579 1.00 0.00 WT1 H -ATOM 583 OH2 TIP3W3304 13.163 20.489 20.636 1.00 0.00 WT1 O -ATOM 584 H1 TIP3W3304 12.450 20.171 20.104 1.00 0.00 WT1 H -ATOM 585 H2 TIP3W3304 13.220 19.875 21.393 1.00 0.00 WT1 H -ATOM 586 OH2 TIP3W3447 11.316 2.273 7.956 1.00 0.00 WT1 O -ATOM 587 H1 TIP3W3447 11.391 1.358 8.151 1.00 0.00 WT1 H -ATOM 588 H2 TIP3W3447 10.423 2.479 8.181 1.00 0.00 WT1 H -ATOM 589 OH2 TIP3W3545 10.407 6.649 8.888 1.00 0.00 WT1 O -ATOM 590 H1 TIP3W3545 9.810 7.215 9.386 1.00 0.00 WT1 H -ATOM 591 H2 TIP3W3545 11.077 6.417 9.547 1.00 0.00 WT1 H -ATOM 592 OH2 TIP3W3596 7.574 19.420 4.717 1.00 0.00 WT1 O -ATOM 593 H1 TIP3W3596 7.704 19.335 3.679 1.00 0.00 WT1 H -ATOM 594 H2 TIP3W3596 7.970 20.255 4.957 1.00 0.00 WT1 H -ATOM 595 OH2 TIP3W3650 12.254 19.676 2.229 1.00 0.00 WT1 O -ATOM 596 H1 TIP3W3650 12.678 20.538 2.358 1.00 0.00 WT1 H -ATOM 597 H2 TIP3W3650 12.115 19.535 1.250 1.00 0.00 WT1 H -ATOM 598 OH2 TIP3W3660 14.036 7.730 6.644 1.00 0.00 WT1 O -ATOM 599 H1 TIP3W3660 14.358 7.138 7.346 1.00 0.00 WT1 H -ATOM 600 H2 TIP3W3660 13.886 8.589 7.123 1.00 0.00 WT1 H -ATOM 601 OH2 TIP3W3977 8.900 7.310 11.290 1.00 0.00 WT1 O -ATOM 602 H1 TIP3W3977 8.739 6.706 12.078 1.00 0.00 WT1 H -ATOM 603 H2 TIP3W3977 9.555 8.003 11.531 1.00 0.00 WT1 H -ATOM 604 OH2 TIP3W4012 9.495 14.416 1.979 1.00 0.00 WT1 O -ATOM 605 H1 TIP3W4012 10.354 14.203 1.548 1.00 0.00 WT1 H -ATOM 606 H2 TIP3W4012 9.165 13.566 2.099 1.00 0.00 WT1 H -ATOM 607 OH2 TIP3W4036 13.605 5.353 19.280 1.00 0.00 WT1 O -ATOM 608 H1 TIP3W4036 13.658 4.527 18.812 1.00 0.00 WT1 H -ATOM 609 H2 TIP3W4036 12.688 5.367 19.516 1.00 0.00 WT1 H -ATOM 610 OH2 TIP3W4074 7.334 17.973 7.090 1.00 0.00 WT1 O -ATOM 611 H1 TIP3W4074 7.571 18.390 6.200 1.00 0.00 WT1 H -ATOM 612 H2 TIP3W4074 6.533 17.444 6.885 1.00 0.00 WT1 H -ATOM 613 OH2 TIP3W4077 13.912 11.040 17.383 1.00 0.00 WT1 O -ATOM 614 H1 TIP3W4077 13.913 10.932 16.423 1.00 0.00 WT1 H -ATOM 615 H2 TIP3W4077 13.612 11.935 17.518 1.00 0.00 WT1 H -ATOM 616 OH2 TIP3W4501 14.682 11.334 14.388 1.00 0.00 WT1 O -ATOM 617 H1 TIP3W4501 15.236 11.941 13.876 1.00 0.00 WT1 H -ATOM 618 H2 TIP3W4501 14.266 10.683 13.763 1.00 0.00 WT1 H -ATOM 619 OH2 TIP3W4515 12.414 9.004 13.909 1.00 0.00 WT1 O -ATOM 620 H1 TIP3W4515 11.523 8.931 14.184 1.00 0.00 WT1 H -ATOM 621 H2 TIP3W4515 12.375 9.766 13.286 1.00 0.00 WT1 H -ATOM 622 OH2 TIP3W4809 15.898 3.293 1.648 1.00 0.00 WT1 O -ATOM 623 H1 TIP3W4809 15.837 3.977 2.359 1.00 0.00 WT1 H -ATOM 624 H2 TIP3W4809 15.065 2.796 1.789 1.00 0.00 WT1 H -ATOM 625 OH2 TIP3W6240 3.080 0.949 11.788 1.00 0.00 WT1 O -ATOM 626 H1 TIP3W6240 3.690 0.500 11.172 1.00 0.00 WT1 H -ATOM 627 H2 TIP3W6240 2.196 0.556 11.641 1.00 0.00 WT1 H -ATOM 628 OH2 TIP3W6671 0.897 12.813 20.940 1.00 0.00 WT1 O -ATOM 629 H1 TIP3W6671 1.234 13.577 21.489 1.00 0.00 WT1 H -ATOM 630 H2 TIP3W6671 1.110 12.083 21.442 1.00 0.00 WT1 H -ATOM 631 OH2 TIP3W7222 6.255 9.802 0.364 1.00 0.00 WT1 O -ATOM 632 H1 TIP3W7222 6.954 9.121 0.671 1.00 0.00 WT1 H -ATOM 633 H2 TIP3W7222 5.459 9.264 0.196 1.00 0.00 WT1 H -ATOM 634 OH2 TIP3W7479 6.140 3.669 3.704 1.00 0.00 WT1 O -ATOM 635 H1 TIP3W7479 6.732 3.837 2.949 1.00 0.00 WT1 H -ATOM 636 H2 TIP3W7479 6.807 3.408 4.378 1.00 0.00 WT1 H -ATOM 637 OH2 TIP3W7510 5.150 11.685 11.994 1.00 0.00 WT1 O -ATOM 638 H1 TIP3W7510 5.312 12.641 12.020 1.00 0.00 WT1 H -ATOM 639 H2 TIP3W7510 5.614 11.405 12.778 1.00 0.00 WT1 H -ATOM 640 OH2 TIP3W7563 5.196 19.304 15.315 1.00 0.00 WT1 O -ATOM 641 H1 TIP3W7563 5.227 20.213 14.942 1.00 0.00 WT1 H -ATOM 642 H2 TIP3W7563 5.252 18.720 14.569 1.00 0.00 WT1 H -ATOM 643 OH2 TIP3W7630 2.179 13.464 7.177 1.00 0.00 WT1 O -ATOM 644 H1 TIP3W7630 2.719 14.061 7.737 1.00 0.00 WT1 H -ATOM 645 H2 TIP3W7630 1.640 13.021 7.843 1.00 0.00 WT1 H -ATOM 646 OH2 TIP3W7631 1.926 21.439 17.027 1.00 0.00 WT1 O -ATOM 647 H1 TIP3W7631 2.672 21.817 16.545 1.00 0.00 WT1 H -ATOM 648 H2 TIP3W7631 2.398 20.912 17.662 1.00 0.00 WT1 H -ATOM 649 OH2 TIP3W7707 0.688 2.781 7.114 1.00 0.00 WT1 O -ATOM 650 H1 TIP3W7707 1.488 3.190 6.703 1.00 0.00 WT1 H -ATOM 651 H2 TIP3W7707 0.053 3.429 6.930 1.00 0.00 WT1 H -ATOM 652 OH2 TIP3W7985 0.449 7.366 9.140 1.00 0.00 WT1 O -ATOM 653 H1 TIP3W7985 0.202 6.479 9.095 1.00 0.00 WT1 H -ATOM 654 H2 TIP3W7985 0.796 7.563 8.256 1.00 0.00 WT1 H -ATOM 655 OH2 TIP3W8023 0.913 12.320 0.937 1.00 0.00 WT1 O -ATOM 656 H1 TIP3W8023 0.623 11.700 0.268 1.00 0.00 WT1 H -ATOM 657 H2 TIP3W8023 1.290 11.784 1.628 1.00 0.00 WT1 H -ATOM 658 OH2 TIP3W8029 7.889 16.997 14.360 1.00 0.00 WT1 O -ATOM 659 H1 TIP3W8029 7.935 17.181 13.358 1.00 0.00 WT1 H -ATOM 660 H2 TIP3W8029 8.602 17.562 14.734 1.00 0.00 WT1 H -ATOM 661 OH2 TIP3W8046 3.230 22.882 11.736 1.00 0.00 WT1 O -ATOM 662 H1 TIP3W8046 3.601 21.950 11.670 1.00 0.00 WT1 H -ATOM 663 H2 TIP3W8046 2.861 22.992 10.853 1.00 0.00 WT1 H -ATOM 664 OH2 TIP3W8064 4.620 22.335 7.130 1.00 0.00 WT1 O -ATOM 665 H1 TIP3W8064 3.754 22.591 7.590 1.00 0.00 WT1 H -ATOM 666 H2 TIP3W8064 5.178 22.349 7.907 1.00 0.00 WT1 H -ATOM 667 OH2 TIP3W8068 1.124 22.962 13.514 1.00 0.00 WT1 O -ATOM 668 H1 TIP3W8068 1.837 22.901 12.860 1.00 0.00 WT1 H -ATOM 669 H2 TIP3W8068 0.685 23.799 13.310 1.00 0.00 WT1 H -ATOM 670 OH2 TIP3W8364 8.561 10.924 16.881 1.00 0.00 WT1 O -ATOM 671 H1 TIP3W8364 7.916 11.188 16.202 1.00 0.00 WT1 H -ATOM 672 H2 TIP3W8364 8.309 10.008 17.123 1.00 0.00 WT1 H -ATOM 673 OH2 TIP3W8403 4.751 19.009 2.814 1.00 0.00 WT1 O -ATOM 674 H1 TIP3W8403 4.754 18.978 3.760 1.00 0.00 WT1 H -ATOM 675 H2 TIP3W8403 5.300 18.306 2.612 1.00 0.00 WT1 H -ATOM 676 OH2 TIP3W8411 3.406 0.117 14.493 1.00 0.00 WT1 O -ATOM 677 H1 TIP3W8411 3.348 0.244 13.546 1.00 0.00 WT1 H -ATOM 678 H2 TIP3W8411 4.378 0.190 14.724 1.00 0.00 WT1 H -ATOM 679 OH2 TIP3W8425 2.278 3.922 1.200 1.00 0.00 WT1 O -ATOM 680 H1 TIP3W8425 2.701 3.392 0.560 1.00 0.00 WT1 H -ATOM 681 H2 TIP3W8425 1.556 3.406 1.415 1.00 0.00 WT1 H -ATOM 682 OH2 TIP3W8441 6.246 21.216 13.564 1.00 0.00 WT1 O -ATOM 683 H1 TIP3W8441 7.127 21.533 13.794 1.00 0.00 WT1 H -ATOM 684 H2 TIP3W8441 5.802 22.075 13.455 1.00 0.00 WT1 H -ATOM 685 OH2 TIP3W8466 5.348 15.459 5.988 1.00 0.00 WT1 O -ATOM 686 H1 TIP3W8466 4.942 16.211 6.465 1.00 0.00 WT1 H -ATOM 687 H2 TIP3W8466 4.964 14.679 6.422 1.00 0.00 WT1 H -ATOM 688 OH2 TIP3W8468 1.312 13.577 13.829 1.00 0.00 WT1 O -ATOM 689 H1 TIP3W8468 1.594 13.350 12.963 1.00 0.00 WT1 H -ATOM 690 H2 TIP3W8468 0.905 14.443 13.634 1.00 0.00 WT1 H -ATOM 691 OH2 TIP3W8491 10.395 21.375 22.397 1.00 0.00 WT1 O -ATOM 692 H1 TIP3W8491 10.900 20.680 22.794 1.00 0.00 WT1 H -ATOM 693 H2 TIP3W8491 10.682 22.154 22.828 1.00 0.00 WT1 H -ATOM 694 OH2 TIP3W8528 6.013 16.085 3.326 1.00 0.00 WT1 O -ATOM 695 H1 TIP3W8528 6.016 16.035 4.292 1.00 0.00 WT1 H -ATOM 696 H2 TIP3W8528 5.249 15.516 3.046 1.00 0.00 WT1 H -ATOM 697 OH2 TIP3W8534 2.184 22.110 9.500 1.00 0.00 WT1 O -ATOM 698 H1 TIP3W8534 1.913 21.297 9.998 1.00 0.00 WT1 H -ATOM 699 H2 TIP3W8534 1.389 22.233 8.964 1.00 0.00 WT1 H -ATOM 700 OH2 TIP3W8536 3.207 13.979 17.772 1.00 0.00 WT1 O -ATOM 701 H1 TIP3W8536 3.947 14.082 18.373 1.00 0.00 WT1 H -ATOM 702 H2 TIP3W8536 2.585 14.685 17.921 1.00 0.00 WT1 H -ATOM 703 OH2 TIP3W8548 13.639 16.098 5.269 1.00 0.00 WT1 O -ATOM 704 H1 TIP3W8548 14.099 15.394 4.872 1.00 0.00 WT1 H -ATOM 705 H2 TIP3W8548 12.755 15.724 5.343 1.00 0.00 WT1 H -ATOM 706 OH2 TIP3W8556 1.981 16.635 18.663 1.00 0.00 WT1 O -ATOM 707 H1 TIP3W8556 1.921 17.181 19.529 1.00 0.00 WT1 H -ATOM 708 H2 TIP3W8556 2.656 17.117 18.156 1.00 0.00 WT1 H -ATOM 709 OH2 TIP3W8760 13.457 20.491 6.545 1.00 0.00 WT1 O -ATOM 710 H1 TIP3W8760 13.544 19.713 6.959 1.00 0.00 WT1 H -ATOM 711 H2 TIP3W8760 13.199 20.170 5.601 1.00 0.00 WT1 H -ATOM 712 OH2 TIP3W8780 3.438 8.099 0.316 1.00 0.00 WT1 O -ATOM 713 H1 TIP3W8780 2.547 7.847 0.577 1.00 0.00 WT1 H -ATOM 714 H2 TIP3W8780 3.889 7.775 1.093 1.00 0.00 WT1 H -ATOM 715 OH2 TIP3W8801 9.016 15.690 9.485 1.00 0.00 WT1 O -ATOM 716 H1 TIP3W8801 9.158 14.769 9.701 1.00 0.00 WT1 H -ATOM 717 H2 TIP3W8801 8.537 15.554 8.652 1.00 0.00 WT1 H -ATOM 718 OH2 TIP3W8822 1.562 6.536 12.239 1.00 0.00 WT1 O -ATOM 719 H1 TIP3W8822 0.960 7.250 12.049 1.00 0.00 WT1 H -ATOM 720 H2 TIP3W8822 1.197 5.827 11.553 1.00 0.00 WT1 H -ATOM 721 OH2 TIP3W8829 1.314 9.385 7.173 1.00 0.00 WT1 O -ATOM 722 H1 TIP3W8829 1.333 8.706 6.444 1.00 0.00 WT1 H -ATOM 723 H2 TIP3W8829 2.056 9.953 6.980 1.00 0.00 WT1 H -ATOM 724 OH2 TIP3W8843 7.572 0.420 3.478 1.00 0.00 WT1 O -ATOM 725 H1 TIP3W8843 7.636 0.339 2.503 1.00 0.00 WT1 H -ATOM 726 H2 TIP3W8843 6.628 0.234 3.530 1.00 0.00 WT1 H -ATOM 727 OH2 TIP3W8845 1.133 7.080 5.078 1.00 0.00 WT1 O -ATOM 728 H1 TIP3W8845 1.201 7.102 4.137 1.00 0.00 WT1 H -ATOM 729 H2 TIP3W8845 0.358 6.549 5.302 1.00 0.00 WT1 H -ATOM 730 OH2 TIP3W8865 11.515 22.342 4.827 1.00 0.00 WT1 O -ATOM 731 H1 TIP3W8865 10.875 21.911 4.185 1.00 0.00 WT1 H -ATOM 732 H2 TIP3W8865 11.205 21.919 5.694 1.00 0.00 WT1 H -ATOM 733 OH2 TIP3W8869 5.279 5.755 11.457 1.00 0.00 WT1 O -ATOM 734 H1 TIP3W8869 4.504 5.333 10.967 1.00 0.00 WT1 H -ATOM 735 H2 TIP3W8869 5.564 4.986 12.019 1.00 0.00 WT1 H -ATOM 736 OH2 TIP3W8887 8.890 21.041 16.070 1.00 0.00 WT1 O -ATOM 737 H1 TIP3W8887 8.698 21.572 15.300 1.00 0.00 WT1 H -ATOM 738 H2 TIP3W8887 9.800 21.340 16.244 1.00 0.00 WT1 H -ATOM 739 OH2 TIP3W8895 6.000 11.283 22.324 1.00 0.00 WT1 O -ATOM 740 H1 TIP3W8895 5.866 12.057 22.939 1.00 0.00 WT1 H -ATOM 741 H2 TIP3W8895 5.863 11.634 21.452 1.00 0.00 WT1 H -ATOM 742 OH2 TIP3W8905 7.834 14.408 7.527 1.00 0.00 WT1 O -ATOM 743 H1 TIP3W8905 7.105 14.717 6.993 1.00 0.00 WT1 H -ATOM 744 H2 TIP3W8905 8.194 13.714 6.926 1.00 0.00 WT1 H -ATOM 745 OH2 TIP3W8931 5.667 11.812 19.542 1.00 0.00 WT1 O -ATOM 746 H1 TIP3W8931 5.647 12.743 19.497 1.00 0.00 WT1 H -ATOM 747 H2 TIP3W8931 5.889 11.629 18.618 1.00 0.00 WT1 H -ATOM 748 OH2 TIP3W8932 12.997 18.576 15.207 1.00 0.00 WT1 O -ATOM 749 H1 TIP3W8932 12.617 19.193 14.493 1.00 0.00 WT1 H -ATOM 750 H2 TIP3W8932 13.582 19.163 15.737 1.00 0.00 WT1 H -ATOM 751 OH2 TIP3W8935 0.675 11.574 10.952 1.00 0.00 WT1 O -ATOM 752 H1 TIP3W8935 1.597 11.546 10.574 1.00 0.00 WT1 H -ATOM 753 H2 TIP3W8935 0.265 12.150 10.339 1.00 0.00 WT1 H -ATOM 754 OH2 TIP3W8949 8.782 17.187 2.362 1.00 0.00 WT1 O -ATOM 755 H1 TIP3W8949 8.004 16.786 2.797 1.00 0.00 WT1 H -ATOM 756 H2 TIP3W8949 9.140 16.422 1.970 1.00 0.00 WT1 H -ATOM 757 OH2 TIP3W8956 2.113 6.516 21.893 1.00 0.00 WT1 O -ATOM 758 H1 TIP3W8956 2.170 5.576 22.160 1.00 0.00 WT1 H -ATOM 759 H2 TIP3W8956 2.446 6.949 22.707 1.00 0.00 WT1 H -ATOM 760 OH2 TIP3W8977 2.583 16.123 12.046 1.00 0.00 WT1 O -ATOM 761 H1 TIP3W8977 3.491 16.508 12.059 1.00 0.00 WT1 H -ATOM 762 H2 TIP3W8977 2.312 16.312 12.887 1.00 0.00 WT1 H -ATOM 763 OH2 TIP3W8988 2.246 20.883 4.995 1.00 0.00 WT1 O -ATOM 764 H1 TIP3W8988 1.611 20.097 4.885 1.00 0.00 WT1 H -ATOM 765 H2 TIP3W8988 3.079 20.473 5.195 1.00 0.00 WT1 H -ATOM 766 OH2 TIP3W9082 8.156 17.564 11.520 1.00 0.00 WT1 O -ATOM 767 H1 TIP3W9082 8.355 18.345 10.921 1.00 0.00 WT1 H -ATOM 768 H2 TIP3W9082 8.334 16.820 10.874 1.00 0.00 WT1 H -ATOM 769 OH2 TIP3W9096 2.915 14.197 3.393 1.00 0.00 WT1 O -ATOM 770 H1 TIP3W9096 2.155 14.414 3.916 1.00 0.00 WT1 H -ATOM 771 H2 TIP3W9096 2.719 13.333 3.011 1.00 0.00 WT1 H -ATOM 772 OH2 TIP3W9226 8.578 0.832 6.351 1.00 0.00 WT1 O -ATOM 773 H1 TIP3W9226 7.928 0.530 5.693 1.00 0.00 WT1 H -ATOM 774 H2 TIP3W9226 8.563 1.801 6.335 1.00 0.00 WT1 H -ATOM 775 OH2 TIP3W9241 7.287 10.172 13.815 1.00 0.00 WT1 O -ATOM 776 H1 TIP3W9241 6.631 9.473 14.077 1.00 0.00 WT1 H -ATOM 777 H2 TIP3W9241 8.119 9.669 13.852 1.00 0.00 WT1 H -ATOM 778 OH2 TIP3W9250 3.347 10.487 19.814 1.00 0.00 WT1 O -ATOM 779 H1 TIP3W9250 2.792 10.955 19.188 1.00 0.00 WT1 H -ATOM 780 H2 TIP3W9250 4.264 10.639 19.456 1.00 0.00 WT1 H -END diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/spce.lt b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/spce.lt deleted file mode 100644 index 019911c19b..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/spce.lt +++ /dev/null @@ -1,52 +0,0 @@ -# file "spce.lt" -# -# H1 H2 -# \ / -# O - -SPCE { - - write_once("In Init") { - # -- Default styles (for solo "SPCE" water) -- - units real - atom_style full - # (Hybrid force fields were not necessary but are used for portability.) - pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0 - bond_style hybrid harmonic - angle_style hybrid harmonic - kspace_style pppm 0.0001 - pair_modify mix arithmetic - } - - write("Data Atoms") { - $atom:O $mol:. @atom:O -0.8476 0.0000000 0.00000 0.000000 - $atom:H1 $mol:. @atom:H 0.4238 0.8164904 0.00000 0.5773590 - $atom:H2 $mol:. @atom:H 0.4238 -0.8164904 0.00000 0.5773590 - } - - write_once("Data Masses") { - @atom:O 15.9994 - @atom:H 1.008 - } - - write("Data Bonds") { - $bond:OH1 @bond:OH $atom:O $atom:H1 - $bond:OH2 @bond:OH $atom:O $atom:H2 - } - - write("Data Angles") { - $angle:HOH @angle:HOH $atom:H1 $atom:O $atom:H2 - } - - write_once("In Settings") { - bond_coeff @bond:OH harmonic 1000.0 1.0 - angle_coeff @angle:HOH harmonic 1000.0 109.47 - pair_coeff @atom:O @atom:O lj/charmm/coul/long 0.1553 3.166 - pair_coeff @atom:H @atom:H lj/charmm/coul/long 0.0 2.058 - group spce type @atom:O @atom:H - fix fShakeSPCE spce shake 0.0001 10 100 b @bond:OH a @angle:HOH - # (Remember to "unfix" fShakeSPCE during minimization.) - } - -} # end of definition of "SPCE" water molecule type - diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/system.lt b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/system.lt deleted file mode 100644 index 274d8aeb11..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/system.lt +++ /dev/null @@ -1,16 +0,0 @@ -import "spce.lt" - -wat = new SPCE [260] - - - - - - - -# Open up the PDB file to count the number of water molecules inside. (Or just -# divide the number of atoms by 3). Put that in between the brackets ("[260]") -# -# The command above does not set the positions of the atoms. -# So they will have to be loaded later from a PDB or an XYZ file. -# (For example, using "moltemplate.sh -pdb solvate.pdb system.lt") diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/run.in.npt b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/run.in.npt deleted file mode 100644 index 4d8af42b5d..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/run.in.npt +++ /dev/null @@ -1,48 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, or run it using ./README_sh.) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -# Note: The minimization step is not necessary in this example. However -# in general, it's always a good idea to minimize the system beforehand. -# fShakeSPCE was defined in system.in.settings. It is incompatible with "minimize". -unfix fShakeSPCE -minimize 1.0e-3 1.0e-5 100000 400000 -# Now read "system.in.settings" in order to redefine fShakeSPCE again: -include system.in.settings - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 200 traj_npt.lammpstrj id mol type x y z ix iy iz -fix fxnpt all npt temp 300.0 300.0 100.0 iso 1.0 1.0 1000.0 drag 1.0 -thermo 100 - -run 10000 - -# Now that the system's temperature has become more equilibrated, -# we can increase the timestep: - -timestep 2.0 -run 50000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/run.in.nvt b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/run.in.nvt deleted file mode 100644 index d039a5370f..0000000000 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/run.in.nvt +++ /dev/null @@ -1,61 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, or run it using ./README_sh.) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -# Read the coordinates generated by an earlier NPT simulation - -read_data system_after_npt.data - - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- -# Note: If you are reading the data file created by run.in.npt, -# then you should not need to minimize the system beforehand. -# fShakeSPCE was defined in system.in.settings. -# (It is incompatible with "minimize".) - -unfix fShakeSPCE -minimize 1.0e-5 1.0e-7 100000 400000 - -# Now read "system.in.settings" in order to redefine fShakeSPCE again: - -include system.in.settings - - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 500 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 -thermo 500 - -run 10000 - -# Now that the system's temperature has become more equilibrated, -# we can increase the timestep: - -timestep 2.0 -run 50000 - -write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_AMBER/WARNING.TXT b/tools/moltemplate/examples/force_field_AMBER/WARNING.TXT deleted file mode 100644 index 9d6d0e1b35..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/WARNING.TXT +++ /dev/null @@ -1,54 +0,0 @@ -# -------- WARNING: -------- - -This directory contains some examples of all-atom simulations using the GAFF -force field, prepared using moltemplate. - -This software is experimental, and the force-fields and equilbration protocols -have not been tested carefully by me. There is no gaurantee that simulations -prepared using moltemplate will reproduce the behavior of AmberTools/AMBER. - -# -------- REQUEST FOR HELP: -------- - -If you notice a problem with these examples, please report it. -Peer-review is the only way to improve this software (or any software). -Other suggestions are also welcome! - -(Contact jewett.aij@gmail.com, 2013-12-01) - - ---- Charge --- - -Some force-fields (such as OPLSAA) can assign charge based on atom type. -But AMBER simulations, charge is usually assigned using AmberTools which -typically estimates partial charges using quantum chemistry. - -You must assign partial charges to each atom or LAMMPS will crash -when it discovers your system has no charged particles. -(To disable this, change the pair_style to lj/cut or something similar.) - -You have to assign charge manually, just as you would for an ordinary molecule. - -(For example, charges are explicitly assigned to each atom in these files: - waterTIP3P+isobutane/moltemplate_files/isobutane.lt - hexadecane/moltemplate_files/ch2group.lt - hexadecane/moltemplate_files/ch3group.lt) - -(How you do this is up to you. In these examples, I obtained -partial charges from the OPLSAA parameter file located here: -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm) - ---- Improper angles --- - -I am also uncertain whether the improper angle interactions generated by -moltemplate are equivalent to those generated by AmberTools. (I think they are, -but I am worried that I might have listed the atom types in the wrong order.) - ---- Bloated lammps input scripts --- - -LAMMPS input scripts prepared using moltemplate contain the entire contents -of the GAFF force-field, even when simulating small systems with just a few -atom types. - -This is harmless, but if you want to get rid of this extra information, -follow the README instructions in the "optional_cleanup" directories. - diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/README.TXT b/tools/moltemplate/examples/force_field_AMBER/benzene/README.TXT deleted file mode 100644 index ba0f5e6f45..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/README.TXT +++ /dev/null @@ -1,10 +0,0 @@ -This example shows how to build a box of benzene molecules using the -AMBER/GAFF force-field. - -step 1) -To build the files which LAMMPS needs, follow the instructions in: -README_setup.sh - -step 2) -To run LAMMPS with these files, follow these instructions: -README_run.sh diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/README_run.sh b/tools/moltemplate/examples/force_field_AMBER/benzene/README_run.sh deleted file mode 100755 index 9f923a6c7e..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/README_run.sh +++ /dev/null @@ -1,39 +0,0 @@ -# --- Running LAMMPS --- -# -------- REQUIREMENTS: --------- -# 1) This example requires building LAMMPS with the "USER-MISC" package. -# (because it makes use of "gaff.lt" which uses dihedral_style fourier) -# To do this, type "make yes-user-misc" before compiling LAMMPS. -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# -------- PREREQUISITES: -------- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh deleted file mode 100755 index c2db73b457..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh +++ /dev/null @@ -1,26 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - #rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in GAFF which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/benzene/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt b/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt deleted file mode 100644 index 26ef1d5358..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt +++ /dev/null @@ -1,51 +0,0 @@ - -import "gaff.lt" - -# The "gaff.lt" file is usually located in "src/moltemplate_force_fields". -# Excerpt: -# -# @atom:ca # Sp2 C in pure aromatic systems -# @atom:ha # H bonded to aromatic carbon -# -# I looked up the charge of each atom using the OPLSAA parameters -# from the "oplsaa.prm" file distributed with TINKER -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# --------------------------------------------------------------- -# This is NOT how AmberTools assigns charge, and it will NOT -# reproduce the behavior of AMBER force-fields. - - -Benzene inherits GAFF { - - # atomID molID atomType charge X Y Z - write('Data Atoms') { - $atom:C1 $mol @atom:ca -0.115 5.274 1.999 -8.568 - $atom:C2 $mol @atom:ca -0.115 6.627 2.018 -8.209 - $atom:C3 $mol @atom:ca -0.115 7.366 0.829 -8.202 - $atom:C4 $mol @atom:ca -0.115 6.752 -0.379 -8.554 - $atom:C5 $mol @atom:ca -0.115 5.399 -0.398 -8.912 - $atom:C6 $mol @atom:ca -0.115 4.660 0.791 -8.919 - $atom:H11 $mol @atom:ha 0.115 4.704 2.916 -8.573 - $atom:H21 $mol @atom:ha 0.115 7.101 2.950 -7.938 - $atom:H31 $mol @atom:ha 0.115 8.410 0.844 -7.926 - $atom:H41 $mol @atom:ha 0.115 7.322 -1.296 -8.548 - $atom:H51 $mol @atom:ha 0.115 4.925 -1.330 -9.183 - $atom:H61 $mol @atom:ha 0.115 3.616 0.776 -9.196 - } - - write('Data Bond List') { - $bond:C12 $atom:C1 $atom:C2 - $bond:C23 $atom:C2 $atom:C3 - $bond:C34 $atom:C3 $atom:C4 - $bond:C45 $atom:C4 $atom:C5 - $bond:C56 $atom:C5 $atom:C6 - $bond:C61 $atom:C6 $atom:C1 - $bond:C1H1 $atom:C1 $atom:H11 - $bond:C2H2 $atom:C2 $atom:H21 - $bond:C3H3 $atom:C3 $atom:H31 - $bond:C4H4 $atom:C4 $atom:H41 - $bond:C5H5 $atom:C5 $atom:H51 - $bond:C6H6 $atom:C6 $atom:H61 - } - -} # Benzene diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/system.lt deleted file mode 100644 index 002c538dad..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/system.lt +++ /dev/null @@ -1,14 +0,0 @@ -import "benzene.lt" # <- defines the "Benzene" molecule type. - - -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 64.00 xlo xhi - 0.0 64.00 ylo yhi - 0.0 64.00 zlo zhi -} - -benzenes = new Benzene [8].move(8,0,0) - [8].move(0,8,0) - [8].move(0,0,8) - diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/optional_cleanup/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/force_field_AMBER/benzene/optional_cleanup/README_remove_irrelevant_info.sh deleted file mode 100755 index 3251991775..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/optional_cleanup/README_remove_irrelevant_info.sh +++ /dev/null @@ -1,63 +0,0 @@ - # MOST USERS CAN IGNORE THIS FILE - # - # Unfortunately, as of 2014-4-19, the system.data and system.in.settings file - # which are created by moltemplate.sh contain a lot of irrelevant information, - # such as definition of parameters for atom types not present in the current - # system. This extra information takes up about 1 MB. - # - # This appears to be harmless. - # (Loading this extra information does not seem to slow down LAMMPS.) - # - # --------- OPTIONAL STEPS FOR STRIPPING OUT JUNK --------- - # - # However if you want to eliminate this junk from these files - # For now, we can strip this out using ltemplify.py to build a new .lt file. - # - # NOTE: If you decide to use this script, it was meant to be run it from - # the parent directory (../) (If you run it from somewhere else, be sure to - # modify the "PATH_TO_DATA_FILE" and "PATH_TO_OUTPUT_TTREE" variables below.) - # - # I suggest you do this in a temporary_directory - - PATH_TO_DATA_FILE="." - - pushd "$PATH_TO_DATA_FILE" - - mkdir new_lt_file - cd new_lt_file/ - - # now run ltemplify.py - - ltemplify.py ../system.in.init ../system.in.settings ../system.data > system.lt - - # This creates a new .LT file named "system.lt" in the local directory. - - # The ltemplify.py script also does not copy the boundary dimensions. - # We must do this manually. - # If you did NOT throw away the "Data Boundary" file usually located in - # "moltemplate_files/output_ttree/Data Boundary" - # then you can copy that information from this file into system.lt - - PATH_TO_OUTPUT_TTREE="../moltemplate_files/output_ttree" - - echo "write_once(\"Data Boundary\") {" >> system.lt - cat "$PATH_TO_OUTPUT_TTREE/Data Boundary" >> system.lt - echo "}" >> system.lt - echo "" >> system.lt - - # Now, run moltemplate on this new .LT file. - moltemplate.sh system.lt - # This will create: "system.data" "system.in.init" "system.in.settings." - - # That's it. The new "system.data" and system.in.* files should - # be ready to run in LAMMPS. - - # Now copy the system.data and system.in.* files to the place where - # you plan to run LAMMPS - mv -f system.data system.in.* ../ - cd ../ - - # Now delete all of the temporary files we generated - rm -rf new_lt_file/ - popd - diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.npt b/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.npt deleted file mode 100644 index b2ee94440a..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.npt +++ /dev/null @@ -1,72 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) - -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -read_data "system.data" - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -minimize 1.0e-4 1.0e-6 100000 400000 - -# -- simulation protocol -- - -timestep 1.0 - -thermo 100 -dump 1 all custom 5000 traj_npt.lammpstrj id mol type x y z ix iy iz - -print "---------------------------------------------------------------------------" -print "First, use Langevin dynamics to randomize the initial shape of the molecules" -print "---------------------------------------------------------------------------" - - -fix 1 all momentum 100 linear 0 0 0 -fix fxlan all langevin 1000.0 1000.0 5000.0 123456 # temp: 1000 K -fix fxnve all nve - -run 20000 -unfix fxlan -unfix fxnve - - - -print "---------------------------------------------------------------------------" -print "Optional: use short high pressure run to get rid of small bubbles." -print " (In case there are any. I'm not certain there are." -print " Later we will restore ordinary pressure.)" -print "---------------------------------------------------------------------------" -fix fxlan all langevin 298.0 298.0 5000 123456 # temp: 298 K -fix fxnph all nph iso 500.0 500.0 1000.0 # pressure: 500 barr - -run 80000 -unfix fxlan -unfix fxnph - - - -print "---------------------------------------------------------------------------" -print "--- Now continue the simulation using a Nose-Hoover Thermostat/Barostat ---" -print "---------------------------------------------------------------------------" -# temperature: 298 K, pressure: 1 barr -fix fxnpt all npt temp 298.0 298.0 100.0 iso 1.0 1.0 1000.0 drag 1.0 -#thermo_modify flush yes - -run 5000000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.nvt b/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.nvt deleted file mode 100644 index 3901723ddd..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.nvt +++ /dev/null @@ -1,51 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -# Read the coordinates generated by an earlier NPT simulation - -read_data "system_after_npt.data" - -# OPLSAA atom charges are stored in a separate file. -# Load that file now: - -include "system.in.charges" - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" - - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 5000 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 -thermo 500 -#thermo_modify flush yes - -run 200000 - -write_restart system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README.TXT b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README.TXT deleted file mode 100644 index b02f184dde..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README.TXT +++ /dev/null @@ -1,13 +0,0 @@ -This example shows how to simulate a mixture of ethylene and benzene -using the AMBER/GAFF force field. - -As of 2016-11-21, this code has not been tested for accuracy. -(See the WARNING.TXT file.) - -step 1) -To build the files which LAMMPS needs, follow the instructions in: -README_setup.sh - -step 2) -To run LAMMPS with these files, follow these instructions: -README_run.sh diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_run.sh b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_run.sh deleted file mode 100755 index 9f923a6c7e..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_run.sh +++ /dev/null @@ -1,39 +0,0 @@ -# --- Running LAMMPS --- -# -------- REQUIREMENTS: --------- -# 1) This example requires building LAMMPS with the "USER-MISC" package. -# (because it makes use of "gaff.lt" which uses dihedral_style fourier) -# To do this, type "make yes-user-misc" before compiling LAMMPS. -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# -------- PREREQUISITES: -------- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh deleted file mode 100755 index 0e2a17d9b9..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh +++ /dev/null @@ -1,25 +0,0 @@ -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - #rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in GAFF which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/benzene.jpg b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/benzene.jpg deleted file mode 100644 index 356c78425644264fd39fa94cbe21122942871f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15032 zcmex=59-L^6Q@3p0phWnp1vVPj=u17mhh z4mNg9b~ZK+ZVpZ^5Mblr=Hcez0dYWvFoN_jF|jf;vvRSsv4d2QhW{U85aeLE#PEih zQILU2kdaxC@&6G9Sq4T1CT5WH7+`>vjfI_qnTe6}{}BdhMu;>_j)4KBnuV2({r@cn z9%e=cCIMyv1_s9W4;UD(-?CYodGhnjo99lv{uRCLxd#J-M8W##;)=L{b-ypZJ$HW# z$P|IAmrvfSJ{GBU{luxIW%px$$)_u7HZaJnKm2LNEt}bV%ItZ^eSX>Js#`lSFffS7 z*4o8Cs`S>;{-b>M=+!UMix=N!V06EJ`5B-5 zj&Ix7cWB)TpCqp8zws|@OZzS`e|U0Ee&*-Pk8eg?H+vJFd*jW!^UJs0-T-ot)VE&0 z;K!BKrV(w|zKFc7yECnL$M4WD{&D+bw%%K_v;X|yy=_sB5PVYESigR;qtV>Q8#;OpCO9i{* zCDrZuo5-D}k~L+Yz|Lc=Gj8nu_&)Dx0!SqrOZ@qM%N$XoBh&17DwWqAb20u^Hz{P_ zh7YqZ^Df-j_x_71NEySmU6Y>Oi}@PYvd-|V)r+g!41b$@zdyWS+sF2{8Q0G17pK3D z%dfh5Vzt4ivh*d(v)>(IU|1Kpda1>{V5zm4(%)^<)3&d__Np%JTuS7(B($tvy2uMAwbIALd|iJ|O-~kid*eTYn|0}%>;eYn>04A!@5xsGx^#Zf=@#DJ?u`$g z887~Dc9OxN{rQV(`8Pk|Q=c+%ak#;>BXyIW|E*tGdD!g5>Q4?gyN+0OI25jYo2s7jXa-R^823Tw8hUq?%6!w$7b?1seAX$ zc2-Li9Vy*${Pyv$#=FB`Ffa$be%@;Hce9DtNtV1o;bYhKANTa0-*f(1v8d)3`{;|g zZ_iCzarMIL>;9V!D~?UO{5HE*l0RmN;vD0he`T%RlNlIH+~(}q-kp}~vm*Vxj_0Gx z_47B}Jn=dGX79$GmtW4CUVhn^7X z@>i-@72PHj_IPWxN&NekCCfjzl`LUkU_8C&|egTj|CM$yn_O>gd zuDz;BRu-!`vT-8&vA7*+;qxbpRZKd!-RIlaUE$RQAe9Wy@8$D{7gvN?eJeR;YwB*x zDQ$T5Z$|98;}g%=+zDknQrfoUr`Orq zyklk87rfcG-p|Xyp4V`-T7!AbKduwE{PObquH!53gY@vFJgMCE-nu*Eh-UG= z*&Dat_&eXfWP1VwyLwU0+hq626|DhFz3$Gt_C@ZPTQEpNvAFuVpf8q|YaCCV&UfB; zt=8@X1Ecfe@F^Ah!u$*lpPBZi?0fOGs^$Vx246g<~lKlIJfBxp)yw8(%t+46(&*0U%;h10l(+#Iy@d@N}Jvei0(~C)Te|({ zzsf4?572$AH#_KvF6&7v?cIA$_FeZqp1d~4|7P8*+aVcxoHrKfuPa#76!}U0k9<() zn+l=V3u4N0gS_5o&wKm!c%raT&hL|((>~4Jx!ZiF?KjEeWhZhTHcb7l^5;{L&%(!V zuZ2&SW>|D0M}6u}n;V-R_Wr!Q=4;gfi`QGGo8<&rJyO0i+hShsR6(-@mP2 z{jy%kFX!eh2t6<-8Wr!TXXx?sl)r$oHZ%o@S6J9U4Q7NaJ)jv5=i)Xu^P|~^M(PmdR8=v>9xzW33deF8P_H(2|-)dPM zoV4=t8cUAek5gH2Y*dqSiYf4bcysZ;mzY5NK z7g4|BomKX_8T{vN8@+d)x8Q!=sf@P0$+ZSwd-l|=b9EByd%P}St?wfx%b*o$`jg(r zioO2!wW543!=%zE&v{FuF8c3%=-VT;C@KB^InUR}c&Gm0`juR%FD1L{)BChrqMSNg zkL9^mF0a0H=419@%X3Dnw}-}NI0{=I{`%60z3D&07j-t~Dtngw0q^ekrY_okadXDz0*_I%`8eZT7OK940O z+nEF!^fM2LJMQ>vYgn~YBK*Rni%&nSy>RK_&WUqEbN|Wbe>>xC)YQG<{Qhm{HfBGK z*;5>=o*nT0*@=wEYVBX?e4(!=I<5-6{n|(3h413zneQL|YF_a=Li9=UTtWUxz0z-Y z7fzVdUcExEzqWawdwutNiz;s6C-{+kKra z(Uv<-?wCIH8YO5iEl6UZ26iO3s;Kp2i0%Wmvz_Fy@J)t`#@i6Sa}`g}<4={S}@+E*iQV6<&AC(c`3gL+W-p`T5h{ z#I1asP6-eMIF9E2o`16*$L+r~C-u^Qh9jG|EPnCpSk9dj zLOcEYoRhYC*Y40hVQIm+Y@0;?w3ivaNt(PTijE%d&6-{K@baS4Q=+VEkKGjK7v;G9 z=Rd=qCw&_0&mTUPp(NtHUg`SqQ2XV6#Que`dNuPe~`Wvg1MIL}hS z5Ut}My}s|Bq+NgPO>h6tgg^=Z{w3?8Jq?m#1fPVTJk{fI>W=WY#8j>&vd3c{ML3?i z{rAsgp3Gg{!P#5&MS4X~ZJ&51=Da6^MxOkn=b@~d)O=gkFt6QpVn(O6^sCgstzPmE zc7F`+-BEGQ&%7}7H_Oiq5rNR?KbLYM?K4*FIKR_*OU5bdfByfEFc=9kFfuc-GO;qU zvx2J?aD$&kkX1-Q(LlgZSjoXLFj3j5uyNwTjUu8(K@Y*z3o|35J>&J*PP5r3&ffi_ znf+SDT;Kjsx4@d7H=lp5l5yOctaH!jx(6`?q8K=t@`Io$khp<+uqn* zKKbBK{D&pG@5BUhuyPj5$%y2CROb8n;E0xNp!$U}7i|r>A8~T`UP-!KWbdzw`dAgN z&N?;c>WnpN%N`#pf4Xj0Aq)GHMPD~Y24o#N`ET0&xNsB8ZCZ=w9QrNt#NA6nE4418 zJ$3)SHG!9{;te)@b7i@5EjHNo!6E6h;q3k5S8caxSyiUjMI61V#x0X>a(jM%{;y^S zF+g*RfNAIo@5Zx(b_MBIh?e@x-C0;wjHAHLm z#B4-MeU|hahDx-C950Wk6;_|we(F)1W|ZA0iM<)$|4y~N&mHsbNtSxV1qY4I53M3* z{FlEKk zocaCEmu6LJJ~?-kW$iqLkMCAVMQb;@=&aVt)_a|0!@O_Rw_Dr%kE~V_3t>9^T+lK3 z^OuOJnr9!GrZ}!v>YSf-|9Id7*{?}GTZ^ZKPEB=O)i#5xdPn(7Jz1W%$0-II-#z`i zcK(~$ZBGjnPe{Mm?xa(?CF|(I-wFR2rcO+`nG&+2dS0>T1_uV+HP+s38%#Z}o!;Ce zaLDdOWOTN|vF#fkWnPLB6niCInyY%RA#2knDbMW-WthG9ay*cVeW6m(*?QEmE7(50 zvMRo7(K@cc=UQCXuI%Y|>yQkA90o~CK;Ube<+QF^89jjV~6 z%#0`Rn)}J)_ny0Qy`^0XR&QSWrgCHW^pNO>7TRj%zPVRT>{ud8ADR4zDs4KF^QE`ED3QgYgyhB=}Wvf7kY8W%Dq=0(jayW&38+waHR zbk?cP%umb0R#mXtR90kt_;cK(eo>8n`cGC-lTGtALZ&p$iTVD#I_lXw@wPLMQ;uz2 zd;8LVhW|$xbOafgm_WG_-qvGaWMUR%5mFQ|6jo3&2xJv;a5PF(Hg=i_&W%i<-1zxb zY1e$8>d9B*&ChgXt#AJ4Halef!|&hHEe@u+&JQ~N!KH4w&S#<7ulH8fzE#5e$ouX$WSykV?3d=}#<2x3)aJP2y=U2HOR?GA~ zW9gOuReNo6gzn1gI)?pAay~qrv^ufGXwR+LS2sVXRnnMp`0!f&s$YLRgq$DDozFa3 zS=05Yl>G|(hxz~Jsn)CgsF^i4w?xk}_1Erqb<6Toa+ObtWM)O&`Om-{$=hFO$-l_O z?acg7b{#FVOkN+I#xf<$p81vjCKZze508w4{T>&ancOcw-S(g1;IF20oGu5q+|ros zyEukd!mLZJOa6I$qo#(t&c5flvuEyqaw}KFC;K^unH=0%9`jTd3cpj+PP<=}ES%9Z<@an~T|1rs4C@bG zIbC`w*&xAXcS(PdbF5%YFZUPwgZnHtE?msU(ze5FV$7tM%`DZkSYPCSP*vr4I^C;y z_Qb=67Zum>F6vZCI51(pjg;lb?H^3Hecs61r{#97NA$Yp9+&0rtn!iHcGWk(&G=y| z6&dzvw{%sq?XTeEZbem#r`6Z*tZefCT0dueXVFHAgtsV$Yx;Vlvvm(qM+;$G;!g^ zgBO#EK8T8$I3H@7bm^h7nM-hT%H+kH9(@Ft9E=QX_DrA8&P{K4bJnc4Ec!o#-HCmF zSG+G0EvZqkJG$i6fmgd$AAZc{m&&+u3D=aKX%>AcXZ_EpF5%m>VA+|?tE^U6M*iSf zb9BnB$v;F~!hG*;`Eo1X)8@`zH@yx#3_PQoQSejSTPad@PE9h$u2+g?Eluy%ZVfd!yIlWbsp)d&J=H&N zo}L@sWqbYdqKWITPFe7^CpGvs*ONPs4=v6L+WmLQ-`aoGjVAiOOqVs+3wD0^?RHQ} zf8V|HTjlzUn_5$@T)Hst4gdAIWp0_`vnw~X_8sPn*u28jadp<6EqNiV+7dewntA<~ zB|Yw4_eqmCs)%20b&h7vJ@MIZ>>fYYOA1TWo}PU1bjzHhRdMziOO@WIh;Dz^z59pD z*4bukJD8TQs5)|eUihRwO{3tKwDmtIznva!`a;W0wn5+B$Ec$fT^In4Q z$vxYy&Fi`y%F(vQFMN0Hro2V9?jm({%G(UKKHYfw@-mHX*XBDP8qQ3bXle0al~nH8 zDScW>Tx-1ptM*=cE4{X#aekj+)9$`jfBpWU)XR2HD{XO~#HG%zKCvO$sdqG$m6YNquN051 zj9A0NRKEHyZ{(%iyP4At3CuhAN-TDo=;qSnA)5Oc>~i zQ!naW{Lhe?dTgKg{^eJ4+TSl1yT@vMO!K&Fw#d4cbvw1J3NN)&c3FpyvNU+Gybfhd?|;& z$JF3+a;VvSwaTM%4MA!FMy*+Q-m5jgzR7#D=jJ|7jp_P3TJ~1# zC=X|R_uEadHn6|3cQNObiPH<8hh?Q=A#9~N|o z=axRu>=LS*SpTi#&#so>r~Hw;NQs8~koU0E5qNG)pJ`ro0a z_v!7-@?LUj#~!1uRkxe93=7b%eyHZo5=H^;+}t-dk$1 zT2|ZU=o(qDJp6e6n8u7<=EvQv3@c+(g+;nAdL8|@;l8-X8nyF#rmNkvI(hxTOYQc8 z(~tL`PoFNN^VZlcedS*DMeCW{zqNDR?CvVK+}5RMrr21%GU60}P2fYOsxxJ+>LTv~ z9we^zi&qc6xZdTxpsB8*_uDgT^ycKdzHsV$%5lWew8+lA4f>(yE3*c+c_g?)xUtgDVkgstTVo3_4rt8{jB~mX<=dR zf3Vp`8Dax66eI~IWNyiUleq%_HD5LnT1>T6gjB1d=~3m z@3N`>y|S-KJi9V)ZffAizA2(%hG8w|ZcXxC8?3kT*w@}9!3KG)9|xT~S!50hr0E== zuC#epwD|0Q@7~vhWluS>xVdPH{ZIErPmLR{uhruJ>NMfL<}6eHsF40wEm8hfohL&R z9$$KC*YQt}d7JUY!p29*mskCX-Q8lca(lk-$zPn4{Ir(4#wkCJxBp()y=ummZy}Sf zWTdU1AZMf8@j2w6t!S8W-;`KCl_xAp7oPI$nlV}0acRQ#YRw%^5s4e7D4GXM>0$Uh zUDxPROzx4pQDRym7Ea46W$jeO3O~8OidNqkx%}}%{u|#mm&Z>pdUT0TKvVokko2ea zrj+LyXRdw?P`?@9_(S-)eNL2KY+CH1?fkE6?DM0%ZdXQYtm9o?=EVy3oBrvqH))(#R|#%==~BDkbf?-n?Ipbt z3%gF9FuGcNbql-6aov>Ll5Of4#@|A}{Cn3M)FZOs`YuD?M5UlBAxCzEhH6@Fn`FT} zt487M&1{XzRh%ost#aj8yuGwqd1B)BuvtrQUKbAOKY8Ta9E1B(zte8boEe*CdT!Fh zJ4SMXg&+NHT>Iu$*kgLiFUV)V`?N)8cIyR*q;733UKcwdRYzNQWs2N{TwA@*`{&i2 z*do2>%wbnPzQbQTXLIG+O^STf_i@LMp5&#HZWnr3qz@~KuUd6&>)w4LTNX>DFAq1k z>k>P?V&&vxhApS|@J~D)c=BkSeDd-4j2ylUC-?)lJioU4`tmuu>N!m08BCHTG9si~ z(zydI6zuYV!0SA5raanAU{qRBHZ zED@fSx!7W9iNu!YUS%<}y%_(j{LgUviriMU^NSOAAK$)7E%*ChrDw6)=EeSu4-C3b z=FCceCIK!%FDf;6o>H@vw%BriPkh4NrR5rB?|yvv%2JdR8O<}{$;n5n5^Qh$_~sy3 z`)$RpgpG4FpK!nYc1fw_P|j^J$CK?-ujZuQs^Gh!_vxIkaB<%RFXmOdPCU@`nrFZ2 z-rpO3A^%kGe{_`JZTX+!?CyUWMMaKV&)(d=s(q5yvg54%>tb)2=9u}!&F~2N;kH&| z!5tRk{F|$Gz1EBSTeGk`$$!Bo?Xs=A%KNHgZaFQJGf%xx@!Nev?ZRMVzWBnUq85wy z%vk9cxXQC9k-K)|lTFK`&E}qdFkgOZ@`*RymNV1#wncNwWnbRr+ILy_ZI#QaNb%Aw zXVqq2f9}DN%BZ}F!EmjQhL5#ZUq{Q0$(vb&jJ0>W%18&EbZ*bL*%>N3Gi<_?zK_+f z8QivReatc^L2=7eO}9?w8gqrWrmw9|PO@FR`+Ufi-6>w@t{#y+86RmMFTvs(7b7s$ zG3?7zq04#KK5u#vwfab3$+;# zO=4(dB?qaA7zEV z89p)FGwEh=>6@u{%3p|;PSp$BJoD9pLiG|gSCQb;w`P`Mj;t+78 zVqxP%1%rhG4jT_%eE0#@Xk@fk{Pn@(?D6yUzq~fy?)ttp>8kavGdTX9d- z&%Vs=8K$)Fw%7xE&a!FC8n+1_xH@H5HAi*ro9ojb+B?UpmMUbrxv@o>POqD^wz@lS z|L1GE53fDhIq$jt%gHM17Ki=lf0CEGcS>@Vap9d!QR^o6eb=&_W)~88ar?oU3Dzk- z|B`1{dS$amNL<)-)$sfC`_HsE>~9H6-Eldf%;sfd`s9QB4gJJ~Pp#$aw)0J$yK7pO zSy+|7zRmn=rZyMq>`hq0|d`>yk|Cqo2hE>0ENd43UMH?$OTEx2!>xQO%iv&1_GcbsdDWjExmV`)EdP_||Bf{l-U+5L5W>9*=~d!w$n zl!QU`ZJym}^Mp2>`!%O|#rgFsysowveO)C`l9Et-;#!=@t~qaCPK;Pydd|eMKIY2K zX`8rYre~inU*55K-h;D?l^;c&+ih@W>A^qCMP~$@bllE1??>>{@^3szj;lV_HCEQ2 z@ep`0J>vXH)~%7VPhFc48JcX{m#>>&;E`}^#D`B0uZ}tu|H4etn)`dLB4c}egxiK}@mVX@bWB@ZW}INd z@hM_cM4l1r&nb&4UQBRllbq7`Rt1vE&RbJJD8H#HX3$L6Y)%&xAWhB1}`?gk4t?0pKV~{^Uw;tuFk&U zrr5v90@twQ;{PiwJuG8NgyH7YO zsCxX>tz`YY$iX4=k8{E){{VTT!$*x1HhM=fe9KRMWaek|$LyP}Ek|edA)&LYBla$f zOpQ6?XzgKe+VG4~;2VvEN)M6n>yvIJ&yl~wVsPWo>9*d(rN-VXAI#TS7jMux>!6V# z#>ud;Fr?o=3X?TzOY=)YliXx%LK&Q%wCny&_*5;;)XsCR;K!_Pv&2_>?tQldfJKG7n+oU@_%SO)j z|H1!TRq@QFM@$;)oV6!*{AW-(I(4Z`-r>qFg)W8%>sP*L$XcpVrn3EmZpJ&_hvr8) zIHb2kJgF3#__ARQr`PA8sVOy^<6NFR*qz58{xu+da*3366kmwC4C5A?UdEr>XB^06 z?$2JnV%F8?J6(F&BtG6Td{)TiZd!2opzqslA1-?yh~~|@yWq!E{=K3;F}G9iANu>>ikt56e3SK0);DPz6;xmS)?D1STcC?|o$CAAo3A$R z@lOxkIF->v{6B*Ti~WPuZSkG6dEA-=PKi_=eXxd0RyTK(nZMLhR=%S#tH1Al`|V;_ ziJ6VU5!r&Qo$ZI14-2l|_DY!FnRBa7);FQe?^1tO9nhSvb|YbWq4wV&71KL?WNe%s z?Ms*&bWA$wj^264LI#EvBJA-S(n31IJbw${vUTA0Ufj1a`Q3tl-Qq3wf&oeofANJC z&*@>gb|LyeL}u{Rz4GyI%FWlT)xTKS5$F?p=GvVVRaKu|dUe)kjdo9G z&Shnm*&<0d_{-ml#{Flo``s0kJWt-w@YU4Q^V(Lg3#|@Wx+8pNIQv)T>t%DRch`4@ z9AD_DZR7ZORgLO;o&yOV!;NEl=iRS1d)rg?pP@0Zdt>~(J-e>oow2FuqBhT|uBFUA zR?4<2_|{ORo8I{p$&6C`S{N7@1RH9U?`uu56JTI4 zNV0yb!R)-zTWLUdJP5mi^*%$RVNb?hzEwEq#2cI06$*0Z0!2j?Lh|Sl*z`!V} z1Y)v>C@?TcXn>duHeiy0ff>}G5@cjxVqj)t2d(r2i$fYz0t%oem4O3zWbVU5NP`MA zn*6xk$)=yUUxXB>P{Q80V@|NH4-^vLrxlq5`>de~Xf35AbW<33r zBW-A`dLeeB;ZODZ>wYa)`1|&!Y+>hQ&Wvso_ru>GEjs1Z>%ZJ6;&g&3^Q{f{+}B@W z5;n`YyxMWhX0Cq0*S9{l&x$X~8+ zd0Kja{+W$!k`XFf({^`9^Ho1PVtjW=@!sg02Nk>17QHzq(=OQ*Vfm@zOI_7*k%KpO zSlXpN-kP0s_`vD5M^|3ms&$Go;4IPL4vSnCAAV0^%9$5GQ(tnuDEZHj?8bfhZ}+s0 zrw3oNXRS}P;n=uC!f|CvY`?#2x&86m=@VH?1XdK4*7HB^Vd3KaYTTUqE+(IKtA@r* zms<;>*%r)sFr$iPF~iEK?9PWSHE(Ov*65bq^+H%9;Z2O0!9~&HkFC;Or_D1WJ-ud{ zZS#5Ruasf#^Ucy{c4xrjCt=JxwzA9i1*<(e^Uqmr!~S<0gJsVPU;m_>;ZD*Mo^QFK zIA_hq^DoZ66?UI<_Dl7yo06N>t<$ks4x zo7LfF+c^E_{Hy}M{@L3qeOVq9DEi~;sr1<2MRxaP13b^{Y`!k%q9$OO_!P7bO9Pa# z8JUyD5MD-+Pw$>r^{;%iwB> zHzfT2+{KoztaD3i_xEEDcWw#n5j$eo60=8S&eDxKw-+COf34)-68Xeee#X+w{T4H$ zo+NzvncMKO=e^*}g}+X}|6ur-e^0uv71N>^5mtj!scp(yJw|5sjIWO;ykQqP&8{Ii z%OF$0FRA8F9p{>#e_SLEvLy9YX;?`f((BCEu8(i{_(J);@vh@`Gp34*FbMfg{EzX%o-mgk);Cx`uU${%X z@tnpjJ~#gNbEH*>?4zqO*%{M z-xV$Ie3bkA^fA>*l@nrqO@C_^`a!-_o1?1s%y;?sz7iG^HVYcHLc}ym?#e#T+;pz8 z@NK_{T$?@^*`(X7Bxr zFBzVH{dc_a*BOhy^&6HwUe0k)=I6F!QrBlBY&ZD!O7`!>bv~Ib$|fgFa+(_Z_NOsu zyj9S=rJ7n&)<4lx>NroaRxMmQZ*z~mc?~&UdXv^G4TF550X@=C{xeSfc(*%Up**ERkS^Gu8H$2Yh;kmQNCRuT5=H+>*J=`vL#JS$Ss$*T;xUcOY-=3LIrd+z&__jXy zZ}>a*zxxXx#BV;P_cYisCx)%ZDRbu*!DH`to_Q;(XLQ+CK`Y_(wV(-BWuc}eg)jM; zI38JT(oomGeBbnK!|yg`bGIl}sr&u;EQ#MQgdUP+VSQA-^5pVu%2P}f9k=fVwJ;(Lw*X#){uU;0MtlL%o1-3!k{hy zTC2{)#0Z*H2d|)H6l4GoaWpCz6i#$lD6sJ$v_58JV6+$bb;LH{Do1w8@fJ%d>CcPy zmb=W+j5-%1(R5KLNK=;6QhCoJ)6dEpnuj(uDe3%XpR!KSf;m%`_43+;Sqnv?iXP~G z_B?dZ+M!$TmRD8#bD2a%wrjVhIGr`>+xM04@voJ)yO#SodLDH6$+h(7;jcwI4__5L zdLUSbhfOs`J!$Tv03*SbHE%V3+a0(tL4k=w)btX=!{tZgcydoKd2}=Ntb2+|_=d@Q z+-L6%k@$AA{JW3dp}Z^h3>FraYCfL(3N0UX@xQ6JsXjJMQ1<=7gA>0L9ywQ$G2QnA z`;|W{E-+|G&3Y9uJ0Unx+yBU6P5xi~@|I@ITw(i)r{-pExyStZ{qx1|au)dN&iHcl ze#EUHyIblE9OoRjBwHFdH$PU?O0QHBnRU#itb9`EUeN-jxsTRd3!l-qA(Gc_iW|eK zT|A)U%&K6?fxFrJzIYsbf zg1*3oEQbY5{TgBuWjnt1vc9>qhdKMjQLSZSy|J0aw+{--Xlh-m41Id+(W|qcHmbL? zeEo5nb=PvOV6O+w5&~;4`2BYNG;@{s#&Cgx@2&5Al4hqIT4eY|YQ1l`!Um<7uqkX3 zPqi=9TvqtjsL*0^{psd=mfI?hemqgXEVH03`{yY)D;{o_Xzm4(-aJrfixIm+N{Q}l>ma?@qCCoNeeM<+{l^jEs9HA~{|6n^-r z>gYM^1v+=l*fZGGO0>Q@gio0o9U2<`gHd_%tvUvi$){dPghw0~tp3j+vOM79+4fV@ zGwt6AzAWzOv9CB7K4aU}bXzu?&Ce+3`MO)#D z__h~9B~Om<2~R)r`kcMu&!XJ#=?MjIm+vdO_n%=8qn7afN}C&Rj^FpSJoP?@AHEa4ZD^bMkz zUM_A7TaKObM0O@8&#(e*>!qO@Cco`fb@p^fkWMkOPuUw80WZ?9OFVfPI0bIH*a}n2xF02H5A^rkP2lb;?Xa{E4%>N+agW&1=0o>>A89+zrP6xznxdK#ht+KM z>AybqbR>bC`TE?T}> ztck(vBh&0G?lZqmKNRn1u-X4iZNSN-z6?Q zsy87`Sn#HdFTd;#9)Er%$6cnk&mP{L6vW`%#I%dAgiYOVj+Cu+d?j!Ed;U}bxw6C6 z0bKj%Fsa>8J6nBp+PrsKiA{oXEt|KrF|~RZaIE17+rRy_LQM6D1tZ`rcox#)Ti-6ifGKZ;I& z`nYU`*DfKBT-O{o;bSuvRP=sI+H|O)^2E)@WtrE$mgY5tEmkPneQ$Z?A*S+{q9a1f z3RRivb2je3drIv;!$JIDgGEmz&}HpP@$K!&!|P;>(*q%-<}P{hy(74a2R?Jz|bbD;F?NeQd%W zu{P=HFA+awhZme}84QdEYCZ35TqNcqD5Tshm>anu#>gQc!)SVI;)WS(1s0rr_#;5^ z8jF(NjNdELOzf2Ta~8S$IGz0R%El$Tmo1oC%D7!P_$nXYeP33mHHi`B?H73K|N7Vb z+!-A1c>Q75d7fMTOd6~Qy24qxgH8W4JdwK6F6s8snNxS6!onv4&7pZe4=zs-SxN74v`QQyO8}yaAHGfEE`uz?DYeUTc%j7weLNAACqF(G7=!MdOKT#lVGk&F6Lx2dFbLgTb0 ze_z(NPyCkr<>?-?HzmIn{xd|Z2!C1pw`?I{GJ-+k8?8q6+W68w|bIJ-G?^?su%9;s5oi*d74J{8sFXOj0O==+Q--E zD<9Id%wepwZ>m?;(lWMMSdei?a#eEGe+CQ2Ih%tP@f)W9uCHkN{^4PmtGLI)W2#3v z><=u~NtI@`w|vCqlP=!4hjrBk`-c1@2?5g^E2byC=X`DLvPf)lVe*vH&&NMM`BPEc zu~DKw;_2ac3G!x&ui5`ItP%WaeUwr8?s2Y^E0&T)O{;zxF5NCDetdF`=*_lYyFyKq zH(a~TVE4m7VZle9tetY)EgP?xq~7-_^}9E3_QyFZbqv=n^|QSBW;0VsaCc+pM8#HH zSFP4t$#n+#tE>)&UR>HFx}}xx&Sl?kdv>O5JP@8JxL!QwO~$f}#VZd^-6$lm)K%<1 zL(TG5oo_|!+P6piXL!4r-~L1Cmd?|wO=QFu9ID#NHMzm-!=;7y)Sa9jgub-;{h;=h zW%IKxzW`Up2Rd!fHMrtU1LL+&(30-)aWM}lf6aTt?e;y!TdQ4-h14I|?yT5<>#~sQ zvln~!J0E6J3N-NInR`j1-QgW$Lv8ZX;OVCq=Y1}Xkb1H)dCgYiE{!kKR(!RqIu_BH zX|$NTQFN*I_v!CL)p9R2{WxiT>g-P0ZL97}nk|}j>(Qi!_YJ&D9eCFXJTXlYU@?2Q z((>0qPL_a1frbW&t^Csa!i8R_ca=WYn|0GBW!0|Tn@|2{sN?xO#hjmkZ52a>-MgO) zmoL`ps^HJCSTXTApP^d!Y~9@_O*mF|zf@|P%~|qWT0Q8+`&muW0f#!Pwre`5M--NR zZz$RoQO2-YD>LTncV&gY>~|MDPkg*MLm{5&Y4l~LN%?ahXYtMGY;~ynU~66ByqUxL z_SOqp+&lh-^9k`>3ApO`&Gq&-5Y!eh$3vLy*;E~qFd stPRXuRbsOKo;FLOiU@k diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg deleted file mode 100644 index 00c82d3d9f5f13a5dd36eaee35d982557be2b1b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130048 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≈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≀?b3cK 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 KHUCroe-i+BJ~v system.lt - - # This creates a new .LT file named "system.lt" in the local directory. - - # The ltemplify.py script also does not copy the boundary dimensions. - # We must do this manually. - # If you did NOT throw away the "Data Boundary" file usually located in - # "moltemplate_files/output_ttree/Data Boundary" - # then you can copy that information from this file into system.lt - - PATH_TO_OUTPUT_TTREE="../moltemplate_files/output_ttree" - - echo "write_once(\"Data Boundary\") {" >> system.lt - cat "$PATH_TO_OUTPUT_TTREE/Data Boundary" >> system.lt - echo "}" >> system.lt - echo "" >> system.lt - - # Now, run moltemplate on this new .LT file. - moltemplate.sh system.lt - # This will create: "system.data" "system.in.init" "system.in.settings." - - # That's it. The new "system.data" and system.in.* files should - # be ready to run in LAMMPS. - - # Now copy the system.data and system.in.* files to the place where - # you plan to run LAMMPS - mv -f system.data system.in.* ../ - cd ../ - - # Now delete all of the temporary files we generated - rm -rf new_lt_file/ - popd - diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.npt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.npt deleted file mode 100644 index 9e529624d5..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.npt +++ /dev/null @@ -1,53 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) - -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -read_data "system.data" - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -minimize 1.0e-4 1.0e-6 100000 400000 - -# -- simulation protocol -- - -timestep 1.0 - -print "---------------------------------------------------------------------------" -print "First, use Langevin dynamics to randomize the initial shape of the molecules" -print "(This is not really necessary, but it seems to speed up equilibration.)" -print "---------------------------------------------------------------------------" - -fix fxlan all langevin 300.0 300.0 120 123456 # temp: 300 K -fix fxnph all nph iso 50.0 50.0 1000.0 # pressure: 50 barr -run 2000 -unfix fxlan -unfix fxnph - -print "---------------------------------------------------------------------------" -print "--- Now continue the simulation using a Nose-Hoover Thermostat/Barostat ---" -print "---------------------------------------------------------------------------" -dump 1 all custom 1000 traj_npt.lammpstrj id mol type x y z ix iy iz -# temperature: 300 K, pressure: 50 barr -fix fxnpt all npt temp 300.0 300.0 100.0 iso 50.0 50.0 1000.0 drag 1.0 -thermo 100 -#thermo_modify flush yes - -run 100000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.nvt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.nvt deleted file mode 100644 index 15283ff82b..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.nvt +++ /dev/null @@ -1,46 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -# Read the coordinates generated by an earlier NPT simulation - -read_data "system_after_npt.data" - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" - - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 5000 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 -thermo 500 -#thermo_modify flush yes - -run 200000 - -write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT deleted file mode 100644 index a3f011167d..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT +++ /dev/null @@ -1,44 +0,0 @@ -This example is a simple simulation of 288 hexadecane molecules in a box at -room temperature and atmospheric pressure. Please read the WARNING.TXT file. - --------- REQUIREMENTS: --------- -This example requires building LAMMPS with the "USER-MISC" package. -(because it uses dihedral_style fourier) -To do this, type "make yes-user-misc" before compiling LAMMPS. -http://lammps.sandia.gov/doc/Section_start.html#start_3 - -More detailed instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files: - -step 1) to setup the LAMMPS input files, run this file: -README_setup.sh - - (Currently there is a bug which makes this step slow. - I'll fix it later -Andrew 2013-10-15.) - -step 2) to run LAMMPS, follow the instructions in this file: -README_run.sh - ------------- NOTE: There are two versions of this example. ---------------- - -Both examples use the same force-field parameters. - -1) -In this version, the force-field parameters are loaded from the "gaff.lt" file -(located in the "src/moltemplate_force_fields/" subdirectory). -This frees the user from the drudgery of manually specifying all of these -force-field details for every molecule. (However, the user must be careful -to choose @atom-type names which match AMBER GAFF conventions, -such as the "c3" and "h1" atoms, in this example.) - -2) -Alternately, there is another "hexadecane" example in the "all_atom_examples" -directory. In that example, force-field parameters are loaded from a file -named "alkanes.lt" (instead of "gaff.lt"). The "alkanes.lt" file contains -only the excerpts from "gaff.lt" which are relevant to the hydrocarbon -molcules used in that example. ("gaff.lt" contains parameters for most -small organic molecules, not just hydrocarbons.) -In this way, by editing "alkanes.lt", the user can manually control all of the -force-field details in the simulation. (Without feeling as though they are -relying on some kind of mysterious "black box" to do it for them.) - diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_run.sh b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_run.sh deleted file mode 100755 index 9f923a6c7e..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_run.sh +++ /dev/null @@ -1,39 +0,0 @@ -# --- Running LAMMPS --- -# -------- REQUIREMENTS: --------- -# 1) This example requires building LAMMPS with the "USER-MISC" package. -# (because it makes use of "gaff.lt" which uses dihedral_style fourier) -# To do this, type "make yes-user-misc" before compiling LAMMPS. -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# -------- PREREQUISITES: -------- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh deleted file mode 100755 index c2db73b457..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh +++ /dev/null @@ -1,26 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - #rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in GAFF which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/WARNING.TXT b/tools/moltemplate/examples/force_field_AMBER/hexadecane/WARNING.TXT deleted file mode 100644 index def26ba765..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/WARNING.TXT +++ /dev/null @@ -1,16 +0,0 @@ -# -------- WARNING: -------- - -This software is experimental, and the force-fields and equilbration protocols -have not been tested carefully by me. There is no gaurantee that the simulation -will reproduce the behavior of real hexadecane molecules, -(or even of hexadecane molecules simulated using AMBER, which should - be using the same force-field). - -# -------- REQUEST FOR HELP: -------- - -However, if you notice a problem with this example, please report it. -I confess I do not have a lot of experience running all-atom simulations. -Peer-review is the only way to improve this software (or any software). -Other suggestions are also welcome! - -(Contact jewett.aij@gmail.com, 2013-10-16) diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg deleted file mode 100644 index b0d31f88453d4594681cc81791d66c5c1e8c0b99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27017 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 diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg deleted file mode 100644 index f7c13d0989c124f0c1ecd791045fb525f14a3f3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36181 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 VkX_=S#2~@={CEBv`@{cl0s!P{2Au!^ diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt deleted file mode 100644 index 69978eecae..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt +++ /dev/null @@ -1,59 +0,0 @@ - -import "gaff.lt" # <-- defines the "GAFF" force field - - -# The "gaff.lt" file is usually located in $MOLTEMPLATE_PATH (and is -# distributed with moltemplate. See the "Installation" section in the manual.) -# It contains definitions of the atoms "c3", "hc", as well as the force-field -# parameters for bonded and non-bonded interactions between them -# (and many other atoms). - -# Atom charges were taken from the OPLSAA force field file: -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - - -CH2 inherits GAFF { - - # atom-id mol-id atom-type charge x y z - - write("Data Atoms") { - $atom:C $mol:... @atom:c3 -0.120 0.000 0.000 0.000 - $atom:H1 $mol:... @atom:hc 0.060 0.000 0.63104384422426 0.892430762954 - $atom:H2 $mol:... @atom:hc 0.060 0.000 0.63104384422426 -0.892430762954 - } - - # Note: The "..." in "$mol:..." tells moltemplate that this molecule may - # be a part of a larger molecule, and (if so) to use the larger - # parent object's molecule id number as it's own. - # The CH2 group is part of the Hexadecane molecule. - - # Now specify which pairs of atoms are bonded: - write('Data Bond List') { - $bond:CH1 $atom:C $atom:H1 - $bond:CH2 $atom:C $atom:H2 - } - -} # CH2 - - -# Optional: Shift all the coordinates in the +Y direction by 0.4431163. -# This way, the carbon atom is no longer located at 0,0,0, but the -# axis of an alkane chain containing this monomer is at 0,0,0. -# (This makes it more convenient to construct a polymer later. -# If this is confusing, then simply add 0.4431163 to the Y -# coordinates in the "Data Atoms" section above.) - -CH2.move(0,0.4431163,0) - - - - -######### (scratchwork calculations for the atomic coordinates) ######### -# Lcc = 1.5350 # length of the C-C bond (Sp3) -# Lch = 1.0930 # length of the C-H bond -# theta=2*atan(sqrt(2)) # ~= 109.5 degrees = tetrahedronal angle (C-C-C angle) -# DeltaXc = Lcc*sin(theta/2) # = 1.2533222517240594 -# DeltaYc = Lcc*cos(theta/2) # = 0.8862326632060754 -# # 0.5*DeltaYc = 0.4431163316030377 -# DeltaZh = Lch*sin(theta/2) # = 0.8924307629540046 -# DeltaYh = Lch*cos(theta/2) # = 0.6310438442242609 diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt deleted file mode 100644 index ef431f8d75..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt +++ /dev/null @@ -1,65 +0,0 @@ -import "gaff.lt" # <-- defines the "GAFF" force field - - -# The "gaff.lt" file is usually located in $MOLTEMPLATE_PATH (and is -# distributed with moltemplate. See the "Installation" section in the manual.) -# It contains definitions of the atoms "c3", "hc", as well as the force-field -# parameters for bonded and non-bonded interactions between them -# (and many other atoms). -# -# Moltemplate is only a simple text manipulation tool. It cannot -# calculate atomic charge using quantom chemistry methods. -# Atom charges for this example were taken from the OPLSAA force field file: -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# However, normally simulations in AMBER are assigned charges using the -# "HF/6-31G* RESP2" or "AM1-BCC3" methods using AmberTools. - - -CH3 inherits GAFF { - - # atom-id mol-id atom-type charge x y z - - write("Data Atoms") { - $atom:C $mol:... @atom:c3 -0.180 0.000000 0.000000 0.000000 - $atom:H1 $mol:... @atom:hc 0.060 0.000000 0.6310438442242609 0.8924307629540046 - $atom:H2 $mol:... @atom:hc 0.060 0.000000 0.6310438442242609 -0.8924307629540046 - $atom:H3 $mol:... @atom:hc 0.060 -0.8924307629540046 -0.6310438442242609 0.000000 - } - - # Note: The "..." in "$mol:..." tells moltemplate that this molecule may - # be a part of a larger molecule, and (if so) to use the larger - # parent object's molecule id number as it's own. - # The CH3 group is part of the Hexadecane molecule. - - # Now specify which pairs of atoms are bonded: - write('Data Bond List') { - $bond:CH1 $atom:C $atom:H1 - $bond:CH2 $atom:C $atom:H2 - $bond:CH3 $atom:C $atom:H3 - } - -} # CH3 - - -# Optional: Shift all the coordinates in the +Y direction by 0.4431163. -# This way, the carbon atom is no longer located at 0,0,0, but the -# axis of an alkane chain containing this monomer is at 0,0,0. -# (This makes it more convenient to construct a polymer later. -# If this is confusing, then simply add 0.4431163 to the Y -# coordinates in the "Data Atoms" section above.) - -CH3.move(0,0.4431163,0) - - - - -######### (scratchwork calculations for the atomic coordinates) ######### -# Lcc = 1.5350 # length of the C-C bond (Sp3) -# Lch = 1.0930 # length of the C-H bond -# theta=2*atan(sqrt(2)) # ~= 109.5 degrees = tetrahedronal angle (C-C-C angle) -# DeltaXc = Lcc*sin(theta/2) # = 1.2533222517240594 -# DeltaYc = Lcc*cos(theta/2) # = 0.8862326632060754 -# # 0.5*DeltaYc = 0.4431163316030377 -# DeltaZh = Lch*sin(theta/2) # = 0.8924307629540046 -# DeltaYh = Lch*cos(theta/2) # = 0.6310438442242609 - diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt deleted file mode 100644 index d28502f486..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt +++ /dev/null @@ -1,89 +0,0 @@ -# This example looks complicated because I split the -# hexadecane molecule into individual CH2 and CH3 monomers. -# -# I defined it this way so that you can easily modify -# it to change the length of the alkane chain. - - -import "gaff.lt" # load the "GAFF" force-field information -import "ch2group.lt" # load the definition of the "CH2" object -import "ch3group.lt" # load the definition of the "CH3" object - - - -Hexadecane inherits GAFF { - - - create_var {$mol} # optional:force all monomers to share the same molecule-ID - - - # Now create an array of 16 "CH2" objects distributed along the X axis - - monomers = new CH2 [16].rot(180,1,0,0).move(1.2533223,0,0) - - # Each monomer is rotated 180 degrees with respect to the previous - # monomer, and then moved 1.2533223 Angstroms down the X axis. - - # ---- Now, modify the ends: --- - # Delete the CH2 groups at the beginning and end, and replace them with CH3. - # (Note: Alternately, instead of deleting the CH2 groups at each end, you - # could modify them by adding an extra hydrogen atom to those carbons.) - - delete monomers[0] - delete monomers[15] - monomers[0] = new CH3 - monomers[15] = new CH3 - - # Move the CH3 groups to the correct location at either end of the chain: - - monomers[15].rot(180.0,0,0,1).move(18.7998345,0,0) - - # Note: 18.7998345 = (16-1) * 1.2533223 - - - # Now add a list of bonds connecting the carbon atoms together: - - write('Data Bond List') { - $bond:b1 $atom:monomers[0]/C $atom:monomers[1]/C - $bond:b2 $atom:monomers[1]/C $atom:monomers[2]/C - $bond:b3 $atom:monomers[2]/C $atom:monomers[3]/C - $bond:b4 $atom:monomers[3]/C $atom:monomers[4]/C - $bond:b5 $atom:monomers[4]/C $atom:monomers[5]/C - $bond:b6 $atom:monomers[5]/C $atom:monomers[6]/C - $bond:b7 $atom:monomers[6]/C $atom:monomers[7]/C - $bond:b8 $atom:monomers[7]/C $atom:monomers[8]/C - $bond:b9 $atom:monomers[8]/C $atom:monomers[9]/C - $bond:b10 $atom:monomers[9]/C $atom:monomers[10]/C - $bond:b11 $atom:monomers[10]/C $atom:monomers[11]/C - $bond:b12 $atom:monomers[11]/C $atom:monomers[12]/C - $bond:b13 $atom:monomers[12]/C $atom:monomers[13]/C - $bond:b14 $atom:monomers[13]/C $atom:monomers[14]/C - $bond:b15 $atom:monomers[14]/C $atom:monomers[15]/C - } - -} # Hexadecane - - - - - - - - - - -######### (scratchwork calculations for the atomic coordinates) ######### -# -# 1.2533223 = DeltaXc = how far each CH2 group is shifted along -# the X axis (in Angstoms). -# 0.4431163 = DeltaYc/2 = lateral displacement of carbons away -# from the central axis. (See below.) -# -# Lcc = 1.5350 # length of the C-C bond (Sp3) -# Lch = 1.0930 # length of the C-H bond -# theta=2*atan(sqrt(2)) # ~= 109.5 degrees = tetrahedronal angle (C-C-C angle) -# DeltaXc = Lcc*sin(theta/2) # = 1.2533222517240594 -# DeltaYc = Lcc*cos(theta/2) # = 0.8862326632060754 -# # 0.5*DeltaYc = 0.4431163316030377 -# DeltaZh = Lch*sin(theta/2) # = 0.8924307629540046 -# DeltaYh = Lch*cos(theta/2) # = 0.6310438442242609 diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt deleted file mode 100644 index 4e0cfaec69..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt +++ /dev/null @@ -1,18 +0,0 @@ -import "hexadecane.lt" # <- defines the "Hexadecane" molecule type. - -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 62.4 xlo xhi - 0.0 62.4 ylo yhi - 0.0 62.4 zlo zhi -} - -molecules = new Hexadecane [12].move(0, 0, 5.2) - [12].move(0, 5.2, 0) - [2].move(31.2, 0, 0) - - -# NOTE: The spacing between molecules is large. There should be extra room to -# move during the initial stages of equilibration. However, you will have to -# run the simulation at NPT conditions later to compress the system to a -# more realistic density. diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/optional_cleanup/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/force_field_AMBER/hexadecane/optional_cleanup/README_remove_irrelevant_info.sh deleted file mode 100755 index 3251991775..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/optional_cleanup/README_remove_irrelevant_info.sh +++ /dev/null @@ -1,63 +0,0 @@ - # MOST USERS CAN IGNORE THIS FILE - # - # Unfortunately, as of 2014-4-19, the system.data and system.in.settings file - # which are created by moltemplate.sh contain a lot of irrelevant information, - # such as definition of parameters for atom types not present in the current - # system. This extra information takes up about 1 MB. - # - # This appears to be harmless. - # (Loading this extra information does not seem to slow down LAMMPS.) - # - # --------- OPTIONAL STEPS FOR STRIPPING OUT JUNK --------- - # - # However if you want to eliminate this junk from these files - # For now, we can strip this out using ltemplify.py to build a new .lt file. - # - # NOTE: If you decide to use this script, it was meant to be run it from - # the parent directory (../) (If you run it from somewhere else, be sure to - # modify the "PATH_TO_DATA_FILE" and "PATH_TO_OUTPUT_TTREE" variables below.) - # - # I suggest you do this in a temporary_directory - - PATH_TO_DATA_FILE="." - - pushd "$PATH_TO_DATA_FILE" - - mkdir new_lt_file - cd new_lt_file/ - - # now run ltemplify.py - - ltemplify.py ../system.in.init ../system.in.settings ../system.data > system.lt - - # This creates a new .LT file named "system.lt" in the local directory. - - # The ltemplify.py script also does not copy the boundary dimensions. - # We must do this manually. - # If you did NOT throw away the "Data Boundary" file usually located in - # "moltemplate_files/output_ttree/Data Boundary" - # then you can copy that information from this file into system.lt - - PATH_TO_OUTPUT_TTREE="../moltemplate_files/output_ttree" - - echo "write_once(\"Data Boundary\") {" >> system.lt - cat "$PATH_TO_OUTPUT_TTREE/Data Boundary" >> system.lt - echo "}" >> system.lt - echo "" >> system.lt - - # Now, run moltemplate on this new .LT file. - moltemplate.sh system.lt - # This will create: "system.data" "system.in.init" "system.in.settings." - - # That's it. The new "system.data" and system.in.* files should - # be ready to run in LAMMPS. - - # Now copy the system.data and system.in.* files to the place where - # you plan to run LAMMPS - mv -f system.data system.in.* ../ - cd ../ - - # Now delete all of the temporary files we generated - rm -rf new_lt_file/ - popd - diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.npt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.npt deleted file mode 100644 index a1b9345229..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.npt +++ /dev/null @@ -1,86 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - -# To avvoid explosions, I have a 4-step equilibraion process (expand, minimize, -# reorient, compress). The system (as defined in the "system.data" file) -# is already expanded. That means there are 3 steps left: - -dump dumpeq1 all custom 50 traj_eq1_min.lammpstrj id mol type x y z ix iy iz -thermo 50 - -# -- Equilibration: part 1: initial minimization -- - -# Note: In general, it's always a good idea to minimize the system at first. - -minimize 1.0e-5 1.0e-7 100000 400000 -undump dumpeq1 - -write_data system_after_eq1_min.data - -# -- Equilibration part 2: reorienting the molecules (NVT) -- - -timestep 1.0 -dump dumpeq2 all custom 200 traj_eq2_reorient.lammpstrj id mol type x y z ix iy iz - -# Run the system at high temperature (at constant volume) to reorient the -# the molecules (which would otherwise be pointing in the same direction). - -# To speed it up, I randomize the atomic positions for a few thousand steps -# using fix langevin (and fix nve). Then I switch to fix nvt (Nose-Hoover). -# (If I start with fix nvt (Nose-Hoover), it seems to get "stuck" for a while.) - - -fix fxlan all langevin 900.0 900.0 120 48279 -fix fxnve all nve - -run 4000 - -unfix fxlan -unfix fxnve -# Now continue the simulation at high temperature using fix nvt (Nose-Hoover). -fix fxnvt all nvt temp 900.0 900.0 100.0 - -run 50000 -undump dumpeq2 - - -write_data system_after_eq2_reorient.data - -unfix fxnvt - -# -- equilibration part 3: Equilibrating the density (NPT) -- - -# Originally, the simulation box (in "system.data" and "system.lt") was -# unrealistically large. The spacing between the molecules was large also. -# I did this to enable the molecules to move freely and reorient themselves. -# After doing that, we should run the simulation under NPT conditions to -# allow the simulation box to contract to it's natural size. We do that here: -# We begin the simulation at 100 barr (a relatively low pressure), and -# slowly decrease it to 1 barr, maintianing the temperature at 300K. - -dump dumpeq3 all custom 200 traj_eq3_npt.lammpstrj id mol type x y z ix iy iz -fix fxnpt all npt temp 900.0 300.0 100.0 iso 100.0 1.0 1000.0 drag 2.0 - -timestep 1.0 -run 100000 - -write_data system_after_eq3_npt.data - diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.nvt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.nvt deleted file mode 100644 index 0bb7699896..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.nvt +++ /dev/null @@ -1,43 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - - -# Read the coordinates generated by an earlier NPT simulation - -read_data system_after_eq3_npt.data - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 500 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 350.0 350.0 500.0 tchain 1 -thermo 100 -#thermo_modify flush yes - -run 50000 - -write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT deleted file mode 100644 index 6ec463efab..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT +++ /dev/null @@ -1,41 +0,0 @@ -The simulation consists of a mixture of isobutane and water. -Over time (less than 1 ns), the two molecules phase-separate. - -The GAFF parameters are applied only to the isobutane molecule. -(The water molecule parameters are defined explicitly in - src/moltemplate_force_fields/tip3p_2004.lt) - -WARNING: THIS IS A PRELIMINARY EXAMPLE WHICH USES AMBER'S GAFF FORCE FIELD. - AS OF 2014-4-19, these features have not been tested. - THE ABILITY TO DETECT AND ASSIGN GAFF FORCE FIELD PARAMETERS - MOLECULES ACCORDING TO ATOM TYPE IS AN EXPERIMENTAL FEATURE - AND CURRENTLY PROBABLY HAS BUGS (IN THE DIHEDRALS AND IMPROPERS). - PLEASE REPORT BUGS AND/OR SEND CORRECTIONS. -A 2014-4-19 - ------------------ CHARGE ---------------------- - -NOTE: The GAFF force-field DOES NOT ASSIGN ATOM CHARGE. - In this example, atom charges were taken from the OPLSAA force field file: - http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This is not the charge in AMBER simunlations is typically assigned. - (As of 2014, it is assigned using the "HF/6-31G* RESP2" or "AM1-BCC3" - methods using AmberTools (which are not available in moltemplate). - http://ambermd.org/doc6/html/AMBER-sh-19.4.html - http://ambermd.org/tutorials/basic/tutorial4b/) - - --------- REQUIREMENTS: --------- - - This example requires building LAMMPS with the "USER-MISC" package. - (because it makes use of "gaff.lt" which uses dihedral_style fourier) - To do this, type "make yes-user-misc" before compiling LAMMPS. - http://lammps.sandia.gov/doc/Section_start.html#start_3 - -More detailed instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step 2) -README_run.sh diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh deleted file mode 100755 index 9f923a6c7e..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh +++ /dev/null @@ -1,39 +0,0 @@ -# --- Running LAMMPS --- -# -------- REQUIREMENTS: --------- -# 1) This example requires building LAMMPS with the "USER-MISC" package. -# (because it makes use of "gaff.lt" which uses dihedral_style fourier) -# To do this, type "make yes-user-misc" before compiling LAMMPS. -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# -------- PREREQUISITES: -------- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh deleted file mode 100755 index c2db73b457..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh +++ /dev/null @@ -1,26 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - #rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in GAFF which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg deleted file mode 100644 index 8c548fba84514481bf2b0764122b452af8473274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24301 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¬@Vry;u2}KY&j)f=EMrMl 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

    vrV%E**Vr^}z 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 CVT_Fc diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg deleted file mode 100644 index aaa4abaf5e2ab2de2ef09a3b89359a6daee4d2e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73375 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

    >4Z3z{&h@O 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⁣$Q8i2VPDN_igblq-Gxz29r7Vj~ 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 system.lt - - # This creates a new .LT file named "system.lt" in the local directory. - - # The ltemplify.py script also does not copy the boundary dimensions. - # We must do this manually. - # If you did NOT throw away the "Data Boundary" file usually located in - # "moltemplate_files/output_ttree/Data Boundary" - # then you can copy that information from this file into system.lt - - PATH_TO_OUTPUT_TTREE="../moltemplate_files/output_ttree" - - echo "write_once(\"Data Boundary\") {" >> system.lt - cat "$PATH_TO_OUTPUT_TTREE/Data Boundary" >> system.lt - echo "}" >> system.lt - echo "" >> system.lt - - # Now, run moltemplate on this new .LT file. - moltemplate.sh system.lt - # This will create: "system.data" "system.in.init" "system.in.settings." - - # That's it. The new "system.data" and system.in.* files should - # be ready to run in LAMMPS. - - # Now copy the system.data and system.in.* files to the place where - # you plan to run LAMMPS - mv -f system.data system.in.* ../ - cd ../ - - # Now delete all of the temporary files we generated - rm -rf new_lt_file/ - popd - diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt deleted file mode 100644 index b4e4078891..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt +++ /dev/null @@ -1,44 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -# Note: The minimization step is not necessary in this example. However -# in general, it's always a good idea to minimize the system beforehand. -# fShakeTIP3P was defined in system.in.settings. It is incompatible with "minimize". -unfix fShakeTIP3P -minimize 1.0e-4 1.0e-6 100000 400000 -# Now read "system.in.settings" in order to redefine fShakeTIP3P again: -include system.in.settings - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 500 traj_npt.lammpstrj id mol type x y z ix iy iz -fix fxnpt all npt temp 300.0 300.0 100.0 iso 1.0 1.0 1000.0 drag 1.0 -thermo 100 -#thermo_modify flush yes - -run 40000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt deleted file mode 100644 index 602b8c3295..0000000000 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt +++ /dev/null @@ -1,52 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - - -# Read the coordinates generated by an earlier NPT simulation - -read_data system_after_npt.data - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - -# COMMENTING OUT MINIMIZATION STEPS: -# If you are reading the coordinates generated by the NPT run -# then you should not need to minimize the system beforehand. -# -- minimization protocol -- -## ("fix shake" is incompatible with "minimize".) -#unfix fShakeTIP3P -#minimize 1.0e-4 1.0e-6 100000 400000 -## Now read "system.in.settings" in order to redefine fShakeTIP3P again: -#include system.in.settings - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 500 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 -thermo 500 -#thermo_modify flush yes - -run 50000 - -write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT b/tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT deleted file mode 100644 index 0d8c8e0308..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT +++ /dev/null @@ -1,28 +0,0 @@ -# -------- WARNING: -------- - -This directory contains some examples of all-atom simulations using the OPLSAA -force field. - -This software is experimental, and the force-fields and equilbration protocols -have not been tested carefully by me. There is no gaurantee that simulations -prepared using moltemplate will reproduce the behavior of other MD codes. - -# -------- REQUEST FOR HELP: -------- - -If you notice a problem with these examples, please report it. -Peer-review is the only way to improve this software (or any software). -Other suggestions are also welcome! - -(Contact jewett.aij@gmail.com, 2014-4-19) - ---- Improper angles --- - -I am also uncertain whether the improper angle interactions generated by -moltemplate are equivalent to those generated by BOSS or other molecule -builders. (I think they are, but I am worried that we might have listed -the atom types in the wrong order. Let us know if you see discrepancies -between what moltemplate and other molecule builders generates.) - ------------ -For more details how to use the OPLSAA force-field, read the "README.TXT" -file located in "ethylene/moltemplate_files/oplsaa_lt_generator/README.TXT" diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT deleted file mode 100644 index abef639d46..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT +++ /dev/null @@ -1,40 +0,0 @@ -This example is a simple simulation of a long alkane chain, -in a vacuum at room temperature using the OPLSAA force field. - -NOTE: This particular example uses the OPLSAA force-field - However, moltemplate is not limited to OPLSAA. - -1) Create the "system.data", "system.in.init", and "system.in.settings" -files which LAMMPS will read by running: - -moltemplate.sh system.lt - - -2) Run LAMMPS in this order: - -lmp_mpi -i run.in.min # minimize the energy (to avoid atom overlap) before... -lmp_mpi -i run.in.nvt # running the simulation at constant temperature - -(The name of the LAMMPS executable, eg "lmp_mpi", may vary.) - ----- Details ---- - -The "Alkane50" molecule, as well as the "CH2", and "CH3" monomers it contains -use the OPLSAA force-field. This means that when we define these molecules, -we only specify the atom names, bond list, and coordinates. -We do not have to list the atom charges, angles, dihedrals, or impropers. -The rules for creating atomic charge and angle topology are contained in -the "loplsaa.lt" file created by step 3) above. The "ch2group.lt", -"ch3group.lt", and "alkane50.lt" files all refer to "loplsaa.lt", -(as well as the "OPLSAA" force-field object which it defines). Excerpt: - -import "loplsaa.lt" -CH2 inherits OPLSAA { ... -CH3 inherits OPLSAA { ... -Alkane50 inherits OPLSAA { ... - -Alternatively, you can manually define a list of angles, dihedrals, and -improper interactions in these files, instead of asking the force-field -to generate them for you. You can also specify some of the angles and -dihedrals explicitly, and let the force-field handle the rest. -(Many of the examples which come with moltemplate do this.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh deleted file mode 100755 index b31401f135..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh +++ /dev/null @@ -1,34 +0,0 @@ -# --- Running LAMMPS --- -# -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.min # minimization -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh deleted file mode 100755 index 54a6484dac..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh +++ /dev/null @@ -1,26 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg deleted file mode 100644 index 39a88795579f33345539451daac4815f999961a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4680 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 Q@uD|NJscX?U;n=e0KyEW(f|Me diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg deleted file mode 100644 index ab140a8f9ec82a71118681ba46b7b3ba8365ea7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6951 zcmex=3yBhzSCiS(!nAjfI7om7R^99fUbJ zxj8vFxH#C^xp=v_xOsSZc-T4l_<4EwKx~j9j7&^S%*@Pe%*<>&9PAt*6{O++hZqDo z7}^+SGBXM?FbOg;3o`yc!XV4Qz{Jc50t_&~!OF(Y!pY3Y^#2Hh6eA-8NE#-`z`(%F z!pg|R_Wu?G4>KbJlK`^-0|R3{>w+bdSQjMoZD3$v(g^Wr^4Z2ycuV7HP73$UnUV^3 z8WbZ zXWdD^^Jj1W^&~J{@A-iRvd5RGXg)tVd6wmhf*mRMS6tehapJ#Sv9V6geye`)6Qs?$@e%I)qxTk>0eUZTPIkZTJ$*E%mQHk><8efI(e1_qXE_8!|p zUyDiyZ+R1w<-f~DPxQ^TFPVojLf2;oeF=739QwL}fq{X0{k)&s!^*numRUSJwXgp{ z*6|;2Qg~fGyYV-n#C~HSd7G{0op7 zmHj=EnFg2kC8pW7Ev)VV-(bl@PZd7djt+gqQ?A-MH)B_*Kizs%kxoEC!KLO3V4nT|BMe#s3=C{cj4X^SOw3?G21X`k7FIR}b`C)yVFM9SF$E<7 zaS27`|F;-87#SHDS(ywQTDRvHTa<9z(D4#u%Cku zo#WzMpQfsxPa+k~_RLMaQqyE~rg*|_&cIr?Mn&Pa9z~C{t1^ZD#yVcej&^)0cK>|A zJ^$Lh!HOrGTs9~OuH>2&{z62KZ}paWi?dF0GM|5=HG6{3)CE6}lq^3izM}h6{EO8V zr{vB$UCBS5|32)C*_SE1coQE8Y~AuNi(l+V`|L7y?rl&%0^%R|j(cVQ*U!AI-8rHYr&i0tDyOnHfXEu9%4^4`k z#pk7X{Uu{Tn8dobhkiz83sk)S99L8yy?RdH@>#3P8s;-98MnUanJLs`^S#dd&aJS8 z+sv-kZ%moB;Yh>-!{Y(V1J|&4)r+p?YtCBF{q4f$g|~W6l7+m76* zOkBTZ%i;KvmS?+5y!%5QtZ7)7ysX+e<^HrCr;MDXl{-~Cm&uk|6}*!W++4wJ!JeV_ zc#Ce~-Y~!0kB^u0Uz@x#N7}I}RI`<7|DUsgi8<-Feu{icbNy`Qw^)&|^uGUnS)`f|OUDrNUSF`52Vdi5pc(>Zi6CE|0(Y zRqBGF*MEjHpB~?NXx?>v-LD6WUViM4bdQ#*s+`o&o4Vk!k>tU1M-Lk;yXm%HJ^wDF zHP7bxO8x%#Ha+g!+`%IBn%`ez_58RiAI|dp&GO9<^y88~J)7Id#ky@u(j(FDCyx4G z7q_#rD}1-}+qK1C-pF=yG8|ePR4n6B%`}mHp|88w#*N-TuiVyDSGaKM(dy*Z%|QYF zo8B*wUHIZ|bY|4&u2Kh4iCL5C>^DeTx!rdUV|`^F?73z4ja|a$FLdoV;SoOVVto^6u)n+m@F>SFy(;8K^$v=&a9%#PVe$+~It#zauo78&g*l&@EhYrWA zU$MmbMW=$0vg!@?4PA+b+5A!(^ZphwyyeeVGSxae?@*M3NAC>lxJc)1MaQ3gvgNLb^@}innc4*D-n(BOj!i z!m-g~bui~1*O{hvi;hlh^IKE)^7zh(HC^vcJzM%RX`-*e+GlEyu21vXP^)5Xu(RUw zx+#^BX9YK!&X|4DC}-nuUenuh_RbSEg(q58%RX7=Rd>wxc*66q^Zy@V&=q80WM*P! zWoLzyFboV#42;Yyf7ifCYF>3Uwir%QRMLIxwpV&_ech|9mQv1FBBEhtyM&Umw-x_r->=_)|I|EJ z&BZ29R(9Fc>2;@snKbVHa&|>_pM0qG%DEn$_G#zJ6Lwdvs%o2(f8F3qu+`LwU5Y^t z&Sy?@Ey`wUnLF>zqWQvwrzg7_RrKtP^cCc{jug=JIXkm^(SZfhT)j^1K8r5$SaiL= znHs!lv7KS9{ttIf?uTZZ*WO|b>}m;4zjoQAxo%}6gT_HOJNNRVEM69WI$z8ZG5igR zW_JNlw6d_Wv+*!vHt}b$qm-L&cA%D@y+@!NJ2T_z!ih#l>n2^wTPwTr#P{HR(le$P@*BO_)4Jq} z_JXRi(kG`+onH3o+S>W+IfBEy?06=fuyB2T&GzKG<2|f?K4*PbSD#y%ew#HYSa{O% zKhs0{OW1Ocd_L(^H=!l)+HQw~&bM##`kdY|eMY7Ege_0pmFs*xEek9fo_v}-_wv>J z{lSyG8Gm@Kx<=Pu@8w#xZ}wPx;odwm@`usMVmBea)$4gg z_PtwQc%SnSo1mj3x2DIDWO-)0&1Z61Yh3G=-hZ*a)_k6KT z_7XMDb({^H=lBk?W<*_D@@UfBHeq$6d6`*Dt&`R3&m^=zouKvp9@~tMx4Fe?yY((<dMV8 z{t3s0`g+Y?Hz%yO`|)k@5D#U8y}ez`ZzY3gII!_$^F$eOk3L(LxvQ1>vJErrf<9~f+&U}lubJ$BhFzZ)PIty^i+c&XWTexv z8`phB4=eLkI%oV@dor`>w9qSgv0DvnKkt=pxcktr?Pz(D+LZYs|K?1O_PP`HWZB2Y zrHRj0PyHftP2l^gWQQq@F%RZ`SQojdR@?QE{j~e82A}dXb+%75W4L9t>YK*A7aYD7 zhcsq6MenZqcH*b9uc!YrkvRg@Zs%UaY&pf9w|$0P?xdT`CS|harcGHl;hy}#O5qhR*8eoh_Z+mIv-#HQRmsFh}&K&m4uhUnfqw{Z?RU zIPb)B2A92)V_)8~IqAv0eAa@O%dWoK!e?h$ew5v5w%ExCvB`@*zvuB;RTlhKKH;t4 zlA_g7XG4}Ig(PHkT)(Q`lKC`jS$ww0jvmE~8H_u(RXs>qrzGCP=ce+ZGXmEM~6R5JS1vJ#IqK2gFEXZ&`>#b;WUIVCg3 zxeCiX+{0D;NNMT;2@VJCs12MFlR2Y5Jv%yt_{Q)l?~B}E>(-1#+xm!q*KVU?R2-C{@!CB~Z@EwbLvC|! z)S0_m(}h3!uD1+3zcW4WVcUO(H{5e3mY$X>JQKRmBUsz|l=(M7Zau$9KSfhh@4k@! zlML%FZdQGIXx-X`wb`BrChJu33gQ}6fwe}q9pfDzOjU}k1v zW@Lm^6AXfihK_-WjRFRR6BlkgsPOQE!$)X6z-X_?aC~bNQ`{|v&GYYnI1t_K9QmJt zVUN=*udbI@=PQbTTx9oV!%x16ot#H@+Z`+akR|TG7P5dllp!o)SAgZCx4Ze6WW5ZQ z>cj=JPB6b`DRai9QNGgq0oz>`i=<-hi@P87{FGyCpHkBP@u|TrYwqYxdd@OQ50wm+ z57l-}yc%))=MATIW?ctQO5d=Y%>0bOYwMNwR+=ADM{uwjZ|Ue`3|P^yyRS<32wW17eokYC5NS zOs3*l&H|m8TdssB+A2G~Qndf3+Mc(KxvKe*m{>(r6K{_Fi`FwCE-tfrEORu`{06>j~wwf&ybv_ z+I7;`e&ea9ZxTY1c(bIk0vF}+9%)hVx-p&WoX?@wgU|n-w@qR^(S2ERY0atm@4H!3 zyrkW}mm6-$zVLhYgoHA-iAD;Op0-cUPHk@Xc_zH2;rXS=B!;aqEbGPQew;s*^+O?F zkHaEXC+Y4lq8BC}w5}TK!smC1RRMAIkcO)r1e#qQv5=+XXn@%}91J8M<5_BolQ zr?AI%$~G`C$gQ?`B7b=CYoi~@MW;`(pOjqMlXCj`>DTLxPFu#VH`+BrZgO}0fsGw9 z(weEwLhDbx{awZKw`odNKUO8jK7kfH9lsB?ml!(~aH8=ChqXU;8 zo||z_Z@={-x0Wq?(|&FXk1E)8bnnr(Ocy!suI}K?-nNcwedAw8p#p|V`6)aX=Wjnf z=|{ccWn5}w|e+_T+>w@q5+9Vj*7#`o`dChceg3!wSE5jOW z=Ct~*dRl$(A6HI@Vc5#O`=aZUPdt3aarLpd?7HRr9nLw*eVci9GR(ah@csBz8@A8} z(HSBQXA9%!Y{~lUxO`KDShdvagWCJrR*9{wF)3ln&I~QJ63Bk3t(s-_W5=hQ*^QNb z+g|2=;Y$#B>MknUX}M3}OKhR2)v5~%7%Lc_>#pCt&TrD5`^VBVLyGj2y-Nxs1uB}( z#rw~6xXiezCAdxOTy(;*y%E>reRCg`Xy@Pj%(4**{^I>AU|7upuD^Q2#@qfrEj8k)er0MSy{U ziBn;c2Ll6x$^=H03HMJ5F{%hTW*l6>FoBcd$FXJxP6j5gxg24jLaMq<>1YE31K+RY zO3(ntMMImD4Gav72RJVuU|?XG;J}l^z`(@8()SNE$in0a9);jw0qJC55pn?25P~1v zA!1};Vq|7wgAGhDFfs@l3Me`nG%7d*CKi53xHxg)MsNuT>JSP1;h1pi=#~7>g41ed z2p!|fUQ@j5gUtGk^1V8r{_;Eje8ytI8KkV{yh`jMe`V3v3OoMq4i7Rob{6-Px2%YW zeDU}9{!pdkY zuKIhX$m)Z;hBx=B=PDl>rxvii;kjn;C-z3137g)>?cJ5r_vkbfT73@TPTj?sc;oQX zH_Asl#q4^m&8L4}yL#v6__#Y)R^RyX`qxwux9cqjnc{zW^Dops%jUcPTzXX6^ui5C z8ISXS5}19-=|zO{%F`_8cuvf7^)?igHjyz+F(^7%V9WBoK}wL*$JqaFrBzi`kF&$c z&%ax5y0S}%gzGRnzgT)!Ui*3N@fhWVzqp)s5+53D@p&e+b#yi=lfT4S1Hk~4Qa^WsDDNkvMAw!C*tI~q7PyEh1_ z-M)U4alrxSi+y4W2cLxH{b#UDEQ>toTHXEmb9ai;j#n8P8X22DZh8H{RCwb{0T&lR zdv{@$l^Nm=lgnl<<#agM@};zcc`4KK{+{?Ho|fiTS5BnMG---Ow&+f*V$0jHY0@+2 zl}wH77ad+RTlsAWSEx#uwQc6QmpwcJrCPR^MK^M=N;G*-F)(<^&fXKrB$3$ZoVBMu z;x_AazVHPB`Vap-I`Hq;)IKJTKZ%o_5Am!aOK8y zhSGMA4HFL?l8y>)k3M?$#0t5FBQHN47T)tKmO(o9L|qGWp-!WbOlKvN9+!Iao+kma zPrH`w;N6|Q$H&o{*~izcUx>%RapQtAI81gTzX+6-*&(i?k;%da-50 zt)2U&Y_=Q zBsSDF_|`+71BI5gU>wwS-vM&)7z!pPiNEhCCth*4@ahCI~;qH$jo`K z>CXyLORH1PSI^Bo>fh5~;QZ#ndUHdcJ28DVlj;}}ufObC^q;{&ldn&FV)d6bK}`y} zXZLw5Iw+7}c!T@k=jKaoE%p*D9f?1g*ThZL7u|4>#pKFLfwWJ;OBT2~baW}Z8co`h zyyU8OtJxvf!t$t%ynIoQ&wOzB;?*;2rhLKDfF@ziMR#5PoW0Yp!1piN{#;z~X=W zte-z=nz4Ohv<`#8vbxrFPOGNI?mj5q@N&v(F8j@C>QS*8$824goEkMJoOD{P8MSD( z=*5kmHEPS93fqk(>kJ+@e(>tu{h%#PhapD7rmZp5aP_P}#uwh*_r`P!@*VlO3QRJu{hlJOXws-3DII<^--nq9Sal-uA z&M8J0-%DR-yS>iP<-LFK!d+WpKR2FU)7PuYuikuog~zs8qUqcIGekz7h%Bz|{5s2a z!+TzZZ%;c`y`FeDrKkGvCcpHXLA=T-Qyr~8NHH$p>yND2aO&%u^l;|oBH+q)zaXu?Tq1*W*BEb$Q9z?bI6PfQTVYp aH1p&7scWwsyTekrq9J%8*RTEmZvp^O*$Jrt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg deleted file mode 100644 index 39633edd5e6987b9b6f72e09ce493a1e3f3ff018..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51583 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

    ka>{HGi1>T#BHl9u2 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%0Dofn;cKl106eKs%W^55P^M|+vL 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�Ae!a-L({(eD@>7-Z>td*N30AIV?&br1e$ zsA%-i+*5LDOU>uboTV#PRENgzt2iKb;d;J=!G{TT^V!3SZ4BnzNK!)acT2u|e%pOZY*TLV7S5l)n13c`@$oW0z7`ayc+EcOjB3C}XGaFhDI4}(kzrt9 zWcVd`mvaK^&rntt*Fq5i4n4Q1j#)k#{Mx!)+`&+wrKLvlCS&6bO5m2rx!XFi^;_n;E1sgT1)0 zk7bvRS!_(pA=M8%7~6KKWb(HEJoNUFCwnp5_5)AfZ|1H&c;HKzzyI=Vz^A z^)unH+jwV|b%5SocBwE{jy+-8sHYE|MZqYZfX_3g{41xGecklWB71;S*|oxh1l9E#^7B zoaWDWvYkc9@rg*GC- zowFz8KYOlYpnFNH>);{Qd1Zd_t9|awnqfQJ%=~22@zmQ7^gZ5Q+j07Gq*9}W;62PTLtQKzP^{GwI|+)A%CLa zuZ(poXBlh~|Rq_&I_{7TGe)Hn=l%1v)fjfO?w0-z_ zATnI3>E$BJY(}T(-OJ~${P*HP#!;@iRo{7BLll*l2zGQ>9yn0^&WT0J(d3DT#O!r* zd2VKXc$9cDS-@zugso}7`(FVM|1>FGadau^^Y8TzP7Qitpm-oreY=(T;sq~ElAb$x zY~0vAZT6fE|70#bktti8q%ZnXz?DnrtC&aAP=DdMnu5x$R$IB|g zVe99fJ)>bZza_(F>3@dw3tS9|9?K>K$}0EsFKDkbxckYkam@-Yr4~=7js+s(-)~C< zIK7yX|18k8bK#nnNy1a)t*d^gGdx?y^!c?=SlDIWU|}V_Q;UBaS2(rm7+B~g{`thu zp%(NzVvmJN#=QLg9<7s%1k)7c*pM2~1TGIwU7@b^1Ju_u`kd*IYe#e91cqdQsTP~QN&bfHu+(XaSrWm>RCpf=UZ3)P6Y*Apj?4{#uDH)n88_)UZ z1?z$w{zkDS-dC7^MSk5i_2~P6a}1)4PJg>rFaPk8p@nfV#|*ZK_u1`VCEf~@XS2vK zu{p23^^g41?x|{f)An#Af4o~@&mXtzY{?eCuK^58mbUopj1o}J+)}OiTGZy#xi1M^ z4g$=A{GBQ;?jCa!HhwWK zg*6pAPS0Ln-^%yw_{4{1F-;ayx-3jWt(5_+jt0+}P87yg8Ze!?_$LYPMegK>iSnMgE_MOHy6#g+Q7HW*RjK6Zfb?5j!q~8?@}f+cV50l zz0I1LQUNO-2Ur|4IXh3bp!{TaM{K{iyhV)@dnWtF6%Sz3nXmTO?9yzwft>;poM+W z_a;%3E`HGy>wXB>9TVWVb%a@iYr%$uU8j?yGbd&*xV7!p?Y~)P1D-V5MfKMRoY0Ao z-Cup}@MD=ajrot6Ew=jvXT^Cf=fB)HpI=Du&?Yms3*u`!*sg>;VL!T~<3*fgmh}v_ z!Xl4bngK^w^ljbwbz-h!$->yEXYS28Z-Pv%JB+p=tBMllz=$g6;J zEeRc^4F?1cEihnv=)lOpAi$HiX@cN|sXY!G7u=cgfZ6TDz7O%G?=4@i$O%8jnxtJE zTyd%KZA~(p4(CzN#fP1E4dm!jk|t%>$?jFC%UDG>aJaUFXQ-msWT52RdU`stMjDi=M1L|j#)byCZAul zKj5@;!|`y2Be82a4u(w>m1@jBwtes8ByO{hRRRBu3p77R9lT>5I&1&>%oSHW6_T~r z$+t76YiY$y-n!@Rc0nANnxdPfu1K8flUjL<4 zxOHN7QC)+rhgWvOcBM$(9kCWHW(=h#j)#3;ZoVyI`&JXSD@?1H)pqnq$Z)NA5*Pl@ zh=2EtJrgU7a<1lChAk18D6-pO`n8P}XBKjtU3$}-wQxrI3jy|TEY>%KU#4B#${dxp ioA)4dL}E^d$FYaHC5Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg deleted file mode 100644 index 356c78425644264fd39fa94cbe21122942871f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15032 zcmex=59-L^6Q@3p0phWnp1vVPj=u17mhh z4mNg9b~ZK+ZVpZ^5Mblr=Hcez0dYWvFoN_jF|jf;vvRSsv4d2QhW{U85aeLE#PEih zQILU2kdaxC@&6G9Sq4T1CT5WH7+`>vjfI_qnTe6}{}BdhMu;>_j)4KBnuV2({r@cn z9%e=cCIMyv1_s9W4;UD(-?CYodGhnjo99lv{uRCLxd#J-M8W##;)=L{b-ypZJ$HW# z$P|IAmrvfSJ{GBU{luxIW%px$$)_u7HZaJnKm2LNEt}bV%ItZ^eSX>Js#`lSFffS7 z*4o8Cs`S>;{-b>M=+!UMix=N!V06EJ`5B-5 zj&Ix7cWB)TpCqp8zws|@OZzS`e|U0Ee&*-Pk8eg?H+vJFd*jW!^UJs0-T-ot)VE&0 z;K!BKrV(w|zKFc7yECnL$M4WD{&D+bw%%K_v;X|yy=_sB5PVYESigR;qtV>Q8#;OpCO9i{* zCDrZuo5-D}k~L+Yz|Lc=Gj8nu_&)Dx0!SqrOZ@qM%N$XoBh&17DwWqAb20u^Hz{P_ zh7YqZ^Df-j_x_71NEySmU6Y>Oi}@PYvd-|V)r+g!41b$@zdyWS+sF2{8Q0G17pK3D z%dfh5Vzt4ivh*d(v)>(IU|1Kpda1>{V5zm4(%)^<)3&d__Np%JTuS7(B($tvy2uMAwbIALd|iJ|O-~kid*eTYn|0}%>;eYn>04A!@5xsGx^#Zf=@#DJ?u`$g z887~Dc9OxN{rQV(`8Pk|Q=c+%ak#;>BXyIW|E*tGdD!g5>Q4?gyN+0OI25jYo2s7jXa-R^823Tw8hUq?%6!w$7b?1seAX$ zc2-Li9Vy*${Pyv$#=FB`Ffa$be%@;Hce9DtNtV1o;bYhKANTa0-*f(1v8d)3`{;|g zZ_iCzarMIL>;9V!D~?UO{5HE*l0RmN;vD0he`T%RlNlIH+~(}q-kp}~vm*Vxj_0Gx z_47B}Jn=dGX79$GmtW4CUVhn^7X z@>i-@72PHj_IPWxN&NekCCfjzl`LUkU_8C&|egTj|CM$yn_O>gd zuDz;BRu-!`vT-8&vA7*+;qxbpRZKd!-RIlaUE$RQAe9Wy@8$D{7gvN?eJeR;YwB*x zDQ$T5Z$|98;}g%=+zDknQrfoUr`Orq zyklk87rfcG-p|Xyp4V`-T7!AbKduwE{PObquH!53gY@vFJgMCE-nu*Eh-UG= z*&Dat_&eXfWP1VwyLwU0+hq626|DhFz3$Gt_C@ZPTQEpNvAFuVpf8q|YaCCV&UfB; zt=8@X1Ecfe@F^Ah!u$*lpPBZi?0fOGs^$Vx246g<~lKlIJfBxp)yw8(%t+46(&*0U%;h10l(+#Iy@d@N}Jvei0(~C)Te|({ zzsf4?572$AH#_KvF6&7v?cIA$_FeZqp1d~4|7P8*+aVcxoHrKfuPa#76!}U0k9<() zn+l=V3u4N0gS_5o&wKm!c%raT&hL|((>~4Jx!ZiF?KjEeWhZhTHcb7l^5;{L&%(!V zuZ2&SW>|D0M}6u}n;V-R_Wr!Q=4;gfi`QGGo8<&rJyO0i+hShsR6(-@mP2 z{jy%kFX!eh2t6<-8Wr!TXXx?sl)r$oHZ%o@S6J9U4Q7NaJ)jv5=i)Xu^P|~^M(PmdR8=v>9xzW33deF8P_H(2|-)dPM zoV4=t8cUAek5gH2Y*dqSiYf4bcysZ;mzY5NK z7g4|BomKX_8T{vN8@+d)x8Q!=sf@P0$+ZSwd-l|=b9EByd%P}St?wfx%b*o$`jg(r zioO2!wW543!=%zE&v{FuF8c3%=-VT;C@KB^InUR}c&Gm0`juR%FD1L{)BChrqMSNg zkL9^mF0a0H=419@%X3Dnw}-}NI0{=I{`%60z3D&07j-t~Dtngw0q^ekrY_okadXDz0*_I%`8eZT7OK940O z+nEF!^fM2LJMQ>vYgn~YBK*Rni%&nSy>RK_&WUqEbN|Wbe>>xC)YQG<{Qhm{HfBGK z*;5>=o*nT0*@=wEYVBX?e4(!=I<5-6{n|(3h413zneQL|YF_a=Li9=UTtWUxz0z-Y z7fzVdUcExEzqWawdwutNiz;s6C-{+kKra z(Uv<-?wCIH8YO5iEl6UZ26iO3s;Kp2i0%Wmvz_Fy@J)t`#@i6Sa}`g}<4={S}@+E*iQV6<&AC(c`3gL+W-p`T5h{ z#I1asP6-eMIF9E2o`16*$L+r~C-u^Qh9jG|EPnCpSk9dj zLOcEYoRhYC*Y40hVQIm+Y@0;?w3ivaNt(PTijE%d&6-{K@baS4Q=+VEkKGjK7v;G9 z=Rd=qCw&_0&mTUPp(NtHUg`SqQ2XV6#Que`dNuPe~`Wvg1MIL}hS z5Ut}My}s|Bq+NgPO>h6tgg^=Z{w3?8Jq?m#1fPVTJk{fI>W=WY#8j>&vd3c{ML3?i z{rAsgp3Gg{!P#5&MS4X~ZJ&51=Da6^MxOkn=b@~d)O=gkFt6QpVn(O6^sCgstzPmE zc7F`+-BEGQ&%7}7H_Oiq5rNR?KbLYM?K4*FIKR_*OU5bdfByfEFc=9kFfuc-GO;qU zvx2J?aD$&kkX1-Q(LlgZSjoXLFj3j5uyNwTjUu8(K@Y*z3o|35J>&J*PP5r3&ffi_ znf+SDT;Kjsx4@d7H=lp5l5yOctaH!jx(6`?q8K=t@`Io$khp<+uqn* zKKbBK{D&pG@5BUhuyPj5$%y2CROb8n;E0xNp!$U}7i|r>A8~T`UP-!KWbdzw`dAgN z&N?;c>WnpN%N`#pf4Xj0Aq)GHMPD~Y24o#N`ET0&xNsB8ZCZ=w9QrNt#NA6nE4418 zJ$3)SHG!9{;te)@b7i@5EjHNo!6E6h;q3k5S8caxSyiUjMI61V#x0X>a(jM%{;y^S zF+g*RfNAIo@5Zx(b_MBIh?e@x-C0;wjHAHLm z#B4-MeU|hahDx-C950Wk6;_|we(F)1W|ZA0iM<)$|4y~N&mHsbNtSxV1qY4I53M3* z{FlEKk zocaCEmu6LJJ~?-kW$iqLkMCAVMQb;@=&aVt)_a|0!@O_Rw_Dr%kE~V_3t>9^T+lK3 z^OuOJnr9!GrZ}!v>YSf-|9Id7*{?}GTZ^ZKPEB=O)i#5xdPn(7Jz1W%$0-II-#z`i zcK(~$ZBGjnPe{Mm?xa(?CF|(I-wFR2rcO+`nG&+2dS0>T1_uV+HP+s38%#Z}o!;Ce zaLDdOWOTN|vF#fkWnPLB6niCInyY%RA#2knDbMW-WthG9ay*cVeW6m(*?QEmE7(50 zvMRo7(K@cc=UQCXuI%Y|>yQkA90o~CK;Ube<+QF^89jjV~6 z%#0`Rn)}J)_ny0Qy`^0XR&QSWrgCHW^pNO>7TRj%zPVRT>{ud8ADR4zDs4KF^QE`ED3QgYgyhB=}Wvf7kY8W%Dq=0(jayW&38+waHR zbk?cP%umb0R#mXtR90kt_;cK(eo>8n`cGC-lTGtALZ&p$iTVD#I_lXw@wPLMQ;uz2 zd;8LVhW|$xbOafgm_WG_-qvGaWMUR%5mFQ|6jo3&2xJv;a5PF(Hg=i_&W%i<-1zxb zY1e$8>d9B*&ChgXt#AJ4Halef!|&hHEe@u+&JQ~N!KH4w&S#<7ulH8fzE#5e$ouX$WSykV?3d=}#<2x3)aJP2y=U2HOR?GA~ zW9gOuReNo6gzn1gI)?pAay~qrv^ufGXwR+LS2sVXRnnMp`0!f&s$YLRgq$DDozFa3 zS=05Yl>G|(hxz~Jsn)CgsF^i4w?xk}_1Erqb<6Toa+ObtWM)O&`Om-{$=hFO$-l_O z?acg7b{#FVOkN+I#xf<$p81vjCKZze508w4{T>&ancOcw-S(g1;IF20oGu5q+|ros zyEukd!mLZJOa6I$qo#(t&c5flvuEyqaw}KFC;K^unH=0%9`jTd3cpj+PP<=}ES%9Z<@an~T|1rs4C@bG zIbC`w*&xAXcS(PdbF5%YFZUPwgZnHtE?msU(ze5FV$7tM%`DZkSYPCSP*vr4I^C;y z_Qb=67Zum>F6vZCI51(pjg;lb?H^3Hecs61r{#97NA$Yp9+&0rtn!iHcGWk(&G=y| z6&dzvw{%sq?XTeEZbem#r`6Z*tZefCT0dueXVFHAgtsV$Yx;Vlvvm(qM+;$G;!g^ zgBO#EK8T8$I3H@7bm^h7nM-hT%H+kH9(@Ft9E=QX_DrA8&P{K4bJnc4Ec!o#-HCmF zSG+G0EvZqkJG$i6fmgd$AAZc{m&&+u3D=aKX%>AcXZ_EpF5%m>VA+|?tE^U6M*iSf zb9BnB$v;F~!hG*;`Eo1X)8@`zH@yx#3_PQoQSejSTPad@PE9h$u2+g?Eluy%ZVfd!yIlWbsp)d&J=H&N zo}L@sWqbYdqKWITPFe7^CpGvs*ONPs4=v6L+WmLQ-`aoGjVAiOOqVs+3wD0^?RHQ} zf8V|HTjlzUn_5$@T)Hst4gdAIWp0_`vnw~X_8sPn*u28jadp<6EqNiV+7dewntA<~ zB|Yw4_eqmCs)%20b&h7vJ@MIZ>>fYYOA1TWo}PU1bjzHhRdMziOO@WIh;Dz^z59pD z*4bukJD8TQs5)|eUihRwO{3tKwDmtIznva!`a;W0wn5+B$Ec$fT^In4Q z$vxYy&Fi`y%F(vQFMN0Hro2V9?jm({%G(UKKHYfw@-mHX*XBDP8qQ3bXle0al~nH8 zDScW>Tx-1ptM*=cE4{X#aekj+)9$`jfBpWU)XR2HD{XO~#HG%zKCvO$sdqG$m6YNquN051 zj9A0NRKEHyZ{(%iyP4At3CuhAN-TDo=;qSnA)5Oc>~i zQ!naW{Lhe?dTgKg{^eJ4+TSl1yT@vMO!K&Fw#d4cbvw1J3NN)&c3FpyvNU+Gybfhd?|;& z$JF3+a;VvSwaTM%4MA!FMy*+Q-m5jgzR7#D=jJ|7jp_P3TJ~1# zC=X|R_uEadHn6|3cQNObiPH<8hh?Q=A#9~N|o z=axRu>=LS*SpTi#&#so>r~Hw;NQs8~koU0E5qNG)pJ`ro0a z_v!7-@?LUj#~!1uRkxe93=7b%eyHZo5=H^;+}t-dk$1 zT2|ZU=o(qDJp6e6n8u7<=EvQv3@c+(g+;nAdL8|@;l8-X8nyF#rmNkvI(hxTOYQc8 z(~tL`PoFNN^VZlcedS*DMeCW{zqNDR?CvVK+}5RMrr21%GU60}P2fYOsxxJ+>LTv~ z9we^zi&qc6xZdTxpsB8*_uDgT^ycKdzHsV$%5lWew8+lA4f>(yE3*c+c_g?)xUtgDVkgstTVo3_4rt8{jB~mX<=dR zf3Vp`8Dax66eI~IWNyiUleq%_HD5LnT1>T6gjB1d=~3m z@3N`>y|S-KJi9V)ZffAizA2(%hG8w|ZcXxC8?3kT*w@}9!3KG)9|xT~S!50hr0E== zuC#epwD|0Q@7~vhWluS>xVdPH{ZIErPmLR{uhruJ>NMfL<}6eHsF40wEm8hfohL&R z9$$KC*YQt}d7JUY!p29*mskCX-Q8lca(lk-$zPn4{Ir(4#wkCJxBp()y=ummZy}Sf zWTdU1AZMf8@j2w6t!S8W-;`KCl_xAp7oPI$nlV}0acRQ#YRw%^5s4e7D4GXM>0$Uh zUDxPROzx4pQDRym7Ea46W$jeO3O~8OidNqkx%}}%{u|#mm&Z>pdUT0TKvVokko2ea zrj+LyXRdw?P`?@9_(S-)eNL2KY+CH1?fkE6?DM0%ZdXQYtm9o?=EVy3oBrvqH))(#R|#%==~BDkbf?-n?Ipbt z3%gF9FuGcNbql-6aov>Ll5Of4#@|A}{Cn3M)FZOs`YuD?M5UlBAxCzEhH6@Fn`FT} zt487M&1{XzRh%ost#aj8yuGwqd1B)BuvtrQUKbAOKY8Ta9E1B(zte8boEe*CdT!Fh zJ4SMXg&+NHT>Iu$*kgLiFUV)V`?N)8cIyR*q;733UKcwdRYzNQWs2N{TwA@*`{&i2 z*do2>%wbnPzQbQTXLIG+O^STf_i@LMp5&#HZWnr3qz@~KuUd6&>)w4LTNX>DFAq1k z>k>P?V&&vxhApS|@J~D)c=BkSeDd-4j2ylUC-?)lJioU4`tmuu>N!m08BCHTG9si~ z(zydI6zuYV!0SA5raanAU{qRBHZ zED@fSx!7W9iNu!YUS%<}y%_(j{LgUviriMU^NSOAAK$)7E%*ChrDw6)=EeSu4-C3b z=FCceCIK!%FDf;6o>H@vw%BriPkh4NrR5rB?|yvv%2JdR8O<}{$;n5n5^Qh$_~sy3 z`)$RpgpG4FpK!nYc1fw_P|j^J$CK?-ujZuQs^Gh!_vxIkaB<%RFXmOdPCU@`nrFZ2 z-rpO3A^%kGe{_`JZTX+!?CyUWMMaKV&)(d=s(q5yvg54%>tb)2=9u}!&F~2N;kH&| z!5tRk{F|$Gz1EBSTeGk`$$!Bo?Xs=A%KNHgZaFQJGf%xx@!Nev?ZRMVzWBnUq85wy z%vk9cxXQC9k-K)|lTFK`&E}qdFkgOZ@`*RymNV1#wncNwWnbRr+ILy_ZI#QaNb%Aw zXVqq2f9}DN%BZ}F!EmjQhL5#ZUq{Q0$(vb&jJ0>W%18&EbZ*bL*%>N3Gi<_?zK_+f z8QivReatc^L2=7eO}9?w8gqrWrmw9|PO@FR`+Ufi-6>w@t{#y+86RmMFTvs(7b7s$ zG3?7zq04#KK5u#vwfab3$+;# zO=4(dB?qaA7zEV z89p)FGwEh=>6@u{%3p|;PSp$BJoD9pLiG|gSCQb;w`P`Mj;t+78 zVqxP%1%rhG4jT_%eE0#@Xk@fk{Pn@(?D6yUzq~fy?)ttp>8kavGdTX9d- z&%Vs=8K$)Fw%7xE&a!FC8n+1_xH@H5HAi*ro9ojb+B?UpmMUbrxv@o>POqD^wz@lS z|L1GE53fDhIq$jt%gHM17Ki=lf0CEGcS>@Vap9d!QR^o6eb=&_W)~88ar?oU3Dzk- z|B`1{dS$amNL<)-)$sfC`_HsE>~9H6-Eldf%;sfd`s9QB4gJJ~Pp#$aw)0J$yK7pO zSy+|7zRmn=rZyMq>`hq0|d`>yk|Cqo2hE>0ENd43UMH?$OTEx2!>xQO%iv&1_GcbsdDWjExmV`)EdP_||Bf{l-U+5L5W>9*=~d!w$n zl!QU`ZJym}^Mp2>`!%O|#rgFsysowveO)C`l9Et-;#!=@t~qaCPK;Pydd|eMKIY2K zX`8rYre~inU*55K-h;D?l^;c&+ih@W>A^qCMP~$@bllE1??>>{@^3szj;lV_HCEQ2 z@ep`0J>vXH)~%7VPhFc48JcX{m#>>&;E`}^#D`B0uZ}tu|H4etn)`dLB4c}egxiK}@mVX@bWB@ZW}INd z@hM_cM4l1r&nb&4UQBRllbq7`Rt1vE&RbJJD8H#HX3$L6Y)%&xAWhB1}`?gk4t?0pKV~{^Uw;tuFk&U zrr5v90@twQ;{PiwJuG8NgyH7YO zsCxX>tz`YY$iX4=k8{E){{VTT!$*x1HhM=fe9KRMWaek|$LyP}Ek|edA)&LYBla$f zOpQ6?XzgKe+VG4~;2VvEN)M6n>yvIJ&yl~wVsPWo>9*d(rN-VXAI#TS7jMux>!6V# z#>ud;Fr?o=3X?TzOY=)YliXx%LK&Q%wCny&_*5;;)XsCR;K!_Pv&2_>?tQldfJKG7n+oU@_%SO)j z|H1!TRq@QFM@$;)oV6!*{AW-(I(4Z`-r>qFg)W8%>sP*L$XcpVrn3EmZpJ&_hvr8) zIHb2kJgF3#__ARQr`PA8sVOy^<6NFR*qz58{xu+da*3366kmwC4C5A?UdEr>XB^06 z?$2JnV%F8?J6(F&BtG6Td{)TiZd!2opzqslA1-?yh~~|@yWq!E{=K3;F}G9iANu>>ikt56e3SK0);DPz6;xmS)?D1STcC?|o$CAAo3A$R z@lOxkIF->v{6B*Ti~WPuZSkG6dEA-=PKi_=eXxd0RyTK(nZMLhR=%S#tH1Al`|V;_ ziJ6VU5!r&Qo$ZI14-2l|_DY!FnRBa7);FQe?^1tO9nhSvb|YbWq4wV&71KL?WNe%s z?Ms*&bWA$wj^264LI#EvBJA-S(n31IJbw${vUTA0Ufj1a`Q3tl-Qq3wf&oeofANJC z&*@>gb|LyeL}u{Rz4GyI%FWlT)xTKS5$F?p=GvVVRaKu|dUe)kjdo9G z&Shnm*&<0d_{-ml#{Flo``s0kJWt-w@YU4Q^V(Lg3#|@Wx+8pNIQv)T>t%DRch`4@ z9AD_DZR7ZORgLO;o&yOV!;NEl=iRS1d)rg?pP@0Zdt>~(J-e>oow2FuqBhT|uBFUA zR?4<2_|{ORo8I{p$&6C`S{N7@1RH9U?`uu56JTI4 zNV0yb!R)-zTWLUdJP5mi^*%$RVNb?hzEwEq#2cI06$*0Z0!2j?Lh|Sl*z`!V} z1Y)v>C@?TcXn>duHeiy0ff>}G5@cjxVqj)t2d(r2i$fYz0t%oem4O3zWbVU5NP`MA zn*6xk$)=yUUxXB>P{Q80V@|NH4-^vLrxlq5`>de~Xf35AbW<33r zBW-A`dLeeB;ZODZ>wYa)`1|&!Y+>hQ&Wvso_ru>GEjs1Z>%ZJ6;&g&3^Q{f{+}B@W z5;n`YyxMWhX0Cq0*S9{l&x$X~8+ zd0Kja{+W$!k`XFf({^`9^Ho1PVtjW=@!sg02Nk>17QHzq(=OQ*Vfm@zOI_7*k%KpO zSlXpN-kP0s_`vD5M^|3ms&$Go;4IPL4vSnCAAV0^%9$5GQ(tnuDEZHj?8bfhZ}+s0 zrw3oNXRS}P;n=uC!f|CvY`?#2x&86m=@VH?1XdK4*7HB^Vd3KaYTTUqE+(IKtA@r* zms<;>*%r)sFr$iPF~iEK?9PWSHE(Ov*65bq^+H%9;Z2O0!9~&HkFC;Or_D1WJ-ud{ zZS#5Ruasf#^Ucy{c4xrjCt=JxwzA9i1*<(e^Uqmr!~S<0gJsVPU;m_>;ZD*Mo^QFK zIA_hq^DoZ66?UI<_Dl7yo06N>t<$ks4x zo7LfF+c^E_{Hy}M{@L3qeOVq9DEi~;sr1<2MRxaP13b^{Y`!k%q9$OO_!P7bO9Pa# z8JUyD5MD-+Pw$>r^{;%iwB> zHzfT2+{KoztaD3i_xEEDcWw#n5j$eo60=8S&eDxKw-+COf34)-68Xeee#X+w{T4H$ zo+NzvncMKO=e^*}g}+X}|6ur-e^0uv71N>^5mtj!scp(yJw|5sjIWO;ykQqP&8{Ii z%OF$0FRA8F9p{>#e_SLEvLy9YX;?`f((BCEu8(i{_(J);@vh@`Gp34*FbMfg{EzX%o-mgk);Cx`uU${%X z@tnpjJ~#gNbEH*>?4zqO*%{M z-xV$Ie3bkA^fA>*l@nrqO@C_^`a!-_o1?1s%y;?sz7iG^HVYcHLc}ym?#e#T+;pz8 z@NK_{T$?@^*`(X7Bxr zFBzVH{dc_a*BOhy^&6HwUe0k)=I6F!QrBlBY&ZD!O7`!>bv~Ib$|fgFa+(_Z_NOsu zyj9S=rJ7n&)<4lx>NroaRxMmQZ*z~mc?~&UdXv^G4TF550X@=C{xeSfc(*%Up**ERkS^Gu8H$2Yh;kmQNCRuT5=H+>*J=`vL#JS$Ss$*T;xUcOY-=3LIrd+z&__jXy zZ}>a*zxxXx#BV;P_cYisCx)%ZDRbu*!DH`to_Q;(XLQ+CK`Y_(wV(-BWuc}eg)jM; zI38JT(oomGeBbnK!|yg`bGIl}sr&u;EQ#MQgdUP+VSQA-^5pVu%2P}f9k=fVwJ;(Lw*X#){uU;0MtlL%o1-3!k{hy zTC2{)#0Z*H2d|)H6l4GoaWpCz6i#$lD6sJ$v_58JV6+$bb;LH{Do1w8@fJ%d>CcPy zmb=W+j5-%1(R5KLNK=;6QhCoJ)6dEpnuj(uDe3%XpR!KSf;m%`_43+;Sqnv?iXP~G z_B?dZ+M!$TmRD8#bD2a%wrjVhIGr`>+xM04@voJ)yO#SodLDH6$+h(7;jcwI4__5L zdLUSbhfOs`J!$Tv03*SbHE%V3+a0(tL4k=w)btX=!{tZgcydoKd2}=Ntb2+|_=d@Q z+-L6%k@$AA{JW3dp}Z^h3>FraYCfL(3N0UX@xQ6JsXjJMQ1<=7gA>0L9ywQ$G2QnA z`;|W{E-+|G&3Y9uJ0Unx+yBU6P5xi~@|I@ITw(i)r{-pExyStZ{qx1|au)dN&iHcl ze#EUHyIblE9OoRjBwHFdH$PU?O0QHBnRU#itb9`EUeN-jxsTRd3!l-qA(Gc_iW|eK zT|A)U%&K6?fxFrJzIYsbf zg1*3oEQbY5{TgBuWjnt1vc9>qhdKMjQLSZSy|J0aw+{--Xlh-m41Id+(W|qcHmbL? zeEo5nb=PvOV6O+w5&~;4`2BYNG;@{s#&Cgx@2&5Al4hqIT4eY|YQ1l`!Um<7uqkX3 zPqi=9TvqtjsL*0^{psd=mfI?hemqgXEVH03`{yY)D;{o_Xzm4(-aJrfixIm+N{Q}l>ma?@qCCoNeeM<+{l^jEs9HA~{|6n^-r z>gYM^1v+=l*fZGGO0>Q@gio0o9U2<`gHd_%tvUvi$){dPghw0~tp3j+vOM79+4fV@ zGwt6AzAWzOv9CB7K4aU}bXzu?&Ce+3`MO)#D z__h~9B~Om<2~R)r`kcMu&!XJ#=?MjIm+vdO_n%=8qn7afN}C&Rj^FpSJoP?@AHEa4ZD^bMkz zUM_A7TaKObM0O@8&#(e*>!qO@Cco`fb@p^fkWMkOPuUw80WZ?9OFVfPI0bIH*a}n2xF02H5A^rkP2lb;?Xa{E4%>N+agW&1=0o>>A89+zrP6xznxdK#ht+KM z>AybqbR>bC`TE?T}> ztck(vBh&0G?lZqmKNRn1u-X4iZNSN-z6?Q zsy87`Sn#HdFTd;#9)Er%$6cnk&mP{L6vW`%#I%dAgiYOVj+Cu+d?j!Ed;U}bxw6C6 z0bKj%Fsa>8J6nBp+PrsKiA{oXEt|KrF|~RZaIE17+rRy_LQM6D1tZ`rcox#)Ti-6ifGKZ;I& z`nYU`*DfKBT-O{o;bSuvRP=sI+H|O)^2E)@WtrE$mgY5tEmkPneQ$Z?A*S+{q9a1f z3RRivb2je3drIv;!$JIDgGEmz&}HpP@$K!&!|P;>(*q%-<}P{hy(74a2R?Jz|bbD;F?NeQd%W zu{P=HFA+awhZme}84QdEYCZ35TqNcqD5Tshm>anu#>gQc!)SVI;)WS(1s0rr_#;5^ z8jF(NjNdELOzf2Ta~8S$IGz0R%El$Tmo1oC%D7!P_$nXYeP33mHHi`B?H73K|N7Vb z+!-A1c>Q75d7fMTOd6~Qy24qxgH8W4JdwK6F6s8snNxS6!onv4&7pZe4=zs-SxN74v`QQyO8}yaAHGfEE`uz?DYeUTc%j7weLNAACqF(G7=!MdOKT#lVGk&F6Lx2dFbLgTb0 ze_z(NPyCkr<>?-?HzmIn{xd|Z2!C1pw`?I{GJ-+k8?8q6+W68w|bIJ-G?^?su%9;s5oi*d74J{8sFXOj0O==+Q--E zD<9Id%wepwZ>m?;(lWMMSdei?a#eEGe+CQ2Ih%tP@f)W9uCHkN{^4PmtGLI)W2#3v z><=u~NtI@`w|vCqlP=!4hjrBk`-c1@2?5g^E2byC=X`DLvPf)lVe*vH&&NMM`BPEc zu~DKw;_2ac3G!x&ui5`ItP%WaeUwr8?s2Y^E0&T)O{;zxF5NCDetdF`=*_lYyFyKq zH(a~TVE4m7VZle9tetY)EgP?xq~7-_^}9E3_QyFZbqv=n^|QSBW;0VsaCc+pM8#HH zSFP4t$#n+#tE>)&UR>HFx}}xx&Sl?kdv>O5JP@8JxL!QwO~$f}#VZd^-6$lm)K%<1 zL(TG5oo_|!+P6piXL!4r-~L1Cmd?|wO=QFu9ID#NHMzm-!=;7y)Sa9jgub-;{h;=h zW%IKxzW`Up2Rd!fHMrtU1LL+&(30-)aWM}lf6aTt?e;y!TdQ4-h14I|?yT5<>#~sQ zvln~!J0E6J3N-NInR`j1-QgW$Lv8ZX;OVCq=Y1}Xkb1H)dCgYiE{!kKR(!RqIu_BH zX|$NTQFN*I_v!CL)p9R2{WxiT>g-P0ZL97}nk|}j>(Qi!_YJ&D9eCFXJTXlYU@?2Q z((>0qPL_a1frbW&t^Csa!i8R_ca=WYn|0GBW!0|Tn@|2{sN?xO#hjmkZ52a>-MgO) zmoL`ps^HJCSTXTApP^d!Y~9@_O*mF|zf@|P%~|qWT0Q8+`&muW0f#!Pwre`5M--NR zZz$RoQO2-YD>LTncV&gY>~|MDPkg*MLm{5&Y4l~LN%?ahXYtMGY;~ynU~66ByqUxL z_SOqp+&lh-^9k`>3ApO`&Gq&-5Y!eh$3vLy*;E~qFd stPRXuRbsOKo;FLOiU@k diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg deleted file mode 100644 index 00c82d3d9f5f13a5dd36eaee35d982557be2b1b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130048 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≈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≀?b3cK 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 KHUCroe-i+BJ~vTk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg deleted file mode 100644 index 356c78425644264fd39fa94cbe21122942871f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15032 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 stPRXuRbsOKo;FLOiU@k diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg deleted file mode 100644 index 00c82d3d9f5f13a5dd36eaee35d982557be2b1b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130048 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≈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≀?b3cK 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 KHUCroe-i+BJ~vTk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/WARNING.TXT b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/WARNING.TXT deleted file mode 100644 index c92b2592a6..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/WARNING.TXT +++ /dev/null @@ -1,15 +0,0 @@ -# -------- WARNING: -------- - -This software is experimental, and the force-fields and equilbration protocols -have not been tested carefully by me. There is no gaurantee that the simulation -will reproduce the behavior of real hexadecane molecules, -(or even of hexadecane molecules simulated using AMBER, which should - be using the same force-field). - -# -------- REQUEST FOR HELP: -------- - -However, if you notice a problem with this example, please report it. -Peer-review is the only way to improve this software (or any software). -Other suggestions are also welcome! - -(Contact jewett.aij@gmail.com, 2014-12-16) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg deleted file mode 100644 index b0d31f88453d4594681cc81791d66c5c1e8c0b99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27017 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 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg deleted file mode 100644 index f7c13d0989c124f0c1ecd791045fb525f14a3f3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36181 zcmex=N4?hnVHy<}AC$AtcAHRTrpa2(-kg$+|Fu#C+0LTzVkWOY64i**;0d7ui0g}Q0 zLkxl(jGT;Y%#4BzOoEKef{g!1|DWc1||V!0R{%fUrXQ$KIk4g6!rkl1v7%@OFjF=B+a(o0nCLFY;`sB zCr535$-PNxi>HAHSeRMkx4iB4zWW>gw(r{Se?#cAX2q%Xlg|I}JwC50tS)V_(e%q< z8OzVk@H@E07OF$$cfHx%Pt~`6>M$_Kx9C28=DRrcYgpOGXCZOi2{OOm{k=2e-KmR# zr!S{|xfZ_6*7?h)l9k6hS1>Rz@n3v=|76-fyLp~YcZ^?|)QTVTbux{eZG^CnJzZuY&4vux#!otv3Y<>iYRTwZ$rdg$84i68FT@1MM%Ie>xX*UFRs8C<8P zpU-Yfw$qneY0Y=hC;g}YZ1+m9Rb{O<=_!}A-fYk)ntIz+^^CgnJmbYL#lth0?CaJ0 z*cLEGB}Ptg*I#(r`$2Z^)wy?0PT3hJs+G0-U^IuMZ>+3o<}If=yB-^D>omB!ck1by zX)BMF|6RDqf#beo_xba07zFy~X=P24PdDq+>j;VVvYqnNd)>ysITw9GC#+VH*xvnX zOQf=M;TJdGIX43Ct93f)dnTxqe=2{F#lRrvb9nD0`E#$%mR0f@HHW_|$`qNjRjccz zb+1a4)|=W%PgLeSoD)`54+@D?wnNcdiUh@p(_jw%+~Kyr~mo3%Hq82 zqjPeqkK_`$Hs>0K3P1X|=v3Q^u#iJ`#d=A6U7!9lSf)?E7+x{Y9@`OSV``<{Z^{tz~Hvm>M}Xqf=X3E771|_ng<%kgMzO2AH1o-aC0c zdjJDZS;vIl`=_;j-knp{QL3MA@U53iV5PO)#?J@cxr^3pITW|0RonKtnNZf29P^sr zu4O?lmuN{{%>H6&`C%&q!-s04cmE=$pL+X6ew~qEl;CEMO{V@*ay-9Qy?Gj*v2E42 zxUM)y8V_PuIsVhIxos&$KA`I*oyS zvf^svH|f!*_xqbJIb?V7!GZJr&gbbJ5w3x9lT85kHNU$4^Nw9}nCEO+q~ zh0sWiP2GGZvu1YBEIL;cTDir)r7}Fyto>w8c(}y2yfOn%_RX{Hxqa`42QV<{ZCHBk zyvBpq{;4<1G}D&vzOp#csH8*X^|H`ItBX{-ro}!r+borOt953M@aJ0g)mHDGEc`s% z_9ed=14ErR@4Khc&%d5~v1wD!_Ep;^9o|yhax<**S=lPD#Sw2SmbP14JbN#EYx&&d zxLr$iEJiY~TN(Srr&*aPgXIR0Pq<$gU{q*JK zZ6_>GO?}vQ{Gr~esME(LuAF&fQ_Rw?j_Lik{O<2b6ZqTQxv=_m{Hrzh{ASvQ+Me0h z{pj^C_Q_B08d|0S2*0nz-_;<$sG~F#(Tj%ya|H^ZH zPnf)B4j}-n5G1sxw`1XUl1D`X8wPK z!9ak4iHV7knT3&=iH#YgikXFpm644>NLWNbP*g#TUC}|wL|Mha(A3PxIN<*+1`b9> z21Zt%^?5hAnqyxK_66!=+@~h<|wxbKX|@K6ESoRq3#L zqox~UZg`w?s5p0Y|KI4@*&T1~%--{rzE^%GduQ?anKzZspU71_f2z2zE;(ARu5j%q z>9(zQ(zQ{nL9aG$IMO_S`77lomRio%QGdPKJbE4oD^AF8+?E~9bv^PwLwK^o`kblx zhtBPP`|poZrtq}D)m6VXd#{M~%$#+t@<*voW%i0!~GYi@0n-jZXw z>SJv5YmwLXTNC09>*Z>Ge|-LA-<@-}qvhE178ve(_IG>L$z$stv2&`WIqYBfep2MO zZPKQ`-dWNul{-$IXmQ&j&3gG;*R{gf8Ry@8o2{@~BIt{q_N}aGv{9Q~rcbz7alcFUdG z=Gj}9#%;d8X{UV0wL^REEZ&qD{;lTNwaLMABg1ZLtY(=fw(st;i8|91wyR0Rr|wa$ zaahfgbw723waE5(+q8F2Hf@`9tL68~JtDacaX-rD-D7IL8?S}p3PPVL66x8e_} z7P$X(naS;VezQmTqeaWs{d&oLYU-NeD9df<=Y_1^7d>#Bwiug!e-UDs zShhF$>#rS#E^m)m^KYMaIO4!1w*@@*K{*N~t6#-!$(M4mGL_9J(fXYBpW*hG+K1Ph zOSY~^($0Q=b)xnIrbp!_i^>kK%2}+eaMai$n&WJl(wl5)V`K2T3VXp za%SsY=H*eRBd(XeUij8~)71V`yAI_AuMD>mxw2ucQ0a=cEqBwb8XRHgs-dZ8UiqZ|gWeqgu7JQ2TnF*lVvn66^JjNA5UU{;zJ;t1v(Pn4U70 zMXSy-9{iPKf4_EfkGJ@v)k|&G1k3i7e%$V%GC}ysj6H&l)1E1RJ*@mG&GF&kSj~h_ zI!#B{c+@hvo!WD;w=SywwAD+w!lo;~B{saa=6HW&Zs@l&oPmuYJwMydH4TiFYHV+aW8MFk+@0rbfFi_BX(tDXVy;~%CY|2DE zvQ<8K5Z#~a>vU{W=WCj$|64hgS}m=9E>+KisimJm-_kB^R}2tjE5#^KP`Eeu-DBb z`Oq}M#$|`jNBrd78b8BbtIH^DnsU^wofUfPmu`Pw|8?^w-lXUEvK7`{cx@+lFnQ{X zsu_)I0vZk^wa$$=;#o08>{5lY5Ntdjc0xHxey`Y(mQEy7~j2!jd9T)jJ@7RdRE@@+-nwTw9S6s z>9121ZHm7#uDk2rKPB1UIr8S*%+->cUKDsAN;oF@@m#_4TaDKzZn&}L>c;rvAAeeI zo+fvYBh*+e>C0KY*eDC11F{be+zi=&=?_!oEU9e^G$-!7zD)f6q_s2kbR|_?_OWqC z^BsH4(z5iGlY_x&=a0!%YFfE(Z)}#^->uoTr`5=ON%*}CIX!8n#Nrb=PGvVg{x&Oq z^hRaFsTrp{ve$~raIK9zaZ18=TFgTgXB#zfopnwtcDk?i-Tt3}(_`A{Rl6qaSzPug z`|_>3=9?GKI;Yy5x>4&{nBJ0r3H!DipV6KXoE5a|wr|hj>h%&rqCKnl!*^J8MdX%< z7cS~%oF)-DzsTak89lw-o6k519;r}Co7(j%Y~mf6mC*;jeti4mKf_P|qcg8I?-Y8K zb2e0WT}-r9ewfzl*+wr{EY}I+u6FNOU;T2%qlla9uExCI^=9hE*+S+^1lw)T)rS(jI?{%>1r)AuX2=lrVT#1vOstV*7 zD(`xfy>9-Meg7Gz*ZO7XsacC%d$(Y%-j2(1eES6>Q*$Or_SR*ex0d#aOgZdt`R-gz zkzsBiLtmq(`bBF-*Yg?1Z8q%|rf<6LWFKuk+FWhedSYT|*Vn3&0^y=x$4WCFr?2i) z*735L|M&2#fR4vECx}VUiFOUS_3^6KH^p@(;a#TrC(Rzk=*H{)Sg@;^VV>(g`F-D2 zg4nn_f~KTorLUW^jpw|k2+O}$TiZm>yiB|?H(A0bThe7?$s*D6>QvWu&RoB{z57lk z`2}{}%y<-_cKh3jR?Rmd9%5@#X1TR(h~SBEV@|Ae6>9X;&{!q0P4&m`TGz>rn#UVg z+gv}oSv#gV;$!yh#A`;PtFLt(VC*pR5aL&Qc=*8j2ESPwC+*+BryW(Zz0Fegu%_Dr8~t*xeh4<`S5F89M}#W$;+S$wP3TPExgt$N4m74*us=GWgvY;S_&x4mtj zC@8h_khIvLl$-N=uWj6^czW5+u=z()ja$B6UZr{9O2yNq>p0nqCuVJ*$$fUo?!(9S zhKhdd&(Zw-cHj1y+Yg;s%eKbJrXz0F#x&l**^$pKe!r@GF{WPQjI~bIhp>;gS$U(= zQ!Yt7FO9UC8$Rp8N}tV_m*j1`tbR3E^J0g9c9`JWrH#LTo9a&wj-B7P$wF+Vu0XaS zZ|*9^>#13;KQ1SDi1h0xZ>l;i8@TFQ>-hyIjGcqUc-P+vIP%Revm?R$YMWC!>r744 zwp;7A+!hSB`N`^efcsWd@0NzQy(&4}du}+SXK){wP}{LHZHKGWL6L3c-!3k8w7dP8 z)wc6+xN}nE&XC+)5WpkubTnrV&Cieeuxn*<(lQX&Fm+(uhba<_{ARw%Bg<{yI{Ns_gdt!RlPt#nJ zuSL784;MSK1Z~JVF8Te~m%S5nN>|TOukU#j@wGQ-M)9OMicK*g-7U9EA3l3@k^9&8 zmyg&=TqGm*&Hkio=@nsk^UCTOs~3N5|M6(wy3dza$xidw>-OkzaJb zaSSu(&HoH$4|I%Ud_67omL{;v=T!e^__F{15e9uh2GEcd8!Ia#sNoG7!D3)y7BmnN zHgX6QP*5~9c4T374k}bq4oGaA2yS{aGcwvU{@M6v@}1YG6}|LUzgv0aVs!o1IO|*M z>s{kb<2S||hgRGTUAQhvIoH0ebKMqoC&!4qu9vg4r)8{*nswS*$NJ8iBi}V$uX4v; z?rwY_y8UD$i* z?-ran^7gaikJ}zAmG@@*{+M%={c*15S^u)E;Gp}RX9DWf-WM(X==!6TW6rVEAG4j* z^XHu2xUD7bzNzKaGP4W4r`Ei(mRKmwmwMwU#}BjbcP3d1UlCC*IhXR4mE#7N%r@_u z>t8io4+IzV9AEiop)jM*qYJ%;!B_qT)CnzoAhJ9l=d1k`*%K=w*pjdO3$U3Y!)##H z*2BXzag9}bk!6SUx9iQ_k8MKymo(h}vOx84jtuAJ=`1YU-99X{YA^U0=jFZFB6BA@ z*ZiwGGjp!4w%FE_UVge}?+0ax^>OS6wjc9<^+@>7+zB&cygDu%R#;f%`^fW#QPJj; zOtX7$drmT(VC-8xBkj`q_&e(|+fI819GN|N+uhLDrs0b>73#fN*zPkuw?j=JUvgO| z@44dqcT*RLJ~jx2&zg zuHU&f{CgK(HMQhw$-$eElF6JcXIc{%Z<-)|+1=j$)PIKmM;N@oiG_uQgOh`k1>8|% z1SJ+B7FI<=0VN|xHerRp#KMgSMGcHiiy9Yhx+tP-;uMsWJWwYm)2>>=csP(r&&`i>&y)>D@-@h2MU=7=60D<238>JACJa zkFSyY>d$`v>mvTszt>N?lXtW4;kEm3_DGh_ot^%N|7eBOiTCO`>FW|Jn5xZY#J~U1 z`pYz{?C_1Mc~^gFSJg%ozf!brE?-^T6#TCHkX(W6PxT00pIa>tUum8xE^BM=YGTMN z{;@sz@w@0~o#_!JvCU%Bt5i4Hi{@{#I+$5I_kPHawy4F2Z&b={eHdNmWc{DvPMzlV zzt7Gr-pMB%xA@z>gCF9TYS`etJFkc9@g>iaPGz9kFvXnpZU6TFbYAQQJ7)eowT1!tonxrd99L(Y&QR&3e|% z@9Wv_9#6Yrn^W*(Jxk=dqwD1VwEqonc)mHKrG8%QCgvG*T&$MvC??`B$a#{6@P&h3jg)$7>CbiQ*vBC}=3#7W5>rq&J}*Ckne zHeb}$vpF^0c2ku^=H|%cX!)ZDa$U_>+uk3$RB`?9w7K!o`+xqqdb!elo0TyikHB5E z9=5l4pC5_*xZ^Qj`c~&wA?qU+m2-Aoj(aW@+vq>@riRPPOOcW-E>0pg(sM4FbgugJ zGSn(5qw~Rx%qyCQlDrpMKAgGe1J6Vwj_ZCLp?gyTJ1)*@J>uM9@i*=7G`sCUCxn< zxlW#E**vV43+haJ6FfiouxQe%kY^q2Ca=uAGFggWD$Pwf82OmX;8uC&j%~W`ALiaY zRnybxFML3IxAeN3_J`kU6$P7mJC^D>9x7RG^4#RIO_;{XAFOOC*>gfX79N_o*Qxzz zPe6tgZ}5Rd!l^rJCZ0`~6b_$NIX}G4%d6>mcIwHUHd9ysNS`9b*1d9l>Fu24pR?cV zuyL(QN}Ba*n&hgKSIc@P*0fowFqkIAtAoYXG) zAxX-~u>0AMdG}(^eyI*$_(*R~PT97<2j8=L=*2D&fY;wkPCEGNM^C~x=FMIh*b@j!M;${YG zoj;t<2n|uYYTBsz%++J^h0X%sTE8h<1Y}e~URI>FGZg!;>^&IbIVnvsan@O;d6}iI ziL>;VoID}bxe_F--K&gYcoY; zvX?A+ld>c_ey{1!9BlZE_|>&lyWQ6;)OcrvOShJWG!C`G^ah~ zy=o$~a;DEz*I@N4q7g4F9yBKfYc6-@n^a=(#;fhovoov3XRVDtdHa!t>6e$qTkm!* zyptMq*zJvpRO4AjRU@8;3to9Ej+%@6v%hINjZxdc#@M$@v zawKmNOXt~$^Z%4CR7IYiG37cdZ~12SpOb{=wcBtQy>zRd+>x3;>dfT_)voTZjrSUyDatfC z8N9O~cFVmF9?#$TiR@^NT$Y+0dZA;M&`rOiw@!E@E-+nt+To~;@5)7vyg8R!&S~_e z$Of&NayjtDQ-{ws@xFW8r#)wTw!`T8w$F{>_Jv_hE)g^GZC5_)s8AN}o|=)|RdUW_ z=kZhn%gfdmp7{vn8Xt91c{*u9nuz1-S*F1nnKR6iMc#0z+H{^QRdTS|QI}f(QTpAy z$ZMURch)IupW=_&qjEYW?CCepknX-Qz-_47ZIHNtKqkM{t;fk`=HzdMt z{F}Y^(L$dsLR~D*2Zb1B$-F$bbhCfS?Md^v);RcPteB#5-FvRb%1*FLj;<$s2F!O~hg_GR}jtZ$ok&+xDE zt%WlhP9A18(VTN#+}K=%@9CubMgqr0E=Ot{N-$MFak@L?nySe~wUa{3O@*^>NiSTx zT&c6*Zj;3FU5!SazqPav2x+cgS^v_0Rqe$`I&8CJl)txU?QdCcac>gi!Ao~$N%vdv z`WLj%dUfG>Q1=`+$;FpiHu+>`_Zz9l*ywmDnl4a~x--#n?R>AC?=MSruPJ)SvM!Q6 zakGBa`_h%I=Z=@_F)q{g_lQvu+ME1!ar2f_mCGJ%KFK##(`BaSdX~$3y=OZlWK8f^ zU6i1tZSkbpt;kWF!P9zjj1t3B!v)KHBxMEnoaCre-YvDF;D%H6Plpp{3s!F0yV!gF z4jm>v9g8Q8!6lzur}n0L@-rxf@P3JISoK$lOD_qxMEdYF1y(2v?si~ zv%y|O;^UQ;?=QDj&O86oe)ojXYo1+ImNII`?%VG=U!qZ#He1Ep`R4)I%K7P8OEh|B zOqtB8JFSWFEN5+~$GT*fE#jOf76;DuVlZH9xf5@=AgOOd$YayAZTrq>C@qt@RrK%p z66J){H4@X9?RS*5hu@No_>wW_L)Ze>i>dRie^;7iZ`1A5Ej0hKVk3`oof z%cOTcJpA2hd(F{ltg{zwzV>EsLtVy9jb)C^hNe1cbCp-EJQXGJ;iKV#WelZPwoEjg zJuNEgyTO&qN^`T?D?FmM#(#S{e~IQ%)X^Q)rcw~F4M>DTdN zwp-1n?}AE|=35-}yp1Kd3NXG(`F&^MU9%rMHgWfVnsSc!UjEFY+cS!H&HSjb>v3zZq5Nz4n-y*^+n=nN{JPTZZ*oC%TAOX~ zd!L7*dpGmy<}bR|_f+Wbo<(onG{3zL@!ip9w`ud=Fwwsi2U--IyPTamtD_gaJzD;3 zenz)=?vYc=o+#J5P0<*myiMbi1(n#Emci)~%W} zb85;oHOJZ06xz3+RXJ7abUmU!#?eFcbdY7Q!JXEbm(V5lBMR$ z>t9_XHvhH$zEL&gw^P7JKZ#508mId#`5E_T!)2d`foy5&3yzA4otgT1!Y6ar?Rx3! zWM7sF-VmJiamG$={o6 zzt5@mKj~Cowzhtn?fxfgEB+n}KfdM9yxZFU8QS*WDSW%qtS5fI$78Xow>SUpIB}fs zdi&eMho#s~eG8N6_!G^o6?X9G$UCS)6+-6jf@o|Gb$0sf_6F zE8PDxTw@B`cYfVl-(9|MSm#s;FM7N&_<*(Lw3h)L*NU&OJ$>9_KjZOCj~)6UqJMuS z->UOE`S;Wki*NfU{r0GP_jdo^jc?7wuE+n;%ik?`ZFYwH?=MCC4_g|-o=$R34eM?H z@UMya@#Yi%8Rk4%pKQ6Mlzr>v`s#iAe{TK$aIq(2$}@xAFPYLUUH`e?{LCpj(Rljl z!yk{FcZymzJCZr|Z0hUk#H>ZRl?Gea)Oj2`eM|7ehb`W#+dlqw)5`pIRas?GwB554 ztM1vAZ&P}!WM}$t%0+!%(+QU~Tp7^{2A5wS+W|hgqE7ywF7C z`COORZ~5OX_pj4PbNF<{J653bY0f3H-s?Z=9i8g7sx%9P$62N>*)!o73>#9 zRwuQ}1!hk-{G0s9>POOt(B;3azpVDU^Y%p5!-SP9qheOSl{W3$CNJ0+zM1*@F;U}9 z4c(eM9?JdZ2|pij(&KUXvavkX3kCz6;ytb9;(XLbn91ArG~oX%1tNkZ=3$h zV$wd=6_Z?gr+NHq$o_oP?BZ>&^9*ODgi6CdTKJxrx?t+M^FnEf`Ma+R&0TS62J^kS z{#^5g>t#$+n5xb$jChrK&`dFp&6__y#&OfC#Z9f-qGZn9U$b8??oDpislRIuXIxyL zzD&8(!upP#+0**9T~<*RQdKLxwD)dme*Eo`7E8+8APp74LkI3iCxl%VKkpTG*!*AM z$Cn+evs2rQ*6!LO^>07Oq^y|r8-lE3y!7YnB*xOsID-8GFU4C4C z);E_9mE_zntBU%T`}p0CHm%uctrS`u`g-}*4`#1hW^3yeR-4=8Z2fr4u=ecddDFJM zn`$@lPj<(*SmW5}j%WWFHlI9G{c)53wXVW%JfQ(z*JAeQS-yVwxHEK-S9_Q5OG^jd z--m_6{-xeOvA%MetghVl%YSwyyyr|;s z_B`(4{+r(##=f?0m2{f-F0bZ~!Q^i*S3Y_A#xG^kpZCvmWM`?aShhgMacQ){rNeh? zoUWWoSe5d4f_%!+`Rgah{Vmw=R%^yRlh#Wya~yBKZoE9rTGjf*mJQ3^oGN)@RlTe9 zNWk%k)hwoxNz&`raPHk}aNBCt;w?`mcKPH~-j4oqS+u%7{Y~ZRs|S=tRd<-roAY*9i`NyJ}a2nXk6E^HfhB-cO8={BOSQSbDQm^3_$Jt|t*}`g^zL~p^nLTzH@3HGW-HXcm-x@n zfA+0VpLFY&1G8o_pVx_riM@SW^Y=&J@c1oav&wALE00QSSAVtF&@nhZ=vse;cWQ1( z&+3)$`D9!J{r2!JJErmbIKQazHrGc}lb>0B{_&taQ$R3ndwjf(XMl#!g(B%QhYa%1 z+@8NoeQDno*>e+b9*A65`o5yz!R0bf^P6t9-^C4UuCt4}*j@#zCIBDzEdm2NY<&nqJOP^pR0t*uAc{#_;Dh zu9IP1iwyUaG5R~)+yA&sCdB!k52xURvkz)KuZt-C{2kyLHra(scY(~WFGm+k zJ~KbBu6^hJbbtQxGdKP-{HdzBxlnLP>xG8(ch%2}zP<6JS;wryXM6AY*8dFCWX;}P zou}12EBx+;j4OREFW1ehSlXYWuD|+x#6MuFQknHmmQB*k)sxtL z3xmU+MNG{vu)ediDtY@iiL*v-%RJ8Bp0VBV@oC=R&95^TN-mo_;qEWFT`A<(XC5Cd( zjtD-%d3EQbO&;6!6fS#SQ^YiLe|k(%$7&Y0<+Im&e?Fjb;oNDpu*>sT9uZw6DC+rW z+NsdeCta4@(Ql9Hrd;Wna(h|A#CbCJ)YtpwKWzB*?0#MUZku1#$JA$S&llzu%f059 zp8Q++Zp+#?o2LoBH+R)n>bK_!4STzGzLI;$(#K&=0#BJ^bL(SFZC)ie?zk9P^t5N* zyf^NiHYaF-hI^)uM*)d30`;#u~5vH%%*{DMD)1sq$lS&5Qod5J_4P%vqEl zSEpzA{6f8sj-kobOA6n#x$gXYWZ`x`(Y&;C=l;2SHmsSlO@vb}v$*hNE$e@V={{W3 z8!uPgkrcRX9v9IU7H9Xp`aHL5)TdL+d!3^9=9O>!aPZG9^Nai$M@!5vJl(F%WAf0) zaGKT~_4)D6>%{suAG&fZC{bMch<(K4jL_?zs`_c|U)fvrUw+-_@l{vi&DuR2bsMhz zXGq<6OUmPxcKe?BzU~*;d865GbWJmueRMg~+hx0CZvBd8TesQNYX$2=h1TTi>~A%N z?z%3)GfV}K$ouRqyt#PkB$G^*X%#n}j=yr-C$D!*{(JNHdPh$Q1;dq>{xj?<&|;`K z7Jtd~Pw}Ckusy~et9ZPVIHF5G?lb=|`(&{0-4Ho8_1&*KnuCuUW^)|Yf4%kHAK#6E ztSKfNLUu3S67Shu#QeBZ<5lLusXvlqZ@tJ}{@~$mtHUxkRio7_>#T|{^G0%e?QYtn z-PilNbD^o=k*_(7NsL>6&be!lu;fP&w9A{`k{Xoy+PA; zUK^?vE_SQ=({2;$%$qUGNMQHV(?<@oxvds_`d99S@oLkxiLaY^KAUgYSNOH`Wyh4O ztKJuzv>q$kF4Jcnvt{Xa_9nZ^+Y3%#XPcebm7#IXY|_snbGuiK=hsQqPWCq`ned^z z=>E;EKc4U{bbxlOD?TCR-QZc_ky|Zt$U8QNtaK_I~TKf!Ot>{ z{|wdYKk66U{Br4g%DP_thqZ<`UuAsXeIR99@WkGu)6JJDuM&K>%4PPJWP6_MbpdW# zDXRrNgZJ#19hY@{#h;?1)^Bbdowm+m`$Flj*=IJrzAkj-Ew4{^(F?tcv+JiX)4Vio znZrt{8Mn={@7$TorkOR-bY|!@rTWO?r0X9p%g*|=bas=8jM&%jNmW&z*GyM&a=$xq zI-76bj>x!0ioTj&)CM3_pKz%`dqm7r5j~uPCZ7S~zdl1NJSGj)kOm@1Ayj=jWp~mn0{} zJjj=cUH_+K8!L<9r47B_ZNA3wvHpFMtCY`rEH_~Mba&7C^DJT=S{wR~{(PC_rn+RJ z`J9uL)YCfpT!l;C^z&-v3E-QW8Df-0k)35HyoBfhI-Y9kF^@X2~O!;!}Lddem zYJvCinJ@f&WZ7!Fv|&$pV)YlZF9#$K>Z(O1Io^+(pT}Bj(D~x~x@zmKpA0U<{rPf4 zZLYG>rDI1H^%lMS#_PxHn<0BmBnq;=ZV)WlL`>pPP45vMPT0++)V?@0?WFGX3?_ zb;`?I71O7>WNB4Q;V%AXao6K_*Q}JH*!ws4?D<)=ZHDK)ur{e__x$~=kMPCB?KRYL zf1@KJteF(>H@ouFHqrAe8(qp58&rH2-9Ftg`Dy!K6`dxVk828rBKpd04dpH_U+?)= z&6y)VqblyM;mvQZwr(#U2{qcq+^jA9IdARf6;2aR2yiO1A9yrB<-**{8Gjdf$9^hN zKOUoYBYf(rm&!&vbY~mg_;8~tan<*Ui;h`z7A7w5gda-Dp|n$x}A z{~6@}$XjZs`h2-~vUpmykUg`|*08f(2`604lBbz|`276(Vg9hm-XfDj4!NZMP=0jz z`gPtd*>PH{YBoh%7p3jp`?v7t`qT+uPUY-uPGfAZJn{0+MqQQ<$7N2xxf;U4bvW?! z-s|UM(k4!fIK4hYX3Iy5qD_mRvi#ogb=69Nj5lG%6QYm%+t@62u*>et59y9;yHe)&~rYw%UtYMRXE zl^avvHNWmuS#wuv!?X~?*cjQo!>3PkdxvW*o@p`R+^kJsbMDr(>4*9&U-r)Sp2C}d zUUo^^UA>&eyCh1_W+z#$tao`TeRAG&yCt*ZFAIg_hb>#K(5Cc$f>zq4*MBx_xpej5 zEuYF$?0+gBZPIFVHx6Puf3oSBvYz+Xmz^4qR=ugdJjo?j_K%01luS^t)8z2W(RLG` zrae7$_L+XC+0?L8)263e-aX2babzL)!tHhyrkYlH^PVgH`0+TUlJoqZ`Bvu^w$J!! zuB=~SU2&u6Na>f7G@nb7$!GSR$UgV{_pap6bEJ>1Slz7cvxhxy0WX_b53jeb<1)!3 zhq6sF*Ng6&V^V0*DDl2%Vr?a3jqAj)NR`^h&e?Hy_TH$fno-%bw)FKAgDHX5R+~AE zB}{c6zHBlpC|frB7PHo?Q&E?)LC5UGXO}&8**9;`Mpd^6 z)imh~=h(~sGvxnzbipl5Wn1?5;)ikz*1mkV&DOn5NPW$DnZOkRhXd>8Rj8#mWvpE9 zw?R%wdTpDCtMBfqB8JAExi)(?N}TpLbLEp@JokO;uZR8VrS6aPC%YE#O=rH}`EvQ1 z&}^MZp4$Hmb@tY8Ev3Rzw>{j+oLBS5GD#vU$@j8>OVD=lKRjAj*tjmfXZ~X6d|r4~ z$cjF$nQ?{@(HhmSr=ONwylP_1Vow>Lu%qt#eJej-mR4K2B>w8z8jRTaS;Q7PVcpW!3j-M!I`0-SDc~GIi0i*~OCV zjsDhhRaHEWI^`yyFOj$GStmxc{jyu^WCoR&rxqfxtr8^3IF29n(d6qi%FiUaA zA3pXY^OaVtl7G72nq8m&GsL7N>U}ed>09U2%VEK0ntNseYf=8QoT?- zC4o=BZWL-Q>0KOs^RroYVmdFkj?+`)*FwK4A6>n)^HIRW+q32`ExeL&;ms_oWhZBz z-rv4_=|=HPrg<9=d#!t)tgxTcqUz-CNgM8YbYACH?3G=dawb0J(YGtbPcI}{Zc96# z@!7@N`^felv2C;N-9OK9?$bAqAHDCGyDRHV4xbKW%L;Hl{+8d?#Lnuz^sbC)rhDHQ zPF-!}C>fc=ecs}??T_U*<)?%SJ7|WS*r?ij-udOf8GZBiXEeR}nHX`lv1k60z3lsi zuU~fb4-52GxWhEly}9^l$EuZCiTZk#%7P2cm2TD zM>jRd)1S&EqK|P&O^H@_u8UoqAwb)`_y9g#{r_sr$vRYo8aN z$KGGJ@a^66&reTd@tf#WH1}q5w&9=BW3>w;9kyjF?2sxsaI++5QfJqB;T7*Icyx7L zO}Z!fY4aL$$NiI-HdAT&q}&hErz5)i;%11PSvq&R(XqXcmreV0)TPK>SbO%%!?G|QE)dhm?woTLC%kBCqmH2!f?~5}c!gsg+-k)&zpqER~drQ$>PoFQJ zXa1JeWy<24@!$6RvHWu|Fw|9K6YI(H=$8-M-dy>3boM;gZ5qjQjkPYFy7qk?t9yEX z6>Ia;>(6dBSiCK`dVZcrOt&y&+VdiQQ)OP0P1^2TG_PnYo?SGt)UJHzp||RD8f+)8 zP`keMuZ^LGDW7QS+3;!b!p!xuWvJJ;{0@+w>#Cws>u9Tte;Vsr%5Ka7@H=Owb+OKHll5w z6>n@UU-(Hm-QGD(QS8l~_g`PXTsEVxJw5RBtXX1J-M70A&zj$-c;~WBQjje7@uH}M zJM1L7wkk)j{I+&Q_T*DPmUm6sjE+=#8h>$GJc3+B;$6y2xqFQWNVwv7Is4Iw5%N)4!54**W6vX5@ZezC~+YQRA#5Y`L(rk@g?gtq1G4m{q{a8Y!Xp3w0IT?a4;|Z`QY+9YnzUUXB)2{%x#_I zRWV&(LFi`9$KardJsxg3n_>@s6o1+A;_;n>x&rzto4l7SpBK;F;~vuF^GrVL((BU?_XtRC{dKqY$D6|KCDV+!KhFO8 zr{t)u$0Vh#LPm|V`~93x^NK`YH;S>Lyq?yc%i`k{u&iA}AU(I`smF?N}AFlnF$MM8#!|C)Q zi^t5)U8g#;Q}3T;3O+og$>_-=sr%Drw6a`2&TRTf=a<3$s(XJ_3WFuHBKs;Cug{xt z_iFQuWdRqrUT8j3krcLMMphMHJA+RyiMv*8 zTXN@-?Xr~Kpe0iStdHH(GDy+%^}kir>JptbE6XbGN5o3)wR=PF3k$LtKmBc{F0^u% zeTv>5tF!ABA9loQXP)9Xv(YGv`$yG%p^)nyC)5gBB=gs9j`xpo+`>6=;qq@~!go43 z-bWv1Yho3$>^raUXm|0h9|`UzMyFZBWqfPhwq2gP_0yrSOI8z;_cXGV?c1gtw^(+W zR7O@t(sYZ=c<+hl{bv06$ahuHEbOeuw6Kkr9zT9~T4cTFmhPJeS2(Wb?%xnEVB~Tp z^RsvQ!)w&8Xz1~sRxBG;gSrKs1Uoq4<)ha%|P2<%o&CK+U)p-+-ey?2PUH!H@ z{O-!r65D@9Ue(bH&0V(RuE#QuCzIW6Bx@{_Ycf4f9#HMkueg6C;i$jLF`=D1_%9`{ zv)%G`@3u%C!^48poc?~wv2mNT;ptB*cEy-Z)+<&UqQ4!zat^42~+T_=Z|T~2YMY*Ano*EAvZ ztIx09swuQtCe^8wE`8bf_W^HS_PHN}I<<8s{WW>7$-cNENjOqwS>}@a?`3x`-SnS< zN8;GWu!!%4$9g9#%ekLtu2(v!75wh((VeDi^UH7c>}>sGR~z-?z~g^00d6}z1n#u$ zZ}%=eGNth2B`2wvzM`J#SJpQk@!nVIQnRTjUwdBJ$0M9U4od^4+Xa_@ynZ~!U`g6E zi623~cJr-$*czepdZ&z95d&3fpbX1U}p)4GVcjyV!MN5#qwPk8Q|S7#x) zyvxw3T}yD{67h>URz2Q<;VdStG6f;=8tlvBD$Z_k%TNxD_+cS^|N76waWncRZ?%o^X!&$=d)oC}!=LAtrbneeaG&$}lx5oY$CV;ouc}t=KR4AT zu>EEi`?OHUoxj}f7Ak3Nb)4+o%Xxjq??S;_c}ErEQ>BH|)TgN~ZL4LgYV8p!y1jHm zipa;STQ+fQFYMzga=)Y=cwW?G`l6uCbFQ-V`Is0alz3b_)v>c}G7uTS(> zJp5CcD5g7C$4hw+bF}BW>4$=IJy=Q;H(B^H*vQG3!6V?=&rmzja4$xC@nnp(cNhMUylUc zHXg`QK6QJWWEcO3dG#`(oN?~zhO-pDopJs8d7I#?o5^LZ@y)?`sk85{6N;MUedw>z zc7Ol!<08eEaxIpe%a_S8>TtaB?7DODx5Vn0l0%|=49oj9dDpJ1`cpVlamI-T+tW=c z8y@Zb>$;~+KJ7qqcZGRS+O=Pw_8(@Ax7jEVA$)P8O13(;n$P>}Xa5;uR75#hq*r`i z`*Y%-51E+^GlCCDa0;C|@XG4fBV|cTozsfZX{oPIFa1-vXI0fnp{SzFCrd6C7p3Gs z?s&2I#O)QoU#_s+^E1gJqLVM!PjAl88h-CbOHOKca@^bZH7~_-_pXws>*TsKeL_!c z?@(X<=|I~un^Sy=uUnV(@vQ2dA#>}GzfZKZ`>AP+-?pFm&ye!&;Pr|luh^$4wOkL? z4fX$#kgAm2q77q}-X4`(mai|Jwa>_TzObH>>T| z&6Bct?5J{T=eq41gYxg%<~Hsu=~bU>wDY3dzKXtW%Tt$#@GN^a>5W77ZNsmJ1H<0@ zIAmqBaYNYi({q3Ci*Q@HszUNu7@v1U2JfH#X%d(7KIbKe_R-8q+A za$L&ht7%8^GjBfGVojN2YU>*>xbwwaf4O#jUj577XBXyI&)Bx?`rbdf%TKDhyie`q zX}j~r@^NNJu<7+;p;tO3d;cZI3--=(xO(#X@8wU0j=Xwtt1Y;o;L7^~^RFDae-|fd zX_W-co|e{Y;TgDW|2_LO%~fI=i>Hc;EttMZy4WH+=S6a;uH^*zMJ2LT#Rn#Y=xljy zR-(vi*5cmC+t@Xl5BiJr|dcdEWr%&TAy^Z84b z?40EBV{^})zb2P%M5eMW;y+V4NI=@Xlt z?JT2t*Q?{`!uv;sxFM*Y|%uGX2(+(}yaO1Dj<|ze%3Z5q+fe zcVW={pj}Jqzw?=GyO}t{`HiytW{I8u8D`9HQ#rqRdya&*yUKBer};Y`T1TIlGD+{9 zf%2wE*B$=%yEcm)n$)*++DZA+85Lij*5oaimbplGXHD~*lpB9%{JH2o|BL#mMn|^8 ze)eU`ZPVtZw!|)*`=c#?Md>s9{%OjSyn3&+MprqD-q-kLe^|)VU*>^#%DGG2cKd^u zpH#l?vhG5$q}TN9%rsdy)~wU_ZRWC0+nZ!I zUx`H;ex8)|d*j&?-1!eb zH9XNcb&EnTpH#%E6APDrTkEU%F#fL1-y8EwSuQOS)R=6#$-OotX;bWcLzjNl?M+Ws z?*H{?eRSB*WdH4_g@OVPWj-!Ga&%o}jm?JJ{#j0w^Zg@wz#j$UJU6#*idpBgEpN%sIgXM3E?b3{Tno63*?LId1r+Xw+a)(lT1-xN_1_wqvRy>v?2m1%s=B&0<=Sh0 z6@Pr06Y3qVFCCGx_kG^-H$VQY$_$-fs4?+s-P-=oM>tySzVGTRy3gb28=|YZd+M+4 zFF$L2bN_dHyOf#yy943*8xpFEB!dK;i;!i)J`gFx_P!=&;892w;iEn zF{ie@2>UZZKGuMxljX(wJ(7#A$n*PneYyD5==*-T&z%|xUGs#cW~yYa<9@-<@2_iW zF>l_YMU~ATRgW`8@3AeFm^AaQ;9ajHXL8e&c@i66C7)aPic>*syLLZc1$SsHlYpt- z!vdb$ZZki<(kZ_Eu-VqyGw{SsMb*uGVfK9yf|qi5SDo6ko-zJo^36J5i+|Uaioe@u zq4BN6e!sHmK8eS-MJCjz`_F!V{H6VrtMfku2LF8grFY?$^uMnb*&oh{-Bxv?{+_Y< z{XX8A-v1dcNo*-x^^3b^<}DT7?3mu%-bY6o-{xGqcHg*W%g0W;4T1Huw=SL8(9{*4 z;5VlzRlX?ca&DHXo%GXvJhn@@YF!(<{$4u}MFLypM z*!l0;(0>m*v$ypaot(Rs>$t*~{nJDj{8?D>@~QRtMDMvBTTkw{jz}ze+cj(FrkTPu zhfCO|U%D|lCDcJZ=T2$NbB+r?puI_f{Y<>vsiwKP4<(Mae+^%=;^xJZ zI_<_{>cRb~n>CMrXS40K3H%Bw(p5q z<~&~;zqjmZnWVq!^>Q6YW#@?xeY%W`0`IaPyRmoce}-%I|BoF<%3t>(bC0v*s0kvv1;y32S9B*;Xa^`|-ny-M-hit-td5KZDtavsX9O zrp5l<@$$Li-_>jM8xOzh+}|UAW9ysqd;R~Osj=Ln{+R3f1OHDcM$^yK_uNV5yK(mZ z)SuUce&1GpR6M`;;9pBMf5vc;XEL=P%X%;M2t053v5V)^17+Xd&FU=Q=fs~mqLlQ3 z*|AAw(VqM3*n(%cwRfKU&tN3gk$3)d$*+f%e_79({C&YOrMN!!)BR$Gma~~PjuRN> zzUM71ZDJ8E4L?0ck3+`&n{HBB#yqRK#qTA#QhqaDHtqd;!=gk+bXKL>&*^(g(;wAK zSX7vG&Slv1^Q7!9mgOB8m6w|iNAOw&7Oj7AU$Om*&(}`#g-`#i%ZUHj;qt)f>f`x8 zM1^;J7H2rV;@i9qWxZbutz|yjU0MG!>i!&~fAT)h!t9MVEihkgBAI=))N)ac^4Gtd zF-ljaEO?L@sm32#)_CHo`ssX&7_a5l_U9y@TdlloGxg*9#zb?52{o1H4-4;BE?c91 zV*O$!a}^iv3n#wG9bDSM%faj*A$#7L;pp;}tX}N1WGW5$w=P_1=qxpR2Nw%xnoW~X z{T#uYzcN*3P5n?=EBQ7_@;^iA{GJ}Ry_(w1F^c~g82&TV8^(WbVDoC*@^JC<=`GGj zUWM;j!1Q3+-NVmc*;w0Jw9ZrWytvQn>l%}ZJhdl}AEvLl!QC5tY29ISu>o2P?PP!hSu=wY_O_MvlzA*cy^)5f>D9RrqSYi_A^y%T{urH3w9z}j^ zJYKdiKl$7|nIGqzb}jsRs^j%Si-TUj8^3Z)eE!^xH-^JoW4(Z${AR8*uY*KPBBXYO z9JO{|#=v~IudOMZfvM+0yc(mPeUVL&!$-FH;p`HD*@}G5C$^rKeDa@R^M8iTrcdJA zip68$U=r|%uwmD}drx^!q&!_rE-s`Gjw?JlRLpE$6y z@n7Pv!uNuWCEE=T<+!}^`I75eSf}}}^ql@4g^=}gZkLu`Ir%5xlceNg2b=kh`AJ>x z9TqLJnOC^FZN_BQpTEn>9C_><+`L}53EjNEw}!p!(#b2?x;d9GFf&h2E<4Py_0vZY zahXGfe-aMsOiwy+@m+*50b~A6rIw><;2JXW8>7 zIezx9PTtOgrc)lsMjLvb-tha0*Lk;^okc~a_wt^!v@cIhX6wk1b&kAtEdG1zl+eBg z{pl;4iWfDM`|!RnY14>a{6lHMns4h^{7(8WzklNDdN<#*9-RtiS-EE)i%2x(SoN#V z$y#V5AGG?*I`P0a_j2>z=v$q%WO^g`e1gF8JrV2g`)D@pog8Pl>DuGYH49W9wdwz^ z63R*38gzBpvW?R^t}eQAxS~XFPE-2#nTwX~(SFVAtF=r=?MSerP0}vLQjQB3E-#L+ z5SXL&CSe(G4f~rrd-rekPu?xo?>%8-@>!4VAM^PSa|--Wn(c8v_tC4%kFIrfN0+}> z`&G)^v+&dGtLF_aI=wX8db&sK_9u-^x8j*M2kUpgn`Xy#W%i}R>PC+>jh=>n{uy;r zD6b~q^39a()yImt=Ll-v_;|iteMwrE`=((3Uk4f_nRM0L_QX}5m1USbW4+EvZkeU? z)#pCeiTtHzBK2YQHD}hv292#|lO7+Kk;mB)>>96lZT81my9L&msaoEi=Rb$n@7DU0 zpX`3LZcx6WwBh0H_hNqoLXH&jZe43}mDOGN&BdpF&U<)IPKrIGx0a{6S7>##pXs{D z*>9ueD*p+8oql6~|GnCKtis32do)Wt-Yzz&oQ-pefvZ9<(|6bOSYJcs&co@I#wthwbHzBiqZaF zrGi609kPwS?z$+`!+dv<<(2l7&pnX~{_5PxkDF6h&9V8!PK9|N^=<|1meIBGj;Sr_ z@U^_@U_M`R&Cb~83xlgI9=U4P8k zi|5iF<4FeM73Lg@KPFs0drf~k?^kBw!=EQ8`lXvKyFMkm*d$a(=HaX2AFsCy*H>J* zdQJ0`*538G^-GUyNePt4i}_c^N`-z9_;y(C_?x?}r=RQIE!drOaBh#nUkkP1o7?LQ z7HazPemC70YgzNk%c8MlQ9h@OP;of>R7U4G({10w`DDVvopPr==Vw~6)JyNquUQ9N zr*f&7L&@r> zGi?7O9i=VP{hvW6$E?%0;vzp^?rT+@oj)$?sGF}@rj_*e!1XZe*D@YrdmYaP`AaT6 z=F4bu_Ci%`*=`QeoQ4LqmFEod9-QEfn%`R9A@qp**`8f#J^ftU9Mdx@pG(x;Ikfv| z!L*`Z##47T1uk59@BXof{|pa#4v9n`zxJLlbf@R`nw`JDPV?>XoiMv@y_`&8RL}%z z&D)>*e4M7M@^#x}o5>pG^^+g(nI>Gwxp4iwz1#=wuve#q z`=`tMaB98D*&t;Xd31J8FrTjm-`340y`HR7mvU}Qy2Ct8tI>S4tu7lWx^j^k-lAS@-D4>r*oXq^DXXUKizyHgDp~V%D#}c2VnYtKQxR5*z!zl<~`b zJbtP__8LRy=b+@ZMH5ctNe4f@9>FGfg75sI4c5oE$1K=8XMdkwlo;z?DLcPi$DGXq zy$`W^?P%iNc6rIu>(7~t=X=)JXgub5&!ji$UVhr{Q_Hmkn>k(P#^_0})!TYeXO|t% z-YL@(8ACUppDbf563udb@63Y7)=iw*HQ8@!Qkz5s{()eO*DpfoLA*iRG`JJP|Eje#82lRnMNgD`j__i}`Wjy~~AM zea|&};@o^U%x*5;qtCfO(3D;M!6744Gxqc=f6AxtU21vp;#05qZJ96fIhOhf6;&TD z|FPiZn)IUfbL=J_qTAa}O{uCn^q}K{+pZO{=OxwGly1`V5V-%ju;J`Z{wbx=`-~br zlTK~CRcj=^K-`e8UBP0~)5wX3E?l_C>|goxg_O(YbV%1@;q~Mb z+;%q4zT0vLeOFN1q3LsT$GYTbF9`?rmggo5xlMSOo~+?H^rvrs;!W)XMwf3dz4GAf zA_X7KQ|9yakMXU2_mJO4`nd?}N~d^kA8lQuIc9&#J9ZuNG~D&EYR6j!u9f;TJ?8xU z*w(vu_s*Ax(>85jnYLR*PVRV5py4@RrVk6`eKz-r9Otzxe=TsrSCK#cf*jA)Uv6>J zSKH~C1u|XSb=6YwbT{W_d)?&+?7Y{eBv`#%9DJ+$SdVhMXVZ;X=O}}gaE7d>?b7@7 zEppaOPvtxiGdD@=JI6+bPgxgJS4splT1e;bJj|kSau?rG!ShRw>1y`qRoHGkdP%9Z zGV-zbYObK?kIbJxEV9zjZ4Fy^+&5d)^IV|Fj0@N6-npmh=xy;TWwNf=@;5Ka%%tFb zw$ghmvvlRZ&)qf_;Hq(h4ICw%Rc-l*wB1bLe_V} zgVNO#`rJ#X`jRkpmDeCNB`&a=f&$`@RaKJt)VZsMBD2M@g1 zSMhnaLO|E{^rRz?BNnB4NqYpmtaz>}F?pLtJXBoA^~dbv6w{hh+zYlceN8)OpK?1R?r*#2_V-=dvsr65Pgw9oEdIGI zd$4-w9@Co5Q~63bmdwT-Gv&L*w3&?B#+Dmh-sG z%|7di>Lj={t=#o4`MaQ*uC&v%wGUsjoy=(0Z*KeP_+G^0^jq%Mm5UzT3@p#S!sqe+ z{JZQW^Y89ycAIL;zQ@-+S0QuX@v7i8-jmZbJG5LX4Dx?fYac8<6nXMoo{;*2Up_Vu z&(F}y)14qUuaG@7W9Ng`TU)GTo;6?2^2uE;QgQBIV#B+q-#<^@d8@!DV7}+4$7^mf zA9soE+avesns%m1-lNw%oM*#RzbG!3KF}g$rIasu;p>%NnVE;@bcAhgeet~IUDor$ z8Wz7JvJzJo_^8aXPdt;#d5@{(lh?$@d~XHTuIjVc|2J_;l!DK8fB&=h#15OZ?7Dqw z`qjTOGq*-PKV`DK>FDfLmW;p5r<_oznZN8_|J_~F54?Dyw1>$=!HhAM`8j9tclQg| zW5f?nt9s1KHKlo8b5DB9Q$dFpX8(=}^{cpUd3e|6`!%j9is>KL@-tW-y-@gpG3Vm< zX9+BwDeTAoGaQ!tcBi@RaLl~GnOW&_C)K}XGp;{)fY(}f?qQ1{vA$^{ReJ3`!uMku zuI}^wYREEY%_ioX{d`)Wi2HxL#=lfa?zv6Q=y}+~CVus4c z2S*bcxR<_q@i?Y@O~`j%UdA&YZPVoy8>J6_*>5hw$*jUAdtFtEk3&tveB-*cQg&RA zFZ@}3)oSf0uSW?hCuFY5ll(5nbC&0odhnk7`rMyUi>GX3k5e+ZA-}bOzaxKE?A6M~ z*^?hG+U&SW^6uA3jhol4?6;CWHrXjthLgMcSJlNz@uv~xr{(6{-EQ;muXz2ek)F1-M+=m_*2qfbPI@o5wv0I> zv-I|R=Q zI(_>&#+Ir*Te+^i@3ClieIsBpm3iyWgtmH-gg{N%`|2S}Ukf-&-zsPo`sU9*VX}zh z+$pQqIX;iLYUO_L?b?OU^&I^>uT(btEja6NrSPk|=*g`$7U3-}{8#>7$p7BWcVww7 zOH5E#aQU3s`=Sc7UPt_0zxzyqyGPZXec#>0PqJC^uKdI`Z^Pukx25vU7n7&38uHAT zdp)Z3+tFt~v@9;3KC{of`LeV^-hq!x(k<4g7!+_mnYZ(R+(V~%9v^E|P9~Uf@Tv%} zT>Y_gMUj3)aEe*&Q-QRro;R=6f7W;44-tB|v*%US5zVe}8M&;AImP8u_S_e3+QM@4 zV%!GqCAT;?U4Hh*v@dvSk3z;q6IHTlir;cC_f2E! z@rK98BMOfk2tUEDo`0@V!b8Kr!}tBUu#_{i82D?NZ~S|deqct;0*@z6#}cki-bm55K=lvS;Z`cCipE3r}jvckn@_tTVKPw%nFH)~4r%Zr(i*L7E~ z^4P62(g}C1gs^_t5wFnzSuB`VAu5?_z=#o9^W>T#l|f#Cyu>=&eb`ix=!k z+x6?~`zeVFKOXP7XlZVJsr)3nd_nfD>3&-CJP$o7U9>cFbFA=j)jHnV%f3=2KaVkP zN))eiFJ9ZXwfpIbM`l@>Y3H1e`G>qM?`>Jo`Q&>m&u#6z>j^BsHpMK_a=f=MCRB%0 z?QTwG;W0)zrnFc88MfFbURbtR=GE(S5|grgg`fS6)LQ1sJmu}*62~(!^Zpqf)IRJy zFGE~mo{!_nJ+Ir$;-B0z_FHU`9?I8NYj{O+Me?rV4MvU2d(8aO7XD(F)qKuyZBo$! z8NO|guW<+~r*N3$?&0(+_V}n<<<2d>;JwDjxeB*VNeg`Zlr}p#@Yu1-`-An4x4w5$ z_~u&R$I4);+jpT|`pse8$z}fidRD@Hh7Vn@@LfK#tM-YM(w8UpF*p6bcg0k4#vVMw ze=U*q#2khfS1)~hFK~X*<-B?B#_8c^Ki2W|@pByd`%!Plvnh?%_n-E}URF?ca9dIR zSB)d@;uV=4Uqg<4UhtzneQ&e+siIx>0cY1Z*mU+g>nJlFxf!Lj=xc8I`NI-@k3|B0 z{(CPhFLAoX%YFG>wT-L-idz}AEL6g_wkIxfTCsQT;WLMiFOfRudnIt?*W`690`~>( zIN!Y|-?q__Z4ujq=~9jA?)#6tt$A@Ery#^rPVoD+KeG<|)?aEq%vr zOl~HhL#yU|T>I%M)9Ty5+RGO*e4d*sThdpPZ=$~a^e4Ul3^_B6xK6K|aeiN38RvcH z2Wx-(ZJuPiPjSWHzBBhLTJ(#Vw5RC$@m0^<@4)D8(`)sgVMWr9bSB>g>!*1>S*6PC z^Pcy9rMa@#v0b}YxG>zyJ!Yk>c;w3DH66J*7wzI4Yi2(Cefh+(YlrvN);nLA_m+Y8 zMrPXIWVZ6~1)TTxzWnp_od;LI?Z(^3c-tB-T)&uZGdFFIGMjOyx6QW)c71~TR+T)D zFFaTH^LzLN2?6f659h|PSU~sb4Vh`NThKpIw^o z>~dfJ^w*~S`>tNFj%iV?vG%+B_G61<%B9=ETYt0fiQE0LkZ-*Xr*HA3iE`n$-yXiz zyECnS+P|VZuD2%~-+6NNoL`RBN?&Z2-rw`0EvF@H$M0P)juf18o8bP8JSqWGNr(wAtcL zyTw&DUXbWBYt?vtJmNotd&i1;uD(h8BTGd?8`D=5`mAoAY%aS?_2Kb1$MoJjKP^K6;G}sm$#Nb;0#(^{zj$$m~qsf+*Pm7e4grk^jG4*tztr{fAGoa%J_!hJPnSw{H*pv+|s2 zb@)$%6aN|5|JZxfT)8$kUh=Af%a?fhjo#ZP&A&eX*22OYyvDiO?|)2tzFDokHkFy1 zkMqdE;5&jppFe$TpZ_^E>fjQlQz5O_HaUs#$_K3c&#*3f-fH*F$x$pt`Jc}e&0UzW zXP#k3LD0sJF;nB4%6}Z-U?{1-y65wTO4YgPpZn`AH~o8({f&uXMZv~KaqpX*c~LtQ ztmL|nWmoujd2U?57xAe@;K_MDFK5U93>6O-8EWpjq8&R^Dsk(oDOVT#9ho zW_zm4^4;20n__)ZWkRM}QoRg^^Mtu4RVLM~|9G4wV8d*kgDMkN8hUHR_<0->>R2+V z*tqL<&!bk}PEVal-fi`&>raP#(Q;Inb{jjV%<@!e zdUJZ=@+|8+OD3FD5qW1R@Zzbas(A;e%G5tnQVdEw4e22tRVKMO%-O-wuhVlNDrJ&O z#rnU?g85tuO;RT%$4W~TPMW{snFs46PfpEbj^KwKuAVBJJQ>QG^qy~CoqD6E%~M6Q zCvZXImq{jB3r?yut&`iZM`OS4{vR7vCUJ^vl!&n3a6?q($t2%*fh$(Z&YJ907&gI! zLGQ;*CB{UL11ghUmDD(<$1KHv_RhWp4%kT^^Cs~k)+LJt0 zCjURepeYEN#-sfY44);y=3*Vcp9%L`j`SaHA zrrctV^YsU|oqW2tV|hxPjr8|KYw>RfveubDtQJ~ZWB+Ec^Ub!O^HSOAj+Wlnj#3$#Jd%P>}UwWmVVrX~$lInLM^iuBJ&3H~a<_b{@hZ1t%IUt&ij^@!r<((^R4wM`zy46WBy06z!Sl|t;p{B? zKCCSW+hy`BsdnG4rrBp51I}3nJ+t?`Z}#I!zLm+1FzmYaQM#~a0!kt@3% zpOZSSwP!~1JbumBT1#WRUj5+zcukz)BA?uZ(?-`>7TgJVn7h-n&Y;+^vhS6^AH9A3 zH?Jk^{GgWk#HV2U1#xMmb_S5VC8O(nef02C4er4(7-e=*A zxen)ktci(nS6NbUdhaRO!mb$wUT3|g_Z-+~|MmADdC6a0f0;~g_q>X4_X-hP_*`$% zvz)fs5Ay;g#5-TJc+LOy_aAfJWIL9lZch*F%X%t)>ZWx#*JgdOE7{vscg%Y9_Ltp_ zi`R06HOpS4?bxkUKK=301ADwz)`WN+Sr_&Ap?uEf{SRUstR9Q%ZPh#T!Bl@sxQ}ti zD~U%t-WCfUE`0H$-A!A6|MVq!Qn|bRXPsa9T7!9R{QjMj?`kkwr%w>#d$YVIYU+t? z#`@A0c^_9ScRy;yDx@pLwkLn_`?^OjY9kA>4Rap{UyIXTw9#7_U&ZOVdQGina*J6>lz(?HDc8^sn}@>asL^1mh&F@*khU1@}T4Eiaf=Q z?}fTe;;*pt)Z{3B%dIK8k+9HhrEey{qoh-|9(G7lht6 zf7QGBYo5~n{jY>r7c!V$cl+g5?*2LcN_qPp=lyrKyZ-eqtMxYVzq9T`_38Qr)60Gz z{hq(-u!F-F`Ns+;64xlMC}}zsD#*wG`R%{!pb2zP(Za~Y!Uml_XJ7yqEueyBp+Mur zjR!v{Tr_z2(E&1n4mwRx;6KBpgX{kYn52B`tmV)D!`@u!`rtBm;_}a-Et(kz_MVAZ z`J(Q@*>v~#JxcG6Z|Li>`n`WiY4YO7siyYs8~I*cKNGS`=J;mgz4PDMNbZr2n{GWt ze5Yx_tMH}=B@G4+Yi;;0wp`<#{^zD=L2Y7P=bWvKk8*xa`Ipo?neoEJH>UzJ_r5TH zUmTks+J5)pdr6C&Mfb%+bNME59n9Ku^?clfi_e^Qe`>Pjv^~FPXKKNZ6zigUliPF; zU)>#PS+T=7+Kji_t3IJ1@%p;`CMoMRss*RKdZ)j`YbC?E`v+^4CL!} zJm%FjwNLUyv`z4Q_N3dN1m9k{C-`aE*Z3<}1KJfsjWj;)T^y;CKZ)a|#Dm0&V{?*s z=NoI?JW^80BejJ=Hh=j$j71>k*i!kD;hyY*2A$mF)8{b9KJ7lTV42?;Rs(&R9h>&Q zTEX$^(dj8yXDA+CzxgBMshAvJmGcX{<(%3wAMs`MW+{cZ-x~Ll!W47Gm^MrM}508AgT-C?W*~+$K>4VzjSGlEO`;E@p>j=+({zLG{j(U06S3 zg(;tiw?p3s^CYDsTiLWuu34ze@@tJ?`n-$Eo3iy;buQ{2Uc+D`v9DN%XM>*6AFu6k z=A8e||6sR%bNQqGx|RUWtN!m~f_e77U$V5~v&fY*EJr36$A0^w91yZ^q6&}Hzol%u zj!N&Eqtov>ZO_pSA6s?V19}w&OCLVvGF5yd;8l>cnElrGhw;Z846?3jSZ=X=GSO+C z`?3ugcC&qqBf6%{e(>=38ZYsDE>Ts!CDPkgsf+g3eVqEJ@$9!Bs#&4dA#3cceNOwl z)y&9dRtkOnV5JIkdG;E{WVSzc{pwFdS~DaU7S&$3a{7k%4U=|Gk0;OMuDnhwxppt` z?D;t|SDboIi%&d%*wbO{((T;$jBXk`FO<2ecX7dPufE$m7F;U$_o%CN-aT;+Mf;1v z3Kx2(MV@1kO5;2#_n+ax?#L3`kld1`sn<^*e316rVP(*)Z9P{DzV&5@zx+L|L#Q)n zW?5>^zYdKfJBl2Z$f|lJ+)hredC16+eP&h9wq*c2D$e%YO961uiY= zEsBjvT&9qf$~5)&9H+L_*tf-+ue{kk_e(5_Nu0V)P}+_sb;d0gx2N;3@V1p~Jo?du z+poTPvS47{#vRe@6@II(e%bPbYwiP&)$cwYyO@0LKSN-zcW(EU)-?&Q?`7s(GK^X@ z-N)g`F2mu7&UQW;=>(ebQb@lmAn?KsUe`Z;=W8u2z8+qn1 zKX372oxAT2v-9=%Pg=ol4CiJxvKibz5>c4*_o2|!HQUbaKF7kbY)@Xq>TvDF&aw&a zjM2yYH$A`gXhG&@f$(`pd_1)?6Qkx&V14}atcS(IFaI9-DgC**(9lJ2x6}`lsoomb zxK%9)Pe*f(T#FvR$bx0%GO24MXBGTg@Y3va?NY&0w*qdYaTPFMZS13?Plj)xHEBz!pw3y-hUx+H^rpJr{)WfDGTv&Xd6O!`>Yk)219ygn*#+Hd`z zA?1sw+wX%q9I=m=>|HqLNQPH51CPL+2rcb3vK(&{a!>bgN$1_)o2qh2P&CFr<55oe zzolG(GbLv@eU~q3U|hRxYS#7EZJo2KOCCOb;3|DA*sHIyMe_E~0NzD;As%7xHj6y$ zE3ZE8bbF_3NnvC6jD*g}wTiFrg;{khlQ~zsm$yy9_d`K_(5{z7_cKD4ve#QW?lR$u zi}ngKNnX0=r!Sx8<@CQ@uQF^T6N~-1J{;JwJo!h$oFgXjxwrP$>^kW6@pPB`ny$Gl zxrepBgol|e_WBxK`&7p@lWiXNwdgqa->iOCU;3g0MBmK$@%X66?eE5d(K|EV?PEy# zY{GL-VUhSor$>#B$0obntJ)r)+1!0pboTPiAH-BlV|eXZGw<$A3)rzdTl-bOo2gTT z**P^egHEr=7j!_tF;2{lYK5w^-_XYWCOe$i8V)Ie$Iu+^Niz z!MZN(4~yI~^)l=v2S_u6xElq zTR!c%&V7c_)57IahC%zv>CSbNgM&}|U1-f*&ZgX0@WF6TnL6KuZKjJ@G(W_~$n7rs zaG=7cxa?28l-?g*$4YTi-IrBYonAC|^_Pj)+U%QNH>s!Jd=|4m3+J(oy6RmrnMaqh zW}RNOwfNDzuL=6na$f_S7Kg2_E!rBrY~PN;1>A*;)}Q|n^F;p6w|&ir9_P4D`Fo2e zB8_43fpyO8O+LHhJ@5Ug7Ixe#zlecTX5;Hj?O%p(cHhd``n!j};^?ca+K^q6$zSiC z`5q^1bmGZ3mLI0ohTU~bYyUG?r}&BYADJ3o6!slxmjtG53O zF4@8$Qo8zn&z0-5A0_R2RD1tu>6Tl(aSt9|Q+l*^NB!M3+gkU;|BVOra0M6{85x)v zm>8LvSs6inTt-1f2GBZA1p&}X&VvRH8!vtccnI#{GBPmQ3;btDTmHqu)cpYKEq^29#pd|N ziq&rh%az9w5?k~pa57o5*IyIy5aRgK%Om~3_i2mwCe>1`#A0QY$z6< zocXBLWy^yZjt{IQCYfof=dIA_xhJ-9_kRYde@%QW-xs}-+uEM>&8lLC6U zm%Rx+Uc7~O?StBci_jzYj(c2 zyxkLY%Jx=OOLp`(M`Q1a@9x zKUNWV)=`5)VWoK7h7AXp9hq_q%3UmWKURE^^JVHA!;=gzE^~gG|MC0R(=uF-4!tl5 z=$JYu@7o@uRFec*Mr)xbZ#hab!sR9%pVG#jTYtMHR)6DvhScwm+nA%e_W!)MqyL1L z|Laq3>)taQFnxRe3!7frKE^-ge?A(1*~Qd-hWTQx%s&b3M{{b-2iH^O_?w8UtD`>QCmVxNpBE7WVh3?zWZGRNrXsY4*_Di8L{}-G6hkm4g{Li50@}J?Dr9f1eO;(69Z0XwY=BXeT?*jjzwvf^t;fWhAtSIts)=K#x zAoa!Np+V`ZT8S;ntK$UOm9ia!?wFjgsF?IwYyWDlBMUnit~9&FG-wu!H6}alIbZ#E zF6T3^S((|FMI2|i=s6|aJesnzaEe9a%T?Sh98;5<0~f|^T*mTHa(OFT1{14UTfxoc zE-QGP7WwJDd?a&drI?a)&hxF^?;bV06k(X6-T(KeVaU1@r$QFKGV+|{$&h<2Ksn=u zj%WklQVnI9uq8F3YZotJd$rhX5_9F13Cs@H8&s;iG}QVpA8=+pdh$QR{1eIk(R*za zzK4juu~2!Y$#7utBSyxGDe;`2`hOOD+MpAglIYeD#2a&)VcCWyQ9>u;r1ywD+mSG( zKs+zFsFNq*n2|yL`uQPhI7nLlbxpDm|R@TY4p%VmIT-L;NZYItC() z+Y}bKcfLCoka0t7=CZ1T8y1_0?EFyB_3I5&QsS&WYgsvuEJcC)9-?mpt_x3I72wRc z*DFuss_)@r2JC{L-Yimln($3$cVLK00rUCn$`y<$OkJ9XUi8f6a8xW#u99j$*f%-*E>WmhTah1@9ow1*xkL}5y_@l=@=sQh)3LQZJ9Rm5V!IGes354LOy*yOnRd6+5dLuJv=2P{=HzO?L#zx*w; zf_WC7HRC1~6@{gmep?s?dY-iM1umSo(e}Ak=h0xv7=|g!9v_=it-Xx3>)39A$JZ@4 zwlN9wHE;+1?J@hLGqH#9c;4pJ{@y)0e1a#ww1{olmlTY6L0gu)k9}VRrc|i~WhelfN!h^|3Yh&#?X37bZp}jY45{ zIlU#Xc23zSc2I?5!UM$yMs0`o_SwIpRvl(o!L~}Uzi5}`wL8ouwF|Gm`#eE&Li?(F z6X%vmX(`8Zv)q}ZSGDW~!vwiSj;*PcdqTAyxWC!3T-{`o=IqlCubPy%hj%#}otT=g z!VoGU%qAYg^(B9sQ)7u%sF2+n-QSNNNrbFh;xu7a$Q&sXrjJuL&VAsbeTeB+SJo_} z1yj2|ZI|t;TEd^;p~C6!A#F8f)t#Reg?vS7MZs2(|jMbS-bjIbS0E9FEVZj zY_PTz6zDi57BN-IXv>zu8PRn{ht<9wU6#18!J+>)oBHde9xv0X+pqkad6(Doj!r(S!>w5nOOJav?Fn48 zswqo~xns`L7m_bK90CQ|N-UNv+a0*zuhUa^=C9LP68RnN-~af};Cz~8j->s>ndx&s z6v(t1ePArOzoIbNc|lLl)L)Z+6?`&CIeui7lZ5M0Kf(Kj5~7mxLm#h>eBZ#ZgpIL5 z@mS;}1E*E28s6I{Rm#6<(+O}CZJ8)rqP{jegt5TRqF{OiLt{zYp|;&^jaw|bF7bVt zd2o@S7K87`45=orW6ExVb6J%|Z@Y`#cVU`*MPb7Z>w>Lr>~<=F8hWQ2Pb!~hWac`0 zZTb|0yD}@6O#KwHHYSgA+8Mo8lVf7c_B-7xwy9q2k5+c}XuY&z3&Wa6JZevO9QY){ zIAadeYK3!NvkI(*`by=NOGvjft!CI@AK_5>{^);({!=ICNeIc?F_&6A?MPe9vFL>B zgzaK&7OEz{qmOz{pTfto#7tdlLBfL1TC$s2w3@5;n=|`eqCGGZ)dQ`bua`muy;9cRrcC4YbU>DZP>*76L~Cs zBKPE8JG+F1Emo&wi@axI!<3~fT6S88wXc|ABJyCH(BuY}w!@R$Ro?Wcv(%g{c-OJ+ zic;_iM%F{CxI#J(^%#6zD9~LVG9}MO;d1y8mt^Xa!vA=aNeQWx?9$ z!0H;u>a672D$*~|sIWV+AYQ@ZwQ?`B#3eZw7BlC4J1&T%h=?3IlpXcl%CTvYF2mHQ z5(^!h?Vl!n63yaKI>JettJd44}Jp1%E z2aQAGV!Q8ID4J!8c5H57Z+E(~>}%KZ9iPPj>I)rcDh@{f(<+j20{v58qWfF-lBy@8-EGF9X<9M9;_i>BZQs zbPb5mYPfyu+=@6Jjn$VJ!Yl1=zh^tSdSO%IjrmgjxcL-ODz z?TqWyOpZ?7tDA*9j@lkb&<^iA&XiU$vn;9Cl&k);qllxR$>l=O$X*5`V(g$e`10&M=clWNCoM3n}j~ zDT}rynQv8<3mCjl{=Flz$#~lmf#zsNn*fIWJ&SK~SsBME?__2Z5?*E7_iXhe4UUrv zju$Ks{QGpPw3i|F%#-+xtfmG7_vD-GQXc+HLNlCBWT>-wsV}_oz(HS1^U@9H3Wn7? zSh-FuxgyrHMA}L9^N0OYOZfjb-da%Dn8e8zzggwo&%>KuzwhCot4@%${m7YS!I6BcgNHEWV-W)Pdo=qGsh>#cMy z(=Vd$r#plwcL3v$amt)53Qw}UZ`GGmAY{Hr`}xoU}07rp{R;A zJslzw6H45BYxTle+yj>W{m;Pi!0@VwX$O-ie}j@;V3$fs+!S^B&*2V9v!`(gY%;s` z?GvNxwgm6Wqx+Y*2Dv2O^vr&+ecN#%*+7k;jk2s-88Lq1930GUA&gv7i|)H<+TQy3 z`jU*Rp68t|g}AhbANjYj1yL@T&)$ix#9+o>;k4@a{&@ zU)#^!P2@W4w}~FTu8^@%C}2gC!BE{~Uh$*;cPLX;R}j zF+zGrf8$RePG;Kc| za^hq6Y8fq&M@bPXia$$?_CIT?KmMfV6t^7vl?O!!GPs@7HZ@&qtgukNm3i4mFl&QF ztU+CZL)22iB`xj(0_Tp#&xkl)aZ2aTjY!1}tg{?%NN601idK=BYaW>)+tJC%=_PGZ zo}t(wS+K~|kbjOuZkF#N6CX}%IX1!O(y*zy58GP)lpD4jaJbg_agUD4yv6qfCor{C zIefXl{8(j%mHayC>88#yK26iQMEMv*U+!I0$~47_=lr)T9Y=gwyiWG*)lgX_BA%kL z+V|EGZBCmmp>>x9@Aas;Nwc1~x$p6$85}Dellhn=`dDkPy9msV=~5D|cV6qT@)Ap| z&>2o&?lT9SmazNgPj6tj^peZ|@)uFz{k!*nsdHghaLnw#_fcADapdKFUDL0g71lfv zV;OR&LGWOP+k=O!3&k!T7EBW8>8`r;RAY{H_mL|T^LQl|$O*jIXE-fO^!^0J@QIAN zHQb%rQyCl>wmf#>3^iufuyo;W-QbXSFp62>(V^N94?zbWu}vSA6)QREYHSt_&{v(k z?5SM`!(on(A95U*vGKX`1%*C~leAsbacMz01E*>3w=?e!UaYSX72jgY#kZJQNMlLT z*^gy;wn3T(I@V7s{!Ty9TB>mCL;_RphSr12`EUEVWhts>ED%_$w>V%G>utu?>na5^ z*{(H+F1YdHTFb2K`=sU_$v!7g=N0k!;g*XtPlow#YFE*AVrqQ2uFPoJ3O*ZLvg>^qA|LI>Qo#z~iQALzNIte7%4sc)se z@gxbKxQ;~;M_JjM|7u+8V4C`iy{jjr*KN{<2q$jCCr=#j-`33tOf?bD5&w zu#^TyHQS3QJFB$2CqXr{Kqe5|_7Fg>3ivP%+!(1s7Mwih64!C8GxqrY_TWv=(IU z(p1kjoikZ6YPP(XV6b;ZMqywCgUbp9r%peIDT`Jvk@Z+Dyv{RIz};0cSdr`Yxu-0L zUV3g4VrgC8WW3a@HJ~s&s=&AT{bE<1E^c=D%3BLuyTj8PB2PT4Rh^`?V9neKNpt52 z?zFil7&~32RP>qaDv<|O7ebuhHBR*t?zysY@^-JaTt}X9?)5s!>hhv|)7A$oUY`3H zCiOaW-yF6d2c`)~bidMy;f_+76ys88uWlLaKg0gKoM9KUS6nOqlb=ubUCQWv<0z^V zV32O0py9z~@bjLuJ(wmsT2H`34Xc1ZJ$Lx+Cn{aToxwNb+8Lt{>-tb9mA zm&=1wk!r_OoVB#VnbR_LA{rQ$%r$P%EI*ZzD@I$mCM6gq&tvHMIY&r<<4w?esY0I!BQ@cO6D7{v zGqe^@V8{s5Qa-XU$Zy^`%?YmkEiU~Y^ZYogOGM{}i739^w)Sku^4S@gWlY(>f= zjdf8;7E0IMxkuhf=il>Ao@HnDF*_%}m>SG<>~w!%OKX6X>Xro2ZOk_^js{;*Tr9JC z`av;P)8muhs=ZfWx-wxe(+B@W2f_@*CNyy!SNk3R=)kKk7wpG>F!ZXL2 zT_w;hTT6Dn+x+Ld3_@C)lH+327%K%mX7cS`&o#%_-eKz^lalOC_lj?yJ-RN>RD6=V zMmTV_gbca}1-~dR+#k5+&jG3UyY7728&7toT*& z-hYBdKp)3%>jSklaX0h6H#K{n5I(YNW!DD5mH@_Q`3(xO8`d>kiOX!?l^6L+u|8;ikgBr8Zvsa}$!-3dOw&IGy*gL+uX~M<;-ZCDg~hxZUtW3WD0@|x zm;LLGMSNYylr0KeTJApFS)H(8j?;t*8^E z|4ZS**E8fAKKGeb2v2CeWLJOwLEg#D-~6mhBZAKS`273d;&-e3FLBIIH|#&4!MB-L z@JGI)O^V8+nVo)n9h$6CpE7aXyXe2=Q}T}qf^QTwl`i!O9Jm&?K*2FU<8VUZBBM5= z;*bdCjrp2h94t*s96F2)V_z(5P1E3<`}o-9ohxoI@$6(0RNxF*c}jV!Mc(TLJ)Ar* zR%IVJ&Ng)_{d*~n{Hi6lry>*!Y<3XLs4ta(L3M>q& zwdt?sI58-#EMN|OT>Xr#dT9RZucd!SB7gc6PhZFXslv z7hJr`+2y-E?|-_(!>Dn@$oreI={?!hjm(F;xHH@Z-wInqsC3B`YgjNgacLj+JicRc z$4sA%3mKeTl-T`JjZZLL@({VuyC60;RiLwB!fG#zrX>rln*1(GY0C*L*sZdR-8 z4+RrjCLK*{4zg4G!?;fJNW<}}%tL|`PCcB%VLnzb=vroE$UiBj!48Py=}b$_?iH+S<^{aumtpCL{& zly{?`g9FR=2@j;KbtcUfxgM1lE#Z%xyIc_;0>*`KYqe(yEc zEXsY&@5hg-qb@$!w!gVsw6x>!tLfh#E@S<7G38N#qkYk&8m@@j(w{4L-#x2Wy5eKk zL_y&n@(YSsIks-h+VVP1HAy$2ROyKEnm=rEhuRN${oCKm!aC{Enh!ti=e$#pziD0X zS9bJz$d`+|^Q(^@Tx7k(ZNeeR^Nw|W|HLn=|0xtPl&D{I`tyN;h)wSoxE5U&E3#qu z!jhqzJJG4BKQc{#i$_ZPkGk!vR?VnsO`^;_G7KwLxgGB?^Wv(@jL{QmaInw+wrGKa z0o#TJ8}3(f=)9Qxi@lqZZ-)JaI*#*aXBcKW1VptyvikEv`Bc7!+-*t2OxAY3o|PI+ zCdx;QAG9cKTJ+{WL(Se64vi!>!NiOX)!i*CZfLkD%${SrIg?v>!)m#cM;k>P7EY1Z Mv0wh5!T9GX20;!6Lx#u9jDieIf{e_9jQ@`?$S^Q4F*Aak%K!sxEUfIzj7%K=k1$Ap zWEdG?G9a3fiG}(9Ee0NDMg}GUW&s8U#=k*KH}iZICVDq$bYIZ+e122pUG2nk&zDQR zWnf@n^imL?@H_ISPqwPzeE!s*{m!XYGxfr&>}T4AN7+i+`BWK69`l=JJg<@GOwGw% zWzTml-*S4-8{Vyn^=G!e*WL5_Xv)UImCLW`KF-_wY`(0u?NJl9b3SVf*{~tQ zWUe6lsN33|3?@!1Q?i@m>8LvnOVUy3=GUHOstG-3<4sefIkJ2&{YX_+0p+j{Nlw1jo11y-(mbHT5y+G)iRvCmPLr6oS696Q$ZI_jq2ZnJNK zbA93$vgqHNy14NMbIXNozFN`O_B5}&*O0k7XKSeS%&&>n8yqe6KMssKG2h&b;ky7MbfhxEX-(Fz z$q(+Qo&DXFqba1|U=XRtYUBIY%Xaskn-?2(_&JqR&u&}9uacq`)gt*`=*Ehg1FtSm z%r^b}XKOXv_NVE7+q_yiH+lV@>*XWLy6I@ve}=P{Z)QCUW;pU-)3SGAzjd|$G}O({ z-C0sJ;YZT4)yE%CE4{Hn=!)9R9|=br{#wz?iAenH( zGs!Z?wyvM^{|JM!AOjN@JW8rVK@V}FP3Txs6Uwpop5f_w zCyOM7)AI#Xa_;Va@6Kr{Ik)?G?q2tI6-mdG{+#)1w|MI+x4A|SpJX>l{j`fQtgo_+ zFq^qwKWoN}xf_md)|74Es=e^c8a-aW!pbn8CuX&|>#nBtd5U_TdcEG)x1-_NmeeVK zR$ETc+1<%qD*Qfhnx~Djaq9)C9arRRPV&uWFjrex(yS7=FM0M+*ATPXwN9GBbKCZQ zdUN`%x0d(0v|B14YyPZwv^-!z&tmn%foAf-((F4$r;CJhTZmisJ6B6h=5L5=lk_=b z{!R2$_3GYhOMSdVyTZ?(mFJuLZ|XE5!(hRJ6(w@dmL5rRV5?ibVvWtyD38S|+v2k# zcOHuQC*m)-^!OGh6InCS(|(JyqpocJe9X7$Pxz;;wQt-{xiaR~-P=0tZ`ge?2w z>Cu!@jVtc&1D8D1Rd1c{C*ao=<8s%_X3y)X?S9pEbG9yfcILTI{gv41PyhZ|{p0m4 zghKh*a4UXz=}tWuXwntr&EcdJzJh2{eHXKLTKExvHsJNv2B zg-O*9H{5@hpRYBI)pCL%=mvGnS20hw%rr=`hO9#Cp-~Rn)$U5QL>!R4Z#3*wL z?@P5Kn|fxg$zFf`!(rApm%QwKvm=eUb6g!o(mt+Y;Cz4hEqm+FtknGV_189jG+R@& z_1_+YV74vCUT;tQ&#<-e$nWV4d68l@ftjlp_o|wkF{9Kp#i6uE(1os5Y3;pxfUq!Fcv~KUUF7Xpf z%c3;xdaj2lpOJm}(dVM5cZUAewJTMHN{DM~nH>6X%&yO^=rJCcZzd zGWqC}Lmmwt#YUb>d#z6#@_e!_$xN=fsprnlfV*C^C1LjUx`sv@64a*Mid{<%FEO^q*{N$u>-sl?dP5%b)w7r9A`>Ibe$^XyYSENKSLA)H{%BRr~RMm{~uw{6kudvWM*bzWPz2L zjDie`hK_-W0)>qe7j8Uw@q@uf1&4>w!iCXZ@x>HxPVSoZYen~_M2GasbsiQz^&$Ai zVur>Uu2woiH`eg%zqIz8)$x6+Y$imXmA}yGG5gCdehzQ9i>gJo)`@&^FF09Le5)LS z8WvU8^LS0aE6#h5A#;+z<%kpWD_76|eZ;GB@`D#G7jDep_;mWBC&#rfiZk9lK6&ZU zf_E&-C*8|V*7Ayy$!oXLU*7UUch}68r+OLns&az1x2vt(R_3(qZ|k2`+F;Bap7!w) z#{{J>9|eA{j$oL)^5&ZI#as%enzB2dr_AM=u%k?-`-+2XOBIz>u1)HeFj{8b{%rY*9*bxBt6xWLoZ2&K%I#};UM#%ZrLQw{>aEsJNwLv?HCJgT7P_1FJyV{RS3M_gIe&nQ zj?Ma43+oO#$8>nEHhHS@+S|V4WJBYRs09uRuNUbHsSA8G+`7t*DeY+b#-(0C4%579 zrU3sNFe`??-|v)CWNYvnN0cvL950|!FT&HX+a&!~R z!S=dWht#4E34Z>3++B9YnX|@=e;qYfp2d#``ALny%&&Qht9{Eg`Q^KG0v%rDw4a+YiH~-V83>^D?%b`p{A9YS(o~ZBazZ zx%*YOt~=g-W*EkN&CSlSU*u`rqabs^oO4k!4HLx6&bY2{yn5xxWcf!HH+`Brd}ndL zJrg4&X#FREk+rY0>Qj(Whh=`mTeA%{Lffw|_#6?kRZjjWL+ts*hH9plmt0t0WBT%L z-_3q|5nYF#vrT-HXGrQZw)(s-JaaQ{63^p;)0P5-L0ev3&spzu*s}7b{+bJ{>?}|3 zRz_br>Rl7avb%!G?B5jLUWNwyYd`KEhV@JsKrJDG37jlUjtT;tOD1_LT;fpZaAjxi zaF`IBf9a#5-Zx&qg$k!JaQN0lz#MK=_eO!8C_@?>G)6lvg8ndAvV z6FgNWfl3WIaLbH|5!RAtU|?hr6i_f!3M(N%>>x4|lgt>8RcLYV+N&678ox%l188cB?_+ zQ!YnG>5pmLcl5tYyw+q7h!o#JQ^f4>n&OV&ef57~TYueKvi;F&l&fgTgSV%;3l9{1Psq3W2T3>{I zPuan^n6tJ)O6f=`1DC<({7v8Ep1ZgIKf<6U0BOI1x;?Dmz9XZcB7>o$Kwx5F<3a-k zhlv|6egOM|k%7@(;D=Y?G&b#()(M9U7yG&J=wB51+tH=;Y4u*&+xBj&nXk9>E!d#z z(6H%-PO}A1gJ@hIC*PX}voN*&?>5(^22QW;+`Y=yaBsoKkR@F#M_lp`C~{1Qbl&;% zNsWZkZ(;eS8QXO37jvlIEqxw}0zf8hI)LmUq}|NM^9SVQ(!t zF@M4z8|h0IE^t1YaNgub0eiTI!-?r0Cu-;T9BF#GV!g`=jjH{UqW8`{xYHafQ!5j3 zES7~^<(}OPjR3}|9}B+ ze$EM&+9}L>3kA&5J@yFisTC1?Gp&5`o<|`ogEW>+Vy*l7;QritX>*k+J$v&RDuou5 zxIa^!DaX9w@wUm>zdE^kLyArsK{WdBN)+_hso% z-l%8Pu}M(&Tg^w?+Wp&4`U6Qx-lvtl~7`K}6Y9rpDL(Z`miS zu}GY7{&=kMK;f>&pZl+iGPE`5#xpQ!%1EEJoFluIfte{sIrCJ3@Mj^e8u@ZHm9;)pKw+bMumB2azu# z)hsXBE$*x+kG1-}=sO*( zS8S~K-Os4~zIRHag#1GHyoQ=RDIv9)f=t&~78%O7iZFd^um2n0IoV-a9N&!gZ}JwZ zE=SINV(+}qcJGH%vd{X;*)u;#>2FM3rjeYTN zN9Q)~Zj-RZNp0thZ+o6t%%#ip;`y9nfzE>qjDG}vo8xE9=`d9-_l4htpREY&y;V<;cR#Myt5E43*`TE{J$Y=*$$ql(tTafrH)g!*vazyLA~YN*mpT z3|=-G-D(Li31}!*3vct_(k$a#^tm;`J86voLyDX0l*)a3j&w@QGJJD+>IxhCUoL<3 z{#yKJxG<%OY1hO1LK81HZ#&ddeMx+wM%6iW^Q&v(&xIzoyRjb<+`;<7xY#w_%^{>G zN_YLKcpd|*A9;Zn^pX?ax#u63>yOr0EfAvlHN5F!K~PIl#$UC*IZDOucRm{*Wwvs! VkX_=S#2~@={CEBv`@{cl0s!P{2Au!^ diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt deleted file mode 100644 index 510b7e111a..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt +++ /dev/null @@ -1,82 +0,0 @@ -# This file contains a definition for the "CH2" molecular subunit. - -# First, load the OPLS force field parameters we will need. -# These 2 files are located in the "src/moltemplate_force_fields/" subdirectory: - -import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field -import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from - # Sui et al. J.Chem.Theory.Comp (2012), 8, 1459 - # To use the ordinary OPLSAA force field parameters, - # (instead of the Sui et al. parameters), change the - # atom types below from "@atom:81L","@atom:85LCH2" to - # "@atom:81" and "@atom:85" (defined in "oplsaa.lt") - - - -# Then define "CH2": - - -CH2 inherits OPLSAA { - - # atom-id mol-id atom-type charge x y z - - write("Data Atoms") { - $atom:C $mol:... @atom:81L 0.0 0.000000 0.000000 0.000000 - $atom:H1 $mol:... @atom:85LCH2 0.0 0.000000 0.631044 0.892431 - $atom:H2 $mol:... @atom:85LCH2 0.0 0.000000 0.631044 -0.892431 - } - - write('Data Bond List') { - $bond:CH1 $atom:C $atom:H1 - $bond:CH2 $atom:C $atom:H2 - } - - # Atom type numbers (@atom:80L,@atom:85LCH3) are defined in "loplsaa.lt", - # which is usually located in the "src/moltemplate_force_fields/" subdirectory - # @atom:80L "Alkane CH3- (LOPLS CT_CH3)" - # @atom:81L "Alkane -CH2- (LOPLS CT_CH2)" - # @atom:85LCH3 "Alkane H-C CH3 (LOPLS HC_CH3)" - # @atom:85LCH2 "Alkane H-C CH2 (LOPLS HC_CH2)" - # In this example, atomic charges are generated by atom type (according to the - # rules in loplsaa.lt), and can be omitted. Just leave them as "0.00" for now. - # The "..." in "$mol:..." tells moltemplate that this molecule may be part - # of a larger molecule, and (if so) to use the larger parent object's - # molecule id number as it's own. - -} # CH2 - - - - - - - - - - - - - - - -# Optional: Shift all the coordinates in the +Y direction by 0.4431163. -# This way, the carbon atom is no longer located at 0,0,0, but the -# axis of an alkane chain containing this monomer is at 0,0,0. -# (This makes it more convenient to construct a polymer later. -# If this is confusing, then simply add 0.4431163 to the Y -# coordinates in the "Data Atoms" section above.) - -CH2.move(0,0.4431163,0) - - - - -######### (scratchwork calculations for the atomic coordinates) ######### -# Lcc = 1.5350 # length of the C-C bond (Sp3) -# Lch = 1.0930 # length of the C-H bond -# theta=2*atan(sqrt(2)) # ~= 109.5 degrees = tetrahedronal angle (C-C-C angle) -# DeltaXc = Lcc*sin(theta/2) # = 1.2533222517240594 -# DeltaYc = Lcc*cos(theta/2) # = 0.8862326632060754 -# # 0.5*DeltaYc = 0.4431163 -# DeltaZh = Lch*sin(theta/2) # = 0.892431 -# DeltaYh = Lch*cos(theta/2) # = 0.631044 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt deleted file mode 100644 index b01c8c0cd2..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt +++ /dev/null @@ -1,83 +0,0 @@ -# This file contains a definition for the "CH3" molecular subunit. - -# First, load the OPLS force field parameters we will need. -# These 2 files are located in the "src/moltemplate_force_fields/" subdirectory: - -import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field -import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from - # Sui et al. J.Chem.Theory.Comp (2012), 8, 1459 - # To use the ordinary OPLSAA force field parameters, - # (instead of the Sui et al. parameters), change the - # atom types below from "@atom:80L","@atom:85LCH3" to - # "@atom:80" and "@atom:85" (defined in "oplsaa.lt") - - - -# Then define "CH3": - - -CH3 inherits OPLSAA { - - # atom-id mol-id atom-type charge x y z - - write("Data Atoms") { - $atom:C $mol:... @atom:80L 0.0 0.000000 0.000000 0.000000 - $atom:H1 $mol:... @atom:85LCH3 0.0 0.000000 0.631044 0.892431 - $atom:H2 $mol:... @atom:85LCH3 0.0 0.000000 0.631044 -0.892431 - $atom:H3 $mol:... @atom:85LCH3 0.0 -0.892431 -0.631044 0.000000 - } - - write('Data Bond List') { - $bond:CH1 $atom:C $atom:H1 - $bond:CH2 $atom:C $atom:H2 - $bond:CH3 $atom:C $atom:H3 - } - - # Atom type numbers (@atom:80L,@atom:85LCH3) are defined in "loplsaa.lt", - # @atom:80L "Alkane CH3- (LOPLS CT_CH3)" - # @atom:81L "Alkane -CH2- (LOPLS CT_CH2)" - # @atom:85LCH3 "Alkane H-C CH3 (LOPLS HC_CH3)" - # @atom:85LCH2 "Alkane H-C CH2 (LOPLS HC_CH2)" - # In this example, atomic charges are generated by atom type (according to the - # rules in loplsaa.lt), and can be omitted. Just leave them as "0.00" for now. - # The "..." in "$mol:..." tells moltemplate that this molecule may be part - # of a larger molecule, and (if so) to use the larger parent object's - # molecule id number as it's own. - -} # CH3 - - - - - - - - - - - - - - - -# Optional: Shift all the coordinates in the +Y direction by 0.4431163. -# This way, the carbon atom is no longer located at 0,0,0, but the -# axis of an alkane chain containing this monomer is at 0,0,0. -# (This makes it more convenient to construct a polymer later. -# If this is confusing, then simply add 0.4431163 to the Y -# coordinates in the "Data Atoms" section above.) - -CH3.move(0,0.4431163,0) - - - - -######### (scratchwork calculations for the atomic coordinates) ######### -# Lcc = 1.5350 # length of the C-C bond (Sp3) -# Lch = 1.0930 # length of the C-H bond -# theta=2*atan(sqrt(2)) # ~= 109.5 degrees = tetrahedronal angle (C-C-C angle) -# DeltaXc = Lcc*sin(theta/2) # = 1.2533222517240594 -# DeltaYc = Lcc*cos(theta/2) # = 0.8862326632060754 -# # 0.5*DeltaYc = 0.4431163 -# DeltaZh = Lch*sin(theta/2) # = 0.892431 -# DeltaYh = Lch*cos(theta/2) # = 0.631044 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt deleted file mode 100644 index 96e9e6b4bf..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt +++ /dev/null @@ -1,79 +0,0 @@ -# This example looks complicated because I split the -# hexadecane molecule into individual CH2 and CH3 monomers. -# -# I defined it this way so that you can easily modify -# it to change the length of the alkane chain. - - -import "oplsaa.lt" # load the "OPLSAA" force-field information -import "ch2group.lt" # load the definition of the "CH2" object -import "ch3group.lt" # load the definition of the "CH3" object - - - -Hexadecane inherits OPLSAA { - - - create_var {$mol} # optional:force all monomers to share the same molecule-ID - - - # Now create an array of 16 "CH2" objects distributed along the X axis - - monomers = new CH2 [16].rot(180,1,0,0).move(1.2533223,0,0) - - # Each monomer is rotated 180 degrees with respect to the previous - # monomer, and then moved 1.2533223 Angstroms down the X axis. - - # ---- Now, modify the ends: --- - # Delete the CH2 groups at the beginning and end, and replace them with CH3. - - delete monomers[0] - delete monomers[15] - - monomers[0] = new CH3 - monomers[15] = new CH3 - - # Move the CH3 groups to the correct location at either end of the chain: - - monomers[15].rot(180.0,0,0,1).move(18.7998345,0,0) - # Note: 18.7998345 = (16-1) * 1.2533223 - - - # Now add a list of bonds connecting the carbon atoms together: - - write('Data Bond List') { - $bond:b1 $atom:monomers[0]/C $atom:monomers[1]/C - $bond:b2 $atom:monomers[1]/C $atom:monomers[2]/C - $bond:b3 $atom:monomers[2]/C $atom:monomers[3]/C - $bond:b4 $atom:monomers[3]/C $atom:monomers[4]/C - $bond:b5 $atom:monomers[4]/C $atom:monomers[5]/C - $bond:b6 $atom:monomers[5]/C $atom:monomers[6]/C - $bond:b7 $atom:monomers[6]/C $atom:monomers[7]/C - $bond:b8 $atom:monomers[7]/C $atom:monomers[8]/C - $bond:b9 $atom:monomers[8]/C $atom:monomers[9]/C - $bond:b10 $atom:monomers[9]/C $atom:monomers[10]/C - $bond:b11 $atom:monomers[10]/C $atom:monomers[11]/C - $bond:b12 $atom:monomers[11]/C $atom:monomers[12]/C - $bond:b13 $atom:monomers[12]/C $atom:monomers[13]/C - $bond:b14 $atom:monomers[13]/C $atom:monomers[14]/C - $bond:b15 $atom:monomers[14]/C $atom:monomers[15]/C - } - -} # Hexadecane - - - - - - - - -######### (scratchwork calculations for the atomic coordinates) ######### -# Lcc = 1.5350 # length of the C-C bond (Sp3) -# Lch = 1.0930 # length of the C-H bond -# theta=2*atan(sqrt(2)) # ~= 109.5 degrees = tetrahedronal angle (C-C-C angle) -# DeltaXc = Lcc*sin(theta/2) # = 1.2533222517240594 -# DeltaYc = Lcc*cos(theta/2) # = 0.8862326632060754 -# # 0.5*DeltaYc = 0.4431163316030377 -# DeltaZh = Lch*sin(theta/2) # = 0.8924307629540046 -# DeltaYh = Lch*cos(theta/2) # = 0.6310438442242609 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 5b6e32d845..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,108 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the -"ethylene" example. (However, these instructions should work -for other molecules too.) - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with ethylene, you would delete every line -beginning with the word "atom", except for these two lines: - - -atom 80 13 CT "Alkane CH3-" 6 12.011 4 -atom 81 13 CT "Alkane -CH2-" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "88", "89", "47", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "ethyelene.lt": - -import "oplsaa.lt" -Ethylene inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 2 charge -0.42 -set type 3 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newtonâ€like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Jason Lambert and Andrew Jewett -December 14 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index 1260acdbd3..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,151 +0,0 @@ -# This file is a heavily redacted version of the "oplsaa.prm" file distributed -# with TINKER (Downloaded April, 2014). This version only contains information -# relevant to alkane chains. The complete version of that file works with most -# small organic molecules and you can use that file with moltemplate too. -# Unfortunately, I do not own or have permission to distribute that file. -# You can download the latest complete version of that file here: -# -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# -# When building your own molecules, you should download this file, and delete -# only the lines from the "atoms" section which you don't need. (But leave the -# rest of that file alone. I deleted other sections of this file here in order -# to reduce the file size, but this is not necessary.) -# -# Rename the resulting file "oplsaa_subset.prm" -# -# Then you can create an oplsaa.lt file (which moltemplate.sh needs) this way: -# oplsaa_moltemplate.py oplsaa_subset.prm -# -# Then copy the newly created "oplsa.lt" file to the directory where you -# plan to run moltemplate, and run moltemplate: -# moltemplate system.lt - - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - - -atom 80 13 CT "Alkane CH3-" 6 12.011 4 -atom 81 13 CT "Alkane -CH2-" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 80 3.5000 0.0660 -vdw 81 3.5000 0.0660 -vdw 85 2.5000 0.0300 - - -bond 13 13 268.00 1.5290 -bond 13 46 340.00 1.0900 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 13 13 13 58.35 112.70 -angle 46 13 46 33.00 107.80 -angle 13 13 46 37.50 110.70 - - - ############################ - ## ## - ## Torsional Parameters ## - ## ## - ############################ - - - ################################################################### - ## ## - ## Alternative Torsional Parameter Values for Use with OPLS-AA ## - ## ## - ## For some torsions, OPLS-AA has multiple possible parameter ## - ## values; the list below shows functional groups for which ## - ## these alternate (commented) values should be preferred; the ## - ## values are in the same order as in the full parameter list ## - ## ## - ## 13 13 13 13 hydrocarbon (default) ## - ## 13 13 13 13 perfluoroalkane ## - ## ## - ################################################################### - - -torsion 0 13 13 13 1.711 0.0 1 -0.500 180.0 2 0.663 0.0 3 -#torsion 0 13 13 13 -1.336 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 13 13 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 -#torsion 13 13 13 13 6.622 0. 1 0.948 180. 2 -1.388 0. 3 -2.118 180. 4 -torsion 13 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 - - - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 80 -0.1800 -charge 81 -0.1200 -charge 85 0.0600 - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt deleted file mode 100644 index 4e0cfaec69..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt +++ /dev/null @@ -1,18 +0,0 @@ -import "hexadecane.lt" # <- defines the "Hexadecane" molecule type. - -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 62.4 xlo xhi - 0.0 62.4 ylo yhi - 0.0 62.4 zlo zhi -} - -molecules = new Hexadecane [12].move(0, 0, 5.2) - [12].move(0, 5.2, 0) - [2].move(31.2, 0, 0) - - -# NOTE: The spacing between molecules is large. There should be extra room to -# move during the initial stages of equilibration. However, you will have to -# run the simulation at NPT conditions later to compress the system to a -# more realistic density. diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.npt deleted file mode 100644 index 1b1a28fabc..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.npt +++ /dev/null @@ -1,87 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings -include system.in.charges - -# ------------------------------- Run Section ------------------------------- - -# To avoid explosions, I have a 4-step equilibraion process (expand, minimize, -# reorient, compress). The system (as defined in the "system.data" file) -# is already expanded. That means there are 3 steps left: - -dump dumpeq1 all custom 50 traj_eq1_min.lammpstrj id mol type x y z ix iy iz -thermo 50 - -# -- Equilibration: part 1: initial minimization -- - -# Note: In general, it's always a good idea to minimize the system at first. - -minimize 1.0e-5 1.0e-7 100000 400000 -undump dumpeq1 - -write_data system_after_eq1_min.data - -# -- Equilibration part 2: reorienting the molecules (NVT) -- - -timestep 1.0 -dump dumpeq2 all custom 200 traj_eq2_reorient.lammpstrj id mol type x y z ix iy iz - -# Run the system at high temperature (at constant volume) to reorient the -# the molecules (which would otherwise be pointing in the same direction). - -# To speed it up, I randomize the atomic positions for a few thousand steps -# using fix langevin (and fix nve). Then I switch to fix nvt (Nose-Hoover). -# (If I start with fix nvt (Nose-Hoover), it seems to get "stuck" for a while.) - - -fix fxlan all langevin 900.0 900.0 120 48279 -fix fxnve all nve - -run 4000 - -unfix fxlan -unfix fxnve -# Now continue the simulation at high temperature using fix nvt (Nose-Hoover). -fix fxnvt all nvt temp 900.0 900.0 100.0 - -run 50000 -undump dumpeq2 - - -write_data system_after_eq2_reorient.data - -unfix fxnvt - -# -- equilibration part 3: Equilibrating the density (NPT) -- - -# Originally, the simulation box (in "system.data" and "system.lt") was -# unrealistically large. The spacing between the molecules was large also. -# I did this to enable the molecules to move freely and reorient themselves. -# After doing that, we should run the simulation under NPT conditions to -# allow the simulation box to contract to it's natural size. We do that here: -# We begin the simulation at 100 barr (a relatively low pressure), and -# slowly decrease it to 1 barr, maintianing the temperature at 300K. - -dump dumpeq3 all custom 200 traj_eq3_npt.lammpstrj id mol type x y z ix iy iz -fix fxnpt all npt temp 900.0 300.0 100.0 iso 100.0 1.0 1000.0 drag 2.0 - -timestep 1.0 -run 100000 - -write_data system_after_eq3_npt.data - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.nvt deleted file mode 100644 index 38815745c5..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.nvt +++ /dev/null @@ -1,44 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - - -# Read the coordinates generated by an earlier NPT simulation - -read_data system_after_eq3_npt.data - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings -include system.in.charges - -# ------------------------------- Run Section ------------------------------- - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 500 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 350.0 350.0 500.0 tchain 1 -thermo 100 -#thermo_modify flush yes - -run 50000 - -write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT deleted file mode 100644 index 9f9e9d0994..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT +++ /dev/null @@ -1,24 +0,0 @@ -This example demonstrates how to build a simulation containing a box of methane. -(Not a very interesting example.) - ----- Details ---- - -The methane molecules in this example use the OPLSAA force-field. -This means that the database of force-field parameters in "oplsaa.lt" -will be used to generate angles, dihedrals, and impropers. -The "moltemplate_files/methane.lt" file -contains these lines which refer to OPLSAA: - -import "oplsaa.lt" -Methane inherits OPLSAA { ... - --------- Instructions: --------- - -More detailed instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step 2) -README_run.sh diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh deleted file mode 100755 index 5f82866644..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh +++ /dev/null @@ -1,34 +0,0 @@ -# --- Running LAMMPS --- -# -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh deleted file mode 100755 index 6aa6c06f4c..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ - - - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/methane/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt deleted file mode 100644 index bb8f0469cf..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt +++ /dev/null @@ -1,32 +0,0 @@ -import "oplsaa.lt" - -# Atom type numbers are from the "oplsaa_subset.prm" -# file used to generate "oplsaa.lt". - -# atom 83 13 CT "Methane CH4" -# atom 85 46 HC "Alkane H-C" - -Methane inherits OPLSAA { - - # atomID molID atomTyle charge X Y Z - write('Data Atoms') { - $atom:C $mol:. @atom:83 0.0 0.000000 0.000000 0.000000 - $atom:H1 $mol:. @atom:85 0.0 0.000000 0.000000 1.089000 - $atom:H2 $mol:. @atom:85 0.0 1.026719 0.000000 -0.363000 - $atom:H3 $mol:. @atom:85 0.0 -0.513360 -0.889165 -0.363000 - $atom:H4 $mol:. @atom:85 0.0 -0.513360 0.889165 -0.363000 - } - - # Charges will be assigned by OPLSAA, so we leave them 0.0 here. - # - # (The "." in "$mol:." refers to this molecule-object's molecule-ID number. - # The "." simply means this molecule is not a part of a larger molecule.) - - write('Data Bond List') { - $bond:CH1 $atom:C $atom:H1 - $bond:CH2 $atom:C $atom:H2 - $bond:CH3 $atom:C $atom:H3 - $bond:CH4 $atom:C $atom:H4 - } - -} # Methane diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 3336341da8..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,108 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the "Methane" -molecule. (However, these instructions should work for other molecules too.) - ---- Instructions --- - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with methane, you would delete every line -beginning with the word "atom", except for these two lines: - - -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "83", "85", "46", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "methane.lt": - -import "oplsaa.lt" -Methane inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 2 charge -0.42 -set type 3 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newtonâ€like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Andrew Jewett and Jason Lambert -May, 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index 5f982059b3..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,115 +0,0 @@ -# This is a modified version of the file "oplsaa.prm" distributed with TINKER -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# In this version, all of the lines beginning with "atom" have been deleted -# except for the atom types we will be using in this simulation -# (I also deleted some other lines from that file data to reduce the file size, -# but doing that is not necessary.) -# -# If you use this file, please also cite the software this file comes from: -# -# Ponder, J. W., and Richards, F. M. J. Comput. Chem. (1987) 8(7), 1016-1024 -# "An efficient newtonâ€like method for molecular mechanics energy -# minimization of large molecules." -# -# Ponder, J. W, (2004) -# "TINKER: Software tools for molecular design" -# http://dasher.wustl.edu/tinker/ - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - -# Note: -# In this example, I am only using OPLSAA to lookup force-field parameters -# for methane. (The water molecules in this example do not need OPLSAA.) -# So I deleted all of the lines beginning with "atom" except these two: - -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 83 3.5000 0.0660 -vdw 85 2.5000 0.0300 - - - ################################## - ## ## - ## Bond Stretching Parameters ## - ## ## - ################################## - - -bond 13 46 340.00 1.0900 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 46 13 46 33.00 107.80 - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 83 -0.2400 -charge 85 0.0600 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/system.lt deleted file mode 100644 index 7c846cd937..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/system.lt +++ /dev/null @@ -1,15 +0,0 @@ -import "methane.lt" # <- defines the "Methane" molecule type (uses OPLSAA) - -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 103.5 xlo xhi - 0.0 103.5 ylo yhi - 0.0 103.5 zlo zhi -} - -# Now add methane molecules: - -methanes = new Methane [10].move(0, 0, 10.35) - [10].move(0, 10.35, 0) - [10].move(10.35, 0, 0) - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.npt deleted file mode 100644 index 208d4b681f..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.npt +++ /dev/null @@ -1,51 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -read_data "system.data" - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" -include "system.in.charges" - - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -# Note: The minimization step is not necessary in this example. However -# in general, it's always a good idea to minimize the system beforehand. -# (The "fShakeSPCE" fix was defined in system.in.settings. -# It is incompatible with "minimize", so we disable it first.) -#unfix fShakeSPCE -thermo 500 -minimize 1.0e-4 1.0e-6 100000 400000 - -# Now read "system.in.settings" in order to enable fShakeSPCE again: -#include system.in.settings - -# Optional: write the coordinates after minimization -write_data system_after_min.data - - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 2500 traj_npt.lammpstrj id mol type x y z ix iy iz -fix fxnpt all npt temp 300.0 300.0 100.0 iso 1.0 1.0 1000.0 drag 1.0 - -run 500000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.nvt deleted file mode 100644 index a4f382118f..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.nvt +++ /dev/null @@ -1,42 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -# Read the coordinates generated by an earlier NPT simulation - -read_data "system_after_npt.data" - -# (The "write_restart" and "reagd_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" -include "system.in.charges" - -# ------------------------------- Run Section ------------------------------- - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 1000 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 -thermo 500 -#thermo_modify flush yes - -run 50000 - -write_restart system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT deleted file mode 100644 index 5ad3a04b50..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT +++ /dev/null @@ -1,30 +0,0 @@ -This example contains a mixture of water(SPCE) and methane. -The methane molecules use OPLSAA force-field, but the water molecules do not. - ----- Details ---- - -The methane molecules in this example use the OPLSAA force-field. -This means that the database of force-field parameters in "oplsaa.lt" -will be used to generate angles, dihedrals, and impropers. -The "moltemplate_files/methane.lt" file -contains these lines which refer to OPLSAA: - -import "oplsaa.lt" -Methane inherits OPLSAA { ... - -However the "SPCE" (water) molecules does NOT use a database to look up the -force-field parameters for this tiny molecule. -Instead, the "moltemplate_files/spce.lt" file declares all of the angle -interactions, atom properties and force-field parameters for water explicitly. -(Consequently, it makes no mention of "oplsaa.lt" or "OPLSAA".) - --------- Instructions: --------- - -More detailed instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step 2) -README_run.sh diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh deleted file mode 100755 index 5f82866644..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh +++ /dev/null @@ -1,34 +0,0 @@ -# --- Running LAMMPS --- -# -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh deleted file mode 100755 index 6aa6c06f4c..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ - - - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt deleted file mode 100644 index bb8f0469cf..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt +++ /dev/null @@ -1,32 +0,0 @@ -import "oplsaa.lt" - -# Atom type numbers are from the "oplsaa_subset.prm" -# file used to generate "oplsaa.lt". - -# atom 83 13 CT "Methane CH4" -# atom 85 46 HC "Alkane H-C" - -Methane inherits OPLSAA { - - # atomID molID atomTyle charge X Y Z - write('Data Atoms') { - $atom:C $mol:. @atom:83 0.0 0.000000 0.000000 0.000000 - $atom:H1 $mol:. @atom:85 0.0 0.000000 0.000000 1.089000 - $atom:H2 $mol:. @atom:85 0.0 1.026719 0.000000 -0.363000 - $atom:H3 $mol:. @atom:85 0.0 -0.513360 -0.889165 -0.363000 - $atom:H4 $mol:. @atom:85 0.0 -0.513360 0.889165 -0.363000 - } - - # Charges will be assigned by OPLSAA, so we leave them 0.0 here. - # - # (The "." in "$mol:." refers to this molecule-object's molecule-ID number. - # The "." simply means this molecule is not a part of a larger molecule.) - - write('Data Bond List') { - $bond:CH1 $atom:C $atom:H1 - $bond:CH2 $atom:C $atom:H2 - $bond:CH3 $atom:C $atom:H3 - $bond:CH4 $atom:C $atom:H4 - } - -} # Methane diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 0bc46d88c8..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,111 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the "Methane" -molecule. (However, these instructions should work for other molecules too.) -Note that the "SPCE" (water) molecules in this example, do NOT use the OPLSAA -database to look up the force-field parameters, so I did not include water -atom types in the "oplsaa_subset.prm". - ---- Instructions --- - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with methane, you would delete every line -beginning with the word "atom", except for these two lines: - - -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "83", "85", "46", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "methane.lt": - -import "oplsaa.lt" -Methane inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 2 charge -0.42 -set type 3 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newtonâ€like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Andrew Jewett and Jason Lambert -May, 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index fee34956bc..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,126 +0,0 @@ -# This is a modified version of the file "oplsaa.prm" distributed with TINKER -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# In this version, all of the lines beginning with "atom" have been deleted -# except for the atom types we will be using in this simulation. -# (I also deleted some other lines from that file data to reduce the file size, -# but doing that is not necessary.) -# -# If you use this file, please also cite the software this file comes from: -# -# Ponder, J. W., and Richards, F. M. J. Comput. Chem. (1987) 8(7), 1016-1024 -# "An efficient newtonâ€like method for molecular mechanics energy -# minimization of large molecules." -# -# Ponder, J. W, (2004) -# "TINKER: Software tools for molecular design" -# http://dasher.wustl.edu/tinker/ - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - -# Note: -# In this example, I am only using OPLSAA to lookup force-field parameters -# for methane. (The water molecules in this example do not need OPLSAA.) -# So I deleted all of the lines beginning with "atom" except these two: - -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - -# NOTE: You can use the OPLSAA force field to look up SPC water parameters as -# In that case, you could do this by uncommenting these next two lines: -# atom 76 42 OW "SPC Water O" 8 15.999 2 -# atom 77 43 HW "SPC Water H" 1 1.008 1 - - - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 83 3.5000 0.0660 -vdw 85 2.5000 0.0300 - - - ################################## - ## ## - ## Bond Stretching Parameters ## - ## ## - ################################## - - -bond 13 46 340.00 1.0900 -bond 42 43 600.00 1.0000 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 46 13 46 33.00 107.80 -angle 43 42 43 75.00 109.47 - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 76 -0.8200 -charge 77 0.4100 -charge 83 -0.2400 -charge 85 0.0600 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt deleted file mode 100644 index fdf6172a4b..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt +++ /dev/null @@ -1,52 +0,0 @@ -# file "spce.lt" -# -# H1 H2 -# \ / -# O - -SPCE { - - write("Data Atoms") { - $atom:O $mol:. @atom:O -0.8476 0.0000000 0.00000 0.000000 - $atom:H1 $mol:. @atom:H 0.4238 0.8164904 0.00000 0.5773590 - $atom:H2 $mol:. @atom:H 0.4238 -0.8164904 0.00000 0.5773590 - } - - write_once("Data Masses") { - @atom:O 15.9994 - @atom:H 1.008 - } - - write("Data Bonds") { - $bond:OH1 @bond:OH $atom:O $atom:H1 - $bond:OH2 @bond:OH $atom:O $atom:H2 - } - - write("Data Angles") { - $angle:HOH @angle:HOH $atom:H1 $atom:O $atom:H2 - } - - write_once("In Settings") { - bond_coeff @bond:OH harmonic 600.0 1.0 - angle_coeff @angle:HOH harmonic 75.0 109.47 - pair_coeff @atom:O @atom:O lj/cut/coul/long 0.1553 3.166 - pair_coeff @atom:H @atom:H lj/cut/coul/long 0.0 0.0 - group spce type @atom:O @atom:H - fix fShakeSPCE spce shake 0.0001 10 100 b @bond:OH a @angle:HOH - # (Remember to "unfix" fShakeSPCE during minimization.) - } - - write_once("In Init") { - # -- Default styles (for solo "SPCE" water) -- - units real - atom_style full - # (Hybrid force fields were not necessary but are used for portability.) - pair_style hybrid lj/cut/coul/long 10.0 10.0 - bond_style hybrid harmonic - angle_style hybrid harmonic - kspace_style pppm 0.0001 - #pair_modify mix arithmetic # LEAVE THIS UNSPECIFIED! - } - -} # end of definition of "SPCE" water molecule type - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt deleted file mode 100644 index 3957d08eb7..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt +++ /dev/null @@ -1,26 +0,0 @@ -import "spce.lt" # <- defines the "SPCE" (water) molecule type. -import "methane.lt" # <- defines the "Methane" molecule type (uses OPLSAA) - -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 41.50 xlo xhi - 0.0 41.50 ylo yhi - 0.0 41.50 zlo zhi -} - -# The next command generates a (rather dense) cubic lattice with -# spacing 3.45 Angstroms. (The pressure must be equilibrated later.) - -waters = new SPCE [12].move(0.00, 0.00, 3.45) - [12].move(0.00, 3.45, 0.00) - [12].move(3.45, 0.00, 0.00) - -# Now add methane molecules: - -methanes = new Methane [4].move(0, 0, 10.35) - [4].move(0, 10.35, 0) - [4].move(10.35, 0, 0) - -# Move the methane molecules slightly to reduce overlap with the water -methanes[*][*][*].move(1.725, 1.725, 1.725) - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt deleted file mode 100644 index df9c1f95f2..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt +++ /dev/null @@ -1,52 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -read_data "system.data" - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" -include "system.in.charges" - - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -# Note: The minimization step is not necessary in this example. However -# in general, it's always a good idea to minimize the system beforehand. -# (The "fShakeSPCE" fix was defined in system.in.settings. -# It is incompatible with "minimize", so we disable it first.) -unfix fShakeSPCE -thermo 50 -minimize 1.0e-4 1.0e-6 100000 400000 - -# Now read "system.in.settings" in order to enable fShakeSPCE again: -include system.in.settings - -# Optional: write the coordinates after minimization -write_data system_after_min.data - - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 10000 traj_npt.lammpstrj id mol type x y z ix iy iz -fix fxnpt all npt temp 300.0 300.0 100.0 iso 1.0 1.0 1000.0 drag 1.0 -thermo 100 - -run 2000000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt deleted file mode 100644 index 9652779bb0..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt +++ /dev/null @@ -1,42 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -# Read the coordinates generated by an earlier NPT simulation - -read_data "system_after_npt.data" - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" -include "system.in.charges" - -# ------------------------------- Run Section ------------------------------- - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 1000 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 -thermo 500 -#thermo_modify flush yes - -run 50000 - -write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT deleted file mode 100644 index 292d9d0ec0..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT +++ /dev/null @@ -1,18 +0,0 @@ -The purpose of this example is to test the density of water -constructed using the OPLSAA force-field. (I think this is SPC water, not SPCE) - -I just wanted some kind of sanity check to make sure we are converting -the OPLSAA parameters into moltemplate/LAMMPS format correctly. - -The "TEST_density_estimate.txt" contains the results of that test. - --------- Instructions: --------- - -More detailed instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step 2) -README_run.sh diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh deleted file mode 100755 index 71a18b0ab2..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh +++ /dev/null @@ -1,20 +0,0 @@ -# --- Running LAMMPS --- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # simulation at constant volume - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh deleted file mode 100755 index 6aa6c06f4c..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ - - - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt deleted file mode 100644 index 9dc50b389e..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt +++ /dev/null @@ -1,20 +0,0 @@ -This system contains 1728 water molecules -(This is SPC water I think.) - -Then I ran a short simulation for 170000 timesteps at 300Kelvin and 1 atm. -(that's when it crashed. I'll worry about why later...) - -Anyway, the average volume was 52149.8 (in Angstroms^3) -(for the last 80000 timesteps, after it had equilibrated) - -Given that the mass of water is 18.0154 grams per mole, I'm getting -this value for the density: - -density = (1728*18.0154/6.02214129e23) / (52149.8*1e-30*1e6) - = 0.991 (in grams per mL) - -I'm only looking for gross errors in the OPLSAA force-field. -So I'm satisfied with a 1% error. -But I realize this is not a particularly rigorous test. - -Andrew 2014-5-21 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 8ae373d713..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,115 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the "Methane" -molecule. (However, these instructions should work for other molecules too.) -Note that the "SPCE" (water) molecules in this example, do NOT use the OPLSAA -database to look up the force-field parameters, so I did not include water -atom types in the "oplsaa_subset.prm". - ---- Instructions --- - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with methane and SPC water, you would delete every line -beginning with the word "atom", except for these two lines: - - -atom 76 42 OW "SPC Water O" 8 15.999 2 -atom 77 43 HW "SPC Water H" 1 1.008 1 -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "83", "85", "46", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "methane.lt": - -import "oplsaa.lt" -Methane inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 1 charge -0.82 -set type 2 charge 0.41 -set type 3 charge -0.42 -set type 4 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newtonâ€like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Andrew Jewett and Jason Lambert -May, 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index 60bf1d855e..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,112 +0,0 @@ -# This is a modified version of the file "oplsaa.prm" distributed with TINKER -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# In this version, all of the lines beginning with "atom" have been deleted -# except for the atom types we will be using in this simulation. -# (That's all you need to do, but in this version, I also deleted -# everything else we don't need to reduce the file size.) -# -# If you use this file, please also cite the software this file comes from: -# -# Ponder, J. W., and Richards, F. M. J. Comput. Chem. (1987) 8(7), 1016-1024 -# "An efficient newtonâ€like method for molecular mechanics energy -# minimization of large molecules." -# -# Ponder, J. W, (2004) -# "TINKER: Software tools for molecular design" -# http://dasher.wustl.edu/tinker/ - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - - -atom 76 42 OW "SPC Water O" 8 15.999 2 -atom 77 43 HW "SPC Water H" 1 1.008 1 - - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 76 3.16557 0.1554 -vdw 77 0.0000 0.0000 - - - ################################## - ## ## - ## Bond Stretching Parameters ## - ## ## - ################################## - - -bond 42 43 600.00 1.0000 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 43 42 43 75.00 109.47 - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 76 -0.8200 -charge 77 0.4100 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt deleted file mode 100644 index e7f3d6d843..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt +++ /dev/null @@ -1,86 +0,0 @@ -# file "spce.lt" -# -# H1 H2 -# \ / -# O - - -import "oplsaa.lt" - -SPC inherits OPLSAA { - - # Atom types from "oplsaa_lt_generator/oplsaa_subset.prm" - # @atom:76 <--> OW "SPC Water O" - # @atom:77 <--> HW "SPC Water H" - - write("Data Atoms") { - $atom:O $mol:. @atom:76 -0.8200 0.0000000 0.0000 0.000000 - $atom:H1 $mol:. @atom:77 0.4100 0.8164904 0.0000 0.577359 - $atom:H2 $mol:. @atom:77 0.4100 -0.8164904 0.0000 0.577359 - } - - write("Data Bond List") { - $bond:OH1 $atom:O $atom:H1 - $bond:OH2 $atom:O $atom:H2 - } - -} # end of definition of "SPC" water molecule type - - - - - - - - - - - -###################### old version (SPCE) ###################### -# -#SPCE { -# -# write("Data Atoms") { -# $atom:O $mol:. @atom:O -0.8476 0.0000000 0.0000 0.000000 -# $atom:H1 $mol:. @atom:H 0.4238 0.8164904 0.0000 0.577359 -# $atom:H2 $mol:. @atom:H 0.4238 -0.8164904 0.0000 0.577359 -# } -# -# write_once("Data Masses") { -# @atom:O 15.9994 -# @atom:H 1.008 -# } -# -# write("Data Bonds") { -# $bond:OH1 @bond:OH $atom:O $atom:H1 -# $bond:OH2 @bond:OH $atom:O $atom:H2 -# } -# -# write("Data Angles") { -# $angle:HOH @angle:HOH $atom:H1 $atom:O $atom:H2 -# } -# -# write_once("In Settings") { -# bond_coeff @bond:OH harmonic 1000.0 1.0 -# angle_coeff @angle:HOH harmonic 1000.0 109.47 -# pair_coeff @atom:O @atom:O lj/cut/coul/long 0.1553 3.166 -# pair_coeff @atom:H @atom:H lj/cut/coul/long 0.0 2.058 -# group spce type @atom:O @atom:H -# fix fShakeSPCE spce shake 0.0001 10 100 b @bond:OH a @angle:HOH -# # (Remember to "unfix" fShakeSPCE during minimization.) -# } -# -# write_once("In Init") { -# # -- Default styles (for solo "SPCE" water) -- -# units real -# atom_style full -# # (Hybrid force fields were not necessary but are used for portability.) -# pair_style hybrid lj/cut/coul/long 10.0 -# bond_style hybrid harmonic -# angle_style hybrid harmonic -# kspace_style pppm 0.0001 -# pair_modify shift yes -# } -# -#} SPCE -################################################################### diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt deleted file mode 100644 index 5dd56c116f..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt +++ /dev/null @@ -1,16 +0,0 @@ -import "spc.lt" # <- defines the "SPC" (water) molecule type (uses OPLSAA) - -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 41.40 xlo xhi - 0.0 41.40 ylo yhi - 0.0 41.40 zlo zhi -} - -# The next command generates a (rather dense) cubic lattice with -# spacing 3.45 Angstroms. (The pressure must be equilibrated later.) - -waters = new SPC [12].move(0.00, 0.00, 3.45) - [12].move(0.00, 3.45, 0.00) - [12].move(3.45, 0.00, 0.00) - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt deleted file mode 100644 index 642880af2d..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt +++ /dev/null @@ -1,52 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -read_data "system.data" - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" -include "system.in.charges" - - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -# Note: The minimization step is not necessary in this example. However -# in general, it's always a good idea to minimize the system beforehand. -# (The "fShakeSPCE" fix was defined in system.in.settings. -# It is incompatible with "minimize", so we disable it first.) -#unfix fShakeSPCE -thermo 50 -minimize 1.0e-4 1.0e-6 100000 400000 - -# Now read "system.in.settings" in order to enable fShakeSPCE again: -#include system.in.settings - -# Optional: write the coordinates after minimization -write_data system_after_min.data - - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 2500 traj_npt.lammpstrj id mol type x y z ix iy iz -fix fxnpt all npt temp 300.0 300.0 100.0 iso 1.0 1.0 1000.0 drag 1.0 -thermo 100 - -run 2000000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt deleted file mode 100644 index 9652779bb0..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt +++ /dev/null @@ -1,42 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -# Read the coordinates generated by an earlier NPT simulation - -read_data "system_after_npt.data" - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" -include "system.in.charges" - -# ------------------------------- Run Section ------------------------------- - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 1000 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 -thermo 500 -#thermo_modify flush yes - -run 50000 - -write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README.TXT b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README.TXT deleted file mode 100644 index 036c6e7569..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README.TXT +++ /dev/null @@ -1,21 +0,0 @@ -This example was contributed by Yue Chun Chiu (Chinese University of Hong Kong) -(Thanks!) - -This is a simulation of propane using the OPLSUA force-field. -(It uses the OPLSUA force field even though the file names begin with "oplsaa") - -IMPORTANT: This is NOT an all-atom simulation. - OPLSUA is a united-atom force-field. - Hydrogen atoms are not represented explicitly. - The force-field has been adjusted accordingly. - --------- Instructions: --------- - -More detailed instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step 2) -README_run.sh diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh deleted file mode 100755 index 5f82866644..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh +++ /dev/null @@ -1,34 +0,0 @@ -# --- Running LAMMPS --- -# -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_setup.sh deleted file mode 100755 index 412634dfe2..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_setup.sh +++ /dev/null @@ -1,33 +0,0 @@ -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - ######################### WEIRD LAMMPS QUIRK:############################### - # The default pair_style used with the OPLSAA forcefield requires that SOME - # atoms have non-zero charge. Unfortunately, in this example none of them do. - # (This does not happen very often.) - # Since you don't need long-range coulombics in this example, LAMMPS will - # print out an error message and tell you to use a more efficient pair_style. - # To get around this AFTER RUNNING MOLTEMPLATE, run these commands in the - # shell: - - echo "pair_style hybrid lj/cut 10.0" >> system.in.init - sed -i 's/lj\/cut\/coul\/long/lj\/cut/g' system.in.settings - sed -i 's/kspace_style/#kspace_style/g' system.in.init - - # This will override the pair_style and pair_coeff commands in the - # system.in.init and system.in.settings files (created by moltemplate): - - # Moltemplate generates various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt deleted file mode 100644 index d82d8cfd9b..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt +++ /dev/null @@ -1,31 +0,0 @@ -import "oplsaa.lt" - - -Propane inherits OPLSAA { - - # atomID molID atomTyle charge X Y Z - write('Data Atoms') { - $atom:CH3a $mol:. @atom:10 0.0 -0.748 -0.015 0.024 - $atom:CH2 $mol:. @atom:13 0.0 0.558 0.420 -0.278 - $atom:CH3b $mol:. @atom:10 0.0 0.716 1.404 0.137 - } - - write('Data Bond List') { - $bond:CC1 $atom:CH3a $atom:CH2 - $bond:CC2 $atom:CH2 $atom:CH3b - } - - # These atom types are defined in the "oplsaa.lt" file - # (usually located in the "src/moltemplate_force_fields/" subdirectory) - # @atom:10 "N-Alkane CH3- (UA)" - # @atom:13 "Alkanes -CH2- (UA)" - # - # NOTE: UA means united atom (no explicit hydrogens). - # The first 56 atoms in the "oplsaa.lt" file are united atoms - # - # NOTE: Charges will be assigned by OPLSAA, so we leave them 0.0 here. - # - # (The "." in "$mol:." refers to this molecule-object's molecule-ID number. - # The "." simply means this molecule is not a part of a larger molecule.) - -} diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt deleted file mode 100644 index 6f266aac3d..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt +++ /dev/null @@ -1,37 +0,0 @@ -import "propane.lt" - -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 36.0 xlo xhi - 0.0 36.0 ylo yhi - 0.0 36.0 zlo zhi -} - -# Now add methane molecules: - -propanes = new Propane [6].move(0, 0, 6) - [6].move(0, 6, 0) - [6].move(6, 0, 0) - -propanes[*][*][*].move(2.0, 2.0, 2.0) - - - - - - - -######################### WEIRD LAMMPS QUIRK:############################### -# The default pair_style used with the OPLSAA forcefield requires that SOME -# atoms have non-zero charge. Unfortunately, in this example none of them do. -# (This does not happen very often.) -# Since you don't need long-range coulombics in this example, LAMMPS will -# terminate with an error message and ask you to use a more efficient pair_style -# To get around this AFTER RUNNING MOLTEMPLATE, run these commands in the shell -# -# echo "pair_style hybrid lj/cut 10.0" >> system.in.init -# sed -i 's/lj\/cut\/coul\/long/lj\/cut/g' system.in.settings -# sed -i 's/kspace_style/#kspace_style/g' system.in.init -# -# This will override the pair_style and pair_coeff commands in the -# system.in.init and system.in.settings files (created by moltemplate): diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.npt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.npt deleted file mode 100644 index c1115f67bb..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.npt +++ /dev/null @@ -1,43 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -read_data "system.data" - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" -include "system.in.charges" - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -thermo 500 -thermo_style custom step temp etotal press vol -minimize 6.0e-5 1.0e-6 500 400000 - -write_data system_after_min.data - -# -- simulation protocol -- - -reset_timestep 0 -timestep 1.0 -dump 1 all custom 200 traj_npt.lammpstrj id mol type x y z ix iy iz element -velocity all create 200.0 4928459 rot yes mom yes dist gaussian -fix fxnpt all npt temp 200.0 200.0 100.0 iso 1.0 1.0 1000.0 -neigh_modify delay 5 every 1 check yes - -run 100000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.nvt deleted file mode 100644 index 115bfe527f..0000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.nvt +++ /dev/null @@ -1,39 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, -# or run the file as a script using ./README_setup.sh) -# -# ------------------------------- Initialization Section -------------------- - -include "system.in.init" - -# ------------------------------- Atom Definition Section ------------------- - -#read_data "system.data" -read_data "system_after_npt.data" - -# ------------------------------- Settings Section -------------------------- - -include "system.in.settings" -include "system.in.charges" - -# ------------------------------- Run Section ------------------------------- - - -# -- simulation protocol -- - -reset_timestep 0 -timestep 2.0 -thermo 500 -thermo_style custom step temp etotal press -dump 1 all custom 2000 traj_nvt.lammpstrj id mol type x y z ix iy iz element type -dump_modify 1 element "C" "C" -velocity all create 200.0 4928459 rot yes mom yes dist gaussian -fix fxnvt all nvt temp 200.0 200.0 100.0 -neigh_modify delay 5 every 1 check yes - -run 1000000 - -write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README.TXT b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README.TXT deleted file mode 100644 index 115c1fab35..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README.TXT +++ /dev/null @@ -1,54 +0,0 @@ -NOTE: This example requires the "Al99.eam.alloy" file. - (It was not included in this directory because if its large size.) - As of 2012-11, I was able to obtain it here: - http://www.ctcms.nist.gov/~cbecker/Download/Al-YM/Al99.eam.alloy - Copy it to the directory containing this README file. ------------------------------------------------------------------------- -This example shows an alternative way to setup the -aluminum crystal loading simulation described here: -http://icme.hpc.msstate.edu/mediawiki/index.php/Uniaxial_Compression -by Mark Tschopp and Nathan R. Rhodes -For additional backgroumd information, please consult that web page. - -In this example, I use moltemplate to build a "DATA" file for this system. -(I can't think of a compelling reason to do this for simple simulations like -this. But this approach might be useful if you want to artificially create -unusual structures out of aluminum crystals, or mix them with other molecules. -I created this example in response to a user request.) - - - --- To build the system --- - -Carry out the instructions in README_setup.sh, -to generate the LAMMPS DATA file and input scripts you need: -system.data, system.in.init, system.in.settings. -(The run.in script contains references to these files.) - - - --- To run LAMMPS, try a command like: --- - -lmp_mpi -i run.in - - or (if you have mpi installed) - -mpirun -np 4 lmp_mpi -i run.in - -This will create an ordinary LAMMPS dump file you can visualize with VMD -traj.lammpstrj (See README_visualize.txt) - -It will also create a number of other files, such as: -dump.comp_0.cfg -dump.comp_500.cfg -dump.comp_20000.cfg -Al_comp_100.def1.txt - -The dump.comp_*.cfg files can be visualized using -AtomEye if you have AtomEye and ImageJ installed. -The procedure for doing this is explained in the original tutorial at: -http://icme.hpc.msstate.edu/mediawiki/index.php/Uniaxial_Compression - -The "Al_comp_100.def1.txt" file is a four-column text file containing: -column 1: v_strain = (lx - v_L0)/v_L0 -column 2: -pxx/10000 (diagonal components of the stress tensor) -column 3: -pyy/10000 -column 4: -pzz/10000 diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh deleted file mode 100755 index 22eb8c4357..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh +++ /dev/null @@ -1,29 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh -atomstyle full system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # We will also need the "Al99.eam.alloy" file: - #cp -f Al99.eam.alloy ../ - # This file was (can be) downloaded from: - # http://www.ctcms.nist.gov/~cbecker/Download/Al-YM/Al99.eam.alloy - - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCell_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCell_LR.jpg deleted file mode 100644 index bf07914dac8fc5c9e0a6aa8f19befc1a24a3b2ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2364 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 diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg deleted file mode 100644 index 8650cf5cb0510222cf243a4d6cdcbfcd8994fb22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30158 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 CEv4=N diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg deleted file mode 100644 index 582cf5fe6d1058aa5b92cda9e2afbaa636efc7a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29910 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 diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh deleted file mode 100755 index 64f350f641..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh +++ /dev/null @@ -1,22 +0,0 @@ -# This example shows an alternative way to setup the -# aluminum crystal loading simulation described here: -# http://icme.hpc.msstate.edu/mediawiki/index.php/Uniaxial_Compression -# by Mark Tschopp and Nathan R. Rhodes -# For additional backgroumd information, please consult that web page. -# -# In this example, I use moltemplate to build a "DATA" file for this system. -# (I can't think of a compelling reason to do this for simple simulations like -# this. But this approach might be useful if you want to artificially create -# unusual structures out of aluminum crystals, or mix them with other molecules. -# I created this example in response to a user request.) -# -# Use these commands to generate the LAMMPS input script and data file: - -moltemplate.sh system.lt - -# This will generate system.data, system.in.init, system.in.settings. -# In addition to will need to download "Al99.eam.alloy" file. -# (It was not included in this directory because if its large size.) -# As of 2012-11, I was able to obtain it here: -# http://www.ctcms.nist.gov/~cbecker/Download/Al-YM/Al99.eam.alloy - diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt deleted file mode 100644 index 3054a45e01..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt +++ /dev/null @@ -1,64 +0,0 @@ -# "AlCell" defines the 4-atom FCC unit cell -# of Aluminum (with a 4.05 angstrom spacing) - -AlCell { - - # AtomID MolID(IGNORE!) AtomType Charge X Y Z - - write("Data Atoms") { - $atom:AlC $mol:... @atom:Al 0.0 0.000 0.000 0.000 - $atom:AlX $mol:... @atom:Al 0.0 0.000 2.025 2.025 - $atom:AlY $mol:... @atom:Al 0.0 2.025 0.000 2.025 - $atom:AlZ $mol:... @atom:Al 0.0 2.025 2.025 0.000 - } - - write_once("In Init") { - units metal - atom_style full # <- Requires each atom has a MolID and Charge. - # This is not necessary. (Why use "full"? - # The "full" atom style is useful if you want to - # mix the aluminum with other molecules later. - # Otherwise, just use "atom_style atomic", and - # and remove the 2nd and 4th columns above.) - pair_style eam/alloy - } - - write_once("In Settings") { - pair_coeff * * Al99.eam.alloy Al - } - - write_once("Data Masses") { - @atom:Al 27.0 - } - -} # AlCell - - - - - -# Here is an alternate way to define AlCell -# using "scale(4.05)" to select the lattice spacing: -# -#FccCell { -# write("Data Atoms") { -# $atom:AlC $mol:... @atom:Al 0.0 0.0 0.0 0.0 -# $atom:AlX $mol:... @atom:Al 0.0 0.0 0.5 0.5 -# $atom:AlY $mol:... @atom:Al 0.0 0.5 0.0 0.5 -# $atom:AyZ $mol:... @atom:Al 0.0 0.5 0.5 0.0 -# } -# write_once("Data Masses") { -# @atom:Al 27.0 -# } -# write_once("In Init") { -# units metal -# atom_style full -# pair_style eam/alloy -# } -# write_once("In Settings") { -# pair_coeff * * Al99.eam.alloy Al -# } -#} -# -#AlCell = FccCell.scale(4.05) -# diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt deleted file mode 100644 index f813c6f662..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt +++ /dev/null @@ -1,35 +0,0 @@ - -import "al_cell.lt" # <- this defines the unit cell for aluminum - -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 40.50 xlo xhi - 0.0 40.50 ylo yhi - 0.0 40.50 zlo zhi -} - -# The next command generates an array of 10x10x10 AlCell unit cells with -# spacing 4.05 Angstroms. - -unitcells = new AlCell [10].move(0.00, 0.00, 4.05) - [10].move(0.00, 4.05, 0.00) - [10].move(4.05, 0.00, 0.00) - - - - - - - - - - - - -################################################################ -# The next command is not necessary: -# - create_var { $mol } # <-This forces all of the Al atoms in the crystal -# # to share the same molecule ID number. -# # Molecule ID numbers are not necessary. Ignore this. -# diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/run.in b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/run.in deleted file mode 100644 index 677cc60cab..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/run.in +++ /dev/null @@ -1,76 +0,0 @@ -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- -# -# The run-settings below were stolen from: -# -# http://icme.hpc.msstate.edu/mediawiki/index.php/Uniaxial_Compression - - -compute csym all centro/atom fcc -compute peratom all pe/atom - -# EQUILIBRATION -reset_timestep 0 -timestep 0.001 -velocity all create 300 12345 mom yes rot no -fix 1 all npt temp 300 300 1 iso 0 0 1 drag 1 - -# Set thermo output -thermo 1000 -thermo_style custom step lx ly lz press pxx pyy pzz pe temp - -# Run for at least 10 picosecond (assuming 1 fs timestep) -run 20000 -unfix 1 - -# Store final cell length for strain calculations -variable tmp equal "lx" -variable L0 equal ${tmp} -print "Initial Length, L0: ${L0}" - -###################################### -# DEFORMATION -reset_timestep 0 - -fix 1 all npt temp 300 300 1 y 0 0 1 z 0 0 1 drag 1 -variable srate equal 1.0e10 -variable srate1 equal "-v_srate / 1.0e12" -fix 2 all deform 1 x erate ${srate1} units box remap x - -# Output strain and stress info to file -# for units metal, pressure is in [bars] = 100 [kPa] = 1/10000 [GPa] -# p2, p3, p4 are in GPa -variable strain equal "(lx - v_L0)/v_L0" -variable p1 equal "v_strain" -variable p2 equal "-pxx/10000" -variable p3 equal "-pyy/10000" -variable p4 equal "-pzz/10000" -fix def1 all print 100 "${p1} ${p2} ${p3} ${p4}" file Al_comp_100.def1.txt screen no - -# Use cfg for AtomEye -dump dAtomEye all cfg 250 dump.comp_*.cfg id type xs ys zs c_csym c_peratom fx fy fz -dump_modify dAtomEye element Al - -# For users without AtomEye (like me), I decided to create a regular dump file: -dump dCoords all custom 250 traj.lammpstrj id type x y z ix iy iz - -# Display thermo -thermo 1000 -thermo_style custom step v_strain temp v_p2 v_p3 v_p4 ke pe press - -run 20000 - -###################################### -# SIMULATION DONE -print "All done" diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_run.sh b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_run.sh deleted file mode 100755 index 4a1e130642..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_run.sh +++ /dev/null @@ -1,33 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure - -# to be followed by - -lmp_mpi -i run.in.nvt # simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation are ignored when beginning the simulation at constant volume. -# This can be fixed. Read "run.in.nvt" for equilibration instructions.) - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -# or -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_setup.sh b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_setup.sh deleted file mode 100755 index 3a08212692..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_setup.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh -atomstyle full system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_visualize.txt deleted file mode 100644 index 73358e55dc..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 500 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg deleted file mode 100644 index 2cdc08b312b4431ed0677777b6f96249836f3809..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25820 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

    VnTt>S44ql@Tu#>D-IG+E{udwL9F^H^RFudh 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

    o=mCtoXNxxStM{B+y@3~uRB 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 diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_unitcell.png b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_unitcell.png deleted file mode 100644 index 5bd6057e1e6ffb99a48879d64cedc5a1dbb96459..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21951 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 diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt deleted file mode 100644 index 2b550b6309..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt +++ /dev/null @@ -1,52 +0,0 @@ -# file "spce.lt" -# -# H1 H2 -# \ / -# O - -SPCE { - - write_once("In Init") { - # -- Default styles (for solo "SPCE" water) -- - units real - atom_style full - # (Hybrid force fields were not necessary but are used for portability.) - pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0 - bond_style hybrid harmonic - angle_style hybrid harmonic - kspace_style pppm 0.0001 - pair_modify mix arithmetic - } - - write("Data Atoms") { - $atom:O $mol:. @atom:O -0.8476 0.0000000 0.00000 0.000000 - $atom:H1 $mol:. @atom:H 0.4238 0.8164904 0.00000 0.5773590 - $atom:H2 $mol:. @atom:H 0.4238 -0.8164904 0.00000 0.5773590 - } - - write_once("Data Masses") { - @atom:O 15.9994 - @atom:H 1.008 - } - - write("Data Bonds") { - $bond:OH1 @bond:OH $atom:O $atom:H1 - $bond:OH2 @bond:OH $atom:O $atom:H2 - } - - write("Data Angles") { - $angle:HOH @angle:HOH $atom:H1 $atom:O $atom:H2 - } - - write_once("In Settings") { - bond_coeff @bond:OH harmonic 1000.0 1.0 - angle_coeff @angle:HOH harmonic 1000.0 109.47 - pair_coeff @atom:O @atom:O lj/charmm/coul/long 0.1553 3.166 - pair_coeff @atom:H @atom:H lj/charmm/coul/long 0.0 2.058 - group spce type @atom:O @atom:H - fix fSHAKE spce shake 0.0001 10 100 b @bond:OH a @angle:HOH - # (Remember to "unfix" fSHAKE during minimization.) - } - -} # end of definition of "SPCE" water molecule type - diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt deleted file mode 100644 index fb431cedee..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt +++ /dev/null @@ -1,81 +0,0 @@ -# This ice (1h) unit cell is rectangular and contains 16 water molecules. -# (Coordinates and cell dimensions converted were from a PDB file.) -# The dimensions of the unit cell (in Angstroms) are: 9.043 7.832 7.361 - - -import "spce.lt" # <-- define the "SPCE" molecule - -SpceIceRect16 { - - # Create a 3-dimensional array of 16 water molecules - - wat = new SPCE[4][2][2] - - # Array indices will be correlated with position [xindex][yindex][zindex] - - # You can overwrite coordinates of atoms after they were created this way: - # (Order is not important) - # atom-ID molecule-ID atomType charge newX newY newZ - - write("Data Atoms") { - $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 - $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 - $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 3.545 1.970 - $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 - $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 - $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.371 1.711 - $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 - $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 - $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 2.611 3.291 - $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 - $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 - $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 1.305 0.390 - $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 - $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 - $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 5.221 0.390 - $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 - $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 - $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 - $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 - $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 - $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 4.287 1.711 - $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 - $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 - $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 - $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 - $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 - $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 2.611 4.070 - $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 - $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 - $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.972 - $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 - $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 - $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 3.545 5.391 - $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 - $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 - $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 0.371 5.651 - $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 - $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 - $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 4.287 5.651 - $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 - $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 - $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 - $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 - $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 - $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 5.221 6.972 - $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 - $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 - $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 - } -} # SpceIceRect16 - -# Credit goes to Martin Chaplin. -# These coordinates were orignally downloaded from Martin Chaplin's -# website: http://www.btinternet.com/~martin.chaplin/ice1h.html -# ... and then they were stretched independently in the xy and z -# directions in order to match the lattice parameters measured by -# Rottger et al., -# "Lattice constants and thermal expansion of H2O and D2O ice Ih" -# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 -# I am using the lattice constants measured at temperature 265K -# (and pressure=100Torr). diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt deleted file mode 100644 index 7ddcb0adfe..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt +++ /dev/null @@ -1,129 +0,0 @@ -# This ice (1h) unit cell is rectangular and contains 32 water molecules. -# (Coordinates and cell dimensions converted were from a PDB file.) -# The dimensions of the unit cell (in Angstroms) are: 9.043 15.663 7.361 - - -import "spce.lt" # <-- define the "SPCE" molecule - -SpceIceRect32 { - - # Create a 3-dimensional array of 32 water molecules - - wat = new SPCE[4][4][2] - - # Array indices will be correlated with position [xindex][yindex][zindex] - - # You can overwrite coordinates of atoms after they were created this way: - # (Order is not important) - # atom-ID molecule-ID atomType charge newX newY newZ - - write("Data Atoms") { - $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 - $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 - $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.291 - $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 - $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 - $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 1.305 0.390 - $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 - $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 - $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 3.545 1.970 - $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 - $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 - $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 0.371 1.711 - $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 - $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 - $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.287 1.711 - $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 - $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 - $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 - $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 - $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 - $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 5.221 0.390 - $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 - $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 - $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 - $atom:wat[0][2][0]/O $mol:wat[0][2][0] @atom:SPCE/O -0.8476 1.131 10.443 2.300 - $atom:wat[0][2][0]/H1 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 0.322 9.976 1.970 - $atom:wat[0][2][0]/H2 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 1.131 11.377 1.970 - $atom:wat[1][2][0]/O $mol:wat[1][2][0] @atom:SPCE/O -0.8476 3.391 9.137 1.381 - $atom:wat[1][2][0]/H1 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 2.582 9.604 1.711 - $atom:wat[1][2][0]/H2 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 3.391 8.203 1.711 - $atom:wat[2][2][0]/O $mol:wat[2][2][0] @atom:SPCE/O -0.8476 5.652 10.443 2.300 - $atom:wat[2][2][0]/H1 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 4.843 9.976 1.970 - $atom:wat[2][2][0]/H2 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 5.652 10.443 3.291 - $atom:wat[3][2][0]/O $mol:wat[3][2][0] @atom:SPCE/O -0.8476 7.912 9.137 1.381 - $atom:wat[3][2][0]/H1 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.103 9.604 1.711 - $atom:wat[3][2][0]/H2 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.912 9.137 0.390 - $atom:wat[0][3][0]/O $mol:wat[0][3][0] @atom:SPCE/O -0.8476 1.131 13.053 1.381 - $atom:wat[0][3][0]/H1 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.940 13.520 1.711 - $atom:wat[0][3][0]/H2 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.131 13.053 0.390 - $atom:wat[1][3][0]/O $mol:wat[1][3][0] @atom:SPCE/O -0.8476 3.391 14.358 2.300 - $atom:wat[1][3][0]/H1 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 4.200 13.891 1.970 - $atom:wat[1][3][0]/H2 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 3.391 15.292 1.970 - $atom:wat[2][3][0]/O $mol:wat[2][3][0] @atom:SPCE/O -0.8476 5.652 13.053 1.381 - $atom:wat[2][3][0]/H1 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 6.461 13.520 1.711 - $atom:wat[2][3][0]/H2 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 5.652 12.119 1.711 - $atom:wat[3][3][0]/O $mol:wat[3][3][0] @atom:SPCE/O -0.8476 7.912 14.358 2.300 - $atom:wat[3][3][0]/H1 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 8.721 13.891 1.970 - $atom:wat[3][3][0]/H2 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 7.912 14.358 3.291 - $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 - $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 - $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.545 5.391 - $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 - $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 - $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 0.371 5.651 - $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 - $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 - $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 2.611 4.070 - $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 - $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 - $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 1.305 6.972 - $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 - $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 - $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.972 - $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 - $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 - $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 - $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 - $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 - $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 4.287 5.651 - $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 - $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 - $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 - $atom:wat[0][2][1]/O $mol:wat[0][2][1] @atom:SPCE/O -0.8476 1.131 10.443 5.061 - $atom:wat[0][2][1]/H1 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.940 9.976 5.391 - $atom:wat[0][2][1]/H2 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.131 10.443 4.070 - $atom:wat[1][2][1]/O $mol:wat[1][2][1] @atom:SPCE/O -0.8476 3.391 9.137 5.981 - $atom:wat[1][2][1]/H1 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 4.200 9.604 5.651 - $atom:wat[1][2][1]/H2 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 3.391 9.137 6.972 - $atom:wat[2][2][1]/O $mol:wat[2][2][1] @atom:SPCE/O -0.8476 5.652 10.443 5.061 - $atom:wat[2][2][1]/H1 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 6.461 9.976 5.391 - $atom:wat[2][2][1]/H2 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 5.652 11.377 5.391 - $atom:wat[3][2][1]/O $mol:wat[3][2][1] @atom:SPCE/O -0.8476 7.912 9.137 5.981 - $atom:wat[3][2][1]/H1 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 8.721 9.604 5.651 - $atom:wat[3][2][1]/H2 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 7.912 8.203 5.651 - $atom:wat[0][3][1]/O $mol:wat[0][3][1] @atom:SPCE/O -0.8476 1.131 13.053 5.981 - $atom:wat[0][3][1]/H1 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 0.322 13.520 5.651 - $atom:wat[0][3][1]/H2 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 1.131 12.119 5.651 - $atom:wat[1][3][1]/O $mol:wat[1][3][1] @atom:SPCE/O -0.8476 3.391 14.358 5.061 - $atom:wat[1][3][1]/H1 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 2.582 13.891 5.391 - $atom:wat[1][3][1]/H2 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 3.391 14.358 4.070 - $atom:wat[2][3][1]/O $mol:wat[2][3][1] @atom:SPCE/O -0.8476 5.652 13.053 5.981 - $atom:wat[2][3][1]/H1 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 4.843 13.520 5.651 - $atom:wat[2][3][1]/H2 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 5.652 13.053 6.972 - $atom:wat[3][3][1]/O $mol:wat[3][3][1] @atom:SPCE/O -0.8476 7.912 14.358 5.061 - $atom:wat[3][3][1]/H1 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.103 13.891 5.391 - $atom:wat[3][3][1]/H2 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.912 15.292 5.391 - } -} # SpceIceRect32 - -# Credit goes to Martin Chaplin. -# These coordinates were orignally downloaded from Martin Chaplin's -# website: http://www.btinternet.com/~martin.chaplin/ice1h.html -# ... and then they were stretched independently in the xy and z -# directions in order to match the lattice parameters measured by -# Rottger et al., -# "Lattice constants and thermal expansion of H2O and D2O ice Ih" -# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 -# I am using the lattice constants measured at temperature 265K -# (and pressure=100Torr). diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt deleted file mode 100644 index 2d716540a8..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt +++ /dev/null @@ -1,57 +0,0 @@ -# This ice (1h) unit cell is rectangular and contains 8 water molecules. -# (Coordinates and cell dimensions converted were from a PDB file.) -# The dimensions of the unit cell (in Angstroms) are: 4.521 7.832 7.362 - - -import "spce.lt" # <-- define the "SPCE" molecule - -SpceIceRect8 { - - # Create a 3-dimensional array of 8 water molecules - - wat = new SPCE[2][2][2] - - # Array indices will be correlated with position [xindex][yindex][zindex] - - # You can overwrite coordinates of atoms after they were created this way: - # (Order is not important) - # atom-ID molecule-ID atomType charge newX newY newZ - - write("Data Atoms") { - $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 - $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.289 - $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.320 2.143 1.971 - $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 - $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.370 1.710 - $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.710 - $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 - $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.286 1.710 - $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 0.320 5.688 1.710 - $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 - $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.289 - $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 2.582 6.058 1.971 - $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 - $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.143 5.391 - $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.546 5.391 - $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 - $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.970 - $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.652 - $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 - $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.970 - $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.940 5.688 5.652 - $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 - $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 4.200 6.058 5.391 - $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.462 5.391 - } -} # SpceIceRect8 - -# Credit goes to Martin Chaplin. -# These coordinates were orignally downloaded from Martin Chaplin's -# website: http://www.btinternet.com/~martin.chaplin/ice1h.html -# ... and then they were stretched independently in the xy and z -# directions in order to match the lattice parameters measured by -# Rottger et al., -# "Lattice constants and thermal expansion of H2O and D2O ice Ih" -# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 -# I am using the lattice constants measured at temperature 265K -# (and pressure=100Torr). diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt deleted file mode 100644 index b4f22f9dcf..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt +++ /dev/null @@ -1,11 +0,0 @@ -import "spce_ice_rect8.lt" - -cells = new SpceIceRect8 [3].move(4.521, 0.0, 0.0) - [2].move( 0.0, 7.832, 0.0) - [2].move( 0.0, 0.0, 7.362) - -write_once("Data Boundary") { - 0 13.563 xlo xhi - 0 15.664 ylo yhi - 0 14.724 zlo zhi -} diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.npt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.npt deleted file mode 100644 index c10893b411..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.npt +++ /dev/null @@ -1,48 +0,0 @@ -# You can run LAMMPS this way -# lmp_linux -i run.in.npt -# (Assuming your LAMMPS binary is named "lmp_linux") -# -# PREREQUISITES: -# You will need these files (created by moltemplate.sh): -# system.data, system.in.init, system.in.settings -# (See README_setup.sh for details) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -# Note: The minimization step is not necessary in this example. However -# in general, it's always a good idea to minimize the system beforehand. -# fSHAKE was defined in system.in.settings. It is incompatible with "minimize". -unfix fSHAKE -minimize 1.0e-5 1.0e-7 100000 400000 -# Now read "system.in.settings" in order to redefine fSHAKE again: -include system.in.settings - -# -- simulation protocol -- - - -timestep 2.0 -dump 1 all custom 200 traj_npt.lammpstrj id mol type x y z ix iy iz -fix fxnpt all npt temp 400.0 300.0 100.0 iso 1.0 1.0 1000.0 drag 1.0 - -thermo 100 - -#restart 10000 restart_npt - -run 20000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.nvt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.nvt deleted file mode 100644 index 1815e1da70..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.nvt +++ /dev/null @@ -1,45 +0,0 @@ -# You can run LAMMPS this way -# lmp_linux -i run.in.nvt -# (Assuming your LAMMPS binary is named "lmp_linux") -# -# PREREQUISITES: -# You will need these files (created by moltemplate.sh): -# system.in.init, system.in.settings (See README_setup.sh) -# You will also need this file: system_after_npt.data -# This file is created by running LAMMPS on the run.in.npt file. -# -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -# Read the coordinates after pressure equilibration -read_data system_after_npt.data - -# (Or, if you prefer, you can read the original coordinates using -# read_data system.data) - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - - -timestep 2.0 -dump 1 all custom 500 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 - - -thermo 500 - - -#restart 10000 restart_nvt - - -run 50000 - -write_data system_after_nvt.data - - diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README.TXT b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README.TXT deleted file mode 100644 index 83b4ad80bf..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README.TXT +++ /dev/null @@ -1,51 +0,0 @@ -This is a small version of a carbon-nanotube, water capillary system. -It was inspired by this paper: - - Laurent Joly, J. Chem. Phys. 135(21):214705 (2011) - --------- Requirements: ------- -To run this system at constant pressure, it might help to compile LAMMPS -with the optional RIGID package, and use "fix rigid" on the carbon. -(The use of fix rigid is controversial.) Running at NVT does not require this. ------------------------------- - -Note: To investigate the behavior from that paper, it might be a good - idea to increase the size of the water reservoir, the spacing between - the walls, and the size of the system in the X and Y directions. - -Note: Explicit carbon-carbon bonds: - In the graphene and nanotube structures, I did not try to connect the - carbon atoms together with bonds. Instead we will hold these structures - rigid by not integrating their equations of motion. - (If you want to simulate movement of the carbon atoms at high - temperatures or tension, LAMMPS has 3-body/many-body LAMMPS force-fields - available for simulating the behaviour of carbon in graphite. I know - that you don't need to specify bonds to use these force fields. I do - not know know if these force fields work for nanotubes or graphene.) - -Note: Other modeling tools: - If you need explicit bonds between carbon atoms, then you must add them - yourself or use a different tool. Currently (2012-10-20), moltemplate does - not generate bonds automatically. The "Nanotube Builder" and "topotools" - plugins for for VMD can generate a nanotube with bonds in LAMMPS data - format. You can then convert this data file to .LT format using the - ltemplify.py utility and then import it into another .LT file and play - with it later. (In the "cnad-cnt" example, the carbon nanotube was built - using "Nanotube Builder" and topotools, and processed with ltemplify.py) - - -# WARNING: THIS IS NOT A REALISTIC MODEL OF A GRAPHENE-NANOTUBE JUNCTION. -# A real junction would be curved and deformed near the boundary, -# (not 90 degrees) and it would not be built entirely from hexagons. -# (This is not a problem in this example because the carbon atoms -# are immobilized.) If you want to simulate the behavior of -# real graphene or nanotube junctions, you must be more careful. -# To solve this problem: -# Moltemplate allows you to move, customize or delete individual -# atoms near the boundary. You can move atoms by overwriting their -# coordinates using additional write("Data Atoms") statements (after -# the walls and tube are created). You can also change their charge. -# Alternately, you could start with the structure provided here, and -# relax/minimize the coordinates of the carbon atoms using LAMMPS -# before using it in other simulations. -# Or you could do both (customization & minimization). diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_realistic_junctions.txt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_realistic_junctions.txt deleted file mode 100644 index 432a7b7ad1..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_realistic_junctions.txt +++ /dev/null @@ -1,22 +0,0 @@ - WARNING: A reader has emailed me to point out: - - THIS IS NOT A REALISTIC MODEL OF A GRAPHENE-NANOTUBE JUNCTION. - A real junction would likely be curved near the boundary, - not a 90 degree junction. (Although both graphene and nanotubes - consist of hexagons of carbon atoms, you would need 6 heptagons - near the junction between the nanotube and the graphene - to account for the negative Gaussian curvature there). - - To solve this problem: - Moltemplate allows you to move, add, customize or delete individual - atoms near the boundary. You can move atoms by overwriting their - coordinates using additional write("Data Atoms") statements (after - the walls and tube are created). You can also adjust their partial charge. - - Alternately, you could start with the structure provided here, add or delete - atoms if necessary, and relax/minimize the coordinates of the carbon - atoms using LAMMPS. You could also run a high temperature annealing - simulation to relax their positions. If it helps, the AIREBO - force-field has used in LAMMPS to simulate carbon nanotubes breaking: - http://scitation.aip.org/content/aip/journal/jcp/134/20/10.1063/1.3594197 - http://lammps.sandia.gov/pictures.html#cnt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_run.sh b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_run.sh deleted file mode 100755 index ee5e5665aa..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_run.sh +++ /dev/null @@ -1,24 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure - # (WARNING: The "run.in.npt" example has not been - # rigorously tested and may fail.) - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_setup.sh b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_setup.sh deleted file mode 100755 index acc5fbbaad..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_setup.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_visualize.txt deleted file mode 100644 index 206db99038..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_visualize.txt +++ /dev/null @@ -1,77 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - To shift the box by a fraction in the x direction (for example) - do this: - - pbc wrap -compound res -all -shiftcenterrel {-0.50 -0.52 0.0 } - pbc box -shiftcenterrel {-0.50 -0.52 0.0 } - - # Alternately if you have a solute whose atoms are all of type 1, - # then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/graphene_unit_cell.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/graphene_unit_cell.jpg deleted file mode 100644 index 12dbf8fca27b11b0fd470210ddce55b065a5ea51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13144 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≀Z) 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 IYW=?n0Qkft8UO$Q diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg deleted file mode 100644 index 298957864f16def4e4351b43dbe4bba173f12477..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28367 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 AhyVZp diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg deleted file mode 100644 index 4aa301ce8b79796a2b040180e8874e38ef1a0412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27305 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 diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg deleted file mode 100644 index 920354c544b9569acbf1d7885d6a126339d3f55c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33740 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 H|9=wzZ{WNX diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/water_side_nopbc_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/water_side_nopbc_LR.jpg deleted file mode 100644 index cdc143510ba17140844f34c577fab53ffcc0b826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26968 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"Tk Console" menu and enter -# -# topo writelammpsdata nanotube.data full -# -# --- ltemplify.py --- -# -# That data file can be converted to moltemplate format (an .LT file) -# using the "ltemplify.py" utility. -# -# The first step is to create a short input script containing the atom_style -# command (ltemplify.py will read this script. Presumably atom_style is "full"). -# -# echo "atom_style full" > nanotube.in -# -# Then run ltemplify to convert nanotube.data into a moltemplate file: -# ltemplify.py -name Nanotube nanotube.in nanotube.data > nanotube.lt -# -# You will need to edit the "nanotube.lt" file to replace all of the -# "@atom:type1" atoms types file to match the carbon atom types in the other lt -# files (ie "@atom:../C"). If you don't plan on defining bonded interactions -# between carbon atoms, then be sure to remove the write("Data Bonds") section -# of the "nanotube.lt" file (if it is present). -# -# Finally make sure the "system.lt" contains these lines: -# -# import "nanotube.lt" -# nanotube = new Nanotube.move(?,?,?) -# -# (Replace ?,?,? with the location where you want the nanotube to go. -# You can also rotate it using .rot(angle,axisx,axisy,axiz).) -# -# ... and then run moltemplate the normal way -# -# Let me know if you run into trouble with this approach, -# and I will make note of that in this file. -# -# --- links --- -# Note: there are numerous programs for specifying the coordinates -# of the atoms in a nanotube, some of which are below. -# http://www.nanotube.msu.edu/tubeASP/ -# http://turin.nss.udel.edu/research/tubegenonline.html -# http://www.ugr.es/~gmdm/java/contub/contub.html -# (You can load coordinates into moltemplate using the "-xyz" or "-pdb" -# arguments. However currently (2013-12-01), the file must contain coordinates -# for all of the atoms in your sytem, not just the nanotube.) -# ------------------------------------------------------------------------- diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt deleted file mode 100644 index e1bf2390a0..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt +++ /dev/null @@ -1,52 +0,0 @@ -# file "spce.lt" -# -# H1 H2 -# \ / -# O - -SPCE { - - write("Data Atoms") { - $atom:O $mol:. @atom:O -0.8476 0.0000000 0.00000 0.000000 - $atom:H1 $mol:. @atom:H 0.4238 0.8164904 0.00000 0.5773590 - $atom:H2 $mol:. @atom:H 0.4238 -0.8164904 0.00000 0.5773590 - } - - write_once("Data Masses") { - @atom:O 15.9994 - @atom:H 1.008 - } - - write("Data Bonds") { - $bond:OH1 @bond:OH $atom:O $atom:H1 - $bond:OH2 @bond:OH $atom:O $atom:H2 - } - - write("Data Angles") { - $angle:HOH @angle:HOH $atom:H1 $atom:O $atom:H2 - } - - write_once("In Settings") { - bond_coeff @bond:OH harmonic 600.0 1.0 - angle_coeff @angle:HOH harmonic 75.0 109.47 - pair_coeff @atom:O @atom:O lj/cut/coul/long 0.1553 3.166 - pair_coeff @atom:H @atom:H lj/cut/coul/long 0.0 2.058 - group spce type @atom:O @atom:H - fix fShakeSPCE spce shake 0.0001 10 100 b @bond:OH a @angle:HOH - # (Remember to "unfix" fShakeSPCE during minimization.) - } - - write_once("In Init") { - # -- Default styles (for solo "SPCE" water) -- - units real - atom_style full - # (Hybrid force fields were not necessary but are used for portability.) - pair_style hybrid lj/cut/coul/long 9.0 - bond_style hybrid harmonic - angle_style hybrid harmonic - kspace_style pppm 0.0001 - #pair_modify mix arithmetic # LEAVE THIS UNSPECIFIED! - } - -} # end of definition of "SPCE" water molecule type - diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt deleted file mode 100644 index d7c610fc0c..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt +++ /dev/null @@ -1,29 +0,0 @@ -# This is a small version of a carbon-nanotube, water capillary system. It was -# inspired by this paper: Laurent Joly, J. Chem. Phys. 135(21):214705 (2011) - -import "graphene_walls.lt" - -import "nanotube.lt" - -import "water_box.lt" - - -# ------------ boundary conditions ------------ - -write_once("Data Boundary") { - -15.98682895386 15.98682895386 xlo xhi - -14.91 14.91 ylo yhi - -31.0 31.00 zlo zhi -} - -# --------------------------------------------- - -write_once("In Settings") { - # --- We must eventually specify the interactions between the atoms --- - # --- in different molecule types (graphene-water interactions). --- - # (See Laurent Joly, J. Chem. Phys. 135(21):214705 (2011) for details - - pair_coeff @atom:Graphene/C @atom:SPCE/O lj/cut/coul/long 0.114 3.28 - pair_coeff @atom:Graphene/C @atom:SPCE/H lj/cut/coul/long 0.0 3.28 -} - diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt deleted file mode 100644 index c825276f5a..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt +++ /dev/null @@ -1,20 +0,0 @@ -import "spce.lt" - -# --------------- water ------------------ - -# Create a rhombohedral box of water. (A rectangular box works also.) - -wat = new SPCE [9].move(3.5526287, 0, 0 ) - [9].move(1.77631435, 3.3133, 0 ) - [6].move( 0, 0, 3.45) - -# Optional: Center the water box at the origin. (Not really necessary.) - -wat[*][*][*].move(-23.9802437, -14.90985, 11.47) - -# --------------- Note: ----------------- -# The spacing between water molecules does not matter much as long as it is -# reasonable. (I adjusted the spacing try to insure that the waters are spread -# uniformly throughout the box. We do not want bubles to form if there are -# gaps near the XY periodic boundaries.) We will have to equilibrate it later. - diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/watmw.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/watmw.lt deleted file mode 100644 index c7aaecebbc..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/watmw.lt +++ /dev/null @@ -1,54 +0,0 @@ -# This file stores LAMMPS data for the "mW" water model. -# (Molinero, V. and Moore, E.B., J. Phys. Chem. B 2009, 113, 4008-4016) -# -# In this model, each water molecule is represented by a single "mW" particle. -# These particles interact with their neighbors via 3-body Stillinger-Weber -# forces whose parameters are tuned to mimic directional hydrogen-bonding -# in liquid water (as well as hexagonal ice, type II ice, and -# low-density super-cooled liquid/amorphous water phases). - -WatMW { - write("Data Atoms") { - $atom:mW $mol:. @atom:mW 0.0 0.0 0.0 0.0 - } - - write_once("Data Masses") { - @atom:mW 18.02 - } - - write_once("system.in.sw") { - mW mW mW 6.189 2.3925 1.8 23.15 1.2 -0.333333333 7.049556277 0.602224558 4 0 0 - } - - write_once("In Init") { - # -- Default styles for "WatMW" -- - units real - pair_style sw - } - - write_once("In Settings") { - # --Now indicate which atom type(s) are simulated using the "sw" pair style - # -- In this case only one of the atom types is used (the mW water "atom"). - - pair_coeff * * sw system.in.sw mW NULL NULL NULL - - # -- Unfortunately LAMMPS itself does not understand molemlate syntax, so - # -- the atoms are identified by order in the list, not by name. (The "mW" - # -- refers to to an identifier in the system.in.sw file, not watmw.lt.) - # -- This command says that the first atom type corresponds to the "mW" - # -- atom in system.in.sw, and to ignore the remaining three atom types - # -- (correspond to the CH2, CH3, CH4 atom types defined in trappe1998.lt. - # -- We don't want to use the "sw" force field for interactions involving - # -- these atom types, so we put "NULL" there.) - # -- Note: For this to work, you should probably run moltemplate this way: - # -- moltemplate.sh -a "@atom:WatMW/mW 1" system.lt - # -- This assigns the atom type named @atom:WatMW/mW to 1 (the first atom) - } - - # -- optional -- - - write_once("In Settings") { - group WatMW type @atom:mW #(Atoms of this type belong to the "WatMW" group) - } - -} # WatMW diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.npt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.npt deleted file mode 100644 index 2728a1f5ac..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.npt +++ /dev/null @@ -1,147 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (You do not need to run LAMMPS to equilibrate the system before -# using this file.) -# -# Requirements: -# To run this system at constant pressure, it might help to compile LAMMPS with -# the optional RIGID package, and use "fix rigid" on the carbon. (Optional.) -# The use of fix rigid is controversial. This method is demonstrated below. -# THIS EXAMPLE HAS NOT BEEN RIGOROUSLY TESTED. This simulation may fail. -# (However the "run.in.nvt" example in this directory should work.) -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# Use "neigh_modify" to turn off calculation of interactions between immobilized -# atoms. (Note: group "cGraphene" was defined in the file "system.insettings") -neigh_modify exclude group Cgraphene Cgraphene - -# ------------------------------- Run Section ------------------------------- - - -# Only the Cgraphene atoms are immobile. -group mobile subtract all Cgraphene - -# (Note: The "Cgraphene" group was defined in system.in.settings.) - - -# Unfortunately you can not use the LAMMPS "minimize" command on this system -# because there is no way to immobilize the carbon graphene & nanotube atoms -# during minimization. Instead, we can use langevin dynamics with a fast -# damping parameter and a small timestep. - -print "--------- beginning minimization (using fix langevin) ---------" - -timestep 0.1 -fix fxlan mobile langevin 1.0 1.0 100.0 48279 -fix fxnve mobile nve # <-- needed by fix langevin (see lammps documentation) -thermo 100 -run 2500 - -unfix fxlan -unfix fxnve - -# -- simulation protocol -- - -print "--------- beginning simulation (using fix nvt) ---------" - -dump 1 all custom 1000 traj_npt.lammpstrj id mol type x y z ix iy iz - -thermo_style custom step temp pe etotal press vol epair ebond eangle edihed -thermo 200 # time interval for printing out "thermo" data - - - - - -# ------------------------- NPT --------------------------- - - -# ------ QUESTIONABLE (see below): ------ - -fix Ffreezestuff Cgraphene rigid single force * off off off torque * off off off - -# Comment: -# The use of "fix rigid" to immobilize an object is somewhat controversial. -# Feel free to omit it. -# (Neither Trung or Steve Plimpton use fix rigid for immobilizing -# molecules, but I noticed that at NPT, it does a better job of maintaining -# the correct volume. However "fix rigid" has changed since then (2011), -# so this may no longer be true. Please use this example with caution.) - - - -# Thermostat+Barostat -# Set temp=300K, pressure=200bar, and equilibrate volume only in the z direction - -fix fxMoveStuff mobile npt temp 300 300 100 z 200 200 1000.0 dilate mobile drag 2.0 - -# ---------------------------------------- - -# The next two lines recalculate the temperature using -# only the mobile degrees of freedom (ie. water atom velocities): - -compute tempMobile mobile temp -compute pressMobile all pressure tempMobile - -thermo_style custom step c_tempMobile c_pressMobile temp press vol - -fix_modify fxMoveStuff temp tempMobile - -reset_timestep 0 - -timestep 0.25 - -run 100000 - -timestep 0.5 - -run 200000 - -# Hopefully the barostat is no longer oscillating. Increase the timestep and -# also get get rid of "drag 2.0". (A non-zero drag parameter will result in -# unrealistic fluctuations of volume under NPT conditions.) -# drag 2.0 <-- commenting out -# -# Set temp=300K, pressure=0bar, and equilibrate volume only in the z direction -unfix fxMoveStuff -fix fxMoveStuff mobile npt temp 300 300 100 z 0 0 1000.0 dilate mobile -fix_modify fxMoveStuff temp tempMobile - -timestep 0.5 - -run 1000000 - -write_data system_after_npt.data - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also.) - - - - - - - -# ----- Comment: Avoid using fix rigid/npt on large single rigid objects ----- -# -# Use of the following is not recommended: -# -# fix Ffreezestuff Cgraphene rigid/npt single temp 300 300 100 z 200 200 1000.0 force * off off off torque * off off off dilate mobile -# (temp=300K, pressure=200bar, and equilibrate volume only in the z direction) -# -# In my experience, the system becomes unstable when applying "fix rigid/npt" -# to the immobile atoms, while also applying "fix npt" on the solvent atoms. -# (It is probably a bad idea to use two barostats simultaneously.) -# ---------------------------------------------------------------------------- diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.nvt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.nvt deleted file mode 100644 index 86253c45b9..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.nvt +++ /dev/null @@ -1,78 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (You do not need to run LAMMPS to equilibrate the system before -# using this file.) - -# ----------------------------- Initialization Section -------------------- - -include system.in.init - - -# ----------------------------- Atom Definition Section ------------------- - -read_data system.data - - -# ----------------------------- Settings Section -------------------------- - -include system.in.settings - -# Use "neigh_modify" to turn off calculation of interactions between immobilized -# atoms. (Note: group "cGraphene" was defined in the file "system.insettings") -neigh_modify exclude group Cgraphene Cgraphene - -# ----------------------------- Run Section ------------------------------- - - - -# Only the Cgraphene atoms are immobile. -group mobile subtract all Cgraphene - -# (Note: The "Cgraphene" group was defined in system.in.settings.) - - - -# -- minimization protocol -- - -# Unfortunately you can not use the LAMMPS "minimize" command on this system -# because there is no way to immobilize the carbon graphene & nanotube atoms -# during minimization. Instead, we can use langevin dynamics with a fast -# damping parameter and a small timestep. - -print "--------- beginning minimization (using fix langevin) ---------" - -timestep 0.1 -fix fxlan mobile langevin 1.0 1.0 100.0 48279 -fix fxnve mobile nve # <-- needed by fix langevin (see lammps documentation) -thermo 100 -run 2500 - -unfix fxlan -unfix fxnve - -# -- simulation protocol -- - -print "--------- beginning simulation (using fix nvt) ---------" - -dump 1 all custom 1000 traj_nvt.lammpstrj id mol type x y z ix iy iz - -thermo_style custom step temp pe etotal press vol epair #ebond eangle edihed -thermo 500 # time interval for printing out "thermo" data - -# Integrate the equations of motion: -fix fxMoveStuff mobile nvt temp 300.0 300.0 100.0 - -# The next two lines recalculate the temperature -# using only the mobile degrees of freedom: - -compute tempMobile mobile temp -fix_modify fxMoveStuff temp tempMobile - - -timestep 2.0 -run 5000000 - -write_data system_after_nvt.data - diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh deleted file mode 100755 index 70c34bd6f4..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh +++ /dev/null @@ -1,33 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure - -# or - -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation are ignored when beginning the simulation at constant volume. -# This can be fixed. Read "run.in.nvt" for equilibration instructions.) - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -# or -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh deleted file mode 100755 index 3a08212692..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh -atomstyle full system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Cl.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Cl.jpg deleted file mode 100644 index 5261bedc2ce1b6d41ea202b21a1dbd921e2ee6a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1577 zcmex=HEAm;@P_1sVSzVUS^9 zWME`vWMn`9Hf9!9c1{kEtf2q{BQrBI6AKF~D?|Y!0~0d~s~{V@qL3knl4GE-h*6`c zQ)1ynPL-gA2SElhGBPkRF(Vtu%FfKj!~!-@U66r^iHVV!g%N5V0|O%yGm9WAo1&qR zV_>4NQQ^Xk7ysX4;9+KDU=m~&WUyy=HA_i>qoYAdiJ_x|34^I+5EgvZ%I&aC(Ju3n zJ%$gDE^lt`J3jHx0&NrxOs%!Grt7*EZQ8U*E6S_luFmB%AC9>l>)Cm(@Bssxr}l~J zwU6C)?W@%N#U$wNWpq9EwIbit=l3-39(J#b@jLtJ zpMS@a176j-u3f^n@80Wo|MHe?TDS0gvY+9!EpyD@FdcVIUeVII^6;bTO8%Y+59$jx zZR?2o)yDo;JOAd}vgNlv{hPN(L+b8y+nr*^Vhk-_T`gRh{ZNU2;UBkmY&Szq*Y5VM z+Ro0b%6jwN%q4sV$9LzHH*&zVWcKLjQw?>V{3$J9%O7#tXW{Y%a`q>-dR<%h z(Kct&`wdaoIGVj@I)7$gdDkvt-c8wmGb+Bm+2OlY?Bb2%J?SON`n>DkJe#}DUqj{T z@k#zg%d3)3{a$<^<6PLbMe`pf-^}IRd*ws)v;3pVmv>!UyT0hQZD`~4A1}TfKG*4* z*FEi~pQ^G{ZZj=g71P}98y-mGZ7RM@m`)$4Yf6<2RPU{Kcb7Mpg<* zwMEP`y1wx+U*=y96|EP|2T!iOb$fQ(rR?9!=B?{J+o$RMQcYc{s>rkV!SBbC-xONK zyLMiz)l)20uiR$tm!CGjl=q&Xe?jN|n|BivetbD@c|iSD;@89n|Jqq9n2Tz3-nren zYQOHN?Z3OzOJa03?poTqAZ6#9jMx3lI}4Z<9?W~i^~Y@Kjvu;p+ACIXS{i#kIR50i z)IDb&w%g3#wQ=5)%BRVxYk3N@_pD=Qk$bTEukGTmdOKDKWWMG-^;J}EcCvy@Sj;Ot@_tqzx>s!>UB>}|1e$I&;LhkTEMSW6MG(hGMRSd^05N%juW3` zMBnq8F3XLwI_{pfDf+?ITQ4O)JXpFcAzQ-!rMk-GlPZ%ZgKt~Fe+WjOQ; MOOb>qsQ%vs0HE`pA^-pY diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Na.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Na.jpg deleted file mode 100644 index 78c4056f8c04e587aeaa7e2d0bf0cc2bb46a8c3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1595 zcmex=HEAm;@P_1sVSzVUT5D zWME`rW@JDBb|z+4P8K!}khFmS10yptGcyw_3llR~2_pj&GYhLA8@nQhkfD;Juu)** zL{5>QLNR5P#*P1vFvu`6GB7cr7|6oP$j-#f!S??MgSsFC6C*PVBNIE=Fc87W#LS|| z$|fjem{_P{!8SCH{* za;s1AQBB23hEFPa3pBVpkTi77RLSuvzW3mmNy^US4E!q{62G=>-ju;>A6k7yTtYW& zSK4>aK!CYk@DC@c6_0t8nPbDs2^KlQ`ovg<>Q>RKCw_UE=yL_Il zOOH&?w2s58_bt{gKV6WOvEq46mD5G*g$tG?pHF$0scWhyQ#JRTeRqM)bAu9xc}!o_ z&fgTfyj*&(o9&WMi~i`Bey#iA>U;F`^EG@ItM2rsuGWgxy&iHePssM}5${;VyyCm_ zE)+hW&vkd-<5jtnX075rdTml3=QOU95s#ZEPLe&Zb#88B+s64KRmJc2vL-IxuROou>bzSb(tfGQ%7U^^N1J1WI)J|J**E;UfR`udc zzR8d0B-*>}U-C-y$^6KayIOj(i(Y%zZVkMXk(TQ!8>2fkLi@ zbaXQ)DKRX}+hn@ct?A|Ah&vfi3`5T{YbZ@z&X+mQ?dZhsj8FbET$&X=_t&3o-o-D= zLu%B%Tg}VzYO*eVnd_5!{Oz&I;5EvUv6p)Ol*MoE*%y{oH>2SKyWHu0FM8Epe|eiB zBP!?e?~bTS?zJs_N3CN%8Hlf0vwn_7Y4gJmfnJu@%NE>Dzp;|#K-rws60W`8q4~uN zbNUzxpL#@{E?u-MpvG*6aF2%H^Mb!;-q+R4S-C|&T`FGa^2CEji<`b4d##$?J@1ic zL{LAh^N&QmgQnKW5>6aP+qRqyVzU!N=wD~gj&J#>hpV;4`0 zi-VYUXyz&3_+@$9te#B|ypy?P=?s3`^_iK+pQZ+;nv0)e>o-r&ejjbTUaudrNi}y=5oooQo>hZhS@DFDiaTtK4N3G zRqivg-94kg=uko35hl~kyJLm&rd_-0uVQ9d>br36x!gl1E*rjON#3PDN3MpUMy?_{ z+xyOzSC<3U{W@D$+abK@@>7BA*D3{1j~3pw)P8!7^Uc+upgWn*7Od($+TXO!Soqe1 zf~cqm910)YH=TOf%f0gJkwdz+%k!phFZ*79VDY4|#`CHN5-RMxHtxE%nB&v3f?j)P zPF=^irWf0n{rda;PFMEYQp>cSjUh%=KcBE~Tl!Y`SzzC33^`^mheGd!a;jyV@GCR;vuGRgA5_h_+;QA)?RSLO8`UY@%lYHdjG z+pc+Y8yCNO{I&3t=aaR`E3=AsPY?Ov+alugfN=qX0sDsdKvB+Hf`SY#E{uW#EG`bw gwKhRD7Y*;(^b diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/wat.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/wat.jpg deleted file mode 100644 index 60aaf90b956ab4e88a4a3d6bbef4b251097040e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5644 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 aLr2%rMnM4<7Y9K>1{W7bVwsHpZvp^;D{D0X diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg deleted file mode 100644 index 2c34754c4c2754c75502a87245bf882f555b1def..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169027 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

    Ruix6#enl742rz4^QT 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

    `G>7I4rj7QGgh1@D@<~%5#lk!7irHN3X_&(c= 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%0Al_SaHPuZt^# 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 diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt deleted file mode 100644 index 8d36341253..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt +++ /dev/null @@ -1,67 +0,0 @@ -# We define two molecule classes to represent Na+ and Cl- ions, respectively. -# This may seem like overkill since they both only consist of one atom each. - - -# Note: Monovalent ion parameters for Ewald and SPC/E water -# are from: Joung & Cheatham JPCB (2008) -# These Lennard Jones parameters match the parameters for ions -# in SPC/E water in the "frcmod.ionsjc_spce" file distributed -# with Amber (the 2010 version). - - -NaIon { - - # The epsilong & sigma parameters from that paper were 0.3526418 & 1.212. - # However sigma must be divided by 2^(1/6), because they use the alternate - # Lennard-Jones convention: U(r)=epsilon*((s/r)^12 - 2*(s/r)^6), and - # pair_style lj/charmm/coul/long uses U(r)=4*epsilon*((s/r)^12 - (s/r)^6) - # (Note: This change does not effect the epsilon parameter.) - - write_once("In Settings") { - pair_coeff @atom:Na @atom:Na lj/charmm/coul/long 0.3526418 1.079769246386 - } - - write_once("Data Masses") { - @atom:Na 22.9898 - } - - # assumes "full" atom style - write("Data Atoms") { - $atom:Na $mol @atom:Na 1.0 0.00000 0.00000 0.000000 - } -} # NaIon - - -ClIon { - write_once("In Settings") { - pair_coeff @atom:Cl @atom:Cl lj/charmm/coul/long 0.0127850 2.711 - } - - write_once("Data Masses") { - @atom:Cl 35.453 - } - - # assumes "full" atom style - write("Data Atoms") { - $atom:Cl $mol @atom:Cl -1.0 0.00000 0.00000 0.000000 - } -} # ClIon - - -write_once("In Init") { - # -- Default styles for ions -- - units real - atom_style full - # (Hybrid force fields were not necessary but are used for portability.) - pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0 - kspace_style pppm 0.0001 - pair_modify mix arithmetic -} - -# Optional: Define a group named "ions" consisting of either Na or Cl ions. -write_once("In Settings") { - group ionNa type @atom:NaIon/Na @atom:NaIon/Na - group ionCl type @atom:ClIon/Cl @atom:ClIon/Cl - group ions type @atom:NaIon/Na @atom:ClIon/Cl -} - diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt deleted file mode 100644 index 019911c19b..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt +++ /dev/null @@ -1,52 +0,0 @@ -# file "spce.lt" -# -# H1 H2 -# \ / -# O - -SPCE { - - write_once("In Init") { - # -- Default styles (for solo "SPCE" water) -- - units real - atom_style full - # (Hybrid force fields were not necessary but are used for portability.) - pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0 - bond_style hybrid harmonic - angle_style hybrid harmonic - kspace_style pppm 0.0001 - pair_modify mix arithmetic - } - - write("Data Atoms") { - $atom:O $mol:. @atom:O -0.8476 0.0000000 0.00000 0.000000 - $atom:H1 $mol:. @atom:H 0.4238 0.8164904 0.00000 0.5773590 - $atom:H2 $mol:. @atom:H 0.4238 -0.8164904 0.00000 0.5773590 - } - - write_once("Data Masses") { - @atom:O 15.9994 - @atom:H 1.008 - } - - write("Data Bonds") { - $bond:OH1 @bond:OH $atom:O $atom:H1 - $bond:OH2 @bond:OH $atom:O $atom:H2 - } - - write("Data Angles") { - $angle:HOH @angle:HOH $atom:H1 $atom:O $atom:H2 - } - - write_once("In Settings") { - bond_coeff @bond:OH harmonic 1000.0 1.0 - angle_coeff @angle:HOH harmonic 1000.0 109.47 - pair_coeff @atom:O @atom:O lj/charmm/coul/long 0.1553 3.166 - pair_coeff @atom:H @atom:H lj/charmm/coul/long 0.0 2.058 - group spce type @atom:O @atom:H - fix fShakeSPCE spce shake 0.0001 10 100 b @bond:OH a @angle:HOH - # (Remember to "unfix" fShakeSPCE during minimization.) - } - -} # end of definition of "SPCE" water molecule type - diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt deleted file mode 100644 index 639222d182..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt +++ /dev/null @@ -1,49 +0,0 @@ -import "spce.lt" # <- This defines the SPCE water molecule. This file is - # located in the "src/moltemplate_force_fields" directory. - -import "ions.lt" # <- This defines the ions "NaIon" and "ClIon". - -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 34.50 xlo xhi - 0.0 34.50 ylo yhi - 0.0 34.50 zlo zhi -} - - -# The next command generates a (rather dense) cubic lattice with -# spacing 3.45 Angstroms. (The pressure must be equilibrated later.) - -wat = new SPCE [10].move(0.00, 0.00, 3.45) - [10].move(0.00, 3.45, 0.00) - [10].move(3.45, 0.00, 0.00) - -# We now create a 2x2x2 lattice of Na+ and Cl- ions: - -na = new NaIon [2].move(0,0,17.25) - [2].move(0,17.25,0) - [2].move(17.25,0,0) - - -cl = new ClIon [2].move(0,0,17.25) - [2].move(0,17.25,0) - [2].move(17.25,0,0) - -na[*][*][*].move(5.175,5.175,5.6) -cl[*][*][*].move(12.075,12.075,12.5) - -# (The (5.175,5.175,5.175) and (12.075,12.075,12.075) translational shifts -# prevent the Na and Cl ions from overlapping -# with the water molecules or each other.) - - -# Comment: Fortunately the ions and the water in this example share the -# same force-field styles (so their was no need to use "hybrid" styles). -# If this were not the case, you might need to add something like this. -# -# write_once("In Init") { -# # -- Styles for the combined system (overrides earlier settings) -- -# pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0 NEWPAIRSTYLE -# bond_style hybrid harmonic NEWBONDSTYLE -# angle_style hybrid harmonic NEWANGLESTYLE -# } diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt deleted file mode 100644 index 9bd2f15f46..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt +++ /dev/null @@ -1,48 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (See README_setup.sh for details.) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- - -# Note: The minimization step is not necessary in this example. However -# in general, it's always a good idea to minimize the system beforehand. -# fShakeSPCE was defined in system.in.settings. It is incompatible with "minimize". -unfix fShakeSPCE -minimize 1.0e-3 1.0e-5 100000 400000 -# Now read "system.in.settings" in order to redefine fShakeSPCE again: -include system.in.settings - -# -- simulation protocol -- - - -timestep 1.0 -dump 1 all custom 200 traj_npt.lammpstrj id mol type x y z ix iy iz -fix fxnpt all npt temp 300.0 300.0 100.0 iso 1.0 1.0 1000.0 drag 1.0 -thermo 100 - -run 10000 - -# Now that the system's temperature has become more equilibrated, -# we can increase the timestep: - -timestep 2.0 -run 50000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt deleted file mode 100644 index fb0642332f..0000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt +++ /dev/null @@ -1,58 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (See README_setup.sh for details.) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) - -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -# Read the coordinates generated by an earlier NPT simulation - -read_data system_after_npt.data - - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - - -# -- minimization protocol -- -# Note: If you are reading the restart file instead of the data file, -# then you should not need to minimize the system beforehand.. -# fShakeSPCE was defined in system.in.settings. -# (It is incompatible with "minimize".) -unfix fShakeSPCE -minimize 1.0e-5 1.0e-7 100000 400000 -# Now read "system.in.settings" in order to redefine fShakeSPCE again: -include system.in.settings - -# -- simulation protocol -- - - - -timestep 1.0 -dump 1 all custom 500 traj_nvt.lammpstrj id mol type x y z ix iy iz -fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 -thermo 500 - -run 10000 - -# Now that the system's temperature has become more equilibrated, -# we can increase the timestep: - -timestep 2.0 -run 50000 - -write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/README.TXT b/tools/moltemplate/examples/misc_examples/menger_sponge/README.TXT deleted file mode 100644 index 4d3a9d2f85..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/README.TXT +++ /dev/null @@ -1,45 +0,0 @@ -NOTE: This example requires the "Al99.eam.alloy" file. - (It was not included in this directory because if its large size.) - As of 2012-11, I was able to obtain it here: - http://www.ctcms.nist.gov/~cbecker/Download/Al-YM/Al99.eam.alloy - Copy it to the directory containing this README file. ------------------------------------------------------------------------- -3D fractal test - -Moltemplate is useful for building larger molecular structures from -smaller pieces. Although this simulation is of no scientific value, thiss -example illustrates how to build large (many-level) heirarchical objects -(Serpinski cubes) using moltemplate. (This is also called a "Menger Sponge".) - -The files in this directory demonstrate a way to build a periodic lattice of -3-dimensional Serpinski-cubes (with 3 levels of recursive self-similarity). - -In this example, the basic indivisible units are 4-atoms of Aluminum -(arranged in a cubic FCC unit-cell for bulk Aluminum). -This was an arbitrary choice. The resulting construct is not stable. -(But it makes pretty movies while collapsing.) - -To understand what is going on with this example, look at this file: - -./moltemplate_files/elegant_inefficient_version/serpinski_cubes.lt - -(This approach uses too much memory to be practical for large simulaions. -The version I actually use is here: ./moltemplate_files/serpinski_cubes.lt) - - --- To build the system --- - -Carry out the instructions in README_setup.sh, -to generate the LAMMPS DATA file and input scripts you need: -system.data, system.in.init, system.in.settings. -(The run.in script contains references to these files.) - - --- To run LAMMPS, try a command like: --- - -lmp_mpi -i run.in - - or (if you have mpi installed) - -mpirun -np 4 lmp_mpi -i run.in - -This will create an ordinary LAMMPS dump file you can visualize with VMD -traj.lammpstrj (See README_visualize.txt) diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/README_setup.sh b/tools/moltemplate/examples/misc_examples/menger_sponge/README_setup.sh deleted file mode 100755 index 2af3d7372c..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/README_setup.sh +++ /dev/null @@ -1,29 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh -atomstyle full system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # We will also need the "Al99.eam.alloy" file: - #cp -f Al99.eam.alloy ../ - # This file was downloaded from: - # http://www.ctcms.nist.gov/~cbecker/Download/Al-YM/Al99.eam.alloy - - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/README_visualize.txt b/tools/moltemplate/examples/misc_examples/menger_sponge/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/images/AlCell_LR.jpg b/tools/moltemplate/examples/misc_examples/menger_sponge/images/AlCell_LR.jpg deleted file mode 100644 index bf07914dac8fc5c9e0a6aa8f19befc1a24a3b2ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2364 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 diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/images/lvl1_LR.jpg b/tools/moltemplate/examples/misc_examples/menger_sponge/images/lvl1_LR.jpg deleted file mode 100644 index 11174969a31106b16ee58318bb2fc3e5de426801..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2623 zcmex=N4?hnVHy<}AC$AtcAHRTrpa2(-kg$+|Fu#C+0LTzVkWOY64i**;0d7ui0g}Q0 zLkxl(3~3B0%#4BzOoEKef{g!F=F4>RWcoy1U=B57<($H`#^9@QQbY zde~LTJFoO~wx5rE%`vh3=Bg#KM&q<9}Tfw#9_?s~Xm9UUFuA=`{7fcK7yoJ3h)V{=FX* z+k(&lg9m5xacZmj>Ka zo}KR)!1`k?Z!x30joT*qe+}HT>8tX#--Qle-Rv~KCb{;n+~NE-s`cv9Q;T^j zKb~Ltq=#?HocKH8Zq+&s{~2c8-nqV-i%W*d?dsh;-N2J}(?w1fzYUA7dA(ZUx5A!( z$!}kEhIAh@O!O9;Yg~Qr-l2`PX7-9Mtnbw(WXH~6C_K4-FUxk3*FvW*Hg7ZE>dzS6 z(ldYJ$5%5{Sg$th{ATj=c=yvgS|5AgZ}@TPv`WMz>upQt2Ax{=RYooS=-Jg97%Cnu zyZV5&z3k5YtMW2){+0h{n4)@l()w!dU{BlA>d%%bAK3d!LxOwm>!UBXeDc}bc75gM z$ISa*eSDQN^FyTT`Ug@*CvM8I%KAeep~78qC(-s#)TUXesH)5O%sgvivKPi zQIoyL^iPpZP&&cl!2WX*M=sAjCVzx6V)hb?!*vt3WHIbyu9^Amf!)gA&Nd?b)29cv zHSnsWv9X_8tC{7JC2;XT|3z`JHy+8KOB?T=`oNaU6`}ElPgR8P&4rdDjC1&=2J|W_ zq+fA4^HO>1zh(Ye4KfltXPP_j>^!vc`YwAZ6WwpEpC&c=np#OclXqgAc))H~`_p@U z3m*G>W-e2FP%dZ?V<~k|NP%sAhF^gq&zYd42?t;68+JAF26gJx#r^d^^!LKQ9SKZ3 z+n#Nh`SaNJ&J8>6@%F4@Sbn*iwJ}X{`@*ZdQJjtb&g)_zTDFiQKqo+X&w;Mylv3f#t;MYGMvFR$`gWK{A6JMnTYu?t}bV-;&XyqF&ja^wX zu}2hzZsomy#l1Ua@5aCPVHE)bGXn#Iz$8x5Hnc5uTK3DNDk<z?JED;o3ILrU|MQ=^to zEN=LCd(Dh2t@{?&UG6V?U=Yx_xyf>`U$N)?4IG{tIqbK2*T}4ruwL+O_obTod9m9C z^{iDZza01SpLW=*m{(op*MZ|bN(|aBnD;baPHWD)yYO$S`)iHu4s2Ho7G5>C3cV0m zek^+9gfh8}CG6T8*zf&kIQ(R$(I5XUA3oIn6zJLUkRh~y$NBuj<7ZUbY(GE!-nB5O zLQwSU-ejdyX*l*{*ZQilu$gO{Aj(xA1GP^Fve7_gVbVd2`toOFs zmlRJW)>r+E`m@{W{B|)0E#vZBc9qp%iz?kUW`&wWo_s9xgM~xvpTT4%&DC|c^EjMM zGL{|jlkQr0Bd}#R_nwf&Q9Cleotxi3p_^%m)Gnr=pL0|CnLN)eZu)N7FEN9GgMa&n z?VB&9N;H04qP23j&b4<;Q@A=xeyS~RS6V4(m?17aX&w9i6*iYXZT4~osHfV1Xy|w1nE{lKV|8D{S_kbAE diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/images/lvl2_LR.jpg b/tools/moltemplate/examples/misc_examples/menger_sponge/images/lvl2_LR.jpg deleted file mode 100644 index 744c9af633276fff8c0663ed68d97766b488e84b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7722 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 N|8D*7e|P`i1OQx~dk+8r diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/images/lvl3_LR.jpg b/tools/moltemplate/examples/misc_examples/menger_sponge/images/lvl3_LR.jpg deleted file mode 100644 index a72a1ea8d0e71ccead683b52f85dceb200d58453..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16455 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 CZxM9> diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/images/menger_sponge_lattice_8cells_t=0_zoom1_LR2.jpg b/tools/moltemplate/examples/misc_examples/menger_sponge/images/menger_sponge_lattice_8cells_t=0_zoom1_LR2.jpg deleted file mode 100644 index 9020a3be0e28a774ca26a22fa4b0daa4e4489a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82092 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 z zGdmdmnt!@|{dn)6ioQJ`b3U$G)>8O$oB5~Ns%Pr{GyIw?ci{f=evzZ)>jij19IEeI z-}=v>H~;vaTgl0Pcb9G5^IdoMzB_;3KdVicy~j`ayO?>4?xb7S=3F`P;l+mMt*fg` z&)@$ee*M?<@9h^3rG)QipW@KJXmN%U$C6kht#4k>{LgOu^>)Uj{|t%050yuK|2V;2 zv(SLc?C8mFx9*?$&!9Kgc=oyf49At8&YoszbY@oMgQ_3G+YdkT4Ds+vSD&u&^pwiB zc>(5@rDv-5ZHSM56@SOxx4r4#rM?p!GX$PK{=M8>cke~Hw>RcpvI;1Ez*aFky>}an z2>Z(PyYr8)Nj*4m@4r|p+dVn1`ya4fiSJ+3bS3(qfS5uDm)nm0Yr7NmHf%n+Y1^bJ zx-GY&Pq=u?EI&KD#^B%k2mcw?)))NcDiihJkY;>2xBY0)uZ^qQ7=E!w{1iUiHT`;D zjH&Yr+rXzeHbV2J+S>kSn4rDx><+=5|6+~I&o-}pt73fGZi(@pviQi_+inpXwe>A8 z9DMcSm(Qt3(uP+*N;ADGOP%B{RPOy`{{5F5|1*SLZv4)FDY+u+4LM|+l$>6DL0B;CLELPyYPPQW3dYv-LZRvj4}*(zpJD@|Cv#DM(pC1oDYvr zYm0yDid=Q<<58|DN6%l^ysx5q(&?rO!@Z*zK9+*f#lan5U*2bR|?4;lBQ%b)PRW~)%2x83{6t?U3viOC+3 zuZ@-qt1ij*dgkG~%q;m@z@r@7wk@AJ`HIYP{Epv{*GPzOZQRaPoPGSretO5v6Knpq7si`DH@rQ;@psuX z;W>}<0wt`A9@^M?tIxY{q<+Wvl|kTntAw=RxrTEiFTN9TNVqO=aINysE}0^eb4gly z$~`)Zl8Wpm3(iS4J101SXCl{c@rZK;5`E04*p*@@@}KOl`LiL}e~X@(|A~2~Zz?68 zZ8W`h?$);)(c=C~>H_f{-@|LR#JOzn{HFM3!u<4*jq?iqZoY`roFU0GVa|jvuhTwD zr*lkt?Z&vqi!-|H`qQ%oGOOksx-NNOXZ?E4CdMGomu-){D!5w9JQI%oSji#jF+c06 z-RzWKoEA!6M;_cZJrglsX01`7d6Yl58E5iSNl!uX1p-mZGd7-QFY1rc6k+zCGUd!B zWz|NB)uB#G#y1b&W;@mt`uuti8#D97g8TPRKXqHo=DqP&-H!N@DiQyvy-Vj=PW&op ze#}l*H|Qjf<}0O1E7dxdeK@@4S&Qa9mFpWUMA!Uee0u8PnhwKxvRc-sZ)9(hd=y|8|?Z2*a5vpEk4S*S8-yb|w9(k}i)$l*76k z>t&L)d^YakKc(-anLc-m&$&-8HKh}i=Xh1$I2;wSQ#h)B(f*l6%1Nsw-zq#k+a$zl z__iaqBYBpqnbfwjua`D5Gu)rKdimWo7w;96)wzqEEWGo!XHD*|8&kW>wcq9X>s^*F zN%7@tN$0mIlR>l_k@;U+;OyFlF70IsCeN%WmwP zb#CRMN2Cm&zVvz>W4TrpE-()Vfkf-Bk=MP?@4V0{;Jx6Z$*?S$9E*hyZyKh|@v z`fz#Hb+);)c1^sRm1neCIA`U}*zcDuujB-qy*lpM_s8+!>HiEOtezWxESlZIT z3)^DP73?cnldpsC#*|aZI{U^ z-d(ez_FP&u>tofC@Rh5xLJ!UDp1L}0dG6PW^L8-_Nh*7`_Z0nS*idag_tX3w?kPD= z4|d5-PISK%{P+I$5`~Gnj2S9ctM|q}muX4c|DFAGecoq5%Nmb&RUUtDTu8pNgDGu( znv?GdUy~cIU9)?Zp7+uW+Zy#$-*2{lsFkR0*j^|1)cYGmOnyxZUHS5e(2c8ky;-KS ztnMnwcO~D6Z=dz_*o+lXc^B8*@7Y*(a+=KHXNokvxR}=ioKp& zUW9%-v+CTeO;U@OWleqICGu9MRCdj)XcoWQE>-vH@BaJG@Ot~I9Jv$tMk-jZWy@9GEFX7M!rG0I=I@v?$km`J^}!KOUjs7Zh3Dw#^X zwOB1x<0_`{W%laLF`kO0rpI0yc>Xb}ZTS1MUWrZJ+T#k})~&Ut8ecD-IPcA)2y4#+ zjn@OX9xUYHcr4&3l=IZ^&0)ENlNe5Zdmi@vE1#LVZ_J@pCfWP1ohhE(cuucjXH*mG zseKc(-fK^ZkPCQlkH_x8e};9pulh|tx?)Ur=6 zAJ@MYI;>Vxf7|ohWbO7-(>k{%*!ahsV~0zn{zaEe6Pf>T`>cPGAyalwy_C3i)9!z& z)2?xE-E-uP^5kvre*b59`|V@4gl>13Tgn0LIq&8)E1o-i?(kh>gL~(8txDJ`cV~%P znCB&ZjXOUMY~QeG(Gy9d3+z2CzSo^|GEb`eYIAB|5-yx9ykhE+KV@wS;gMFw+Ut%R z?&sVzH#8tFM%dwU+|}x@?|vLzc5Oy4#j@5fe=}zAC&?bUd*3*@RohZM$d6yetp*4$lq0VI28Sal>}Med25f?)oR* zn7{Zo1Mjyd=U23IX1qHmY~jG;vVPqjw_NLwI*%>ZJIB;a?2!2|w_}~d`}|-fm7Bui zwnZM=CTZNfC)f>*Uap!n^U~{@yRPgjf-h|sj|qHj`mMJigmb}?tJBxn3x+RQu zS2Ba?tgBb8s&%>Y0(mDlFg?4rA@BUONX0Femx;dVn0kTJU(M|O zSFVX}*-7{(C0V!ZPZJ5FYE|4kf{03@cf4H$48w%K62J%IsDUZXI>LlH$SyJ zH*+nofBNOb2{O4htFG=iePY8}GgDisyDrK;R-#eU>Xb?%=2pgYt?R9rQ{VRH70V(G zrnJ(Q>lasE++G)Vz`9g(aY%+@YQmHGN`ceLXT46?AkV7%pP_=WXa3rP*C!u@{y4Et zd$grjLiAN!RyFLP1|-IMlo|9bsjGX+&oS^nO2YpGWB=`E7GBKpoWyr0@Wwemm1 zZNrUMawVQ;dR<{V!MBo+;abY^$37E!3%>pMc>G_@fyMC?^m{#wAI*%rR9dPtyb!?w7}&31NOx-wI$ zR5Z&>?J<{R!hZ(-J=5*mXQsZgHd2xZ-X_m??AVd`2)jyS0S!f!olB-RI<7pYYJ6ME z%p~{ty~R0)cNgv1-`%)u;!}&Gb2d&=IPus*g_q4R=VZqtzwL88Qp}YWP50fsR##L? z_pgKD{2xEdzD{4f?ZXX&HgD#$adWn{&J?_6*!|~_iQgfHbcB3|sMV?P}H_)ga{x95?uv5tS%#pY-S zM(*2w@XOnxT`RAP*U1#$GETozbU0B$=WX*tMsJh4t)Ds}Bdf|I>W4$ttkk*cewR+JxYD&JdqcbbBehqdDS0o?T-kC9foeeHD?$BrkSk=v%Pe6JIH)J^HN;EI=_?cSHS{91EC+hXhT z?-A`;C9lrTHja64xYciC6Q%fZ_D!_1I%m5_QjhjA z?%A4@{<81QC)-8(;bK13HTAjYPDMr?SG``^Rn_;=$z*M;U}DV{AHFEDOsn16uWpO= z+3m{Oa@Xxowkm6cj_KNMMy}SH6)U&g(BBnpQ}Q-6bZhmkIZ@Y2*XCAD+Glp`pX|~# za&x`rElp}$d||g$ZIWzeXLgS1r6>DN9o|=yo~fObwP<@+M>sg0b1 zD$XkVE=fFplkqX;deJ$l-i7Akk9qS>Y+;)vDH9jRyk(1;-$LzLi?^BgctyIuOzjby zJ^dwTre^rz7554w_bgP-`5Jz3`lOzp(|)IHzNA$4eB*b4Em47UTMzqP&Ry?)b!*hE zX=)!|KQz0!+}o|5@20Nj)UC7rsV!a>X0bEr;4AOTS}|20UwwXWmb#hUbj|M9+Zl6w zcJvn1zB;d1*jy?oFEr111>b)L!Fh4jyPgM@%s-;@-dyL@v$u=VC;WMn(z0<<^f{eh zx78#WU!5#xUzH~Ig*BYT@$z)mhORFK9HrA${(Mu}Ju^IHMb%tgN8y#q!E4qQDXiF} zlqGgKUO)1)sR5r$w4~GWMhT(0G1sFvS3I75=GpD%ANOU>t8ZR$Id0QkV;{4KZZ21o znRQZi%NI*zzPdc+tby5|fLGrlR|#HU>m6C*H*ZmOtO;@>lk_1>cNaHzqnR=UBJeqP?>k?e}*3+wYh>f-Z&hZ zViy{5@4(qU4&Pa?*6rG;lhU@gYemL}<;$ade=QDs*(f|QX>ZQ@w9~6^UJhCos(m>+ zIBnkP_CrC1yPsIze5-u)D(}oM{2TWDnSV0=mtW^^{zLy6KJ9A%ckDmI`rqfTe<*)b zqW`z`{-@9X88$5c68PKTuf<>M`}zMFx~9L}{U!E41H1i)EBharoWF8yv-5w3>D&J^ z$l7n%{(H*5z41TI>c9T7|MhA8zh?VA{r8Rkh1ov|{q?Or9JFp(5P3l}Xx;LL|DZX2 zW=2MPM&EoqDwyCZ`~?^onOKOr22E@V$&(g+G%4OBrmE)9eCX1n$%{XQfURd_V6$hkvNLw< zI6sBiZskS8o}Adk&1X-CM9jFh&4w+9YlpgH**(tLu6qS7B=UajnY+oN*srX)?fb^V zTbN$XxGNJcF7$Dm@n_#lzb?N_ICJQa@Ry#5T{9+pYS;O5?P8vMkY(D;#UBn%P&z36 z&m&{m#(lHH*FL|NrN{1RxN&2jwf^%biwK(T!}w-;eAP0+tGj#DpY#SFcC*=} z9WK;$yQ*DuZL|E@R)gf|mAsFv?_90W3AIV7uMLit=Swp0%sAgwH>2ah2_5?n|MXVg z3jNZNANL@wsJA@Jnd#Bz-pcZ(Ib&iSl;`KDl-w7GNdDT(8b zZIL@He=d6@&lfN+MJ`0$wI$I=?e*NFCT2Rz(?YY0eGeT?)XUhw+;nB1uyj{@($BQu z9)&2`DmO1*l}fEyk52Zl4fyb|xp>=rooTDxb{t8m6W(*VaE3*j^&;M7%Q81g6?(2X z=y&OmM!V-%JI!Lh-j?cuUklacGH2w<9dkJ1BwV~H&`so4Jvsvf*|SKHscV(I*K zTJFWlwoJYS^H#nsQTLsF?WA|u>#j`?&vHvY{d?{6%arS!{~6pLtVx^@{V)HjMAb}# znknzB&N5YJ)SA!gH0o!5%N0Cba>1>+d?w$gXWjQ`_sf0Ic=)(Z=kf3FecOfPc3sW+ zbk_YcUvXl9F5{hG>CTlGqKo;P$|hALmlW84_|LGYzdOb7h5FUQPb!xsZkgi$aAEJA zW$nwaoRzv>=2p2Puj~4&nL+`%Ny71+JqpHrW)6?q)U4ZNH%M>h>HXT?ExK?+cRoj* z<}IH#W0sR;G8c~@O^~vyHemcC{NV92gAZpO9-5U?t0i}XVZQsWJZ;Yz6Yd?G>s-0M zXJbTH94l{HhOD=(<|6;qT~^yX{O*dJn8awz^lV3BOl{5@rq#Ss%J+MoKe4fADcnX=g*F+fGJ$ve@mj@Pds}nD8saVCc9bDss9Xnrabq|EBa}#y2@a6%IfLyLWS9@ z_0Hb6uX{B!moM*x-rXttzFfK{Zr&WbC(nFpslc7p@0oQkUd(!A;;3*d((zNstIqeY zcFe9iDwMk}ed~lYMzvTL6c7x={r1TTJn|D~BmE7ik_WR~3I|?+61=%-!{OV_saqEWr zj^atvSM+{Wx9qi;QM_#7G0$6JmRDbGIy`Z|smrM^|JZszeQQ^g{7dkun%WFAyT>oXQ z(7c)@e{pBu$JQ&Gd~(f;%G57yol)Ubwfy_!Eo~z0V$%*V-1BfP6Z4(&?SxOAH1A7^nYkO@`dUdFyiZ=fQ@hnCZJI@a zlK0l+**42WY=ypE30VfwY=$MVZv*UXC+ z{h_;Kw(pW^gX-z;i-U!i_jj$VzclCVG`Zh5%&gmuJgK zl*k-myW{JcXX3|WZ001%awlwR@>XN3w$MpAwZ?05jwh)fG?!c~FQk*syY2b2*-K+3 zeg*7X^TA!bqkFZ%xzjZs50!RqU@^2>I)74LQ@gi!nTyL`X$dovi1svn6Sv8W1*6OS zK4hh-dol{M{k>7VD)`x69kVE%U8$ST+WwM~wXj*_tFK=R z5|`dPdH&k+WzAabcNV)IO_F67xZPHlrM%Iwhs*86M~w<0HyOvDfyZJdm&h1gb4gyh z{!iMX2XbfAl!^s6ujJTTHu>&@<}9h}AD?s-FT45c=v21bGQZZTpEl7iut?QE%NM?1 zzW%_)wJXf`el|ZVQRvyhxyD&?c7CPOi~P6z6{$jxOU)z7*6!T>{#DP8Sn+p06W2)J z%v;W}=4w{o>E{{7K`F+$d*fxc|C!jS<^3c!yz1}OSw^hqcCRRV7x{BJr{$5^&7baN zMVksvXaBcy*LC~wgNG|uF8t6iJLlq*oj=#Ue;wQ?u+74F!ISPq{`|6w${x*bJAQ~E zMgI5qWyTynWjjLM6&59b^#2mEA^PTqkG|_fJesNw^UvyEA}x}5>)5aLB9mioYu&oJ zHqMGU)pEx_E|o;yd#wRi?w6YJP44#L2|%Y~?#kR(`=H{~0>kEuHf9Hu=|0(yLoDk$1rp z@ui82v%fZH6n%=9bURXYdY5oc3y0r2VV_(3TbJ{^a7sOPa+Vg0*=CW`*+!>(E+-%F zyKzx^&!I(slI|w{wECg;r|9yFma<&+_x=(A(v4-0=TAx#ojbow|38E3e}=+#*R^|> z%Wri){y@pfOiS%|-IqUky0cbnE3up{@>l1_!M^q>dPUEA%Iz<5E^;Ued(xy$$ z=#=d5t}b=Mu=PiCKVLOnD|+J1y^ndlEIiKzp6Kp;Hrsbe8T0Px@7I0Vf5m723xB~> z#eMEYe~(DLnC-iJ?c}g^?=x=+99<=+k{_G)biekO(3_cl@g2T8I)Z$DmbTW0R7p*(DhbZ)X%o z{kUPs&lJB|xPKD6XSQTR<{SS`#-(vTEYkdg^*#y4uRVN0P5Y}`9dhI#7> z8S!Hq79Pq`o4vjJ>BZ1R5+|fKZolhuIOB!M-^iIP{?lcjAX?uolE@|WM+8f8>?TX1*G6`MLay?rXN z&whT2m)tGH+&QyZXY$7P-C8_f)vgxqDpO;@S{d=kLI+i9)D)9-FWz{nIFU7?vm5fCI5Mx zzproiN{=UR)BIAS^Jk;-_|4{@j^BGy+}WhK`=QaDsO33Zq|NG<{b$Hpz}wGZUb=nH zw5{h%nYSd~TEA#h&dU?;PDReol=7aZBsRb!`4{Zfi`$x^MfKd*|9NIk8dkN@|{l`^9r?iz~9@m-H{*#qnnLqd$kr zw1qx0-pJ;t(>E!+*wMH`Zprs2`%FtL3T`u0Extd=D#4-cguv$3sX>7y-3f=&xc8k? zl}VoI*U5g>&pWmwQA%xX+u86wen>@9GO^=~Fn>ag=lV97*3+2dy-Zd(LCq=!FS^e8Dx`Mu%nz+=aRx3ugi4cPj?CE54avWI(< zrOGE<$h|FjP9}>vC9nt3vN~aP4-K)m-zd;H}b)~E;ZZRYfZOtZz>P@G2yO@ zW=P@_xmjm~_sWP(_{qty+Sa&uXL4^PhqB;gbIhKiNP_)_;cI z>K2|yZ_b~$zckb%`}XFoyESWHo6h2!x%IfK=1ti}-kYNiz514UjWN@^{H(#@DZ8hp z-2Q%{-Pm}_=fZ7ur_>hR%89X_d2_GWNv7tzr+7be?c8yC{`;=B(%!bT%zC|6`)1vE zi}o2V;uj^j1*?8(Juthk$+GNt!>i}Hp1&_YHj+);W~+YE`N#HacJJE{C<}X8U-S{Y zS^8>5sei}wSud4B^}YJsq%R&_IPX`T?YcCH11Vec-YZ=1n3%{MJmbn+Ro=DjjcH$a zR(;oTGw0;(Ie1x-W2X0-$p*JvpFEs>=h@aB+jeBk+QxFBb9LpR*Vf`P4bG2s+}2Jg zm%5j^am(!cj2jxSbmr^m)VL^bx_jv+OUapx3AZB55{msU8=kQ_vf-#(Z%2#L;d!U4 z7g}j=F1@^w|GRGS_UP#%oHu2K6R&F2TxdDG@r;^tle%#8tQNCe+xuB7Zx_n+_;{Mi z>?(=+ zT3>aIFtd4md)+JE1y+}@eo%^jzW%#I$PU9}GcVtrviX+>1KavtmveJ}-cYH~B);>(=g->7O{r)oxV<)W z?&ZI_k9i6XITX8@l$-Ov*tY!Wvp&^N4R;Ktt@-}+!1Bir*$%XGZrM3g{B)C*n{YHY zH%IQlQ#;i&*$kX7zPZ;pHSVdf#2Fp4j7w#+Cu%%WHs}?!Hp-6d<^Qp)cE+3uot=kX z87%l#Sh3giSKvoQhjv@XkGgr&I({%oSBsqrRZmX&W7&3d6OZ4gx|v5T*LED-+^*|? z>Bo&nqUl#Q#Hc;IIbGzAjY+}fx#8@Sa@02G&w87BMj@$l%ai3Eil?Imu6*i#yglQI z*gpFmx+OI`OxE2HxOmt0skwF7$>{a76gOu)J!|>4)_7w=keqZgClm6jSbIoe9&s`%DgQz@#w)+)!9eCt1RpjH0@K%-}L30Rjzrte3eCq&yDJ} zYo4F={HV>p=ZCMI^xX}4H}Adtk+xw%x$`F3kQnJRPZKQEA1>NgB*d#75cT}>J4VBG zra_L(lMZLgTE!Yz=xEP152*B9%`N(9(Z%Vkd^Qf3y^G8^e>7eAs9D5$@%~Kz61NGD zCu%%W$`>gVH1Bh?{pfP{q2~FnJD>7ZVkP`4%_m*6xKfl6b>rsusI416Ke)QKyZGP= zm)`R7sI3$Co{`^kZR0clcUuab3=6JTgl)TZsWytY>*dUwbNW@+6z3JS3Fw`O-Eds+ zq?z`a-Ip>?6vh3Vcz%)a%@=l0tzL!*M4yo3xT41QeQO=(Z5{n(pJi{>zT70TLAIf8 zdTq${U2|4To{QcW&+~3gU)@tp3-jq!MgJL=x(HgnJ>B}dyXNZNsVo0nXw&MF-F0~K z(a%q|cfZ;iZ#nIhn9iqn|2{eSsN|jg;6KGv=(c#=zRtIWO6n#4Z#3pc8ub0KjBVwJ znD(CU?2(!pTniS0}B#w|0M)e(|=*gBp%qhR zl{GwiG*8K{eCsB+98mO8IfpLF8>1Iypje(!%KSeScW<(l|g=l3;N|1*eOy6m##(V4fp zPpYq``xWMu2jBT|rouiiOg3cJx##&!_&$2r3`u!W^cA-T`l)Yv3Oun5}3fm;J5SUgN4?s z+R9va#9Aquo}VP}@Z{4w0nNVZT{#9f&Aa9_I~Tv&I?*=bL~+!a#*^LIufikm&-zxW zAX|Lb??t0|;u+sy>krv^4TWnyJrM8t^gwWm+XVe^)d;0H_0%Wbx96;ho$0cp;Zg2c zX08dj$p`ZV^*k&#%*#F|o7FCIe^ZU!q!Mw1+ZlCxMci*pD0`asz0h~<4x#0{HPfHX zcpR8m+G$>T?9=*)2lwUMj;Ei@nrG@F&3Q}q=%MA|p-xr%=WM*~(j@bEZvs#B4c6$6 zQxj4RSho9bnen1}^Nso3-!HUz?!RtXe`&6x<{i?t3y^D;ICJ+3_+w?h_p9KY znU6$OWYb%;q^(O%FIpzkF!j8u&lCPDTqS=GPs+KMd!)ea(lhq*6;2DycK@x**wXH= z^e*|(Y{9k(M)roKzA{=@Ki|CXRje<)`7Al4G00jCM@bnsjQJnp9Eg_Wls&Ty90{Z2gH(W9V#dzrdDbd0jj7*FwQ}vo~kHJ|fo@DO_$)_$l0I z#q%TTmg^?Bds~`?+7xC!yvpEzu}WRNeD=ja7T2 zB4wlHYUiK*P&yD5J<~a(|Gw(6`Ye-~ntpXP;qTvtT7G|d(DY`B({#24&vH87&3iv9 zch7ly{U+fkhYt62|M``EHlHUbSC{Ln_;6l3yzSbP+qb6NI+@(7)>!a9X$!jRPqYT`F*;iG->6gnU6%nxk~Pa zeqXtFW~r}8TBEsK<>H5CK?~%+g|z$pXSjZ0rG5GQ=0(L@6K2LPnA@1UL{jg>oc`0f zT3?&X=H~O>J+s*%XVdhYt(V?x+kL8?*>kT_sKtr5{Hfj%pZ!wTNta7%CEh*uc1KLm{;%gEZ2VW`|N7DEpnBV_pQeYDsG!z zmCCGKeRt=is~3IFy_&u0_55pdJRJCoPF7S%P9^FpN!AHSYY|}_x0)V zJA=;@J6rmjJgjWFSZp)7_c&8PN}pHqYZs5(CaTF#Rz3Zuq^ol`RdtU_%eyMAJ7tZx zmb|Z2I~7`zZLN|W&Z7Kso$LZk%c)^R`X6> z^>fcR-pPu4x@MlK+TA^`!?J(*?DV~F8Ba=Yxu3BuI{clwu;@D0ZEXJ;HmmsEV3>3M z-G7Ej^WtKr)qPrS`R}vaa^Ljh59VC$Sz0Yx9&MUz`FC}-p3QW{?@FpgX8TPzp5`rN z;18RsFZ%LH^9$9VY^m{kouxL5$@o6H%`xfs)aOFGh3ujiJXLwsy!zzXNB%OXw&`=9ky5&~b_)}G6bJ0IJ+gQU}kIO zkykAq#U*P4PVN<1l3&c-KWnz%rm{8MA}oLJ@h@4SwBYel55nRaYR&S$eawj0dd zX`p}l&I;y?;>XYC{LXoP`J|L|;oXPNTD+&t``*dX%Qmn4#x5omVh5Rj^Hp_r>74!b^-)Ww*|b`bZ#$nKjXfv#pW%M!zL)b>*S;w0Q=cWB|MK#p z`(`_)vqV~+`}F#(nNGUL^FZtGzeRm(osa&gTy%MpKYPLFnA-mgUFR46{S^6h&VJVU z(fT%1cRbni_F2f^d;h%t82_32R_E{3)BP8@-^$Mt7Lsuf-G1cl&jmL&-zr(;{l+{1r?A^bl`vu?Rm%Ih% zZ`s!GIh$CJ^Dc5$#=>3aC#RPlzU5aeyZPvIgG#=xG>&D_du%SWdGdecoK&Trv>oo~84XY(hwm1l4NR(|7~og!=7)i7bd=$4zCr>;`_S>iHN{M@^om8aW3 zJ^y?9^DdrZ2bSFK;&)#|wuKA7)L(CMf92fbdyx?{eV+NQ$)8mH&cZ78@=42exkmS< zpS<60BI$Et|9^)3i>3$UlHxTizeI06e|PQ6i_%y4Z@*cY_w~bX^;J*Y#mjB3CZ|-y z-+lG2%R%t_&-tlVYu7KH`RQB8b^bHj6Hlz(5qJD^^mY3xqo+aTGm8E*TnUniso%@9 zNjq^@^|=$ut3+l#DW7}&WNxsKLdI>OWiflMESux15Re}JVBriQUQ2eFf0OF!4a_T;8^L z7DdXw%3;IimcXZ+^k+TpLhSsC*3UM)N=B;KGu<>iTUvhPy&EbD#Z z@%Y}0Zp{*-+a~*WS!%Y)c5j_DGkum`w*N)x%g>)QtXRHf{t}DdyOuMi^ObG?&!8Gs z)Bc}9Z`HCLC*I9df2nNI_Q-wJHOt?2diL%oB^r+|3RgC(R$lb_@A-S#nTP*g*}P?H z%Z@ew8TK4dcwIZS#-(R(<=nlkj!mim8Gb&?eY-Z+XWO++>G=y>AIZ#pIP=Y(%imsE z+I{bR(sp5XdF&zaSqiZ&Zw+LZ%VmUpyJG$M=5&2iORGs{(Xq#ay46(FBWK+DrI8nU z=akdmr*F9?6Ot(-oaq>EK%Tp(EHti~!uq?>7I9j|d zHf#IbJo~dV9Su(8*Bxpvi`LnefA7Vd+riqWg6C|OJ5|ltmigq(#kt}ckMsANXfjMP z%X*)_w?wtTr{#0ull)1_iqj`Po#**ZXEX1+IoHp4XWZA%jNGnN^vtGy(UcyqKfmMl ziVEB*Tf?(A-EWf1g|~}cF3vl$P3!5KDbE>KP0RZ^uYLZ(nUOmqSKB`|+HSk}X4Ixz zN!=IjG*|vy;5>Kr$&IO7KA-p!6Y-+@O~w|(i<~}JcjVu$Tqqs!j4l5})l%KanLAqR zF0XVJUSDbx>v{grQpXwlR%fT*^6y+%JnLibB-4%$Q;y3WwOlg2T~MQ3^u9?{QX0dx znJ22X!+uXR51uM^=B9^rR`KfR{@xl1M{c(H>kv&qL`Der+inX}7-inpIEUn~2& zzFz-5(~LFh2YDlP)e>8H->#XS^}OkB*L$H$Dl0Z-9#&!3nC|&Eh}o*Z1PWWYr6Z;W6H0- z&M!gFtu1-~Gb~zFAzW~4%KD3Y14K4#*cSZsKf}$a38`71GM@Zr$Yl7ob$#xv_}zc& z&x_dhZk$^)q3ziY$9oxDLrVjB9==Y!Wp(BB%~!MeT=*x>*?(n`u>QwX{V$4q&Jnf| z3Lbw|cr3f;u37(6_jBr=fZL^;T(WupT@BlM`MHVA2gb>1H*@-SuH1O^tTAs%&m+l{ zyxs1B#!4yG*4?H?(|l%%88;s}cX1a_Njm4Y#7`x6bM{P`!yOxXvnn#D{j>YQvz(V~ zf~Ow&BpdAQV|#Z}s)9<+yOo=k9GqXh=;gaPPyaJ`l{|fWQEzuw$RV?bzt5T# z+{#tHzJ8W)vQO{xd!L_ew|IVel2XGxxAgSolUBU(@V)fYesQTz$E^wP`UUo7L=}rN zK9aNf>@;`RyIcFhS2_iE#a6E z13v$Yd^Y*ZO$rV6P@p7A&lU!f(zeR$ifn*wqwEhjD8j_6v)T6v~@I}sfEEqCXy z#Ug%!!mAv<6+gaOwM&ih^Xm_cnu|{qJzA1#vu-xexd|43=5L+mxn`o#4w=1sHu-iJ zz4=xbd`rx&c4_75r++3ll;+f~z5mTU6LBi zo3dDo6o!O{nz3@i%a*`H?31NJ$U8Ar{MacG^b#; z>z`bYZkqSIEX}9ymEM}?XJZfLWlpT~4r5tT#(iMQ-*sJ=@9vA4@^eA=pn0Y ziu__LJnzy=Z^J$O`imL_SA*+)zB7t73i=6Lrm6*;)BxW%4_~LIo$#7hmpSFk zw&>#~E}MU-U7S{a`hmD#X0j*mt&}wvb&g(+y0|G#F}hy&_41r;K1SBgvr-;9TN^V> zs8DzrcJJ|>yUV32?yKZ(ja<1$`f2^ssY)q(U)|ml>|EKcINNc?`*_{?RV9rrjI)>8 zow)znKW*jZDSuCAiM(o0oa%h{_a;HT&z9^bzRf%Da(B6~U--=z>!))n9($#}_1kjJ zNX~OE!N;?2`0=XFy|w=4Z!X<}^74t<+qlh^f3CY8nkM-^xc)zb`in)fX`3_N{@C@O z!Q#es-S+b6XY(z0uHWL7y7fyitIx`PE6#XMf3NPSQ@qfnoQKhw;v zlv^DT@tCbNMg94c*}=1(dp+GW{jg@;eCCwpTr*A1uGy$`eU@QT&Wy>|xS4+UUggt~ z^2~Xn!Ylr0w%HpiKZCb{M&_Tw7AaIa$9-!&^+0Wl*a^!kn=a?i|8y$f)jw1(qlD?i zW!IpxFH78??RGe}cbTsq1OF>ugQ%O#Mly`${2P4_#P~kka$b4YlDC1`J2r6E?`q%e zYxXx}$HL4->UmkqE7v_O`7-@K!==0phU@dr+|~5H^=iQ`hFpcG0x`8JsuRrSEaNwR zvwV{V>(mf#*8dFuLcDs6vVPj$FaNx#>)9oi2R)AzZ+XqVe&#;||Fe#Tm#i-=OP5|X zZ`U7XpHuRinoIMhpYb{KJ8Nz3zq(I$r*f9_#j6%YSS~NSEPL4Vt<8iv)#Yc|lh4X- z4*3@CcK}jgm%j3V-_68*h4-@Lj$0c5~SM_@@61C$$%y^<=DOojiBu^6WqNp5Ci< zzx8%q-BPQ&r}nO!&2jg_%g1%c?bmuu=QGL8dAeoR>+8C+~ajHwaApYEM} zvOI9w+nDobpHC0*RGo5T{;Y4tCtcVCTGDs$JpJ=x-BjM~ALY$f3e0)7@7Llfj%OB? zw#}b6@y*`}E3OFhynS_Y%gzO_?)v<#={dh?-tmJsGv>0~oE!4&5#Jk6$)nrcUTO4P zk~%oAYQ6R)PEdAM6?%F)kVh}K$Ik9H5o3y0HBo>4EtMfAKY>u3rrx%;E`J{c= zEv3zwZ*!YjcEmafMwl)yNndm8eJuOKIj(B{#>-rGE7nYoUX`}3p|t4cRJEVa79Ksk zV;A=lv%CABsjZ)zH!n#1;fMI2s=Tu`zs88g?_X(Ea$@pspHJI&+D??Yq-*7&7Hf6Z zgz3NoH9h83J=+l5QwFlQNGLZO{v?v)oVuchDoS$<&?+rogoz9;{k z*p_W*8Ehx?VRpW;6JJMH9tS0jhQ ztA4Zpnu@Y#lUHfTK8J>2B_ekG6<;>toU{Uv`_%-p$Y-o2}9C-JrUDxC3JylP)<+Pu5P9rt1v&lQfGT~jN{ zX1IRd)lWAfcgfn6?Us3awXAsKT%~HcOS(Df(OAvX--_K* zHqEx^pJXRkGqJkNxqRhMxwX3{C+%t5wXja}!}B#|sq4&ai`|6zHr~oRBUJ?A&&*)Ct+#LV2{>}YMdy&~z^3r__VvR9up zU9A1;$no?qYZiwKShgKqdro~)rTVKMnl*t1j6HrQw?!&)KH1T^tGhSs+{aBydsj}5 zJ-6eFn_yvA#Gza3Z{F9`Eb_BDWo=&lOHp#^1#i7bPpbv0M~y3Tg=4?1pJmVbPkPs@ z(3N4^r+wP^>zZTr1=rrQl0h+9Mn)62Whb0nSFmhVzFw{H!QAuhDt8l3C4awa`fS$h zLaodx`@Y=Dm|wKA^nR#Wk$R`_{3ks#ZN3+2=Po&SeD{Xlrfi^aCeNFl=ZzhujRanWko;pdR=xY)V9S~)mxrx zD=kca9aENi`m6_2qW_hvTf@6g@@C)q&Odd}C^Iz)hx~+TeuYYhtPd@(elR39{ zZoVtytFb#PE%bifH%SH8u$yzfvuyIMSh=`@dv5IKSF^dp9?5F^-1#wG{OXt8G5?ml zyuzIua`x|(=L`=b^K9q4$SPgbTB3gQxAUxa?r^ico6p;4+gwiF9{1*7^tsnLaVz=r zZ`z6$9C`98#=rdLd6k$lhI`AO{4)Eg?pz&p@J+eZ_Eoa8^DZh`{9KuJcV5unyH(q( z_g$^1QQx)ckL|1KnEwo_>2l2XmdKbdnXQ@2`JbVp`PR1mLF${|DhprYwYT)V{bK1V zv!Al-&Vzamm6>-<=3SKS^frs%=+bWc^_@w7)Lh$pAE&Q;A(+8eJ$ErJV!mG^; zHFp@_6%S#%DqhvmAa;6QmfKoSYeN<7;-%l!oy2w7qeIo^Y!7IA?N_xjNWJdUlBxv` zWp9I5H)SWCj*wFIo^|c=&xQKocce}I=Gh7_cHMoe>}A2k9d`qcSjs&0XS6elUVgS} z(_ZgukN4Ma+AjOG?&tcjckww>zUpaT5w-Q6x^P}bS=y_$vAY(Tn#&eB1$=Kg#Jaer z^~Wk1j*>HXZcn>?*2i$|e1<#g=ViP(7dA2PdvMJ~#%;OZi$A|;&@~sHt8~|9>alM{ zO!r;=CfeS;IQ`kS=-s;mG5y<8Q+yEcz9QT3NxN@WBVGL zUAnItH*EX-$5!m}S=-k&%UhWR--*n-zW4{r-RzF5GmmY1X<4}}J0^Pdt=>21m9H9Z zHa$GEKu&o2;mtfNr!y?`)Yv5Lp(mr$TpFk;V=3~;arRovXPZu|yx*FlJ843G$n{_L zyHy?vNlY($aY{OM;-s~gWJ689PMRTHSEdonCu(jybN{Pe-?j_sn!@>KQ;)f5?)bO5 z>K@}!vDY%!Qv+=*l{dWhn-)@Lv`fYCGE2zG9oM&PZQ3rV7M6XY_a zQzuiIrL(2QiP9k6U75coNXEI{5pLUXyZqKC zpDDRBJ+E1FoGP8Yant=j6RZxeoOXHTT|19$lh-`tzxmuwV|L7~g~h*=zIg>to^wym zkIX>{MnS9S~{mK_x^_sqKwv8^9yA~a%=(?Ui!oi?Wt`-utQfpJDZ(wgamoz3o=H{`;9<;*>YlEu}3l zzKJ>P)=Cy5CqE(c^QLAew(ojro^k7_Ov~KuT4iNB6uvWBGBEI(P5d3md+kJwB=^%< ztG-Oq5}PlxX8UX_%TBL}mrZWU%-v}B?t0a!&$^Fp-kDV_b}}U5*POC%n|J9Z>got( zcg|IE^)P)aBfWKFVd-(**KbSze)6j|E-SJ*@SmaN(yKWy+in~G-t;!wE-$Y>eC8y+ zwzuh=d__UoNlf>C>90~%H$Ka7H*qEdUw4>PO;e##a_8UB6f2p}uirTduMd~|>{P(B zWOKs?+fcv6#m_C4nH*L)a{BMIRecvK{BJEf`ONv6@LA_0E{D6!qpsb|nrB_{bMis9 z3mQ##7oT-MT0LvSg|+6AHw90w(q4UwZ))(Ki8W^1mObaZBUoc_^JCkSj9WH|J1sb+ zij&WDS^H+PowYt~xOV>PqT&{}Yu2rtHrW=3&4R9(M<0<^c;?Dq_)|G^ZTr@9w#PfY zPlmi$H$gIQD({BdTE9GgKie8=<#NtF{Y!8c|HY~QmcDqO;~6~T=J#03_iTH%?GHJ1 zc-vf`r@wz+aeB6Qc~Q!HR%eH6{9iQN&1#EZw3_^$AX8cFx=z~W(4I{XKkzz!cs?)A zW1rp`C*I;MM>lQD5;5d9H5eE!!&f zBPCCadH#6KxRrRuJazHC6&4l!rKuZE8Yf*n-1Of2z2&*nC)s!HFzNZRdr@Y=4eJRr zkDnEDX${GHqsN%FQ0j5T4g+O&e)F0qei>Ou1rncm+*2q~FvVB%hNLgF&)8tis_hhabs&fk&MePZ^>ME}xYPH?= zr;)}<9_xq``FVx@tZqx!E;(_G`JL~YO&T&0DuF-4`1o!X>E0~=5opXE{-5D>_s?aA zi#_sETu=N|4_7n1$-L$M+HhvRIDI=^JFlkazjUk5p1(7n^u0>{w7o&K6 z6U@aQt!#<9F?sf?n>RnXO%IOFyy_kP-o@$Od%K|N2HmA)C&Zt;zjI~DHNOLjNlWiO zvRHHE>3p6kpI)ByTW7O*Ka1JfkoWhTQ*P$%;6AxKc3yb&lKa}HRoO>lr zPPN?3IbG*MHe;=OYTuMaY0IrsW0zZ%7oU`D+vc8=^Q}5YI7RWQ-wBfwoznAGc$G|6 zJNt8XTIa;A^S##IK`v&T_wLOgzH9YODF4+1d(8d(0I)|9*0LqON%S z^^0W(F2=5siLyAq>Xx7+hx4}J#j7Ny+c+D>NXXq|K3Okt>Vfl{o9;C$6!#yoJ(R?q zBh|uwFeT~P8@8DYEoO(ZKNjjMW-7L~^Vp00oEPNIbnI|R#Aee}cNdcy$tvgXbDo&Q zNOGJPuAVzfO2%^YnH@KlWwd!t5-!T?TwydZ(AoV+$GKClFUkup4iWLOUfgCS=Vha@ zqwUJ&uWNk7-LqqO_FPlr{%EyH_Ul4v9=u8NLM%lAcBQ+8Y z182RR)#CPMzG{=;$H|E`XD$1ye%##H;+xaZ_I7n$c4%YQ+u*f==k|21+qT6#^Ni(r zRbPL5@Afz9S*yy<%wy+QG5)?Two=nV$as=*q^&zTPLAgIdMVx+C6QX zT#r>(zUE!inEYbFtd=K|=4xG$vDVurip>7GP);V$(QHlUoXN|lMi)&t-Zjs~O=?EP zm*;1*ma9#2Rx2;tea%f$_3fM|YMdKSFA_as+Wng4+olaZw-mN8$SdD`K1*=cb<;!9 zLZ5cccDr~=@qKPubMehNyA;>VWh~Mhy(cCfS^h}zVE4;BmBS1CmVR84 zINx2`y*>K)l8OBi$E4EM-m{DI{IRC8>#UCK`>0#<{_6Ril>E=I$zWr^qncvd>2-T1 z-(Di|ajE0%q~hayuC^Yatru4|bKId|QK*F@g z#nbU9xig;w`F~ooT5W#yLp%XSLODD zZi2JLD`ro;>U60hCvLmM?}-P_H`Pr(p7i3#=F*t~AzQ8_^Y#d5n`ir8oG~YOcEg-m z|B}zT9DY&mQpRmDg@80*k>E9tR-8rKlbN+dB!o_PqyBh za3eG~;P%>7p}LRda;qFSPv^hy;=J2@OMGvZSLAP*t7rGby_vYBU+`hTo11eFq;9X% zdNb>65z3N~g?fIkHJoP3rdMH>*mgeey5cT~Xv~^?CCo-fNPTU!q=Y-h0pI zxA&^UPZ*|ca^Jl1rsGDoH9u5eeY$nl%$HB^E=$#&cVVj*`CD>7%~#d?Ub$GYc+#p_ z{c`*FA7uB=I)4A~=g>~u)~k8bpq-j}jOC3jCTn^Y`V)$vt5&>mHoGW2G_S%Yx32 z8}I!6Q$jJl2mKJ7Q-} zy>Mg~XRq39^~?(|e6#Zue_TyGbJ)3gzR+AIli2LY1lNfNUfq%u*I4gUCuecQ%5=`< zGoSn~-IoxQGd+;R;9SvDca=|UT2Dep?y8BKLw2q2di+Svq_)J&Wb^m6Zap~>A0qCq zp3b(mPH>}U=VrAur!;N%ecD@Q*8H6LNn7ZzI-lb4AM!JV0uo&hzq%`Oc5_7FvW2!k zJm2g#sEo9|P;jPo%^v$S&s{gt1APA6+3n7B&-dJkncLFeMPL3sk}W$?MxLo@^rO)RY^v_Zqwy=t5^LvWPQZ^ zy>pvyhx>2WHEqXD?=Aj*)Y^Z>*;X;huk!mee-)W2ZcsjGx4NlrPH$I^j*IS%WR<_V z9Y;ATc0~8&KbgCvFk)8Wo3Fm{S;0uw}Mww5tB*u9{kv7Zbj$t_?W-%CBys zq4d&y-d|qKG5mFK=|7);KhzzMZBw``ulAqe`lODt3OAa)x;Lr6J}LCxetK24g1D8Wsgs`ZoL!#+;(J%i_Mg*r;SVVYzvQ3m^PC+`~M3cYDeLV&@)>zy~^StFO+9mLDf_uuff1WqystaB)X)(NM7WAK?tQ)>&d=E|K{SF(r7}Umgk!tm zk)Ik;W(6C5%{g&C)lNcPaJBI@i&M#yuDP|YOIfv~JoMSaY3D^9Sk9F_5m=>AG3`Ul zamAxT@`p`QG+%z;x@&fO>$I@Dfr@QDTi4B&)$LjTA!TQc{3L0$N00t4J=!$8+CGQ* z=JS+jhdImA52#5=eRzBAd~N#XsbzDX?tU`oxRmGp>>|#E&7p5jw`_KBD$n)2sdhH& z+QYwLuW~$`(yty4SYQx#&G*P>`&rrke|&+;K=y#=5Ff`R~Hc&TQp#xot+bm9RZt8fn+}mIcUMy8AY*IC#qQ*@075 zntclRXOLS^!I@T}6Q<7D{*V3HotK$A`9ewM`Huo=|UM=(8AuqH-(kyAY zcfl9O^GrJ#9i}YRxmcig_2d<~?|b84Ih+tp+Zy72Ww~l_s=(HzmwxVk)^@mbj^g|& z=boAzn0z~AmC-z>dmcOQ)MkiH{k?KYu-m#PoG0qC?aqWalqH`vyl8gI=Z#)~VML}Bt>CtWir+vycHNw4vU*UKGU)@EFZ%`-KwWF2+4u@_y{@~Ys&_jwgxG;BZYZ*8p& zd}O6=@4E3ngBbH|lc<_EvpX;TNcbZsbM~!$&XkN>aCr^{eRk9D=-r0Ok8{N0WmPEWh({r3uoq1mcaj?RZYzBLt{G-oK-+{bcL zK+0!&o7bNZi;94^$$clq0u65b5Pdv1ZMS7-aokLqjaz5FI?i%dNmZPW@3MdO$*MBG z4uOY!Hb2!~%-~7k()m=S+}J4|p}P6mUJ=`kvqd+}Kf73t#cNOAsYTs0zbgHDIlX*V zE5F#^V1`vGr?T|=1eN|ou9>!d%IBGmzqGlM54ZD7zg%B+Xum_)AMd@1=@o^u^lOxP z-)z2p{B>x^t?0u?xa!g-Y8O3dR*IUqS#f4?*GbFhj31#6GYf1kFSDEPuX0Q0d+cVj z$Fn9k8tg2bYhTpKCz&1V$riotw2CUfoqFq!wWmLQ*E~68^4>=;I!wB9UcdXWi}C1I z!GM$>>83oso7j8`-b?oUQfK$sR=Ys*-0u~$T1)QqUb@L$x$MNm+RpQvZ@t$&F8I0p zmeKv_=;Ha=2mdp?X=a@K`Gx%rHOsZvq}vWo=gUq!9y+l;&O39H(SzBYC00=^3!VS| zzP?y?jdRak;R9`AjElI-@6|opsypMbgLUG}{)^VUi{=Xcvb}VD+P!(1XD%#L-cTer z(Vs8lkBj_^gZq!L{aqzpk|OmW@ob?~ zDre@1i-|UOdNNeD3vyk5u;|g29`~w(%@M`!)1ac*CQyhq?Y(W77kajoqE|?>+s3>Kejtw zee>tVyEpHaJC}%U-E@l~FSV2}XwGlr+|}PF-|on~8uwOw&c3H&{!+JmPMo}%_tp2> zBqiP(b0qX<@iqsmq_6&-uNX0V?tIzGS%NLe&aP^omi!1@=cANzSduR&+}h?>-Rcwx zf0c9EZSP%VITue`!M`HfGAbd2UyqJ>2+0XmvGnEIX9N6-sPUI^48|X+Qhsk_Gjxw z9=4}QUozI*#if1ggsw?;yU1VJhQiLa(mQWXi&)%JGuvc5`&QvBsUSIp-5!>gbDyQ3 z@-qJN)mcnh?Qr=$5&izvU$SSY{uEu&6L(kc`z`ram+l3Te~cw>oldb#OnBiDwPVe_ zx;Hz|x?X(WbfaRMRiXTe&s;VfH*#|_X6u%04oG^uqD#rl_df&AR3YUkSw6Erj#GZJ z*4#{f`uk6?hlp$1`?#f+Z;VPhyN&lOJ2tJ)JLPS$)`I(b8D}5W{%6QE3ye5EyS?vO zS zmQlsx?~$jtx#ru-S2O+!3&*d^dDQ!=Y6b7b&wYP?OnG)LOM3t2cZFTgzMT=D5O8-v z%zMx2dF<~^x%n3-UX^THakl)uDeo-NHa;!c#op<679P5oQ^Mn;A5}Epm7l-4Nzv`F z?5<5J1wPH~Z3Z7VT&uKw*STTg#vK(iBAfgxK7I1NbNJ{XALcpdpUi&AmnNkqpCWja zZ5#jMW4WiF8!bL^$|K&U1~`sk7M2#%FZaes--sJVB2QyJrbYOt0&Kki+Y^f ztsy1P-geb(+xL5mGAh;xCLP(F^qGU-XODA5qOmX=--d&?6jtmCQmOT9QMuL~YtGwS z(8wn+w`J9&o`PQ|Hb`cj{deU>?uvt5x9&*j-CND~mg%#&z(qTFlkr5iU3o~^8TIcLthu45}YfJ7Z{#d)GLohw&){XlXxtr$lY0i#v&3o_sLU`BT%*IVKPp#jZ zogZ)}J@A>8)*T-A_}rP+%Xc!|+`8%P;daw?4d0ng&R=9SW#`(($p!an!@k8nD95XG??OA@-j?H%Mk=;UOGW$DukNgVG zz5K;VbGh(K=U2W*9d(cV^4MLemR#U3(Vk>}Q}gty_TGyVO+POFb)xe36`Qz@&b3F~ zzHa#Z{iKmyTSshf{krrQGyd{CuSuvat~dEEaZyqzZAtRs>aG21MV5=+7T*>Mn(eht z#OP$zq02>!f{hJTUMy34&p6BCjZd+#pm>(^J2##5tR&}mA6L)1npvLpV1w`8Th|wu zzLzqviaHnkYN5IF!>zm4F1Os%)bv)wd*gGXbFv~872kxHoZa<%Lf!n#>h5aEx9XWW zE&>LIvRe+$nc}P7z$7QT=<%_I4j13#$v8^8e2D*6yC&OEcp8T;r zVqB5(;qSApeb&yY4^8{FnzK9!$Vl9~vgmxO+{=%3+-0#gvLVl{HrZUPEa06pr&4*- zMX}l2u3Xmnb2;UCu<>ej%iGn9O5Um8+ETv$uH#0I6JF|Uoq0bOJyP=T=F2(tYMSp= z*=ZkoOSimjO!_#RXM6DBSr>km^-8kcdc3OL`S=e%yV|E~svYughiv}jp1N+&NlDjz zj;4Lx&QCYJpCx`X$acPka$9^=yQS@2>%D^29Sf)LuYGN3_j#wBN71{!EarqG>VoIW z7(>~#7wvtVSGm=>wL#iXIv!4 z=8(`ekS#N3nr7oHI|lwJv7N>^bM=+C z)1J78^6{}r?=xJLr);+SY*N82FW!ppJ)dVxO8#=#bnE8LmX|6;&Kk=$-f$LL$UGtN z%NeF)PAS`LGW%N|w&lrgR!N)Br4#gGt?lgnBDWsiJv-4i`_`q%-FCLZ`%kK;U7D?P zz5B+Wkj`8G8CEZ<%-COjV?WES6eVt>vP|)_yq;z2*6hAK{m$GqU*~JT?d)ddy%6t_ z7ymH6i#hmERrCFAzXWGX>}@-E?ADoW!Ot`qzAb*XZTAYx{#1YA+(@tZswJVTc4Sx| zxb=KdjqNv|kn?l)v#`@2QA{BmaXmATjLn^5>V}k7+hq2j0B<`q@b`#hK^spI0w0hP!8#dCpxqNpXV8!B?%(?Xxls zqUs829xd~o^X6p?pXU=Z3BFvD#>C%~TC!y4`~0~)bFER~isd%PjEghvyyUaqoiF;S zbXf4pO z8nMY9T~|5z{zRjO~ZEQyupIoW&8W9!*YaSqO9awWf~ zALmOfW7wT0-YRQz&7bFa6nm@nZ)eVhXNvc_tBQ-9FbPR_2v(bTeiD;_ZGd5Xrtjhp z?)+?$rO)_9PP7FT-Qvp8&VDdySMo+vS;>$to{I)E6b=htOA(34>HHHM>z$JNK5&am zhT@IqyFv@fRigXf&K2Cv|3P`_Vpq{4w|F>S`snyZE2i8R**xo-d->vR%;}0r3trSX z3Oq2lyhhT7Z4%<1(f(8_PopJnhg{ zvvX>Vao~c(bsN_fGM@UVk+{)0SY1q7ExDxIeSxrTbdlVXQYYmProJ2gGq}7p=3IV3 zYu@tdp&dsbJ`Cjf;JQDHaqiQYh?#dP*Bz6TyZCO(i^9d1jAf?GQQ2k`td$rWugdOX zll8!_H-Sry-?eN)jJiaJ{) z<~e_q`Hsd|s?SjPB|Ue`Irh0zt7Nhg52jr{G3A$zUHc*Dt8VT49v_MciGTBZ)^+#l zrR!{8E^e8(Kj!Q^9lxUw*WLT@tTB64iucaNO;euX!{@~m0w~pEOPQ}_7##M*68=wE4@*_gRINSAJ`{Le|^yj~S zO<$VHu}S^S->LlE4OS~Av|R~2e$q~*?8*(lWh%XgS{J!IJe>RWra0@1%{ezxgDciX z>*vV?ES&0cro?7)tr6R5H=8?Y_BY*+XMEPN_IbF!eUikV0J)~TA33Mbc?-PZPC1@( z)9bIW)TQ)eHNs2=(lle#OUs}J5Sg$nm z>4(SHfBt7+?fB0y@5q0KpIYjdwUnBFKiDY$Icopv{|xH?8J7RhsB<;H|D#6GuKmgW zrS*Zoum78Lw3fa0HS_N$i!1-gUs+Tuu=uZN=chlHYo>p#5v;lJ%S-)I{Qn~ingR?= zOrYCGnV1S_EPX}eRS4?@$^s%gQ))A*x zy*;O5gwvlEb})86G48W%+2!;Q`kN z-Da<>X5J}NNOVa(;&CO(+fIYkC@h-ynLyT*Y4%&RPPm(1wQ3LDaAxc9i@puj{7V z!{x+~#d7yQgOTjK?@cW!3s=+}-V~>*`{>j8Lrt@$Yr7bDu-v~D-??UuQ1lkA58i8Q zt0bP8ZuHha(RN^kXRl`aT_=Z%%gr%fdM5MPFEI)|(C2TI__F9rb;Im`&Y{PTuuA%< z|6+MjZ~5}#+IpmO){tT~?D9v>Rfq{ZWLPF2KS;(tDEh=9%S~NFJ)yvGwqSzluzvMlKHGm zFRyqaruJUqt?rT zQagMtMS4;8Z9iJ>(6}?KTYL)H;7|jiN{hhIkhw+4A@#JUf(H~i26CA$P zn(DV5(VzV)vEcIhSNs{%Pe?Q~Z9B1gt4`2D!ChbcR=TT(sXn)nZ+@3(%r6&WCX?-=5*E;t<`$xc6EDPpYUMU<%TPl zS!5&*pJtjN-M2uT)rZ?m&*bc()zN0guWbLCH0*e)bZ4rY#b3_rft7;Hhh57!EZo|F>S1F$4YSB^cV%1o4=+<@**PeVqSJy@flh51^b2_(~ zYJWWV=A)oYzKFknKD#-Cm~-t`h8b6zm`iJGKZH-2KWB|2VLbfdHM5eEd zS$bGjpsA6en!CNzRpq4f)Cny$kB)F1@se9ElB*>k{k>_!sIVx zm@X6-rI!%HAb5s>gUM0Ue$4@?tlO@5a++{po6UEok~cOj3l|!hu>EIfUgMb{usFrKAffU+kHXnI0!qD& zId)=Zmn_qD*hH7jKQxOy}{ zoKf(}kM)C{*Hm|9@dJ&zd^smy9tl=Z4SV#vF`r}p)tx7s5A-z)7F9fWX}q5EYdl}t zG4BnHjdJ-6#Vn#cl2YOm_StI(yKP?G=j`%VB(lYwjY~4nRWW_j?ts@ZxqN@4W;RvD zFDxi>i}T2vY+%#4)zM7oYVsyFwo8E#;!}(-G$v?&a+R3OmJ@%ZZpj=|$pgKb%~dU) zrP&D|c^7!;*6tT{bWZwOWNqKEn?qpF0fqc$t#h=D{_T7#n*8~WQe%rl%72CyIh_kW zZU+2HbEK6TUj?pM=eSG2gGIsR#D{{)hB@;UjH3(YIxq6$uA8umFKc$ZfH~u`x1XjQ z&`?tPiSgxT+ zFSsJ;_-*AoXYHFFMVUwYepXr!}j;PX4Fs5zjM4#K;>EXp_}X+3|;Om8Y|9BxT&S9 ztfRHl>J0mFcM0i3W(G5F*j2XfEw*&I(U8pZi<5Qcyg70YEE`i^Xt}L;mvn_c|2rr9 z+z%nYep){Qlp&T7Usj7Q|#9Sah?7b=(-_%C_gxwcbf%Cz~*k1!-N zFlC4;tj*bf^-#;iG}9REpHA!wI{G^vN!<!Lu97?(~bsSlVkV(I(luFHFbTw%U_9cL%9$G!yc{eXCG+_T~QN^t*O=7$ksc3 zL+@cG#|`DbTUaGz?Kdvw);Q4Gw9K}@B1QLy>U={3A9kMW0!)2X`g3KD`FzmxKXoSX z2;(}IoKm*4hOK(?iXY9bZg9u(sN|_sUtnOnv|^FQw?-0;iv| z>!cOxgH`k`e%X8Mso@cP6#q)z&Ydr%^pResc<_vrRI7%%4{8oMQ=b2|x@~l>MxR0X zh-ruW+sc~@G!^Qb!QTe%-_{}iNi0dzUJ`5 z4=s$x?cYM+s5$s+xf%b-BXX&Kp0&rGS#)=?*XAS+ zn+1(?QUl>rkm9_rd)GLXsGaCAJTG^xrjQ3|W@@`46 z653JSyFo?UXIt}y_II7T7@QWT-#sSd@xh@;OSxF=(L9#L8^kwBrk~?z)z_})c&Bhu z@UGG~Wr43B1)5JOyO@?UDP7F_kju~gC}dsJhSD1;ceMQ!TnuCyPtBH4cTXvGFy{8m z*d|`vlHI|RyDpkLz>_1x_QatpEbfVmW*V`!FA-^v5I7p}_}#;x1|8qz4xV0T?%x3` z4=wpo-Pn4m;7fs!s@vsrpI5b?>)?_PR+gB-tA4}6hH*ighy0N!Z!rhiHI}o|&$tUN z^EUiz<0WOHc04spv&OJ~kw{R$Om;`sl?#5eNHiZv<$hqmE^$Jmg{{9y#Pq52ty#Wu z%a5?KT3#!D$-|}5&A8;N`HUy03yw1EKCF30zp*coU088V!1}999zPTkYc~ov^q5`L zbJ3GvV%x>s)X4kx&iv};1R>seJQ_lgHcbCo)a>2}+VC(H-{-i);OF4#a`lJf<&EF+ zBGz<>bj5XeWx6pQ_HNzbFh$8-@S^;j4Q$L=yaya>92|sREc_ZE7$&ym!?U~3H=cjS zk}zXGckJWoJ3Jfr*1EPmnr9HRw0}ZTRP=kEjXGfqpA>Yks;VD+t+$NBh3!8>ldMyO z(=q==5BOvc*fM5@j2_-wEjS`7FGdiCUwIv6JN2o?9D&8@oR^L8p|{xwrK?iGn_2NGi}QMbvjHq z@X4%V%9~jBR}CGDB;BjeEm}K`ssB)AV_lEq_3tLm3~~Ev)#fec+3oNzfziOgs`1?S zU40yt{~7cixGTn&Mmic{_&qdagzzd8%7cFH5(=M z8hE(5OVZ@ri9TMJK&9myw#Xz2>n7=}X_VtXP;i-kiZ8;j))8__~i57 zV}BM1dl`Iaad^vk_LKB!*|T?DU+)R{-jNx7Ac674JC>PZ4K{_HQxCWF`+Z9Nd*D!i z=8;dA+c`EWEk2`qcXFWOBaImj2~RIEA4oa)l>o!|Gz2Bg7SiwN@ z@clFkZU=Se?_7?Gk{(tC$Y>+LHPRQDg5H}8@7 z3j;;p1jcm>PR`-ves|*Xin~VA3We77hV=&F_wKHLrZxBKuk)XIKcv6>EYo#=B2!b_ zkwXG&+r&B=^D-vAW7fGNe?d)_%bfX!!NT1eDml(*NbxWJ%(5xuiRs%W4$h|Y-LJ11 zi1~GjT>Mv;pzyA|HS!e$$4m`t{WXRPnM^`5a)nDZ1YPPnl(MZm_AUP0!|{si9=mkE zglc^u3!h`pL8+kA(G~hP8P4b|`f>4ovDBRmhv-j7>MfRu?~t6vk; zwhPT43bxf=broN$ynb|IppA(cy>EyV5yV4*ivQcGKaL z@OlB>_mk|la#{Vx4wULlwm+xJ_@CjA9jwG3>MYX7MoRX?=`LXK9e};g^3;znv^?rSQ=8-kC z-qZ_BR^xA!zmgNfac1Iz1O^xHLsoAb7K}{M;?QKP9eGXy987; zCr@6#{39Q8liXSfj;nP{+XEter?}mmC39f1+*jf4uNWGb1lG+BYGZkrZ!qJcF{6IH zAY&rKHOr40Y)z}qMF0HH(9O4%f%!}p|Ea7ilO*4EoLZq4BD6;$Q@~}eOuOg~D>qj0 z4U?t`s4`{noxb?V_(sDd4sM0hagNQBGnWX7yQkzC>`W)@=CR=STZuC{+{aG-JrlIb;qW0v1-a+!%r0UttBy;bbTeEOr1X!C ziT!euSh~*C^#Z~hM6U2T39)fESTT6Ky(8>bX)hQu<&$CnXQT6xodO=Iybcltt*@28 zc4VD)JY&7a;XgwGQ%FgZ)Xn%Qk}SE=eN9#M5!_d%+Y}Iqn^gy5}C) z;(e*$k|5(Dc>^Ki^%os?sBL-iSvu|D(kkVqhQljQa2A@0`^R`cDBu=8zGm}*o0a*S z>e<-2wkx~VzO$Ip#r8tRujPzsFW<9;49zuq*;@>o7*r%x8Kgh9ut?4H51RKdd%5Yw zeG%sKSSBo6c#PfQ$mXMRk&RlLPOHq&7npQy6624EVg)^wj;t2W!T_Evbpeiyvo^n5 zzru&7StL^AUO3#>7iU!2F0bbP&=64gv-OdXfk{Pb z-_ibWf<_C(`?u6@dYC#vQ$a#-Q|OphRHot;0%iGTO(1Bc_8tU-*F9wI~Q+DbN%Tzymvshbz=C-K;{_6gp8e> zj|46qFZuW2>0^~XWtMgi<9ay-hAHw3R(xRCo_$HA?(SlVXIG@yul}67;PUnWjLZL|6Y5sp@r^&vpwO_sl9NGpeVfdJjoJJL4ITnN+Yj+Ma@KsD!T6IYb&tMb#~igO zl3a%$DyWDVi+;Q9zvsqADd$C@PY$>;6+TE!I^<{7#+1-l-Obpq!P&M(!u2x4-CRbG z;}U(pr?Jj<^*Xwezf4NMc=3)huS*`Wt{QTo@&Y&1);*adT&48)%z`w#hPx@p4*oLi z`yvy=kgKrAwl2{pBj2gE`1#HZg)M%(@-qVu@oaBB&}N`|)8(JgtA7cttereRt1a|3 z*i}wEbXL+*ljfC~S?e{?ytg@RSE+2YPF_qxazXyX9Ue(nPAYimI4hpuxG_z^!P`L7 zOQWQ+p@I9vA;#=A&%;E2&y1g~xY(?q^Vx#7thowxJhGhg_~O`iIh~DMctci+V+mWu zeviJ=Z50_75BX&E6wed|_P=H1RQqY;R$^_gyr6|qMf61VD~=r#CS6ZrDOh~`si0n& zSk)0}o{}VkvywjN4$bE{b}NX-X{FW#hNeTJAB9yeOjEG0kmx;sgCkvA+~r9&TjRp? z<)uIWGhEncw#3LG#VIHK(3IzDyCupPUf8k}B+TZUv%`>ymC;kZewDtAL(>7qi5gXl zxl8!=a2Ry=PH5Z2z^?o$L9%6w_+KX-#|JA=;hCf zQ)t-4@NQn*DVY;DENbMh9A#nSWzLq<;@k4B_jprAQK$9Y%I4s@*3|DSj5ru9HB=&{ zI&#m8%}RV)XfpH3SH6|a8YX5EWf3P7%lB8de%K)yu+LDXy8Y03L+MvO8@P1#$YwBa z-1vxrQI%P3hS^^iR+mRNq?XQnCs|W}i|-o44}PBCRs10}ccxUz^cO!eWlY>7?|&!3 zAYjSkbuJsc&K=(P#L2_RWP^or5)%XC?X9o>C~F8ey02gVNbtbgr+l_HP7A(H5NCLo zRKU}5yuwx3N%2ClOkmid_8kl!s}KGaJm8jbrdWt)&$1mIJ|fFI?&w+zw!iqG+Y6>kn5ND;bN5-AOG8-<8)cYYxAax8B?TY zu=}1{P<4LW;@*8XE8H|rv)e})zu~xLrx>{8l;V1WLlYU+{7;6rBOjP4ty|R&Yf{LS3$0pv-hD`3sEO8seTR8V*{g`VH=P zd2$J?Y5lcO(QQYf`5$8z4ta(JQXe@zxL@f#Ha!rOcE&K$?(ctw!1rE^p})El-aP*K z_{`GI#?qfp+!-GEB(IDpXprA7ts~R^sCr761k(?>g$E^gd*>^!jHzdE$bJwvc2Q7&@wNt5+9JL5e3cdq)ELB-eB#5nM@3SUWu^GKIIyobKLvEr#Gbrb0^;16D_dD z*wO0nQ{IMHHigUVD|F6(koo1L_hQ4;6HbjRTY?oF1fHcSSH%APKCOe3yXw~}Io6Jd zB+*?z8`WlRcd<8>kh|V}irYDe(bjeyOWabuX44sOu8%Q*FX zTgAU+*F@KMo)Kd*b~JZ8zShBPYfG&YQ<_+Z$;Oxy91|Dr?tid?bN#g-k+VOuM0}6# zpK?VgY9jlj)`BCBoD2rh=R(Vw+yygkcx~|ORax)M$aTc*qf~s|od@CHzgr$?Zg6Pk zzW-kETw`12@9*CYlVACK{#@`RU2xCA32KszKV2BMMDz(|PvMrF#Gw+w_(9g~wAzUP zbEWg9d}$m_IWE?UTQt5kNJ|y)9%c|?&Q6s%Vi?5BwMH)Cg?Qq>6%0vs+_n<#L75GK z%=37^b2>^a&%PL+A;w$!H_vYYvu$%j)Dz8F@*+&PTKPnU?q@hA`18E(n8KB?cK*%< z3(rnm%-GShpv;h0%zK?sOVR-%V^lP#p$H$A-0AhDl?H~&^z z%_*}7i79iX4oo_;d`oJd19Q8mR8L`SA&20dC-xa45ezol-As6rIv#CQ+UGi%?Tj(E zLHrKhBVx+J1r|;@d?sQ`dlwrlQ101wI=omUp*(qI?%avRH}u4dlx8{IOoG*%2$*lBnXwX^p<{3lN8wP<-TnDclzakvOA*0aRQt4%Lv`KQt=OYTMSUC6| z)CB|_<2WE@`FDeozJuVlPv6?_G^z9PY+a&p>(07Ioi?&d63bbR-8>}s{-fj$_T>2% z1}qxNQ!kkWvG+P;q^>9rxX{`0v~!Zp{@32PQQ zC<;%FKl@0CF-Agia=(4YnqCj>(+#cNvAg69?>2LBHag2VaZJc~E*GKno5fUT{+5%0 zrgIn$DKQ1CIeWaS!{b%Of?5tv!?OYcOPkK+Xr%QzD_d-jJs=?T!)M#|RZSTNYsF9L z%W^2ZXgB9;3uzEpwxU`2Ooj>*tI@j^IujG#vA;fW_$Bt*fhQ~;GX|tG+`RGo2v^D^Z$1U1%ASW+vb&6a->shi z%yCDOu>1Nmr{tH`Kizm$=H!L1N3>W3Bo4fj;khWyHRqguWxlR%-GpwJsNQS;k`G^T z^=z>G(z36oW6!z0X(v2v_3m0sVA^zL;rZv6*i;-GJ9$er*<5rAUKG~fslLV_!0uvk zIziy9n44t-yE@ZbMHeX+pBpDv)UEfBwqZ>WdJ?q5z`#stnerO%$y%*$8Uf9jr_zpm zC{$^6p5bGP948ogeoKki#ED%`ILf{^c&(9^NHSn6I_Kxrda#4_ z&Z-NU(bm(&_(Rqdxfwq)N z@kq#)?|kb2?i6x9WNJO#A-z>Y&-3}8^C9yOGlr;n%SGlf++bljq3571%HU}r$Cq@n z{NkRo3duRyA9*KAG8MfOZ}z&E#K~5wB3o47!P>b<-{Fj^8q>39DUTlLw{G2F&b)id zsv`{N%x^I=H8WmNGKs5y^lqJjV&Q)VR-rTQ?<(A7u3Rw*Z8n*m6W+i7j>XLo@EJe{gV78TP<9repyYF}>= zo3y!maOsGZbE`W?zx(X zDMwQh**1vT2Rxl@xUc@fg0zPg9gXZ=$pY6jTUR!!J+|nPcq7!rxs6>&;>Pac6~{PS zf*L!I;damik5Wxo>_#F96q7$iusovm{EUCyD(BGSjjnGmp+ zweRm=EGqwuczwn>o?W`1^z4Nzn9Sv}5-z5E|dnVh2vOSJ0ALJMs9t z+%F|H_x`C)soyhSeRWI}Dci{1^|k%<^?$ne_#X*z+G@E6bItzRF5b{7vTgnE#!{!K ze@ROpJX*YxZPmtz{6`YE%w(%X6vNaewu=UTsK0OC!Kx(6|5Tvq#0;Ysdt>K4RAX$@ zSoZDCl13h$BX-MIUXt2a!^1-|J<)_Mavnd#`{bz{VJj0R6yYi$-6jX%2^d>ndHcz)K zQw=x+8YC-lBIHp&Z}`=E679p8o%0zb;1rHho5ab2l?$a&pshlTV5mX{AcAK7h| zJ=3ppN`!=1XPJe;lXqQJCpR`VCovbSX1cS}pufwec*bpJ{IDZu@`IW_bdb5OzsAGg^x2hUu4 z8vJ{OO&4QPe8+*0Vh1H0l57^2JXv+x|L^)!W*jU}zcL+&5s{v~ZXpZT>EIv5oc~M~ zDf2Oi|L8gF;r3xc+eMMJA2~8~55=m=F;&_)?@~xm_hWsOs>i@`FJ3lAWf3EzWDB3d zWRJ6*0&A8szRhs&aCEb9KWV;gzn}8Ns)USF4>-7O4_8!y8N(WvtYPId+ z{AOS*RFKgqWg+Eq(}Q8wuGr7UU8yY(7+GdKp5ZfvxqfQZ{E911trGgZzkdjIi@#}7 zJZ|8_E5N`NRTGmhwyM4@)3uJ^&G+H-WPw-b<-@(G5hHPk#|Ku z_x@EdRWLhyMHDPprYrRRZe(TSk-Czp8lK(oOK}Ca=p|(Ropq1gmu81pcYd>1Y@Yd_f#Zu!qsxMsxsD7*3?V)9 zk6*G-w3C$bdU{Y{i%h=jlHV3C6S$LhFBe$V>A}vRz>u&gFy+Iy#vQv7(z(Ka%CBq_U$?L`?9~ z0`b>&F=`!$uZp;L^b5-IxHnr1aBL09=9?o>D5qe$?*h-V#<-0VA14T{&I$OnKq2=B z%YMU}Gmlau>;!lt6gO}lusF-{HG{Q`=V8y`h6esL3F~Je1*_EztS=VX9P_&`bpGfh zXCC1@XLm5mFqiINP-S$JSoMq7GU;GKokz@JmP%Lo3BOum1T@(74gWLTIN-bQaL@%V zLFY4<1+=oHXB}T=|LvfOnsLZihGowcW*l1F=2x5+I_tV%gCxV%>1LPaGwr#?dTj8O3obDHIIChEW;8iFZlY9$SKC}icZTRCF3nBLnjn86>}Ix%A73Ly{1%ua3B zEmIXvzEYAT%mNJ|&k%?Saa6m|v0>&yXx} zFlhM_P8nIBZvr)o6&22MGqj~?zxf*Oro7;TpoENM%PJ*@7~v%nEo{;KGW7wGvW<)u zz5GphK$ycE`iHHVQhO%*C;VEziUo63fi@8^~_+@$y&g33{b7 zUG#-v%eT1iEBYRH<#pz-P85+i5&5R<$MIQ>rulur^`VIuax@yxx^85ORAsW^vi@1< z^G3*SZjqi|SBnGR#m_U|7W2P7 z`J+!@L&naN`_CJE(YUAH@QQ)|iEN^+|Br@rg((v|Rj%;8uIh}s*(h|_Se0>(sATo@ zK=nt#=O!?kzij2uIr%kQ>5A-xOegIXS}8#elP4{kSVh)cdyZYaCQgXd!E&6eW)rD1u@^2n!63i7$aoFdRqx6Dd244b`t;vSK z=4pvHO#&AFbCMNMkv3V*apl0#CT8wgt-5{T^Vp=nepoD#GJ92-@w=UC!XqryxnD9m zO#j5(6cwg)>y#+lj-~P55w9NDo-T=q3;NshD$6=rS+ZQp@4fZ*o*iv&+`&x#dR2md z6hyi6e@Ga47&S{QnyacK;IsZ?&_0RR7j_&=V4Qr=uE2gG=j>UHUr&jzD4FBMpxIby z>uj}S>ICi|{~4w-c_p?yOb8HLE5{@AHkU(EPuP6@H<#KJ{|CIk9at)Sw|xG4Drr|{ zz5I+4W8dF*l=2=Ne(TL~^kK~1nfuj~IC>QsSR`d0ypBJzQiZFauKe$LBlfPxYrNW6 zQY>}&eGWCw%4B?fOv~b_LnaSnR|A8HjtakA@8eqxZ9ErDP~GTIZr|-`*SwW8e7Z#uowKrAO90{Nwia z*h#Km{}~LtG$zRBI^`Y_I=X((X-Bidy8jIGl08#$_FneMWZ3j4F?iw$3ubMdpczkJ zzBMRotSbC1E?Pe8#ix=ii^Yp*?0l5A ztpE8ATLJpJ4Y&N6A4! zF=p?tS3&0+7ADlnI39jsYVpIy#&NdmgoOLuQcgW?&Qo5!+O+UuPp#>9XT$AP*LW5@ z64l;#K+;BwRkpyB?Us1xRgP7gTqL7aCa>>idnm!MY|RG~G3AMu?mT7iUBliev-ndN z-}Ba84bwKM%I7I|b-7p{ZM@;8FS@%!H-uj~sN`yokbs&z!;IjQlU@egHVZX6p+9BU zyP15CIC^VR+UqC#i5dDF3cK&y7z} ztB=V#NFNjAn7}R?yRiQxtIo+iVQprHI;=jEH?v(@An{mCVAFqw8D3o~D?I))Se_0S z*}QMjoBs>~-K_>a=8|`8pH+N+Q2S+#agyBbD(_ttb<$2vhS!qw7ry4tRdDM*vFFb* zCzegldX|A9T6g)BnzT3+_@w#d^%c1J_yw;#JZ%}k+IB?Kl&euq-1qK^)-sow)7A+* zm0hD1&9JA`ijT|oMk80tLj6me9hCteh5j?FWIywS`IeJX=te;${^cp%uV)nH$u9WX z(a>7%P~w+Z)39dd*Awsb*fsi}c~>(P?@1AS6yzh?!sgbVCgw3cyVTvmB-Le+WQtj% z;V}_iN7l%~uh~&;j2uilhKM> z<=l~+n_`Un7PK-haGQL-^Omi|>O4cQql}LQI~L7V+F20IqW5O4$kBrgyBH5FtY~tu z*l^e`anh8d*B7jD(qVX(X22jToWfVAzbIk0+O$bc4-7dyKcw?Lh}F#85YoKy$A5;E zb!{@@+OmfpZe-$8ThG(sEAdIdBFduf0l(h~w)YIurv#MS6?4P=dm-d z{?$HIwPO4v<=%VHy=(GPmEpq4r>xFNKO7`p$Vu0U>=a{ilKE2iPl;J^ zQPEx>)1)e1!x`cQ2h9AZsOl;(q-y+hTDO2f(N`|fnW1#jk@e4iH_WzP_Pk_wvznHX z56_cCj`ObUN%u;HO_W%f_-z;x7=*R-m>d{q98*v_$9O7=xj`^bvayVp+mPF9!Dhyg zg#}uN0^B7U)&vMi&UB9Szu~sdVFrUTyKQ7|)SVLxU+qXd5@8c|U;&fD#kF@$@uG$zpVQ3tg?-FDo4yzbG$b9oJoW40mh8uY`xkxHl`(1S7U{4GY|9B?+EVw= zCH*y<%%A$1Y+SF{)%9OCsk(^O_S+x-?7DWrzWDkD(B@AS3)f}S^6dGl6dAF z{B6Q{|p@qLly}JKMVN~nMADH)OYVg_vg1jFXq^mhr2?;K+i|kv> z&0uo*_SWJZ^$`pH{&8#y)v&PPoO{CbVvg8T<@>r?TuKFsg14lWET7lgWW%en_(NJ0 z?~fMVj(eSUqOPLP7;ct`x(24s*rje;HT5j(!_Vs$B%YJx{+{?iIq&D(p5X8kv3z+t zG4eC|@?xasaZ298qJ^p#g6BhGPIus!I0_4Ok6L(P{b znsO$T&b;8@&vM$r;zf-Mv(vRme|v#r4LYqY3VGidj&y8j+E!W6yr_1^5)OgqVM`tz zJC^Jt=D^zaJ+g0K*M#Q0hoW(Z?$=#7HtDda(b6kdEUq!E5Wbh}I#)PhWxK6YD#Hx6 zQ`dK$S;{JK`|HJaZ_y3a&)=U>YLMEnX1UVK==vt1Kmopqt7Q*s9^+8hZN#y``9P_M zh%0lW;HAwSwhO&=|D|5pSg}XX!eGiJ?ZcuMnp#iwrr$T7b8JI~{mKBX*2%JgR|M=P ze%G^S2-s7wFMzFNQNzCXYgB_axIR|8EPg@Rr=aulcLB}F;KIgt=NqOg1|(=OE&Sys zmB=tfQlC*bkzwPbx3^x2?P)aW{h8u+i8Dp1e~P_;ThK-UYXyN^M!`;t-Ye@b@Hjj) zDp(`?>qLwH4<^6$=VxT4PDnqz-Qcd+HRc1dZpNF;J1-a{ZCzrqsbs3-?M-WTH?U9L zdyz4ydrzm!3TX-7Woxd&dxIW=X$IqWY({Dyq}nF z*>t3A-PWx0`_uvN9}9faD!I$q(~{UeET~E3(BxTutLv9WLljr^b%zb!v-@j2)EKsX zX*i{2g9JKLskAGGRgPH0~?aidYw z8|A=dUT;v-~?K|tZ>BgJ)o%n8j?4-`3YZDBO{z?cwM z-Q~dKEXR=0{JTNCfUV_&iP_I7QtK-pYBkMOU{7~p^@v=+vZ>m?Wz#19TNiBhKc@IT4_H#lxGK`H z&;OG0wr{Bp$&Xqh3lrvs=smpmBFs8ieFOhY#`o_9UiR|!C{8uoq?97IzoRCEA&rII zU@9jgtBAH*;sl`zpTqp7JP8Wx3jZ?*E}dxnPFMdP^TLBHZBH@|=!Q*vu%Xsj?wNq@ z0|BMSlb$``VwD_Q_#ElvmEi`qSkd3jG0Jf)adydy%9FUZzB{(?R!*kb52Ju58>8D5 z@9-~K*C*VOthi{$$zvsI^H_SmIEY?U77csncI3xjr?_Gv*Uc3PeX1`W#mp12u+Cqv z@bqZLS(}8S0>z6x?-`i4EUjhlZIBZG%-$dybc{hlDa7%% zi}%vqCpEN@(447jrShQ6CkWmh!|^J4Y8RT4iQEUf*v(AYd} z&oYr23X3B?OH7i^T97FI$o7juv*KOGR8FB)Jc?5%q^q&9F(*n3_43C!`Yt@f(4xwg zAfJ84K4{gt{|xGWjK($Vy5klZ{#ID9>9}J55i_AvFT1Bc7SQ0H;gX_lH{lqok>~qj z$#(b17mJ&9gqawoMV>#N7k@vsUKwCmM}|xX7DqH^qi$mX_Zkn?goxC zdW`~>vIm&FaQh(mVrSAqC7wP-FCTBEM`rsN67RM+>y?;YxMzRrL6i0)xn_1fsqiCe zeHT9b(%@&2Sh0-Zi&`7Q!45|wem9ARiq>@IMz6(s8w4hA75Kok{v|mzO zdDAzrx10_fJMaD3Iy%;O+k#Dk$@gvdclw0X zxWl(I-ZCEh?gpbEmFT)Z~vXP}M)jbZhmS zKgR_%!_N5%K3?%nyGrixi}jIH8dkkLKS`%Ts>b;J&uMLr3_E`-Ji4$>AS~nbFFT0vs%w6Fzy2le zd=Yi=ha*d~{*#+*8c`coe~WYMc6&5mW?{&whQli?1i2qic$s+W@tGV~&l#zVGZ&Uf zB(UCLIJ!AugZq>ceF-P+nXRWq*lN}~8e4WTuDfvMhR|7`*^MX6n76j5eC828p>ose2#?|fuEUN<=d{&=O6wu+Eq#P)_Y=@If zz{zbKwHLda6%Ux5T9^C#0K?M7)9vjAQyjXd-~QIX`R3kRM~MZNd`#IpC+6`TJs8Nk z@U3^OUr?L*p9??V@=o&qov?wkxoO&R17Xnsj%Ks9kK~uLv~ncAlgmu$;J)u!=+o}0 z#5Qk2ud7+s29X~wsxJ(_u-z8dROFd`bi1ItpJRib@rv2k4~f}L||v02MfrKl?}wCk2?gK9mCi~MJ{qi1)&lQ%Nh zEXlfSnvWqz)0tW7>Ju9r*v?H(KmQ>?PQrLYN%#tL2=MWe#5S zSv;Lhr-1SEUx(`3S3lW47tv?j^4{pu3P#tII)RTGS3U^%EcDddxi3rUrEbG!?x$5= zj3-~QZ%aPmz!Ib*J`Dc*K56gt4`1_b`nXb&3=>Jk@%fgiEpRk`g0eH*UxZRl5w~6 z=l6D_))$O*2^$(LGP2GG6hE6`>$u4EtC8M+hMCo`jvV~+p)HwNfuZ;Ij}Bkk1Ia12 z1$1S(ws& znMtU5^X8`l0?d;%WcOx2jy}ge!+}lbVmO1Xe9S^NCP~w}cj_~reYij6LW4y7G`33& zKHok&pD?h_{=EB>)GIlz{Oc$F1w0mJP&z7MbH`3xX;-ILn^f}jHFMbd?wsj2@R+pZ zr?za-f*b8`kL+}opWt|>L}u4b9f@o1Tt}b0WwEC*68gmcTS|JzC$?Vi4ux;)wf-DpjMtJsAityith7vR>A%Cwi_TTp zcl@<;s1FHpHolb>E9_X_&!Kds@}Htas@&Eq>Y+E7pFiY@3}BEX$A9lPD2ly0_D3Bg^4D=Yvb=Wrr$Vhm+d8B z$nw-ijOnk7qM3vCre!(VUeqr960=k{>@Cqt;6yw*GdeN8g_8kPf)tn9A{@ zqUqZ6)f4!64z)0tNHPhpNPc_G%gaWYahlMxhwmH|m^bcjdC#4-@vVfP6LXyX5)t#G z2M(-XC-E_L1si+)72l-R4cscio%0PCQW}?keyb7Scle{Y5X<^Ut%p5!UuO8xZeFs~ zp)7o%qZ-HQY5kveHeS}+koRxmBlFW@9`1=hUEVJ+X{&R6#3{g(aIEf>fTzaF*1uJq zRbj39Sq*9iyBpQ&?pUnkbP;l#r@7|aWjo;&?rcX?7T7GCwU05vk@KKKv;Nuxv9o;s zddTnW^)`yl6J|JIcet_h>Fln!lLzZ{c5bZuz?gW3i;4Nnc}_o}%mW37G8sO_%3qO} z_`2X@ML(O0WnJe|an*+3ufF_otf&$0XJTLH@s*{5`Qw|udkeQ-IP0=L^`Z^O=g1pH zaoz8e?oJSj5m~p0p*7fWo?w=Wsn`aEsun?4{#1rUao2~gj+~nh@*nX$wEM@b#se-) zrD^+uMVGc;|H$IG$|631BW^qYs+09QPX8%k-YCjHW8uQ~RU!r3I@xQkCbgEK#+S2i9lFDNqSIHxj`8U6A z5ns@FL-4nRR12d5hvLCaeF+3y^bQS_T7 zH{p)*iY)f&Yb=iNPOh7@=uT{bLV7{ys)<}vm|qv`o-3Cu5WU;l@UbRFdAlpm={9!8 zd7jS%_#By4#V+)?7(VfNd(F5_+X!cEc?+9hYEC>+^5eFExTy&E@5l( z%E(FVO1_=G1q&}Yzn4+cKYLAL!3z`FKW-*B+gO?sI=T1Xdvv?4V_t#}OEJUVuPe6P z*mmA|p@i5;-X6hwb}v+$hhhFh^NHW? zvnJg?BbD=Vo7fz-Z4=)eddIw7CP2Q^LR`;@XS3n9q$1e^rfvN|DueAi^!=bPK9DI1CyGw`I8 zOKf?^V3-sC_{Ypkr#Js+IHZslcyKebS@QMs56>~|zCZcBmcRnV$M0V_vffNO-}m~? zffpSDBIUo-uW{P?Hh#SKVCn@qCL7Jf0|EU^eX9lg)CG2YlRqN4RP^yF=Fb{un1wvN z4}NPo-PoKI&Ca^tjkWaQ@rmzx@)?-_M4bNJ=G_x+ZQAMAD-lnjhS;!(+ROuuk{UF`{OQkGB7l| zO}Jv(#M3HlzvuU%CQVhz$17qJesOo?yK=U(2t1g`cw71Me}?XAk)$UAUdJX*-O6}d z>d>usf$j$*KfkftxsUtig&)<UIsSbAjZri1kwOE&$QUe{P)QLHRuA{<}N z(XqdYvtLr!!-M(T!cKw7S4w_2+eMh`va1K0?9#Af=^ZMZ(gPn}C%G%Z` zepQ`eWS}-->)j&%@49&}QjIkjKScE|%IM=TNt0LqXBIDz|F6EG{Z^rU;Gx=Z`wx%p z?LXF;{F(HdFa6pZ|837|R(|NIbq_Yb_n+a%e+KbS^UKftFgXACt6lMD%bNcT#){wf z9DVrH{saFp!_W0I+Y){q`Nik{C;n{xp^X)1;^wdak>B{|{QUX%i1P=uv1_mY$6$TH6Ne(JP3<^Sw zDomU#4W24Zjx0?c3QZm=4W0}QoD2dEECLP+LY^uh1}94sCj-bLPX+-Fg$524CJ%)M z4}~TN7A8lQ1`Y-x29*X!1tAZG22TbC2L&cZkg*INDia(Pm>d;^JQCIGWN30=n8eAz-~dv?;HWamlcmW+Wdg_42o(ck<3KPKM4U8%R4h%vL3Jne{6C7A3FtC7x85uy~ z=D{$5fkA+Qg~1bK1z22R5~l)_14zvz4+RDW7A6OfFaw7|lc&lAM+OE?6$S>7MPN~u zNuHq4762s@P*Rx$*2uu9FbNbRprqL3$Tx$bm%w6u%5Yjw(zHDgq7)Ae9UXO`a^17(nSz$U|iU zql$p1N)sr}GYD}q2zV$=VpM5x0Hy5)4+a4amIej|0S<-+N0kYj3QQghOdbpkoGKGI zKyl6B!6Lw*!o#4xNp)v`aX9XBlnmkyV96(8kfrFvJLqWiig#nb~ zK)FMJLqW)qMF<>R4W23t9x4JH43iiXCNVNhU{q-EQ~-IzkpYx>L5T{apaB$UEE6~s zgcubjd9W}ss5Ei1FgSvOsEGrV8ihDi1Q=C74&YP~U}OOWwI_oRhYBbyF|sf*un0IR z2stP)IVdoAvP|Gq0fjaL11PC*urPV3fCH0-i3606njAr82+02o3=E76O`sga0806c z3PO%hVIfaY$b({>lVO6R0s}a>7#Kiq7UEEt;A#K=2!n_qBUCkv+5kRojhT_rUcfgW zj|wKZ3QYkFxqs*Ow>mzVz4UyR*{JIi#**Z6~T}^JTTn*NXQuL%2V) zX8(Nm(Duysy9cg)UhB9^-GlMC`hmOeXXN=?ERwa`{p;qw6&si)-RRIO_A_z_GF)jN zQJB6jL6o;OWmB+(Ve#^bDvgsGr>$9#eqHO<>VThdwe{-+`g~4VIDgz9R}pw>)vDxW zbrlb^Iz(;DZajZsll-Z%+lYO8wESg_B_6z;1#c^Z_Y`XD<+sM9+Ha1ne_bNRAu%hq zy>Y759&gEmDly62AM1~^xhTw!DocL!k0BxtDaGw()3_++ zFzc5B9&Vwd3~IK2K0I4{B$DZhlMK$REB|=h;$4v<=dKmMZ3}#|n9~;M zh1N>m7t3khejs%w#|_&LUAyLczuvq2t6$s|rv)D(Hs9O9W?uZ0KehDHoF%ubIGZ;3 z>aWf`#r95U&0P5}e+-Nsq-<8onDF_>di@+`Q^`X0-xGsg&#^3-X<+$wp3~Fy7i5|CI^1X^WE-F+jT$b!8Jg0f-CA)-qP1T}h zkIt;Pd~&jk;iC<$TYBcnxBGMTu+4L;Gb*y2@~L{gjLRgigra_4Eu#gSHqJVqy|=*s z`DO>-PRZ9*kI#3uv2q-+EA2Y#b6jgHzmoplTD_0E&SZqS7`RPVJrEdeXXMaw|JMSw zOg-k1n0I?^*QzJQSx(w?`NX_==^642J!L9^uRkCAXyR~1v2gzB>C@L;Y}(UuY}V#= zYOGe*cfFaq?Ahl-SHFs7MlhUS7Mo_2`R0
    2e6oZW4VvElbh-&+|i&YohozWLiP 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 NKmN~fB%%5LO#l-5X8`~J diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/al_cell.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/al_cell.lt deleted file mode 100644 index 3054a45e01..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/al_cell.lt +++ /dev/null @@ -1,64 +0,0 @@ -# "AlCell" defines the 4-atom FCC unit cell -# of Aluminum (with a 4.05 angstrom spacing) - -AlCell { - - # AtomID MolID(IGNORE!) AtomType Charge X Y Z - - write("Data Atoms") { - $atom:AlC $mol:... @atom:Al 0.0 0.000 0.000 0.000 - $atom:AlX $mol:... @atom:Al 0.0 0.000 2.025 2.025 - $atom:AlY $mol:... @atom:Al 0.0 2.025 0.000 2.025 - $atom:AlZ $mol:... @atom:Al 0.0 2.025 2.025 0.000 - } - - write_once("In Init") { - units metal - atom_style full # <- Requires each atom has a MolID and Charge. - # This is not necessary. (Why use "full"? - # The "full" atom style is useful if you want to - # mix the aluminum with other molecules later. - # Otherwise, just use "atom_style atomic", and - # and remove the 2nd and 4th columns above.) - pair_style eam/alloy - } - - write_once("In Settings") { - pair_coeff * * Al99.eam.alloy Al - } - - write_once("Data Masses") { - @atom:Al 27.0 - } - -} # AlCell - - - - - -# Here is an alternate way to define AlCell -# using "scale(4.05)" to select the lattice spacing: -# -#FccCell { -# write("Data Atoms") { -# $atom:AlC $mol:... @atom:Al 0.0 0.0 0.0 0.0 -# $atom:AlX $mol:... @atom:Al 0.0 0.0 0.5 0.5 -# $atom:AlY $mol:... @atom:Al 0.0 0.5 0.0 0.5 -# $atom:AyZ $mol:... @atom:Al 0.0 0.5 0.5 0.0 -# } -# write_once("Data Masses") { -# @atom:Al 27.0 -# } -# write_once("In Init") { -# units metal -# atom_style full -# pair_style eam/alloy -# } -# write_once("In Settings") { -# pair_coeff * * Al99.eam.alloy Al -# } -#} -# -#AlCell = FccCell.scale(4.05) -# diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/al_cell.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/al_cell.lt deleted file mode 100644 index 3054a45e01..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/al_cell.lt +++ /dev/null @@ -1,64 +0,0 @@ -# "AlCell" defines the 4-atom FCC unit cell -# of Aluminum (with a 4.05 angstrom spacing) - -AlCell { - - # AtomID MolID(IGNORE!) AtomType Charge X Y Z - - write("Data Atoms") { - $atom:AlC $mol:... @atom:Al 0.0 0.000 0.000 0.000 - $atom:AlX $mol:... @atom:Al 0.0 0.000 2.025 2.025 - $atom:AlY $mol:... @atom:Al 0.0 2.025 0.000 2.025 - $atom:AlZ $mol:... @atom:Al 0.0 2.025 2.025 0.000 - } - - write_once("In Init") { - units metal - atom_style full # <- Requires each atom has a MolID and Charge. - # This is not necessary. (Why use "full"? - # The "full" atom style is useful if you want to - # mix the aluminum with other molecules later. - # Otherwise, just use "atom_style atomic", and - # and remove the 2nd and 4th columns above.) - pair_style eam/alloy - } - - write_once("In Settings") { - pair_coeff * * Al99.eam.alloy Al - } - - write_once("Data Masses") { - @atom:Al 27.0 - } - -} # AlCell - - - - - -# Here is an alternate way to define AlCell -# using "scale(4.05)" to select the lattice spacing: -# -#FccCell { -# write("Data Atoms") { -# $atom:AlC $mol:... @atom:Al 0.0 0.0 0.0 0.0 -# $atom:AlX $mol:... @atom:Al 0.0 0.0 0.5 0.5 -# $atom:AlY $mol:... @atom:Al 0.0 0.5 0.0 0.5 -# $atom:AyZ $mol:... @atom:Al 0.0 0.5 0.5 0.0 -# } -# write_once("Data Masses") { -# @atom:Al 27.0 -# } -# write_once("In Init") { -# units metal -# atom_style full -# pair_style eam/alloy -# } -# write_once("In Settings") { -# pair_coeff * * Al99.eam.alloy Al -# } -#} -# -#AlCell = FccCell.scale(4.05) -# diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/menger_cubes.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/menger_cubes.lt deleted file mode 100644 index afafd46e9f..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/menger_cubes.lt +++ /dev/null @@ -1,34 +0,0 @@ -import "al_cell.lt" # <- defines the 4-atom "AlCell" FCC Aluminum unit cell - -# This approach uses the "delete" command. -# It works and it is elegant, but because the majority of atoms will be -# deleted, (and because memory is allocated for all atoms, including -# deleted atoms) this approach is not very memory efficient. - -MengerCubeLvl1 { - cells = new AlCell [3].move(0.00, 0.00, 4.05) - [3].move(0.00, 4.05, 0.00) - [3].move(4.05, 0.00, 0.00) - delete cells[*][1][1] - delete cells[1][*][1] - delete cells[1][1][*] -} - -MengerCubeLvl2 { - cells = new MengerCubeLvl1 [3].move(0.00, 0.00, 12.15) - [3].move(0.00, 12.15, 0.00) - [3].move(12.15, 0.00, 0.00) - delete cells[*][1][1] - delete cells[1][*][1] - delete cells[1][1][*] -} - -MengerCubeLvl3 { - cells = new MengerCubeLvl2 [3].move(0.00, 0.00, 36.45) - [3].move(0.00, 36.45, 0.00) - [3].move(36.45, 0.00, 0.00) - delete cells[*][1][1] - delete cells[1][*][1] - delete cells[1][1][*] -} - diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/system.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/system.lt deleted file mode 100644 index 8da5f2d9c9..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/system.lt +++ /dev/null @@ -1,34 +0,0 @@ -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 218.7 xlo xhi - 0.0 218.7 ylo yhi - 0.0 218.7 zlo zhi -} - -import "menger_cubes.lt" - -cube_at_000 = new MengerCubeLvl3.move(0.0000, 0.0000, 0.0000) -cube_at_100 = new MengerCubeLvl3.move(109.35, 0.0000, 0.0000) -cube_at_010 = new MengerCubeLvl3.move(0.0000, 109.35, 0.0000) -cube_at_001 = new MengerCubeLvl3.move(0.0000, 0.0000, 109.35) - - - - - - - - - - - - - - -################################################################ -# The next command is not necessary: -# - create_var { $mol } # <-This forces all of the Al atoms in the crystal -# # to share the same molecule ID number. -# # Molecule ID numbers are not necessary. Ignore this. -# diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/menger_cubes.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/menger_cubes.lt deleted file mode 100644 index 0d2922d415..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/menger_cubes.lt +++ /dev/null @@ -1,66 +0,0 @@ -import "al_cell.lt" # <- defines the 4-atom "AlCell" FCC Aluminum unit cell - -# A Menger cube is a fractal which resembles a 3x3x3 Rubik's-cube. It has a -# cube in each central face (and in the interior) removed. There are 3x3x3-7=20 -# remaining sub-cubes. Each of these 20 sub-cubes is a smaller MengerCube. -# To build a MengerCube, you can list all 20 sub-cubes, or you can fill a -# 3x3x3 cube with sub-cubes and delete the interior sub-cubes. (The later -# approach is used in file "elegant_inefficient_version/menger_cubes.lt") - - - -MengerCubeLvl1 { - # Again, a Menger-cube is constructed of 20 smaller cube-shaped objects. - # Here, the small cube-shaped objects are "AlCells" (defined in "al_cell.lt"). - # I could list out the positions of all 20 AlCells, (and this would be clearer - # for the reader). However instead I built it from a combination of - # two-dimensional and three-dimensional arrays of AlCells (explained below). - - # The next command creates 12 AlCells (2x2x3) at: - # (0.0, 0.0, 0.0), (0.0, 0.0, 4.05), (0.0, 0.0, 8.1) - # (0.0, 8.1, 0.0), (0.0, 8.1, 4.05), (0.0, 8.1, 8.1) - # (8.1, 8.1, 0.0), (8.1, 8.1, 4.05), (8.1, 8.1, 8.1) - - cells_z = new AlCell [2].move(8.10, 0.00, 0.00) - [2].move(0.00, 8.10, 0.00) - [3].move(0.00, 0.00, 4.05) - - # The next command creates 4 AlCells at: (0, 4.05, 0.0), (8.1, 4.05, 0.0), - # (0, 4.05, 8.1), (8.1, 4.05, 8.1) - - cells_xz = new AlCell.move(0.00, 4.05, 0.00) [2].move(8.10, 0.0, 0.0 ) - [2].move(0.0, 0.0, 8.10) - - # The next command creates 4 AlCells at: (4.05, 0, 0.0), (4.05, 8.1, 0.0), - # (4.05, 0, 8.1), (4.05, 8.1, 8.1) - - cells_yz = new AlCell.move(4.05, 0.00, 0.00) [2].move(0.0, 8.10, 0.0 ) - [2].move(0.0, 0.0, 8.10) -} - - - -MengerCubeLvl2 { - # Identical arrangement to MengerCube1 (with 3x larger length scales) - cells_z = new MengerCubeLvl1 [2].move(24.3, 0.00, 0.00) - [2].move(0.00, 24.3, 0.00) - [3].move(0.00, 0.00, 12.15) - cells_xz= new MengerCubeLvl1.move(0.0,12.15,0.0) [2].move(24.3, 0.0, 0.0 ) - [2].move(0.0, 0.0, 24.3) - cells_yz= new MengerCubeLvl1.move(12.15,0.0,0.0) [2].move(0.0, 24.3, 0.0 ) - [2].move(0.0, 0.0, 24.3) -} - - - -MengerCubeLvl3 { - # Identical arrangement to MengerCube2 (with 3x larger length scales) - cells_z = new MengerCubeLvl2 [2].move(72.9, 0.00, 0.00) - [2].move(0.00, 72.9, 0.00) - [3].move(0.00, 0.00, 36.45) - cells_xz= new MengerCubeLvl2.move(0.0,36.45,0.0) [2].move(72.9, 0.0, 0.0 ) - [2].move(0.0, 0.0, 72.9) - cells_yz= new MengerCubeLvl2.move(36.45,0.0,0.0) [2].move(0.0, 72.9, 0.0 ) - [2].move(0.0, 0.0, 72.9) -} - diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/system.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/system.lt deleted file mode 100644 index 8da5f2d9c9..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/system.lt +++ /dev/null @@ -1,34 +0,0 @@ -# Periodic boundary conditions: -write_once("Data Boundary") { - 0.0 218.7 xlo xhi - 0.0 218.7 ylo yhi - 0.0 218.7 zlo zhi -} - -import "menger_cubes.lt" - -cube_at_000 = new MengerCubeLvl3.move(0.0000, 0.0000, 0.0000) -cube_at_100 = new MengerCubeLvl3.move(109.35, 0.0000, 0.0000) -cube_at_010 = new MengerCubeLvl3.move(0.0000, 109.35, 0.0000) -cube_at_001 = new MengerCubeLvl3.move(0.0000, 0.0000, 109.35) - - - - - - - - - - - - - - -################################################################ -# The next command is not necessary: -# - create_var { $mol } # <-This forces all of the Al atoms in the crystal -# # to share the same molecule ID number. -# # Molecule ID numbers are not necessary. Ignore this. -# diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/run.in b/tools/moltemplate/examples/misc_examples/menger_sponge/run.in deleted file mode 100644 index 6b9ad17e6e..0000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/run.in +++ /dev/null @@ -1,38 +0,0 @@ -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- -# -# Some of the run-settings below were stolen from: -# -# http://icme.hpc.msstate.edu/mediawiki/index.php/Uniaxial_Compression - -# EQUILIBRATION -reset_timestep 0 -timestep 0.001 -velocity all create 300 12345 mom yes rot no -fix 1 all npt temp 300 300 1 iso 0 0 1 drag 1 - -# Output files -thermo 100 -thermo_style custom step ke pe press -dump dCoords all custom 100 traj.lammpstrj id type x y z ix iy iz - -run 20000 - -# Run for at least 10 picosecond (assuming 1 fs timestep) -run 10000 - - -###################################### -# SIMULATION DONE -print "All done" diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README.TXT b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README.TXT deleted file mode 100644 index 68f7c2ab03..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README.TXT +++ /dev/null @@ -1,23 +0,0 @@ - Description: - -This is a simulation of pyramid-shaped objects resting on an immobile surface -(resembling graphene). Each pyramid is built from spherical particles stacked -like cannon-balls (or fruit). Ordinarily, the stack does not move -because the particles at the ground layer are immobilized. However, -given an initial (small) perturbation the pyramids collapse in an avalanche. - -(In this example, the perturbation is due to shock because we (intentionally) - did not minimize the system before starting the simulation. This shock - causes an avalanche to begin approximately 5000 timesteps later.) - -The particles roll down the pyramid and bounce off the "ground". The bouncing -is due to a repulsive external force which is added artificially. -(See the "run.in" file.) The simulation looks weird without something -to bounce off of. So I added a graphene surface at the bottom as scenery. -(It does not exert any force on the atoms.) - -(Random comment: This could be a fun example to illustrate the Boltzmann - distribution. Because there is no damping, in a small region, I'm guessing - the particle heights should eventually approach the Boltzmann distribution - for some temperature consistent with the initial potential energy of the - system.) diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_VMD_graphene.txt b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_VMD_graphene.txt deleted file mode 100644 index 096674f7ff..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_VMD_graphene.txt +++ /dev/null @@ -1,28 +0,0 @@ - ------- A note on building the graphene sheet in VMD: ------ - -Probably you can ignore these instructions. -These instructions are not necessary for this example to run. - -This example contains several pyramid shaped objects resting on a surface -made of graphene. The instructions in this file explain how to build the -graphene (representing the "ground") using VMD instead of with moltemplate. - Why do this? -VMD can create graphene sheets with bonds connecting neighboring carbon atoms, -(which looks more pretty). However, as of 2013-4-29, moltemplate currently -can not generate these bonds. It does not matter physically in this case, -because the graphene sheet used here does not move. It is only used as -scenery, to graphically represent the ground surface. - -Select "Extensions"->"Modeling"->"Carbon Nanotube Builder" - Build a graphene sheet of size 39.8 x 39.8 (units: nm) - 400.3358398 399.876008 - (try to use a size compatible with the periodic boundaries) -Select "Extensions"->"Tk Console", and type - display backgroundgradient on - -Note: If you want to do this, before you run moltemplate, you may want to delete - the sections of the "system.lt" file (located in "moltemplate_files") - which define the graphene wall. Instead create the graphene data file - in VMD. You will have to manually merge the data file for graphene - with the data file for the pyramids created by moltemplate, - (taking care to avoid overlapping atom-id numbers). diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_setup.sh b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_setup.sh deleted file mode 100755 index acc5fbbaad..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_setup.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_visualize.txt b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_visualize.txt deleted file mode 100644 index 10198fc92f..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_visualize.txt +++ /dev/null @@ -1,76 +0,0 @@ - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - To shift the box by a fraction in the x direction (for example) - do this: - - pbc wrap -compound res -all -shiftcenterrel {-0.50 -0.52 0.0 } - pbc box -shiftcenterrel {-0.50 -0.52 0.0 } - - # Alternately if you have a solute whose atoms are all of type 1, - # then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=04800steps_LR.jpg b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=04800steps_LR.jpg deleted file mode 100644 index dc010258f003bd390276d5c290a9ec9f11d4e3f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88094 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 diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/README.sh b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/README.sh deleted file mode 100755 index 365ab9fb03..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/README.sh +++ /dev/null @@ -1,15 +0,0 @@ -# This directory contains moltemplate files for the "Pyramids of Giza" example. -# (Note: the ground lattice work that appears in some images was not generated -# by moltemplate. Moltemplate can not currently create bonded periodic -# structures as of 2013-4-04. Those were generated by topotools.) -# -# To run moltemplate, use: - -moltemplate.sh system.lt - -# This will generate:system.data, system.in, system.in.init, system.in.settings -# -# The output_ttree/ directory will contain files like "Data Atoms", "Data Bonds" -# which contain the corresponding structures of the system.data file. -# (This might make it slightly easier to combine them with atom data and -# bond data generated by other programs, such as topotools, for example.) diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene.lt b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene.lt deleted file mode 100644 index 3b3e21333f..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene.lt +++ /dev/null @@ -1,61 +0,0 @@ -# This file contains a unit cell for building graphene and nanotubes -# -# -# The 4AtomRectCellXY "molecule" defined below is a reactangular unit cell -# for hexagonal tesselations in 2-dimensions. (See "graphene_unit_cell.jpg") -# Surfaces constructed with this unit cell can be flat or curved into tubes. -# The distance between nearest-neighbor carbon atoms (ie the length of a -# carbon-carbon bond) is equal to "d" which I set to 1.42 Angstroms. -# -# d = length of each hexagon's side = 1.42 Angstroms -# L = length of each hexagon = 2*d = 2.84 Angstroms -# W = width of each hexagon = 2*d*sqrt(3)/2 = 2.4595121467478056 Angstroms -# 2w = width of hexagon rows = 3*l = 4.26 Angstroms -# -# Consequently, the Lattice-cell vectors for singe-layer graphene are: -# (2.4595121467478, 0, 0) (aligned with X axis) -# (0, 4.26, 0) (aligned with Y axis) -# So, to build a sheet of graphite, you could use: -# sheet = new Graphene/4AtomRectCellXY [10].move(2.4595121467478, 0, 0) -# [10].move(0, 4.26, 0) - - - - -Graphene { - - 4AtomRectCellXY - { - # atomID molID atomType charge x y z - write("Data Atoms") { - $atom:C11 $mol:... @atom:../C 0.0 0.61487803668695 0.71 0.0 - $atom:C21 $mol:... @atom:../C 0.0 1.84463411006085 1.42 0.0 - $atom:C12 $mol:... @atom:../C 0.0 0.61487803668695 3.55 0.0 - $atom:C22 $mol:... @atom:../C 0.0 1.84463411006085 2.84 0.0 - } - } - - # Now define properties of the Carbon graphene atom - - write_once("In Init") { - pair_style hybrid lj/cut 9.0 - } - - write_once("Data Masses") { - @atom:C 12.0 - } - - write_once("In Settings") { - # i j epsilon sigma - pair_coeff @atom:C @atom:C lj/cut 0.068443 3.407 - - # These Lennard-Jones parameters come from - # R. Saito, R. Matsuo, T. Kimura, G. Dresselhaus, M.S. Dresselhaus, - # Chem Phys Lett, 348:187 (2001) - - # Define a group consisting of only carbon atoms in graphene molecules - group gGraphene type @atom:C - } - -} # Graphene - diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene_wall.lt b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene_wall.lt deleted file mode 100644 index 759f0f5d06..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene_wall.lt +++ /dev/null @@ -1,21 +0,0 @@ -import "graphene.lt" - -# -------------- graphene sheet ----------------- - -# Notes: -# Hexagonal lattice with: -# l = length of each hexagonal side = 1.42 Angstroms -# L = length of each hexagon = 2*l = 2.84 Angstroms -# W = width of each hexagon = 2*l*sqrt(3)/2 ~= 2.4595121467478 Angstroms -# 2w = width of hexagon rows = 3.0*l = 4.26 Angstroms - - -GrapheneWall { - - unitcells = new Graphene/4AtomRectCellXY [163].move(2.456, 0, 0) - [94].move(0, 4.254, 0) - - # (Note: I fudged the spacing slightly to make it line up better with the - # lattice spacing for graphene generated by VMD's graphene builder.) -} - diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/pyramids.lt b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/pyramids.lt deleted file mode 100644 index 84c2b6f6d1..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/pyramids.lt +++ /dev/null @@ -1,283 +0,0 @@ -# Brick is a very simple molecule containing one "atom". -# "ImmobileBrick" and "GoldBrick" are identical to "Brick" but are -# given different atom types. (This makes it easier to put them in -# different groups and apply different LAMMPS "fixes" to them.) - -Brick { - - # atomID molID atomType charge x y z - write("Data Atoms") { - $atom $mol @atom 0.0 0.0 0.0 0.0 - } - - write_once("Data Masses") { - @atom 1.0 - } - - write_once("In Settings") { - # U(r) = 4*epsilon_ij*((sigma_ij/r)^12 - (sigma_ij/r)^6) - # - # i j eps sig - pair_coeff @atom @atom lj/cut 1.0 0.8908987181403393 - } - - write_once("In Settings") { - group gMobile type @atom - # (Atoms of this type belong to the "gMobile" group) - } - - write_once("In Init") { - atom_style full - units lj - pair_style lj/cut 1.0 - } -} - - - -#We want to stack "Brick"s the same way a green-grocer sometimes stack apples: -#Place the apples at the base an square lattice of apples at the base. -#The apples in the next layer up are placed in between the 4 apples beneath them. -#Each new layer is smaller and placed above the previous layer at a height -#of sigma / sqrt(2), where "sigma" is the diameter of each spherical "Brick". -#We will artificially hold the apples at the base in place -#(to keep the entire stack from collapsing). -# -# The lines below were generated from the following python loop: -# -#from math import * -#N=50 -#s=1.0 -#for i in range(0,N): -# print(" layer"+str(i)+" = new Brick.move("+str(-(N-(i+1))*s*0.5)+","+ -# str(-(N-(i+1))*s*0.5)+","+str(i*s/sqrt(2))+") ["+str(N-i)+"].move("+ -# str(s)+",0,0) ["+str(N-i)+"].move(0,"+str(s)+",0)") - - -PyramidKhufu { - layer0 = new ImmobileBrick.move(-24.5,-24.5,0.0) [50].move(1.0,0,0) [50].move(0,1.0,0) - layer1 = new Brick.move(-24.0,-24.0,0.707106781187) [49].move(1.0,0,0) [49].move(0,1.0,0) - layer2 = new Brick.move(-23.5,-23.5,1.41421356237) [48].move(1.0,0,0) [48].move(0,1.0,0) - layer3 = new Brick.move(-23.0,-23.0,2.12132034356) [47].move(1.0,0,0) [47].move(0,1.0,0) - layer4 = new Brick.move(-22.5,-22.5,2.82842712475) [46].move(1.0,0,0) [46].move(0,1.0,0) - layer5 = new Brick.move(-22.0,-22.0,3.53553390593) [45].move(1.0,0,0) [45].move(0,1.0,0) - layer6 = new Brick.move(-21.5,-21.5,4.24264068712) [44].move(1.0,0,0) [44].move(0,1.0,0) - layer7 = new Brick.move(-21.0,-21.0,4.94974746831) [43].move(1.0,0,0) [43].move(0,1.0,0) - layer8 = new Brick.move(-20.5,-20.5,5.65685424949) [42].move(1.0,0,0) [42].move(0,1.0,0) - layer9 = new Brick.move(-20.0,-20.0,6.36396103068) [41].move(1.0,0,0) [41].move(0,1.0,0) - layer10 = new Brick.move(-19.5,-19.5,7.07106781187) [40].move(1.0,0,0) [40].move(0,1.0,0) - layer11 = new Brick.move(-19.0,-19.0,7.77817459305) [39].move(1.0,0,0) [39].move(0,1.0,0) - layer12 = new Brick.move(-18.5,-18.5,8.48528137424) [38].move(1.0,0,0) [38].move(0,1.0,0) - layer13 = new Brick.move(-18.0,-18.0,9.19238815543) [37].move(1.0,0,0) [37].move(0,1.0,0) - layer14 = new Brick.move(-17.5,-17.5,9.89949493661) [36].move(1.0,0,0) [36].move(0,1.0,0) - layer15 = new Brick.move(-17.0,-17.0,10.6066017178) [35].move(1.0,0,0) [35].move(0,1.0,0) - layer16 = new Brick.move(-16.5,-16.5,11.313708499) [34].move(1.0,0,0) [34].move(0,1.0,0) - layer17 = new Brick.move(-16.0,-16.0,12.0208152802) [33].move(1.0,0,0) [33].move(0,1.0,0) - layer18 = new Brick.move(-15.5,-15.5,12.7279220614) [32].move(1.0,0,0) [32].move(0,1.0,0) - layer19 = new Brick.move(-15.0,-15.0,13.4350288425) [31].move(1.0,0,0) [31].move(0,1.0,0) - layer20 = new Brick.move(-14.5,-14.5,14.1421356237) [30].move(1.0,0,0) [30].move(0,1.0,0) - layer21 = new Brick.move(-14.0,-14.0,14.8492424049) [29].move(1.0,0,0) [29].move(0,1.0,0) - layer22 = new Brick.move(-13.5,-13.5,15.5563491861) [28].move(1.0,0,0) [28].move(0,1.0,0) - layer23 = new Brick.move(-13.0,-13.0,16.2634559673) [27].move(1.0,0,0) [27].move(0,1.0,0) - layer24 = new Brick.move(-12.5,-12.5,16.9705627485) [26].move(1.0,0,0) [26].move(0,1.0,0) - layer25 = new Brick.move(-12.0,-12.0,17.6776695297) [25].move(1.0,0,0) [25].move(0,1.0,0) - layer26 = new Brick.move(-11.5,-11.5,18.3847763109) [24].move(1.0,0,0) [24].move(0,1.0,0) - layer27 = new Brick.move(-11.0,-11.0,19.091883092) [23].move(1.0,0,0) [23].move(0,1.0,0) - layer28 = new Brick.move(-10.5,-10.5,19.7989898732) [22].move(1.0,0,0) [22].move(0,1.0,0) - layer29 = new Brick.move(-10.0,-10.0,20.5060966544) [21].move(1.0,0,0) [21].move(0,1.0,0) - layer30 = new Brick.move(-9.5,-9.5,21.2132034356) [20].move(1.0,0,0) [20].move(0,1.0,0) - layer31 = new Brick.move(-9.0,-9.0,21.9203102168) [19].move(1.0,0,0) [19].move(0,1.0,0) - layer32 = new Brick.move(-8.5,-8.5,22.627416998) [18].move(1.0,0,0) [18].move(0,1.0,0) - layer33 = new Brick.move(-8.0,-8.0,23.3345237792) [17].move(1.0,0,0) [17].move(0,1.0,0) - layer34 = new Brick.move(-7.5,-7.5,24.0416305603) [16].move(1.0,0,0) [16].move(0,1.0,0) - layer35 = new Brick.move(-7.0,-7.0,24.7487373415) [15].move(1.0,0,0) [15].move(0,1.0,0) - layer36 = new Brick.move(-6.5,-6.5,25.4558441227) [14].move(1.0,0,0) [14].move(0,1.0,0) - layer37 = new Brick.move(-6.0,-6.0,26.1629509039) [13].move(1.0,0,0) [13].move(0,1.0,0) - layer38 = new Brick.move(-5.5,-5.5,26.8700576851) [12].move(1.0,0,0) [12].move(0,1.0,0) - layer39 = new Brick.move(-5.0,-5.0,27.5771644663) [11].move(1.0,0,0) [11].move(0,1.0,0) - layer40 = new GoldBrick.move(-4.5,-4.5,28.2842712475) [10].move(1.0,0,0) [10].move(0,1.0,0) - layer41 = new GoldBrick.move(-4.0,-4.0,28.9913780286) [9].move(1.0,0,0) [9].move(0,1.0,0) - layer42 = new GoldBrick.move(-3.5,-3.5,29.6984848098) [8].move(1.0,0,0) [8].move(0,1.0,0) - layer43 = new GoldBrick.move(-3.0,-3.0,30.405591591) [7].move(1.0,0,0) [7].move(0,1.0,0) - layer44 = new GoldBrick.move(-2.5,-2.5,31.1126983722) [6].move(1.0,0,0) [6].move(0,1.0,0) - layer45 = new GoldBrick.move(-2.0,-2.0,31.8198051534) [5].move(1.0,0,0) [5].move(0,1.0,0) - layer46 = new GoldBrick.move(-1.5,-1.5,32.5269119346) [4].move(1.0,0,0) [4].move(0,1.0,0) - layer47 = new GoldBrick.move(-1.0,-1.0,33.2340187158) [3].move(1.0,0,0) [3].move(0,1.0,0) - layer48 = new GoldBrick.move(-0.5,-0.5,33.941125497) [2].move(1.0,0,0) [2].move(0,1.0,0) - layer49 = new GoldBrick.move(0.0,0.0,34.6482322781) [1].move(1.0,0,0) [1].move(0,1.0,0) -} - - -PyramidKhafre { - layer0 = new ImmobileBrick.move(-23.5,-23.5,0.0) [48].move(1.0,0,0) [48].move(0,1.0,0) - layer1 = new Brick.move(-23.0,-23.0,0.707106781187) [47].move(1.0,0,0) [47].move(0,1.0,0) - layer2 = new Brick.move(-22.5,-22.5,1.41421356237) [46].move(1.0,0,0) [46].move(0,1.0,0) - layer3 = new Brick.move(-22.0,-22.0,2.12132034356) [45].move(1.0,0,0) [45].move(0,1.0,0) - layer4 = new Brick.move(-21.5,-21.5,2.82842712475) [44].move(1.0,0,0) [44].move(0,1.0,0) - layer5 = new Brick.move(-21.0,-21.0,3.53553390593) [43].move(1.0,0,0) [43].move(0,1.0,0) - layer6 = new Brick.move(-20.5,-20.5,4.24264068712) [42].move(1.0,0,0) [42].move(0,1.0,0) - layer7 = new Brick.move(-20.0,-20.0,4.94974746831) [41].move(1.0,0,0) [41].move(0,1.0,0) - layer8 = new Brick.move(-19.5,-19.5,5.65685424949) [40].move(1.0,0,0) [40].move(0,1.0,0) - layer9 = new Brick.move(-19.0,-19.0,6.36396103068) [39].move(1.0,0,0) [39].move(0,1.0,0) - layer10 = new Brick.move(-18.5,-18.5,7.07106781187) [38].move(1.0,0,0) [38].move(0,1.0,0) - layer11 = new Brick.move(-18.0,-18.0,7.77817459305) [37].move(1.0,0,0) [37].move(0,1.0,0) - layer12 = new Brick.move(-17.5,-17.5,8.48528137424) [36].move(1.0,0,0) [36].move(0,1.0,0) - layer13 = new Brick.move(-17.0,-17.0,9.19238815543) [35].move(1.0,0,0) [35].move(0,1.0,0) - layer14 = new Brick.move(-16.5,-16.5,9.89949493661) [34].move(1.0,0,0) [34].move(0,1.0,0) - layer15 = new Brick.move(-16.0,-16.0,10.6066017178) [33].move(1.0,0,0) [33].move(0,1.0,0) - layer16 = new Brick.move(-15.5,-15.5,11.313708499) [32].move(1.0,0,0) [32].move(0,1.0,0) - layer17 = new Brick.move(-15.0,-15.0,12.0208152802) [31].move(1.0,0,0) [31].move(0,1.0,0) - layer18 = new Brick.move(-14.5,-14.5,12.7279220614) [30].move(1.0,0,0) [30].move(0,1.0,0) - layer19 = new Brick.move(-14.0,-14.0,13.4350288425) [29].move(1.0,0,0) [29].move(0,1.0,0) - layer20 = new Brick.move(-13.5,-13.5,14.1421356237) [28].move(1.0,0,0) [28].move(0,1.0,0) - layer21 = new Brick.move(-13.0,-13.0,14.8492424049) [27].move(1.0,0,0) [27].move(0,1.0,0) - layer22 = new Brick.move(-12.5,-12.5,15.5563491861) [26].move(1.0,0,0) [26].move(0,1.0,0) - layer23 = new Brick.move(-12.0,-12.0,16.2634559673) [25].move(1.0,0,0) [25].move(0,1.0,0) - layer24 = new Brick.move(-11.5,-11.5,16.9705627485) [24].move(1.0,0,0) [24].move(0,1.0,0) - layer25 = new Brick.move(-11.0,-11.0,17.6776695297) [23].move(1.0,0,0) [23].move(0,1.0,0) - layer26 = new Brick.move(-10.5,-10.5,18.3847763109) [22].move(1.0,0,0) [22].move(0,1.0,0) - layer27 = new Brick.move(-10.0,-10.0,19.091883092) [21].move(1.0,0,0) [21].move(0,1.0,0) - layer28 = new Brick.move(-9.5,-9.5,19.7989898732) [20].move(1.0,0,0) [20].move(0,1.0,0) - layer29 = new Brick.move(-9.0,-9.0,20.5060966544) [19].move(1.0,0,0) [19].move(0,1.0,0) - layer30 = new Brick.move(-8.5,-8.5,21.2132034356) [18].move(1.0,0,0) [18].move(0,1.0,0) - layer31 = new Brick.move(-8.0,-8.0,21.9203102168) [17].move(1.0,0,0) [17].move(0,1.0,0) - layer32 = new Brick.move(-7.5,-7.5,22.627416998) [16].move(1.0,0,0) [16].move(0,1.0,0) - layer33 = new Brick.move(-7.0,-7.0,23.3345237792) [15].move(1.0,0,0) [15].move(0,1.0,0) - layer34 = new Brick.move(-6.5,-6.5,24.0416305603) [14].move(1.0,0,0) [14].move(0,1.0,0) - layer35 = new GoldBrick.move(-6.0,-6.0,24.7487373415) [13].move(1.0,0,0) [13].move(0,1.0,0) - layer36 = new GoldBrick.move(-5.5,-5.5,25.4558441227) [12].move(1.0,0,0) [12].move(0,1.0,0) - layer37 = new GoldBrick.move(-5.0,-5.0,26.1629509039) [11].move(1.0,0,0) [11].move(0,1.0,0) - layer38 = new GoldBrick.move(-4.5,-4.5,26.8700576851) [10].move(1.0,0,0) [10].move(0,1.0,0) - layer39 = new GoldBrick.move(-4.0,-4.0,27.5771644663) [9].move(1.0,0,0) [9].move(0,1.0,0) - layer40 = new GoldBrick.move(-3.5,-3.5,28.2842712475) [8].move(1.0,0,0) [8].move(0,1.0,0) - layer41 = new GoldBrick.move(-3.0,-3.0,28.9913780286) [7].move(1.0,0,0) [7].move(0,1.0,0) - layer42 = new GoldBrick.move(-2.5,-2.5,29.6984848098) [6].move(1.0,0,0) [6].move(0,1.0,0) - layer43 = new GoldBrick.move(-2.0,-2.0,30.405591591) [5].move(1.0,0,0) [5].move(0,1.0,0) - layer44 = new GoldBrick.move(-1.5,-1.5,31.1126983722) [4].move(1.0,0,0) [4].move(0,1.0,0) - layer45 = new GoldBrick.move(-1.0,-1.0,31.8198051534) [3].move(1.0,0,0) [3].move(0,1.0,0) - layer46 = new GoldBrick.move(-0.5,-0.5,32.5269119346) [2].move(1.0,0,0) [2].move(0,1.0,0) - layer47 = new GoldBrick.move(0.0,0.0,33.2340187158) [1].move(1.0,0,0) [1].move(0,1.0,0) -} - - -PyramidMenkaure { - layer0 = new ImmobileBrick.move(-9.0,-9.0,0.0) [19].move(1.0,0,0) [19].move(0,1.0,0) - layer1 = new Brick.move(-8.5,-8.5,0.707106781187) [18].move(1.0,0,0) [18].move(0,1.0,0) - layer2 = new Brick.move(-8.0,-8.0,1.41421356237) [17].move(1.0,0,0) [17].move(0,1.0,0) - layer3 = new Brick.move(-7.5,-7.5,2.12132034356) [16].move(1.0,0,0) [16].move(0,1.0,0) - layer4 = new Brick.move(-7.0,-7.0,2.82842712475) [15].move(1.0,0,0) [15].move(0,1.0,0) - layer5 = new Brick.move(-6.5,-6.5,3.53553390593) [14].move(1.0,0,0) [14].move(0,1.0,0) - layer6 = new Brick.move(-6.0,-6.0,4.24264068712) [13].move(1.0,0,0) [13].move(0,1.0,0) - layer7 = new Brick.move(-5.5,-5.5,4.94974746831) [12].move(1.0,0,0) [12].move(0,1.0,0) - layer8 = new Brick.move(-5.0,-5.0,5.65685424949) [11].move(1.0,0,0) [11].move(0,1.0,0) - layer9 = new Brick.move(-4.5,-4.5,6.36396103068) [10].move(1.0,0,0) [10].move(0,1.0,0) - layer10 = new Brick.move(-4.0,-4.0,7.07106781187) [9].move(1.0,0,0) [9].move(0,1.0,0) - layer11 = new Brick.move(-3.5,-3.5,7.77817459305) [8].move(1.0,0,0) [8].move(0,1.0,0) - layer12 = new Brick.move(-3.0,-3.0,8.48528137424) [7].move(1.0,0,0) [7].move(0,1.0,0) - layer13 = new Brick.move(-2.5,-2.5,9.19238815543) [6].move(1.0,0,0) [6].move(0,1.0,0) - layer14 = new Brick.move(-2.0,-2.0,9.89949493661) [5].move(1.0,0,0) [5].move(0,1.0,0) - layer15 = new Brick.move(-1.5,-1.5,10.6066017178) [4].move(1.0,0,0) [4].move(0,1.0,0) - layer16 = new Brick.move(-1.0,-1.0,11.313708499) [3].move(1.0,0,0) [3].move(0,1.0,0) - layer17 = new Brick.move(-0.5,-0.5,12.0208152802) [2].move(1.0,0,0) [2].move(0,1.0,0) - layer18 = new Brick.move(0.0,0.0,12.7279220614) [1].move(1.0,0,0) [1].move(0,1.0,0) -} - -PyramidQueens1 { - layer0 = new ImmobileBrick.move(-3.5,-3.5,0.0) [8].move(1.0,0,0) [8].move(0,1.0,0) - layer1 = new ImmobileBrick.move(-3.0,-3.0,0.707106781187) [7].move(1.0,0,0) [7].move(0,1.0,0) - layer2 = new ImmobileBrick.move(-2.0,-2.0,1.707106781187) [5].move(1.0,0,0) [5].move(0,1.0,0) - layer3 = new Brick.move(-1.5,-1.5,2.41421356237) [4].move(1.0,0,0) [4].move(0,1.0,0) - layer4 = new Brick.move(-0.5,-0.5,3.41421356237) [2].move(1.0,0,0) [2].move(0,1.0,0) - layer5 = new Brick.move(0.0,0.0,4.12132034356) [1].move(1.0,0,0) [1].move(0,1.0,0) -} - -PyramidQueens2 { - layer0 = new ImmobileBrick.move(-3.5,-3.5,0.0) [8].move(1.0,0,0) [8].move(0,1.0,0) - layer1 = new ImmobileBrick.move(-3.0,-3.0,0.707106781187) [7].move(1.0,0,0) [7].move(0,1.0,0) - layer2 = new ImmobileBrick.move(-2.0,-2.0,1.707106781187) [5].move(1.0,0,0) [5].move(0,1.0,0) - layer3 = new Brick.move(-1.5,-1.5,2.41421356237) [4].move(1.0,0,0) [4].move(0,1.0,0) - layer4 = new Brick.move(-0.5,-0.5,3.41421356237) [2].move(1.0,0,0) [2].move(0,1.0,0) - layer5 = new Brick.move(0.0,0.0,4.12132034356) [1].move(1.0,0,0) [1].move(0,1.0,0) -} - -PyramidQueens3 { - layer0 = new ImmobileBrick.move(-3.5,-3.5,0.0) [8].move(1.0,0,0) [8].move(0,1.0,0) - layer1 = new Brick.move(-3.0,-3.0,0.707106781187) [7].move(1.0,0,0) [7].move(0,1.0,0) - layer2 = new Brick.move(-2.5,-2.5,1.41421356237) [6].move(1.0,0,0) [6].move(0,1.0,0) - layer3 = new Brick.move(-2.0,-2.0,2.12132034356) [5].move(1.0,0,0) [5].move(0,1.0,0) - layer4 = new Brick.move(-1.5,-1.5,2.82842712475) [4].move(1.0,0,0) [4].move(0,1.0,0) - layer5 = new Brick.move(-1.0,-1.0,3.53553390593) [3].move(1.0,0,0) [3].move(0,1.0,0) - layer6 = new Brick.move(-0.5,-0.5,4.24264068712) [2].move(1.0,0,0) [2].move(0,1.0,0) - layer7 = new Brick.move(0.0,0.0,4.94974746831) [1].move(1.0,0,0) [1].move(0,1.0,0) -} - - - - -# "ImmobileBrick"s are identical to "Brick"s, -# except that they have a different atom type. -# We can define groups based on atom type -# and apply fixes to them. - -ImmobileBrick { - - # atomID molID atomType charge x y z - write("Data Atoms") { - $atom $mol @atom 0.0 0.0 0.0 0.0 - } - - write_once("Data Masses") { - @atom 1.0 - } - - write_once("In Settings") { - # U(r) = 4*epsilon_ij*((sigma_ij/r)^12 - (sigma_ij/r)^6) - # - # i j eps sig - pair_coeff @atom @atom lj/cut 1.0 0.8908987181403393 - } - - write_once("In Settings") { - group gImmobile type @atom - # (Atoms of this type belong to the "gImmobile" group) - } - - write_once("In Init") { - atom_style full - units lj - pair_style hybrid lj/cut 1.0 - } -} - - - -GoldBrick { - - # atomID molID atomType charge x y z - write("Data Atoms") { - $atom $mol @atom 0.0 0.0 0.0 0.0 - } - - write_once("Data Masses") { - @atom 1.0 - } - - write_once("In Settings") { - # U(r) = 4*epsilon_ij*((sigma_ij/r)^12 - (sigma_ij/r)^6) - # - # i j eps sig - pair_coeff @atom @atom lj/cut 1.0 0.8908987181403393 - } - - write_once("In Settings") { - group gMobile type @atom - # (Atoms of this type belong to the "gMobile" group) - } - - write_once("In Init") { - atom_style full - units lj - pair_style lj/cut 1.0 - } -} - diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/system.lt b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/system.lt deleted file mode 100644 index 0c9c50ae9b..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/system.lt +++ /dev/null @@ -1,80 +0,0 @@ -# Description. -# This is a simulation of pyramid-like objects made of particles stacked -# and arranged like cannon-balls, or fruit-stands. Ordinarilly, the stack -# does not collapse because the particles at the ground layer are immobilized. -# However given an initial perterbation the pyramids collapse in an avalanche. -# (This can happen, for example when you do not minimize the system beforehand.) -# The particles roll down the pyramid and bounce off the "ground". The bouncing -# is due to a repulsive external force which is added artificially. -# (See the "run.in" file.) The simulation looks weird without something -# to bounce off of. So I added a graphene surface at the bottom as scenery. -# The ground does not serve any purpose except to look pretty. -# -# (Because there is no damping, I suspect that the distribution of heights of -# the particles in a small area should approach the Boltzmann distribution, -# if you run the simulation long enough.) - - -# ----------------- Pyramids: ----------------- - -import "pyramids.lt" - -# Move the pyramids into their locations in Giza (approximate) - -pyramidKhufu = new PyramidKhufu.move(210, 215, 1) -pyramidKhafre = new PyramidKhafre.move(150, 150, 1) -pyramidMenkaure = new PyramidMenkaure.move(105, 082, 1) -PyramidQueens1 = new PyramidQueens1.move(089, 059, 1) -PyramidQueens2 = new PyramidQueens2.move(100, 059, 1) -PyramidQueens3 = new PyramidQueens3.move(111, 059, 1) - - -# --------------- Scenery: -------------------- - -import "graphene_wall.lt" - -graphene_wall = new GrapheneWall - -write_once("In Settings") { - # Turn off all interactions with the graphene atoms by setting epsilon to 0. - # (We will use a different repulsive barrier to represent the ground instead.) - # These atoms are just "for show". epsilon sigma - pair_coeff @atom:Graphene/C @atom:Graphene/C lj/cut 0.00000 3.407 - - # Optional: Add the graphene atoms to the "gImmobile" group. Later freeze them - group gImmobile type @atom:Graphene/C -} - -# Unfortunately, the ground still looks kind of ugly because moltemplate does -# not yet know how to automatically connect nearby carbon atoms with C-C bonds -# (based on distance). (As of 2013-4-29, moltemplate is not good at -# generating crystalline objects containing explicit bonds.) -# If you want bonds between atoms, use VMD's "carbon-nanotube-builder plugin" -# (which creates data files with bonds) and then merge the two data files -# manually later. (This is not done here.) - - -# -------- override earlier settings ---------- - -write_once("In Init") { - # Override any earlier style settings - atom_style full - units lj - pair_style hybrid lj/cut 1.0 - bond_style none - angle_style none - dihedral_style none - improper_style none - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 0.0 -} - -# ------------ boundary conditions ------------ - -write_once("Data Boundary") { - -1.842033 398.493813 xlo xhi - -0.708994 399.167013 ylo yhi - 0.0 400.0 zlo zhi -} -# --------------------------------------------- - diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/run.in b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/run.in deleted file mode 100644 index a99dfda28f..0000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/run.in +++ /dev/null @@ -1,68 +0,0 @@ -# -- Init Section -- - -include system.in.init -boundary p p f - -# -- Atom Definition Section -- - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run Section -- - - -timestep 0.0025 -dump 1 all custom 200 traj.lammpstrj id mol type x y z ix iy iz - -thermo_style custom step temp pe etotal -thermo 100 # time interval for printing out "thermo" data - -# ---- Set up the physical environment ---- - -# Add gravity: -fix fxGrav gMobile gravity 0.05 vector 0 0 -1 - -# Create a "ground" surface. -# This is a repulsive "wall" which particles can bounce off of: - -fix fxWall gMobile wall/lj126 zlo EDGE 1.0 0.8908987181403393 1.0 - - -# ---- Evolve the system: ---- - -# Evolve the (mobile) atoms using ordinary Newton's laws (NVE) - -fix fxNVE gMobile nve - - -# IF YOU WANT TO ADD DAMPING, THEN UNCOMMENT THE NEXT LINE: -#fix fxLan gMobile langevin 0.001 0.001 10000.0 48279 -# To use Langevin dynamics in LAMMPS you need both "fix langevin" and "fix nve" -# (See http://lammps.sandia.gov/doc/fix_langevin.html for details.) -# This was not tested. - -# OPTIONAL: -# For efficient simulation in parallel, try using "fix balance": -# (This will adjust the spatial decomposition as the distribution of -# particles changes over time.) -# http://lammps.sandia.gov/doc/fix_balance.html -# fix fxBalance gMobile balance 1000 1.1 shift 1000 xy 20 1.1 -# Alternatiely, try this: -#fix fxBalance gMobile balance 1000 1.2 rcb - - -# OPTIONAL: Improve efficiency by omitting the calcuation of interactions -# between immobile atoms: - -neigh_modify exclude group gImmobile gImmobile - - -restart 50000 restart_nvt - -run 200000 - -write_data system_after_nvt.data - diff --git a/tools/moltemplate/moltemplate_manual.pdf b/tools/moltemplate/moltemplate_manual.pdf deleted file mode 100644 index 14246f1559ec6088013e94c4bed4f9040bdc66b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716411 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

    p{WAJ4d$n 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

    Imoc^anR8#>rS<-wzNq|tyX$|HsJ2J%Nk7o@ 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

    T~Aab`_PKn*K@L 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%0DlE*=30t;u)g`eN?!k!y{YwoWu~@zvlhV*_fJk) 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 new_bonds.data - -""" - -# -bonds-ids-atom-pairs bonds_ids_atom_pairs.data \\ - -import sys -#from extract_lammps_data import * -#from nbody_by_type_lib import GenInteractions_str -import ttree_lex -#from ttree_lex import * -from lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid - - - -def LookupBondTypes(bond_types, - bond_ids, - bond_pairs, - lines_atoms, - lines_bonds, - lines_bondsbytype, - atom_style, - section_name, - prefix='', - suffix='', - bond_ids_offset=0): - #report_progress = False): - """ - LookupBondTypes() looks up bond types. - - Output: - ...It looks up the corresponding type of each bond and store it in the - "bond_types" list. (If the bond_ids were not specified by the user, - generate them and store them in the bond_ids list.) - - - Input (continued): - This function requires: - ...a list of bonded pairs of atoms - stored in the lines_bonds variable (from the "Data Bond List" - or "Data Bonds AtomId AtomId" sections) - ...and a list of atom types - stored in the lines_atoms variable (from the "Data Atoms" section) - ...and a list of bond-types-as-a-function-of-atom-types - stored in the lines_bondsbytype (from the "Data Bonds By Type" section) - - Generated bond_ids (if applicable) are of the form - prefix + str(number) + suffix - (where "number" begins at bond_ids_offset+1) - - """ - - column_names = AtomStyle2ColNames(atom_style) - i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid(column_names) - - atomids = [] - atomtypes = [] - atomids2types = {} - - for iv in range(0, len(lines_atoms)): - line = lines_atoms[iv].strip() - if '#' in line: - icomment = line.find('#') - line = (line[:icomment]).strip() - if len(line) > 0: - tokens = ttree_lex.SplitQuotedString(line) - if ((len(tokens) <= i_atomid) or (len(tokens) <= i_atomtype)): - sys.stderr.write("\""+line+"\"\n") - raise(ttree_lex.InputError('Error not enough columns on line '+str(iv+1)+' of \"Atoms\" section.')) - tokens = ttree_lex.SplitQuotedString(line) - atomid = ttree_lex.EscCharStrToChar(tokens[i_atomid]) - atomids.append(atomid) - atomtype = ttree_lex.EscCharStrToChar(tokens[i_atomtype]) - atomtypes.append(atomtype) - atomids2types[atomid] = atomtype - - - assert(isinstance(bond_ids, list)) - assert(isinstance(bond_types, list)) - assert(isinstance(bond_pairs, list)) - del bond_ids[:] - del bond_types[:] - del bond_pairs[:] - - for ie in range(0, len(lines_bonds)): - - line = lines_bonds[ie].strip() - if '#' in line: - icomment = line.find('#') - line = (line[:icomment]).strip() - - if len(line) == 0: - continue - - tokens = ttree_lex.SplitQuotedString(line) - - if section_name == "Data Bonds AtomId AtomId": - if len(tokens) == 2: - bondid_n = bond_ids_offset + len(bond_ids) + 1 - bond_ids.append(prefix+str(bondid_n)+suffix) - bond_pairs.append( (ttree_lex.EscCharStrToChar(tokens[0]), - ttree_lex.EscCharStrToChar(tokens[1])) ) - else: - raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) - - elif section_name == "Data Bond List": - if len(tokens) == 3: - bond_ids.append(ttree_lex.EscCharStrToChar(tokens[0])) - bond_pairs.append( (ttree_lex.EscCharStrToChar(tokens[1]), - ttree_lex.EscCharStrToChar(tokens[2])) ) - else: - raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) - - else: - raise(ttree_lex.InputError('Internal Error ('+g_program_name+'): Unknown section name: \"'+section_name+'\"')) - - - assert(len(bond_types) == 0) - typepattern_to_coefftypes = [] - - for i in range(0, len(lines_bondsbytype)): - line = lines_bondsbytype[i].strip() - if '#' in line: - icomment = line.find('#') - line = (line[:icomment]).strip() - if len(line) > 0: - tokens = ttree_lex.SplitQuotedString(line) - - if (len(tokens) != 3): - raise(ttree_lex.InputError('Error: Wrong number of columns in the \"Bonds By Type\" section of data file.\n' - 'Offending line:\n'+ - '\"'+line+'\"\n' - 'Expected 3 columns\n')) - - coefftype = ttree_lex.EscCharStrToChar(tokens[0]) - typepattern = [] - - for typestr in tokens[1:]: - if ((len(typestr) >= 2) and - (typestr[0] == '/') and (typestr[-1] == '/')): - regex_str = typestr[1:-1] - typepattern.append( re.compile(regex_str) ) - else: - typepattern.append(ttree_lex.EscCharStrToChar(typestr)) - - typepattern_to_coefftypes.append([typepattern, coefftype]) - - - - assert(len(bond_ids) == len(bond_pairs)) - - for ie in range(0,len(bond_ids)): - bond_types.append(None) - - for ie in range(0, len(bond_ids)): - bondid = bond_ids[ie] - (atomid1, atomid2) = bond_pairs[ie] - - if atomid1 not in atomids2types: - raise ttree_lex.InputError('Error: atom \"'+atomid1+'\" not defined in \"Data Atoms\".\n' - ' This usually happens when the user mistypes one of the names of the\n' - ' $atoms in either a \"Data Atoms\" or \"Data Bond List\" section.\n' - ' To find out where the mistake occured, search the \n' - ' \"ttree_assignments.txt\" file for:\n' - ' \"'+atomid1+'\"\n') - - if atomid2 not in atomids2types: - raise ttree_lex.InputError('Error: atom \"'+atomid2+'\" not defined in \"Data Atoms\".\n' - ' This usually happens when the user mistypes one of the names of the\n' - ' $atoms in either a \"Data Atoms\" or \"Data Bond List\" section.\n' - ' To find out where the mistake occured, search the \n' - ' \"ttree_assignments.txt\" file for:\n' - ' \"'+atomid2+'\"\n') - - atomtype1 = atomids2types[atomid1] - atomtype2 = atomids2types[atomid2] - - for typepattern, coefftype in typepattern_to_coefftypes: - - # use string comparisons to check if atom types match the pattern - if (ttree_lex.MatchesAll((atomtype1, atomtype2), typepattern) or - ttree_lex.MatchesAll((atomtype2, atomtype1), typepattern)): - # ("MatchesAll()" defined in "ttree_lex.py") - - bond_types[ie] = coefftype - - for ie in range(0, len(bond_ids)): - if not bond_types[ie]: - (atomid1, atomid2) = bond_pairs[ie] - atomtype1 = atomids2types[atomid1] - atomtype2 = atomids2types[atomid2] - raise ttree_lex.InputError('Error: No bond types defined for the bond between\n' - ' atoms '+atomid1+' (type '+atomtype1+')\n' - ' and '+atomid2+' (type '+atomtype2+')\n') - - - - -if __name__ == "__main__": - - g_program_name = __file__.split('/')[-1] # = 'nbody_by_type.py' - g_date_str = '2015-11-09' - g_version_str = '0.11' - - ####### Main Code Below: ####### - sys.stderr.write(g_program_name+' v'+g_version_str+' '+g_date_str+' ') - if sys.version < '3': - sys.stderr.write(' (python version < 3)\n') - else: - sys.stderr.write('\n') - - try: - fname_atoms = None - fname_bond_list = None - fname_bondsbytype = None - section_name = 'Data Bond List' # (This will be replaced later.) - atom_style = 'full' - prefix='' - suffix='' - bond_lack_types = False - - argv = [arg for arg in sys.argv] - - - # Loop over the remaining arguments not processed yet. - # These arguments are specific to the lttree.py program - # and are not understood by ttree.py: - i = 1 - while i < len(argv): - #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') - if ((argv[i].lower() == '-?') or - (argv[i].lower() == '--?') or - (argv[i].lower() == '-help') or - (argv[i].lower() == '-help')): - if i+1 >= len(argv): - sys.stdout.write(man_page_text+'\n') - sys.exit(0) - - elif argv[i].lower() == '-atoms': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - ' text which might appear in the "Atoms" section of a LAMMPS data file.\n') - fname_atoms = argv[i+1] - del(argv[i:i+2]) - - elif argv[i].lower() == '-bonds': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - ' text which might appear in the "Bonds" section of a LAMMPS data file.\n') - fname_bond_list = argv[i+1] - del(argv[i:i+2]) - - elif argv[i].lower() == '-bond-list': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name\n') - #raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - # ' text which might appear in the "Bonds No Types" section of a LAMMPS data file.\n') - fname_bond_list = argv[i+1] - section_name = "Data Bond List" - del(argv[i:i+2]) - - elif argv[i].lower() == '-bondsbytype': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name\n') - - #raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing\n' - # ' text which might appear in the "'+section_name+' By Type" section\n' - # ' of a LAMMPS data file.\n') - fname_bondsbytype = argv[i+1] - del(argv[i:i+2]) - - elif ((argv[i].lower() == '-atom-style') or - (argv[i].lower() == '-atom_style')): - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a an atom_style name.\n' - ' (Or single quoted string which includes a space-separated\n' - ' list of column names.)\n') - atom_style = argv[i+1] - del(argv[i:i+2]) - - elif argv[i].lower() == '-prefix': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a prefix string\n' - ' (a string you want to appear to the left of the integer\n' - ' which counts the bonded interactions you have generated.)\n') - prefix = argv[i+1] - del(argv[i:i+2]) - - elif argv[i].lower() == '-suffix': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a suffix string\n' - ' (a string you want to appear to the right of the integer\n' - ' which counts the bonded interactions you have generated.)\n') - prefix = argv[i+1] - del(argv[i:i+2]) - - elif argv[i][0] == '-': - raise ttree_lex.InputError('Error('+g_program_name+'):\n' - 'Unrecognized command line argument \"'+argv[i]+'\"\n') - else: - i += 1 - - if len(argv) != 1: - # if there are more than 2 remaining arguments, - problem_args = ['\"'+arg+'\"' for arg in argv[1:]] - raise ttree_lex.InputError('Syntax Error('+g_program_name+'):\n\n' - ' Problem with argument list.\n' - ' The remaining arguments are:\n\n' - ' '+(' '.join(problem_args))+'\n\n' - ' (The actual problem may be earlier in the argument list.)\n') - - bond_types = [] - bond_ids = [] - bond_pairs = [] - - fatoms = open(fname_atoms, 'r') - fbonds = open(fname_bond_list, 'r') - fbondsbytype = open(fname_bondsbytype, 'r') - lines_atoms = fatoms.readlines() - lines_bonds = fbonds.readlines() - lines_bondsbytype = fbondsbytype.readlines() - fatoms.close() - fbonds.close() - fbondsbytype.close() - - LookupBondTypes(bond_types, - bond_ids, - bond_pairs, - lines_atoms, - lines_bonds, - lines_bondsbytype, - atom_style, - section_name, - prefix='', - suffix='') - - assert(len(bond_types) == len(bond_ids) == len(bond_pairs)) - - ie=0 - N = len(bond_types) - for ie in range(0, N): - sys.stdout.write(bond_ids[ie] + ' ' + - bond_types[ie] + ' ' + - bond_pairs[ie][0] + ' ' + - bond_pairs[ie][1] + '\n') - - - except (ValueError, ttree_lex.InputError) as err: - sys.stderr.write('\n'+str(err)+'\n') - sys.exit(-1) - diff --git a/tools/moltemplate/src/chargepairs_by_type.py b/tools/moltemplate/src/chargepairs_by_type.py deleted file mode 100644 index 3de8131141..0000000000 --- a/tools/moltemplate/src/chargepairs_by_type.py +++ /dev/null @@ -1,389 +0,0 @@ -#!/usr/bin/env python - -# Author: Andrew Jewett (jewett.aij at g mail) -# http://www.chem.ucsb.edu/~sheagroup -# License: 3-clause BSD License (See LICENSE.TXT) -# Copyright (c) 2011, Regents of the University of California -# All rights reserved. - -""" - chargepairs_by_type.py reads a LAMMPS data file (or an excerpt of a LAMMPS) - data file containing bonded many-body interactions by atom type - (and bond type), and generates a list of atom charges in LAMMPS input - script format consistent with those types (to the standard out). - - Typical Usage: - - chargepairs_by_type.py -atoms atoms.data \\ - -bonds bonds.data \\ - -chargepairsbytype chargepairs_by_type.data \\ - > list_of_atom_charges.in - -""" - -# -bonds-ids-atom-pairs bonds_ids_atom_pairs.data \\ - -import sys -from collections import defaultdict -#from extract_lammps_data import * -#from nbody_by_type_lib import GenInteractions_str -import ttree_lex -#from ttree_lex import * -from lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid - - - -def LookupChargePairs(chargebyatomid, - #bond_ids, - #bond_pairs, - lines_atoms, - lines_bonds, - lines_bond_list, - lines_chargepairsbytype, - atom_style, - section_name, - prefix='', - suffix=''): - #bond_ids_offset=0): - #report_progress = False): - """ - LookupChargePairs() looks up partial-charge pair contributions from the - types of atoms participating in a bond. - - Output: - ...It looks up the corresponding change in the partial charges for - each pair of atoms and stores this in the "chargebyatomid" dictionary. - - Input (continued): - This function requires: - ...a list of bonded pairs of atoms - stored in the lines_bonds variable (from the "Data Bond List" - or "Data Bonds AtomId AtomId" sections) - ...and a list of atom types - stored in the lines_atoms variable (from the "Data Atoms" section) - - ...and a list of charge-pairs-as-a-function-of-atom-types - stored in the lines_chargepairsbytype (from the "Data Bonds By Type" section) - - """ - - column_names = AtomStyle2ColNames(atom_style) - i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid(column_names) - - atomids = [] - atomtypes = [] - atomids2types = {} - - for iv in range(0, len(lines_atoms)): - line = lines_atoms[iv].strip() - if '#' in line: - icomment = line.find('#') - line = (line[:icomment]).strip() - if len(line) > 0: - tokens = ttree_lex.SplitQuotedString(line) - if ((len(tokens) <= i_atomid) or (len(tokens) <= i_atomtype)): - sys.stderr.write("\""+line+"\"\n") - raise(ttree_lex.InputError('Error not enough columns on line '+str(iv+1)+' of \"Atoms\" section.')) - tokens = ttree_lex.SplitQuotedString(line) - atomid = ttree_lex.EscCharStrToChar(tokens[i_atomid]) - atomids.append(atomid) - atomtype = ttree_lex.EscCharStrToChar(tokens[i_atomtype]) - atomtypes.append(atomtype) - atomids2types[atomid] = atomtype - - - #assert(isinstance(bond_ids, list)) - #assert(isinstance(bond_types, list)) - #assert(isinstance(bond_pairs, list)) - #del bond_ids[:] - #del bond_types[:] - #del bond_pairs[:] - bond_pairs = [] - - for ie in range(0, len(lines_bond_list)): - line = lines_bond_list[ie].strip() - if '#' in line: - icomment = line.find('#') - line = (line[:icomment]).strip() - if len(line) == 0: - continue - tokens = ttree_lex.SplitQuotedString(line) - if len(tokens) == 3: - #bond_ids.append(ttree_lex.EscCharStrToChar(tokens[0])) - bond_pairs.append( (ttree_lex.EscCharStrToChar(tokens[1]), - ttree_lex.EscCharStrToChar(tokens[2])) ) - else: - raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) - - - for ie in range(0, len(lines_bonds)): - line = lines_bonds[ie].strip() - if '#' in line: - icomment = line.find('#') - line = (line[:icomment]).strip() - if len(line) == 0: - continue - tokens = ttree_lex.SplitQuotedString(line) - if len(tokens) == 4: - #bond_ids.append(ttree_lex.EscCharStrToChar(tokens[0])) - #bond_types.append(ttree_lex.EscCharStrToChar(tokens[1])) - bond_pairs.append( (ttree_lex.EscCharStrToChar(tokens[2]), - ttree_lex.EscCharStrToChar(tokens[3])) ) - else: - raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) - - - - #for ie in range(0, len(lines_bonds_atomid_atomid)): - # line = lines_bonds_atomid_atomid[ie].strip() - # if '#' in line: - # icomment = line.find('#') - # line = (line[:icomment]).strip() - # if len(line) == 0: - # continue - # tokens = ttree_lex.SplitQuotedString(line) - # if len(tokens) == 2: - # #bondid_n = bond_ids_offset + len(bond_ids) + 1 - # #bond_ids.append(prefix+str(bondid_n)+suffix) - # bond_pairs.append( (ttree_lex.EscCharStrToChar(tokens[0]), - # ttree_lex.EscCharStrToChar(tokens[1])) ) - # else: - # raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) - - - - assert(len(bond_types) == 0) - typepattern_to_chargepairs = [] - warning_unassigned_chargepairs = None - - for i in range(0, len(lines_chargepairsbytype)): - line = lines_chargepairsbytype[i].strip() - if '#' in line: - icomment = line.find('#') - line = (line[:icomment]).strip() - if len(line) > 0: - tokens = ttree_lex.SplitQuotedString(line) - - if (len(tokens) != 4): - raise(ttree_lex.InputError('Error: Wrong number of columns in the \"Charge Pairs By Type\" section of data file.\n' - 'Offending line:\n'+ - '\"'+line+'\"\n' - 'Expected 4 columns\n')) - - chargepair = (float(tokens[2]), - float(tokens[3])) - - typepattern = [] - - for typestr in tokens[:2]: - if ((len(typestr) >= 2) and - (typestr[0] == '/') and (typestr[-1] == '/')): - regex_str = typestr[1:-1] - typepattern.append( re.compile(regex_str) ) - else: - typepattern.append(ttree_lex.EscCharStrToChar(typestr)) - - typepattern_to_chargepairs.append([typepattern, chargepair]) - - - for atomid1, atomid2 in bond_pairs: - - if atomid1 not in atomids2types: - raise ttree_lex.InputError('Error: atom \"'+atomid1+'\" not defined in \"Data Atoms\".\n' - ' This usually happens when the user mistypes one of the names of the\n' - ' $atoms in either a \"Data Atoms\" or \"Data Bond List\" section.\n' - ' To find out where the mistake occured, search the \n' - ' \"ttree_assignments.txt\" file for:\n' - ' \"'+atomid1+'\"\n') - - if atomid2 not in atomids2types: - raise ttree_lex.InputError('Error: atom \"'+atomid2+'\" not defined in \"Data Atoms\".\n' - ' This usually happens when the user mistypes one of the names of the\n' - ' $atoms in either a \"Data Atoms\" or \"Data Bond List\" section.\n' - ' To find out where the mistake occured, search the \n' - ' \"ttree_assignments.txt\" file for:\n' - ' \"'+atomid2+'\"\n') - - - atomtype1 = atomids2types[atomid1] - atomtype2 = atomids2types[atomid2] - - for typepattern, chargepair in typepattern_to_chargepairs: - # use string comparisons to check if atom types match the pattern - if ttree_lex.MatchesAll((atomtype1, atomtype2), typepattern): - # ("MatchesAll()" defined in "ttree_lex.py") - chargebyatomid[atomid1] += chargepair[0] - chargebyatomid[atomid2] += chargepair[1] - elif ttree_lex.MatchesAll((atomtype2, atomtype1), typepattern): - chargebyatomid[atomid1] += chargepair[1] - chargebyatomid[atomid2] += chargepair[0] - else: - if not warning_unassigned_chargepairs: - warning_unassigned_chargepairs = (atomid1, atomid2) - - - if warning_unassigned_chargepairs: - sys.stderr.write('---------------------------------------------------------------------------\n' - 'Warning: bonds found between atoms with no partial-charge rules.\n' - ' This means that somewhere you are using a force-field\n' - ' which assigns atomic charge according to the bonds these atoms\n' - ' participate in, AND at least one pair of bonded atoms does NOT have\n' - ' a rule defined to assign charges to that pair of atoms.\n' - ' This can happen if there is a problem with the force-field file\n' - ' OR if you are defining the charges for these atoms manually\n' - ' In the later case, it is not a problem.\n' - ' The first bond with this problem is between this pair of atoms:\n' - ' '+str(warning_unassigned_chargepairs[0])+'\n' - ' '+str(warning_unassigned_chargepairs[1])+'\n' - '---------------------------------------------------------------------------\n') - - - - - -if __name__ == "__main__": - - g_program_name = __file__.split('/')[-1] # = 'nbody_by_type.py' - g_date_str = '2016-10-16' - g_version_str = '0.11' - - ####### Main Code Below: ####### - sys.stderr.write(g_program_name+' v'+g_version_str+' '+g_date_str+' ') - if sys.version < '3': - sys.stderr.write(' (python version < 3)\n') - else: - sys.stderr.write('\n') - - try: - fname_atoms = None - fname_bonds = None - fname_bond_list = None - fname_chargepairsbytype = None - section_name = 'Data Bond List' # (This will be replaced later.) - atom_style = 'full' - prefix='' - suffix='' - bond_lack_types = False - - argv = [arg for arg in sys.argv] - - - # Loop over the remaining arguments not processed yet. - # These arguments are specific to the lttree.py program - # and are not understood by ttree.py: - i = 1 - while i < len(argv): - #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') - if ((argv[i].lower() == '-?') or - (argv[i].lower() == '--?') or - (argv[i].lower() == '-help') or - (argv[i].lower() == '-help')): - if i+1 >= len(argv): - sys.stdout.write(man_page_text+'\n') - sys.exit(0) - - elif argv[i].lower() == '-atoms': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - ' text which might appear in the "Atoms" section of a LAMMPS data file.\n') - fname_atoms = argv[i+1] - del(argv[i:i+2]) - - elif argv[i].lower() == '-bonds': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - ' text which might appear in the "Bonds" section of a LAMMPS data file.\n') - fname_bonds = argv[i+1] - del(argv[i:i+2]) - - elif argv[i].lower() == '-bond-list': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name\n') - #raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - # ' text which might appear in the "Bonds No Types" section of a LAMMPS data file.\n') - fname_bond_list = argv[i+1] - section_name = "Data Bond List" - del(argv[i:i+2]) - - elif ((argv[i].lower() == '-chargepairsbytype') or - (argv[i].lower() == '-chargepairs-by-type') or - (argv[i].lower() == '-charge-pairs-by-type')): - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name\n') - - #raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing\n' - # ' text which might appear in the "'+section_name+' By Type" section\n' - # ' of a LAMMPS data file.\n') - fname_chargepairsbytype = argv[i+1] - del(argv[i:i+2]) - - elif ((argv[i].lower() == '-atom-style') or - (argv[i].lower() == '-atom_style')): - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a an atom_style name.\n' - ' (Or single quoted string which includes a space-separated\n' - ' list of column names.)\n') - atom_style = argv[i+1] - del(argv[i:i+2]) - - elif argv[i][0] == '-': - raise ttree_lex.InputError('Error('+g_program_name+'):\n' - 'Unrecognized command line argument \"'+argv[i]+'\"\n') - else: - i += 1 - - if len(argv) != 1: - # if there are more than 2 remaining arguments, - problem_args = ['\"'+arg+'\"' for arg in argv[1:]] - raise ttree_lex.InputError('Syntax Error('+g_program_name+'):\n\n' - ' Problem with argument list.\n' - ' The remaining arguments are:\n\n' - ' '+(' '.join(problem_args))+'\n\n' - ' (The actual problem may be earlier in the argument list.)\n') - - bond_types = [] - fatoms = open(fname_atoms, 'r') - lines_bonds = [] - lines_bond_list = [] - fbonds = fbond_list = None - try: - if fname_bonds != None: - fbonds = open(fname_bonds, 'r') - lines_bonds = fbonds.readlines() - fbonds.close() - except IOError: - pass - try: - if fname_bond_list != None: - fbond_list = open(fname_bond_list, 'r') - lines_bond_list = fbond_list.readlines() - fbond_list.close() - except IOError: - pass - if ((len(lines_bonds) == 0) and (len(lines_bond_list) == 0)): - sys.stderr.write('Error('+g_program_name+'): No bonds defined for this system\n' - ' (This error may be a bug in moltemplate.)\n') - fchargepairsbytype = open(fname_chargepairsbytype, 'r') - lines_atoms = fatoms.readlines() - - lines_chargepairsbytype = fchargepairsbytype.readlines() - fatoms.close() - fchargepairsbytype.close() - chargebyatomid = defaultdict(float) - - LookupChargePairs(chargebyatomid, - lines_atoms, - lines_bonds, - lines_bond_list, - lines_chargepairsbytype, - atom_style, - section_name) - - for atomid, charge in chargebyatomid.items(): - sys.stdout.write(' set atom ' + str(atomid) + - ' charge ' + str(charge) + '\n') - - except (ValueError, ttree_lex.InputError) as err: - sys.stderr.write('\n'+str(err)+'\n') - sys.exit(-1) - diff --git a/tools/moltemplate/src/dump2data.py b/tools/moltemplate/src/dump2data.py deleted file mode 100644 index 25c73219dd..0000000000 --- a/tools/moltemplate/src/dump2data.py +++ /dev/null @@ -1,1290 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" -dump2data.py - -Extract dynamical degrees of freedom from a lammps DUMP file (from the stdin) -and construct a new DATA file (to the stdout). -A reference DATA file is needed (argument). - - basic usage -./dump2data.py orig_file.data < dump.lammpstrj > new_file.data - (This extract last frame, uses "full" atom_style.) - - options: -./dump2data.py [-t t -atomstyle style] orig.data < dump.lammpstrj > new.data - -""" - -# Authors: Andrew Jewett -# License: New BSD License -# Copyright (c) 2014 -# All rights reserved. - - -import sys -from collections import defaultdict -from operator import itemgetter, attrgetter - - -class InputError(Exception): - def __init__(self, err_msg): - self.err_msg = err_msg - def __str__(self): - return self.err_msg - - -def ErrorLeader(infile, lineno): - return '\"'+infile+'\", line '+str(lineno)+': ' - - -class MiscSettings(object): - def __init__(self): - self.tstart = None - self.tstop = None - self.timestep_str = '' - self.last_frame = False - self.center_frame = False - self.output_format = 'data' - self.input_format = 'dump' - self.multi = True - self.skip_interval = 1 - self.scale = None - - -class AtomStyleSettings(object): - def __init__(self): - # The following new member data indicate which columns store - # LAMMPS-specific information. - # The next 6 members store keep track of the different columns - # of the "Atoms" section of a LAMMPS data file: - self.column_names = [] #<--A list of column names (optional) - self.i_coords=[] #<--A triplet of integers indicating which columns store coordinate data - #self.ii_coords= [] #<--A list of triplets of column indexes storing coordinate data - self.ii_vects=[] #<--A list of triplets of column indexes storing directional data - # (such as dipole or ellipsoid orientations) - self.i_atomid=None #<--An integer indicating which column has the atomid - self.i_atomtype=None #<--An integer indicating which column has the atomtype - self.i_molid=None #<--An integer indicating which column has the molid, if applicable - - - -class DataSettings(AtomStyleSettings): - def __init__(self): - AtomStyleSettings.__init__(self) - self.contents = '' - self.file_name = '' - - - -# Atom Styles in LAMMPS as of 2011-7-29 -g_style_map = {'angle': ['atom-ID','molecule-ID','atom-type','x','y','z'], - 'atomic': ['atom-ID','atom-type','x','y','z'], - 'bond': ['atom-ID','molecule-ID','atom-type','x','y','z'], - 'charge': ['atom-ID','atom-type','q','x','y','z'], - 'colloid': ['atom-ID','atom-type','x','y','z'], - 'dipole': ['atom-ID','atom-type','q','x','y','z','mux','muy','muz'], - 'electron': ['atom-ID','atom-type','q','spin','eradius','x','y','z'], - 'ellipsoid':['atom-ID','atom-type','x','y','z','quatw','quati','quatj','quatk'], - 'full': ['atom-ID','molecule-ID','atom-type','q','x','y','z'], - 'granular': ['atom-ID','atom-type','diameter','density','x','y','z'], - 'molecular':['atom-ID','molecule-ID','atom-type','x','y','z'], - 'peri': ['atom-ID','atom-type','volume','density','x','y','z'], - 'hybrid': ['atom-ID','atom-type','x','y','z']} - - - - -def AtomStyle2ColNames(atom_style_string): - - atom_style_string = atom_style_string.strip() - if len(atom_style_string) == 0: - raise InputError('Error(dump2data): Invalid atom_style\n' - ' (The atom_style command was followed by an empty string.)\n') - atom_style_args = atom_style_string.split() - atom_style = atom_style_args[0] - - hybrid_args = atom_style_args[1:] - if (atom_style not in g_style_map): - if (len(atom_style_args) >= 2): - # If the atom_style_string includes at least 2 words, then we - # interpret this as a list of the individual column names - return atom_style_args - else: - raise InputError('Error(dump2data): Unrecognized atom_style: \"'+atom_style+'\"\n') - - if (atom_style != 'hybrid'): - return g_style_map[atom_style] - else: - column_names = ['atom-ID','atom-type','x','y','z'] - if (len(hybrid_args)==0): - raise InputError('Error(dump2data): atom_style hybrid must be followed by a sub_style.\n') - for sub_style in hybrid_args: - if (sub_style not in g_style_map): - raise InputError('Error(dump2data): Unrecognized atom_style: \"'+sub_style+'\"\n') - for cname in g_style_map[sub_style]: - if cname not in column_names: - column_names.append(cname) - - return column_names - - -def ColNames2AidAtypeMolid(column_names): - # Because of the diversity of ways that these - # numbers are referred to in the LAMMPS documentation, - # we have to be flexible and allow the user to refer - # to these quantities in a variety of ways. - # Hopefully this covers everything: - - i_atomid = None - if 'atom-ID' in column_names: - i_atomid = column_names.index('atom-ID') - elif 'atom−ID' in column_names: # (− is the character used in the manual) - i_atomid = column_names.index('atom−ID') - elif 'atomID' in column_names: - i_atomid = column_names.index('atomID') - elif 'atomid' in column_names: - i_atomid = column_names.index('atomid') - elif 'id' in column_names: - i_atomid = column_names.index('id') - elif 'atom' in column_names: - i_atomid = column_names.index('atom') - elif '$atom' in column_names: - i_atomid = column_names.index('$atom') - else: - raise InputError('Error(dump2data): List of column names lacks an \"atom-ID\"\n') - - i_atomtype = None - if 'atom-type' in column_names: - i_atomtype = column_names.index('atom-type') - elif 'atom−type' in column_names: # (− hyphen character used in manual) - i_atomtype = column_names.index('atom−type') - elif 'atomtype' in column_names: - i_atomtype = column_names.index('atomtype') - elif 'type' in column_names: - i_atomtype = column_names.index('type') - elif '@atom' in column_names: - i_atomtype = column_names.index('@atom') - else: - raise InputError('Error(dump2data): List of column names lacks an \"atom-type\"\n') - - i_molid = None - if 'molecule-ID' in column_names: - i_molid = column_names.index('molecule-ID') - elif 'molecule−ID' in column_names: # (− hyphen character used in manual) - i_molid = column_names.index('molecule−ID') - elif 'moleculeID' in column_names: - i_molid = column_names.index('moleculeID') - elif 'moleculeid' in column_names: - i_molid = column_names.index('moleculeid') - elif 'molecule' in column_names: - i_molid = column_names.index('molecule') - elif 'molID' in column_names: - i_molid = column_names.index('molID') - elif 'molid' in column_names: - i_molid = column_names.index('molid') - elif 'mol' in column_names: - i_molid = column_names.index('mol') - elif '$mol' in column_names: - i_molid = column_names.index('$mol') - else: - pass # some atom_types do not have a valid molecule-ID - - return i_atomid, i_atomtype, i_molid - - - -def ColNames2Coords(column_names): - """ Which of the columns correspond to coordinates - which must be transformed using rigid-body - (affine: rotation + translation) transformations? - This function outputs a list of lists of triplets of integers. - - """ - i_x = None - i_y = None - i_z = None - if 'x' in column_names: - i_x = column_names.index('x') - if 'y' in column_names: - i_y = column_names.index('y') - if 'z' in column_names: - i_z = column_names.index('z') - if (((i_x != None) != (i_y != None)) or - ((i_y != None) != (i_z != None)) or - ((i_z != None) != (i_x != None))): - raise InputError('Error(dump2data): columns must include \"x\", \"y\", and \"z\".\n') - return [[i_x, i_y, i_z]] - - -def ColNames2Vects(column_names): - """ Which of the columns correspond to coordinates - which must be transformed using rotations? - Some coordinates like dipole moments and - ellipsoid orientations should only be rotated - (not translated). - This function outputs a list of lists of triplets of integers. - - """ - vects = [] - i_mux = None - i_muy = None - i_muz = None - if 'mux' in column_names: - i_mux = column_names.index('mux') - if 'muy' in column_names: - i_muy = column_names.index('muy') - if 'muz' in column_names: - i_muz = column_names.index('muz') - if (((i_mux != None) != (i_muy != None)) or - ((i_muy != None) != (i_muz != None)) or - ((i_muz != None) != (i_mux != None))): - raise InputError('Error(dump2data): custom atom_style list must define mux, muy, and muz or none.\n') - if i_mux != None: - vects.append([i_mux, i_muy, i_muz]) - i_quati = None - i_quatj = None - i_quatk = None - if 'quati' in column_names: - i_quati = column_names.index('quati') - if 'quatj' in column_names: - i_quatj = column_names.index('quatj') - if 'quatk' in column_names: - i_quatk = column_names.index('quatk') - if (((i_quati != None) != (i_quatj != None)) or - ((i_quatj != None) != (i_quatk != None)) or - ((i_quatk != None) != (i_quati != None))): - raise InputError('Error(dump2data): custom atom_style list must define quati, quatj, and quatk or none.\n') - if i_quati != None: - vects.append([i_quati, i_quatj, i_quatk]) - return vects - - - - - -def ParseArgs(argv, - misc_settings, - data_settings, - warning_strings=None): - - # Loop over the remaining arguments not processed yet. - # These arguments are specific to the lttree.py program - # and are not understood by this program. - i = 1 - while i < len(argv): - #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') - if ((argv[i].lower() == '-atomstyle') or - (argv[i].lower() == '-atom_style') or - (argv[i].lower() == '-atom-style')): - in_init = [] - if i+1 >= len(argv): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by a an atom_style name.\n' - ' (Or single quoted string which includes a space-separated\n' - ' list of column names.)\n') - data_settings.column_names = AtomStyle2ColNames(argv[i+1]) - sys.stderr.write(' \"Atoms\" column format:\n') - sys.stderr.write(' '+(' '.join(data_settings.column_names))+'\n') - - # ColNames2Coords() and ColNames2Vects() generate lists of - # triplets of integers, storing the column numbers containing - # x, y, and z coordinate values, and vx,vy,vz direction vectors. - data_settings.ii_vects = ColNames2Vects(data_settings.column_names) - ii_coords = ColNames2Coords(data_settings.column_names) - # This program assumes that there is only one coordinate triplet - # (x,y,z) for each atom. Hence we assume that len(ii_coords)==1 - assert(len(ii_coords) == 1) - data_settings.i_coords = ii_coords[0] - - # Now figure out which columns correspond to atomid, atomtype, molid - data_settings.i_atomid, data_settings.i_atomtype, data_settings.i_molid = ColNames2AidAtypeMolid(data_settings.column_names) - del(argv[i:i+2]) - - elif (argv[i].lower() == '-icoord'): - if i+1 >= len(argv): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by list of integers\n' - ' corresponding to column numbers for coordinates in\n' - ' the \"Atoms\" section of a LAMMPS data file.\n') - ilist = argv[i+1].split() - if (len(ilist) % 3) != 0: - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by list of integers.\n' - ' This is usually a list of 3 intebers, but it can contain more.\n' - ' The number of cooridnate columns must be divisible by 3,\n' - ' (even if the simulation is in 2 dimensions)\n') - - #ii_coords = [] - #for i in range(0, len(ilist)/3): - # cols = [ilist[3*i]+1, ilist[3*i+1]+1, ilist[3*i+2]+1] - # ii_coords.append(cols) - #if ((len(ii_coords) != 0) or (len(ii_coords[0]) != 3)): - # raise InputError('Error(dump2data): Argument \"'+argv[i]+'\" must be followed by exactly 3 integers.\n') - - data_settings.i_coords = ilist - if (len(i_coords) != 3): - raise InputError('Error(dump2data): Argument \"'+argv[i]+'\" must be followed by exactly 3 integers.\n') - - data_settings.i_coords = ii_coords[0] - - del(argv[i:i+2]) - - elif (argv[i].lower() == '-ivect'): - if i+1 >= len(argv): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by list of integers\n' - ' corresponding to column numbers for direction vectors in\n' - ' the \"Atoms\" section of a LAMMPS data file.\n') - ilist = argv[i+1].split() - if (len(ilist) % 3) != 0: - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by list of integers.\n' - ' This is usually a list of 3 intebers, but it can contain more.\n' - ' The number of cooridnate columns must be divisible by 3,\n' - ' (even if the simulation is in 2 dimensions)\n') - - data_settings.ii_vects = [] - for i in range(0, len(ilist)/3): - cols = [ilist[3*i]+1, ilist[3*i+1]+1, ilist[3*i+2]+1] - setting.ii_vects.append(cols) - # This should override any earlier settings as a result of the - # -atomstyle argument. So you can specify a custom list of column - # names using -atomstyle "list of column names", and then afterwards - # specify which of these columns correspond to direction vectors - # using the "-ivect" command line argument later on. - # This way, in theory you should be able to read columns from - # new custom atom-styles that have not been invented yet. - # (Although I haven't tested this.) - - del(argv[i:i+2]) - # i_atomid is not really needed for this program, but I load it anyway - elif ((argv[i].lower() == '-iatomid') or - (argv[i].lower() == '-iid') or - (argv[i].lower() == '-iatom-id')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer\n' - ' (>=1) indicating which column in the \"Atoms\" section of a\n' - ' LAMMPS data file contains the atom id number (typically 1).\n' - ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_atomid = int(argv[i+1])-1 - del(argv[i:i+2]) - # i_atomtype is not really needed for this program, but I load it anyway - elif ((argv[i].lower() == '-iatomtype') or - (argv[i].lower() == '-itype') or - (argv[i].lower() == '-iatom-type')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer\n' - ' (>=1) indicating which column in the \"Atoms\" section of a\n' - ' LAMMPS data file contains the atom type.\n' - ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_atomtype = int(argv[i+1])-1 - del(argv[i:i+2]) - # i_molid is not really needed for this program, but I load it anyway - elif ((argv[i].lower() == '-imolid') or - (argv[i].lower() == '-imol') or - (argv[i].lower() == '-imol-id') or - (argv[i].lower() == '-imoleculeid') or - (argv[i].lower() == '-imolecule-id')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer\n' - ' (>=1) indicating which column in the \"Atoms\" section of a\n' - ' LAMMPS data file contains the molecule id number.\n' - ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - del(argv[i:i+2]) - # Which frame do we want? - elif (argv[i].lower() == '-t'): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer indicating\n' - ' the frame you want to extract from the dump file (trajectory).\n' - ' This integer should match the timestep corresponding to the frame\n' - ' whose coordinates you wish to extract.\n') - misc_settings.timestep_str = argv[i+1] - del(argv[i:i+2]) - misc_settings.multi = False - misc_settings.last_frame = False - - elif (argv[i].lower() == '-tstart'): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer indicating\n' - ' the first frame you want to extract from the dump file (trajectory).\n' - ' This integer should match the timestep corresponding to the frame\n' - ' (after which) you wish to extract coordinates.\n') - misc_settings.tstart = float(argv[i+1]) - del(argv[i:i+2]) - misc_settings.multi = True - - elif (argv[i].lower() == '-tstop'): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an number indicating\n' - ' the first frame you want to extract from the dump file (trajectory).\n' - ' Frames after this timestep will be ignored.\n') - misc_settings.tstop = float(argv[i+1]) - del(argv[i:i+2]) - misc_settings.multi = True - - elif (argv[i].lower() == '-center'): - misc_settings.center_frame = True - del(argv[i:i+1]) - - elif ((argv[i].lower() == '-raw') or (argv[i].lower() == '-rawout')): - misc_settings.output_format = 'raw' - del(argv[i:i+1]) - - elif (argv[i].lower() == '-rawin'): - misc_settings.input_format = 'raw' - misc_settings.multi = False - del(argv[i:i+1]) - - elif ((argv[i].lower() == '-xyz') or (argv[i].lower() == '-xyzout')): - misc_settings.output_format = 'xyz' - del(argv[i:i+1]) - - elif (argv[i].lower() == '-xyzin'): - misc_settings.input_format = 'xyz' - misc_settings.multi = False - del(argv[i:i+1]) - - elif (argv[i].lower() == '-multi'): - misc_settings.multi = True - del(argv[i:i+1]) - - elif (argv[i].lower() == '-last'): - misc_settings.last_frame = True - misc_settings.multi = False - del(argv[i:i+1]) - - elif (argv[i].lower() == '-interval'): - misc_settings.skip_interval = int(argv[i+1]) - del(argv[i:i+2]) - - elif (argv[i].lower() == '-scale'): - misc_settings.scale = float(argv[i+1]) - del(argv[i:i+2]) - - elif ((argv[i][0] == '-') and (__name__ == "__main__")): - raise InputError('Error(dump2data): Unrecognized command line argument \"'+argv[i]+'\"\n') - else: - i += 1 - - usage_examples = \ -""" Typical usage: -dump2data.py orig_file.data < dump.lammpstrj > new_file.data - (This extracts last frame, uses "full" atom_style.) - Additional options: -dump2data.py -t t -atomstyle style orig.data < dump.lammpstrj > new.data -""" - - #if __name__ == "__main__": - - if (len(argv) > 2): - # if there are more than 2 remaining arguments, - # AND - # no other function will process the remaining argument list - # (ie. if __name__ == "__main__") - # THEN - raise InputError(' ----\n' - 'ERROR(dump2data): You have too many arguments (or unrecognized arguments):\n' - ' \"'+(' '.join(argv))+'\"\n' - ' ----\n' - +usage_examples) - elif (len(argv) < 2): - if misc_settings.output_format == 'data': - raise InputError(' ----\n' - 'ERROR(dump2data): Problem with argument list:\n' - ' Expected a LAMMPS .data file as an argument.\n' - ' ----\n' - +usage_examples) - else: - in_data_file = open(argv[1], 'r') - data_settings.file_name = argv[1]; - data_settings.contents = in_data_file.readlines() - in_data_file.close() - - #end of if-then statement for "if __name__ == "__main__"" - - if len(data_settings.i_coords) == 0: - if warning_strings != None: - warning_strings.append('WARNING(dump2data): atom_style unknown. (Use -atomstyle style. Assuming \"full\")') - warn_atom_style_unspecified = True - # The default atom_style is "full" - data_settings.column_names = AtomStyle2ColNames('full') - ii_coords = ColNames2Coords(data_settings.column_names) - # This program assumes that there is only one coordinate triplet - # (x,y,z) for each atom. Hence we assume that len(ii_coords)==1 - assert(len(ii_coords) == 1) - data_settings.i_coords = ii_coords[0] - data_settings.ii_vects = ColNames2Vects(data_settings.column_names) - data_settings.i_atomid, data_settings.i_atomtype, data_settings.i_molid = ColNames2AidAtypeMolid(data_settings.column_names) - - ### sys.stderr.write('########################################################\n' - ### '## WARNING: atom_style unspecified ##\n' - ### '## --> \"Atoms\" column data has an unknown format. ##\n' - ### '## Assuming atom_style = \"full\" ##\n' - ### '########################################################\n' - ### '## To specify the \"Atoms\" column format you can: ##\n' - ### '## 1) Use the -atom_style \"STYLE\" argument ##\n' - ### '## where \"STYLE\" is a string indicating a LAMMPS ##\n' - ### '## atom_style, including hybrid styles.(Standard ##\n' - ### '## atom styles defined in 2011 are supported.) ##\n' - ### '## 2) Use the -atom_style \"COL_LIST\" argument ##\n' - ### '## where \"COL_LIST" is a quoted list of strings ##\n' - ### '## indicating the name of each column. ##\n' - ### '## Names \"x\",\"y\",\"z\" are interpreted as ##\n' - ### '## atomic coordinates. \"mux\",\"muy\",\"muz\" ##\n' - ### '## and \"quati\",\"quatj\",\"quatk\" are ##\n' - ### '## interpreted as direction vectors. ##\n' - ### '## 3) Use the -icoord \"cx cy cz...\" argument ##\n' - ### '## where \"cx cy cz\" is a list of integers ##\n' - ### '## indicating the column numbers for the x,y,z ##\n' - ### '## coordinates of each atom. ##\n' - ### '## 4) Use the -ivect \"cmux cmuy cmuz...\" argument ##\n' - ### '## where \"cmux cmuy cmuz...\" is a list of ##\n' - ### '## integers indicating the column numbers for ##\n' - ### '## the vector that determines the direction of a ##\n' - ### '## dipole or ellipsoid (ie. a rotateable vector).##\n' - ### '## (More than one triplet can be specified. The ##\n' - ### '## number of entries must be divisible by 3.) ##\n' - ### '## 5) Include a ##\n' - ### '## write(\"in_init.txt\"){atom_style ...} ##\n' - ### '## statement in your .ttree file. ##\n' - ### '########################################################\n') - - - - -def GetIntAtomID(pair): - return int(pair[0]) - - - -def WriteFrameToData(out_file, - descr_str, - misc_settings, - data_settings, - natoms, - coords, - coords_ixiyiz, - vects, - velocities, - atomtypes, - molids, - xlo_str, xhi_str, - ylo_str, yhi_str, - zlo_str, zhi_str, - xy_str, xz_str, yz_str): - - """ - Open a data file. Read the LAMMPS DATA file line by line. - When the line contains information which is also in the dump file, - replace that information with information from the dump file. - (Information from a dump file is stored in the arguments to this function.) - The resulting file also has LAMMPS DATA format. - - """ - - section = '' - firstline = True - for line in data_settings.contents: - ic = line.find('#') - if ic != -1: - line = line[:ic] - line = line.strip() - - if firstline: # Construct a new descriptive header line: - if descr_str != None: - line = descr_str - firstline = False - - if (len(line) > 0): - # The initial section (section='') is assumed to be - # the "LAMMPS Description" section. This is where the - # box boundaries are specified. - if section == '': - tokens = line.split() - if ((len(tokens) >= 2) and - ((tokens[-2] == 'xlo') and (tokens[-1] == 'xhi')) and - ((xlo_str != None) and (xhi_str != None))): - tokens[0] = xlo_str - tokens[1] = xhi_str - line = ' '.join(tokens) - elif ((len(tokens) >= 2) and - ((tokens[-2] == 'ylo') and (tokens[-1] == 'yhi')) and - ((ylo_str != None) and (yhi_str != None))): - tokens[0] = ylo_str - tokens[1] = yhi_str - line = ' '.join(tokens) - elif ((len(tokens) >= 2) and - ((tokens[-2] == 'zlo') and (tokens[-1] == 'zhi')) and - ((zlo_str != None) and (zhi_str != None))): - tokens[0] = zlo_str - tokens[1] = zhi_str - line = ' '.join(tokens) - elif ((len(tokens) >= 3) and - ((tokens[-3] == 'xy') and - (tokens[-2] == 'xz') and - (tokens[-1] == 'yz')) and - ((xy_str != None) and - (xz_str != None) and - (yz_str != None))): - tokens[0] = xy_str - tokens[1] = xz_str - tokens[2] = yz_str - line = ' '.join(tokens) - if (line in set(['Masses', 'Velocities', 'Atoms', - 'Bond Coeffs', 'Angle Coeffs', - 'Dihedral Coeffs', 'Improper Coeffs', - 'Bonds', 'Angles', 'Dihedrals', 'Impropers'])): - section = line - else: - if (section == 'Atoms'): - tokens = line.split() - atomid = tokens[0] - - # update the atomtype and molID - # (which may change during the simulation) - if atomtypes: - tokens[data_settings.i_atomtype] = atomtypes[atomid] - if molids and data_settings.i_molid: - tokens[data_settings.i_molid] = molids[atomid] - - if atomid in coords: - # Loop over all of the vector degrees of - # freedom of the particle, excluding coords - # (for example: mu_x, mu_y, mu_z, - # or quat_i, quat_j, quat_k) - # In principle, depending on the atom_style, - # there could be multiple vectors per atom. - for I in range(0,len(data_settings.ii_vects)): - vxvyvz = vects[atomid][I] - i_vx = data_settings.ii_vects[I][0] - i_vy = data_settings.ii_vects[I][1] - i_vz = data_settings.ii_vects[I][2] - if ((i_vx >= len(tokens)) or - (i_vy >= len(tokens)) or - (i_vz >= len(tokens))): - raise InputError('Error(dump2data): Atom style incompatible with data file.\n' - ' Specify the atom_style using -atomstyle style.\n') - if ((vxvyvz == None) or - (type(vxvyvz) is not tuple)): - assert(data_settings.column_names[i_vx] not in dump_column_names) - raise InputError('Error(dump2data): You have a vector coordinate in your DATA file named \"'+data_settings.column_names[i_vx]+'\"\n' - ' However there are no columns with this name in your DUMP file\n' - ' (or the column was not in the expected place).\n' - ' Hence, the atom styles in the dump and data files do not match.') - - # Replace the vector components with numbers - # from the dump file - tokens[i_vx] = vxvyvz[0] - tokens[i_vy] = vxvyvz[1] - tokens[i_vz] = vxvyvz[2] - - # Now loop over the coordinates of each atom. - #for I in range(0,len(data_settings.ii_coords)): - # xyz = coords[atomid][I] - # THIS LOOP IS SILLY. - # EACH ATOM ONLY HAS ONE SET OF X,Y,Z - # COORDINATES. COMMENTING OUT THIS LOOP: - # i_x = data_settings.ii_coords[I][0] - # i_y = data_settings.ii_coords[I][1] - # i_z = data_settings.ii_coords[I][2] - # USING THIS INSTEAD: - - xyz = coords[atomid] - i_x = data_settings.i_coords[0] - i_y = data_settings.i_coords[1] - i_z = data_settings.i_coords[2] - if ((i_x >= len(tokens)) or - (i_y >= len(tokens)) or - (i_z >= len(tokens))): - raise InputError('Error(dump2data): Atom style incompatible with data file.\n' - ' Specify the atom_style using -atomstyle style.\n') - # Replace the coordinates with coordinates from - # the dump file into tokens[i_x]... - tokens[i_x] = str(xyz[0]) - tokens[i_y] = str(xyz[1]) - tokens[i_z] = str(xyz[2]) - - # Are there there any integer coords - # (ix, iy, iz) in the dump file? - if coords_ixiyiz[atomid]: - assert(len(coords_ixiyiz[atomid]) == 3) - # Integer coords stored in the DATA file too? - if len(tokens)==(len(data_settings.column_names)+3): - # Then replace the last 3 columns of the - # line in the data file with: ix iy iz - tokens[-3] = coords_ixiyiz[atomid][0] - tokens[-2] = coords_ixiyiz[atomid][1] - tokens[-1] = coords_ixiyiz[atomid][2] - else: - if (not misc_settings.center_frame): - # Append them to the end of the line: - tokens.append(coords_ixiyiz[atomid][0]) - tokens.append(coords_ixiyiz[atomid][1]) - tokens.append(coords_ixiyiz[atomid][2]) - - # Now finally paste all the tokens together: - line = ' '.join(tokens) - - - elif (section == 'Velocities'): - tokens = line.split() - atomid = tokens[0] - if atomid in velocities: - - vxvyvz = velocities[atomid] - if len(tokens) < 4: - raise InputError('Error(dump2data): Not enough columns in the \"Velocities\" file.\n') - # Replace the coordinates with coordinates from - # the dump file into tokens[i_x]... - tokens[1] = str(vxvyvz[0]) - tokens[2] = str(vxvyvz[1]) - tokens[3] = str(vxvyvz[2]) - - # Now finally paste all the tokens together: - line = ' '.join(tokens) - - - out_file.write(line+'\n') - - - - - - - - - - - - - - - -if __name__ == "__main__": - - g_program_name = 'dump2data.py' - g_date_str = '2015-8-11' - g_version_str = 'v0.51' - - ####### Main Code Below: ####### - sys.stderr.write(g_program_name+' '+g_version_str+' '+g_date_str+' ') - #if sys.version < '3': - # sys.stderr.write(' (python version < 3)\n') - #else: - sys.stderr.write('\n') - - try: - data_settings = DataSettings() - misc_settings = MiscSettings() - warning_strings = [] - ParseArgs(sys.argv, - misc_settings, - data_settings, - warning_strings) - - # Open the lammps dump file (trajectory file) - # Skip to the line containing the correct frame/timestep. - # (this is the last frame by default). - # Read the "BOX BOUNDS" and the "ATOMS" sections. - # Store the x,y,z coordinates in the "coords" associative array - # (indexed by atom id, which could be non-numeric in general). - - section = '' - - #coords = defaultdict(list) - #coords_ixiyiz = defaultdict(list) - #vects = defaultdict(list) - #xlo_str = xhi_str = ylo_str = yhi_str = zlo_str = zhi_str = None - #xy_str = xz_str = yz_str = None - #natoms = -1 - #timestep_str = '' - - frame_coords = defaultdict(list) - frame_coords_ixiyiz = defaultdict(list) - frame_vects = defaultdict(list) - frame_velocities = defaultdict(list) - frame_atomtypes = defaultdict(list) - frame_molid = defaultdict(list) - frame_xlo_str = frame_xhi_str = None - frame_ylo_str = frame_yhi_str = None - frame_zlo_str = frame_zhi_str = None - frame_xy_str = frame_xz_str = frame_yz_str = None - frame_natoms = -1 - frame_timestep_str = '' - i_atomid = i_atomtype = i_molid = -1 - i_x = i_y = i_z = i_xu = i_yu = i_zu = -1 - i_xs = i_ys = i_zs = i_xsu = i_ysu = i_zsu = -1 - - dump_column_names = [] - - #num_frames_in = -1 - num_frames_out = 0 - finished_reading_frame = False - read_last_frame = False - - #in_coord_file = open('traj_nvt.lammpstrj','r') - #in_coord_file = open('deleteme.lammpstrj','r') - in_coord_file = sys.stdin - - while True: - - line = in_coord_file.readline() - if line == '': # if EOF - if len(frame_coords) > 0: - finished_reading_frame = True - read_last_frame = True - - line = line.strip() - if (line.find('ITEM:') == 0): - section = line - if (section.find('ITEM: ATOMS ') == 0): - dump_column_names = line[12:].split() - i_atomid, i_atomtype, i_molid = \ - ColNames2AidAtypeMolid(dump_column_names) - #ii_coords = ColNames2Coords(dump_column_names) - - x_already_unwrapped = False - y_already_unwrapped = False - z_already_unwrapped = False - - if 'x' in dump_column_names: - i_x = dump_column_names.index('x') - elif 'xu' in dump_column_names: - i_xu = dump_column_names.index('xu') - x_already_unwrapped = True - elif 'xs' in dump_column_names: - i_xs = dump_column_names.index('xs') - elif 'xsu' in dump_column_names: - i_xsu = dump_column_names.index('xsu') - x_already_unwrapped = True - else: - raise InputError('Error(dump2data): \"ATOMS\" section of dump file lacks a \"x\" column.\n'+ - ' (excerpt below)\n' + line) - - if 'y' in dump_column_names: - i_y = dump_column_names.index('y') - elif 'yu' in dump_column_names: - i_yu = dump_column_names.index('yu') - y_already_unwrapped = True - elif 'ys' in dump_column_names: - i_ys = dump_column_names.index('ys') - elif 'ysu' in dump_column_names: - i_ysu = dump_column_names.index('ysu') - y_already_unwrapped = True - else: - raise InputError('Error(dump2data): \"ATOMS\" section of dump file lacks a \"y\" column.\n'+ - ' (excerpt below)\n' + line) - - if 'z' in dump_column_names: - i_z = dump_column_names.index('z') - elif 'zu' in dump_column_names: - i_zu = dump_column_names.index('zu') - z_already_unwrapped = True - elif 'zs' in dump_column_names: - i_zs = dump_column_names.index('zs') - elif 'zsu' in dump_column_names: - i_zsu = dump_column_names.index('zsu') - z_already_unwrapped = True - else: - raise InputError('Error(dump2data): \"ATOMS\" section of dump file lacks a \"z\" column.\n'+ - ' (excerpt below)\n' + line) - - - - - - ii_vects = ColNames2Vects(dump_column_names) - if (len(ii_vects) != len(data_settings.ii_vects)): - raise InputError('Error(dump2data): atom styles in data and dump files differ.\n' - ' Some needed columns from the atom_styles are missing in the dump file.') - - i_ix = i_iy = i_iz = -1 - if 'ix' in dump_column_names: - i_ix = dump_column_names.index('ix') - if 'iy' in dump_column_names: - i_iy = dump_column_names.index('iy') - if 'iz' in dump_column_names: - i_iz = dump_column_names.index('iz') - - - i_vx = i_vy = i_vz = -1 - if 'vx' in dump_column_names: - i_vx = dump_column_names.index('vx') - if 'vy' in dump_column_names: - i_vy = dump_column_names.index('vy') - if 'vz' in dump_column_names: - i_vz = dump_column_names.index('vz') - - elif (section.find('ITEM: BOX BOUNDS') == 0): - avec=[1.0, 0.0, 0.0] - bvec=[0.0, 1.0, 0.0] - cvec=[0.0, 0.0, 1.0] - - elif (section.find('ITEM: TIMESTEP') == 0): - if len(frame_coords) > 0: - finished_reading_frame = True - - elif ((len(line) > 0) and (line[0] != '#')): - if (section.find('ITEM: TIMESTEP') == 0): - finished_reading_frame = False - frame_timestep_str = line - frame_coords = defaultdict(list) - frame_coords_ixiyiz = defaultdict(list) - frame_vects = defaultdict(list) - frame_velocities = defaultdict(list) - frame_atomtypes = defaultdict(list) - frame_molids = defaultdict(list) - frame_xlo_str = frame_xhi_str = None - frame_ylo_str = frame_yhi_str = None - frame_zlo_str = frame_zhi_str = None - frame_xy_str = frame_xz_str = frame_yz_str = None - - elif (section == 'ITEM: NUMBER OF ATOMS'): - frame_natoms = int(line) - - elif (section.find('ITEM: BOX BOUNDS') == 0): - is_triclinic = (section.find('xy xz yz') == 0) - - tokens = line.split() - if not frame_xlo_str: - assert(not frame_xhi_str) - frame_xlo_str = tokens[0] - frame_xhi_str = tokens[1] - avec[0] = float(frame_xhi_str) - float(frame_xlo_str) - if (is_triclinic and (len(tokens) > 2)): - frame_xy_str = tokens[2] - bvec[0] = float(frame_xy_str) - #See http://lammps.sandia.gov/doc/Section-howto.html#howto_12 - #sys.stderr.write('avec='+str(avec)+'\n') - - elif not frame_ylo_str: - assert(not frame_yhi_str) - frame_ylo_str = tokens[0] - frame_yhi_str = tokens[1] - bvec[1] = float(frame_yhi_str) - float(frame_ylo_str) - if (is_triclinic and (len(tokens) > 2)): - frame_xz_str = tokens[2] - cvec[0] = float(frame_xz_str) - #See http://lammps.sandia.gov/doc/Section-howto.html#howto_12 - #sys.stderr.write('bvec='+str(bvec)+'\n') - - elif not frame_zlo_str: - assert(not frame_zhi_str) - frame_zlo_str = tokens[0] - frame_zhi_str = tokens[1] - cvec = [0.0, 0.0, float(frame_zhi_str) - float(frame_zlo_str)] - if (is_triclinic and (len(tokens) > 2)): - frame_yz_str = tokens[2] - cvec[1] = float(frame_yz_str) - #See http://lammps.sandia.gov/doc/Section-howto.html#howto_12 - #sys.stderr.write('cvec='+str(cvec)+'\n') - - elif (section.find('ITEM: ATOMS') == 0): - tokens = line.split() - atomid = tokens[i_atomid] - atomtype = tokens[i_atomtype] - frame_atomtypes[atomid] = atomtype - if i_molid: - molid = tokens[i_molid] - frame_molids[atomid] = molid - - if ((i_x != -1) and (i_y != -1) and (i_z != -1)): - x = float(tokens[i_x]) #i_x determined above - y = float(tokens[i_y]) - z = float(tokens[i_z]) - - elif ((i_xu != -1) and (i_yu != -1) and (i_zu != -1)): - x = float(tokens[i_xu]) #i_x determined above - y = float(tokens[i_yu]) - z = float(tokens[i_zu]) - - elif ((i_xs != -1) and (i_ys != -1) and (i_zs != -1)): - xs = float(tokens[i_xs]) #i_xs determined above - ys = float(tokens[i_ys]) - zs = float(tokens[i_zs]) - - x = float(xlo_str) + xs*avec[0] + ys*bvec[0] + zs*cvec[0] - y = float(ylo_str) + xs*avec[1] + ys*bvec[1] + zs*cvec[1] - z = float(zlo_str) + xs*avec[2] + ys*bvec[2] + zs*cvec[2] - - # avec, bvec, cvec described here: - #http://lammps.sandia.gov/doc/Section-howto.html#howto_12 - - elif ((i_xsu != -1) and (i_ysu != -1) and (i_zsu != -1)): - xsu = float(tokens[i_xsu]) #i_xs determined above - ysu = float(tokens[i_ysu]) - zsu = float(tokens[i_zsu]) - - x = float(xlo_str) + xsu*avec[0] + ysu*bvec[0] + zsu*cvec[0] - y = float(ylo_str) + xsu*avec[1] + ysu*bvec[1] + zsu*cvec[1] - z = float(zlo_str) + xsu*avec[2] + ysu*bvec[2] + zsu*cvec[2] - - # Now deal with ix, iy, iz - if (i_ix != -1) and (not x_already_unwrapped): - ix = int(tokens[i_ix]) - if (misc_settings.center_frame or - (misc_settings.output_format != 'data')): - #sys.stderr.write('atomid='+str(atomid)+', ix = '+str(ix)+', avec='+str(avec)+'\n') - x += ix*avec[0] - y += ix*avec[1] - z += ix*avec[2] - else: - if atomid not in frame_coords_ixiyiz: - frame_coords_ixiyiz[atomid] = ["0", "0", "0"] - frame_coords_ixiyiz[atomid][0] = str(ix) - - if (i_iy != -1) and (not y_already_unwrapped): - iy = int(tokens[i_iy]) - if (misc_settings.center_frame or - (misc_settings.output_format != 'data')): - #sys.stderr.write('atomid='+str(atomid)+', iy = '+str(iy)+', bvec='+str(bvec)+'\n') - x += iy*bvec[0] - y += iy*bvec[1] - z += iy*bvec[2] - else: - if atomid not in frame_coords_ixiyiz: - frame_coords_ixiyiz[atomid] = ["0", "0", "0"] - frame_coords_ixiyiz[atomid][1] = str(iy) - - if (i_iz != -1) and (not z_already_unwrapped): - iz = int(tokens[i_iz]) - if (misc_settings.center_frame or - (misc_settings.output_format != 'data')): - #sys.stderr.write('atomid='+str(atomid)+', iz = '+str(iz)+', cvec='+str(cvec)+'\n') - x += iz*cvec[0] - y += iz*cvec[1] - z += iz*cvec[2] - else: - if atomid not in frame_coords_ixiyiz: - frame_coords_ixiyiz[atomid] = ["0", "0", "0"] - frame_coords_ixiyiz[atomid][2] = str(iz) - - #frame_coords[atomid] = [str(x), str(y), str(z)] - frame_coords[atomid] = [x, y, z] - - vx = 0.0 - vy = 0.0 - vz = 0.0 - if i_vx != -1: - vx = float(tokens[i_vx]) - if i_vy != -1: - vy = float(tokens[i_vy]) - if i_vz != -1: - vz = float(tokens[i_vz]) - - frame_velocities[atomid] = [vx, vy, vz] - - # Ugly detail: - # There can be multiple "vects" associated with each atom - # (for example, dipole moments, ellipsoid directions, etc..) - - if atomid not in frame_vects: - frame_vects[atomid] = [None for I in range(0,len(ii_vects))] - - for I in range(0, len(ii_vects)): - i_vx = ii_vects[I][0] - i_vy = ii_vects[I][1] - i_vz = ii_vects[I][2] - vx_str = tokens[i_vx] - vy_str = tokens[i_vy] - vz_str = tokens[i_vz] - - # Now the annoying part: - # Which vect is it (mux,muy,muz) or (quati,quatj,quatk)? - # The columns could be listed in a different order - # in the data file and in the dump file. - # Figure out which vector it is in the data file (stored - # in the integer "I_data") so that column names match. - name_vx = dump_column_names[i_vx] - name_vy = dump_column_names[i_vy] - name_vz = dump_column_names[i_vz] - i_vx_data = 0 - I_data = -1 - # This code is ugly and inneficient. - # I never want to touch this code again. (Hope it works) - while i_vx_data < len(data_settings.column_names): - if name_vx == data_settings.column_names[i_vx_data]: - I_data = 0 - while I_data < len(data_settings.ii_vects): - if ii_vects[I] == data_settings.ii_vects[I_data]: - break - I_data += 1 - - if (0= - # float(misc_settings.timestep_str)): - # num_frames_in = 1 - # if not misc_settings.multi: - # read_last_frame = True - # else: - # num_frames_in = 1 - - - - # Should we write out the coordinates in this frame? - write_this_frame = False - - if misc_settings.multi: - - write_this_frame = True - if (misc_settings.tstart and - (int(frame_timestep_str) < misc_settings.tstart)): - write_this_frame = False - if (misc_settings.tstop and - (int(frame_timestep_str) > misc_settings.tstop)): - write_this_frame = False - read_last_frame = True - - if misc_settings.tstart: - tstart = misc_settings.tstart - else: - tstart = 0 - - if ((int(frame_timestep_str) - tstart) - % - misc_settings.skip_interval) != 0: - write_this_frame = False - - else: - if misc_settings.last_frame: - if read_last_frame: - write_this_frame = True - else: - assert(misc_settings.timestep_str) - if (int(frame_timestep_str) >= - int(misc_settings.timestep_str)): - write_this_frame = True - read_last_frame = True - - - if write_this_frame: - - num_frames_out += 1 - - sys.stderr.write(' (writing frame '+str(num_frames_out)+ - ' at timestep '+frame_timestep_str+')\n') - - - # Print the frame - # First check which format to output the data: - if misc_settings.output_format == 'raw': - # Print out the coordinates in simple 3-column text format - for atomid, xyz in iter(sorted(frame_coords.items(), key=GetIntAtomID)): - if misc_settings.scale == None: - sys.stdout.write(str(xyz[0])+' '+str(xyz[1])+' '+str(xyz[2])+'\n') - else: - # Only convert to float and back if misc_settings.scale != None - sys.stdout.write(str(misc_settings.scale*float(xyz[0]))+' '+ - str(misc_settings.scale*float(xyz[1]))+' '+ - str(misc_settings.scale*float(xyz[2]))+'\n') - sys.stdout.write('\n') - - elif misc_settings.output_format == 'xyz': - # Print out the coordinates in simple 3-column text format - sys.stdout.write(str(len(frame_coords))+'\n') - descr_str = 'LAMMPS data from timestep '+frame_timestep_str - sys.stdout.write(descr_str+'\n') - for atomid, xyz in iter(sorted(frame_coords.items(), key=GetIntAtomID)): - if misc_settings.scale == None: - sys.stdout.write(str(atomid)+' '+ - str(xyz[0])+' '+ - str(xyz[1])+' '+ - str(xyz[2])+'\n') - else: - # Only convert to float and back if misc_settings.scale != None - sys.stdout.write(str(atomid)+' '+ - str(misc_settings.scale*float(xyz[0]))+' '+ - str(misc_settings.scale*float(xyz[1]))+' '+ - str(misc_settings.scale*float(xyz[2]))+'\n') - - else: - # Parse the DATA file specified by the user - # and replace appropriate lines or fields with - # the corresponding text from the DUMP file. - descr_str = 'LAMMPS data from timestep '+frame_timestep_str - if misc_settings.multi and (misc_settings.output_format == 'data'): - out_file_name = data_settings.file_name + '.'\ - + str(num_frames_out) - sys.stderr.write(' (creating file \"'+out_file_name+'\")\n') - out_file = open(out_file_name, 'w') - else: - out_file = sys.stdout - - WriteFrameToData(out_file, - descr_str, - misc_settings, - data_settings, - frame_natoms, - frame_coords, - frame_coords_ixiyiz, - frame_vects, - frame_velocities, - frame_atomtypes, - frame_molids, - frame_xlo_str, frame_xhi_str, - frame_ylo_str, frame_yhi_str, - frame_zlo_str, frame_zhi_str, - frame_xy_str, frame_xz_str, frame_yz_str) - - #if misc_settings.multi: - # out_file.close() - - - #if num_frames_in >= 0: - # num_frames_in += 1 - - - if read_last_frame: - exit(0) - - - for warning_str in warning_strings: - sys.stderr.write(warning_str+'\n') - - - - except (ValueError, InputError) as err: - sys.stderr.write('\n'+str(err)+'\n') - sys.exit(-1) - diff --git a/tools/moltemplate/src/extract_lammps_data.py b/tools/moltemplate/src/extract_lammps_data.py deleted file mode 100644 index 4fe3ec743d..0000000000 --- a/tools/moltemplate/src/extract_lammps_data.py +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env python - -lammps_data_sections = set(['Atoms', - 'Masses', - 'Bonds', - 'Bond Coeffs', - 'Angles', - 'Angle Coeffs', - 'Dihedrals', - 'Dihedral Coeffs', - 'Impropers', - 'Improper Coeffs', - 'BondBond Coeffs', # class2 angles - 'BondAngle Coeffs', # class2 angles - 'MiddleBondTorsion Coeffs', # class2 dihedrals - 'EndBondTorsion Coeffs', # class2 dihedrals - 'AngleTorsion Coeffs', # class2 dihedrals - 'AngleAngleTorsion Coeffs', # class2 dihedrals - 'BondBond13 Coeffs', # class2 dihedrals - 'AngleAngle Coeffs', # class2 impropers - 'Angles By Type', # new. not standard LAMMPS - 'Dihedrals By Type',# new. not standard LAMMPS - 'Angles By Type']) # new. not standard LAMMPS - - -def DeleteComments(string, - escape='\\', - comment_char='#'): - escaped_state = False - for i in range(0,len(string)): - if string[i] in escape: - if escaped_state: - escaped_state = False - else: - escaped_state = True - elif string[i] == comment_char: - if not escaped_state: - return string[0:i] - return string - - - -def ExtractDataSection(f, - section_name, - comment_char = '#', - include_section_name = False, - return_line_nums = False): - - inside_section = False - if section_name in ('header','Header'): #"Header" section includes beginning - inside_section = True - - nonblank_encountered = False - nonheader_encountered = False - - i = 0 - for line_orig in f: - return_this_line = False - line = DeleteComments(line_orig).strip() - if line in lammps_data_sections: - nonheader_encountered = True - if section_name in ('header', 'Header'): - # The "header" section includes all lines at the beginning of the - # before any other section is encountered. - if nonheader_encountered: - return_this_line = False - else: - return_this_line = True - elif line == section_name: - inside_section = True - nonblank_encountered = False - if include_section_name: - return_this_line = True - # A block of blank lines (which dont immediately follow - # the section_name) signal the end of a section: - elif len(line) == 0: - if inside_section and include_section_name: - return_this_line = True - if nonblank_encountered: - inside_section = False - elif line[0] != comment_char: - if inside_section: - nonblank_encountered = True - return_this_line = True - - if return_this_line: - if return_line_nums: - yield i - else: - yield line_orig - - i += 1 - - - -if __name__ == "__main__": - - import sys - lines = sys.stdin.readlines() - exclude_sections = False - if sys.argv[1] == '-n': - exclude_sections = True - del sys.argv[1] - - if not exclude_sections: - for section_name in sys.argv[1:]: - for line in ExtractDataSection(lines, section_name): - sys.stdout.write(line) - else: - line_nums_exclude = set([]) - for section_name in sys.argv[1:]: - for line_num in ExtractDataSection(lines, - section_name, - include_section_name=True, - return_line_nums=True): - line_nums_exclude.add(line_num) - for i in range(0, len(lines)): - if i not in line_nums_exclude: - sys.stdout.write(lines[i]) diff --git a/tools/moltemplate/src/ltemplify.py b/tools/moltemplate/src/ltemplify.py deleted file mode 100644 index 3ce6cb8e76..0000000000 --- a/tools/moltemplate/src/ltemplify.py +++ /dev/null @@ -1,3361 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# Author: Andrew Jewett (jewett.aij at g mail) -# http://www.chem.ucsb.edu/~sheagroup -# License: 3-clause BSD License (See LICENSE.TXT) -# Copyright (c) 2012, Regents of the University of California -# All rights reserved. - -""" -ltemplify.py - -The "ltemplify.py" script can be used to convert existing LAMMPS -input script and data files into a single .lt file -(which includes both topology and force-field information - for a single molecule in your system). - -Example: - - ltemplify.py -name Mol file.in file.data > mol.lt - -This creates a template for a new type of molecule (named "Mol"), -consisting of all the atoms in the lammps files you included, -and saves this data in a single ttree file ("mol.lt"). -This file can be used with moltemplate (ttree) to -define large systems containing this molecule. - -""" - -import sys -from ttree_lex import * -from lttree_styles import * - - - -def Intify(s): - if s.isdigit(): - return int(s) - elif s[0:2] == 'id': - return int(s[2:]) - elif s[0:4] == 'type': - return int(s[4:]) - else: - return s - - -def IsNumber(s): - try: - float(s) - return True - except ValueError, TypeError: - return False - -def StringToInterval(sel_str, slice_delim='*'): - # Split a string into 1-3 tokens using the slice_delim and convert to int. - # What a mess. I should rewrite this function - - i_slice = sel_str.find(slice_delim) - - if i_slice == -1: - a = sel_str - b = sel_str - c = '' - else: - a = sel_str[:i_slice] - bc = sel_str[i_slice+len(slice_delim):] - b = '' - c = '' - i_slice = bc.find(slice_delim) - if i_slice == -1: - b = bc - c = '' - else: - b = bc[:i_slice] - c = bc[i_slice+len(slice_delim):] - - if a == '': - a = None - elif a.isdigit(): - a = int(a) - else: - raise InputError('Error: invalid selection string \"'+ - sel_str+'\"\n') - - if b == '': - b = None - elif b.isdigit(): - b = int(b) - else: - raise InputError('Error: invalid selection string \"'+ - sel_str+'\"\n') - - if c == '': - c = None - elif c.isdigit(): - c = int(c) - else: - raise InputError('Error: invalid selection string \"'+ - sel_str+'\"\n') - - if c == None: - return (a,b) - else: - return (a,b,c) - - - -# Selections are simply lists of 2-tuples (pairs) - -def LammpsSelectToIntervals(sel_str, slice_delim='*', or_delim=', '): - - """ - This function converts a string such as "1*4 6 9*12 50*70*10" into - a list of tuples, for example: [(1,4), (6,6), (9,12), (50,50), (60,60), (70,70)] - In general, the of intervals has the form: - [(a1,b1), (a2,b2), (a3,b3), ... ] - - An atom is considered to belong to this selection - if it happens to lie within the closed interval [a,b] - for any pair of a,b values in the list of intervals. - If for a given pair a,b, either a or b is "None", then that a or b - value is not used to disqualify membership in the interval. - (Similar to -infinity or +infinity. In other words if a is set to None, - then to belong to the interval it is enough to be less than b.) - - """ - selection_list = [] - #tokens = sel_str.split(or_delim) <-- Not what we want when len(or_delim)>1 - tokens = LineLex.TextBlock2Lines(sel_str, or_delim, keep_delim=False) - for token in tokens: - token = token.strip() - interval = StringToInterval(token, slice_delim) - - if len(interval)==2: - # Normally, "interval" should be a tuple containing 2 entries - selection_list.append(interval) - else: - assert(len(interval)==3) - # Handle 1000:2000:10 notation - # (corresponding to 1000, 1010, 1020, 1030, ..., 1990, 2000) - a=interval[0] - b=interval[1] - incr=interval[2] - i=a - while i<=b: - selection_list.append((i,i)) - i += incr - - return selection_list - - -def IntervalListToMinMax(interval_list): - min_a = None - max_b = None - for (a,b) in interval_list: - if ((not (type(a) is int)) or (not (type(b) is int))): - return None,None #only integer min/max makes sense. otherwise skip - - if (min_a == None) or (a < min_a): - min_a = a - if (max_b == None) or (b > max_b): - max_b = b - return min_a, max_b - - -def MergeIntervals(interval_list): - """ - A crude simple function that merges consecutive intervals in the list - whenever they overlap. (This function does not bother to compare - non-consecutive entries in the interval_list.) - - """ - i = 1 - while i < len(interval_list): - if ((interval_list[i-1][1] == None) or - (interval_list[i-1][1]+1 >= interval_list[i][0])): - interval_list[i-1] = (interval_list[i-1][0], interval_list[i][1]) - del interval_list[i] - else: - i += 1 - - -def BelongsToSel(i, sel): - if (i == None) or (sel == None) or (len(sel) == 0): - # If the user has not specified a selection for this category, - # then by default all objects are accepted - return True - - elif (type(i) is str): - if i.isdigit(): - i = int(i) - else: - return True - - belongs = False - for interval in sel: - assert(len(interval) == 2) - if interval[0]: - if i >= interval[0]: - if (interval[1] == None) or (i <= interval[1]): - belongs = True - break - elif interval[1]: - if i <= interval[1]: - belongs = True - break - else: - # In that case, the user entered something like "*" - # which covers all possible numbers - belongs = True - break - - return belongs - - - -try: - - g_program_name = __file__.split('/')[-1] # = 'ltemplify.py' - g_version_str = '0.51' - g_date_str = '2015-10-27' - sys.stderr.write(g_program_name+' v'+g_version_str+' '+g_date_str+'\n') - - non_empty_output = False - no_warnings = True - indent = 2 - cindent = 0 - atomid_selection = [] - atomtype_selection = [] - molid_selection = [] - mol_name = '' - - min_sel_atomid = None - min_sel_atomtype = None - min_sel_bondid = None - min_sel_bondtype = None - min_sel_angleid = None - min_sel_angletype = None - min_sel_dihedralid = None - min_sel_dihedraltype = None - min_sel_improperid = None - min_sel_impropertype = None - - max_sel_atomid = None - max_sel_atomtype = None - max_sel_bondid = None - max_sel_bondtype = None - max_sel_angleid = None - max_sel_angletype = None - max_sel_dihedralid = None - max_sel_dihedraltype = None - max_sel_improperid = None - max_sel_impropertype = None - - needed_atomids = set([]) - needed_atomtypes = set([]) - needed_molids = set([]) - needed_bondids = set([]) - needed_bondtypes = set([]) - needed_angleids = set([]) - needed_angletypes = set([]) - needed_dihedralids = set([]) - needed_dihedraltypes = set([]) - needed_improperids = set([]) - needed_impropertypes = set([]) - - min_needed_atomtype = None - max_needed_atomtype = None - min_needed_bondtype = None - max_needed_bondtype = None - min_needed_angletype = None - max_needed_angletype = None - min_needed_dihedraltype = None - max_needed_dihedraltype = None - min_needed_impropertype = None - max_needed_impropertype = None - - min_needed_atomid = None - max_needed_atomid = None - min_needed_molid = None - max_needed_molid = None - min_needed_bondid = None - max_needed_bondid = None - min_needed_angleid = None - max_needed_angleid = None - min_needed_dihedralid = None - max_needed_dihedralid = None - min_needed_improperid = None - max_needed_improperid = None - - - # To process the selections, we need to know the atom style: - atom_style_undefined = True - - i_atomid = None - i_atomtype = None - i_molid = None - i_x = None - i_y = None - i_z = None - - l_in_init = [] - l_in_settings = [] - l_in_masses = [] - l_in_pair_coeffs = [] - l_in_bond_coeffs = [] - l_in_angle_coeffs = [] - l_in_dihedral_coeffs = [] - l_in_improper_coeffs = [] - l_in_group = [] - l_in_fix_shake = [] - l_in_fix_rigid = [] - l_in_fix_poems = [] - l_in_fix_qeq = [] - l_in_fix_qmmm = [] - l_data_masses = [] - l_data_bond_coeffs = [] - l_data_angle_coeffs = [] - l_data_dihedral_coeffs = [] - l_data_improper_coeffs = [] - l_data_pair_coeffs = [] - l_data_pairij_coeffs = [] - l_data_atoms = [] - l_data_velocities = [] - l_data_bonds = [] - l_data_angles = [] - l_data_dihedrals = [] - l_data_impropers = [] - - # class2 force fields - #l_in_bondbond_coeffs = [] <--not needed, included in l_in_angle_coeff - #l_in_bondangle_coeffs = [] <--not needed, included in l_in_angle_coeff - #l_in_middlebondtorsion_coeffs = [] not needed, included in l_in_dihedral_coeff - #l_in_endbondtorsion_coeffs = [] <--not needed, included in l_in_dihedral_coeff - #l_in_angletorsion_coeffs = [] <--not needed, included in l_in_dihedral_coeff - #l_in_angleangletorsion_coeffs = [] not needed, included in l_in_dihedral_coeff - #l_in_bondbond13_coeffs = [] <--not needed, included in l_in_dihedral_coeff - #l_in_angleangle_coeffs = [] <--not needed, included in l_in_improper_coeff - l_data_bondbond_coeffs = [] - l_data_bondangle_coeffs = [] - l_data_middlebondtorsion_coeffs = [] - l_data_endbondtorsion_coeffs = [] - l_data_angletorsion_coeffs = [] - l_data_angleangletorsion_coeffs = [] - l_data_bondbond13_coeffs = [] - l_data_angleangle_coeffs = [] - - # non-point-like particles: - l_data_ellipsoids = [] - l_data_lines = [] - l_data_triangles = [] - - # automatic generation of bonded interactions by type: - l_data_angles_by_type = [] - l_data_dihedrals_by_type = [] - l_data_impropers_by_type = [] - - atoms_already_read = False - some_pair_coeffs_read = False - complained_atom_style_mismatch = False - infer_types_from_comments = False - remove_coeffs_from_data_file = True - - argv = [arg for arg in sys.argv] - - i = 1 - - while i < len(argv): - - #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') - - if argv[i] == '-columns': - if i+1 >= len(argv): - raise InputError('Error: the \"'+argv[i]+'\" argument should be followed by a quoted\n' - ' string which contains a space-delimited list of the names of\n' - ' of columns in the \"Atoms\" section of the LAMMPS data file.\n' - ' If the list contains the symbols:\n' - ' \"atom-ID\" or \"atomid\", they are interpreted\n' - ' as unique atom ID numbers, and columns named\n' - ' \"atom-type\" or \"atomtype\" are interpreted\n' - ' as atom types. Finally, columns named\n' - ' \"molecule-ID\", \"molecule\", or \"mol-ID\", or \"mol\"\n' - ' are interpreted as unique molecule id numbers.\n' - 'Example:\n' - ' '+argv[i]+' \'atom-ID atom-type q polarizability molecule-ID x y z\'\n' - ' defines a custom atom_style containing the properties\n' - ' atom-ID atom-type q polarizability molecule-ID x y z\n' - ' Make sure you enclose the entire list in quotes.\n'); - column_names = argv[i+1].strip('\"\'').strip().split() - del argv[i:i+2] - - elif (argv[i] == '-ignore-comments'): - infer_types_from_comments = False - del argv[i:i+1] - - elif (argv[i] == '-infer-comments'): - infer_types_from_comments = True - del argv[i:i+1] - - elif ((argv[i] == '-name') or - (argv[i] == '-molname') or - (argv[i] == '-molecule-name') or - (argv[i] == '-molecule_name')): - if i+1 >= len(argv): - raise InputError('Error: '+argv[i]+' flag should be followed by a a molecule type name.\n') - cindent = 2 - indent += cindent - mol_name = argv[i+1] - del argv[i:i+2] - - elif ((argv[i].lower() == '-atomstyle') or - (argv[i].lower() == '-atom_style') or - (argv[i].lower() == '-atom-style')): - if i+1 >= len(argv): - raise InputError('Error: '+argv[i]+' flag should be followed by a an atom_style name.\n' - ' (or single quoted string which includes a space-separated\n' - ' list of column names).\n') - atom_style_undefined = False - column_names = AtomStyle2ColNames(argv[i+1]) - if (argv[i+1].strip().split()[0] in g_style_map): - l_in_init.append((' '*indent) + 'atom_style ' + argv[i+1] + '\n') - sys.stderr.write('\n \"Atoms\" column format:\n') - sys.stderr.write(' '+(' '.join(column_names))+'\n') - i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid(column_names) - # Which columns contain the coordinates? - ii_coords = ColNames2Coords(column_names) - assert(len(ii_coords) == 1) - i_x = ii_coords[0][0] - i_y = ii_coords[0][1] - i_z = ii_coords[0][2] - - if i_molid: - sys.stderr.write(' (i_atomid='+str(i_atomid+1)+', i_atomtype='+str(i_atomtype+1)+', i_molid='+str(i_molid+1)+')\n\n') - else: - sys.stderr.write(' (i_atomid='+str(i_atomid+1)+', i_atomtype='+str(i_atomtype+1)+')\n') - del argv[i:i+2] - - elif ((argv[i].lower() == '-id') or - #(argv[i].lower() == '-a') or - #(argv[i].lower() == '-atoms') or - (argv[i].lower() == '-atomid') or - #(argv[i].lower() == '-atomids') or - (argv[i].lower() == '-atom-id') - #(argv[i].lower() == '-atom-ids') or - #(argv[i].lower() == '-$atom') or - #(argv[i].lower() == '-$atoms') - ): - if i+1 >= len(argv): - raise InputError('Error: '+argv[i]+' flag should be followed by a list of integers\n' - ' (or strings). These identify the group of atoms you want to\n' - ' to include in the template you are creating.\n') - atomid_selection += LammpsSelectToIntervals(argv[i+1]) - min_sel_atomid, max_sel_atomid = IntervalListToMinMax(atomid_selection) - del argv[i:i+2] - elif ((argv[i].lower() == '-datacoeffs') or - (argv[i].lower() == '-datacoeff') or - (argv[i].lower() == '-Coeff') or - (argv[i].lower() == '-Coeffs')): - remove_coeffs_from_data_file = False - del argv[i:i+1] - elif ((argv[i].lower() == '-type') or - #(argv[i].lower() == '-t') or - (argv[i].lower() == '-atomtype') or - (argv[i].lower() == '-atom-type') - #(argv[i].lower() == '-atomtypes') or - #(argv[i].lower() == '-atom-types') or - #(argv[i].lower() == '-@atom') or - #(argv[i].lower() == '-@atoms') or - #(argv[i].lower() == '-@atomtype') or - #(argv[i].lower() == '-@atomtypes') - ): - if i+1 >= len(argv): - raise InputError('Error: '+argv[i]+' flag should be followed by a list of integers.\n' - ' (or strings). These identify the group of atom types you want to\n' - ' to include in the template you are creating.\n') - atomtype_selection += LammpsSelectToIntervals(argv[i+1]) - min_sel_atomtype, max_sel_atomtype = IntervalListToMinMax(atomtype_selection) - del argv[i:i+2] - elif ((argv[i].lower() == '-mol') or - #(argv[i].lower() == '-m') or - (argv[i].lower() == '-molid') or - #(argv[i].lower() == '-molids') or - (argv[i].lower() == '-mol-id') or - #(argv[i].lower() == '-mol-ids') or - #(argv[i].lower() == '-molecule') or - (argv[i].lower() == '-moleculeid') or - (argv[i].lower() == '-molecule-id') - #(argv[i].lower() == '-molecules') or - #(argv[i].lower() == '-molecule-ids') or - #(argv[i].lower() == '-$mol') or - #(argv[i].lower() == '-$molecule') - ): - if i+1 >= len(argv): - sys.stderr.write('Error: '+argv[i]+' flag should be followed by a list of integers.\n' - ' (or strings). These identify the group of molecules you want to\n' - ' include in the template you are creating.\n') - molid_selection += LammpsSelectToIntervals(argv[i+1]) - del argv[i:i+2] - else: - i += 1 - - # We might need to parse the simulation boundary-box. - # If so, use these variables. (None means uninitialized.) - boundary_xlo = None - boundary_xhi = None - boundary_ylo = None - boundary_yhi = None - boundary_zlo = None - boundary_zhi = None - boundary_xy = None - boundary_yz = None - boundary_xz = None - - # atom type names - atomtypes_name2int = {} - atomtypes_int2name = {} - #atomids_name2int = {} not needed - atomids_int2name = {} - atomids_by_type = {} - - - if atom_style_undefined: - # The default atom_style is "full" - column_names = AtomStyle2ColNames('full') - i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid(column_names) - # Which columns contain the coordinates? - ii_coords = ColNames2Coords(column_names) - assert(len(ii_coords) == 1) - i_x = ii_coords[0][0] - i_y = ii_coords[0][1] - i_z = ii_coords[0][2] - - #--------------------------------------------------------- - #-- The remaining arguments are files that the user wants - #-- us to read and convert. It is typical to have - #-- multiple input files, because LAMMPS users often - #-- store their force field parameters in either the LAMMPS - #-- data files and input script files, or both. - #-- We want to search all of the LAMMPS input files in - #-- order to make sure we extracted all the force field - #-- parameters (coeff commands). - #--------------------------------------------------------- - - for i_arg in range(1,len(argv)): - fname = argv[i_arg] - try: - lammps_file = open(fname, 'r') - except IOError: - raise InputError('Error: unrecognized argument (\"'+fname+'\"),\n' - ' OR unable to open file:\n' - '\n' - ' \"'+fname+'\"\n' - ' for reading.\n' - '\n' - ' (If you were not trying to open a file with this name,\n' - ' then there is a problem in your argument list.)\n') - - sys.stderr.write('reading file \"'+fname+'\"\n') - - atomid2type = {} - atomid2mol = {} - data_file_header_names = set(['LAMMPS Description', - 'Atoms', 'Masses', 'Velocities', 'Bonds', - 'Angles', 'Dihedrals', 'Impropers', - 'Pair Coeffs', - 'Bond Coeffs', 'Angle Coeffs', - 'Dihedral Coeffs', 'Improper Coeffs', - #class2 force fields: - 'BondBond Coeffs', 'BondAngle Coeffs', - 'MiddleBondTorsion Coeffs', 'EndBondTorsion Coeffs', - 'AngleTorsion Coeffs', 'AngleAngleTorsion Coeffs', - 'BondBond13 Coeffs', - 'AngleAngle Coeffs', - # non-point-like particles: - 'Ellipsoids', 'Triangles', 'Lines', - #specifying bonded interactions by type: - 'Angles By Type', 'Dihedrals By Type', 'Impropers By Type' - ]) - - lex=LineLex(lammps_file, fname) - lex.source_triggers = set(['include','import']) - # set up lex to accept most characters in file names: - lex.wordterminators = '(){}' + lex.whitespace - # set up lex to understand the "include" statement: - lex.source = 'include' - lex.escape = '\\' - - while lex: - infile = lex.infile - lineno = lex.lineno - line = lex.ReadLine() - if (lex.infile != infile): - infile = lex.infile - lineno = lex.lineno - - #sys.stderr.write(' processing \"'+line.strip()+'\", (\"'+infile+'\":'+str(lineno)+')\n') - - if line == '': - break - - tokens = line.strip().split() - if (len(tokens) > 0): - if ((tokens[0] == 'atom_style') and - atom_style_undefined): - - sys.stderr.write(' Atom Style found. Processing: \"'+line.strip()+'\"\n') - if atoms_already_read: - raise InputError('Error: The file containing the \"atom_style\" command must\n' - ' come before the data file in the argument list.\n' - ' (The templify program needs to know the atom style before reading\n' - ' the data file. Either change the order of arguments so that the\n' - ' LAMMPS input script file is processed before the data file, or use\n' - ' the \"-atom_style\" command line argument to specify the atom_style.)\n') - - column_names = AtomStyle2ColNames(line.split()[1]) - i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid(column_names) - # Which columns contain the coordinates? - ii_coords = ColNames2Coords(column_names) - assert(len(ii_coords) == 1) - i_x = ii_coords[0][0] - i_y = ii_coords[0][1] - i_z = ii_coords[0][2] - - sys.stderr.write('\n \"Atoms\" column format:\n') - sys.stderr.write(' '+(' '.join(column_names))+'\n') - if i_molid: - sys.stderr.write(' (i_atomid='+str(i_atomid+1)+', i_atomtype='+str(i_atomtype+1)+', i_molid='+str(i_molid+1)+')\n\n') - else: - sys.stderr.write(' (i_atomid='+str(i_atomid+1)+', i_atomtype='+str(i_atomtype+1)+')\n\n') - l_in_init.append((' '*indent)+line.lstrip()) - - elif (tokens[0] in set(['units', - 'angle_style', - 'bond_style', - 'dihedral_style', - 'improper_style', - 'min_style', - 'pair_style', - 'pair_modify', - 'special_bonds', - 'kspace_style', - 'kspace_modify'])): - l_in_init.append((' '*indent)+line.lstrip()) - - #if (line.strip() == 'LAMMPS Description'): - # sys.stderr.write(' reading \"'+line.strip()+'\"\n') - # # skip over this section - # while lex: - # line = lex.ReadLine() - # if line.strip() in data_file_header_names: - # lex.push_raw_text(line) # <- Save line for later - # break - - elif (line.strip() == 'Atoms'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - atoms_already_read = True - - # Before attempting to read atomic coordinates, first find - # the lattice vectors of the simulation's boundary box: - # Why do we care about the Simulation Boundary? - # Some LAMMPS data files store atomic coordinates in a - # complex format with 6 numbers, 3 floats, and 3 integers. - # The 3 floats are x,y,z coordinates. Any additional numbers - # following these are integers which tell LAMMPS which cell - # the particle belongs to, (in case it has wandered out of - # the original periodic boundary box). In order to find - # the true location of the particle, we need to offset that - # particle's position with the unit-cell lattice vectors: - # avec, bvec, cvec (or multiples thereof) - # avec, bvec, cvec are the axis of the parallelepiped which - # define the simulation's boundary. They are described here: - #http://lammps.sandia.gov/doc/Section_howto.html#howto-12 - if ((boundary_xlo==None) or (boundary_xhi==None) or - (boundary_ylo==None) or (boundary_yhi==None) or - (boundary_zlo==None) or (boundary_zhi==None)): - - raise InputError('Error: Either DATA file lacks a boundary-box header, or it is in the wrong\n' - ' place. At the beginning of the file, you need to specify the box size:\n' - ' xlo xhi ylo yhi zlo zhi (and xy xz yz if triclinic)\n' - ' These numbers should appear BEFORE the other sections in the data file\n' - ' (such as the \"Atoms\", \"Masses\", \"Bonds\", \"Pair Coeffs\" sections)\n' - '\n' - ' Use this format (example):\n' - ' -100.0 100.0 xhi xlo\n' - ' 0.0 200.0 yhi ylo\n' - ' -25.0 50.0 zhi zlo\n' - '\n' - 'For details, see http://lammps.sandia.gov/doc/read_data.html\n' - '\n' - ' (NOTE: If the atom coordinates are NOT followed by integers, then\n' - ' these numbers are all ignored, however you must still specify\n' - ' xlo, xhi, ylo, yhi, zlo, zhi. You can set them all to 0.0.)\n') - - if not (boundary_xy and boundary_yz and boundary_xz): - # Then use a simple rectangular boundary box: - avec = (boundary_xhi-boundary_xlo, 0.0, 0.0) - bvec = (0.0, boundary_yhi-boundary_ylo, 0.0) - cvec = (0.0, 0.0, boundary_zhi-boundary_zlo) - else: - # Triclinic geometry in LAMMPS is explained here: - # http://lammps.sandia.gov/doc/Section_howto.html#howto-12 - # http://lammps.sandia.gov/doc/read_data.html - avec = (boundary_xhi-boundary_xlo, 0.0, 0.0) - bvec = (boundary_xy, boundary_yhi-boundary_ylo, 0.0) - cvec = (boundary_xz, boundary_yz, boundary_zhi-boundary_zlo) - - - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - if ((len(tokens) <= i_atomid) or - (len(tokens) <= i_atomtype) or - ((i_molid != None) and - (len(tokens) <= i_molid))): - raise InputError('Error: The number of columns in the \"Atoms\" section does\n' - ' not match the atom_style (see column name list above).\n') - elif ((len(tokens) != len(column_names)) and - (len(tokens) != len(column_names)+3) and - (not complained_atom_style_mismatch)): - complained_atom_style_mismatch = True - sys.stderr.write('Warning: The number of columns in the \"Atoms\" section does\n' - ' not match the atom_style (see column name list above).\n') - # this is not a very serious warning. - #no_warnings = False <--no need. commenting out - - - atomid = Intify(tokens[i_atomid]) - atomtype = Intify(tokens[i_atomtype]) - - molid = None - if i_molid: - molid = Intify(tokens[i_molid]) - - atomid2type[atomid] = atomtype - if i_molid: - atomid2mol[atomid] = molid - - - if (BelongsToSel(atomid, atomid_selection) and - BelongsToSel(atomtype, atomtype_selection) and - BelongsToSel(molid, molid_selection)): - - tokens[i_atomid] = '$atom:id'+tokens[i_atomid] - #tokens[i_atomid] = '$atom:'+atomids_int2name[atomid] - # fill atomtype_int2str[] with a default name (change later): - #tokens[i_atomtype] = '@atom:type'+tokens[i_atomtype] - atomtype_name = 'type'+tokens[i_atomtype] - atomtypes_int2name[atomtype] = atomtype_name - tokens[i_atomtype] = '@atom:'+atomtype_name - - # Interpreting unit-cell counters - # If present, then unit-cell "flags" must be - # added to the x,y,z coordinates. - # - # For more details on unit-cell "flags", see: - # http://lammps.sandia.gov/doc/read_data.html - # "In the data file, atom lines (all lines or - # none of them) can optionally list 3 trailing - # integer values (nx,ny,nz), which are used to - # initialize the atom’s image flags. - # If nx,ny,nz values are not listed in the - # data file, LAMMPS initializes them to 0. - # Note that the image flags are immediately - # updated if an atom’s coordinates need to - # wrapped back into the simulation box." - - if (len(tokens) == len(column_names)+3): - nx = int(tokens[-3]) - ny = int(tokens[-2]) - nz = int(tokens[-1]) - x = float(tokens[i_x]) + nx*avec[0]+ny*bvec[0]+nz*cvec[0] - y = float(tokens[i_y]) + nx*avec[1]+ny*bvec[1]+nz*cvec[1] - z = float(tokens[i_z]) + nx*avec[2]+ny*bvec[2]+nz*cvec[2] - tokens[i_x] = str(x) - tokens[i_y] = str(y) - tokens[i_z] = str(z) - # Now get rid of them: - del tokens[-3:] - - - - # I can't use atomids_int2name or atomtypes_int2name yet - # because they probably have not been defined yet. - # (Instead assign these names in a later pass.) - - if i_molid: - tokens[i_molid] = '$mol:id'+tokens[i_molid] - l_data_atoms.append((' '*indent)+(' '.join(tokens)+'\n')) - needed_atomids.add(atomid) - - needed_atomtypes.add(atomtype) - # Not all atom_styles have molids. - # Check for this before adding. - if molid != None: - needed_molids.add(molid) - - for atomtype in needed_atomtypes: - assert(type(atomtype) is int) - if ((min_needed_atomtype == None) or - (min_needed_atomtype > atomtype)): - min_needed_atomtype = atomtype - if ((max_needed_atomtype == None) or - (max_needed_atomtype < atomtype)): - max_needed_atomtype = atomtype - - for atomid in needed_atomids: - assert(type(atomid) is int) - if ((min_needed_atomid == None) or - (min_needed_atomid > atomid)): - min_needed_atomid = atomid - if ((max_needed_atomid == None) or - (max_needed_atomid < atomid)): - max_needed_atomid = atomid - for molid in needed_molids: - assert(type(molid) is int) - if ((min_needed_molid == None) or - (min_needed_molid > molid)): - min_needed_molid = molid - if ((max_needed_molid == None) or - (max_needed_molid < molid)): - max_needed_molid = molid - - elif (line.strip() == 'Masses'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - # Read the next line of text but don't skip comments - comment_char_backup = lex.commenters - lex.commenters = '' - line = lex.ReadLine() - lex.commenters = comment_char_backup - - comment_text = '' - ic = line.find('#') - if ic != -1: - line = line[:ic] - comment_text = line[ic+1:].strip() - line = line.rstrip() - - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - - tokens = line.strip().split() - if len(tokens) > 0: - atomtype = Intify(tokens[0]) - atomtype_name = str(atomtype) - - if comment_text != '': - comment_tokens = comment_text.split() - # Assume the first word after the # is the atom type name - atomtype_name = comment_tokens[0] - - if BelongsToSel(atomtype, atomtype_selection): - #tokens[0] = '@atom:type'+tokens[0] - l_data_masses.append((' '*indent)+(' '.join(tokens)+'\n')) - # infer atom type names from comment strings? - if infer_types_from_comments: - if atomtype_name in atomtypes_name2int: - raise InputError('Error: duplicate atom type names in mass section: \"'+atomtype_name+'\"\n' - ' (By default '+g_program_name+' attempts to infer atom type names from\n' - ' comments which appear in the \"Masses\" section of your data file.)\n' - ' You can avoid this error by adding the \"-ignore-comments\" argument.\n') - atomtypes_name2int[atomtype_name] = atomtype - atomtypes_int2name[atomtype] = atomtype_name - else: - atomtypes_int2name[atomtype] = 'type'+str(atomtype) - - - elif (line.strip() == 'Velocities'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - atomid = Intify(tokens[0]) - atomtype = None - if atomid in atomid2type: - atomtype = atomid2type[atomid] - moldid = None - if atomid in atomid2mol: - molid = atomid2mol[atomid] - if (BelongsToSel(atomid, atomid_selection) and - BelongsToSel(atomtype, atomtype_selection) and - BelongsToSel(molid, molid_selection)): - tokens[0] = '$atom:id'+tokens[0] - #tokens[0] = '$atom:'+atomids_int2name[atomid] - #NOTE:I can't use "atomids_int2name" yet because - # they probably have not been defined yet. - # (Instead assign these names in a later pass.) - l_data_velocities.append((' '*indent)+(' '.join(tokens)+'\n')) - - # non-point-like-particles: - elif (line.strip() == 'Ellipsoids'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - atomid = Intify(tokens[0]) - atomtype = None - if atomid in atomid2type: - atomtype = atomid2type[atomid] - moldid = None - if atomid in atomid2mol: - molid = atomid2mol[atomid] - if (BelongsToSel(atomid, atomid_selection) and - BelongsToSel(atomtype, atomtype_selection) and - BelongsToSel(molid, molid_selection)): - tokens[0] = '$atom:id'+tokens[0] - #tokens[0] = '$atom:'+atomids_int2name[atomid] - #NOTE:I can't use "atomids_int2name" yet because - # they probably have not been defined yet. - # (Instead assign these names in a later pass.) - l_data_ellipsoids.append((' '*indent)+(' '.join(tokens)+'\n')) - elif (line.strip() == 'Lines'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - atomid = Intify(tokens[0]) - atomtype = None - if atomid in atomid2type: - atomtype = atomid2type[atomid] - moldid = None - if atomid in atomid2mol: - molid = atomid2mol[atomid] - if (BelongsToSel(atomid, atomid_selection) and - BelongsToSel(atomtype, atomtype_selection) and - BelongsToSel(molid, molid_selection)): - tokens[0] = '$atom:id'+tokens[0] - #tokens[0] = '$atom:'+atomids_int2name[atomid] - #NOTE:I can't use "atomids_int2name" yet because - # they probably have not been defined yet. - # (Instead assign these names in a later pass.) - l_data_lines.append((' '*indent)+(' '.join(tokens)+'\n')) - elif (line.strip() == 'Triangles'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - atomid = Intify(tokens[0]) - atomtype = None - if atomid in atomid2type: - atomtype = atomid2type[atomid] - moldid = None - if atomid in atomid2mol: - molid = atomid2mol[atomid] - if (BelongsToSel(atomid, atomid_selection) and - BelongsToSel(atomtype, atomtype_selection) and - BelongsToSel(molid, molid_selection)): - tokens[0] = '$atom:id'+tokens[0] - #tokens[0] = '$atom:'+atomids_int2name[atomid] - #NOTE:I can't use "atomids_int2name" yet because - # they probably have not been defined yet. - # (Instead assign these names in a later pass.) - l_data_triangles.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'Bonds'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - if (len(tokens) < 4): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical line in Bonds section:\n' - ' \"'+line.strip()+'\"\n') - #tokens[0] = '$bond:id'+tokens[0] - #tokens[1] = '@bond:type'+tokens[1] - atomids = [None, None] - atomtypes = [None, None] - molids = [None, None] - in_selections = True - some_in_selection = False - for n in range(0,2): - atomids[n] = Intify(tokens[2+n]) - if atomids[n] in atomid2type: - atomtypes[n] = atomid2type[atomids[n]] - if atomids[n] in atomid2mol: - molids[n] = atomid2mol[atomids[n]] - if (BelongsToSel(atomids[n], atomid_selection) and - BelongsToSel(atomtypes[n], atomtype_selection) and - BelongsToSel(molids[n], molid_selection)): - #tokens[2+n] = '$atom:id'+tokens[2+n] - #tokens[2+n] = '$atom:'+atomids_int2name[atomids[n]] - some_in_selection = True - else: - in_selections = False - if in_selections: - l_data_bonds.append((' '*indent)+(' '.join(tokens)+'\n')) - elif some_in_selection: - sys.stderr.write('WARNING: SELECTION BREAKS BONDS\n') - sys.stderr.write(' (between atom ids: ') - - for n in range(0,2): - sys.stderr.write(str(atomids[n])+' ') - sys.stderr.write(')\n' - ' The atoms you selected are bonded\n' - ' to other atoms you didn\'t select.\n' - ' Are you sure you selected the correct atoms?\n') - no_warnings = False - - - - elif (line.strip() == 'Angles'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line == '': - break - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - if (len(tokens) < 5): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical line in Angles section:\n' - ' \"'+line.strip()+'\"\n') - #tokens[0] = '$angle:id'+tokens[0] - #tokens[1] = '@angle:type'+tokens[1] - atomids = [None, None, None] - atomtypes = [None, None, None] - molids = [None, None, None] - in_selections = True - some_in_selection = False - for n in range(0,3): - atomids[n] = Intify(tokens[2+n]) - if atomids[n] in atomid2type: - atomtypes[n] = atomid2type[atomids[n]] - if atomids[n] in atomid2mol: - molids[n] = atomid2mol[atomids[n]] - if (BelongsToSel(atomids[n], atomid_selection) and - BelongsToSel(atomtypes[n], atomtype_selection) and - BelongsToSel(molids[n], molid_selection)): - #tokens[2+n] = '$atom:id'+tokens[2+n] - #tokens[2+n] = '$atom:'+atomids_int2name[atomids[n]] - some_in_selection = True - else: - in_selections = False - if in_selections: - l_data_angles.append((' '*indent)+(' '.join(tokens)+'\n')) - elif some_in_selection: - sys.stderr.write('WARNING: SELECTION BREAKS ANGLES\n') - sys.stderr.write(' (between atom ids: ') - for n in range(0,3): - sys.stderr.write(str(atomids[n])+' ') - sys.stderr.write(')\n' - ' The atoms you selected participate in 3-body \"Angle\"\n' - ' interactions with other atoms you didn\'t select.\n' - ' (They will be ignored.)\n' - ' Are you sure you selected the correct atoms?\n') - no_warnings = False - - - elif (line.strip() == 'Dihedrals'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - if (len(tokens) < 6): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical line in Dihedrals section:\n' - ' \"'+line.strip()+'\"\n') - #tokens[0] = '$dihedral:id'+tokens[0] - #tokens[1] = '@dihedral:type'+tokens[1] - atomids = [None, None, None, None] - atomtypes = [None, None, None, None] - molids = [None, None, None, None] - in_selections = True - some_in_selection = False - for n in range(0,4): - atomids[n] = Intify(tokens[2+n]) - if atomids[n] in atomid2type: - atomtypes[n] = atomid2type[atomids[n]] - if atomids[n] in atomid2mol: - molids[n] = atomid2mol[atomids[n]] - if (BelongsToSel(atomids[n], atomid_selection) and - BelongsToSel(atomtypes[n], atomtype_selection) and - BelongsToSel(molids[n], molid_selection)): - #tokens[2+n] = '$atom:id'+tokens[2+n] - #tokens[2+n] = '$atom:'+atomids_int2name[atomids[n]] - some_in_selection = True - else: - in_selections = False - if in_selections: - l_data_dihedrals.append((' '*indent)+(' '.join(tokens)+'\n')) - elif some_in_selection: - sys.stderr.write('WARNING: SELECTION BREAKS DIHEDRALS\n') - sys.stderr.write(' (between atom ids: ') - for n in range(0,4): - sys.stderr.write(str(atomids[n])+' ') - sys.stderr.write(')\n' - ' The atoms you selected participate in 4-body \"Dihedral\"\n' - ' interactions with other atoms you didn\'t select.\n' - ' (They will be ignored.)\n' - ' Are you sure you selected the correct atoms?\n') - no_warnings = False - - - elif (line.strip() == 'Impropers'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - if (len(tokens) < 6): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical line in Impropers section:\n' - ' \"'+line.strip()+'\"\n') - #tokens[0] = '$improper:id'+tokens[0] - #tokens[1] = '@improper:type'+tokens[1] - atomids = [None, None, None, None] - atomtypes = [None, None, None, None] - molids = [None, None, None, None] - in_selections = True - some_in_selection = False - for n in range(0,4): - atomids[n] = Intify(tokens[2+n]) - if atomids[n] in atomid2type: - atomtypes[n] = atomid2type[atomids[n]] - if atomids[n] in atomid2mol: - molids[n] = atomid2mol[atomids[n]] - if (BelongsToSel(atomids[n], atomid_selection) and - BelongsToSel(atomtypes[n], atomtype_selection) and - BelongsToSel(molids[n], molid_selection)): - #tokens[2+n] = '$atom:id'+tokens[2+n] - #tokens[2+n] = '$atom:'+atomids_int2name[atomids[n]] - some_in_selection = True - else: - in_selections = False - if in_selections: - l_data_impropers.append((' '*indent)+(' '.join(tokens)+'\n')) - elif some_in_selection: - sys.stderr.write('WARNING: SELECTION BREAKS IMPROPERS\n') - sys.stderr.write(' (between atom ids: ') - for n in range(0,4): - sys.stderr.write(str(atomids[n])+' ') - sys.stderr.write(')\n' - ' The atoms you selected participate in 4-body \"Improper\"\n' - ' interactions with other atoms you didn\'t select.\n' - ' (They will be ignored.)\n' - ' Are you sure you selected the correct atoms?\n') - no_warnings = False - - - elif (line.strip() == 'Bond Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@bond:type'+tokens[0] - l_data_bond_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'Angle Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@angle:type'+tokens[0] - l_data_angle_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'Dihedral Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@dihedral:type'+tokens[0] - l_data_dihedral_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'Improper Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@improper:type'+tokens[0] - l_data_improper_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'Pair Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - some_pair_coeffs_read = True - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - if (len(tokens) < 2): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical line in Pair Coeffs section:\n' - ' \"'+line.strip()+'\"\n') - atomtype_i_str = tokens[0] - if '*' in atomtype_i_str: - raise InputError('PROBLEM near or before '+ErrorLeader(infile, lineno)+'\n' - ' As of 2015-8, moltemplate forbids use of the "\*\" wildcard\n' - ' character in the \"Pair Coeffs\" section.\n') - else: - i = int(atomtype_i_str) - if ((not i) or - BelongsToSel(i, atomtype_selection)): - i_str = '@atom:type'+str(i) - tokens[0] = i_str - l_data_pair_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'PairIJ Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - some_pair_coeffs_read = True - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - if (len(tokens) < 2): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical line in Pair Coeffs section:\n' - ' \"'+line.strip()+'\"\n') - atomtype_i_str = tokens[0] - atomtype_j_str = tokens[1] - if (('*' in atomtype_i_str) or ('*' in atomtype_j_str)): - raise InputError('PROBLEM near or before '+ErrorLeader(infile, lineno)+'\n' - ' As of 2015-8, moltemplate forbids use of the "\*\" wildcard\n' - ' character in the \"PairIJ Coeffs\" section.\n') - else: - i = int(atomtype_i_str) - j = int(atomtype_j_str) - if (((not i) or BelongsToSel(i, atomtype_selection)) and - ((not j) or BelongsToSel(j, atomtype_selection))): - i_str = '@atom:type'+str(i) - j_str = '@atom:type'+str(j) - tokens[0] = i_str - tokens[1] = j_str - l_data_pair_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (tokens[0] == 'pair_coeff'): - some_pair_coeffs_read = True - if (len(tokens) < 3): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical pair_coeff command:\n' - ' \"'+line.strip()+'\"\n') - l_in_pair_coeffs.append(' '*indent+line.strip()) - - elif (tokens[0] == 'mass'): - some_pair_coeffs_read = True - if (len(tokens) < 3): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical \"mass\" command:\n' - ' \"'+line.strip()+'\"\n') - l_in_masses.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (tokens[0] == 'bond_coeff'): - if (len(tokens) < 2): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical bond_coeff command:\n' - ' \"'+line.strip()+'\"\n') - #tokens[1] = '@bond:type'+tokens[1] - l_in_bond_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (tokens[0] == 'angle_coeff'): - if (len(tokens) < 2): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical angle_coeff command:\n' - ' \"'+line.strip()+'\"\n') - #tokens[1] = '@angle:type'+tokens[1] - l_in_angle_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (tokens[0] == 'dihedral_coeff'): - if (len(tokens) < 2): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical dihedral_coeff command:\n' - ' \"'+line.strip()+'\"\n') - #tokens[1] = '@dihedral:type'+tokens[1] - l_in_dihedral_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - elif (tokens[0] == 'improper_coeff'): - if (len(tokens) < 2): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical improper_coeff command:\n' - ' \"'+line.strip()+'\"\n') - #tokens[1] = '@improper:type'+tokens[1] - l_in_improper_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - - # -- class2 force fields -- - elif (line.strip() == 'BondBond Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@angle:type'+tokens[0] - l_data_bondbond_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'BondAngle Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@angle:type'+tokens[0] - l_data_bondangle_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'MiddleBondTorsion Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@dihedral:type'+tokens[0] - l_data_middlebondtorsion_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'EndBondTorsion Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@dihedral:type'+tokens[0] - l_data_endbondtorsion_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'AngleTorsion Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@dihedral:type'+tokens[0] - l_data_angletorsion_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'AngleAngleTorsion Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@dihedral:type'+tokens[0] - l_data_angleangletorsion_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'BondBond13 Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@dihedral:type'+tokens[0] - l_data_bondbond13_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'AngleAngle Coeffs'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - #tokens[0] = '@improper:type'+tokens[0] - l_data_angleangle_coeffs.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'Angles By Type'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - tokens[0] = '@angle:type'+tokens[0] - l_data_angles_by_type.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'Dihedrals By Type'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - tokens[0] = '@dihedral:type'+tokens[0] - l_data_dihedrals_by_type.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif (line.strip() == 'Impropers By Type'): - sys.stderr.write(' reading \"'+line.strip()+'\"\n') - while lex: - line = lex.ReadLine() - if line.strip() in data_file_header_names: - lex.push_raw_text(line) # <- Save line for later - break - tokens = line.strip().split() - if len(tokens) > 0: - tokens[0] = '@improper:type'+tokens[0] - l_data_impropers_by_type.append((' '*indent)+(' '.join(tokens)+'\n')) - - - # Figure out the size of the simulation box boundary: - elif ((len(tokens)==4) and - (tokens[2] == 'xlo') and - (tokens[3] == 'xhi') and - IsNumber(tokens[0]) and - IsNumber(tokens[1])): - boundary_xlo = float(tokens[0]) - boundary_xhi = float(tokens[1]) - - elif ((len(tokens)==4) and - (tokens[2] == 'ylo') and - (tokens[3] == 'yhi') and - IsNumber(tokens[0]) and - IsNumber(tokens[1])): - boundary_ylo = float(tokens[0]) - boundary_yhi = float(tokens[1]) - - elif ((len(tokens)==4) and - (tokens[2] == 'zlo') and - (tokens[3] == 'zhi') and - IsNumber(tokens[0]) and - IsNumber(tokens[1])): - boundary_zlo = float(tokens[0]) - boundary_zhi = float(tokens[1]) - - elif ((len(tokens)==6) and - (tokens[3] == 'xy') and - (tokens[4] == 'xz') and - (tokens[5] == 'yz') and - IsNumber(tokens[0]) and - IsNumber(tokens[1]) and - IsNumber(tokens[2])): - boundary_xy = float(tokens[0]) - boundary_xz = float(tokens[1]) - boundary_yz = float(tokens[2]) - - elif (tokens[0] == 'group'): - if (len(tokens) < 3): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical group command:\n' - ' \"'+line.strip()+'\"\n') - l_in_group.append((' '*indent)+(' '.join(tokens)+'\n')) - - elif ((tokens[0] == 'fix') and (len(tokens) >= 4)): - if (tokens[3].find('rigid') == 0): - if (len(tokens) < 6): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical '+tokens[0]+' '+tokens[3]+' command:\n' - ' \"'+line.strip()+'\"\n') - l_in_fix_rigid.append((' '*indent)+(' '.join(tokens)+'\n')) - elif (tokens[3].find('shake') == 0): - if (len(tokens) < 7): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical '+tokens[0]+' '+tokens[3]+' command:\n' - ' \"'+line.strip()+'\"\n') - l_in_fix_shake.append((' '*indent)+(' '.join(tokens)+'\n')) - elif (tokens[3].find('poems') == 0): - if (len(tokens) < 4): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical '+tokens[0]+' '+tokens[3]+' command:\n' - ' \"'+line.strip()+'\"\n') - l_in_fix_poems.append((' '*indent)+(' '.join(tokens)+'\n')) - elif (tokens[3].find('qeq') == 0): - if (len(tokens) < 8): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical '+tokens[0]+' '+tokens[3]+' command:\n' - ' \"'+line.strip()+'\"\n') - l_in_fix_qeq.append((' '*indent)+(' '.join(tokens)+'\n')) - elif (tokens[3].find('qmmm') == 0): - if (len(tokens) < 8): - raise InputError('Error: near or before '+ErrorLeader(infile, lineno)+'\n' - ' Nonsensical '+tokens[0]+' '+tokens[3]+' command:\n' - ' \"'+line.strip()+'\"\n') - l_in_fix_qmmm.append((' '*indent)+(' '.join(tokens)+'\n')) - elif (tokens[3].find('restrain') == 0): - sys.stderr('WARNING: fix \"'+tokens[3]+'\" commands are NOT understood by '+g_program_name+'.\n' - ' If you need restraints, add them to your final .LT file (eg. \"system.lt\"),\n' - ' (And be sure to use unique (full, long) moltemplate names for each $atom:.)\n' - ' Ignoring line \"'+line.strip()+'\"\n') - - else: - sys.stderr.write(' Ignoring line \"'+line.strip()+'\"\n') - - sys.stderr.write('\n\n') - - sys.stderr.write(' processing \"Atoms\" section (') - - # post-processing: - - if len(l_data_masses) == 0: - infer_types_from_comments = False - - # Pass 1 through l_data_atoms: - # Now do a second-pass throught the "l_data_atoms" section, and - # finish dealing with "infer_types_from_comments". - # During this pass, peplace the atomtype names and atomid names with - # atom type names which were inferred from comments read earlier. - - sys.stderr.write('pass1') - for i in range(0, len(l_data_atoms)): - tokens = l_data_atoms[i].split() - atomid = tokens[i_atomid] - if atomid.find('$atom:') == 0: - atomid = atomid[6:] - # convert to an integer - atomid = Intify(atomid) - - if infer_types_from_comments: - atomtype = tokens[i_atomtype] - # remove the "@atom:" prefix (we will put it back later) - if atomtype.find('@atom:') == 0: - atomtype = atomtype[6:] - # convert to an integer - atomtype = Intify(atomtype) - atomtype_name = atomtypes_int2name[atomtype] - if atomtype in atomids_by_type: - l_atomids = atomids_by_type[atomtype] - prev_count = len(l_atomids) - # lookup the most recently added atom of this type: - #prev_atomid_name = l_atomids[-1] - #ic = prev_atomid_name.rfind('_') - #prev_count = int(prev_atomid_name[ic+1:]) - atomid_name = atomtype_name+'_'+str(prev_count+1) - atomids_by_type[atomtype].append(atomid) - else: - atomids_by_type[atomtype] = [atomid] - atomid_name = atomtype_name+'_1' - atomids_int2name[atomid] = atomid_name - #atomids_name2str[atomid_name] = atomid - else: - atomids_int2name[atomid] = 'id'+str(atomid) - - sys.stderr.write(', pass2') - # Pass 2: If any atom types only appear once, simplify their atomid names. - for i in range(0, len(l_data_atoms)): - tokens = l_data_atoms[i].split() - - # remove the "@atom:" prefix (we will put it back later) - atomtype = tokens[i_atomtype] - if atomtype.find('@atom:') == 0: - atomtype = atomtype[6:] - atomtype = Intify(atomtype) - if infer_types_from_comments: - if len(atomids_by_type[atomtype]) == 1: - atomid = tokens[i_atomid] - if atomid.find('$atom:') == 0: - atomid = atomid[6:] - atomid = Intify(atomid) - atomtype_name = atomtypes_int2name[atomtype] - atomids_int2name[atomid] = atomtype_name - - sys.stderr.write(', pass3') - # Pass 3: substitute the atomid names and atom type names into l_data_atoms - for i in range(0, len(l_data_atoms)): - tokens = l_data_atoms[i].split() - atomid = tokens[i_atomid] - if atomid.find('$atom:') == 0: - atomid = atomid[6:] - # convert to an integer - atomid = Intify(atomid) - atomtype = tokens[i_atomtype] - if atomtype.find('@atom:') == 0: - atomtype = atomtype[6:] - atomtype = Intify(atomtype) - tokens = l_data_atoms[i].split() - tokens[i_atomid] = '$atom:'+atomids_int2name[atomid] - tokens[i_atomtype] = '@atom:'+atomtypes_int2name[atomtype] - l_data_atoms[i] = (' '*indent)+(' '.join(tokens)+'\n') - sys.stderr.write(')\n') - - - if len(l_data_atoms) == 0: - raise InputError('Error('+g_program_name+'): You have no atoms in you selection!\n' - '\n' - ' Either you have chosen a set of atoms, molecules, or atom types which\n' - ' does not exist, or there is a problem with (the format of) your\n' - ' arguments. Check the documentation and examples.\n') - - - # --- Now delete items that were not selected from the other lists --- - - # --- MASSES --- - - # delete masses for atom types we don't care about anymore: - i_line = 0 - while i_line < len(l_data_masses): - line = l_data_masses[i_line] - tokens = line.strip().split() - atomtype = Intify(tokens[0]) - if ((not (atomtype in needed_atomtypes)) and - (not ((len(atomtype_selection) > 0) and - BelongsToSel(atomtype, atomtype_selection)))): - del l_data_masses[i_line] - else: - atomtype_name = atomtypes_int2name[atomtype] - tokens[0] = '@atom:'+atomtype_name - l_data_masses[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - - - - # --- PAIR COEFFS --- - - # delete data_pair_coeffs for atom types we don't care about anymore: - i_line = 0 - while i_line < len(l_data_pair_coeffs): - line = l_data_pair_coeffs[i_line] - tokens = line.strip().split() - assert(len(tokens) > 0) - split_colon = tokens[0].split(':') - assert(len(split_colon) == 2) - atomtype = Intify(split_colon[1]) - if ((not (atomtype in needed_atomtypes)) and - (not ((len(atomtype_selection) > 0) and - BelongsToSel(atomtype, atomtype_selection)))): - del l_data_pair_coeffs[i_line] - else: - i_line += 1 - - # delete data_pairij_coeffs for atom types we don't care about anymore: - i_line = 0 - while i_line < len(l_data_pairij_coeffs): - line = l_data_pairij_coeffs[i_line] - tokens = line.strip().split() - assert(len(tokens) > 0) - split_colon_I = tokens[0].split(':') - assert(len(split_colon_I) == 2) - atomtype_I = Intify(split_colon_I[1]) - split_colon_J = tokens[1].split(':') - assert(len(split_colon_J) == 2) - atomtype_J = Intify(split_colon_J[1]) - if (((not (atomtype_I in needed_atomtypes)) and - (not ((len(atomtype_selection) > 0) and - BelongsToSel(atomtype_I, atomtype_selection)))) - or - ((not (atomtype_J in needed_atomtypes)) and - (not ((len(atomtype_selection) > 0) and - BelongsToSel(atomtype_J, atomtype_selection))))): - del l_data_pairij_coeffs[i_line] - else: - i_line += 1 - - # delete in_pair_coeffs for atom we don't care about anymore: - i_line = 0 - while i_line < len(l_in_pair_coeffs): - line = l_in_pair_coeffs[i_line] - tokens = line.strip().split() - atomtype_i_str = tokens[1] - atomtype_j_str = tokens[2] - #if (('*' in atomtype_i_str) or - # ('*' in atomtype_j_str)): - # sys.stderr.write('WARNING: near or before '+ErrorLeader(infile, lineno)+'\n' - # ' pair_coeff command contains a \"*\" character.\n' - # ' Keep in mind that using moltemplate.sh you can manually change the\n' - # ' numbers assigned to each atom type (when using -a or -b). Make sure\n' - # ' nor to accidentally change the order of atom types in one of these\n' - # ' pair_coeff commands. For example, commands like\n' - # ' pair_coeff 10*4 20*10 0.15 3.6\n' - # ' can be generated by moltemplate.sh, however\n' - # ' they may be rejected by LAMMPS (because LAMMPS prefers this\n' - # ' pair_coeff 4*10 10*20 0.15 3.6)\n' - # ' Later on, you may want to check to make sure moltemplate.sh\n' - # ' is not doing this. (Fortunately you never have to worry unless\n' - # ' you are using the -a or -b arguments with moltemplate.sh)\n') - - if ('*' in atomtype_i_str): - atomtype_i_tokens = atomtype_i_str.split('*') - - if atomtype_i_tokens[0] == '': - if (min_sel_atomtype and - (min_sel_atomtype < min_needed_atomtype)): - i_a = min_sel_atomtype - else: - i_a = min_needed_atomtype - else: - i_a = Intify(atomtype_i_tokens[0]) - - if atomtype_i_tokens[1] == '': - if (max_sel_atomtype and - (max_sel_atomtype > max_needed_atomtype)): - i_b = max_sel_atomtype - else: - i_b = max_needed_atomtype - else: - i_b = Intify(atomtype_i_tokens[1]) - - else: - i_a = i_b = Intify(atomtype_i_str) - - i_a_final = None - i_b_final = None - for i in range(i_a, i_b+1): - if ((i in needed_atomtypes) or (min_sel_atomtype <= i)): - i_a_final = i - break - for i in reversed(range(i_a, i_b+1)): - if ((i in needed_atomtypes) or (max_sel_atomtype >= i)): - i_b_final = i - break - - #if i_a_final and i_b_final: - # if i_a_final == i_b_final: - # i_str = '@atom:type'+str(i_a_final) - # tokens[1] = i_str - # else: - # i_str = '@{atom:type'+str(i_a_final)+'}*@{atom:type'+str(i_b_final)+'}' - - - - if ('*' in atomtype_j_str): - atomtype_j_tokens = atomtype_j_str.split('*') - - if atomtype_j_tokens[0] == '': - if (min_sel_atomtype and - (min_sel_atomtype < min_needed_atomtype)): - j_a = min_sel_atomtype - else: - j_a = min_needed_atomtype - else: - j_a = Intify(atomtype_j_tokens[0]) - - if atomtype_j_tokens[1] == '': - if (max_sel_atomtype and - (max_sel_atomtype > max_needed_atomtype)): - j_b = max_sel_atomtype - else: - j_b = max_needed_atomtype - else: - j_b = Intify(atomtype_j_tokens[1]) - - else: - j_a = j_b = Intify(atomtype_j_str) - - j_a_final = None - j_b_final = None - for j in range(j_a, j_b+1): - if ((j in needed_atomtypes) or (min_sel_atomtype <= j)): - j_a_final = j - break - for j in reversed(range(j_a, j_b+1)): - if ((j in needed_atomtypes) or (max_sel_atomtype >= j)): - j_b_final = j - break - - #if j_a_final and j_b_final: - # if j_a_final == j_b_final: - # j_str = '@atom:type'+str(j_a_final) - # tokens[1] = j_str - # else: - # j_str = '@{atom:type'+str(j_a_final)+'}*@{atom:type'+str(j_b_final)+'}' - - - - if not (i_a_final and i_b_final and j_a_final and j_b_final): - del l_in_pair_coeffs[i_line] - elif (('*' in atomtype_i_str) or ('*' in atomtype_j_str)): - del l_in_pair_coeffs[i_line] - for i in range(i_a_final, i_b_final+1): - for j in range(j_a_final, j_b_final+1): - if j >= i: - #tokens[1] = '@atom:type'+str(i) - #tokens[2] = '@atom:type'+str(j) - tokens[1] = '@atom:'+atomtypes_int2name[i] - tokens[2] = '@atom:'+atomtypes_int2name[j] - l_in_pair_coeffs.insert(i_line, - (' '*indent)+(' '.join(tokens)+'\n')) - i_line += 1 - else: - #tokens[1] = '@atom:type'+tokens[1] - #tokens[2] = '@atom:type'+tokens[2] - tokens[1] = '@atom:'+atomtypes_int2name[int(tokens[1])] - tokens[2] = '@atom:'+atomtypes_int2name[int(tokens[2])] - l_in_pair_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - - - - - # delete mass commands for atom types we don't care about anymore: - i_line = 0 - while i_line < len(l_in_masses): - line = l_in_masses[i_line] - tokens = line.strip().split() - atomtype_i_str = tokens[1] - #if (('*' in atomtype_i_str) or - # ('*' in atomtype_j_str)): - # sys.stderr.write('WARNING: near or before '+ErrorLeader(infile, lineno)+'\n' - # ' pair_coeff command contains a \"*\" character.\n' - # ' Keep in mind that using moltemplate.sh you can manually change the\n' - # ' numbers assigned to each atom type (when using -a or -b). Make sure\n' - # ' nor to accidentally change the order of atom types in one of these\n' - # ' pair_coeff commands. For example, commands like\n' - # ' pair_coeff 10*4 20*10 0.15 3.6\n' - # ' can be generated by moltemplate.sh, however\n' - # ' they may be rejected by LAMMPS (because LAMMPS prefers this\n' - # ' pair_coeff 4*10 10*20 0.15 3.6)\n' - # ' Later on, you may want to check to make sure moltemplate.sh\n' - # ' is not doing this. (Fortunately you never have to worry unless\n' - # ' you are using the -a or -b arguments with moltemplate.sh)\n') - - if ('*' in atomtype_i_str): - atomtype_i_tokens = atomtype_i_str.split('*') - - if atomtype_i_tokens[0] == '': - if (min_sel_atomtype and - (min_sel_atomtype < min_needed_atomtype)): - i_a = min_sel_atomtype - else: - i_a = min_needed_atomtype - else: - i_a = Intify(atomtype_i_tokens[0]) - - if atomtype_i_tokens[1] == '': - if (max_sel_atomtype and - (max_sel_atomtype > max_needed_atomtype)): - i_b = max_sel_atomtype - else: - i_b = max_needed_atomtype - else: - i_b = Intify(atomtype_i_tokens[1]) - - else: - i_a = i_b = Intify(atomtype_i_str) - - i_a_final = None - i_b_final = None - for i in range(i_a, i_b+1): - if ((i in needed_atomtypes) or (min_sel_atomtype <= i)): - i_a_final = i - break - for i in reversed(range(i_a, i_b+1)): - if ((i in needed_atomtypes) or (max_sel_atomtype >= i)): - i_b_final = i - break - #if i_a_final and i_b_final: - # if i_a_final == i_b_final: - # i_str = '@atom:type'+str(i_a_final) - # tokens[1] = i_str - # else: - # i_str = '@{atom:type'+str(i_a_final)+'}*@{atom:type'+str(i_b_final)+'}' - - if not (i_a_final and i_b_final and j_a_final and j_b_final): - del l_in_masses[i_line] - elif ('*' in atomtype_i_str): - del l_in_masses[i_line] - for i in range(i_a_final, i_b_final+1): - #tokens[1] = '@atom:type'+str(i) - tokens[1] = '@atom:'+atomtypes_int2name[i] - # CONTINUEHERE: CHECK THAT THIS IS WORKING - l_in_masses.insert(i_line, (' '*indent)+(' '.join(tokens)+'\n')) - i_line += 1 - else: - assert(i_a == i_b) - #tokens[1] = '@atom:type'+str(i_a) - tokens[1] = '@atom:'+atomtypes_int2name[i_a] - # CONTINUEHERE: CHECK THAT THIS IS WORKING - l_in_masses[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - - - - - # --- BONDS AND BOND COEFFS --- - - # delete lines from data_bonds if they involve atoms we don't care about - i_line = 0 - while i_line < len(l_data_bonds): - line = l_data_bonds[i_line] - tokens = line.strip().split() - assert(len(tokens) == 4) - - bondid = Intify(tokens[0]) - bondtype = Intify(tokens[1]) - atomid1 = Intify(tokens[2]) - atomid2 = Intify(tokens[3]) - #if ((atomid1 in needed_atomids) and - # (atomid2 in needed_atomids)): - tokens[0] = '$bond:id'+str(bondid) - tokens[1] = '@bond:type'+str(bondtype) - #tokens[2] = '$atom:id'+str(atomid1) - #tokens[3] = '$atom:id'+str(atomid2) - tokens[2] = '$atom:'+atomids_int2name[atomid1] - tokens[3] = '$atom:'+atomids_int2name[atomid2] - needed_bondids.add(bondid) - needed_bondtypes.add(bondtype) - l_data_bonds[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - #else: - # del l_data_bonds[i_line] - - # delete data_bond_coeffs for bondtypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_bond_coeffs): - line = l_data_bond_coeffs[i_line] - tokens = line.strip().split() - bondtype = Intify(tokens[0]) - if (not (bondtype in needed_bondtypes)): - del l_data_bond_coeffs[i_line] - else: - tokens[0] = '@bond:type'+str(bondtype) - l_data_bond_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - - # delete in_bond_coeffs for bondtypes we don't care about anymore: - for bondtype in needed_bondtypes: - assert(type(bondtype) is int) - if ((min_needed_bondtype == None) or - (min_needed_bondtype > bondtype)): - min_needed_bondtype = bondtype - if ((max_needed_bondtype == None) or - (max_needed_bondtype < bondtype)): - max_needed_bondtype = bondtype - for bondid in needed_bondids: - assert(type(bondid) is int) - if ((min_needed_bondid == None) or - (min_needed_bondid > bondid)): - min_needed_bondid = bondid - if ((max_needed_bondid == None) or - (max_needed_bondid < bondid)): - max_needed_bondid = bondid - - - i_line = 0 - while i_line < len(l_in_bond_coeffs): - line = l_in_bond_coeffs[i_line] - tokens = line.strip().split() - bondtype_str = tokens[1] - - if ('*' in bondtype_str): - bondtype_tokens = bondtype_str.split('*') - - if bondtype_tokens[0] == '': - i_a = min_needed_bondtype - else: - i_a = Intify(bondtype_tokens[0]) - - if bondtype_tokens[1] == '': - i_b = max_needed_bondtype - else: - i_b = Intify(bondtype_tokens[1]) - - else: - i_a = Intify(bondtype_str) - i_b = i_a - - if i_a < min_needed_bondtype: - i_a = min_needed_bondtype - if i_b > max_needed_bondtype: - i_b = max_needed_bondtype - - #if i_a == i_b: - # i_str = '@bond:type'+str(i_a) - # tokens[1] = i_str - #else: - # i_str = '@{bond:type'+str(j_a)+'}*@{bond:type'+str(j_b)+'}' - - if ('*' in bondtype_str): - del l_in_bond_coeffs[i_line] - for i in range(i_a, i_b+1): - if (i in needed_bondtypes): - tokens[1] = '@bond:type'+str(i) - l_in_bond_coeffs.insert(i_line, - (' '*indent)+(' '.join(tokens)+'\n')) - i_line += 1 - else: - if i_a < i_b: - raise InputError('Error: number of bond types in data file is not consistent with the\n' - ' number of bond types you have define bond_coeffs for.\n') - if (i_a == i_b) and (i_a in needed_bondtypes): - tokens[1] = '@bond:type'+str(i_a) - l_in_bond_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - else: - del l_in_bond_coeffs[i_line] - - - - - - # --- ANGLES AND ANGLE COEFFS --- - - # delete lines from data_angles if they involve atoms we don't care about - i_line = 0 - while i_line < len(l_data_angles): - line = l_data_angles[i_line] - tokens = line.strip().split() - assert(len(tokens) == 5) - - angleid = Intify(tokens[0]) - angletype = Intify(tokens[1]) - atomid1 = Intify(tokens[2]) - atomid2 = Intify(tokens[3]) - atomid3 = Intify(tokens[4]) - #if ((atomid1 in needed_atomids) and - # (atomid2 in needed_atomids)): - tokens[0] = '$angle:id'+str(angleid) - tokens[1] = '@angle:type'+str(angletype) - #tokens[2] = '$atom:id'+str(atomid1) - #tokens[3] = '$atom:id'+str(atomid2) - #tokens[4] = '$atom:id'+str(atomid3) - tokens[2] = '$atom:'+atomids_int2name[atomid1] - tokens[3] = '$atom:'+atomids_int2name[atomid2] - tokens[4] = '$atom:'+atomids_int2name[atomid3] - needed_angleids.add(angleid) - needed_angletypes.add(angletype) - l_data_angles[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - #else: - # del l_data_angles[i_line] - - # delete data_angle_coeffs for angletypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_angle_coeffs): - line = l_data_angle_coeffs[i_line] - tokens = line.strip().split() - angletype = Intify(tokens[0]) - if (not (angletype in needed_angletypes)): - del l_data_angle_coeffs[i_line] - else: - tokens[0] = '@angle:type'+str(angletype) - l_data_angle_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - - # --- class2specific ---- - # Do the same for BondBond and BondAngle Coeffs: - # NOTE: LAMMPS INPUT SCRIPTS, ALL CLASS2 COEFFS are represented by: - # angle_coeff, dihedral_coeff, and improper_coeff commands. - # THERE ARE NO bondbond_coeff commands, or bondangle_coeff commands, - # etc..., so we dont have to worry about l_in_bondbond_coeffs,... - # delete data_bondbond_coeffs for angletypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_bondbond_coeffs): - line = l_data_bondbond_coeffs[i_line] - tokens = line.strip().split() - angletype = Intify(tokens[0]) - if (not (angletype in needed_angletypes)): - del l_data_bondbond_coeffs[i_line] - else: - tokens[0] = '@angle:type'+str(angletype) - l_data_bondbond_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - # delete data_bondangle_coeffs for angletypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_bondangle_coeffs): - line = l_data_bondangle_coeffs[i_line] - tokens = line.strip().split() - angletype = Intify(tokens[0]) - if (not (angletype in needed_angletypes)): - del l_data_bondangle_coeffs[i_line] - else: - tokens[0] = '@angle:type'+str(angletype) - l_data_bondangle_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - # --- end of class2specific ---- - - - # delete in_angle_coeffs for angletypes we don't care about anymore: - for angletype in needed_angletypes: - assert(type(angletype) is int) - if ((min_needed_angletype == None) or - (min_needed_angletype > angletype)): - min_needed_angletype = angletype - if ((max_needed_angletype == None) or - (max_needed_angletype < angletype)): - max_needed_angletype = angletype - for angleid in needed_angleids: - assert(type(angleid) is int) - if ((min_needed_angleid == None) or - (min_needed_angleid > angleid)): - min_needed_angleid = angleid - if ((max_needed_angleid == None) or - (max_needed_angleid < angleid)): - max_needed_angleid = angleid - - i_line = 0 - while i_line < len(l_in_angle_coeffs): - line = l_in_angle_coeffs[i_line] - tokens = line.strip().split() - angletype_str = tokens[1] - - if ('*' in angletype_str): - angletype_tokens = angletype_str.split('*') - - if angletype_tokens[0] == '': - i_a = min_needed_angletype - else: - i_a = Intify(angletype_tokens[0]) - - if angletype_tokens[1] == '': - i_b = max_needed_angletype - else: - i_b = Intify(angletype_tokens[1]) - - else: - i_a = i_b = Intify(angletype_str) - - if i_a < min_needed_angletype: - i_a = min_needed_angletype - if i_b > max_needed_angletype: - i_b = max_needed_angletype - - #if i_a == i_b: - # i_str = '@angle:type'+str(i_a) - # tokens[1] = i_str - #else: - # i_str = '@{angle:type'+str(j_a)+'}*@{angle:type'+str(j_b)+'}' - - if ('*' in angletype_str): - del l_in_angle_coeffs[i_line] - for i in range(i_a, i_b+1): - if (i in needed_angletypes): - tokens[1] = '@angle:type'+str(i) - l_in_angle_coeffs.insert(i_line, - (' '*indent)+(' '.join(tokens)+'\n')) - i_line += 1 - else: - if i_a < i_b: - raise InputError('Error: number of angle types in data file is not consistent with the\n' - ' number of angle types you have define angle_coeffs for.\n') - if (i_a == i_b) and (i_a in needed_angletypes): - tokens[1] = '@angle:type'+str(i_a) - l_in_angle_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - else: - del l_in_angle_coeffs[i_line] - - - - - # --- DIHEDRALS AND DIHEDRAL COEFFS --- - - # delete lines from data_dihedrals if they involve atoms we don't care about - i_line = 0 - while i_line < len(l_data_dihedrals): - line = l_data_dihedrals[i_line] - tokens = line.strip().split() - assert(len(tokens) == 6) - - dihedralid = Intify(tokens[0]) - dihedraltype = Intify(tokens[1]) - atomid1 = Intify(tokens[2]) - atomid2 = Intify(tokens[3]) - atomid3 = Intify(tokens[4]) - atomid4 = Intify(tokens[5]) - #if ((atomid1 in needed_atomids) and - # (atomid2 in needed_atomids)): - tokens[0] = '$dihedral:id'+str(dihedralid) - tokens[1] = '@dihedral:type'+str(dihedraltype) - #tokens[2] = '$atom:id'+str(atomid1) - #tokens[3] = '$atom:id'+str(atomid2) - #tokens[4] = '$atom:id'+str(atomid3) - #tokens[5] = '$atom:id'+str(atomid4) - tokens[2] = '$atom:'+atomids_int2name[atomid1] - tokens[3] = '$atom:'+atomids_int2name[atomid2] - tokens[4] = '$atom:'+atomids_int2name[atomid3] - tokens[5] = '$atom:'+atomids_int2name[atomid4] - - needed_dihedralids.add(dihedralid) - needed_dihedraltypes.add(dihedraltype) - l_data_dihedrals[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - #else: - # del l_data_dihedrals[i_line] - - # delete data_dihedral_coeffs for dihedraltypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_dihedral_coeffs): - line = l_data_dihedral_coeffs[i_line] - tokens = line.strip().split() - dihedraltype = Intify(tokens[0]) - if (not (dihedraltype in needed_dihedraltypes)): - del l_data_dihedral_coeffs[i_line] - else: - tokens[0] = '@dihedral:type'+str(dihedraltype) - l_data_dihedral_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - - # --- class2specific ---- - # Do the same for MiddleBondTorsion, EndBondTorsion, AngleTorsion, - # AngleAngleTorsion, and BondBond13 Coeffs - # NOTE: LAMMPS INPUT SCRIPTS, ALL CLASS2 COEFFS are represented by: - # angle_coeff, dihedral_coeff, and improper_coeff commands. - # THERE ARE NO "middlebondtorsion_coeff" commands, etc...so we don't - # have to worry about dealing with "l_in_middlebondtorsion_coeffs",... - # delete data_middlebondtorsion_coeffs for dihedraltypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_middlebondtorsion_coeffs): - line = l_data_middlebondtorsion_coeffs[i_line] - tokens = line.strip().split() - dihedraltype = Intify(tokens[0]) - if (not (dihedraltype in needed_dihedraltypes)): - del l_data_middlebondtorsion_coeffs[i_line] - else: - tokens[0] = '@dihedral:type'+str(dihedraltype) - l_data_middlebondtorsion_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - # delete data_endbondtorsion_coeffs for dihedraltypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_endbondtorsion_coeffs): - line = l_data_endbondtorsion_coeffs[i_line] - tokens = line.strip().split() - dihedraltype = Intify(tokens[0]) - if (not (dihedraltype in needed_dihedraltypes)): - del l_data_endbondtorsion_coeffs[i_line] - else: - tokens[0] = '@dihedral:type'+str(dihedraltype) - l_data_endbondtorsion_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - # delete data_angletorsion_coeffs for dihedraltypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_angletorsion_coeffs): - line = l_data_angletorsion_coeffs[i_line] - tokens = line.strip().split() - dihedraltype = Intify(tokens[0]) - if (not (dihedraltype in needed_dihedraltypes)): - del l_data_angletorsion_coeffs[i_line] - else: - tokens[0] = '@dihedral:type'+str(dihedraltype) - l_data_angletorsion_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - # delete data_angleangletorsion_coeffs for dihedraltypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_angleangletorsion_coeffs): - line = l_data_angleangletorsion_coeffs[i_line] - tokens = line.strip().split() - dihedraltype = Intify(tokens[0]) - if (not (dihedraltype in needed_dihedraltypes)): - del l_data_angleangletorsion_coeffs[i_line] - else: - tokens[0] = '@dihedral:type'+str(dihedraltype) - l_data_angleangletorsion_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - # delete data_bondbond13_coeffs for dihedraltypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_bondbond13_coeffs): - line = l_data_bondbond13_coeffs[i_line] - tokens = line.strip().split() - dihedraltype = Intify(tokens[0]) - if (not (dihedraltype in needed_dihedraltypes)): - del l_data_bondbond13_coeffs[i_line] - else: - tokens[0] = '@dihedral:type'+str(dihedraltype) - l_data_bondbond13_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - # --- end of class2specific ---- - - - # delete in_dihedral_coeffs for dihedraltypes we don't care about anymore: - for dihedraltype in needed_dihedraltypes: - assert(type(dihedraltype) is int) - if ((min_needed_dihedraltype == None) or - (min_needed_dihedraltype > dihedraltype)): - min_needed_dihedraltype = dihedraltype - if ((max_needed_dihedraltype == None) or - (max_needed_dihedraltype < dihedraltype)): - max_needed_dihedraltype = dihedraltype - for dihedralid in needed_dihedralids: - assert(type(dihedralid) is int) - if ((min_needed_dihedralid == None) or - (min_needed_dihedralid > dihedralid)): - min_needed_dihedralid = dihedralid - if ((max_needed_dihedralid == None) or - (max_needed_dihedralid < dihedralid)): - max_needed_dihedralid = dihedralid - - i_line = 0 - while i_line < len(l_in_dihedral_coeffs): - line = l_in_dihedral_coeffs[i_line] - tokens = line.strip().split() - dihedraltype_str = tokens[1] - - if ('*' in dihedraltype_str): - dihedraltype_tokens = dihedraltype_str.split('*') - - if dihedraltype_tokens[0] == '': - i_a = min_needed_dihedraltype - else: - i_a = Intify(dihedraltype_tokens[0]) - - if dihedraltype_tokens[1] == '': - i_b = max_needed_dihedraltype - else: - i_b = Intify(dihedraltype_tokens[1]) - - else: - i_a = i_b = Intify(dihedraltype_str) - - if i_a < min_needed_dihedraltype: - i_a = min_needed_dihedraltype - if i_b > max_needed_dihedraltype: - i_b = max_needed_dihedraltype - - #if i_a == i_b: - # i_str = '@dihedral:type'+str(i_a) - # tokens[1] = i_str - #else: - # i_str = '@{dihedral:type'+str(j_a)+'}*@{dihedral:type'+str(j_b)+'}' - - if ('*' in dihedraltype_str): - del l_in_dihedral_coeffs[i_line] - for i in range(i_a, i_b+1): - if (i in needed_dihedraltypes): - tokens[1] = '@dihedral:type'+str(i) - l_in_dihedral_coeffs.insert(i_line, - (' '*indent)+(' '.join(tokens)+'\n')) - i_line += 1 - else: - if i_a < i_b: - raise InputError('Error: number of dihedral types in data file is not consistent with the\n' - ' number of dihedral types you have define dihedral_coeffs for.\n') - if (i_a == i_b) and (i_a in needed_dihedraltypes): - tokens[1] = '@dihedral:type'+str(i_a) - l_in_dihedral_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - else: - del l_in_dihedral_coeffs[i_line] - - - - # --- IMPROPERS AND IMPROPER COEFFS --- - - # delete lines from data_impropers if they involve atoms we don't care about - i_line = 0 - while i_line < len(l_data_impropers): - line = l_data_impropers[i_line] - tokens = line.strip().split() - assert(len(tokens) == 6) - - improperid = Intify(tokens[0]) - impropertype = Intify(tokens[1]) - atomid1 = Intify(tokens[2]) - atomid2 = Intify(tokens[3]) - atomid3 = Intify(tokens[4]) - atomid4 = Intify(tokens[5]) - #if ((atomid1 in needed_atomids) and - # (atomid2 in needed_atomids)): - tokens[0] = '$improper:id'+str(improperid) - tokens[1] = '@improper:type'+str(impropertype) - #tokens[2] = '$atom:id'+str(atomid1) - #tokens[3] = '$atom:id'+str(atomid2) - #tokens[4] = '$atom:id'+str(atomid3) - #tokens[5] = '$atom:id'+str(atomid4) - tokens[2] = '$atom:'+atomids_int2name[atomid1] - tokens[3] = '$atom:'+atomids_int2name[atomid2] - tokens[4] = '$atom:'+atomids_int2name[atomid3] - tokens[5] = '$atom:'+atomids_int2name[atomid4] - - needed_improperids.add(improperid) - needed_impropertypes.add(impropertype) - l_data_impropers[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - #else: - # del l_data_impropers[i_line] - - # delete data_improper_coeffs for impropertypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_improper_coeffs): - line = l_data_improper_coeffs[i_line] - tokens = line.strip().split() - impropertype = Intify(tokens[0]) - if (not (impropertype in needed_impropertypes)): - del l_data_improper_coeffs[i_line] - else: - tokens[0] = '@improper:type'+str(impropertype) - l_data_improper_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - - # --- class2specific ---- - # Do the same for AngleAngle Coeffs - # NOTE: LAMMPS INPUT SCRIPTS, ALL CLASS2 COEFFS are represented by: - # angle_coeff, dihedral_coeff, and improper_coeff commands. - # THERE ARE NO "angleangle_coeff" commands, etc...so we don't - # have to worry about dealing with "l_in_angleangle_coeffs",... - # delete data_middlebondtorsion_coeffs for dihedraltypes we don't care about anymore: - # delete data_angleangle_coeffs for impropertypes we don't care about anymore: - i_line = 0 - while i_line < len(l_data_angleangle_coeffs): - line = l_data_angleangle_coeffs[i_line] - tokens = line.strip().split() - impropertype = Intify(tokens[0]) - if (not (impropertype in needed_impropertypes)): - del l_data_angleangle_coeffs[i_line] - else: - tokens[0] = '@improper:type'+str(impropertype) - l_data_angleangle_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - # --- end of class2specific ---- - - - # delete in_improper_coeffs for impropertypes we don't care about anymore: - for impropertype in needed_impropertypes: - assert(type(impropertype) is int) - if ((min_needed_impropertype == None) or - (min_needed_impropertype > impropertype)): - min_needed_impropertype = impropertype - if ((max_needed_impropertype == None) or - (max_needed_impropertype < impropertype)): - max_needed_impropertype = impropertype - for improperid in needed_improperids: - assert(type(improperid) is int) - if ((min_needed_improperid == None) or - (min_needed_improperid > improperid)): - min_needed_improperid = improperid - if ((max_needed_improperid == None) or - (max_needed_improperid < improperid)): - max_needed_improperid = improperid - - i_line = 0 - while i_line < len(l_in_improper_coeffs): - line = l_in_improper_coeffs[i_line] - tokens = line.strip().split() - impropertype_str = tokens[1] - - if ('*' in impropertype_str): - impropertype_tokens = impropertype_str.split('*') - - if impropertype_tokens[0] == '': - i_a = min_needed_impropertype - else: - i_a = Intify(impropertype_tokens[0]) - - if impropertype_tokens[1] == '': - i_b = max_needed_impropertype - else: - i_b = Intify(impropertype_tokens[1]) - - else: - i_a = i_b = Intify(impropertype_str) - - if i_a < min_needed_impropertype: - i_a = min_needed_impropertype - if i_b > max_needed_impropertype: - i_b = max_needed_impropertype - - #if i_a == i_b: - # i_str = '@improper:type'+str(i_a) - # tokens[1] = i_str - #else: - # i_str = '@{improper:type'+str(j_a)+'}*@{improper:type'+str(j_b)+'}' - - if ('*' in impropertype_str): - del l_in_improper_coeffs[i_line] - for i in range(i_a, i_b+1): - if (i in needed_impropertypes): - tokens[1] = '@improper:type'+str(i) - l_in_improper_coeffs.insert(i_line, - (' '*indent)+(' '.join(tokens)+'\n')) - i_line += 1 - else: - if i_a < i_b: - raise InputError('Error: number of improper types in data file is not consistent with the\n' - ' number of improper types you have define improper_coeffs for.\n') - if (i_a == i_b) and (i_a in needed_impropertypes): - tokens[1] = '@improper:type'+str(i_a) - l_in_improper_coeffs[i_line] = (' '*indent)+(' '.join(tokens)+'\n') - i_line += 1 - else: - del l_in_improper_coeffs[i_line] - - # --- GROUPS --- - - # Now parse through all of the "group" commands and try and figure - # out if any of these groups contain any of the atoms we are keeping. - # If so, then save the group and write it out. - # (I hate trying to parse this kind of text.) - - #if len(l_in_group) > 0: - # sys.stderr.write('\n' - # ' --groups-- Attempting to parse \"group\" commands.\n' - # ' This may cause '+g_program_name+' to crash.\n' - # ' If so, comment out all group commands in your input script(s), and\n' - # ' try again. (And please report the error. -Andrew 2014-10-30)\n') - - i_line = 0 - groups_needed = set(['all']) - while i_line < len(l_in_group): - line = l_in_group[i_line] - tokens = line.strip().split() - delete_this_command = False - explicit_definition = False - if len(tokens) < 3: - delete_this_command = True - group_name = tokens[1] - specifier_style = tokens[2] - str_logical = '' - str_selection = '' - if specifier_style[0:4] == 'type': - str_logical+=specifier_style[4:] - explicit_definition = True - specifier_style = 'type' - elif specifier_style == 'id': - str_logical+=specifier_style[2:] - explicit_definition = True - specifier_style = 'id' - elif specifier_style == 'molecule': - str_logical+=specifier_style[8:] - specifier_style = 'molecule' - explicit_definition = True - - if explicit_definition: - i_token_sel_min = 3 - if len(tokens) <= i_token_sel_min: - sys.stderr.write('WARNING: possible syntax error on this line:\n' - +' '+l_in_group[i_line]+'\n') - delete_this_command = True - if str_logical == '': - str_logical = tokens[i_token_sel_min] - if not str_logical[0].isdigit(): - i_token_sel_min += 1 - if len(tokens) <= i_token_sel_min: - tokens.append('') - else: - tokens.insert(i_token_sel_min, str_logical) - - i_token_sel_max = len(tokens)-1 - - for i in range(i_token_sel_min, len(tokens)): - if tokens[i].isdigit(): - break - else: - i_token_sel_max = i - - assert(len(tokens) > i_token_sel_min) - - if str_logical[0:2] in ('<=','>=','==','!=','<>'): - tokens[i_token_sel_min] = str_logical[2:] + tokens[i_token_sel_min] - str_logical = str_logical[0:2] - if str_logical == '<=': - l_group_selection = [ (None,int(tokens[i_token_sel_min])) ] - elif str_logical == '>=': - l_group_selection = [ (int(tokens[i_token_sel_min]),None) ] - elif str_logical == '==': - l_group_selection = [ (int(tokens[i_token_sel_min]), - int(tokens[i_token_sel_min])) ] - elif str_logical == '!=': - l_group_selection = [ (None,int(tokens[i_token_sel_min])-1), - (int(tokens[i_token_sel_min])+1,None)] - elif str_logical == '<>': - l_group_selection = [ (int(tokens[i_token_sel_min]), - int(tokens[i_token_sel_max])) ] - - elif str_logical[0:1] in ('<','>'): - tokens[i_token_sel_min] = str_logical[1:] + tokens[i_token_sel_min] - str_logical = str_logical[0:1] - if str_logical == '<': - l_group_selection = [(None,int(tokens[i_token_sel_min])-1)] - elif str_logical == '>': - l_group_selection = [(int(tokens[i_token_sel_min])+1,None)] - else: - str_selection = ' '.join(tokens[i_token_sel_min:i_token_sel_max+1]) - l_group_selection = LammpsSelectToIntervals(str_selection, - slice_delim=':', - or_delim=' ') - - mn, mx = IntervalListToMinMax(l_group_selection) - if mn == None: - mn = 1 - filtered_selection=[] - if specifier_style == 'type': - if mx == None: - mx = max_needed_atomtype - for i in range(mn, mx+1): - if (BelongsToSel(i, l_group_selection) - and (i in needed_atomtypes)): - filtered_selection.append((i,i)) - elif specifier_style == 'id': - if mx == None: - mx = max_needed_atomid - for i in range(mn, mx+1): - if (BelongsToSel(i, l_group_selection) - and (i in needed_atomids)): - filtered_selection.append((i,i)) - elif specifier_style == 'molecule': - if mx == None: - mx = max_needed_molid - for i in range(mn, mx+1): - if (BelongsToSel(i, l_group_selection) - and (i in needed_molids)): - filtered_selection.append((i,i)) - - - MergeIntervals(filtered_selection) - - - if len(filtered_selection) > 0: - - tokens = ['group', group_name, specifier_style] - for interval in filtered_selection: - a = interval[0] - b = interval[1] - - if specifier_style == 'type': - if a == b: - tokens.append('@atom:type'+str(a)) - else: - tokens.append('@{atom:type'+str(a)+ - '}:@{atom:type'+str(b)+'}') - - if specifier_style == 'id': - if a == b: - tokens.append('$atom:id'+str(a)) - else: - tokens.append('${atom:id'+str(a) - +'}:${atom:id'+str(b)+'}') - - if specifier_style == 'molecule': - if a == b: - tokens.append('$mol:id'+str(a)) - else: - tokens.append('${mol:id'+str(a)+ - '}:${mol:id'+str(b)+'}') - - - # Commenting out next two lines. (This is handled later.) - #l_in_group[i_line] = ' '.join(tokens) - #groups_needed.add(group_name) - - else: - delete_this_command = True - - - else: - if len(tokens) > 3: - if tokens[2] == 'union': - i_token = 3 - while i_token < len(tokens): - if not (tokens[i_token] in groups_needed): - del tokens[i_token] - else: - i_token += 1 - # if none of the groups contain atoms we need, - # then delete the entire command - if len(tokens) <= 3: - delete_this_command = True - elif tokens[2] == 'intersect': - i_token = 3 - while i_token < len(tokens): - if not (tokens[i_token] in groups_needed): - # if any of the groups we need are empty - # then delete the command - delete_this_command = True - break - i_token += 1 - elif (tokens[2] == 'subtract') and (len(tokens) >= 5): - if not (tokens[3] in groups_needed): - delete_this_command = True - i_token = 4 - while i_token < len(tokens): - if not (tokens[i_token] in groups_needed): - del tokens[i_token] - else: - i_token += 1 - else: - # Otherwise I don't recongize the syntax of this - # group command. In that case, I just delete it. - delete_this_command = True - - elif tokens[2] == 'clear': - pass - elif tokens[2] == 'delete': - pass - else: - delete_this_command = True - if delete_this_command: - sys.stderr.write('WARNING: Ignoring line \n\"'+l_in_group[i_line].rstrip()+'\"\n') - del l_in_group[i_line] - else: - groups_needed.add(group_name) - l_in_group[i_line] = (' '*indent) + ' '.join(tokens) + '\n' - i_line += 1 - - - - # --- fix rigid --- - - i_line = 0 - while i_line < len(l_in_fix_rigid): - line = l_in_fix_rigid[i_line] - tokens = line.strip().split() - if len(tokens) < 4: - break - fixid = tokens[1] - group_name = tokens[2] - delete_this_command = True - assert(tokens[3].find('rigid') == 0) - if group_name in groups_needed: - delete_this_command = False - - if delete_this_command: - sys.stderr.write('WARNING: Ignoring line \n\"'+l_in_fix_rigid[i_line].rstrip()+'\"\n') - del l_in_fix_rigid[i_line] - else: - l_in_fix_rigid[i_line] = (' '*indent) + ' '.join(tokens) + '\n' - i_line += 1 - - - - # --- fix shake --- - - i_line = 0 - while i_line < len(l_in_fix_shake): - line = l_in_fix_shake[i_line] - tokens = line.strip().split() - if len(tokens) < 4: - break - fixid = tokens[1] - group_name = tokens[2] - delete_this_command = True - assert(tokens[3].find('shake') == 0) - - # parse the list of angle types - #i_token = tokens.index('a') - for i_token in range(0, len(tokens)): - if tokens[i_token] == 'a': - break - if i_token != len(tokens): - i_token += 1 - while (i_token < len(tokens)) and tokens[i_token].isdigit(): - # delete angle types from the list which - # do not belong to the selection - btype=int(tokens[i_token]) - if int(tokens[i_token]) in needed_angletypes: - tokens[i_token] = '@angle:type'+tokens[i_token] - i_token += 1 - delete_this_command = False - else: - del tokens[i_token] - - # parse the list of bond types - #i_token = tokens.index('b') - for i_token in range(0, len(tokens)): - if tokens[i_token] == 'b': - break - if i_token != len(tokens): - i_token += 1 - while (i_token < len(tokens)) and tokens[i_token].isdigit(): - # delete bond types from the list which - # do not belong to the selection - btype=int(tokens[i_token]) - if int(tokens[i_token]) in needed_bondtypes: - tokens[i_token] = '@bond:type'+tokens[i_token] - i_token += 1 - delete_this_command = False - else: - del tokens[i_token] - - # parse the list of atom types - # i_token = tokens.index('t') - for i_token in range(0, len(tokens)): - if tokens[i_token] == 't': - break - if i_token != len(tokens): - i_token += 1 - while (i_token < len(tokens)) and tokens[i_token].isdigit(): - # delete atom types from the list which - # do not belong to the selection - btype=int(tokens[i_token]) - if int(tokens[i_token]) in needed_atomtypes: - tokens[i_token] = '@atom:type'+tokens[i_token] - i_token += 1 - delete_this_command = False - else: - del tokens[i_token] - - - # Selecting atoms by mass feature should still work, so we - # don't need to delete or ignore these kinds of commands. - #for i_token in range(0, len(tokens)): - # if tokens[i_token] == 'm': - # break - #if i_token != len(tokens): - # delete_this_command = True - - if 'mol' in tokens: - delete_this_command = True - - if not (group_name in groups_needed): - delete_this_command = True - - if delete_this_command: - sys.stderr.write('WARNING: Ignoring line \n\"'+l_in_fix_shake[i_line].rstrip()+'\"\n') - del l_in_fix_shake[i_line] - else: - l_in_fix_shake[i_line] = (' '*indent) + ' '.join(tokens) + '\n' - i_line += 1 - - - # --- fix poems --- - - i_line = 0 - while i_line < len(l_in_fix_poems): - line = l_in_fix_poems[i_line] - tokens = line.strip().split() - if len(tokens) < 4: - break - fixid = tokens[1] - group_name = tokens[2] - delete_this_command = True - assert(tokens[3].find('poems') == 0) - if group_name in groups_needed: - delete_this_command = False - if tokens[4] != 'molecule': - delete_this_command = True - sys.stderr.write('WARNING: '+g_program_name+' ONLY supports \"fix poems\" commands\n' - ' which use the \"molecule\" keyword.\n') - if tokens[4] == 'file': - sys.stderr.write(' If you want use external files with fix poems, then you will have to\n' - ' generate the file yourself. You ask use moltemplate to generate\n' - ' this file for you, by manually adding a section at the end of your\n' - ' final .LT file (eg. \"system.lt\") which resembles the following:\n\n' - 'write(\"poems_file.txt\") {\n' - ' 1 1 $atom:idname1a $atom:idname2a $atom:idname3a ...\n' - ' 2 1 $atom:idname1b $atom:idname2b $atom:idname3b ...\n' - ' 3 1 $atom:idname1c $atom:idname2c $atom:idname3c ...\n' - ' : : etc...\n' - '}\n\n' - ' ...where $atom:idname1a, $atom:idname2a, ... are moltemplate-compatible\n' - ' unique (full,long) id-names for the atoms in each rigid body.\n' - ' This will insure the atom-id numbers in this file are correct.\n' - - ' See the documentation for fix poems for details.\n') - - - if delete_this_command: - sys.stderr.write('WARNING: Ignoring line \n\"'+l_in_fix_poems[i_line].rstrip()+'\"\n') - del l_in_fix_poems[i_line] - else: - l_in_fix_poems[i_line] = (' '*indent) + ' '.join(tokens) + '\n' - i_line += 1 - - - - # --- fix qeq --- - - i_line = 0 - while i_line < len(l_in_fix_qeq): - line = l_in_fix_qeq[i_line] - tokens = line.strip().split() - if len(tokens) < 4: - break - fixid = tokens[1] - group_name = tokens[2] - delete_this_command = True - assert(tokens[3].find('qeq') == 0) - if group_name in groups_needed: - delete_this_command = False - - if delete_this_command: - sys.stderr.write('WARNING: Ignoring line \n\"'+l_in_fix_qeq[i_line].rstrip()+'\"\n') - del l_in_fix_qeq[i_line] - else: - l_in_fix_qeq[i_line] = (' '*indent) + ' '.join(tokens) + '\n' - i_line += 1 - - - - # --- fix qmmm --- - - i_line = 0 - while i_line < len(l_in_fix_qmmm): - line = l_in_fix_qmmm[i_line] - tokens = line.strip().split() - if len(tokens) < 4: - break - fixid = tokens[1] - group_name = tokens[2] - delete_this_command = True - assert(tokens[3].find('qmmm') == 0) - if group_name in groups_needed: - delete_this_command = False - - if delete_this_command: - sys.stderr.write('WARNING: Ignoring line \n\"'+l_in_fix_qmmm[i_line].rstrip()+'\"\n') - del l_in_fix_qmmm[i_line] - else: - l_in_fix_qmmm[i_line] = (' '*indent) + ' '.join(tokens) + '\n' - i_line += 1 - - - - - - - ######################################## - ### Now begin writing the template. ### - ######################################## - - if not some_pair_coeffs_read: - sys.stderr.write('Warning: No \"pair coeffs\" set.\n' - ' (No interactions between non-bonded atoms defined.)\n') - no_warnings = False - - #sys.stderr.write('Writing ttree data to standard out.\n' - # ' You can redirect this to a file using:\n'+ - # ' '+' '.join(sys.argv)+' > filename.ttree\n' - # ' ----------------------\n') - - if mol_name != '': - sys.stdout.write(mol_name + ' {\n') - - if len(l_in_init) > 0: - sys.stdout.write('\n### LAMMPS commands for initialization\n' - '### (These can be overridden later.)\n\n') - l_in_init.insert(0, (' '*cindent)+'write_once(\"'+in_init+'\") {\n') - l_in_init.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_init)) - if len(l_in_settings) > 0: - sys.stdout.write('\n### LAMMPS commands for settings\n' - '### (These can be overridden later.)\n\n') - l_in_settings.insert(0, (' '*cindent)+'write_once(\"'+in_settings+'\") {\n') - l_in_settings.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_settings)) - non_empty_output = True - if len(l_in_masses) > 0: - l_in_masses.insert(0, (' '*cindent)+'write_once(\"'+in_settings+'\") {\n') - l_in_masses.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_masses)) - non_empty_output = True - - - if remove_coeffs_from_data_file: - if len(l_data_pair_coeffs) > 0: - for line in l_data_pair_coeffs: - tokens = line.strip().split() - atomtype_str = tokens[0] - l_in_pair_coeffs.append((' '*cindent)+' pair_coeff '+atomtype_str+' '+atomtype_str+' '+' '.join(tokens[1:])+'\n') - l_data_pair_coeffs = [] - if len(l_data_pairij_coeffs) > 0: - for line in l_data_pairij_coeffs: - l_in_pair_coeffs.append((' '*cindent)+' pair_coeff '+line.strip()+'\n') - l_data_pairij_coeffs = [] - if len(l_in_pair_coeffs) > 0: - l_in_pair_coeffs.insert(0, (' '*cindent)+'write_once(\"'+in_settings+'\") {\n') - l_in_pair_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_pair_coeffs)) - non_empty_output = True - - - if (remove_coeffs_from_data_file and (len(l_data_bond_coeffs) > 0)): - for line in l_data_bond_coeffs: - l_in_bond_coeffs.append((' '*cindent)+' bond_coeff '+line.strip()+'\n') - l_data_bond_coeffs = [] - if len(l_in_bond_coeffs) > 0: - l_in_bond_coeffs.insert(0, (' '*cindent)+'write_once(\"'+in_settings+'\") {\n') - l_in_bond_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_bond_coeffs)) - non_empty_output = True - - if (remove_coeffs_from_data_file and (len(l_data_angle_coeffs) > 0)): - for line in l_data_angle_coeffs: - l_in_angle_coeffs.append((' '*cindent)+' angle_coeff '+line.strip()+'\n') - l_data_angle_coeffs = [] - for line in l_data_bondbond_coeffs: - tokens = line.strip().split() - l_in_angle_coeffs.append((' '*cindent)+' angle_coeff '+tokens[0]+' bb '+' '.join(tokens[1:])+'\n') - l_data_bondbond_coeffs = [] - for line in l_data_bondangle_coeffs: - tokens = line.strip().split() - l_in_angle_coeffs.append((' '*cindent)+' angle_coeff '+tokens[0]+' ba '+' '.join(tokens[1:])+'\n') - l_data_bondangle_coeffs = [] - if len(l_in_angle_coeffs) > 0: - l_in_angle_coeffs.insert(0, (' '*cindent)+'write_once(\"'+in_settings+'\") {\n') - l_in_angle_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_angle_coeffs)) - non_empty_output = True - - if (remove_coeffs_from_data_file and (len(l_data_dihedral_coeffs) > 0)): - for line in l_data_dihedral_coeffs: - l_in_dihedral_coeffs.append((' '*cindent)+' dihedral_coeff '+line.strip()+'\n') - l_data_dihedral_coeffs = [] - - for line in l_data_middlebondtorsion_coeffs: - tokens = line.strip().split() - l_in_dihedral_coeffs.append((' '*cindent)+' dihedral_coeff '+tokens[0]+' mbt '+' '.join(tokens[1:])+'\n') - l_data_middlebondtorsion_coeffs = [] - - for line in l_data_endbondtorsion_coeffs: - tokens = line.strip().split() - l_in_dihedral_coeffs.append((' '*cindent)+' dihedral_coeff '+tokens[0]+' ebt '+' '.join(tokens[1:])+'\n') - l_data_endbondtorsion_coeffs = [] - - for line in l_data_angletorsion_coeffs: - tokens = line.strip().split() - l_in_dihedral_coeffs.append((' '*cindent)+' dihedral_coeff '+tokens[0]+' at '+' '.join(tokens[1:])+'\n') - l_data_angletorsion_coeffs = [] - - for line in l_data_angleangletorsion_coeffs: - tokens = line.strip().split() - l_in_dihedral_coeffs.append((' '*cindent)+' dihedral_coeff '+tokens[0]+' aat '+' '.join(tokens[1:])+'\n') - l_data_angleangletorsion_coeffs = [] - - for line in l_data_bondbond13_coeffs: - tokens = line.strip().split() - l_in_dihedral_coeffs.append((' '*cindent)+' dihedral_coeff '+tokens[0]+' bb13 '+' '.join(tokens[1:])+'\n') - l_data_bondbond13_coeffs = [] - - if len(l_in_dihedral_coeffs) > 0: - l_in_dihedral_coeffs.insert(0, (' '*cindent)+'write_once(\"'+in_settings+'\") {\n') - l_in_dihedral_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_dihedral_coeffs)) - non_empty_output = True - - if (remove_coeffs_from_data_file and (len(l_data_improper_coeffs) > 0)): - for line in l_data_improper_coeffs: - l_in_improper_coeffs.append((' '*cindent)+' improper_coeff '+line.strip()+'\n') - l_data_improper_coeffs = [] - - for line in l_data_angleangle_coeffs: - tokens = line.strip().split() - l_in_improper_coeffs.append((' '*cindent)+' improper_coeff '+tokens[0]+' aa '+' '.join(tokens[1:])+'\n') - l_data_angleangle_coeffs = [] - - if len(l_in_improper_coeffs) > 0: - l_in_improper_coeffs.insert(0, (' '*cindent)+'write_once(\"'+in_settings+'\") {\n') - l_in_improper_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_improper_coeffs)) - non_empty_output = True - - if non_empty_output: - sys.stdout.write('\n\n### DATA sections\n\n') - - if len(l_data_masses) > 0: - l_data_masses.insert(0, (' '*cindent)+'write_once(\"'+data_masses+'\") {\n') - l_data_masses.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_masses)) - non_empty_output = True - if len(l_data_bond_coeffs) > 0: - l_data_bond_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_bond_coeffs+'\") {\n') - l_data_bond_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_bond_coeffs)) - non_empty_output = True - if len(l_data_angle_coeffs) > 0: - l_data_angle_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_angle_coeffs+'\") {\n') - l_data_angle_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_angle_coeffs)) - non_empty_output = True - if len(l_data_dihedral_coeffs) > 0: - l_data_dihedral_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_dihedral_coeffs+'\") {\n') - l_data_dihedral_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_dihedral_coeffs)) - non_empty_output = True - if len(l_data_improper_coeffs) > 0: - l_data_improper_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_improper_coeffs+'\") {\n') - l_data_improper_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_improper_coeffs)) - non_empty_output = True - if len(l_data_pair_coeffs) > 0: - l_data_pair_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_pair_coeffs+'\") {\n') - l_data_pair_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_pair_coeffs)) - non_empty_output = True - if len(l_data_pairij_coeffs) > 0: - l_data_pairij_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_pairij_coeffs+'\") {\n') - l_data_pairij_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_pairij_coeffs)) - non_empty_output = True - - # class2 force fields: - if len(l_data_bondbond_coeffs) > 0: - l_data_bondbond_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_bondbond_coeffs+'\") {\n') - l_data_bondbond_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_bondbond_coeffs)) - non_empty_output = True - if len(l_data_bondangle_coeffs) > 0: - l_data_bondangle_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_bondangle_coeffs+'\") {\n') - l_data_bondangle_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_bondangle_coeffs)) - non_empty_output = True - if len(l_data_middlebondtorsion_coeffs) > 0: - l_data_middlebondtorsion_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_middlebondtorsion_coeffs+'\") {\n') - l_data_middlebondtorsion_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_middlebondtorsion_coeffs)) - non_empty_output = True - if len(l_data_endbondtorsion_coeffs) > 0: - l_data_endbondtorsion_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_endbondtorsion_coeffs+'\") {\n') - l_data_endbondtorsion_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_endbondtorsion_coeffs)) - non_empty_output = True - if len(l_data_angletorsion_coeffs) > 0: - l_data_angletorsion_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_angletorsion_coeffs+'\") {\n') - l_data_angletorsion_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_angletorsion_coeffs)) - non_empty_output = True - if len(l_data_angleangletorsion_coeffs) > 0: - l_data_angleangletorsion_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_angleangletorsion_coeffs+'\") {\n') - l_data_angleangletorsion_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_angleangletorsion_coeffs)) - non_empty_output = True - if len(l_data_bondbond13_coeffs) > 0: - l_data_bondbond13_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_bondbond13_coeffs+'\") {\n') - l_data_bondbond13_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_bondbond13_coeffs)) - non_empty_output = True - if len(l_data_angleangle_coeffs) > 0: - l_data_angleangle_coeffs.insert(0, (' '*cindent)+'write_once(\"'+data_angleangle_coeffs+'\") {\n') - l_data_angleangle_coeffs.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_angleangle_coeffs)) - non_empty_output = True - - # automatic generation of bonded interactions by type: - if len(l_data_angles_by_type) > 0: - l_data_angles_by_type.insert(0, (' '*cindent)+'write_once(\"'+data_angles_by_type+'\") {\n') - l_data_angles_by_type.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_angles_by_type)) - non_empty_output = True - if len(l_data_dihedrals_by_type) > 0: - l_data_dihedrals_by_type.insert(0, (' '*cindent)+'write_once(\"'+data_dihedrals_by_type+'\") {\n') - l_data_dihedrals_by_type.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_dihedrals_by_type)) - non_empty_output = True - if len(l_data_impropers_by_type) > 0: - l_data_impropers_by_type.insert(0, (' '*cindent)+'write_once(\"'+data_impropers_by_type+'\") {\n') - l_data_impropers_by_type.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_impropers_by_type)) - non_empty_output = True - - if len(l_data_atoms) > 0: - l_data_atoms.insert(0, (' '*cindent)+'write(\"'+data_atoms+'\") {\n') - l_data_atoms.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_atoms)) - non_empty_output = True - else: - sys.stderr.write('Warning: missing \"Atoms\" section.\n' - ' (Did you include a LAMMPS data file in your argument list?)\n') - no_warnings = False - - # non-point-like particles - if len(l_data_ellipsoids) > 0: - l_data_ellipsoids.insert(0, (' '*cindent)+'write(\"'+data_ellipsoids+'\") {\n') - l_data_ellipsoids.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_ellipsoids)) - if len(l_data_lines) > 0: - l_data_lines.insert(0, (' '*cindent)+'write(\"'+data_lines+'\") {\n') - l_data_lines.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_lines)) - if len(l_data_triangles) > 0: - l_data_triangles.insert(0, (' '*cindent)+'write(\"'+data_triangles+'\") {\n') - l_data_triangles.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_triangles)) - - # DO NOT WRITE OUT VELOCITY DATA - # (Why: because it makes it difficult to combine this molecular template - # with molecule templates from other sources which lack velocity data. - # LAMMPS (and topotools) will crash if the number of entries in the - # Velocities section of a data file does not match the number of atoms.) - # COMMENTING OUT: - #if len(l_data_velocities) > 0: - # l_data_velocities.insert(0, (' '*cindent)+'write(\"'+data_velocities+'\") {\n') - # l_data_velocities.append((' '*cindent)+'}\n') - # sys.stdout.write('\n') - # sys.stdout.write(''.join(l_data_velocities)) - if len(l_data_bonds) > 0: - l_data_bonds.insert(0, (' '*cindent)+'write(\"'+data_bonds+'\") {\n') - l_data_bonds.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_bonds)) - non_empty_output = True - if len(l_data_angles) > 0: - l_data_angles.insert(0, (' '*cindent)+'write(\"'+data_angles+'\") {\n') - l_data_angles.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_angles)) - non_empty_output = True - if len(l_data_dihedrals) > 0: - l_data_dihedrals.insert(0, (' '*cindent)+'write(\"'+data_dihedrals+'\") {\n') - l_data_dihedrals.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_dihedrals)) - non_empty_output = True - if len(l_data_impropers) > 0: - l_data_impropers.insert(0, (' '*cindent)+'write(\"'+data_impropers+'\") {\n') - l_data_impropers.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_data_impropers)) - non_empty_output = True - - if len(l_in_group) > 0: - no_warnings = False - l_in_group.insert(0, (' '*cindent)+'write(\"'+in_settings+'\") {\n') - l_in_group.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_group)) - #sys.stderr.write('######################################################\n' - # 'WARNING: One or more \"group\" commands appear to refer to relevant atoms.\n' - # ' Please check to make sure that the group(s) generated by\n' - # ' '+g_program_name+' contain the correct atoms. (-Andrew 2014-10-30)\n' - # '######################################################\n') - assert(non_empty_output) - - if len(l_in_fix_rigid) > 0: - no_warnings = False - l_in_fix_rigid.insert(0, (' '*cindent)+'write(\"'+in_settings+'\") {\n') - l_in_fix_rigid.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_fix_rigid)) - sys.stderr.write('WARNING: \"fix rigid\" style command(s) applied to selected atoms.\n' - ' Please make sure that the fix group(s) are defined correctly.\n' - '######################################################\n') - assert(non_empty_output) - - if len(l_in_fix_shake) > 0: - no_warnings = False - l_in_fix_shake.insert(0, (' '*cindent)+'write(\"'+in_settings+'\") {\n') - l_in_fix_shake.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_fix_shake)) - sys.stderr.write('WARNING: \"fix shake\" style command(s) applied to selected atoms.\n' - ' Please check to make sure that the fix group(s) are defined correctly,\n' - - ' and also check that the atom, bond, and angle types are correct.\n' - '######################################################\n') - assert(non_empty_output) - - if len(l_in_fix_poems) > 0: - no_warnings = False - l_in_fix_poems.insert(0, (' '*cindent)+'write(\"'+in_settings+'\") {\n') - l_in_fix_poems.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_fix_poems)) - sys.stderr.write('WARNING: \"fix poems\" style command(s) applied to selected atoms.\n' - ' Please make sure that the fix group(s) are defined correctly.\n' - '######################################################\n') - assert(non_empty_output) - - if len(l_in_fix_qeq) > 0: - no_warnings = False - l_in_fix_qeq.insert(0, (' '*cindent)+'write(\"'+in_settings+'\") {\n') - l_in_fix_qeq.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_fix_qeq)) - sys.stderr.write('WARNING: \"fix qeq\" style command(s) applied to selected atoms.\n' - ' Please make sure that the fix group(s) are defined correctly.\n' - '######################################################\n') - assert(non_empty_output) - - if len(l_in_fix_qmmm) > 0: - no_warnings = False - l_in_fix_qmmm.insert(0, (' '*cindent)+'write(\"'+in_settings+'\") {\n') - l_in_fix_qmmm.append((' '*cindent)+'}\n') - sys.stdout.write('\n') - sys.stdout.write(''.join(l_in_fix_qmmm)) - sys.stderr.write('WARNING: \"fix qmmm\" style command(s) applied to selected atoms.\n' - ' Please make sure that the fix group(s) are defined correctly.\n' - '######################################################\n') - assert(non_empty_output) - - - - if mol_name != '': - sys.stdout.write('\n} # end of \"'+mol_name+'\" type definition\n') - - - - #if non_empty_output and no_warnings: - if non_empty_output: - sys.stderr.write('WARNING: The '+g_program_name+' script has not been rigorously tested.\n' - ' Exotic (many-body) pair-styles and pair-styles with\n' - ' unusual syntax (such hbond/dreiding) are not understood\n' - ' by '+g_program_name+' (...although they are supported by moltemplate).\n' - ' Please look over the resulting LT file and check for errors.\n' - ' Convert any remaining atom, bond, angle, dihedral, or improper id\n' - ' or type numbers to the corresponding $ or @-style counter variables.\n' - ' Feel free to report any bugs you find. (-Andrew Jewett 2015-8-02)\n') - - - -except (ValueError, InputError) as err: - sys.stderr.write('\n'+str(err)+'\n') - sys.exit(-1) diff --git a/tools/moltemplate/src/lttree.py b/tools/moltemplate/src/lttree.py deleted file mode 100644 index 743419eb2b..0000000000 --- a/tools/moltemplate/src/lttree.py +++ /dev/null @@ -1,744 +0,0 @@ -#!/usr/bin/env python - -# Author: Andrew Jewett (jewett.aij at g mail) -# http://www.chem.ucsb.edu/~sheagroup -# License: 3-clause BSD License (See LICENSE.TXT) -# Copyright (c) 2011, Regents of the University of California -# All rights reserved. - -""" -lttree.py - -lttree.py is an extension of the generic ttree.py program. -This version can understand and manipulate ttree-style templates which -are specialized for storing molecule-specific data for use in LAMMPS. - -The main difference between lttree.py and ttree.py is: -Unlike ttree.py, lttree.py understands rigid-body movement commands like -"rot()" and "move()" which allows it to reorient and move each copy -of a molecule to a new location. (ttree.py just ignores these commands. -Consequently LAMMPS input file (fragments) created with ttree.py have -invalid (overlapping) atomic coordinates and must be modified or aguemted -later (by loading atomic coordinates from a PDB file or an XYZ file). -lttree.py understands the "Data Atoms" section of a LAMMPS -data file (in addition to the various "atom_styles" which effect it). - -Additional LAMMPS-specific features may be added in the future. - -""" - -import sys -from ttree import * -from lttree_styles import * -from ttree_matrix_stack import * - -try: - unicode -except NameError: - # Python 3 - basestring = unicode = str - - - - -class LttreeSettings(BasicUISettings): - def __init__(self, - user_bindings_x=None, - user_bindings=None, - order_method='by_command'): - - BasicUISettings.__init__(self, - user_bindings_x, - user_bindings, - order_method) - - # The following new member data indicate which columns store - # LAMMPS-specific information. - # The next 6 members store keep track of the different columns - # of the "Data Atoms" section of a LAMMPS data file: - self.column_names = [] #<--A list of column names (optional) - self.ii_coords=[] #<--A list of triplets of column indexes storing coordinate data - self.ii_vects=[] #<--A list of triplets of column indexes storing directional data - # (such as dipole or ellipsoid orientations) - self.i_atomid=None #<--An integer indicating which column has the atomid - self.i_atomtype=None #<--An integer indicating which column has the atomtype - self.i_molid=None #<--An integer indicating which column has the molid, if applicable - self.infile=None # Name of the outermost file. This is the file - # which was read at the moment parsing begins. - - - - -def LttreeParseArgs(argv, settings): - - BasicUIParseArgs(argv, settings) - - # Loop over the remaining arguments not processed yet. - # These arguments are specific to the lttree.py program - # and are not understood by ttree.py: - i = 1 - while i < len(argv): - #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') - if ((argv[i].lower() == '-atomstyle') or - (argv[i].lower() == '-atom-style') or - (argv[i].lower() == '-atom_style')): - if i+1 >= len(argv): - raise InputError('Error('+g_program_name+'): The '+argv[i]+' flag should be followed by a LAMMPS\n' - ' atom_style name (or single quoted string containing a space-separated\n' - ' list of column names such as: atom-ID atom-type q x y z molecule-ID.)\n') - settings.column_names = AtomStyle2ColNames(argv[i+1]) - sys.stderr.write('\n \"'+data_atoms+'\" column format:\n') - sys.stderr.write(' '+(' '.join(settings.column_names))+'\n\n') - settings.ii_coords = ColNames2Coords(settings.column_names) - settings.ii_vects = ColNames2Vects(settings.column_names) - settings.i_atomid, settings.i_atomtype, settings.i_molid = ColNames2AidAtypeMolid(settings.column_names) - del(argv[i:i+2]) - elif (argv[i].lower() == '-icoord'): - if i+1 >= len(argv): - raise InputError('Error: '+argv[i]+' flag should be followed by list of integers\n' - ' corresponding to column numbers for coordinates in\n' - ' the \"'+data_atoms+'\" section of a LAMMPS data file.\n') - ilist = argv[i+1].split() - if (len(ilist) % 3) != 0: - raise InputError('Error: '+argv[i]+' flag should be followed by list of integers.\n' - ' This is usually a list of 3 integers, but it can contain more.\n' - ' The number of cooridnate columns must be divisible by 3,\n' - ' (even if the simulation is in 2 dimensions)\n') - settings.iaffinevects = [] - for i in range(0, len(ilist)/3): - cols = [int(ilist[3*i])+1, - int(ilist[3*i+1])+1, - int(ilist[3*i+2])+1] - settings.iaffinevects.append(cols) - del(argv[i:i+2]) - elif (argv[i].lower() == '-ivect'): - if i+1 >= len(argv): - raise InputError('Error: '+argv[i]+' flag should be followed by list of integers\n' - ' corresponding to column numbers for direction vectors in\n' - ' the \"'+data_atoms+'\" section of a LAMMPS data file.\n') - ilist = argv[i+1].split() - if (len(ilist) % 3) != 0: - raise InputError('Error: '+argv[i]+' flag should be followed by list of integers.\n' - ' This is usually a list of 3 integers, but it can contain more.\n' - ' The number of cooridnate columns must be divisible by 3,\n' - ' (even if the simulation is in 2 dimensions)\n') - settings.ivects = [] - for i in range(0, len(ilist)/3): - cols = [int(ilist[3*i])+1, - int(ilist[3*i+1])+1, - int(ilist[3*i+2])+1] - settings.ivects.append(cols) - del(argv[i:i+2]) - elif ((argv[i].lower() == '-iatomid') or - (argv[i].lower() == '-iid') or - (argv[i].lower() == '-iatom-id')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error: '+argv[i]+' flag should be followed by an integer\n' - ' (>=1) indicating which column in the \"'+data_atoms+'\" section of a\n' - ' LAMMPS data file contains the atom id number (typically 1).\n' - ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_atomid = int(argv[i+1])-1 - del(argv[i:i+2]) - elif ((argv[i].lower() == '-iatomtype') or - (argv[i].lower() == '-itype') or - (argv[i].lower() == '-iatom-type')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error: '+argv[i]+' flag should be followed by an integer\n' - ' (>=1) indicating which column in the \"'+data_atoms+'\" section of a\n' - ' LAMMPS data file contains the atom type.\n' - ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_atomtype = int(argv[i+1])-1 - del(argv[i:i+2]) - elif ((argv[i].lower() == '-imolid') or - (argv[i].lower() == '-imol') or - (argv[i].lower() == '-imol-id') or - (argv[i].lower() == '-imoleculeid') or - (argv[i].lower() == '-imolecule-id')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error: '+argv[i]+' flag should be followed by an integer\n' - ' (>=1) indicating which column in the \"'+data_atoms+'\" section of a\n' - ' LAMMPS data file contains the molecule id number.\n' - ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_molid = int(argv[i+1])-1 - del(argv[i:i+2]) - - elif ((argv[i][0] == '-') and (__name__ == "__main__")): - #elif (__name__ == "__main__"): - raise InputError('Error('+g_program_name+'):\n' - 'Unrecognized command line argument \"'+argv[i]+'\"\n') - else: - i += 1 - - - if __name__ == "__main__": - - # Instantiate the lexer we will be using. - # (The lexer's __init__() function requires an openned file. - # Assuming __name__ == "__main__", then the name of that file should - # be the last remaining (unprocessed) argument in the argument list. - # Otherwise, then name of that file will be determined later by the - # python script which imports this module, so we let them handle it.) - - if len(argv) == 1: - raise InputError('Error: This program requires at least one argument\n' - ' the name of a file containing ttree template commands\n') - elif len(argv) == 2: - try: - settings.lex = TemplateLexer(open(argv[1], 'r'), argv[1]) # Parse text from file - except IOError: - sys.stderr.write('Error: unable to open file\n' - ' \"'+argv[1]+'\"\n' - ' for reading.\n') - sys.exit(1) - del(argv[1:2]) - - else: - # if there are more than 2 remaining arguments, - problem_args = ['\"'+arg+'\"' for arg in argv[1:]] - raise InputError('Syntax Error('+g_program_name+'):\n\n' - ' Problem with argument list.\n' - ' The remaining arguments are:\n\n' - ' '+(' '.join(problem_args))+'\n\n' - ' (The actual problem may be earlier in the argument list.\n' - ' If these arguments are source files, then keep in mind\n' - ' that this program can not parse multiple source files.)\n' - ' Check the syntax of the entire argument list.\n') - - - - if len(settings.ii_coords) == 0: - sys.stderr.write('########################################################\n' - '## WARNING: atom_style unspecified ##\n' - '## --> \"'+data_atoms+'\" column data has an unknown format ##\n' - '## Assuming atom_style = \"full\" ##\n' - # '########################################################\n' - # '## To specify the \"'+data_atoms+'\" column format you can: ##\n' - # '## 1) Use the -atomstyle \"STYLE\" argument ##\n' - # '## where \"STYLE\" is a string indicating a LAMMPS ##\n' - # '## atom_style, including hybrid styles.(Standard ##\n' - # '## atom styles defined in 2011 are supported.) ##\n' - # '## 2) Use the -atomstyle \"COL_LIST\" argument ##\n' - # '## where \"COL_LIST" is a quoted list of strings ##\n' - # '## indicating the name of each column. ##\n' - # '## Names \"x\",\"y\",\"z\" are interpreted as ##\n' - # '## atomic coordinates. \"mux\",\"muy\",\"muz\" ##\n' - # '## are interpreted as direction vectors. ##\n' - # '## 3) Use the -icoord \"cx cy cz...\" argument ##\n' - # '## where \"cx cy cz\" is a list of integers ##\n' - # '## indicating the column numbers for the x,y,z ##\n' - # '## coordinates of each atom. ##\n' - # '## 4) Use the -ivect \"cmux cmuy cmuz...\" argument ##\n' - # '## where \"cmux cmuy cmuz...\" is a list of ##\n' - # '## integers indicating the column numbers for ##\n' - # '## the vector that determines the direction of a ##\n' - # '## dipole or ellipsoid (ie. a rotateable vector).##\n' - # '## (More than one triplet can be specified. The ##\n' - # '## number of entries must be divisible by 3.) ##\n' - '########################################################\n') - - # The default atom_style is "full" - settings.column_names = AtomStyle2ColNames('full') - settings.ii_coords = ColNames2Coords(settings.column_names) - settings.ii_vects = ColNames2Vects(settings.column_names) - settings.i_atomid, settings.i_atomtype, settings.i_molid = ColNames2AidAtypeMolid(settings.column_names) - - - - - - - - - -def TransformAtomText(text, matrix): - """ Apply transformations to the coordinates and other vector degrees - of freedom stored in the \"Data Atoms\" section of a LAMMPS data file. - This is the \"text\" argument. - The \"matrix\" stores the aggregate sum of combined transformations - to be applied. - - """ - - #sys.stderr.write('matrix_stack.M = \n'+ MatToStr(matrix) + '\n') - - lines = text.split('\n') - - for i in range(0, len(lines)): - line_orig = lines[i] - ic = line_orig.find('#') - if ic != -1: - line = line_orig[:ic] - comment = ' '+line_orig[ic:].rstrip('\n') - else: - line = line_orig.rstrip('\n') - comment = '' - - columns = line.split() - if len(columns) > 0: - if len(columns) == len(settings.column_names)+3: - raise InputError('Error: lttree.py does not yet support integer unit-cell counters \n' - ' within the \"'+data_atoms+'\" section of a LAMMPS data file.\n' - ' Instead please add the appropriate offsets (these offsets\n' - ' should be multiples of the cell size) to the atom coordinates\n' - ' in the data file, and eliminate the extra columns. Then try again.\n' - ' (If you get this message often, email me and I\'ll fix this limitation.)') - if len(columns) < len(settings.column_names): - raise InputError('Error: The number of columns in your data file does not\n' - ' match the LAMMPS atom_style you selected.\n' - ' Use the -atomstyle

    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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=5000ps_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=5000ps_LR.jpg deleted file mode 100644 index 285389039ddc393f67fc1e1b8a777d4eb7391114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71011 zcmex=&;k%^gwRgi&=T}Y8b*ib~t(I`+<*(s4zEU2*2c%ryUlB#o2 z)53$M!IL(s6<_?|lG@y|=+MLeM;K%np*BISVPIfjVP#}uW@G30e}utBkb#kfk%@(w zjfI7YgO!y5>@GnTMMG90$3Wr4LN+C%#)$_-oEB~jy7=&es4}~XX>d}}rjKGK&Wko1 zn-w=r`hSaohnbOqNsw8P!JgsOyjhux)QH6TQ$tNkr(6!cqEWHDckx93ubL9d|88B} zp|>dPF}Evk^0ZYOX0A1Ei(48sExdur{zr1~e+H}jTjf6Ps^`2{)1D@$?0qKOqNwKU z>PE>ub@$#B{bx8=n%?{V!Fl<-@LJBy{|swt#riHDSjp{cy5Qa4ujLzx^saBXo%z3kuBLQ!dBP`g<)b*w^Huuy5Ay^%LICw)&d9 zE%wNx>_7jGYHOu>Pj}(|doD$e{ek@3xr?Jr-xeyAM47qmJi54W|GQb)zPES3TJ?Q@ zIorKSw?4WihGc5}?puE6V5h@5&r~7d{>#_d&!2m`Hff5-C5KmT``o6zT()@b+5PLy z*2UeP9d*;yKhU*eiScP=^I!p|f3JoAP7Pkcd{W)c&ivNtUfn%z*~_~ajYa(nH{NK7 zc>Isi{te&8#~awiGo-J)*?C;uvS9JT_3^GRFUL1LNvUKH>X-fG z%dZj~b|p&lRdQQbeCCpgb;okH-;#c?fzg|BPIhDZo_%pe;KJ0g|>8(Dk-6baj{S8!AoF6=R@Sov? zLX$m9c3s)$qI-L%?Rop`$=>pHTlQLIF54EZ@x73->RIn%hb3P&L}%w+=09F(b=h_P zkIM7^8T7whX?&E%{ySL$3@=jXLXuzC~YZ~mes{oi9fq&7W@d)cM` zAi4f~_45}o?k6+OEj7998@Bc`IBr4lOD$~r2@Zp8T1-CWmi# z9JA5Zm=@$I`BU<*LWGudukNKe{<$lg)(I7;v^l(<|6OWb^uMe8GQVctoW9D`@Y1_k zkNQ>^uv}WcQN91h^v;uiZ_K|PBQ5-Fp1Ip+cV|BZLAQ0if~9-=_KGw56--@rv}UjS z=dkd=x_8{>R&PR+zXx9q^Vt8HXZ3%ExBnToExBK6dp>{H_hVJh&)MG&*jx5t`RcEl zDVwfbxW4q#q)AJ(S%TRwOU#@WcVA^v)qjR0hvQ9ts*|jmZoUMThYcIqXM!$;*> z~Isjio9(Dq5n2?s>w_t!Q5?X>Srs&(+QKVhIuZGYeO?GkPHuJ=+SZUO(~@AKtv$H|9mJ{)*x>wB4rCq+JAo>Hnf^T%* zus_^*w~q5e={yw;)eeT5$v>_zp9rg*Kka+=+m~W(AJvZjI+3O9eD|JK%c)5=53iZ_ zOnkob&ts`OKeqj6u)W-r@$PotidePm+K{P1Mh!CBr??X8MEK_a+2wBh$LTn)srifS z-}Z|hin+|w?0xL(Vb`{5>#u*^hxdJF-CdB+JKE66?N5eOYZBkBRdMyp6uvPUHxoY)vld$m*|M4aozL${MJ*dr#}Dv>f+2j7vnX3 zeOE2gnh|=-EaQd&&wlO4pG>8hm1myI>63YKm)B(3&w0Ps-B_z;sCf5)@M|x&TXVW5 z7SDUIb~VyS{H2#oh12s z-PTFIJUdSLs|4$GNeJIyt10{QU{2-L8|n;`=gV(6w#buW zF6i{_OZoS^idFEa{73(g&1c+_Hof`UfBws9Rrdt<{|w3o*WBl2zPe+|uq&zVRJgivc@YBbD{qKQ4ucs6l8%}bUWcce_uI!{A zDlV*iH2K~|r?dI%ZoOiys#~p}{5(7F(bGt?)K!zJ+C27NUFDKfouu$AjMY7a?~uOz z^~c8>*M!QwTfDuhcW?A^p_8%E-rk=6GMN+mGrZoM{lFmK|LyO`75f|3cBVbK+wgID z_|7+xabcflO0IgP^5#r^;Oi^(3F05vHYZtTR`PzI8k;z2n(xm)atevEU6ucmE&h6l zl*IQfEPQTfbjj%A)%eqEw{(Mb;!JYdh4W`t1~8EQ%RrL zw1_FP^8iC#>BCL;*Z%IB{3>T_;8n*7+=@R`of+IuSR@qG*M_dW{z|y&eC5_!p-YjO z>TMZIzb}oO_a=S!zHpVM9lb{GcYjKr*k}{EHR0xMzKi+Gmvv2Z_S+n?NFnCT1LNo4 z58Bq>bojv>aqLW)%e=>#i>qI64V4w?c=o*dc0A|m%dw2Vzef0_+!YnMGVSlm?VG;e zz4g|YA#i@0Oud=gpT;Zm?KdRZtlRFpdHc(4Yn$3G=f3^&#h~NrY}q+~HgB_EIb)jr zow=?xa$jv)>vtEa{+boBWKC~IuE&Gw0+*If7k8Bn?+kA=PLh{6$*jNClI^Rh*!O+$ ziG8b%r>t4&U9c?vnXin`afO81efPINnf!eFF~gNbZLS9DL9SI{`|tg_yr8Y zsl4aE?7epNN5?oRV` zN!{S)^;ONkU(5JGrNDKGxJ>ogJ=>lx%Y3zX!TKF1HeI>g5f$P1J;-m#B;)6g4<0<` zx5!U&!h>UTJ>Fz>ve!0Vc)9B^L-lQAzp1}3a-F(6%XMqm3@x!qf&PkKZ2^abuRJ_q z$02X=@7ARsaeqtp6&{tnUlwxYbBLsbfS*#I{f2MJPx}IA%>NtlC;R2u-N$M>k59cG z6~Xero7d)E(Mg$gf-}RFH#6L0tKa#7bs-&O`BxIURt$t?~3F7 zlV`S1{QP<4jvvp}J6#37?3?$Iq3&qPIp#AZIozLKZ8Vks_59c#!R)(buOyzWyc3?j z<65W9uA`AUo7n>A7_%BG{7F9lSZa>W=CCV~FI4wlUaEU6D&y8VmV(nFOC3vCggAI7 z&iQA`^Lf(kr?+pjXW!Dwe71ac@x|yT9(Uu{Wb{e~_cw8?m0G^u7IIwOD)RWD$IEli zzg-ZM$a3a++!XeyuQQj;$__O&x$G-QO>Fvn{lcc_&cW`n64Pd_Q)|mOsl3ZTvCVzH z!rUs;&{ef=@4rm1=qP(IC#Pd`IpZb!tni789VOL&PHdKGxAPNM`Nt!3=ltQuf032u z3)anB!YUWjwkgad%HQ@Em-zZ`VYgqtRK4-1`^0Rn_o0#D!M;(`y-QtF_C8s$WMZiM z8-B;POb(yUxj$xp{Oa4;m}}Bvj~6bi+F^F((n+0-r&e7#uk4~+wEU}j>gRs@2RU!&BBUzSC>!!QMCQX-h*#v z@4A$wwYZ#X^Ho*mhxdQa->hZ7T7DmKo&Urxe)d;gp0-&wmqOg!JIkga`WbF{SbO7{AB zr)w(DY~1Fxn&INVY2v%*nv1^A|5dnbpKrYU$5mEYmaAql{+YE?(rMS6pPJM4Y$`Q& z%J(Kzc$eLOyJvOevEO}t_r3jdw)v~ZdYydsJU~idlg3|%88hT}v#Y*bKCsxgAiwt#6_`~-3*@S z)H1D{{mD`%MLr7f`QP?=aiHSo!9TC$QWVk;Is0zu&ABM|;YH~p*BfhVu4K$RI9s_g zV_I*?VwV@Dd-Y?j*5|t3+tl8wm2&&KRCez%>pfe8qqUcRxBX@D_}hd9k{`u8IV@O1 zJ5^Q$PhNgM{GIEUufD#8OP2L4p4nZY{!^uP4=?bWDGe9Ccs1NcY~u%-gs1F6VWv)HG)i zHwn}aTRFpHNBcL1zc2N^xgihQQ$Q@ig{Ym-6rX5mtn^kqz&IO)YJd<|&2M7v^Oghr2Jjws}KQ|lm{|te_?_b+)dtJ4q z+IxFBuh7!c5MG~69(BKF71(p_Sbl!qjZ*a|NftN0h6op#o;shl!s~Tuz|`l{CVc&t z=$SMtZin)zBdVVar=Fj{DRp&yzka8q{vO`g==NPYLJl^&zr3=U(i5lIJ>i)FliaiE z4AE<2Wy_>`*T-JFyKy`3=h~QWORVS3y7N0d_wK{3Css)ItX2;;nZ(~H(4n8?$DsW8 z+{>fWUtjH>VitCOYuHlReY>KXi+WtF-M&1^oGUKJF!_L8@z2i>vK?=ftPDOD&BwY# zbkn=q-+>`h-hY$4q_S*zg?GBF%rWNr{|u&EZ|lZ8zIM&fmwOz&eBDm%_7fq$W@UD% z=f8ZjX;F_r-P2=B91kiRINghSvdMAp>E?Y4S~Jgj2j2`mo%iJL($bZY)2g~Ru57dU zZkqAcO>ZMB%l9`b@@0(2zh7PYF#GSjRZsUmy1U&XOJm#DqbpY4S?CmIK7G$6W8tUm z@$wA%C(n0CZQ@S5{mfdl^~Jl*aXP;b&Et4C$^Mfo=PJ*|ZvUp`csIH6)zvF_?oN9s z|G}@)l=E#@c5B69kGjX5yXG`;usr^}(kXDZvT8QRhda+^UtStAi^p@T&V@}I@;h%W3_WM(AF=#=Pvz_Rb5#%3 z@J#$DRe9}zxbw0F|L&H=JWh_d7r5zjKy3ZV-OGF5iC%fj{(-kyV1|dIkoJ;JX-zr% zfS|+M+;=QUkCuDC)pPq_qv%&Em6H}}zI+!Hs>MFZY+Bu`CqhQ`Ggkj+$Uk7UY|;0E zeJAtQ?)GHJu8hifyp(5W$nR!r88OvQRTCSk>sL!{oN9gPYt2L7gT6afE3MiT{jOx% ztgKZ9pS^>E{7X(Zxi>ZGX#9~sW>oR8(5JH~Qf6Y~*&A<6@67!w%dl?M>elD}lj0wn zn5}3qy&Smm^$J_o+*Q}!imfO&SIUXjnWy;6tJuWRd&^5z?=y85_~$33p0r~+KKWy> z&+gw>?(V*I?|0E&8v^DdZ z_H{+5WEU^_Q0i6e>2l$>;y;!ATqTwMp8h#aHFut7Zg)LDd*!;Xg#oIEj!YG_elB!Q z!DCVIe+JFp@(lkOYD*vS=JDtV?r3Y$+qzpcwr1Pak~7(lc?~W4(zCa1Nw``h+2iHl`^ z*U#RM-E(TfHPac3kG!~BuAW$X^7d8t*^eu)$CW?boP2BTm+32Xu6(=78K~~EY@K9U zn*22<1`hlD*Fkp0y^rSZD0}w!W@)AtN6NnN3)a8u9&4*)i7z%zVP{aYXOOA1D_v){ zZ2NxA++8zQJ>9{3P$xV&&?H}Q`dZf@PR=sbW(k*>C)hVi96!_VvW!pv_ICxRy_>6# z#|YLvdgWci_<2g*{kt`PDz8~2Je`)_{j^ZDe7nYrvR|zC#5aD}c;;4X$>s0A)?8oX z{lzTLaEVvb-mJWgl%N}Sw_KHl?0+`#|I2mTeR}@d-}zY|pKj{ocqg(&Z)7fI-@Ki7KQLHp!GDGiQ)83P2JEvB{Pws{p{{CEe}kdsjh#k5 z&kt)RWOMg2ro1^@F8A@}{fn+=8_#$7IXTZ^V98%PwdY}$vfAs%J6?%B4pfZ|nJ%H2 zloq>ih=^l4nE z?b_HeTgPUj!kllaCHel_tD>ZQ&+k|3_|L$1Guq2aE8(%+{VJ5wjeWTi|$Y?;Qf-2T@z)B1nKYuPM5EXov-UiotU%PaGD zJ?GOfJajLL`QF>LWtUglmzus@>p!`Yue--=&Gge-jC}p33S9oXeAQ}?htAgZUQhn~ z`@wut>eO4`vz~i&M7CE4rY&CcF0m|V@70*~iSsRNi};@ilwSX6_~Re@v(-1Q#^!H7 z^)@PO+NNKb%XY6Jb~KkLb*rz7Ubq}uJYPTZbzs`kT}So@iqG+A^K54R`C~@^Py5?p z;sJ8U-}}EhTyyeDm)7f)!owCZ?m8Ej8fIMiBQAgDgk0S<_0MZ%dsGW5|Lpp^@0HC4 z_7lhNAIg8l@p}zBSMKT5XBYQX_)mO!Y5Sj*Mbo?sW`=lVJb!cXtmNmb2g_>u8?DwK z?@jtHuYGUF`OKJ#^VMs8OHWBzuDJB+$|jEbwi7%7S3MQZ*+(rasCytX>DDdF+qv@$ z?q9P@+N|sH<%;M_vFA%-%(F6;ekEG*vumwkkC_m?@W5f=4_|9tlXvFK7JEEvoko@4 zl`r2pCf|vhbm$V}RE0Ue9r!1HpWpL5rf9=4XK8K~oiCqWu6w-W)o$B`XLYSbxuVSK zp89TPU7z+|+ec)&)GhtG)>O8v&L=&dN{b)#C~vc2p0}i5(Q)oyue^?OcOmDz?f%}n zsmFeL=B!y1>AiB6OIpP56(<;XStQtedF4LIl&@&N^xNNkw{KeaC%Q(aPFrUbtvQ`TiKiGb^->~fTPPIepH@@Rq|HxcJBk$tXn3q|vI_*Ox|An+9 zb6;)mVf^v;q+K$f%{|GZGg7N-B)>h)WqO+(Z9OqI=aX)}(zia2N`4l7e_RW35^sivuo(y_*%W)_j-r+E8m%ldQH@YZoy#h>-{IIer(fL?VJ?3ZRc(w6BWL>HhZQ{U%2_w zJAT*i67N)dz5H$7S__?jzc%y5O@%+}LoCkU@_+J*_4d|+H*?RX-W5Bbx;<)M+oFZO z4*mD1%INI7=8&}R;;F-LKS;|JKFfTxd-}(I?{X=wV9lm=FJ*OvEDv*X9aUb&XvuZp z=f~UX2mU-X=NF4E-@h!{^wF#){m;3JHf6lbntEu@3N5wCw+iQ2ygDxVX$hMg5ItS_5!>#tjka2#eVJdM$NehUxn%v_E#H}Wia13~=KEQt2!Ah~736;66aV`am6iR%{>+Rbr=PKu z?$xfFUacv4=dh5|^}xk0c_#7P?YdDr&Fcd4P6dkcm|W*jnZD0`Ujp+f22RzM1pYbl zk{0K-{eF7x@%A@+9_Q}4R4bYqGvSK=y(Jb?v(i(;TNwDaU-D?=DYE{PA}V^gPyJW+ z)LC9}t3DpE;y<3SssG>ozow~wldjx)vwK?GvgfhEIemW^VW7GARP*n+xc ze5a28X8CvPGQ(zW{-aZmv{xVZHuKG~IqtB?dCrXwk~T+XF`bQ6&t72tjr)B1t;v_G zT$b!tJ|A4u_E+q|vPp|#zRuMOn;Y3_!Qiy>-vm4VIg@AH6_>KTnfcUu@49<^de?48 zi`cp>nsZ1lS+4N8E$5H7R|F?9TyvhLnfIsgs9EjW{4Khneb2MJYc|y;9lLlZ`e)B4 zG0WHAj2V`%Z{lMQNZuE5d+LQe>#f&r7Vf?rrIoLlyW^rr#kFJ+7YEr>e?(e;C);Nq za}2td{83KZBxmYH^N7=)&u(ma<*~T-*n%vp)n!{U7WD4U_iiz-$V~5D(r0W^xM^x- zq_=%&OdbD8iw~SvE@!V>v8_O~FJk55d0clNWu=7GNcx0)Ty%{6%@OnY2bsTL>pgl+ zD)W1*%P9>hkGEUh=Jl=e>3n@j=%d@oiBnY>?JtE)Raco?_vY+H-N$*CZ|LcIXD`{r zslF&ui<38i{odJcla9_ze#OZA{P^6s?OYP=9T!(zkq`3x85yW>yid?q_HU`m^(#}8 zD{kE^nD=ZaGM^QuduPkh|@wsYd#WaozD^x4OsA3Wdl>TJQa2e-G)ZH+J3eogh%gDsn4 z)@geSi>Cw>$~gQib=b?s8S`9DB5Tu)*IAYP6W^@NT-B$(=k7Yu(83F?m0p~2D_o^F z*m^RoP)UAl$F^ElVYabc#oaTfD@tXPrb$UJC#R#S5;P&WU^9J#UxFU z-DRx1D?ZMju(Z!HV8-dI&+b<|c>6hW`|4MEVY7nW9bLo2=hrRs%vP#wsF$5!w7DYw zG{3ChlCv|8pSxpQIfrwX3gfor-?)vApO>Cp-4*e7`QB_@nZ_-;1y?WCbIm%NBF?@h z?!3QD$;2z(A_+YrN09oQ-}|Nt9dtF>DsqK~GrHAVXjvtr z{Zav)EPKWJobPL_4cA4lTE?0ADz(jGt*G11GhWg+mbc2Us{CsqxcsrAhoqfpeZ|$} zO&@DJuC5L`?49kYl3Bpvuy^+c$=4IVm!3RU_*|;{@P^ra*LQ52^IWJdivI%ZX6aMM zHg8}IejmKi^~AsBIlB{6x~#HOrikrSVEw|^BZQO5A&_ikRN7(>tS6ESD^{uD2r)v{>YCI7;?MafYU z1>)0`dxUykN;iJEcTwU`mgiT-s;OnuZawa@j7;77S98xsEuO2oQoDG{3ExPjKka+oFMO&kniqKQ)}2z5eKYgTx=S{ldi2-py2aE;p^PU%^L@@X zgvEVS>2127)oO84YNme4@8*hkXD1(@Q&`+K`#%HU%0PYb`enw!?j{9mB17IVYPPwu zOp2UacVXQj^{1!8Z`jSrmG;{7(C7BP=Q~#Em43K7K ztG6(2FYtf4sawxy;!}6w=)~)3FSmredAck&Ovm>q}m(k6?{i^*LgoKhMGLYW!(-}Z*)+25P?_W1ePuP2o+ zIdnhc))cj?e(5}}Th<)X&vU-c7G7)^5_c~x@pI45ym<@X-TA)r-EQ&Dccx+)%h&XA zMX!}r=`~z>@cSy2u>+Y2W;4NQES(Q6$vSC&7P={cy()|J;JB6EnUY)tIy`glW@L zt7cozj}PX*bZl&i(fIkvQ@!ru1d9`@6JBp+UMhe8YNniV&!I~HJ&Yop3;3r8Kbw`g zZ0X9C%VuSCQihvf?{z+#^Ypjd;nkbNyVqWNuES*Be!KrAuy5w>)01;&TYdJ<*>Tq2-_%$8s$^EG;G$zK{E~lt zYJSMo)Rq4IIA1;Tr{DSb_-)G~7jKJ6*?vVN@06;m`-cJ}E>Gzip0eYQW0W3S1U=u+ z*!Q2owCTj+sOwRScU+L)bzXCIblvK3{@h)@cV9(MEVnrwvf*vk{$<+^Z8B&GIsM+% zrh)nCuA_5g`kzn!#3*L=Fj{t7)3S9-9!W*SMe@H{#cBVSZK1zM+0TBt*!Nq{sIItk zyJ^*$Q|{9^uQ5OW&v4CE^FPBgtL@n<1n*`ot3JA{?{C(cZFe7dt&;j7$JG&2G0BX@ z!2TWI&hHidh41QewtalB_KtnQwpknVmaq0Wv?SPV$*wPwbE8NGlz(3B+s)iU>9Nwf8W@2GjM{3^tr1$4sP~)c0*>nyNMX@ zeP69h_rmzMtuolrx6Z(t?}$l`gUYeL#lK&f{}9<^khCYx;_4QMVh)=tx9$gdST`qM zn%?FNPS$Zsjd*u7uHLtyWX{oep)nmcgIq#%qyz}JV=@c?`LXFJAggU#L`S&B^J;P+@ z?`3+oWrrJG)R&9MQkgd) zk8^e2R*}Ptj`}F_i2BcGJ-x#6#J|WB=R2D7-+s9<``6#3yVHK>p1Zg`>)G;sVduRr z{dJZ2pzKhzD&^46$`MS)s zGKF&f&G8BP!~FDwyw$aG(Zzo@o|&d~cCBZ4qWG(f#bHh?pH4|H)Z6D#Hc6!{_-~GT z6Niw+oJ)7~vR}mSU0`07RW9`{cJrAtHU7yzqh$R=c$*hodAmM!*3;ARKlAI~n^!#P zo0UDcVDUuf>LTNv|DuxLsyZk9b8lS9wSV%r%fI4kr{+wX`%Wm*<=>Hv*u@jmJypv; zKbZdRK>y{bKd;R_@!RU*)}2vj3wK?0-L1RnT2O3ib`EdAR;{nL=XWx)FFt$uRBGef z$98U8eJ@sQzxh2~(SQ4j2aCM-hRnMwa^*jRS9;5x&|8usTD#UUoZ=C@Qg>_3*~1g( zI7_*CMajLd2v9u0>>OCS|IF%W)+GXaO|D#eTRrd6GV#`}x60*iZoiv#v4ipNj#FRW z6ge0} z|NYO9++FhKZpVi6&hcfwyLGM#T;ASQ+WShqYyR^7z)%s}TcYp4vRZk{d z3B8py>840lO>mGidxTR%4O1F3OY&QZp9)@QayC7ch*jV5?DwKpCcb@jwNu%GRW0>f zKLyL(F9}!><@$Q(-_>8YZGXFZr)7SR>z8-?*LL5`ZdF}1@7@AQ<+mN)P2A?E($^XJ zH$Qm&z4G0xIHxb`rZ?NL#s8Tk`HE9k-Rs06ox6?-+s_}L@SkDhwW-_mi*w%IPuh}e z-5WB^y7_Xf)GRjp6Tw$Pk2(I)>{s~1qL6;l>gQTt-qm@Z>t&B~pJXwJ)hn5D?<8B3 ziK~XEJ@dbbJ^l6xiBEdcVls*rPKvmjdPeCxOZM0M`%BAtKAt+Z&z#-ljpK&8EUg_u zmp=CE-qM>NoU?lBrK+f%FYe#zGqmv+P?=!&L1nV~$wU1r71y|;Ys)Sz-FEL)VxO1y z`m9+hlfU?y2+gSJzab>9{5SplxdQLZ#Y;AYZ@+qAv(%F;FS8jZP1dcjJ;|Rup<6It z-BN+UM#z5lbFC|9#IxV6irRH`dB(#nJ{zX?-S^e%OsO~?uU90ot>|vy6BZ_s$ek8@ zqlIkoTlZT6~guH}}@ zzbnu2U%krG`$BX%;dMesJ+*YoC z`}*pyhlMMftagR3pSG-EgR{v*)|pFUgq#>dukb6cn*5}4!vP~l!{Zq;jq~l2vMEnw z^k|k=&!;8FRwgWMnQ@YtMUo+CzhX8272{QZ?uZ?qb~44xr}v!(L&=5j``4Y0Gdgzi zM?w8P^Odr{tMtXCoz5og4~gov4Z0AKw8`DX%jwkD(59su>QYMMSF#`An#kb!aenIa zE6-l<&#At4e$piWN8uW0H`y3_L&O?7r(`BA=? z+oN7-<(Qg^OD4|H*(j0uSc`*y(!xl2)(to6e`nOq`X*y^OaJ%lg7OvZ*#Z7KIw#h? zyTTD6c0TBS29F=dr+|OI=1(n3J?_%@UY2j}itl$lPG!%Z&g`hPvvaY-1?ITNv0dj2 zRr_q`AGo^Zo5}L^ccf2!=T$YynA;i?uxX>jza=MUdY)siThe5@uBvfgQ10oHYQ0&( z#XDT%vfhg`J>Ob;@%q!4N=|{Y_;>Fd8K*pd`k$d=Lt)+N8&j*@;>!zzqO=lM^d-Mr zDzjE+q5MiY8J*2?`{$j0d{Rw#Z}h9@UGuz`##{;uvog`ivb`3wzu@S(YBMpX;`s{C zRUVW+T08NEQle7t+shr-t9-GOSj+3E!-2lM(b0E zXRJ!0yTH`OH|%9^ugu$_#qoY_^gFJ3a#mjsXYabIUy+e38lG8H^*t<8o!S163gf@S z0s88dAOQf`U@a?_1tDgQS+pT;=y21TQ^S3~;BeM%X>o)cGe5=r8J@wf1by-YmjJwG) z*TdW23UNHnVX{7Pq1iPMirxx4aLU z?P_Mv`^L^{QJ?vp=vAM#UKb5xIrVXQe2&2LZ^{s!TELLtW!Bq|c0 z$n@WjmfKLRoDuzv@8XuXuXzj)J7+BQQ08c?o?!P<`g>Z^xg$@eC3&h$Uh#e6-{3cV z<`Y-0T9;e3Q~7tUa|U<7$88>p_cypI^oZ)-{?FjI?#5>x-H&(IW|eJzvCCbtiS3`_ zgI%q2*Ziti)z4gE-&pBC!IJHD$nO6P8L?$=4f;H1gh#6`_A0*V66kh`;nJLPox&gI zdm7Stb6FmxO=p|9QmX6r`bGDp75pwexTG<0#oArJck#Xqh8I`6ZDM$HhOc(J`v(rjHouzevR&`@?oZwl{jR)vt*WZ%m1A3sJpN@x zUfXO`o>8D`aeGkweTQ}dQ- ztvE8}-6lng6Mz3R@?-p9pIdJdZspyP>>Ma^%uMT554WPkiNsI*6CeD09B9Atmi1k>Bi5@^ zW9%k<+~zFta3b^JK#}({MQkiGq7n%=EMB?Uy*uq-X0HB8SM156yXCJNqhofjQ(e2R z`R61TO&)!l!XIxwNuSJ^;h4ni`^Z&c_-U-VcWR-JC1B>{m*cZ|;wH(nq(Y&I!|I~t_vHFV`ht1hI)T5p z1_epJ6wyyJc5&%g{qwZw>&G9ChyRRNtfkLCYb%TFtKM5P_(NmukMI}WUTwy9XYFz& zkF)!h?c==KWwoSR+==7hVV+6G{aaFGcq01!_oO=>nPb1r?CZ8JE3J;)4`++Dj?P-N z%Oz~Z)SG)Yo6Ox;#}LY(wW_Zym*^?0qt{LHzPh%_w9k_9rvZ1K$%A{F~ z?#8~oT`tiT`r1S&!PPv!`7eWz!>J>7oL0NryAym;1%0kd{8Qji-MY7N+wm7W&MGJN zoK#%a;QN#JT66I0BI$I6;9Givm+GIDi+^a&72HyEXn)|F_Vnbwf6mE|-zt1PpSbVy zr;{7Y)$TpnEh}qVvV~ihH)>N`kgSZWTD`2d#rdY9)e}t5+Xsif+-;flpP_bX*Thv> z&rP{ajh?y(G}InGDd%v$=Rd=_wObcoz9N0SE4TW3lm2wAD(kl^wdQAEyE1E5v7%O5 zlV*zT;?k59*3*2aj1E)^Sm?AxEZHgZF3Cf^fIsi_x!>m2OM0JP+WF`BjN%gZ1#fJ2 zX)LQO?>8wbdw%O0kH@zidF9``9(o0BTYhV1K(LW;>lB;U5}z0t=J2pe^*w#=wkt&M z%96$F7cSrI^j_#lXJz_~qpar#D+}F3z)_QY!RUb@$8c z%%?0~r%jf8IVr!!MDwwvt;g}X`F7jQc!e*WtzNRMLjOwmi%YW#LfDtCT=uSjIN|tvrUU2gC#&4-m#ZE6-0G@YyKU*Euzfe)Z#BHiwqRACdHG z*g3RdQR^Ac_zU0ii&@O?PWNdGzOs(P((2%+yvwT}{wv=4SJh=w^gCWw-*pcqELSX@ z{Gpf^D)h{Lx!ax{S010Q zxA-`Jy<*XoZD%`=n^$#->^Z#cZRxa|K^limwcC4~&bI0V9DmbOlj>pd##p%XX@y0d zM*opwv%LG(*H*ec`n+3O@bV^o!Ly5`x9!ef8~QEM(tK&H{7T-9yYeQqF546P;M?ov z%MFipDlg%CXf0Da@7II*EYm)?_wK%Kc5dZ{d%DuA`czgf{B_aT>G1OHYQnpk_^LK` za{f4MseIaO;oDBn!2K28RqrNmZS^hLYUnF^i|a$m<|FDs;x}~X?_d2haDs&JuTs6w z_L^5el?$#twkV5Z`L;_J!?$i*rgzrl?gP)j>9V!!F14SonXrIg>TOp|z@cwfFD_mi z|0y`JzLz=f+tr4Q*Rk18w#K<{zxrvtvfu8ad0JexJGa(%xclZ8O!W8n`RV?`=0{%$ z*W&Z7?DkUK?{-gof8F+Vut-{0?@5s>7tJ4>i&f5<6v5gv=g*`Cb3JYN^QOh_KWW|c zpTTD0Y`d#Hp?{UMeixkkd(Sk0zhTN7_Tv-y7>~ya?avRGy<&aazp32y6Rw_T`MkWU zqT0B;>;&J#*!Bj#;%`5%%glMBQIymd{C%@WS?IE8m2#0u*ZpJO%KC5RY;@_kc7<~Me^P-+gS@!dDqvgc+Z+idt;7ubT(eP2&W$5-X8Jyi1eE_{TLc6ba35+%Ny3w@d1BfmP)1 zRp%HV7_&}vVOV?M<;uTTTn|o&D)){1wen8jQCY`ZTe%%BE-=!0c_}4DT}A$>K;b7& z_JdYE8n0fP%RYKrxMz3B)ziX~PbWO>nfE2IdHz4q#DDip_Y}@4cFo`Y_HAc?{_O73 zz{?l^GdxX9*x-0|$qENQ&ZLd2wy{}Bw)x-kKYaPSTxgNXcP{Uk#$~Gw-TkgIF7BNf z=IOPiL14}62mI>xx7EXL+E_ME-1y?giOZ)})V(Tmvz+PzPSSdQOozhCiOT@ zUT`NcT=#Rq-IeP$`aF%2>N4~Vx+lwUrd!ufGGc>dOa;T-w3nOK^~#-_o)_HR`|fvW zz=uFF{;#%@$y_hzXqg;au2=X_MV)KrHSbwJrRG;&$l>;T7WuONRN1FVmvv;H&s%bZ zQCtzEg#JtR2uX69Y~6t~jK)I*csvcDD3 zzBqSM{)98`Wo{?>yRY=G&HWO@;v;1FAS*+D`rj*-$NzMeEZWsA`)<-5jRk90%-Xan zSWBfRdVxg$yU_3iuZDfrJ@dE7-fmbI`a5~%t9Rm_sh&ZeYCA%`h1nyX%wqbK*feLt z%}@5LEv}z#Ol|UWzbD=FC28@l3pQW3Y&Q zJnOr;uB^7UWslac`lncy8F}HT`dyh!p{G*|7QcHHEy2>iduu%7@jeT+YS&_Mxm~l@ zuUzVXpm0$e`!2KV)_45ZUj5gVv+8bPj=bO2^3_Xi^h=*|zjgWUF^%VRu;<-YrziZE z9O@_4_}#79aJ}#F8MEA*$3(?=7rN%(tj>B~k-Bcxv~;}*)A*HHElx7ltpBQii{acB zuHSdlt@65kSEucbv93>vOzN__?0r|UPovpp4S%SRze%E-$J?tlLI%lomXD+7tGu`V zGdphHuBWa}UqvsU$Vv|FQZ_D~*}Z9HnWV+}lR9i7k9KRxOrCQx>eJ<#J~d^_*jQD&8~fymezYgOK~Qxgm>>Z2Mu(_kB;?yDg^M=LohCu&Y^%eiu%H(~$P=8!2*n}e12sU#Wxnx^q=GQ)h{ zPd2Y^e%vdo&+>uya^V%FqXAo%g$VJ_)%=3QQKp_l!VVcnjl&# z-kBNIwelWwchaeq@_XdBC*QLBIPY}x`^W0r`#s*2JvF_!CptSdy<{1Gr1dd7muDPi zUpwR%-Ylr)uL^M9>T*{qByOMo%Pxa`1%VwuuU&sB-2Hai>)z87wx3-mp*xK`a8lE{ zO+6Bsy9~>x%B-K(qx>_dYSMjnmRHfvJxY)HG-A*0Y|MRr;@i)&OILYyyvT^Yoz-5J zle8!!C6%R;TQRUHMw0nzY-rq(1&``%ZV7uAc+Ggyw(kf>llA;$E_a=GUaj#3rwTkI zla9+W3jAkaQaSTcrM7XgYsS6jXXgE#mhU?0%jdlH&(~$#ky*R*@yf1?c{3c-mQ4I0 zI;CFCh*9}x;PxGdADp&Ns1aQ8{mOYwPyUsc3l>LNZF&4ED`UmWw0AE}J(R)<82)B_ zR!+9C_wAoAbtmhutMd_SvD?S?XnJPf{e7!%R&c@EZI;!s8#^;qXD&-%Y2{}wHqBwh1XRpnetWnSpr-=;1-{~1;&3qPq_$>w>=EM4qS z%p-^OzOPdk&yvwRbnUn2(LHm|dt9wqx@%o@bY{qIj+~H?{odg=>{>3bKeY5)OuqAZ z{#G|rgOBIg-mKH9(GRk+mv4= zyY+KuWo7YZD-LC)xo2XNqZo46&6;n@QZ@PUY~SP8TK7$xn7*vL_|}`xv5S_i(9n9N zx@OwcZh2K>mVlM7uYdXW*Jbj~qNTp-=AXju+>SQdn)A(eLCUhNcN7ouyb|%Zdh++f zv58s>WUDtM-)4=-kXtb?Yk!FNj~6ZX!)15fX0bbHc=Go8g3v~Zob9hp9J6yXRVf^PtDqg&N)HGAfBGF;uqCZ-V4eWoiU$4*P@$E7@c7TCt zMee7trzV$uOIMOzUbE`p>ZPn$aoyKMPDf_S$^B6SMW`osFAU z{M}f&`QFR*X2+BzW_ie&2Hk&I$h`b~&$r|K=Fjgeyz|Y|Rp&xj!1Y5P%iZ4eEfGz8 z@SkCavceO=$06o_tg}@%d=6L4y>*N;I6AFqkw+toanQNs2*k(MpoFJtO4qi{(@K9^Dd^*7~j(z3;00&x|L(V_%$3VB(*1 z?D;~856cWcua+!a-1j(t<&wEeJXS5Nn7cS{jc6lF^AEeaQXk8ES3_SOzGAv~QrTUb zwJCQ*d39?H*WbFdy=%q(yi1zj!#Dn|?f5Wj+x4!jJhvO78zS}cdF7sMu?mV=Su?e- zqTh4!V>=0hAO9J8{hGx;d~iFLml(Y+BEX76T6pf6D6QY?Dhrm~Te73->4w`vyQJsJ z-C4KutgL%zN9bA;p~J$fmN!*P+&_Lk?&jaO{Ojhfmwn$Jwzq*dYYpSwePWs+3s3$@ z{kt}Z!~EIf8*xiB)pxt+bgl1y{UqvT?v)0q6DyZSWlk^;D0p@DyWr&ccb>J^lTk z?kyGh`FXj^%a`uRz5A2@`iY}mTXhdUerx0BG^g)b+>U%jX$8T_AHMYN)Q>rTLZn*! zmGYuZfp4Wc*Yj&}@>VceG;-A#iW(i)lYYx6>1O=Q=Yh3~&D9sDi*lB|4z9TQU254j zCrO`GKYz_A;6Jo;T85*2-vfC$h4s$ihTHZ=-q5f;x4LZ6j=*ISeJ2vK8f@yU9e@6L z{JFQH?E{aEoSvl;^Ni2&(Kqg2dz~91r`ReM{BW9Mnt8;}uHS1P^>=D$*!sj$pcIb(o#gnRC-L7Hh z=dD^cPf;QAap$DqU>^Hsl^|#B$KNN+SCFaA`I9eiS2gv?E(yKw-evc03!MxUTs&RL zddj2{x4gr;k`-DiT1$%p9TN8ORxQ}c+ka|{=8jhn)@_k4J(Q`C;iYrc-!Vv`FX(`z z{hUA#<#P_drys8Vc3kw+Prj~*jJyRpz0Ijtj(hK1FV4BR>%DuyvdFi`LW)iFW!iUr zwXjH3n*Tjs!cu6zNs(3lKK0v0SI%VRZP;ofo)EIxaH(*|Qk8zYMponqxoWwPq{`xHQY)1@@78Q|3T^msKs4`ewO*l&3k*7o`2qy z8-JXQ{8ZJ9A3W_{5d8j;Rmu9e<@vU%>yjR>(EBYm>3e=xMR~5wN=Gi0%3rG%>ZvTQ zsn9vCFjeN?nR)Jac7Gz@5;1?3~d$fH@JE-pM1ME*6O!c`|X#{S93B>wzU1& z+*GRmS><=vq*bxg>z6Ir<{2y?)W749PZm#Up@r>iB>~2qi8l{2Op6WWRGOY0w>G+O z=CajomkYxt%{{5C@a?Dlt01>J#@GE;bGdIln`RTAuUh6Fdb#%MrW}ErT0glnE}zxS zjXE0F6m>k}5wFszH=XlVym=V;pTSOoX~~?+wO_qOyZd)C&D-T&!yg~|MdVAiLS~{t z=#qDCHmq`|j{p5#A;I$MPQl)Pvx^GmJqw$pnR&`j$=2?s!nBz@DOx?XH7@9_1`W1G|`wex9J%~b7RlcJ3WRcEj4`Ek&WZNVv)iPLr`*_WP6+Y}LV zU6#Y%NsRkaY3<2-%d@Zhhvwbd-L)b(=C$pz7s_F24CV(^b~@BN?D)HNXVKDK*<$y0 z=329^RbG5|cSC68E2aFpv<{PvwVKo4l`B4NW|-W=+`m7-?eM+bhaPUv+wGqc5PZc} zL_Rb&@SWCggN?77yqOM6{v{$*;PHV^{p|Ns`X_gXC$2sm?PzzkQF)2U7M_>!A#G-} z{9ZXN2o&*c;Eylt{MZ{-kaOmw^PV(@YZnsbXYlIuFaIVgzIkWl0f^RWa_rQ7wu`ceyYuS9IhO&?&LbLRi6Kz7`e@zWP0KpH=A5_Md0&;YWu3Zr`?&e zI(O&$s7$@GQ&xLe3e>bZ7OXs6ad67A;?LLRC$4n9qT8b{5V?Mvr0tQNSFc2`UVYf4 zVCDo@rA3B6d01XgzHTc~QcZty zpE(4lr0Yu*d1=~jbC49=cIqMb-e2Ei>sGCd$X@kCuW_=VQoTp==Nk=1?tk}JI_DII zuA6k8_m-err?b%F%g4D~&NN%*Z{a)tdvm1)!+d6mI@f1aviozZqNSJGaO}{tyHx*o z*2g*Cecsb-G+Yh-`hVg+`;kvq&DY4#*FN}9)6Lb}bL}N^cRcEP>>V5&z*B1Sv{B>! zT*vL&TQ5D&*?YGv)lhi(es7&AuNY@Z&EP3zcziO&q1Et-xW%6==DT-xl}~$KWu3F+ zL^Ho#-Brmy^Y1@Dwrrl!y^?FQOKn+roZNQU-d1y}*)05f^5p*v&pxgz;QUcN+nRlk zmF(*ESBnzn^G^$Ve|u@^ul4zyH?)uQeVX=WOTeXD*=xi+SH4{56S3!$S=wsXlZQ?z zz82cR%of;W_o(jQ{FF6qlP1M3PVYKt`tPm3s_<5C-?y&9p1wMpJa0@1o7lz5Abi>W zrCPwYfa~w)PTo_$Crdfwx zxo~57>CRB4Lq{*#UJ#XRpBl90xx$lV26-Me-KRQ#CU1U`x#QXNAF5$DHk?+us;j=u zThZ-&D~m{`kdM}9BgiIodHwl96PRQZnR z$ID$OU#?8)O_BF)d);(as&|&rPy@awBwF>OEQ%>&0npEm@H(e zQ?EW1Ydx4K>pC{ce-X1Gg{a1JIssxp#r9xU-i<$19wtW>d!Fb+|Hz7?X z_F*-RW*_ar=?L~1*Q#6i~+~vQq0xz%)FP#Nk`Ufu~V*U-nTV$ z+r1Sp78hop_}+H>dg<)1vZsPRvmQHnEXGylx>m|0i;Y~OqIn`c33FCy1W$5f>g4>` zyws&>mQ+kl*XCO5xM{qiMT+E!)yu9g|qQ;Sw#Icc-REHvUU*F*Ql)(`h*7GJz} zb!+tGvQNBc?x-6cV+xB&e5sQad~b!Kr{4VwEbX!lc8qUKqracGxW3*jfA4pPttHpJ zc3I8R-P_qPt>?6x!mgi>Z<+EP`N*sTeNXa_?D*6+J{x078=FO zIdO4*rpLcb{wcq!`~EZBd2oNf-)x71_3ZMWO|@_F=mruQoWzo^$InF{p7?!Aan!foeIEsy z?nLhW_2a6jkooV;5-+*Lls_F6KXB^K)#kO@u9X(Ir>?D;=qT+E&!G z_TA^w)go6Wd-!knQ=c(wxvOH2r%2&CM`pd5%2p?QtGaGp$CjY0 z+dpToQtnY$F{knF#~*S`EB;Lh4SeXf^Zm=d_j|uDH~r5byz`=J-kX(oI8AST*ZFX4 z<6)`N*{d`@N%3fXVMu8FP-Nx3?&n6AxZ|Jt68N^RV0l}+B}n?J$z@;HXbt`;w$V3# z{AZZ1Y4PcP=B&3B8A;Rjm8}$T^?vuWm;Kh!JL~ThUtu`?WRlaVJJtI&ET!{QZ=I72 z@cH1?^6jP4;|=VeY?}DL|6o71^WiJDYnJ~RuC1+Ic35YEuB@-v9j{$_3uhdkwqoMH z`)cOXQdOQb^1m@$*Zbz}?6e!wWs{C>(MaAN^`e<0Aw2zfQeWoRADwF(HZk#_^ zUtmI~p4!XP&W|o9?_amKEJR{bn(t9HrRdhh)2Fo`U3lUB@@VziY1zIeS5NKtHM#6U z7+*iOZri*jwpqI>G8e|rR4wSTfAZtn`s#>F&!w1G>2F(oe&ybc``=u{dzt zhp+OcnA)~7u0Zg`=cWam-C8p&HSmsh;fU-&uN^ysofE9W(S|MLBv<(=I{uVdEk z)zmW%Ka;9+(df*o6)%>bcTIV9pg!&6eI~(2Rj0RI_&Rxe+1`C8a->f!TNYt1o9df= zS~k{vQ`Ra$hkucgLZ&5*p1c>HFh15k9rmi<{olg3w^!${UfQ(DZAITq|G+@Evt3<* z^H~-s=oR-rHT=AOyX`yf)b6YAg+7JdSRpFrd*Rxu!*M%9E7H=IOnA`K<9KDNvRy$z z>GhjGm*#1Iymv0>tl4GX)lYAq%=(~rb953HpG!71F z2@mT%)pUAlkz?ST1{)@i){5WLb?(S+OxhjyT}8Zo-+58r++C^x3KlQ!9m)L9;PXK9 zFq>XT-JB=UxqoHWeV*nbmsfNx za~3K7w$$t1yaz0c&9^r=*cZO45prGl_#&wRB$KX1qO`umwrmaSR3<3e!UtA*`vCM+~KZ^32nzv;^ppeaT@Fd6J5O00f0e8(U@!l3|NPq*w-svS^uA)c zw$kmz?CBTp+Xlo{@;%jieslMMS1v0l7ysBNa==9-i8&FN^-O>U0QqNeK0 z?4!cw-p%W?n!8{1kn~gi%U%psQu|ITIzK7pNe?~VBvL8)@zOuf$Gh#da!&W%x@#~~ zW1Zjwj~PP2Cv28%oc!TbP5;49910UEGtb;sF8;|fjQExrrCFU>x7Jj(c;eaKrRPl8U#$DSFm~UE!fOxiY<>E4?OpMo zbFNrTNa!jE+X z7v+11P0rR6|7_>gZa-%y zqp9k*;%(QhIhyBp_h;xH&06!>U+Lm?9zml8MvjKe2XqBl)<2k2XIi*Jy6~X7*e89d zcNNdJ+*{M*E84a2$VwiQb5ahylcXG#c3b>s@DEzL;cmjZq?_Bkm#?nac2valVuW_a zq)q!@Oy6@sIl6Aes{OA7#Zy?G$gQbq{+?YCb+4}YqRg>L{GlnCs~{Fc9C*!4C$?NN1W$fWSln{V4P9!=}mQXdl;rlIVwe&;Ptv3I^Lab7 zYhO6ILv778--88{q@R?Av~gsfmh}9tqRz5^XaDine_nSlPf2=WV)Nx{l4qm@>pP|| z*Y~GR{bIX+W$u*Uo73L?J( zT)`|q>wd+El`JdD7=$O4`WZ!KKi9kaYSr7%(aX0*X=SUlvjxg@oV@26RK#FeX1hl} zZ%54I?Ts=Q_Sna2P1}6rW<+wug%@FGH=AAm$NlN7*^T{oCvBUx?9A1IFh}tXQ$s_i zefZB%KgmmDT12>o`Xb@}-YT7#wFNh~pUT+IV|sOpNl5Xf=(Te1FC|89@Y$qslKCBv zRnv{*w>VP%{dKvMvA#Y3UfGo5klWjiaAvI7dt7))X%N#VmF)RFZmA6XD*8zx+XLl3 z_1)N=lfCW6v>*FZ51o_JY;KQ~RiEOq_jp_4)SM@OH>v;T^*?m+M$n66roB%yF6e%G z|H`|#$n0)+@*Slu?%Ut;qzXE^x2>2U#<swoT z>!zo>yGh}B9wC#ddeZ6|YgX+zkgxK?;^WHhgtxC#Ctde-jyE-mezeUyP|(vg{Pn+- zjJuw{mrUFxIHy_tfU?x%!#|7@>pMQKdfI#_TKJE9Z}{|vUOzr&h#4KV%g5ipHeP08&nX7EeeD!FDg#4<|%jt_JezM;v|IJ=u z;+lC6?tG8!b&pN#o3*L!c}e^VriD^Q6H8t!4L_*!BlYc%fCF`F^JGFZAFsW7)O_`F ztvg!MB_Up)4oAzpndEM$+a4Nt`Rxxa_X!0yHO1c+cP2kb?&(}yymOB9yKd!k>l0%| z=lqywUFjgUY@XIr+r8V&TqAd$w*UAn=cv(qiQ|obH?BB6`R9x~>5i=am9GvTwoWjv z)@w~UR>vPy;69}-3*JKz5do*Q#D-SoctJvbSy9qjHaRd>a>`WP|M@DmfqNC5%~S)eR^ejq2&74cS{Rj6fHga zpCN3H8=UV($HGx1LxZ<9D*334j@ z>w96?Z*``4sgLYC=-ySWUu3lU>f~ncN#UmsOh+qH6IiWv&h7a4N#e{C;lKYGwyoZAOvUHnrze6t7CBx&QTJ+b-`>UT zKC;_2Z~K0UE<68KG1hVGyQ|Zpw0@U1-!pZJ;OKl3DCu&Vr?&MMKQrr|x`J%E>ut0C zmM%0;kIog}aqq1cvv!C3>nVCp(_btUth;a~w8;9$&7a&Qp_kwOuDh~eT2@qLhEm@b zE{@uVoB^v&@lU*^QsD8sBkWwbTE&;fmv#M<%UbJR-T54&du3`cS9EmHNnyz(x70Zz zB?%()76=*Nv@@`K7w{o3PF9BXiAm_aCA}y1zxNgAsIb@PYv-}~)b(tyr}Wid|7PiK zzifAJ%ke!qzmHFRSfw>dsg~qX59PI-m{y!swN5)eiRYhDS7yd z;{?7S(VCQPYxuRLpNPKHO|E8Ge0Jf>ciPh)ZVRj0y)Pux*HdQYwry*sW@%=wRCImw z_Kjh{0u~7#?h@J4&!u))S7+bcHkCW@ZFK0i^X@9k!kU_NlUPL+HDc)DtldJ&YuT{5?9mYr4OFc%}!xFw=47FvF!^= zmCr=A9=4cbPiyf&u#iuSSoe%<1` zC3TEamEQ(FSQ%8x9z6K;@N3)^+u) z@NRKRYguLHDa_7XxbEa5Kglh5@1hrM2)v`!Q_is}@5;uLx_bnq=1F+#7wU)dUv#f~ z6Oz8-TE#NOQ`yQB7azKN!MvD<*4O3pY}<=h?+tO^{oU5I z=qjgR*5f7%Awi*ODq_=r-u0BvkPUTH=K1ut?bx5Ed)NG~x^C<0F7rl0xr=M%(>LGw zR=?frT*^>AS>WSB`DKdQD}!F`y8hSW-7dSNr@Yg%Z(cYb%_Fv}!bIq-XGaLeoWXF`~M{Nd4B)&DXy^iS3!o*8{6 zY3xjQvwHgut#&=cx#&c~G$ssZS9$1S1x*ohX<^BznZO*hUU%0n>81N-ZR_2AFr3R*xbD>ff%-S4O;6Uo_dK?zcE|V7i`AEN zf2Vw1E1s|{SxPM8%KTSpjPCCuvXj~*UOw_z;L@jYMN3IfG^B!o@q=m5{v+uVr=34G zEwu;`Z&+ePg zeO;d%7@E`hY+AV!&(*JMo<3peS6{#P_PP35`}ghQTw#B4+kyWKN(G^FS1AdGy%Wn` z>u~(b35NFP=l_a!JpSN$<>9)(B-h?ECr&C%%6aGcOJhbv;iC;(TV|_FDpy%H>qltV z-(dOUx?f^x)ynMez9!cKO$eL>YRXvEdat^_XWgYd zkFvjI4{krYq1gN4u;unEY)P>fo#mF4{_bFSz~si3ez!7j+NtcTo7UYgY1Ptry`Vx% zvG9?{U9U~^-#99V?7L9lQ)k@p#`2%A`!iGVr`c&1TW*BBzi{06-p=gFJJq7kXQxUm zUowk3=jGdzf$Eil&qF?5(coB9IPKm1mr^@#JyQw~tMdJ7E}HY{%(vIMg^PC?E%SBV zmA7Pn;HSGhMXmBz8q#CUn<`!<_GM)XMJx^Yc%nx#*5iai{{;8vfqQ3^_#Bitlds?Y z?%LPCv)%9B>az9!FvaHi(b8`nO5H!6@@2i*Yuc%b8Q)4vOfO!~(Ok9a?PZ-*l_gz~%0|k6L|D3jecosHc|8R!3Z*wOeVoL3SUc6@CyPLx>EHKnXS<$=Hha50UrsY` z%Q2h<3QnFk^l*81m%9=m(K=g$E8TpTA>b+>ULNrrCZko^?Jn zHh0sNkn(MDD^Ig7Ufq|%`B?o9iy24QyQQIrBD{m<9v=G4-AC%taR zXWd?zKixT6bybr_*1Ayl+s0cmM3>b}ZaN}nss8+Vi1{pUcl7w5BO`Vq|sM`RmiSiRxYcVq3M^>!-fB^sifa*QL8pr9^dguF`ZiiDOef zc&I0xU0r4Jsy@?RId}e9maN-4e`S9Q`FG)w>-0ma#-}OMRFXpR{>MWev z&}S8?+GO!0|I5PgB0f98{mJX{-u%ufjZXV*D>3`^+w0q>1+BgrB-Y33rv9sb=C}TN zM~@$mH@}=5D}Cj;e$M{7dE4%8*W6ZWn)Moru`SEh= zW9R;MnLw@#`F*R`vm9<0Za>PSG>iTH%D-Xq6DtnQ`z-hG?l!Gui|%gIeeta2`I{ZV zr~We}rOaFWW%ueoGNP7mmS%4|+4b?no?Cg>X6BiOCwrYNNm{yhiot|4h0_Y(9{3Tk zq`~;F)zXxy?iD1*3=rCKqH;PEzRy+*vbI+um#K?Bhz+7~3|ITc_ z%3if<*7TLHzg+obe@nKzlKbg~1v>?IGPJ74`*}Wjbjh=yzWo9YC1hIxDWmdcqtc&Q_1d;FjOJn22tB-)Eyz@^_^-kKgMths6=B3AiqNUj; zeuqL?QbRVmJ@|V=)@qK1Zm{{Po9njyR&B`R+I34i>U^NTD(mjusy+`TA2~z_Khya4 z-a@e>c)odWy{1Ba{at;3uj8NMu66CcH0}P5*g{*=u;=q$mo9EwrIq@C&UZz17o<=87Wwn-+0U&J+uqK* zU3vD@GJ&kBi`R5=GH0*aBeZ|AgscFAd(*iCGS8#DO$v^^Ofk9Et*xbWyKefcO1^2& z{kNMJxfd*H6KR|GJj1{}IP8tJgKTOMgQIfwTn}4@18*OhJ@HezDiQ@40sM$^Obv+puQpSxHT%@$uCYB5n|st|UVGiX*_CUzF!jAMe*Dj1_nopUp`uqe1aUW69}=iu zb7nus4F&xtf9B8c^^hsf+O=KgJ(m`@YU-s)^R6qdTeZALVc{(C%uA8-#~30e9%}wB zacIIlwoP#}C$)V{Te&rM$*-;!rd2)SueuJOvoHSm^W)#G``=41J)QG*?M1O;OWtPO z-7@iDK~xF1jGu(ifyXOPNs2T+`6gGB9PgRFd1l_RlDiJO?#zGxW{=GMm&|SMM|0!jE|4rM(d%tSZ!-54nw{OyZ6@N$Zum$7n-%}?4XE!V*1umicm1|^yUmvEp0s4a+Re8$S7pgH zJ?pg9c2xPK7A4N=AKv9W!CF|W=P`2t|EfIpjc=^qL|<=8U$W{}x$~`cH(kvub&WMF zOP#7aq*vzO3y#TV_{6>Hdo>{j1AKBt}S_MTApy%{U6eHC37T~qq0 zLf`L*VgE+?A|V53=7x86^6J8eWomWr&HB%IuDKGkM#on3+OP-RAbp-H;C_w-qbrrDb1M!Yijyza4no$oB+Ry#hLJe;uN-Ood-oEAKmvwc4| zNIqctu5~W=!hZLjO)syL`Xg>aP7K zetS&|+xf0~`)3K}YgKOC5>EHG^lUulXZUuef76mz0$-;d4J_QR6|pwN_;k2uY&wnK(WN+%Fb^jSE#7^_% zh}ak<~lsWaN|oc}d&D?vjWi_nm1+@2qpqoMk0@L1B6B{P0lEl4f3oU2{^jY}?W7#XGtj-~F!p(zd8HMt&y3Y~tW~u5WXN@*pop)4touXd22R` zyxDmD^xo2YCyQ3>j>w!g?`iog54~b9m$^%Ho{1cc`|GGvFxOGy#0mCAcHOx~H!QX- zyB_1QYFmulERQP;9Zqd|JD5+FO_)?Or{~qG^Ql|jzyAB|^|pHv75n=%R=(Xb$v>|v za+Oe~?TQ<258W%(CO%D1ycycP>35IFd9%2bEd_Bm?umO@@IGq((JO1Z%Hq}G>a$l= zdM-UawJcai{GsX zv7&vyF6{i!c7DlL$Ai;r7y5KvnU;|q7nPM?&boiq-0B9;vcsu+<~(^G@Y$fo>6+!O zQrX|!0h>133!jpCUyx`0Yu^1`S8bEdZ~EpU=4bS9?arhvVY$C{Wv_j%nj^m=W|L~ zJ(v$%z46%IWp;7KS+fsc8LMI+S1fPv4Y|(MW+JjuNKGny%D0(;%CBcy9lw0A|1C>E z(uWnFKC_j@gglck2o>vH^K)*k$VZ=i?XrNl3;VDA+W-8u=;Jci_}Ki#>t6q1(o#s+ zeml(R@SO=Mi6^*~&0i~X9S{lmRCVR6%%1PN-puB1e>v%M_U-LUS9rJBE-|m}@KlI+ z+0<{SG4;TN^gC&%9*UUE4qwwBwz9U*Pwzq1j?`@u`(}MF-6opxv}c`N*Uah1{r0J( ze(c{M&%ZMH;`F5)6^pL=@7}&u%{(`UB{=wm{U1qg9>M-2J$Cg9GBPrawewD0)CKYBm?Bp@`I~-|0uim{^y=Zpwo8Rvq?{c@x!`nqOs?CVz|)tcU4UaQ1CHd@6PV7v6>Zzuic>r(x-zEyjd zKI^?2zOiiHgH@Y9u60!jycUzRz25Al#srTi>{|a$yp$?oGrBo>dr5+6pZwuR$9o)^ zE2IB>{TuefLgI%2hvDs07ptmf+pp@eFghIjN_p?n!XmSS?f?ZODer=UQn~d zcj-g@?B{)c#FoxFpRs5|)XUs$Q5h>Ts za_`*k{hxtjlY)KGX$>XMHapuLzjvr4@87okD{od^=Z|T;vo{`lFl%Pgw5J?Pw@zyH zy0Gwkfjv_sWBt3;f+w$>DN4?q{=_zHd929y%{p79^D`oK&7~GbhvsZQ=xgc_w@LqS25zrRggedQ;63rpsC`zGgz-dph3>FRsi^Zv~h zyM1?LKb+{ykr2t)Hea4+^$ewh=R#zjpQ~zKuikj*#f)Dj3Z|~JU-d*?Zrt!C>tImXmtUGYlF=#>c1TXf(>m2_xTv@Zm zXbtE6t?I^nH8$;!pBQX?qaskwk|!qh;9+vgWnWXtRMRy@dG9ADypewPuxZBCy~`#p z6HIvggzs#>ZMbd!H}=QTcKeDC%7z#@2TOVLtP1kD>#V&}LZSH+$DiyuYl|NjM`cXN z`1UzwdGdYXS;vbeajnn$a(+m#I~f4a3!Sf9g_ zF8S~0)hiFze$`hmw7YnBYQSNCyN8=Ehn*Esf8##MAVSYmA!QCzksbe>R~vt=`J%fu zzl`&Hx^V6e&HQi2CM{Zb-7lpgd(iiPy4U` z%-W;QlCpl{+gf8zPMLCh`1j??Z{op`kUkDAXib0!|PfBO4rz^vaJpNR;u=RdQR zlw3C9KSKiZ(fR6^0%cgr1#I8yRrFB z^RpfCB4zGkv-xc70@I%CeZ5k2r9bdLP`^m1m z>w9BW#JN0IW;C_$vstNrF;{|pKR;(-kZL0PutVX_vnk`x!cq1tX8gUI$F2=#0FR8>Ab#1 z8@l}MybtT=t^eecW89Wd`s-Zkp8S{J-W`9uy7=IZ?V>&=S2mvxeA~YATv&cdLo#>M z%^?5VkJXvO?qA<`Wy_tlv*X^@aQjSYTcx&oj{Qc(S8HXhr^q&2@`dy>uYUeJ@SX17 zTigCKtg!SZoM#Z^DObREwS{3CKq4b35ToJ=*`N`{zkMGE{%ZoE!F7ER6 z=iljl-=;Swr9XSPTXD%n)Ab8~>uq_jXLS3{)NNtsPkdXQ`l=%%_^iFQd3O0vW^wK6UK8+Ek@I!1f9z8Q!*zm5oKMf}oxQzARQpNktBdNI`O?d7 zKJfj1 zeIxV3Dc)}lPuSMX=ZbmlG2{9PsWRJZau=RWaBV%W?>oiq>)v%{W~+V~R_$QzO6EGX zsH8{Yx8i}+!xmcpb6y4Q$kR)Hc=uv(&D2+`7TzuU)|8R3SZ8zaj=$blMD3yvI!SUU zw0z?6-TZNT_L4i*g4(NfuXXP_cin4-h`Vakm(<4aQ*&JQ&Mdm|&RWLm_2PSTb+*p_ zcX_+H?XAy$TyspXzBMV@SXR~PZScGJs(WOR&!6X#?1%X(9WUCLncZ8Q+wgCm#{p&s zDb}S0`Kxj#XFaUUEZcnbp%?gvI2G8^b5=x@LAMB#9S^2vm=v1>{?zZ+j8Lwp2TTafnuppnsOw>b%V_L0CLF}x*XMfN8x-HYb z-F@5IFW;lDh`pF5x>DCfE$MDyQ_`f!$o~w1T1Vz9^eSID_w#Yp+WoGcn-(npXB#Ab zf6cO=H*08dyFH(mfn-+jM>1^9^5@UNE}l z`(_Kj&$VdR=aaM2cg1F}yf=5+wEK~{ozb^DF9n7id@2#?HREwS3xCN^m9OU331>a| z`STZV*OZ*}wxoWsSIXquzsg+Ba2?^hcSES{z=8AU=Z2hJzuBDc>Z8BAKIwd6FN{{+ z;WROLwaJ$vwv{Ifr@eAsJx8W)LDiIx7wR9y)Mq}5maY9%U8{F_$@as6ZrM*5rbHa% z3V-IwaU$iQjwg#y;p#KT?b7TIoA@@Ae)-R^>8W&c>x$zOER8O|yj&IgTC3@5^=!9k zQd}7a<^IOF-|kXNu)BECdzzgSKf@emuWd&}=QQuVU6Fqvbljf=nExD+K zNtdslY-yWS@#}Y5keh^xhquP*&7ueNUP&E%b1v)lpYZ7L9p!gj{odV~8gMW?XZt~> zpv#xo8znroWmY9v_A;?)Up*PXC3r39J>v%Zs%u;JFFGJ~>&6e~ipz!d+@Gwj`17j% z+qP1w%S&sq5|hut}4qsTf`k*&dWNeNExB z`mO9q3s$%spUNKb>Xub^-`~~QQ=?+^OZRH&iTYKWs9q@zvgZk2UHM1Uu6X7Bhi{J` z{gYR`$HF~s`N_pQf0f>>_^11}&PHfAKmVVTuk%mY+$mdlBfBbZgUIcoP16hRlye0y zwcYnPR@K+l)TTD5HD&TfF7}3o?FT+AW~h);>pi|RdHc;p8{Ygnx;OahA*nzqwio^n z<~ROlu)0&0FY3QTM>ODajFiNa{-3KS?0X>J(<38)&aQOYhPTpUHy633wEEO%Ixuj# zH`zbv4gbjhWhslm);VU(u{=}5tS+d`U-5JObk8?;ZceIG@30WJnBVSD-P`_lQ}c^& zW>1zZTC#dqf6;lTI(B$_w58I#w_C$Bl2^@~ zS5>q>rH`*#@W=V*|9+gb?5$j0et3tzTIAb_(UHpE7MbKYs7ris}da?sMI5{oF$;aWGyw#6OFUAxU}&vfo(|GciRS-JcAHSzg3 zrzE&rvvM5W#pcQ&A}D6@-E;E6ZQG`b-FW!+KLhU}iJ8v~iwvrrd(lW7n&i>*XJHEI!?C`{^+C(Bb?bn|3Y_Lag>CFHdr?-LRr&v*_z@ZK;ia!{4r&XE^I*_WmnU zZ?EqN)GJ>;XU#EjzH=ALKY6oN%$#8+G3|Kc>e?5#`*n*i-ZAezn7(@V<*R#nnM3uv zJX*417qQGK(|dXQua?7sw6|Wij&~C8)h(=KHIFfm?mfnR)t8q!ICRw_ch2M6Je{nx zl=-I|WSLa+%+1VV(rv|!>;CT6%*{+N%enRW&FSFyH^vv%lzm+{>Gs!kSxZG8HcyjJ zPm@0za;jhX1p9~ZsCOrCT@Al=YL&+-EjjDLd5->VGn4x)ttMG%o(TQqEt8Nk|J;&y zI*+g157~XY$YAQu^Sf%t-WX&v& zDBu2)j@<^onLYN-RzJqb@Z93ZwZcCZGoBechA>3Wj(&PCJ9T#N3bSo@JA#Ar0v&Bn zullabtHW^W-2O@F$%-GF-|k@k)>z*9{m+~K42R!_WcqG@sXfmf-t_i-vG+?U>#{rU3kmzn9_En5OE9R0F*HCKtQ{2ab>p9~AwPw>?IUB%OW=$m$F z*{d7dDi(D~o7x8Kyz6t>#Wyy_Bl7pUx*HRd4Hwi)7@0R4YaCOSIX3&stNg9=H(cbJ z|06vw=vUf<+?%`dwppD@Z<^)3X3DydtNtt@4~|U|oMWC}{IxRRewl&8GMk%wzT2eT|w>RyzITa~-K4`(l6n2Z3PqH>wWk1ONZY@=@GT;8-+JIw=);%<+ z>RV8$;I@YQ=P}1rIrsVOGEdGQJ=A$QWsgA)cL&q?nSMdOtcKfu-JCb~Cx2GhwQE7~ z_wME_T^*IJeAH%3>y_VIE;Ts)ZkTuK%&Dp`mN^=hy~j_;e0|+Ei#zS$t$??3c9WKA zs?S@MwBhR4dN!}+0cjzVl&UTt^P0o{_Q7lR9Y2I7cUL~ojnGoLU488Jjsq^gy28FG z8e24Jrgv;!sbapf$Bg5|+Xt`yzOM_swa0negr?z`H$t{xdvS?Kkbk)2Yslm;ezxMr zcd5<|;j!$G>O^nJXeW!^ZO-bNaH2!&b;`fg&}@wZnJGW*yyX^iE$t5tC|nc2?6;|E zbNd>TkRVr;jca-%-_H5EB0a6d{;ntY{3Zrvh31v!(eBo%z3Yi-M^Z`N*`t+YwY>hIx7ldF2G zh!!D>XVM=RD1|^lDjT- z)XvR6J~!GTVS?b3Irpqf_szPPzjWcYLsPy?30PwCVZou}QVgpW|7Kvgn)byv`SyJG zs@*xKtnM#pnl-C!+NK46Tl+J$l>0wF+`I3{v>*Omv3j^7+igKfm2^NjNEC_d5B(qr0!C?c0zeuzqd#T-{moY!8R; z)XXh9>mJ4tRkgh{bCQTwb;6Q>lM@`zEUDig5h3@1>!6jk=0BM|31-WML-V>$ObL0H z)t@)Df6|sMZ%!D_zdY0DNCTVG%FmC*Zbzwez>eS7_i=+@;$m(B*~ z&A#oumdjA!UIzE}t)YzStnK##`(Nf4nH_w`9=9#+^QKR7*S6*P&Matqow~n=bN}|s`^XSyuBA2J|#_F z)F%Hcw0)}7^ZQHh2TISsSgv!&;{8m8)r)VvkAHJd<7wE0Tgwuxt~s%JyPXQ1y{vj6 z&)yEkeQ%F^{J8&;J*SO3@4`KPZ2uW%9sJL*>f(Z8_u$(re(?To4KqA05 zF|yxTroz*&U{>Tl)#4=kCz+nd5|ZanotZJ?y<6|9FQS+ImPf}4xqZARdqm~jxf5!7 z`K4=rWPK6caCznT^($lNUk+V-Y5M9}dC6V28~01iy1P&Fv6@oz67z~HLUD>8Hfix(`r9`fZ`M}F#H`qqB;=AK`X$EZM$toIryTir{j;(ff8G0XW_Q}6S5Yf;}*f7V#p7++pjn~$B!v&>kG zjOOz!5#q4pu)3_z#j}mg$7J{Cm>uoB%~tw+iQ5+M2o=BZeU)YTUK5-06QWAqfA`J* z&yaZCqwaUFN%mynf1lkJ+wO~H^S`s^Y*xA7(`C1|?O(ly^;TpUS4HFT-P(0i&p)V{ zRG&~I{NS_oRsQ9-r!SZN>0EttbGY;N)!BB7P8N1-ug>){FJzqjH;X+*<>^$E|I`N_pZL&r?x{yI=6}O` z{Nlc6$v7}nMy%fVn|aZsf8kjdmh6w4ZO424<*!Xuvr<<5V=i8{E;NO|XELM3--bE! zf1H0Dl6ZE*E$k1Erc*WF z;-X{M{xevAoc3~~N|NWgvRNIO2PKajGk!a#?%|>NKdu|?m3X)GmfhO24UsJ+yC=JvgGfOO}kpv7yhw47wtT^?BVW@ ze~-UnQ4L$yRiM0bagq^B=j5KBhnYeiH2CqE^wug=PY&l38c_b}gBnfzkjzr5}%db3{l?%BF^-R;v?zaBceJ@ahpx&1Y3s}R`s3HQav-tZGy{3m2(B2dQZxeCoK`Gw|ai} z*0QZXPv_;y&Mny)R+O9eFmv&ikf>=hC%rd0v&@n+hvnUyc&$eFgsN8c*u>*0Ym4Ww z_O4$(Bj!nOU$J-V#O;$d*Lc5Xdw=-jzAMkHOV2&_&t742X!(v`yDI`5JFo8XU}j*{ zS;F%(L4-ScbLIPl{L=|*H{{Ls57;?LYE|p9Y5L5T?gtO3@Ez8k-&D$5wg1sAkE}H^ z-D#_H_m(Z*8GQM!-h?A>CLCdwcoo0kd`gK6Z_m6JOCIQ%aEG1WP_*xw@8_g8+toW3 z-to=f6t_~h?$o^#{dbIP1h*7QiUsSX2mWW+t=*O?vHtYwb|LmBe(%Ceg!~i46F5!8 zF235Fd9$osDPpHkRrT3@%{Maj!nyrh=dIFPHph4+FJ~&xGKZRmy)`S`6QS)~}ziO-TbKZp&U%uAf+pW~I=XZEj@a3~!mr|N}LOo4< z{GWN8$rt?m#4?BPbjKY2z6T#O*y4nL-mLAoQnH9KvYOjhwD+NGyRY}l{KEI!Q?lns zUs}W!m9=Bis%aHb^EhsA(c|hgzR~{4p||kw+VDl)Yh!s;pIzROZTsu?Ufo^)dd@ez zjr7{Isd4^x%`FS9s))r9@d3pGVy!6WSR73+$MXUp{Tb6KiB(Ocka z5^3k4>u^Ko*@b7?W>=rcdE6<#aCaTs+>0sGOfyzK6l#r0nW*@tE8wwg&BVrewN<@a zWLKXq@9KCf9A&p?*V0S(zC6=Z>{`mR!7Z4fNzCKJ66TK&Y7*M;&z?rjcsZ|GC$u3tbM$w(bN7&+^lu|S8~s-o9D5rvG0B$ zi^r<9 zH#SfE@h!zu(Om}vIs?;h{?2PUxALmfhG~5kvBrG|tqwg<^IEAcapH=iyx2Rr^v4^s zZ-;L7&c0Q&Rp*!o_f~6ft+NI#%JO9%2j4a<@Q`&l$h|VZ^?PcmzDR!W=Q`CVyEzWU zsL0*F>eF@6BCuaIRmW&&kSFtl-n@PNYhQXFDhX{^IPZPInw2YFf4C^DlJmbK zSr^(*@>_23?KgBj|N8dTB*_}L_D~JyvfQfNiN|NNCtQ!nn-p>_jY{Fx)7(eE_9;1?y-oeDN)=t=T4peR(7JU zNqJ7nxwBJGt=n7uyDlp2t5Lb=u|@N|!(}eac-rRKljd1y8Elx6gKzLF z34EP+f_vv*x5K&Hy}N4{&70MVN8RmLXsUaynUsGO!`wA4dEG|6w_i64pWN9z{$ z-aoZfY4`Pf*EK&44>K>X{2s+=TOzfle!1_$a9Q15S-+>oGUah~O$gn#w!2i9r_gOmj+W9SgSn3E|7Pj$IIdtUrt(uRKKR}Y z&79w}-246(t=@I*Qea5f^{_*#UehO>m6@N!a6qxmh~p&J1A!-H*X;z4JbWbacAh}S zyhZ(s);;(W#;4z8q@ZGY%~Ztw?=<_1|L$(cQ!JWZ7N+Cve$S!TqI;jsM#;bK>W_bC z%Y6-dyZ+Sn8*jdIzBBu&z4xHW8!1;F##bIcUm37}V~z@~J2boRJL~1ltKnxh-_*D0pWABt*eHkhkm`0tFRv5Rf+dSQ?ODF5t30VZ`R6~w z{R7WZ3U%gZEKl8be`1o9D^iSnEXBY3u42pgwF>mj_i2n?~d!4W89w@Wy1G zT$MCUiOP)I3Zh|oSIoIQ zB|N;EJC@4IM*25@o6~Th;ebp^=8hkS4sJDjx~s}VZrVqM@3rSk=QDqtn&jSOJhA!j z*S){Azx)n7Co|Rbe)&{u_Y6;&&&S^x?LD?++PCDGgpR{*XWq_#$zgo6>$W4aqR7>+ zHxg5vW^LQ&{OJ3NN4hsp?cTNRui0boTUT%9g$C$a-BEhwGqZJufNaEuS4#teS2$na zU|4tI?(Xwb^rz37KKYJ!?VhW5cr*;QoVxf;w}FA>t0ePt`Bx{l$!*!bber_TTU$5! z20Dw~o8#`z;;YoP-7R9G5{qVDk6r!J4F;u5ReHCk?rGh=)9(D%Wo_DLOPAe9H1@iv zazWR#@{!Jh$GcXotKVnGskB?W-R++;n}2%>b6Vf5%-^eY&PfXYIA#~vcY;qmI&=B5 zFUwBFCCqNN__l0So8;o$!`mOOTwr%gq{*XLC%YFYvrP2(_UT$|c9vXV zplR%dX)DjAW=2KY9%q=ZbEIMaPQH4p8I{vZRIdG+oth#PaOc6~A1+~={yn9DMVz;ef2o)RQ3r z{&TWqA9S7g7Ta8RcRTC0kZtd!MN9Xc*~}2O^!aQ?PPaDUea@C?6@lSyGk#+5Z0B#QtZw>(Bevl>6^r zQ!d^1bKUl+ZE9!b;{zjgt!Awh{cX_W6Rx#tVq5a(X@^$mc$_Qpmx#;18uIO*^tRZv zTeJI?1RO1#R=40l$mZ%*I}%#<+{_etWY|2ZVE?&?cV?%j{!-p?Q}=4&_50>ie=2lM zm07KGTBk^R!_RNm=FOCtU^QLI$T8=2(U<$B_ri61J$HUL4v5-jc1BeA)UyD!bq0$q z1t%B;SR710_#uS()4t-Kk9OMp0>_#edn?rLmnSZ1@VM@)Ur?>rWM+M@>~U(mrI>Zy z2QO}O=3A@PH-CKFl)d)b`$&%o-eIpEMJ`tm%bTaf#rekYN@BpqOFyh9>;F;r*Ijn? z%ieV+Y5oOPC#l~ARg#vhAo(gnv7`S^ zPr|C+oH^Am{Jd(vdKW%DHQVj+mMEc!muE^#d2LT{N*ubXb!wsio!F_djrm)?vrLwb z(7h_N@>tE(6W_h;%N9t7n(m$3@Qo#(=|s4tYzwD=#V42EpLY4`67kvQW(PLjd3SM3 zX=q8;nWG-x9aMA{$Xk>$9;@duEtX-@Xm(g&vhJ2{Zi@P}lN-$TOq%gx%{Faa!=wog z%3bqRB@Zp)|E<-pen9fN@=oO|yvOI*#s*TjA=9Acy>nfScLW7jv6(>cN-o|gs{6o1`8BTs8 zJm2crua2jNhyVCi?GLunz2)(*?@Z6ay{B$EM(n%%uxZYT!+#C8Em<2>A0T=)ZsA_9 z8$WKH_@ufx>-42f3;7&ZOce9#tXKFQ(9k`n-f&6$iE9c?7Rot+T^Scx_nDbQT-YWN zed<~lLkYL-i}lTGb~`8iXLuy`$?@wX$+U$lcZBTsvdTCp6kN4=QzqE@J|GxKIO}5YT+;e7eT157$qAdcOP2%Hq zJinKmn6h$0Vo!!h)7_Tdf6~8W-u7NCnDptT?YW0ZYV$l+O)4||eJU-pYGaD(HT|ni z#UGz!ZEmcyoUrq!QSoQ#yeZE9wfnp#-+b|-;aKrz)#uO5?rOBnYtMfF^7?iMlgqx* z+FxL2{$A5Ac{khd#O>|e-`=cWzV()FfXUa=Qr@ddjz9mNv}0ganZ&>{!F0l^Rc&q4 zvSz(pw0!yU-X*g#W0c&wjLw{?VPH_1ye_zE)mOnCf76QQZtvM)G;h=9?4#jtFCLcA z$QR|FceUvG7l-ai3-^1qP5j^y@pt`3xnt+wsud=dx3eVAisWnT{c07tINqp))$Qa7 zf$cl3Sr`23csBRr>+C7Zm){7}etYb2Vqc`rHZ7^J6|=PJPW6Wx9pnEjGv)jVzf%qK zbAy;xA%s*QoXzPzBubEv;0n5#O)QdNU_tIuwUV+9(mLC7RR*Vn#r35~I7j*use$Ea#_N{Yt|6MMqI8gAP;mpzf z+Pn7fEqLc2-?e_;>Y2WKGLLR~TkD=0|MPOAx&HFCmwCc1)8^e&x%YI|UoR$CX~}&?|0C_k z+YVIw?tUiQzQey>~oa+Uf^{c9JNd)dxBdtE48n|FEP74x17ZqeZS8=U_C z87zP1#;)djw)x#E_tm$>qjT>~RWaQ1MKm*@>j6{9CL!Y{oBG-)Z|=t?PW#!e^}gco z*0wC~?_G2<*xA2m@w%>Ey?GpQ(=wIc*zRm#nWEVLWsbmdcB$w7E6z5a{S&;~?BC~m zCMDc?+hP{&2)-7@IB(jlMUqn&_g>M6Xe{Vql*oCI(#CyFwsKwADeJTQmNk9!_KkIp z6m|~w4Hh~rb8*9A<<(4*9v>V(lwQ(VDRIvGd%zaqEcP!4UwzN})x6Cyf2~1e`4WL= z>#m(|S*gXJso80ndf-jK-;+<|4wM_#ujcnKIxCv@`QhrsS!+d??YNQI5MRPz^yLNn zv;#@Wk}Cfi{BI@u2kmRiyAxgbpTXu=b@rTTw=}0!>TcQW@paoV-ia!FcHdnsK2Li6 z$(!%YrsGTNW2Z#_IlQfM+On?8JDOUT?6!~4e0@SL%)hlOxTn7*seozTstXovd}`6o zDY?D>88+`a?a5{IrTTT9@9seVO_j4Y?41=UrfvHyO>*0l2aeXl&-lNbs5$AK z>qTuJRSks#&Z#6dt?Wu)T|GCjt4U^q1@EM*W!u}Mi{9SM*4m!BDmr!VrLI*wpJl2R zELb!{F>l?+RZ6SAX@6@y?|(_Z(D2ra^DP>o;ftR6%7!N&^R zdRZq>;+331jZo}_306<*iySsat*+*liK^0TEIxhd-J|ti?!PMfd~El&ylH2ThklWr z{njyRf2qnTJ`bVAB@C5zUn2in_0;;tzf}0Tc&qu=g(+e`x4ZT|7T(FB)+M>H^+vKq zn1TKIIWiM}T zwy(5b^7QT8?c3v}-u|8y_k8o}cZGQiroVi!W64s<3p_164>r7R{bU!tkEdSu=Ni%L z{u7@Ewy)T`G=5jb%O$suWxShabz+^!CZ_{7wMLtanodb{+&v$3ScTv6*xo;iXT9;_6a5Gh%tp zKFe+uyra|X-TmkE-tT|SUT%4p{Wmr@mPa&SSNnwhYmwhE(|GE>@-1IiwD7`zhM>8T zQTu$?eU;u|R`X_C^x0c?Sue3R?OXhx;gG>!jTMvcylj?Pp*cZQr7Vrdt8s3s-knsw zXE$rsAA6fSYuBceu<*wEN{D8wqn0)(elPkaAN&=x&@+yBq>tr}}Lo!Bb6 zBlDf8_J4+tqCrBRJ?Eseo;+43qVXqdS=Gl!)n7}WUEfi0ZQ6^ib+qTv@JgKUkyD9mO zNj7h+ZO8<7mP?+OM1&2vReFCoPW+uR!N_>xp2(b>qdgVRnNI9=us!xApjX`JhkDh8 z9NoX!x8)XSZs&?v%db?c8ZuSn(ygUae(!tPQ99MJ?7O7+O54*7exbXpZB@ByOOn%>$eaC7<}H5CwNF|4yG+F1)Hl{!OV2J`wtjo) zEN$Lb9DNEE?dhd{_mYd%!<~+ws`=)sH2n>?@3XTfKfPT&bJ6PBy@57cS4H@`8adwh zt{2jud3#lp``ve}2Xr6ByyshBSG(r**QkbVmE{(*CxyM;^LE1C5R+V+4OfkKUAy9C zb=c&mI?uADX95oO8I+3T)qfiYyuI!1AJ3ZAH8Ciw=U<4$;WX1p2Fo{2IQ#Fw z^|>pH7v8!VJUOvLQkTb}$5Ls1N0RTv zu1LYv3i5tiR#$AZ`6+RaM{Q>Z`@guYzcqhf2>;5~#LKDwl z5mw%9C*>DQs@vU7-(0k{Nn6Ldy7;cS(pxRbd&@j@J~-dYoOv#Co?A#*{N~l7(+|A- z_GIF#C;LOC^A>llujcPuJA2xy<)um9^B&&W+VSnk4~Jz0J09mUUeKN1y5`HBmvwiIonxj>&NExLM(EswliWVBi^}D^rlvWu zKVBi<>sr06>3r!X&hMfk!Fx(BRcl%(UfdwjQ}=^i`FFPc%c3sZ&G~oAS1s$)e7o)1 zw<#NVC)v6GuKU&gVD@YMOEXinXHS@TWAd*khbQ&h!xa8A4y6ZHqS-wou3p06h)y=26b@nI!@AeFg z4;ZBHo!|O=TkOj1){do_$wymXtV>GUbmp`EzGEf{MFGOsZL2kS*3MZHxMS`5&3f1F z?)NvDaIj?QuU#$5JQt^>aL@m;S^G)-%i{-?qxv=Tc4p37bl?4!R+gx1NMOSm2i5*} zZUy!^^~LLVrXFRf;7e)RX>xfXv)7k@-4FiA?o{vFt}J@}(cH?m)+HC8eYN*}>uWRh zuuSaX-xl?A@;BezDVfP_c5mI9wuMT1(YI4Qg5Q<}?32A4VqAIBU9{~w&$Z<HP&s28`|eT^ z`J&AnnE~>1=4kw9cx9Tl*X;eT^?tLHdf$s&3H@#N)krne$4Gwlk|_*4cWb`&pWf)h z{5?fpHfqIaW*a7TTy%eLCHT!S;!}~m{Kucyo}ZjE(J?wgam$6-IfgDPGN*R4 z7Z~2C`*}S`OKR^4&t=m=WzDMUTUh(bP#!EA71f7+{6pZ$$ zN+j4V82^hny=AaEnczX&5xBYR%JbRt6bVQFGBf+xNS1e$5mpIiOrJ?d^lf5J>2?D z@5YnZlRI84U9~f6O}}^Mnl!y@KUF&)=cjt}Kl4iKwNCX~H8t$_4Y?n^DFM5_{!1IIy~5<(-Xr`}4zc`gZNL zn`}0x+K%^a?xeu*==^=QB43;MQ$jdqUNPt~W@Y)Nkn%vlsK7M7{_x_AzvT*f-hXof z&g5)6(x^5;=yhPQVp_?cx*2ml?dsm}vu;h=@w)29H}9g>U!Q}vY@6|ZQ%Gmk#P{rT zAG0$4bzPd!%+5NaCQJI0wDhdQKezn;J8jds8&7)MKMUDA)twG}es+Fd`<445cNCWQ zdA|Re`^Qb~)8=Y^KfxPyb=QvZ_iw1Lb&gwMd-vtJ-MiZJeBCm2PJ4ZK`8CyLTIw=a zz5^3v7EE6#7m>hIVezSWy8hjr&u5$cRhJ66lOq`IxM0D&^&*=c13o2X?p~PI>%jS) z`3B3W751xLpUPS7Do8yx?W`=v$~)yRS3g*=GbZy%6O%Hdn2XLKqo4CE1-q?QGsS;k zJNhnp#<4AvK0CF|Jv;Rd16#Mpy}%n9JIg*M-P-Q8YPD+H+FY}ftNM4zrG$E|yw1S1 zEOj!wU9yY)+<3d#mAAt3J=$(=Nm;&n%a#z4DS`7?cE_>9+ymoJ}Xa1sAhN+pC+`m1U{#G@z*(Qgt?rLXW!Q*Jw+G~&9vu;=G zR|OtTYtRbSt(bl<>VBb^YfaDmU%~24Mmzs1Ofo(H$4;i^_{sE{UwD7=woeb8;K}_k z^P%niGuH*}?k$-0IBqzB=`Y$E94u0<6rgF?_-L9F(%HHnJxGAfYkDui50i6%hf%-w#?wTms#$y>oXo@9CfX}{99MP_0wCOzL|eE z*!lN-t3I3}#M`86-@kL)tqQU4$0rBZ^Y6Tq^>S72Gxgt6BGcxWxXySoQHCX5-STz6 z?5w**;o^68DmTB0u1~qAnXzoK7w2Pr&0kqJ9y)d`NnwAZzPgF=_u_c@i7poIIkDS! zu6bPbJ7;^uO-`xB8ZX%P z^8J?k`_G&E)%pqRVoZ-+%HgU$cYk~S+`lIGk6pVi?K5RsvcHO^czM9Z)rKDmIMjl6 zS|;;X**?quc6#SsvupSEUX0fDjn$kLk+j@CC@F64-kTHq><)!g$d@1Uv}$@^J?ZU^ z@3zk#7p+iyUA)<^)0Za@Beag8n&0mm}do;PZva`Dg1c=NEjs{?&u5eTkLl?0$Z} zRbY^!JGtoDtfyaGa-yzmewVrOl}4s^a#H74t_5xGpMp0eSo2I# znK)^2=%@Qzw|`%LPXCGQe+IEz(Q2>FZiud07cN!ZGCAbRb@i(u%fk|HC~y8+ba!qr zW207{-{OW)F{yaf+t=>py2qAh6~5Ka zoVKg}arusb=UZj1lQ<#^pWmH-YU1CJ{|tAs9&>3fI+jvwKl1^DfAQV;4=>W&g)BbF zpZma|_pWN{%Bt`Uw94IJfs)!O^1n}Ya#lwF-Mu;an}mFC`nr(yv3aYOwJnPB)KaXt zRN*J5bjqRh-(ySpw=2Dp4&~o-ziktrIO+2V@m12QJ2^uqE%PxsC$fFJ5YL`TqG5^x z#xgR@>w-U}{oM2G_*dodk{e>LTWfVXrtRIFKSArnmWxd1l~Z@=XYy!+Uid+Vylk)Zl8mvau4#oy-ebw6mnBO8^w^0;+) z(w4KE&7Mv=@s*)7uBpvJ@_5o+&j9`a&qIIs8yKz~UACivVZkm2h6S@Smu=d#czr<4 zdFPkEJN0Kjd+!)n+ILB@Pf9|@?W*xvBWEFTg_gKa`e_FbH8~`=T8S^;ANXA_?AGUd z=BBor=4N(rCNEqz&0y~SvP|jo-z?6*Gv%-EJZ_?^c5&;6Z+9}5?#*}W+V*kkn~b*` zPD%3rn?9}LK=5;Jp8YHR(iV5yoW`R2XVq7P z*xLL~SDC<}<+mq&tKOqY`*iBW%~f{IZ4`Z;&=srvRBDG_lcP;(fV-(RdshfwkNrxI z6IQ>nA3D48ZtI#isnd2>Rm3!n$tqu6C79LEACOvXxBqYA*=>(zcUjaeeRgNMfx^BR zjoG^|y8UO!zvO)V{1rQgB%4KZ7-BceU)ekPTY5*e^L#lz3z_5L)}OZUcOE}c@~T97 zs#N7{VeUDL-^b2dlP9xrXZ?rd=DJ1ux}vTu-W?iP`@Uk;8>UN+{eLg*Z_9t3*w_+t zGNV@Vm)G{H+?)F&E4!v`uehG^@e_emTR{VIe>fYrROn(_p`9ApuY3$kgR>G?OuN_+h?k4qW1EJI^uL{k$d9Qe~@`tt9@ zZ|lu(?o+vQC)e#<=FPXSE`PJ-+vnZ$!7Qz4XBfXr-TKVG&bf{$_e2F8Pl#!i{(5rg znBGJl{?)w<3^EU_Rvg;M!mwsRWcSovlRoCJTCh7f_}YbQhdzW{4slWG%eW(&QfdiZ z`1nkJ^?je~=e?!B^-texZ|l44FmJ}pX&v=HxR#!e+gsD@t)4VDLge=uAFEBx6}Ec6 zCT;pPOpyJHPdt3TM9MXS&W8 z{N8+x{;TVJP2XOa-Pkfu;_~j<2d6)hUlGzg?c1?yUv{3@-L~xgcD(}89kp&3r)^pD z?Q4hJPq|0)OD7nulh_!`~s61)tvy;CEL^zZ3Xm z+M6{VsXsrS{V1Va*Ze(bXU2`N^t?Rpxc8fa;>`9Qn)EVzegBxSB~)^1wP9qe}e@usGt^^{sF zx8|?btySeyqHkyCtUh~f+B)&N-rdhfSpvdbHUtM=bxZLKs^H)jm|(TgLe|H@;`r3Qy_E$8 zkIp%oMhDIRQFimrMyXj|RUXqM6sE}dGOcP5VZM5RA;F8`$JOm$^Ir;0pSe=y&TTOb zjqO`?A|~41c)WX2KgW{?I*SiPavo$}UBPwns>fc(H@Wfnj+~WsQ0E#t5Y=mH!#qr1v+Q{k!rsPkr5r*;!%E zqQ1PZ?%Z9n^@{y%Q`LauuOe$tL`(>Z|6VMyS8n>=yqiC}UzWZ5BXZ65&H;Cx#$T6X zZXb}lSMRdq$G3Au^`4fm6#p}P`0(UZb?Nhhk9sd7QWxyg+4^lomP5)khsLbTQ`@T9 zJ2;shOY{X5&rSL3RmGH*srB7{`L7x_wXC~aQvNgK%nGW1x_6u9PmX#o-X$~F=L)WO zZP1Ld3%kKQxy(1U<(ew@d6l5!CR0uaOJv-!5OO)fDe#!p|35=+c(?ju-@Uumm3w?Y zu5|UT-f1mP-QS5T-+sL0Ff%^&(UBgunu?cKSOeIMlJ+ruE#9xScKbZLyH_^d)ib&F zYH8E!*w`i=AIKV$RWSJqy)Z_Qd5u?fbwzh8wf=MXzqUaw#C_TEN|nGE)W5ziBP{dzk5N`yIP#{S(JJ7E8ygMP=Cf z#%y=p+}G|JRnD7EI$9X#t`;deZ1YBP@w`b&laC!& zKFl()o`Egwc!TNYxMzP;(q!*&r(+(OGf%732Q({5`WY}+ z{$!YArt|(s-TU39O|OeK#Jo=E+g)(!$d%82rv=KJ+#()0)kmhzS4a`O*v5Zu`8<<5 zA%9jMzg+lTrM>HWaO!`CGpkSZtA=U|t<+?x-}6)49G=c|}uS;w`WA zlU)4|^iQ+@E}YnOdXC|lkIz>}owMjp3(9|cG;~MUCd;tb-jZFbyefK97rs^#?Ku&` zuJdMzp%4Z+b9-k}Q9#!tTiEaJLoiUmjzq@88aedsr`d}b@I93|?vxQ*di`mJU-#?!J%^9R7^mIdT_nGJ&z%*EmTbTMaEjytV;+W`b{;y) zL4MYyf0#@~a_e19rQ2>-_}(qQBOSHOBS@+^Z^d%$K=q&~PlmVmOp6w}B^RwK?%&dF zSpIl*?fc@3_f~6ZHwT^yybe5F5X$)T_SyE)|O^R99cYK>0TN?A_ zeQ8CkPHx?no3)BhasRv1 zC8FBSqAqqXH?pwi+}FIFA6i;oz3o+1`_91Y?yLoK z_kEqUP`$?BnDsOEH#Vi}>uf5%zMZ?WYI5J~?0ZZ1gao~p4z-QDy)8iJ>>sD~950oY zS?%a(mi||htWYV=KcS~=L*IXf`>!@HH){PZTYcQ!nT4TRr}dn@y2a;z_y2xv-4Z%w zPx(kQ9^6s%oFFEs-7P!@?%@Hs_OOH zM3XHcU;SP;gw##&E1dRM`N6+>shPF5AJ^T#J0WgmCD+s7ygheUHbrG6u6QZC&-LV) z=7*hj9F`2s&696LeOQy3GQ)E12HlXtJk$2Wi=NNDyG3el)%Cp9S5H@8e1Ch|?P!xj zYoZj)_OI!ief#?)1=*AYPA>l)-aHdHKR$Tvbnk0+S^7%*ij}>hrz*8hEnx2d7Wkjx zdh~Oazq)Kc=4a${ZO)(MwUSje$Ue1eryt|{2NQn0lBk)VFURK=wmbdpZ`IUqvmQEo z+N||8zGQt!vRY5so38y_pj?KAV7$i409E7J{Si%sTMp(`8*-TzPX$*_LTZom5cxHc=tXfBTbf%<}Koo=$%^+w|O5Pw)M!-#MN2 zStDlUc`>DD&bQZhM9;tcDc}G7+U@c+>DxSoHnqssU6o*TW~zV89DjFuh4*psRZ+V% zl;?4NO73&z71orfxKkH?{^bva$KS8=|A?`8|Iud_@0<8H;aiS>o3EACyMf*2jpgcm zBd+srPsdK%sW*FG%TifhTdnAqi<8?slI{L8%)b)9!2dqi^IwhEP9KU%4cu?edrqo% ze_(Xk#;&ekJ7(Upyf%+TA=ssbZ?dOau!=F$35S45?3d)Es(GI#FM0FL`i$LQX0bOe zxephs|Mj?MIA?-j|Env%U(PPO@`f*Slih2t9VvISGY~$GkDQVlkwc<+-ADN~3bmFJ!>=T@QgEJVNum8Sw^3<=MuWYm5U;e9i zZ}C5=x25a0yNCWU5^s`Fa-Fo`*s7zOL{~mwKk=VoWdjGpw%xT~ewW#3AKiLon)KFt zw_`Kst$V23)o>+T=d01IS@~tEtn*CWT;&zL_P^A#&Wt&`CAZ|x@e|u_fBjU=Q}%kR z%ePnMOZ6tJI;+eG;NWuF`Rcer1N(Pd*+*HwPEQwoJ8RVq%}1-IUFOya+|_d2@$#t@ zp7k-0AKS|rt~!?-vsZM|ntQEp->2@1ab4B-AmjB)!K`O9IUP=&dvUkn)$(@Lt(YKQS-reoiXvmnjX~muE$+zxU zpOrT16$rSwQd4b5?7Gme&mz-ARSuoG$I`S9y!oLlE6G=IaOyOkjok%TtqkeqPD^ z6U3N!?dbiyz5f~Zt!{Ie($=xN`^(-cx%uBir(X`YzVoBaOWI!1S^I78p?6=*S$&#b zUX{Ikev(n+g}((s5GH@C}Q3k+Ek_o8cI=9PLQo4!{;iyYkCPgs6j zQ}=BnpX9UNM$>CQd0&0@$=}5B_}Rd2aWkgB*S58gk6IS!Rc^U--|kc$QVS@9O#@QXiw zy2z~)G6(P&Ep7$-7;&AZNMj=-v@q-_XPCWk45Tv)T<8k(!XC~ZcnZ@05 z8f!K#h}`@v5IPrDBY(^Po1FG^ zoA@<0;%Q60yt34uYHGi|wrj;n!<&k&LGwI04zPtKy;*&O!M#kUT5nms=WM;(Tg|54 ziC(3dt-gGn*t2PKQiCj%oL0|27v(z|t5hMkR}Pq@6a%>$0h zF!|C)LQG_#XT5@5XgyADpN< zv3F$!^DL3_c>F4SNl{yn?C;tm=E>7+eXiYkK7FdNugSF)vkv6neV_3-c53zA=xvK% z=KQW}i@J4^;dDu_=c~oP=57!TsZ3MgSC8y^^(s47)HU_oA}%j0k6Bq=olgXh^JHdZFz%bnVKPi@+&tW4jK@A=Ep1W%o6=4Lc?pier8$`QdRZbLY+4rZH=dWBeX{t&2C_u76r&AM!b& zNy+D*&1Qkc^2Pdj!f%f3+>?CZP-4xc33sc){`E>vDqDR+S6(C8a_)vG|8?;Z7e9#I z|IeV4W4T~{ecZ~E;R&)iU*2&1YLjORs(-og#0i}PE4bB~UnpNZ>)LVnw9QptQ@3Y3 z4Oec8UVX4qlX>2;O^dfr4tO$Y!B2;3ncYdc!596PR&UpT*J-)?io>i|+qIe_GZyby zkX$n5Pw1%`2O8^?d>C%9FiI`2>v{d!?$XB^|I{7XduKm*&o}k{&rbJe_U~@hx8&3% z7d_>YxNH3<)9i)a%Vo2&AFnzH8U};miuGn$yhk(EZoR+a1jwTEw|?nU{|Lab8}#CQmu#@sCBv`lLlWAFhkL{pacNZD((9S{0V%_2hM+U-Zu{ zrVRW=^8$aAsQ;ZIntE!}9%Q^2yyvt8t5t%ak+x4%n9hE)3bxMUCbyV9V*n6k$n%J{a z)iYEj)lp8=D}a6Ze}WccEF zbN7bltPl8|b=kISpOx<6aPNEDP8+0Fs5$<*;;x|6P`B{P^Mx#}whcY}@?>c6f<8t+O=OxlWV)vRW!_SWonV|v&=p`rPKrg!MFj-8^JOKw)Xd2BD0 z`?9Mxwr@cf$IA(q{4GNiLaI+4Uo`nY!*0pEwb%Fe9lPwo9n&Uo52Yjx@~ z5yN`1xwa>=rf*X=`YOA4!b;gqdy6=Aj2kVB`iKqEaZx-&*oSMM`?{y-mhM0FDyFM?>!LuZtIO&`{7!{<*hQH$ zJU)K=X1q(-=J~c}vER40m*(ALx@U0Odk4o(|J0?eT1q=Z7Am=SmDGr7#jKi|zh~kN zwnH!EAHIEM{zLir5$SLBxqDy6=UqLs&~xhDCDUf!K7QxixflL(HmlXYT(`J)<<_6v z-HPqSRn_-HtmoYhm-aSQmGvpv`bw#H=CxI~wFRC!PHC9;zEzKdMb^D$dtl_Ay6F>M zEnIqg_oSCGQBhGAx27&F3Du5Ruu<#X!;{D3cUCukPj`vcd)n_C9XcP7rX^aIzhn58ze|*&qV>)9w4=gAmV@!PrdfV$ z&*@kAGI@F3sfQoRtYvNgGhFGrvi0i8;@PS1dG~r;+0Lo9?Qe|nl7Bqik{N$jay#BA zRcKB8#5Hm0#k|^wFW1_ik~y2+UH(RDXN$?#ey)=|cW0ca5|iModuHI>ulda&@W%0D zC;HMjlg#*UrnD|7yf64>ows`8d#=>m+b8lEM|@|MgE2WH>c|EdK0!|(xzq0W=)*q%*`oo8uHV&?#hhnj^nGEyw!8E z&C51k&X@g|acfTHPN{5FALBb_mz93|dPn{_$r7sLU*OQWnD=3OM)au$sYAbVpUgV@ zo%i&g%Yx!RmAf*ZxH3km1PVMQ;;{M@|$ zs>@_Oi{~kPcW+l-TT<0~O}OiCX71ddnc;hGuQNM!OM~TlR|7y@(8$MBW>!TW3cX^KMSNGpW|~)NS94-X)Xj)^U0s=Ie;uE&8fv`a#*oi1wbc z+3Ipdwa3~PuF#*IU2xgoo9ozAL8*>Q8B^o;2fj62F(Gx&GV4h<6y8)uOV4{8vc&dn zviF<}UauZYyJHtWPQI75c;4J~)m;^Kvw|LM4nDAVdBPiyiMPsl7#KwUq%%FgTh9Bq zf3M{m&24K+IeElhhuR+7G;M17q^6EwzRx--iF;NletckQXE@PIYx^CW{!JM=vp;>h z=9SH{c9kjH^gI7F!*v}i8SJbkavxZ%(%9rz&0xj;^3vDP9Twgh*YBwGh0SVSW27Fx zkEP7R^YsJ6&R}I`c4g+sN$xf`qZz%{71(QYA7Aw{q3O=cKRJF)>vpX2e%o>Lh6sbe z-7B?!*^}NFRZm`h$<2-b*oxyupK6!))YqhRvPFQOES*{`!u*cYSMD+eDCthu~Qo;*6MR;`||+O;B};Eba}#g(lu=dS#=?)JJnx7V3^al0gHE>}K% zqMoJB&tCcb?^o}eQXV^-+pJUeW%vGUSMPYW;(X4=iZ(aFJQc?yp>KRk7e0NRzNou$ zmsZM}En(8WuKh)~E(FI0xf*WyaeT9$P3_@R-#$+WmJ^Tcv)>j}qDyT zzTam#PL3siG)~$vNUAf` zWS`{e>2ohWSvBz$f9>(tFZNA1V_`XiMImhajlQ}3FJEnl=DPNK&Dve-wpn?d^0?<^ z81y&z4zns>y+;n?{QE3_veS0Idp-AdPN2c8W&RId+&d;Red$5{`8^GM{_}fNEbnz^ z=Vn!Lhu!Tn-F@rwe+KKK-V@*bpGwpS*t0*W`|)x8J-J<>AOGIWHSgUU9=yjqB;a6j z<0}D?U)Ky5q$XeWS*afQPE<>N;{mIlQjyTEdw-oHR;}N+;Q7+KYLgDz)`ZX);?aLwO9P! zJJU{o+e=NWvbUHDuUcOgEK{_=UU`>WIK$6`{Trli){1}pdueyy{xjFT&nEeOxmvbb zisSmN<=q>2?F^?C8l7ODz`$ek{8;b#Ju@?#o8RmfPdCjCnZEPoyU>EaJR6StdY!rK z&hhTeF}JzNiERakH=f{`Im1>UN?X%n@{d+Wj|{y~mY`r|9;b-Z2w!s`6%xdQJOEx)!;{$7msncP2ttCa4GYotxOY$E7fVr>1b{ceD_ znF^C@*hJB(-a>n)AL)L%x>d(|+O*9D`PQYbUoKv`78o3@yh24!)tx%W zz%HMEn7?;=X@12!nXRYpbcX9}JiKY`<%n&6CTvrQ`p)mmzRmx{yR4@w%vb&MEj~~E zvVG?Z-8pH;#8-4`zTbE!^VTYlCqhO?Rt7m&6hsMXO8PMDU$Hr>PQ`cPpXKYCuXM>f zyJkIh^st-1gK( zsou3E>1${8&GW7~axG}bdoGFdp9TIssAT`n9B9AB`>XBzmh6>j(;{B2H|Mg-GU&a& zrPJu#!9G6m+f7dOHKiZtCY0NL+uXg^8Pcp8fHSkM;i&wtcm{uR9CJnbk&$XFipk z(D7dNHGo0zU-9GDNA7UT9o&~U&*gd4s_ebb>@IiDJ(n0TrNH_7%*LEnu8qsX4{cgi zH{~Roz|Hzc>>DboyL7GVvv1~C@A}W+D>KPQ^Kq1wed#NiO$!6TOp`o^RGQzqp%YPPmba0g&N#<2J^xf*_#XF7H zO7?EETd_qi=c&~DfSTh)_d*S?aHobkU5Lm`IW;T0CUx%y_j&6c?^$D1@X3Is!8GfY z1#|KB!l~OQnay3OW4_y#Rpm-pbp_j^U0oV`PPin<*E7l)7(I1#p7ug))6KVHUDd6; zsx0f{^P7s|R^N`YR1MeSP@Or2)m7H>M6mKtg~#FgIaO=+{AZYyBOToJt@n6g-ctXC zOJ}X;_v+-H!g|Yyr!`sdo2BdTZZT%rCDrd4c$*G=E=phVTU@ouXRl{zhT0udUU#1< z8Xn)%e|5~WYJL5eEBKC`!>Q7LOL=G93(NYu|3%a1_==UL*KH5yY`=PLiH_lc&7OWM zrB+DDCTq{1bauX-o2hT(OaCc4SHm;jzuhJ`yYfuht}C@Uy{aNXKB}|yGxXhZHXiDG zIpg~Kz~@2!Yu2u~w%>QdrO4M>nK{3!9_Rjgl~TWN-|V{)K}z=}g*|z8+HrP2j=2_A z-0)4bx#m~;t!=eWGZycPzMG{ga7C@ka^-9x<%*OVsYeXOY&b__u*6O|oI|6R&ele`x8d^G)nM! z^S63!*SEaA^#1puGUqt&;AqV|Wih{7%IC9a9!XHvu9zYlymt2C=;hPD)vDTFJHA(M zyV(x$Wjl{M>W1nbDofh5qmg-+Lh{|t-|aOkKJoic z$oo^c#$%<>Dy1H+6$hBVF-IL&`xM*UvCa2miK~OTIe$*BXAXd;E3w$%KYHvSfE>EZTY_EALD)bVjLwjGd}w#|e2Z_pv+^y9d5+&(wAz&|ifbv0 zyG{MC_9TuUscFFv`&QU5{}+GfU+d4N?Ol~;=e)V~^2mg%E7QBW@2IHeuuEpB98>Y1 zsxY6Yum5tbv)oEs)5yJ^Z^X8ROJtPuZr^gvdZo{-Ob^+KADzsOI+m`l&Jh%5#A$ zpVLLIzP(+rq-tTXtWRLbyl%~a11oCedfQdZI8JcYU9);VHC&)5e(~DV+qawYw*Ls- zbw5-!CA2B9pwFv4nA<(*1=BGp^8~{L>1YHymhG`& ze{EcGTf6V%lhd-P-`;yHld61Pzj$@)qM%rkvAheY-6Cs_D7MHD1pqt$LMM zUU4Mw>nVdn$3nZb+SAyaIE;_FFZ*ZTX8q@OeQuO)c=cOeSM`q~%f8F?-)nuC%(U@{ z!|Dy%@(u?cyz;;75_95Cbkx(A-=}|DI=d_&GWQy{>aF`#>t zb|L>67A$I5Vz!MhaLc{&qn{_f)Csrh%$d!UxjOT4XK3uq)n2Jf3x?6bh?JB?L@AX(&)@M0Qn0bl+mDGR*3Z)V!?eE7) zZhU@GM zj$60>s(GsUtzPw=ZSzU9AKT969^0$3HF#xcgXhHnwfnIcz((<|$DSnc5Q3#n9GbALI1p#DCyr?al^U9iIYvfsBaJNuS#y;Sbs_04v- z&YJmlR+Ef4bOh3;-`yRpaewBHsM`mwpVEE4RcW{P_N4d!876imoplcHfAV$ut`o{R zljm#3SUeYcx6!2dy6;^gMW$;}^EeSLZ9qkI0dv)|JvEt~XE z?cMUO=fR@tcm2IBDrbc-?`B$lPkDn%ZA0CyDHZWkqGxXVdT(}d)C!?2)xLQTMRdQ4 zY_8ro>Eh257Lq(W6WioGta^U7cPxJ-z3Y=a|7G{w#f!9cuQl~4t@gjdkj}B+P?W)A zF$3f6#~ULq9ecKW$_uB%v(LJSa_7J84R<~9r+riIhv3VOd$qE()|O?8{ykqcF?D5I zhJQep3X{hbO-rE?1p$uxwrcO9zx`+U@^ojJ+r^#r{CBLgHoEdUol8ntvSPw1Lj{&L zovjM;jo*42KYslxzfbq}=l*TxD!G{pw&mHbt#g@V`NaNbl2TP0&*@)}|1+E}3+~s7 zNH9#jV*T>+4Ba{P=fk6)&YQLHTk9vOje(*{)1s{E{ynmIvnn!KOZg<1M{?sNk(Vlo zZ**--BBmKCbMqYu>(+j?x_h0B?O~hx{IyY)Y3ui2y&C^o@y(&CeeEwBi~r4tN?^0A zp7`nLD%W?P&KJ$?^U0`M{-1$E{@?R|r5Eo<#iXCGSzfX^>f73R(a&!7&A%)1;oL-t z*TqURi;gfHl(d>=TM$ztepYl(f!X8D@3w7xua(_)ca6b`2iKzKtT`Go@j~;}t6g9C z);K1yzwcexF)O(=GMOcZSDN+NqtiUUXRXu7)I94O>-pwl&w0OZrffEl{d{&Yw`CCEv=Vvs&oBnY7f6H?AN%F z`oZHM%cIqLyXQ~Q%G)}vySDV?%7F95Yr2>&TvX(#KJ}krsqxjOCdaZv>mnM8q&ydF zdd{|G#~YFL+bweMcPw5#N!5JzAJ5`GpC2iI1CH@Oe*5!p_x2OV7X1Ag9qt}-+G3VC zqw*w8MpgrxmGa;0Kd+v9X!@zWkGJVm*GW|s%Uxd<5~;3!CnGsvrR0Bx2IJp9ete!A zJn!w4n9g`n-espnU2A<-`m(ABeydDTUneeCRQ%)f`Xx_3eB0m7ann~fZ|}akT~mMl zZvE|QQg^}PiOC*2C-=hi<-QsWqN$I&tM8|G8%lM}n#9n;Q4tdE@!Ok2nNN~89hr}D}U!KbmD zVaf^y>{@<&MyCDuW7bFRd3Whr7;Dz8!woA8IIo}WSnT~pz)UyyPvA!Jn)@rioBdt3 zGbDF&$j9KNMq<6cvGjF}IQn$ML>fdGNtIvwvnKx_QwyLfP z_pW@|b}=+i+Tc*rWR;1f3<=Bl{5)^zg?(A|=-BxUvaMvl+t-;v*dlGkj z&W~e@qO@I0b$GT_$Ar$_7qvcV?wu>1!S*G}cLlXJ)N?r=(48j9Zh57rnenMW^MWh$ zmS0|;%G|!)YDrmS-a4Cwd!;W3U-@d4myziee{1{feOJExE%(l4vOPReulPdv-PBSC z&CG|b_w1faRz_7dHr1>;+2FTU?LWhVY}Lz`Q;Ff`Fh3MCiyNlZ@Cf=)5 z>pp(#kmpJHrkkI8B$|tkurG@D`NMjG}Kc=HpMb1(fNv)j_^j7Z--vlcS_1M7w*65 zlhdoO%N`iNsJ_1GZfvp8t2Ao z*B#q+W3TPmZ5itSL@T;Z1`7F#8H=ou-TY0Sr@B(>ILi;+o>@!JO3TGDJUeH)vv4U_ z^gHgf-q$KdO2Jppa~hsII%9oW#SQJBk~}jG=0@*Y=P_w>v)=4$UGs!(ZJRc2Rh%%j z_eq;2|GDA|n^G#zaa`wTko*&E9a?hl{ne7t>6g!Q>Z?TPd_NW1q`T3#LdZL3#o9{d zE!px#7k{Tl7(I13=QR1d+;Jgsp^ty(eLlJSXq45AjFs!fuQv5+#W+gabTaQcK8Lw| zO5I`QHVchVc3 zc-x}0lU7&1$u9f1M(zCOm7(t^99ib6mA(1TsYLmc6Q{9;{y4Bw$7@BJ;IU`-qF-N& z*SfjZWWDaZ>#X_vv$iRhwcT2^#5UAX;=3wGyyTB}fd(C(jIqhs+ z4W*?TM;0t^y?Mk%c+SdC4#yZ6YW{lV`TpKqcJ9TFo3Dks^MZqpT=14DdFZtzSNQVA znjI6LWgMC+e{F$)vuuQKaDS{!d$eh)-0|qCvu%6*?7{`Ly#+SJBEz3+tz9 zusSAR=dqelI$ivusk~v{f*YpW{hhDsP22fWyg6g1*7;a-r2|)|MTZnzzI0jB+^3LUkW%b(&}f#%{X}u&!n0M z>4D};xc_!mY&x5<)zMV9wGq0p;Y4s*|<&%0Uvu)>wFA&_Up&-;Qk)d*dTkBy}Jxjs5GrE7nI-(zc zaC869Fh7WG@jH<%dC`7XC**foW&66iy6^PQZYrJqV)2W`3rl|&MHni2$`#+3W-+0( zd0)q@7F(CA1yg_BRpqyiGy4+!_Qt%WVP5aHPKmu*Bq}gH>A}K?uI)QQJ>0Ym&0kF~ zc3+ZvzU1lO^E=J%?z+2sjrE=5s=lJJ`ImijS43R2J$L5tu9dy9UUPb;XgD?9a20%K zA5^`4(!vFg^S!oJzq@qn$?pJvVdJSe*ZCYXbIA+0&TC4i@ud6ei zeaoJnSou0zV9ACX59%(s)cIer_|LHF=CMG3|1D2WNFQx~$S1z>!?p8^7i_uxV$tri z{_-EQUTk_FY9L?!S%OVNVtZgKvq~$=T#sE!KLP`TZ)ZGMvfYtaS63%nM8H|XrBfs^ z6x;=8K5+fMZ@sXutc}0UyNO4orj?g*ty+9iWq#uVvF^h=wu^4gjCj4?dfKjex3jk$ zxP0~M75k7bQ%RNi{~3zv*mkb3-I4d7;iKYnm2Efe_8mVOos{6ylHe@nVZ6gKZ1t2f zj(tx0{R$rEr#-I=x-)NAW#06z3fFnEQ?phWUB7ceO>13m+nVX@|C-VTmleG^Fkfe( zem-BJ*!>588}n{eYt1?C?qYpDP(ki%&Kvg1rwQ!oIs9)JLK(Cg?Dlt@_}h9QFXn)p zs&VbHxixI^=N|sad%<_OZoz>C-FjRGI6k9_0BhE=(+ z>U)LT#ftuH4$AM{x1N>fI?r+2Ll#AHlFkqQ`o#J<{+=1KQPMrR*wpWDUX{<<`$Egr zKb#5)eE(YB^VOpTWqs9MPR245MLvHG{2I68U;+cnREN6RZ}v+cezZgWM|scwX-0XH z{{JSQcmB`7ysK~i>cq3sGu}(t{_6YBa5cu)G^SSa*P10?1vlSnF7WpC-Io)v{-agu zq1u#4F0DuLUnV&e*eDBrkTp);`f$g2wlfbUFD0fKPji#9PqJ<@W#2Serg!4Pvo}q- zJ{?~+qf))_>fPMgi=J-teWsDH&)wZurfru+qu|%HPd#?`)pz|}{Pz4@->9s$d0YQB zZ_Jg+-lDrZJM+MoZ@WWM6~l|(9i6dzx8cvUvUK%N5w8<2`wAwN=iXX&csf&EpCQI+pIDvx4DMk%NR>eZJND8pU(svi}**WTtG5e{#n}@Wzu>dpwmExym#y z7Tltx>=wk+$nlAPn*HU~rmM2Ih!h@Qm-S0&snVUGumkcEaa#>_Gmd|IFX1mgUrK4y zo-3F1Me-(!FfB6Qc4De`gV$w)*VZfSxOLpz82(IU{=7=_fU%g#oprRSX}YDVDBRt6=CWhm;U*Sh zbGvr`u|GVGPicFMaMo#C&%Hidg|B!8zh{tZbYj>cJL5Uay!#ehEX`|+`^uKg7Ea84 zyE`!IyJpU`8=7)!CokV~aY2yNldth|;_A%I>XO%vuT}2dxW%-oA?m2GQbIB-!yfb1 zqT7q2pDwr)_Dgyx&tsuW*Df#lXz{npK;b{biK|@C&S~uV_+0l^*>i!=@L-MnN87w4 zmWCLf`1kVFItG)|*R1`=mNzn(8Gz zQ~on-yrz1xTh3TzckRiAzt&mK^f}sc>The^68>Euf0cg~lvjH{hjeD?u=lRfJU*4okC!?Lt9AbUdSpLXymK_2a;d}H0*H4*H_-vIV&ET zeDnTPo4P@%rNii1h>OG@ca>Fz{}~?D@i*ymFFMsTNo$vd;?y=r_7A0TKkLrwb{7=h zd)W1vJ3Q)TnC82!g1grqI2N!3-@^3evnCabY~1j7_W5%L z^}n;&?%B=QE-rH~Y>$6a;Hi6vtHMc3iE+}$Q-?fm2r>E?{%NXdbbMdE>HEHQqQ9HI zT8GBxPoBAIm9&Bz|3l+BT0KgQzd{%c8`n-OVV-Q8_;Ih;jTQa5*Dk)>z16AFJAYbN zAbZ*exwH~4(K@f^8-IM9Xt#fW?FD;IUa^$@neC^L} zX)f3M+fJ7qyKR#181NfAj!m#h?uIqt$-eE7+?mV(J z?B}A@+Yhp|HYPVoh0ABi`fJt(_z(YE!=+N)2Wo(p}{@#b{S6Y&l2ZfK>PDQjKU z_5ALIepS9e4)udY`y3CRxNcYLbvf5@&+63`mvd#;r|k|pC}U!Grl9((hS4RJ!Y6Lc zZ%%xEVt6iI>QK~AGcBvjtff1y9#?$RCS-e6ey5yB&wqx(pPvfXr%t-N zF0aY<_ZR;XczNZAodvcqc{iSIzELJ?Gu8ZcF^9_9#bKG*X+;dJ zp*8#OHZ0(I@}TCy^Y7|QYY!fi$&cJqS@qK0wRlpNg-%$Or_Uu@pUKMJ?@zEh1hLHd z8gyXdyvHkegRV`tVAyMQ_MPrkd*j@_?VHSEw`nP-HAz>W4wN*$7J6<~wu;}k?qO5#-7>wRR{tG`ncdxgvYxK~$$jq&cZVPRbNgsurt-JTdQ5J6!?|{*vdrK8 zPT%r_$(OG-nj52fCr&l{D^nyYabzXel7{~b1+NbLXDBFLT6M5JBc$N(G2I^@gRh?I z|0A|E)912t(CT+gdmU4qFKAEvw6=fJf=B7@va@*KRsUM2ez<#7cf>o@rHwiO=02>l^R*6e{0L{vaasQ_?C9Ls!~sS<$~o) zmo7S{yeRBs>hT+bT{;RWDVE1ysyNK4-)reSuj19w!MXFrv-bb&)#ZlwOMFIzmZsi@z21| z{T6ThduE)>{uz7OJ96eG%hrvvY`?FcH2baf{Pco#=QiZ-zWVLDXJFp4rjB4|_1!j? zMP+9=HS8A4JLeyNQeA5Gl=424*p2Ryrw#5dUpG%UJk@MV#jD3cVPQ5)BSc+UJmo^q z@rg7}mAGFnzc6?4)@{9?o^R2Q?&Ce|m_KjP_3-d$p2EvlR8khIDza!Qv;0&La-U$j z=EJuqH^1B|58d-1jJZ_cv2nl`4cm?dH~y?>Wm;+x%_RV=!P zf;;8R;;()c(x3RbnI(0~{P~hs&U7>EeRzHxt*~)>rZO6m|7FE2_j% zV$rq@JLYQSubcif_LuH~(CxW*zt{%zIZiU^!)FZ;$%cEgo-)@v>1{}9!j=e_jozGWFrn*SM= zaJ-f_^WYX*kaU3YNtVQy&l~e<)}9uxi@tw~|MTX&#YtY5Pl)IQ_8*K`qC=eT-PE&KJDZ(prWZ0FWhEehH*xxDw`{P#+hR-0<<3O_AYnW*+=?q0Dg zx58%o+GsN@T;fs^#Fug`wv&O$dz#9Flu4zGJ1y01j$E6zaqX3Bed-JBqVC5}I?ENg z*W_{-H|MeyvA>>IKaLOmz3Xy#sNI7*yH{1bHoJ4;h1@*Lr~h13wlT3p+|o%&4H2Gj zMEbFKeXi}hea{1LuRm6A@$Z(>zb}`41x+3HM*M2LWAlB#@`L$)sjG!Hr7hck=fRX! zAp(Uewg-M^E@qe+f4*LWjZr9X-j-Uw*p=%F3Z64dzLS1kumw1e)?bfz{Ac*Ir=H`_;?J_~PKsWSjrXYKUimxi@XPa;uigLha>JsH zZ?8tJo*UqqZ=T-2W;<7d;r#Ov*Hu(14>kEuOHZ3xayj1mk&Lstz2?tIfBlKiPTKl^ z-*AJMtt(pMnu+OdwON@fvQyCdi7se-SLeU+zsmQ1bo=I4^X1=K_t>lzzh3`kwW{cO z@O!Ewo3+cU2%p6t&OAR@v@QQ~{|asS6>}STKb=TkvMcCo+vhB!vPo?<^>>clP?eWZ zRz9rFs3jmFa6q8W@w&a`{_gkxI)D1v#XWeHUz~F16-)SQsT60QO%}SG2W%C~m~YqA z>wegAFf@NR<*BwabI9nh&k*mr1=kedu=l|k-z5LIGd6)YhE7u9{`2C;3^n$PH z%EEMw2+Qu2=!tMq zxOnL0t9=*u#whd`2Ibx`4_$XWd-_skp9L4aqPJ|` z3OliSlXIk~!Rm?>A#cH1noL&v!yQgVM(|W5_OsMvt*I)zFTUS@&dSC9!bUUaUIzFKyB%^kC~dsgPG-Wi>=Vw&Zpp7p!3RKGo5-hWcU zUFX5X4^@A%FYdGTTz6sJ&d{}+*l(9{eOtJG<*f9`S1NAY28~Wr&(wMH)V-;AJ)!iC zU(C%tTX&na?#{@QlKNGVt+L~a!kM75HXE0@DqQ#C9B#ax|8#zD)<1c2$X)-aWt}4!%CYfkN(kc=!3Pa) zMs|gBlPZlnzTMY}PF{Am#OtfbPLtA$3|mE(JhqkptIn)dw47O4L2!qvOOUrp;7Msu zG20_NoIZb2>WtSf+r-GU=5Oh*l|32R&hD-;-`>`}eVF~^ciqR>oN32JO{Pw`a@9=H zP}43s?%?908$9!invS;BOis`h=YOU-Y&iaokx)zY@& zdXX>dWw?|RK0427tZYA*uX%C(I{9RUz;RDcZj;vTFB~WA z-renBSC;&{_1Zg)$I<1&InjByH_b226xr+Rtq`_q?w*s{^*et^S_G_~!?>1xO3t0& zO_f5o_f@jJ7oGLxAWzAwhrO9SPgOD|N(En>TCGQ=1%kd{9zZb7m3~2c{4Nn6i518W|ue4^7*?aE&Q;iN=TYvPIm77 zJL}W-M(cjOxnj~SO-+~Lhx=a{$a!A<&v1Xv>qEO|XL`Et(Vr&$cilt5{D;Ss1C=Mv zNi(o^`zfE9w?sy!e{QhtLDysNznbh8@6F7;dOhMy$mZ+!wO*%fUs0N0L0-Gpv1WGG-UvO>!1xu~E3|}Mg>^1YU<_=s=HJ?We1eC4^J?eg zQ#ZVc;&l7{>r~eDrTked4!$&ylnnm&pP~O)olVb^9cBHwMaK<0$}esWzi=sNOSf;q z%Fth{rk6%cP)vL$WIb<(^6`mJvhSonau??>u3SAOe5U=q*N^Saf7Cho<3EF8MnQG= z`UNca+PA0r{y5a;{q|*ok8NnId+6JLKbZgBxY~I)`dpmu=J3eeXMNQfq61n!SVs%Q_{^G;(4Hpdq?uP5E zdCq;b3 z!?CyjUYVM@>U?y0FVYw-pEL1ym-ML#XP;{o`n@W9>N>C5@6@(?FJJ3QZ(B8?B7^C#IclYj0Jt%WRH@e9?W?FaaD#5TXS59r&I_1?GhTqpW zH5{DM^2*PTLx^`d-^AY-Vn89x0ht-P`~i^ z+q~Ji?_^h94fGAp-LcgrHdUy4MQBo)8~bXFjDx3s{Qmq?YV)jTHy@o%tPr~{yzuLd z6*oRR&+RYGHRCY7a8)$KthTSad2j5p``cW;?5-}3tcpr3PxlHqVCb5r@^jkEKk5G& zD)t#RuZ~}}@U_R)sPgmT@wuA=Z#~)WAF2M)vblDX+m%nQl85Hqe67aFBD1Zk=h@j@ z@42zBbE5RbqmtdDW1V@viah0#m^(o%ZuyCW76(7s@hy|snanR6a`2}6yoEc%^K$kX z-ThL!yXm@T-Mq7*{*F#rqOatZMMya9yKp*Tv-%_h#*+$_SKS`hSw68#xmB2Rn#Um8 z%%q%u&DtHO*&TJ(G@1QN{5_{7Xrc1)SBfWi3{`*ad-yuF?`rkktLC!`Rqs9b`eOES zq1^9~JrkC!mYMr!`L;Hvy`Hjmg&*yH6>aB^=ghSTX0es_fAF8-$4xo^{|xs7K0cW; zyZNy!kc&8`DyJm=6+k9x3$w&tG;vI`C4gVl!e;*#VuT= zvYiq`La@_Tgv283(wn!Awo5ie@I<5TmSFm{pwAZ3N~KdBVLsvFPrM0<^S`0LYn=b z`uD3V?!DajG`nxn+%Gmu>ff6HQ-NU%YbjZON*?5x+N1 znN{4cnB@M(|5ulO-_0w$FPksw?l185-n%pD+N29HnJizX-PBsbZ!)(%GKE1?a7s+; z8)tS&2A=H2k-2)RNml~5{bVjH)?e{sr)O?xr;NEo;@0SYGoNY8urBGFVdB|d)DyYq zNm;(dv0W3_n{K=9nZ988!Yx6U11<)+DL2iUrP^gNp+;*}1B3jA>&s)V1&6M_roSrw zkHp5KTX+0t_|K5>$?l0G@2+VaJ@1_+$u%WQoXq6>o$Mob_DLI8=(hbKbxU*O=9+n~ zPGqfnu}k}S%GRAHCLZ{#vp~Q_!{Z!>%7g_?MM~#A_-zPTv;^R2LRDHDXJ zooWgxt2SLW>(ih7-n7D==g(4i-Fv@4R*K!hjQQPeSLx)8>|kG$t6nc=WiIO=h(F%b z`C{F4IWl`+Q1JEJ>kMpdV|85;AJ0=~jg<6n;!qJ>pEm2}y5bm_%PvaKx909I_|MQ@ zZ?Lp>OV~Y&^or0gvvg)kP5ATmQ%#85f~o5NHfgdv5t{xuKaacY^~MYL%ATf}bH|=z zS+Qhg%hS}}Hb?o7KkVEOUhl4XQ?0L(Yd!7uy%58gT=58>PytY(b*e7(YC~$`QxBF( zsU>?NcYkMJXcuBreCn%Fc;T`qbC+(6mp>FFbT5V3!u2$xN&O{{i8VqgzjE&EyO}8I z{@YFMmHqt8)^*fAwztiF*GR>yOR)r!-Z)SEcou$CH2)uZkq(oA{q( z|Gs`k`!FtUM|uSJuz){`{Mk7Yj>}1)x1|bf9EWhNq7AgOmEm!edX0Y zyC-Sx{f~cztG~ax`=-pz&E;Qpc+>aYUbuehT)C^Ekz8R;uZ~8>DLnbpf*ub8*S4Nh^fZKMP*xy;{FqdBx|RW{$l44_|Ivog5lt zHuZIBw z<*!OsQkFK{k_)G8C%Xj zU)8|0LO#!D`3j37e-+-6w@(Z2)O`7CH(R%>dwc$}dG`0scio=$V$0Pq>1Ii-OxIHt zEAKh&^_eSpfX6}3&8F}E>T?Ss_wu~Wy)I$GMkotq$tyu&ym}3+;?bI`yN7 z*&<%3-t+3gT`>zb-`3WCJ!7pY55LVB_6Z$JXZ&ZlA)77ZnK!LHF?#vB{-ve2_nz8( z&f7cSS@8V#ZOs2n^F@3mHhDc<+txpC$)ASx{~1yj+I`@fm?Qhzewkh7?c3>7dwqhP zBO`TdkIgcf;mxw;sq*h;afAO1x@xcL9=N}F`#7Af`O0*;I3LaJ-&w-Fx;m#xtbF;f z;LY;~iHG|C?W<$+@2&XBe3|d)le;hFp5EP3T731llU0Y(99LNn?hE1xwg;*n)*TOU zILIE6@+I-;7SWQa)p-{SH--jY;k=aPz2=k9;Rm8Km&DJvWDsm@GF-LiKZEp#;~%y@ zD%rcgbi@5n(+lB_B@36YSuizi>FUn3HrF2|30xcgGZZ*pzaN*KyKmmbyrm1b9oY~R z=rqAm=#RUUMrh#Q28Qg*>(=g)xxMIEp6uC-TVW^ltQS3Z&Ro#_H6$!VM}v>^SVYep z=Eu*EtyC9zx9eQS*Bm`fM^V2ElQv~fa%SGYo%=9HRMt#ob*-n1`&Fkp7TKh{I`*so z!K-_Dn{K^$yImv0mt~W9U(q4+cLD7m`0wny-{8hk_Txk8{*T{|Z!bJ{cFWt_B85v$ z*UeNi(n;ib$9`X%@o(PEr23-LH9@e!#$}@}D8MSn$WR{|qOh_m{=&wYi}ut{rQ8amhkm8k5Sh-_=T(uzsgl?N0W0#!c*h_umfU=XzV+ zdb-&5(Z9bME0ct-pVn{r7Jg{a^S>MT-_O7E%p`Vq?d?CE!8uR7yk5sX@mgsVqpa~D zrSHIep5^BxQawI#N?h50a`vpnnQy<`+9DoRwYsFR(`U-_uPNy(?dMy)=K19G;KdzB zsTDshCZrrop4oU-p}Ds2_3JY=E5#K~i|Te+irr^f$;6+}G~JS6@&}35oVp+O4Ta+B zY5_M-F24OG!gV2Es^zOW6 z=IhmRq{~ipE?=xAMqaM~}umO+9rzV0RN&$!mWDHr2`h8IIN8mb0(< z_v6~??HTsxw=cOXv)pF?0iU^#mm8I2-M{^NjlHBDH-Eoe=`)sMzqn_{Ga6zXe*I^- z{bKJuzchW`4`4~poZT|vaFK^3u@p|d+d0JhSbCqUnpLWu4eNAP;8GEa)Z{;j` ze~)rWhsthG%I&(@v)}W}Bgs$?$%&d19fIyl6fLP#sbS76d)hWRJ7R^d*wWM`+Yf9w zdgtj3#$Pl3Ma-F0uQGX6O?Zm8;nc@dw>s2byK!!wr%%7k+EvW&R_$NRzO=nKe$DNf zuQa}g-4VLHbXTC%3a1A?hnY89?Rqfp#%qORb*{Uv8hj1joc-fJ!<6}xlA1g--ktXM zbq)4Z$+%+rQZnGuLdpE6$0B6}+XDCu_O3JC_Sm<4d(idUYF=GdH-f4vCx1C9y&^U7 zZ->IG%O55jlqgYZ?o_G#`fJ^fA0HiLZroy>(>DOcMNuX?){hCzAU>p$IwxQXMd<;crb5DcHfG(+FpC> zzf75G|J;7tvf5yI-;(lk=3fPOmX-Q?9sL@5H8}kCB!dmA7Gaa-W&D{qNwtNQS<#RG zAk#66p9ileW(Q?@)h)5OT=1^;<|cEyTieYZF1ei>D4RROSIW54CpFbk{l<-NClZQ0 zl#f|wdp+bU+kS7m-JOMdI(4pBXRg^4elVtXnW6Da&Fib{+Ik-uidZP`I9AiTO=^wY ziVCMqwP*P?ayc?@zA51~{nVwj;bhnbrq^aw6O~z5BZMRtDXptv+-7r3eG=;p#U0*`#*N)$`stueD*i>VrZ1BJQ09pqXt`Qw^@ z{~7LIvopLE&U%|MUMknd3^wd4KzbvKy)molw@k#ZN&s`SZe!q5~Jb7y6veuV7 zew|l#-@5I~lHZ}W(NEjIE=Xl_vr{P${-Wsk-gef5h@U+5f{#?T3+Z?C-g`H3^X|D< z{spdFD^j^sq0RV_{qmWS{5~@_L6`@8A;{eR4#pE|jGxhtFz zyTtzViq@IaG^!^*m6qtX3u){4$+76!E5)z6FCSfgC7iT(*UE$?cg!Aqy78`OiBx8X zq?@NS!$h9Vy;~2esO)k5D zaFn=-*H>vLX_a65q^#-YixG-p~IKWWDV7l<` z@sIaXHU{?0D7(6D(PKS6_q~<^M>zh-H6@wu&pNLEXHQ1bCq27$CidU9$j`dCYZ9oJ zQUvXBM$Elgv}$v1^x4{F605XV5_R^S$MnZC`aJu{OOp!O^$$w8o#6^>*!c8uWRS(@K;M$1XznDKDW4LKIgA#-rcupH*2~#D4719 z`0edJ>%R;WgDRhS1dDP+GtOpTt><`1J;1M2HRnHrTfpu2TfRoWFSdKQEpSK4w&Tuk zR2}7+f?_-U@3I;92)Q|Ky0zo+9zU54$6V~BH*b4=vRe4fHGhtrbtkO$t%!ZI(|YH( z;|h24Lsp;ICVMn5>d=Z$*8)z;Ox7#BWZ>p4-}t-c=Lg;kUv3`SBx!%HrZqh)>%z%D zY)xyqwkk1Bws!MxS7}%{eN)N#rh7WmX01-kUVOa7uH(!qsHb#WTvkRuvp=5lZ#Hd2`0osts@I-nyRoem&+j&y>YFk}>CqMINw;23T4}U8 z_>82ZB>ST0=TA5PU=CV#?DkdZ}$H{CTN(+^zoiJjctEdZF*k4s;TY1 zBlG#tVCxo-JJ!<*N05f3EX_@R7bp|Doy3d_;U+-Pn*}Nw| zqn_&QY4-KJq0h_9`uO^D_1V2o!f);HPQN;J$&#>&xX%`UCfTp(zfzav_F_kQ`qeuN z7cSd+G5F%`%!f;sEa^;K-Xw8IC2$2}U`PcQ0|Vm&#`S#HZhc!jb^F?Hx@%o|cU{eH zaQ61)IJBt$-;&9bBA!h0RGH+rY1hlQ;&L*sZ<=N2$(cAUPEWjg?%nsi$M=1kjszA( zT20>RYjQa*w+vL`l8hbVR_?X*K3yUrJv%X^p7V+CDwk_rFYezqW#lYmHY?!I-zo8L z+KCU6ear8fCLgL;7tVb;EzWr5*`G~TO;$}N%9}2E-1_!ur&HZbTW9yP(sj#j?tCcL z`*&OC^8L4#1WT7YUpUuQ)2hRf`m=Z648 zw7&619V5@8?|mQ6WIm9IZrir7aQWt9;qy=JKgiyAckktu>~rcn4!^ScU=D$v*JI)+>$nRZ{_5)cMAML8+^H=-is^l zzPEkev*f9JV$Z5-^J{&%(*0(!=HKq$%a6Zb$sToH^6lX*+gRJKD(yP!?JR$V-O}ze z->2vQ8RpK8Hd|U~8Lbw5ns-Zv{nPwi_b;%vab;||>}$%J10GK6`}w)Rw!izmKv3|N zE7$HPOuFf{<>#CACVt#cnChv3LB%spkx>g1~08>fsdR}}1I|JI}Q zpW)NLpI1(E)~LAgbmiwkrIpO?^Y05CXg>e+pUo2wsY^enT{XSltH0lQ{+b01 zF`5QD)w0rr7s$U$e*K@}?AlpJ%ewwEByW#-Y4|2)rP9i7cI7o45|w{`SZz8XrzT=l z&spq$eMW6%$4_0hKE>)Smwm(5UIwj_b}8ol^mRwVBRQ^#TIOrta@~FXIDgY|4~I8z z9)Gb6J6E%*$*S+Y+*%8F&iS2BI+PY@Ot*M(ZA;#BxrTbjmE4{xJh@ZXe$H2j-|PH- z=a1x;RsZH)=D)r7yNb(}kP9j8%ff=cr?YxB&y?2iT6C&3X~*r}H#Yv8UzA-tvqWUu zE74D9n^j%fWtUEEke%Cc(n7w0fq}8(p`FCWg0fS~H@sbOWU_%!Odj8iX}f9?m*mgk zKeWyx@bURc<$ohT-ZNx=l+X9@o8e;fb#3mY6Yr&e>OXbYeCv|H36=ME{||e)i^AmMknQbDveSPw71^?Goi(X#Ro9}-mkaFf1fA?kdw0S{?5#@gB;)DHKdmy? z7r&YQ+qk>_hx^~$z#=<~zoC~d`;$Tc7%$w|}>ui*NX)Y3yrqHRuI66%#W!3{|tgGc-;;oN?-uCXN%zQT)rlXIjK( znDm@Ec4J<|lRtA!u1=|cbJPBL`d|Gh`JSqJRfU(!X0450Kj%q@io$~y3;U0&`v1v! zZ2cDdpP_7BU|{L0eXa9$1>UQ4^gCkG{!V$baizV={ByIiZ-3zbclXi0iS^eOd;e#+ Z+W&0rvsszz1(qzEmAOa_57z&G695i#)=&Td diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010.lt deleted file mode 100644 index 2e510ebd9e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010.lt +++ /dev/null @@ -1,233 +0,0 @@ -# This file defines a 4-helix bundle coarse-grained protein model (AUF2) used in -# G. Bellesia, AI Jewett, and J-E Shea, -# Protein Science, Vol19 141-154 (2010) -# -# Strategy: -# -#1) First I'll define some building blocks (A16, B16, T3) -# which are helices, sheets and turns of a predetermined length) -# -#2) Then I'll copy and paste them together to build -# a 4-helix bundle (or a 4-strand beta-barrel). -# This approach is optional. If your protein has helices which are not -# identical, you should probably just include all 4 helices in a single -# "Data Atoms" section and don't try to subdivide the protein into pieces.) - - - -1beadProtSci2010 { # <-- enclose definitions in a namespace for portability - - # A16 is a coarse-grained alpha-helix containing 16 residues (one "atom" each) - - A16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../sL 0.0 -2.4 -2.4 0.0 - $atom:a2 $mol:... @atom:../sL 0.0 2.4 -2.4 3.6 - $atom:a3 $mol:... @atom:../sH 0.0 2.4 2.4 7.2 - $atom:a4 $mol:... @atom:../sH 0.0 -2.4 2.4 10.8 - $atom:a5 $mol:... @atom:../sL 0.0 -2.4 -2.4 14.4 - $atom:a6 $mol:... @atom:../sL 0.0 2.4 -2.4 18.0 - $atom:a7 $mol:... @atom:../sH 0.0 2.4 2.4 21.6 - $atom:a8 $mol:... @atom:../sH 0.0 -2.4 2.4 25.2 - $atom:a9 $mol:... @atom:../sL 0.0 -2.4 -2.4 28.8 - $atom:a10 $mol:... @atom:../sL 0.0 2.4 -2.4 32.4 - $atom:a11 $mol:... @atom:../sH 0.0 2.4 2.4 36.0 - $atom:a12 $mol:... @atom:../sH 0.0 -2.4 2.4 39.6 - $atom:a13 $mol:... @atom:../sL 0.0 -2.4 -2.4 43.2 - $atom:a14 $mol:... @atom:../sL 0.0 2.4 -2.4 46.8 - $atom:a15 $mol:... @atom:../sH 0.0 2.4 2.4 50.4 - $atom:a16 $mol:... @atom:../sH 0.0 -2.4 2.4 54.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # A16 - - - T3 { # T3 is a "turn" region consisting of 3 beads - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../tN 0.0 -4.8 0.0 0.0 - $atom:a2 $mol:... @atom:../tN 0.0 0.0 3.3 -1.44 - $atom:a3 $mol:... @atom:../tN 0.0 4.8 0.0 0.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - } - - } # T3 - - - # ----- Now build a larger molecule using A16 and T3 ------- - - # Create a 4-Helix bundle. - # In this version, the hydrophobic beads are poing outward. - # I oriented them this way because I want to place this protein in a membrane. - # (There is another file in this directory containing alternate version - # of this same molecule with the hydrophobic beads pointing inward.) - - 4HelixInsideOut { - helix1 = new A16.rot(-225, 0,0,1).move(-5.70,-5.70,-32.4) - helix2 = new A16.rot(-135, 0,0,1).move( 5.70,-5.70,-28.8) - helix3 = new A16.rot( -45, 0,0,1).move( 5.70, 5.70,-25.2) - helix4 = new A16.rot( 45, 0,0,1).move(-5.70, 5.70,-21.6) - - turn1 = new T3.rot(180,1,0,0).rot(-20,0,1,0).rot( 10,0,0,1).move(0.78,-4.2, 27.9) - turn2 = new T3.rot(-10,1,0,0).rot( 20,0,1,0).rot(-70,0,0,1).move(4.55, 2.4,-33.0) - turn3 = new T3.rot(180,1,0,0).rot(-20,0,1,0).rot(190,0,0,1).move(-0.78,4.2, 34.2) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - - } # 4HelixInsideOut - - - # -------- Minor coordinates adjustment: ----------- - - # Those coordinates in the commands above are a little too large. - # To make it easier to type them in, I was using sigma=6.0 Angstroms. - # Instead, here I'll try using sigma=4.8 Angstroms. 4.8/6 = 0.8) - - 4HelixInsideOut.scale(0.8) - - # Note: "scale()" only effects the initial coordinates of - # the molecule, not the force field parameters. - # (If you plan to minimize the molecule, you don't need to - # be so careful about the initial coordinates. In that case, - # you don't have worry about "scale()". Feel free to remove.) - - - - # -------------- Force-Field Parameters ------------ - - # Units and force-field styles for this protein model - # (These can be overridden later.) - - write_once("In Init") { - units real - atom_style full - bond_style hybrid harmonic - angle_style hybrid harmonic - dihedral_style hybrid fourier - pair_style hybrid lj/charmm/coul/charmm/inter es4k4l maxmax 21.0 24.0 - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 #(turn on "1-4" interactions) - } - - # --- Distance Units --- - # In this version of the model, sigma (the bond-length - # and particle diameter) is rounded to 4.8 Angstroms. - # - # --- Energy & Temperature Units --- - # In this protein model, "epsilon" represents the free energy - # bonus for bringing two hydrophobic amino acids together. - # Here I choose to set epsilon to 1.806551818181818 kCal/mole. - # This value was chosen so that a temperature of 300 Kelvin lies at - # 0.33 epsilon, which is the unfolding temperature of the marginally stable - # "ASF1" protein model from the Bellesia et al 2010 paper. - # This choice insures that both the "ASF1" model from that paper, - # as well as the much more stable "AUF2" protein we use here (which - # unfolds at 0.42*eps) should definitely remain stable at 300 degrees Kelvin, - # in the bulk at least. (However it's not clear that these energy - # parameters will work well for a protein in membrane. Perhaps I'll - # run some tests and fine tune these parameters for this scenario.) - - - # 2-body (non-bonded) interactions: - # - # Uij(r) = 4*eps_ij * (K*(sig_ij/r)^12 + L*(sig_ij/r)^6) - # - # i j pairstylename eps sig K L - # - write_once("In Settings") { - pair_coeff @atom:sH @atom:sH lj/charmm/coul/charmm/inter 1.8065518 4.8 1 -1 - pair_coeff @atom:sL @atom:sL lj/charmm/coul/charmm/inter 1.8065518 4.8 1 0 - pair_coeff @atom:tN @atom:tN lj/charmm/coul/charmm/inter 1.8065518 4.8 1 0 - } - - # The exact value of the bond_coeff does not matter too much as long as - # it is "stiff enough". Here I use a softer bond spring than the one - # used in the paper so that I can increase the time step. - # I also use a relatively soft spring to constrain the bond angles. - - # bond_coeff bondType bondstylename k r0 - - write_once("In Settings") { - bond_coeff @bond:1beadProtSci2010/backbone harmonic 10.0 4.8 - } - - - # angleType atomtypes1 2 3 bondtypes1 2 - - write_once("Data Angles By Type") { - @angle:backbone @atom:* @atom:* @atom:* @bond:* @bond:* - } - - # angle_coeff angleType anglestylename k theta0 - write_once("In Settings") { - angle_coeff @angle:backbone harmonic 100.0 105.0 - } - - - # dihedralType atomtypes1 2 3 4 bondtypes1 2 3 - - write_once("Data Dihedrals By Type") { - # For a chain of sH and sL atoms, use the @dihedral:delta65_0 - # parameters. (This corresponds to the "AUF2" model from the - # Bellesia et. al 2010 paper.) - - @dihedral:delta65_0 @atom:s* @atom:s* @atom:s* @atom:s* * * * - - # If "tN" (turn) atoms are present, use the @dihedral:turn parameters - - @dihedral:turn @atom:tN @atom:* @atom:* @atom:* * * * - } - - write_once("In Settings") { - dihedral_coeff @dihedral:delta60_0 fourier 2 2.167862 3 0 2.167862 1 -60.0 - dihedral_coeff @dihedral:delta65_0 fourier 2 2.167862 3 0 2.167862 1 -65.0 - dihedral_coeff @dihedral:turn fourier 1 0.361310 3 0 - # Note: 2.167862=1.2*epsilon and 0.361310=0.2*epsilon. - } - - - # --- Mass Units --- - # Typical amino acids weigh approximately 110.0 grams/mole. (Rounding down): - write_once("Data Masses") { - @atom:1beadProtSci2010/sH 100.0 - @atom:1beadProtSci2010/sL 100.0 - @atom:1beadProtSci2010/tN 100.0 - } - -} # 1beadProtSci2010 (namespace) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010_variations.lt b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010_variations.lt deleted file mode 100644 index 38b1b48f88..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010_variations.lt +++ /dev/null @@ -1,225 +0,0 @@ -### THIS FILE IS OPTIONAL AND IS NOT NECESSARY. IN THIS FILE, I DEFINED SOME ## -### ADDITIONAL PROTEIN TYPES FROM THE PAPER THAT I DID NOT USE IN THIS EXAMPLE## -# -# This file defines a family of coarse-grained protein models used in: -# G. Bellesia, AI Jewett, and J-E Shea, -# Protein Science, Vol19 141-154 (2010) -# -# Strategy: -# -#1) First I'll define some building blocks (A16, B16, T3) -# which are helices, sheets and turns of a predetermined length) - -import "1beadProtSci2010.lt" - -# We defined A16 and T3 earlier in "1beadPRotSci2010.lt" Will define B16 below -# -#2) Then I'll copy and paste them together to build -# a 4-helix bundle or a 4-strand beta-barrel. - - -1beadProtSci2010 { #<-- Add new molecules to existing namespace defined earlier - # This way we don't have to start from scratch. We can - # use all the atom types and angle settings defined earlier - - # B16 is a coarse-grained beta-strand containing 16 residues (one "atom" each) - - B16 { - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol:... @atom:../sL 0.0 -1.8 0.0 0.0 - $atom:a2 $mol:... @atom:../sH 0.0 1.8 0.0 4.8 - $atom:a3 $mol:... @atom:../sL 0.0 -1.8 0.0 9.6 - $atom:a4 $mol:... @atom:../sH 0.0 1.8 0.0 14.4 - $atom:a5 $mol:... @atom:../sL 0.0 -1.8 0.0 19.2 - $atom:a6 $mol:... @atom:../sH 0.0 1.8 0.0 24.0 - $atom:a7 $mol:... @atom:../sL 0.0 -1.8 0.0 28.8 - $atom:a8 $mol:... @atom:../sH 0.0 1.8 0.0 33.6 - $atom:a9 $mol:... @atom:../sL 0.0 -1.8 0.0 38.4 - $atom:a10 $mol:... @atom:../sH 0.0 1.8 0.0 43.2 - $atom:a11 $mol:... @atom:../sL 0.0 -1.8 0.0 48.0 - $atom:a12 $mol:... @atom:../sH 0.0 1.8 0.0 52.8 - $atom:a13 $mol:... @atom:../sL 0.0 -1.8 0.0 57.6 - $atom:a14 $mol:... @atom:../sH 0.0 1.8 0.0 62.4 - $atom:a15 $mol:... @atom:../sL 0.0 -1.8 0.0 67.2 - $atom:a16 $mol:... @atom:../sH 0.0 1.8 0.0 72.0 - } - - write('Data Bonds') { - $bond:b1 @bond:../backbone $atom:a1 $atom:a2 - $bond:b2 @bond:../backbone $atom:a2 $atom:a3 - $bond:b3 @bond:../backbone $atom:a3 $atom:a4 - $bond:b4 @bond:../backbone $atom:a4 $atom:a5 - $bond:b5 @bond:../backbone $atom:a5 $atom:a6 - $bond:b6 @bond:../backbone $atom:a6 $atom:a7 - $bond:b7 @bond:../backbone $atom:a7 $atom:a8 - $bond:b8 @bond:../backbone $atom:a8 $atom:a9 - $bond:b9 @bond:../backbone $atom:a9 $atom:a10 - $bond:b10 @bond:../backbone $atom:a10 $atom:a11 - $bond:b11 @bond:../backbone $atom:a11 $atom:a12 - $bond:b12 @bond:../backbone $atom:a12 $atom:a13 - $bond:b13 @bond:../backbone $atom:a13 $atom:a14 - $bond:b14 @bond:../backbone $atom:a14 $atom:a15 - $bond:b15 @bond:../backbone $atom:a15 $atom:a16 - } - - } # B16 - - # ----- Now build larger molecules using B16 and T3 ------- - - - 4SheetBarrel { - sheet1 = new B16.rot( 45, 0,0,1).move(-4.762203156,-4.762203156, -36.0) - sheet2 = new B16.rot( 135, 0,0,1).move( 4.762203156,-4.762203156, -36.0) - sheet3 = new B16.rot( 225, 0,0,1).move( 4.762203156, 4.762203156, -36.0) - sheet4 = new B16.rot( 315, 0,0,1).move(-4.762203156, 4.762203156, -36.0) - - turn1 = new T3.rot(180,1,0,0).rot( 0, 0,0,1).move( 0, -7.8, 39.6) - turn2 = new T3.rot( 0,1,0,0).rot(-90,0,0,1).move(4.2, 0.0,-41.4) - turn3 = new T3.rot(180,1,0,0).rot(-180,0,0,1).move( 0, 7.8, 39.6) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:sheet1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:sheet2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:sheet3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:sheet2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:sheet3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:sheet4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - } - - - # Below I define several alternate conformations of the"4HelixBundleInsideOut" - # molecule I defined earlier in "1beadProtSci2010.lt". Same molecule however. - - 4HelixBundle { - helix1 = new A16.rot( -45, 0,0,1).move(-5.70,-5.70,-32.4) - helix2 = new A16.rot( 45, 0,0,1).move( 5.70,-5.70,-28.8) - helix3 = new A16.rot( 135, 0,0,1).move( 5.70, 5.70,-25.2) - helix4 = new A16.rot( 225, 0,0,1).move(-5.70, 5.70,-21.6) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - - turn1 = new T3.rot(150,1,0,0).rot(-23,0,1,0).rot( 8,0,0,1).move(-3.6,-4.8,28.2) - turn2 = new T3.rot(-5,1,0,0).rot( 21,0,1,0).rot(-100,0,0,1).move(4.2,-0.66,-30.9) - turn3 = new T3.rot(150,1,0,0).rot(-23,0,1,0).rot(188,0,0,1).move(3.6,4.8,35.4) - - create_var { $mol } # molecule ID number shared by all atoms in this protein - - } # 4HelixBundle - - - - - # --- alternate conformations (same molecule) ---- - - # In the following version, the helices are oriented in a similar way, - # but they are separated a little further away from eachother. - - 4HelixBundleLoose { - - helix1 = new A16.rot( -45, 0,0,1).move(-6.7347723,-6.7347723, -27.0) - helix2 = new A16.rot( 45, 0,0,1).move( 6.7347723,-6.7347723, -27.0) - helix3 = new A16.rot( 135, 0,0,1).move( 6.7347723, 6.7347723, -27.0) - helix4 = new A16.rot( 225, 0,0,1).move(-6.7347723, 6.7347723, -27.0) - - turn1 = new T3.rot(180,1,0,0).rot(-17,0,0,1).move(-1.2,-4.2,32.4) - turn2 = new T3.rot( 0,1,0,0).rot(-100,0,0,1).move(4.2,-0.9,-28.8) - turn3 = new T3.rot(180,1,0,0).rot(163,0,0,1).move(1.2,4.2,32.4) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - } - - - # In following version, the helices are oriented in a similar way, - # but they are separated a little further away from eachother. - - 4HelixInsideOutLoose { - helix1 = new A16.rot(-225, 0,0,1).move(-6.7347723,-6.7347723, -27.0) - helix2 = new A16.rot(-135, 0,0,1).move( 6.7347723,-6.7347723, -27.0) - helix3 = new A16.rot( -45, 0,0,1).move( 6.7347723, 6.7347723, -27.0) - helix4 = new A16.rot( 45, 0,0,1).move(-6.7347723, 6.7347723, -27.0) - - turn1 = new T3.rot(180,1,0,0).rot( 10,0,0,1).move( 0.78,-4.2,28.8) - turn2 = new T3.rot( 70,1,0,0).rot(-70,0,0,1).move( 10.8,2.4,-28.2) - turn3 = new T3.rot(180,1,0,0).rot(190,0,0,1).move(-0.78,4.2,28.8) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - - } # 4HelixInsideOutLoose - - - - - # In the following version, the 4 helices are arranged next to each other, - # side-by-side, in a planar conformation (instead of a compact bundle). - - 4HelixPlanar { - helix1 = new A16.rot(-00, 0,0,1).move(0, 0, -27.0) - helix2 = new A16.rot( 00, 0,0,1).move(14.4, 0, -27.0) - helix3 = new A16.rot(-00, 0,0,1).move(28.8, 0, -27.0) - helix4 = new A16.rot( 00, 0,0,1).move(43.2, 0, -27.0) - - turn1 = new T3.rot(180,1,0,0).rot( 0,0,0,1).move( 4.8, 0, 31.8) - turn2 = new T3.rot( 0,1,0,0).rot(180,0,0,1).move(19.2, 0,-31.8) - turn3 = new T3.rot(180,1,0,0).rot( 0,0,0,1).move(34.6, 0, 31.8) - - write('Data Bonds') { - $bond:turn1a @bond:../backbone $atom:turn1/a1 $atom:helix1/a16 - $bond:turn1b @bond:../backbone $atom:turn1/a3 $atom:helix2/a16 - $bond:turn2a @bond:../backbone $atom:turn2/a1 $atom:helix3/a1 - $bond:turn2b @bond:../backbone $atom:turn2/a3 $atom:helix2/a1 - $bond:turn3a @bond:../backbone $atom:turn3/a1 $atom:helix3/a16 - $bond:turn3b @bond:../backbone $atom:turn3/a3 $atom:helix4/a16 - } - create_var { $mol } # molecule ID number shared by all atoms in this protein - - } # 4HelixPlanar - - - # -------- Minor coordinates adjustment: ----------- - # Those coordinates in the commands above are a little too large. - # To make it easier to type them in, I was using sigma=6.0 Angstroms. - # Instead, here I'll try using sigma=4.8 Angstroms. 4.8/6.0 = 0.8) - - 4SheetBarrel.scale(0.8) - 4HelixBundle.scale(0.8) - 4HelixBundleLoose.scale(0.8) - 4HelixInsideOutLoose.scale(0.8) - 4HelixPlanar.scale(0.8) - - # Note: "scale()" only effects the initial coordinates of - # the molecule, not the force field parameters. - # (If you plan to minimize the molecule, you don't need to - # be so careful about the initial coordinates. In that case, - # you don't have worry about "scale()". Feel free to remove.) - - -} # 1beadProtSci2010 (namespace) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/CGLipidBr2005.lt b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/CGLipidBr2005.lt deleted file mode 100644 index 24be50aced..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/CGLipidBr2005.lt +++ /dev/null @@ -1,196 +0,0 @@ -# Note: -# -# This example may require additional features to be added to LAMMPS. If -# LAMMPS complains about an "Invalid pair_style", then download copy the -# "additional_lammps_code" from moltemplate.org, unpack it into your LAMMPS -# "src" directory and recompile LAMMPS. -# -# -------- Description -------- -# -# This example contains an implementation of the DPPC lipid bilayer described in -# G. Brannigan, P.F. Philips, and F.L.H. Brown, -# Physical Review E, Vol 72, 011915 (2005) -# and: -# M.C. Watson, E.S. Penev, P.M. Welch, and F.L.H. Brown -# J. Chem. Phys. 135, 244701 (2011) -# -# As in Watson(JCP 2011), rigid bond-length constraints have been replaced -# by harmonic bonds. -# -# A truncated version of this lipid (named "DLPC") has also been added. -# Unlike the original "DPPC" molecule model, "DLPC" has not been carefully -# parameterized to reproduce the correct behavior in a lipid bilayer mixture. -# -# Units: -# -# The "epsilon" parameter in their model is approximately 2.75 kJ/mole -# ( = 0.657265774378585 kCal/mole, using 1kCal=4.184kJ) -# The "sigma" parameter corresponds to 7.5 angstroms. - - -CGLipidBr2005 { - - - write_once("In Init") { - # -- Default styles for "CGLipidBr2005" -- - units real - atom_style full - # (Hybrid force field styles were used for portability.) - bond_style hybrid harmonic - - #angle_style hybrid cosine/delta # <- used in the original article - angle_style hybrid harmonic # <- prevents unphysical acute angle turns - # Explanation: - # angle_style cosine/delta: U(theta) = k*(1-cos(theta-theta0)) - # angle_style harmonic: U(theta) = k*(theta-theta0)^2 - - dihedral_style none - improper_style none - - pair_style hybrid table linear 1130 & - lj/charmm/coul/charmm/inter es4k4l 14.5 15 - - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 # turn off pairs if "less than 3 bonds" - } - - - DPPC { - write("Data Atoms") { - $atom:h $mol:. @atom:head 0.0 0.00 0.00 33.75 # DPPC head atom - $atom:i $mol:. @atom:../int 0.0 -1.00 0.00 26.25 - $atom:t1 $mol:. @atom:../tail 0.0 1.00 0.00 18.75 - $atom:t2 $mol:. @atom:../tail 0.0 -1.00 0.00 11.25 - $atom:t3 $mol:. @atom:../tail 0.0 1.00 0.00 3.75 - } - write("Data Bonds") { - $bond:b1 @bond:../backbone $atom:h $atom:i - $bond:b2 @bond:../backbone $atom:i $atom:t1 - $bond:b3 @bond:../backbone $atom:t1 $atom:t2 - $bond:b4 @bond:../backbone $atom:t2 $atom:t3 - } - write("Data Angles") { - $angle:a1 @angle:../backbone $atom:h $atom:i $atom:t1 - $angle:a2 @angle:../backbone $atom:i $atom:t1 $atom:t2 - $angle:a3 @angle:../backbone $atom:t1 $atom:t2 $atom:t3 - } - - # Define properties of the local (lipid-specific) atom:head type atom: - write_once("Data Masses") { - @atom:head 200.0 - } - write_once("In Settings") { - pair_coeff @atom:head @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../int @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../tail @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - } - - } #DPPC - - - DLPC { - write("Data Atoms") { - $atom:h $mol:. @atom:head 0.0 0.00 0.00 30.00 # DLPC head atom - $atom:i $mol:. @atom:../int 0.0 -1.00 0.00 22.50 - $atom:t1 $mol:. @atom:../tail 0.0 1.00 0.00 15.00 - $atom:t2 $mol:. @atom:../tail 0.0 -1.00 0.00 7.50 - } - write("Data Bonds") { - $bond:b1 @bond:../backbone $atom:h $atom:i - $bond:b2 @bond:../backbone $atom:i $atom:t1 - $bond:b3 @bond:../backbone $atom:t1 $atom:t2 - } - write("Data Angles") { - $angle:a1 @angle:../backbone $atom:h $atom:i $atom:t1 - $angle:a2 @angle:../backbone $atom:i $atom:t1 $atom:t2 - } - # Define properties of the local (lipid-specific) atom:head type atom: - write_once("Data Masses") { - @atom:head 200.0 - } - write_once("In Settings") { - pair_coeff @atom:head @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../int @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../tail @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - } - } #DLPC - - - # Particles and properties shared by all lipid types: - - write_once("Data Masses") { - @atom:int 200.0 - @atom:tail 200.0 - } - - write_once("In Settings") { - # -- Default settings/parameters for "CGLipidBr2005" -- - # (Hybrid bond & angle styles were used for portability.) - - # As in Watson(JCP 2011), rigid bond-length constraints - # have been replaced by harmonic bonds. - # The k_theta parameter should lie in between 5*epsilon and 10*epsilon. - bond_coeff @bond:backbone harmonic 116.847 7.5 #<--2*5000*eps/sig^2 - } - - write_once("In Settings") { - # cosine/delta: U(theta) = k*(1-cos(theta-theta0)) - #angle_coeff @angle:backbone cosine/delta 4.60086042 180 #<-- 7*eps - # harmonic: U(theta) = k*(theta-theta0)^2 not (k/2)*(theta-theta0)^2 - angle_coeff @angle:backbone harmonic 9.85898661 180 #<-->30*eps - } - # I use a stiffer bond-angle than the original Brannigan & Brown 2005 paper - # to attempt to compensate for the fact that here we are using a lipid - # mixture of DPPC and DLPC. (The mixture of lipids introduces a great deal - # of disorder into the bilayer which would not be present in a DPPC bilayer. - # This causes pores to form. Increasing the angle stiffness prevents this.) - - write_once("In Settings") { - - # The interaction of "atom:int" with other "atom:int" atoms is given by - # epsilon*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2), shifted and cutoff at - # r=3*sigma. This was implemented using pair_style table. - # Unfortunately, mixing lj/charmm and "table" pair styles in the same - # simulation is very inneficient. - - pair_coeff @atom:int @atom:int table table_int.dat INT - - # The interaction of tail beads with eachother is given by the formula below - # and with other atoms ...using Lorenz-Berthelot and "repulsive wins" rules: - # epsilon*(0.4*(sigma/r)^12 - 1.0*(sigma/r)^6), - pair_coeff @atom:tail @atom:tail lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 -1 - pair_coeff @atom:int @atom:tail lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 -1 - - # The interaction between head beads from different types of lipids - # is (currently) repulsive: - pair_coeff @atom:DPPC/head @atom:DLPC/head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - - } # write_once("In Settings") - - - # Note: I divided epsilon by 4 to get "0.1643" because we are using the - # "es4k4l" coeffstyle, corresponding to U(r)=eps(4*K*(s/r)^12 + 4*L*(s/r)^6) - # (The "es4k4l" coeffstyle is the default.) Using this convention makes it - # easier to mix this coarse-grained lipid model with other molecular models. - - - -} # CGLipidBr2005 - - - - - - - - -# Note: This example has not been optimized for speed. -# -# Unfortunately, using both lj/charmm and "table" pair styles in the same -# simulation seems to be very inneficient. (The simulation is twice as slow -# as using only the "lj/charmm" pair styles for every pairwise interaction, -# ...and about 25% slower than using "table" for every pairwise interaction. -# However the lennard-jones pair styles support mixing, so we use them to -# make it easier to run these molecules with other molecules which don't use -# pair_table. I felt that portability was worth the extra 25% slow down.) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py deleted file mode 100755 index 0d09e4d02e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -# Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in -# Brannigan et al, Phys Rev E, 72, 011915 (2005) -# The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) -# However it is truncated at rc2 = 22.5 (shifted upwards to maintain continuity) - -def U(r, eps, sigma): - return eps* (0.4*pow((sigma/r),12) - 3.0*sigma*sigma/(r*r)) -def F(r, eps, sigma): - return eps*(12*0.4*pow((sigma/r),13)/sigma - 2*3.0*sigma*sigma/(r*r*r)) - -epsilon = 2.75/4.184 # kCal/mole -sigma = 7.5 -Rmin = 0.02 -Rmax = 22.6 -rcut = 22.5 -N = 1130 - -for i in range(0,N): - r = Rmin + i*(Rmax-Rmin)/(N-1) - U_r = U(r, epsilon, sigma) - U(rcut, epsilon, sigma) - F_r = F(r, epsilon, sigma) - if r > rcut: - U_r = 0.0 - F_r = 0.0 - print(str(i+1)+' '+str(r)+' '+str(U_r)+' '+str(F_r)) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py deleted file mode 100755 index 32147e444a..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env python - -# Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in -# Brannigan et al, Phys Rev E, 72, 011915 (2005) -# The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) -# I realized later this is not what we want because although energy is conserved -# all enrgies are shifted with respect to energies used in the Brannigan paper -# (by 0.27 kCal/mole) and the later Watson JCP 2011 paper (by 0.224 kCal/mole). -# (So don't use this.) - -# Calculate and print a - -def S(r, rc1, rc2, derivative=False): - """ - Calculate the switching function S(r) which decays continuously - between 1 and 0 in the range from rc1 to rc2 (rc2>rc1): - S(r) = (rc2^2 - r^2)^2 * (rc2^2 + 2*r^2 - 3*rc1^2) / (rc2^2-rc1^2)^3 - I'm using the same smoothing/switching cutoff function used by the CHARMM - force-fields. (I'm even using the same code to implement it, taken - from lammps charmm/coul/charmm pair style, rewritten in python.) - - """ - assert(rc2>rc1) - rsq = r*r - rc1sq = rc1*rc1 - rc2sq = rc2*rc2 - denom_lj_inv = (1.0 / ((rc2sq-rc1sq)* - (rc2sq-rc1sq)* - (rc2sq-rc1sq))) - if rsq > rc2sq: - return 0.0 - elif rsq < rc1sq: - if derivative: - return 0.0 - else: - return 1.0 - else: - rc2sq_minus_rsq = (rc2sq - rsq) - rc2sq_minus_rsq_sq = rc2sq_minus_rsq * rc2sq_minus_rsq - if derivative: - return (12.0 * rsq * rc2sq_minus_rsq * (rsq-rc1sq) * denom_lj_inv) - else: - return (rc2sq_minus_rsq_sq * - (rc2sq + 2.0*rsq - 3.0*rc1sq) * denom_lj_inv) - - -def U(r, eps, sigma): - return eps* (0.4*pow((sigma/r),12) - 3.0*sigma*sigma/(r*r)) - -def F(r, eps, sigma): - return eps*(12*0.4*pow((sigma/r),13)/sigma - 2*3.0*sigma*sigma/(r*r*r)) - -epsilon = 2.75/4.184 # kCal/mole -sigma = 7.5 -Rmin = 0.02 -Rmax = 22.6 -Rc1 = 22.0 -Rc2 = 22.5 -N = 1130 - -for i in range(0,N): - r = Rmin + i*(Rmax-Rmin)/(N-1) - U_r = U(r, epsilon, sigma) - F_r = F(r, epsilon, sigma) - # Multiply U(r) & F(r) by the smoothing/switch function - U_r = U_r * S(r, Rc1, Rc2) - F_r = U_r * S(r, Rc1, Rc2, True) + F_r * S(r, Rc1, Rc2, False) - print(str(i+1)+' '+str(r)+' '+str(U_r)+' '+str(F_r)) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/system.lt deleted file mode 100644 index 3e521b0f90..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/system.lt +++ /dev/null @@ -1,178 +0,0 @@ -# Description: - -# This example shows how to put a protein (inclusion) in a -# lipid bilayer mixture composed of two different lipids (DPPC and DLPC). -# The DPPC lipid model is described here: -# G. Brannigan, P.F. Philips, and F.L.H. Brown, -# Physical Review E, Vol 72, 011915 (2005) -# The protein model is described here: -# G. Bellesia, AI Jewett, and J-E Shea, -# Protein Science, Vol19 141-154 (2010) -# The new DLPC model is a truncated version of DPPC, -# (Its behaviour has not been rigorously tested.) -# Note that 50%/50% mixtures of DPPC & DLPC are commonly used to -# build liposomes http://www.ncbi.nlm.nih.gov/pubmed/10620293 - -# Note: -# This example may require additional features to be added to LAMMPS. -# If LAMMPS complains about an "Invalid pair_style", then copy the code -# in the "additional_lammps_code" directory into your LAMMPS "src" directory -# and recompile LAMMPS. - - - -import "CGLipidBr2005.lt" - -using namespace CGLipidBr2005 - -# The "= new random" syntax chooses one of several molecules at random - -lipids = new random([DPPC, DLPC], [0.5,0.5], 1234) #"1234"=random_seed - [13].move(7.5, 0, 0) - [15].move(3.75, 6.49519, 0) # <-- hexagonal lattice - [2].rot(180, 1, 0, 0) # <-- 2 monolayers - -# Move all the lipds up to the center of the box - -lipids[*][*][*].move(0,0,75.0) - - - - -# Although this patch of lipids is not square or rectangular, (it looks -# like a parallelogram), this is no longer the case after rectangular -# periodic boundary conditions are applied. (Check by visualising in VMD.) - - -write_once("Data Boundary") { - 0 97.5 xlo xhi - 0 97.42785792 ylo yhi - 0 150.0 zlo zhi -} - - -# A note on geometry: -# We want to create a bilayer arranged in a hexagonal lattice consisting of -# 15 rows (each row is aligned with the x-axis) -# 13 columns (aligned at a 60 degree angle from the x axis) -# The lattice spacing is 7.5 Angstroms. -# When wrapped onto a rectangular box, the dimensions of the system are: -# 13 * 7.5 Angstroms in the X direction -# 15 * 7.5*sqrt(3)/2 Angstroms in the Y direction - - - - - - - -# ------------------- protein inclusion --------------------- - -import "1beadProtSci2010.lt" - -using namespace 1beadProtSci2010 - -protein = new 4HelixInsideOut - -protein.move(45.0, 25.98076211, 75.0) - - -# Delete a hole in the membrane to create space for the protein. -# (In the future moltemplate will be able to avoid occlusion automatically.) - - -delete lipids[4][2][*] -delete lipids[6][2][*] -delete lipids[3-6][3][*] -delete lipids[3-5][4][*] -delete lipids[2-5][5][*] -delete lipids[2][6][*] -delete lipids[4][6][*] - - -# -------- interactions between protein and lipids ---------- - -# Note: All atom types must include the full path (the name of -# the namespace which defined them as well as the atom type name). -# (This is because we are no longer inside that namespace.) - - -write_once("In Settings") { - - # Interactions between the protein and lipid atoms are usually - # determined by mixing rules. However this is not possible some - # for atoms (such as the "int" atoms in the lipid model which - # interact using -1/r^2 attraction). Lorentz-Berthelot mixing - # rules do not make sense for these atoms so we must explicitly - # define their interaction with all other atoms. - - # i j pairstylename eps sig K L - - pair_coeff @atom:CGLipidBr2005/int @atom:1beadProtSci2010/sH lj/charmm/coul/charmm/inter 1.8065518 7.5 1 -1 - pair_coeff @atom:CGLipidBr2005/int @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/int @atom:1beadProtSci2010/tN lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - - # We want the interactions between hydrophobic residues and atoms in - # the interior of the lipid to be energetically similar to the attractive - # interactions between hydrophobic residues. (See 1beadProtSci2010.) - - pair_coeff @atom:CGLipidBr2005/tail @atom:1beadProtSci2010/sH lj/charmm/coul/charmm/inter 1.8065518 7.5 1 -1 - - # All other interactions between proteins and lipids are steric. - pair_coeff @atom:CGLipidBr2005/tail @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/tail @atom:1beadProtSci2010/tN lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/DPPC/head @atom:1beadProtSci2010/sH lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/DPPC/head @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/DLPC/head @atom:1beadProtSci2010/sH lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - pair_coeff @atom:CGLipidBr2005/DLPC/head @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 1.8065518 7.5 1 0 - - - # We also add an artificial attractive interaction between the - # turn residues of the protein and the lipid head groups in - # order to keep the protein upright. This might not be necessary - - pair_coeff @atom:CGLipidBr2005/DPPC/head @atom:1beadProtSci2010/tN lj/charmm/coul/charmm/inter 1.8065518 6.0 1 -1 - pair_coeff @atom:CGLipidBr2005/DLPC/head @atom:1beadProtSci2010/tN lj/charmm/coul/charmm/inter 1.8065518 6.0 1 -1 - - # Add a weak attractive interaction between hydrophilic "sL" beads - # (Whose strength mimics the strength of interaction between tail beads - # in the lipid. This was absent from the original protein model. - # However without some kind of weak attraction between residues, - # the negative pressure in the interior of the bilayer membrane - # allways pulls the protein apart. Recall that in the membrane, - # the hydrophobic beads in the protein will face outwards towards the lipid - # tails leaving the hydrophilic amino acids of the protein in the interior. - # In reality, these polar groups form hydrogen bonds with each other.) - - pair_coeff @atom:1beadProtSci2010/sL @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 0.3286 6.0 0.4 -1 - - # However these hydrophilic amino acids are not attrected to - # the bilayer interior. - - pair_coeff @atom:CGLipidBr2005/int @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:CGLipidBr2005/tail @atom:1beadProtSci2010/sL lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - -} - - - - -# Finally, we must combine the two force-field styles which were used for -# the coarse-grained lipid and protein. To do that, we write one last time -# to the "In Init" section. When reading the "Init" section LAMMPS will -# read these commands last and this will override any earlier settings. - -write_once("In Init") { - # -- These styles override earlier settings -- - units real - atom_style full - # (Hybrid force field styles were used for portability.) - bond_style hybrid harmonic - angle_style hybrid cosine/delta harmonic - dihedral_style hybrid fourier - improper_style none - pair_style hybrid table linear 1001 lj/charmm/coul/charmm/inter es4k4l 14.5 15 - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 # turn off pairs if "less than 3 bonds" -} - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/table_int.dat b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/table_int.dat deleted file mode 100644 index b0d651d67f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/table_int.dat +++ /dev/null @@ -1,1139 +0,0 @@ -# Table for the INT-INT interaction from -# Brannigan et al, Phys Rev E, 72, 011915 (2005) -# This table contains -# i r_i U(r_i) -dU/dr|r_i -# where U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) - -INT -N 1130 - -1 0.02 2.0331818401e+30 1.21990910406e+33 -2 0.04 4.9638228518e+26 1.48914685554e+29 -3 0.06 3.82579033251e+24 7.65158066501e+26 -4 0.08 1.21187081343e+23 1.81780622014e+25 -5 0.1 8.32791281704e+21 9.99349538045e+23 -6 0.12 9.34030842897e+20 9.34030842897e+22 -7 0.14 1.46892540453e+20 1.25907891817e+22 -8 0.16 2.95866897809e+19 2.21900173357e+21 -9 0.18 7.19889946863e+18 4.79926631242e+20 -10 0.2 2.0331818401e+18 1.21990910406e+20 -11 0.22 6.47834392264e+17 3.53364213962e+19 -12 0.24 2.28034873754e+17 1.14017436877e+19 -13 0.26 8.72681951932e+16 4.02776285507e+18 -14 0.28 3.58624366341e+16 1.53696157003e+18 -15 0.3 1.56704372019e+16 6.26817488078e+17 -16 0.32 7.2233129348e+15 2.70874235055e+17 -17 0.34 3.48970861422e+15 1.23166186384e+17 -18 0.36 1.75754381558e+15 5.85847938527e+16 -19 0.38 9.18613895646e+14 2.90088598625e+16 -20 0.4 4.96382285179e+14 1.48914685554e+16 -21 0.42 2.76404230108e+14 7.89726371739e+15 -22 0.44 1.58162693423e+14 4.31352800247e+15 -23 0.46 9.27773983256e+13 2.42027995633e+15 -24 0.48 5.56725765996e+13 1.391814415e+15 -25 0.5 3.41111308981e+13 8.18667141564e+14 -26 0.52 2.13057117167e+13 4.91670270393e+14 -27 0.54 1.35459994024e+13 3.0102220895e+14 -28 0.56 8.75547769351e+12 1.87617379153e+14 -29 0.58 5.74645813711e+12 1.18892237325e+14 -30 0.6 3.8257903322e+12 7.65158066491e+13 -31 0.62 2.58128463312e+12 4.99603477424e+13 -32 0.64 1.7635041342e+12 3.30657025205e+13 -33 0.66 1.21901470178e+12 2.21639036726e+13 -34 0.68 8.51979641904e+11 1.50349348607e+13 -35 0.7 6.0167184547e+11 1.0314374497e+13 -36 0.72 4.29087845387e+11 7.15146409276e+12 -37 0.74 3.08855637556e+11 5.00846980094e+12 -38 0.76 2.24270970425e+11 3.54112058818e+12 -39 0.78 1.64210505205e+11 2.52631546702e+12 -40 0.8 1.2118708117e+11 1.81780621971e+12 -41 0.82 90109367359.1 1.31867367068e+12 -42 0.84 67481501334.4 9.64021449503e+11 -43 0.86 50880896383.4 7.09965997788e+11 -44 0.88 38613938681.2 5.26553710913e+11 -45 0.9 29486692086.8 3.93155896009e+11 -46 0.92 22650731882.4 2.95444330322e+11 -47 0.94 17498544395.3 2.23385674464e+11 -48 0.96 13591937526.4 1.69899220331e+11 -49 0.98 10612635712.6 1.29950642555e+11 -50 1.0 8327912706.34 99934953582.6 -51 1.02 6566502316.69 77252969474.2 -52 1.04 5201589672.36 60018343356.8 -53 1.06 4138717434.11 46853405843.3 -54 1.08 3307128665.58 36745874940.0 -55 1.1 2653529579.27 28947596241.1 -56 1.12 2137567708.15 22902511945.9 -57 1.14 1728534024.3 18195095739.0 -58 1.16 1402943799.0 14513212422.1 -59 1.18 1142752163.37 11621209113.9 -60 1.2 934030766.093 9340308300.6 -61 1.22 765981286.774 7534242773.65 -62 1.24 630196371.787 6098675145.29 -63 1.26 520103253.414 4953364870.6 -64 1.28 430542934.103 4036340534.04 -65 1.3 357450462.101 3299543229.91 -66 1.32 297610947.802 2705554551.18 -67 1.34 248472587.186 2225128105.44 -68 1.36 208002782.573 1835319108.76 -69 1.38 174576985.011 1518061159.35 -70 1.4 146892484.084 1259078837.33 -71 1.42 123901294.937 1047053582.16 -72 1.44 104757721.536 872981382.419 -73 1.46 88777241.639 729676313.267 -74 1.48 75404158.02 611385405.387 -75 1.5 64186061.7033 513488820.507 -76 1.52 54753607.1486 432265633.695 -77 1.54 46804443.7318 364710253.134 -78 1.56 40090410.0598 308388060.159 -79 1.58 34407297.9713 261321529.95 -80 1.6 29586646.6744 221900119.2 -81 1.62 25489145.661 188808745.634 -82 1.64 21999316.2868 160970856.824 -83 1.66 19021212.5921 137502982.517 -84 1.68 16474936.8715 117678352.86 -85 1.7 14293808.3245 100897694.735 -86 1.72 12422056.6082 86665727.6626 -87 1.74 10812938.3788 74572197.8496 -88 1.76 9427195.57103 64276535.39 -89 1.78 8231790.46096 55495411.7777 -90 1.8 7198865.45512 47992625.088 -91 1.82 6304885.77339 41570857.9644 -92 1.84 5529931.32911 36064946.1544 -93 1.86 4857110.59557 31336368.341 -94 1.88 4272074.43377 27268725.7382 -95 1.9 3762612.01167 23764025.6584 -96 1.92 3318314.28383 20739619.609 -97 1.94 2930293.18879 18125675.4316 -98 1.96 2590946.89128 15863086.114 -99 1.98 2293763.15199 13901736.4186 -100 2.0 2033154.33079 12199063.3122 -101 2.02 1804318.68586 10718858.1296 -102 2.04 1603123.57305 9430268.02169 -103 2.06 1426006.91783 8306962.01537 -104 2.08 1269893.96121 7326433.30293 -105 2.1 1132126.79514 6469414.48445 -106 2.12 1010404.62602 5719386.63441 -107 2.14 902733.052344 5062166.44376 -108 2.16 807380.928986 4485558.44681 -109 2.18 722843.627253 3979061.59742 -110 2.2 647811.695319 3533621.30686 -111 2.22 581144.085827 3141419.57242 -112 2.24 521845.251959 2795697.07302 -113 2.26 469045.525153 2490602.13576 -114 2.28 421984.280794 2221062.32522 -115 2.3 379995.475978 1982675.10836 -116 2.32 342495.208369 1771614.62868 -117 2.34 308970.999537 1584552.10475 -118 2.36 278972.551763 1418587.76828 -119 2.38 252103.765513 1271192.59046 -120 2.4 228015.837009 1140158.32224 -121 2.42 206401.282366 1023554.60663 -122 2.44 186988.75765 919692.114521 -123 2.46 169538.563484 827090.818108 -124 2.48 153838.739168 744452.651831 -125 2.5 139701.665073 670637.92543 -126 2.52 126961.103835 604644.949624 -127 2.54 115469.620781 545592.416037 -128 2.56 105096.332511 492704.141327 -129 2.58 95724.9397832 445295.843157 -130 2.6 87252.0069441 402763.664479 -131 2.62 79585.4554502 364574.203947 -132 2.64 72643.2434671 330255.845328 -133 2.66 66352.2073932 299391.208536 -134 2.68 60647.0444312 271610.570248 -135 2.7 55469.4181565 246586.123584 -136 2.72 50767.1714483 224026.964698 -137 2.74 46493.633237 203674.709811 -138 2.76 42607.0073083 185299.659567 -139 2.78 39069.8329526 168697.439095 -140 2.8 35848.5085794 153686.051901 -141 2.82 32912.8705664 140103.294183 -142 2.84 30235.8206098 127804.483324 -143 2.86 27792.9956998 116660.460548 -144 2.88 25562.4755962 106555.833042 -145 2.9 23524.5233195 97387.4254387 -146 2.92 21661.3547409 89062.9145204 -147 2.94 19956.9338374 81499.6244039 -148 2.96 18396.7906059 74623.4624292 -149 2.98 16967.8589974 68367.9785194 -150 3.0 15658.3325568 62673.5329856 -151 3.02 14457.5357325 57486.5596649 -152 3.04 13355.809067 52758.912937 -153 3.06 12344.4066925 48447.2886046 -154 3.08 11415.4047444 44512.7098736 -155 3.1 10561.6194689 40920.0707567 -156 3.12 9776.5339459 37637.7301715 -157 3.14 9054.23247117 34637.1508274 -158 3.16 8389.34175838 31892.5777179 -159 3.18 7776.97821258 29380.7516608 -160 3.2 7212.7006167 27080.6538766 -161 3.22 6692.4676457 24973.2780793 -162 3.24 6212.59969004 23041.4269669 -163 3.26 5769.74452856 21269.5303734 -164 3.28 5360.84644195 19643.4826615 -165 3.3 4983.1184041 18150.4972204 -166 3.32 4634.01702836 16778.97618 -167 3.34 4311.21998136 15518.393672 -168 3.36 4012.60560869 14359.191159 -169 3.38 3736.23454428 13292.6835236 -170 3.4 3480.33310029 12310.9747549 -171 3.42 3243.27825585 11406.8822043 -172 3.44 3023.58408279 10573.8684961 -173 3.46 2819.88946345 9805.98028003 -174 3.48 2630.94697101 9097.79310596 -175 3.5 2455.61279669 8444.36177626 -176 3.52 2292.83761972 7841.17560602 -177 3.54 2141.65832756 7284.11808108 -178 3.56 2001.19050257 6769.43046025 -179 3.58 1870.62160083 6293.67891689 -180 3.6 1749.20475558 5853.72485855 -181 3.62 1636.25314534 5446.69810179 -182 3.64 1531.13487237 5069.97261409 -183 3.66 1433.26830277 4721.1445646 -184 3.68 1342.11782445 4398.01245332 -185 3.7 1257.18998347 4098.55911171 -186 3.72 1178.02996319 3820.93539003 -187 3.74 1104.21837425 3563.44536511 -188 3.76 1035.36832639 3324.53291993 -189 3.78 971.122756088 3102.76956138 -190 3.8 911.151986554 2896.84335615 -191 3.82 855.151498616 2705.54887715 -192 3.84 802.83989347 2527.77806329 -193 3.86 753.957029799 2362.51190574 -194 3.88 708.262319576 2208.81288195 -195 3.9 665.533168297 2065.81806693 -196 3.92 625.563546756 1932.73285812 -197 3.94 588.162682667 1808.82525631 -198 3.96 553.153861545 1693.42065104 -199 3.98 520.373327227 1585.89706361 -200 4.0 489.669273313 1485.68080556 -201 4.02 460.900917596 1392.24251449 -202 4.04 433.937652306 1305.09353282 -203 4.06 408.6582636 1223.78259822 -204 4.08 384.950214367 1147.89281764 -205 4.1 362.708984933 1077.03889938 -206 4.12 341.837466738 1010.86461999 -207 4.14 322.245404503 949.040505266 -208 4.16 303.848882793 891.261706073 -209 4.18 286.569853265 837.246052066 -210 4.2 270.33569919 786.732267446 -211 4.22 255.078834164 739.47833469 -212 4.24 240.736332164 695.259993326 -213 4.26 227.249586386 653.869362042 -214 4.28 214.563994495 615.113673492 -215 4.3 202.628668126 578.814112106 -216 4.32 191.396164684 544.804746089 -217 4.34 180.822239621 512.931545605 -218 4.36 170.865617553 483.051479815 -219 4.38 161.487780703 455.031686127 -220 4.4 152.652773286 428.748705595 -221 4.42 144.327020575 404.087778912 -222 4.44 136.479161479 380.942197972 -223 4.46 129.07989358 359.212708377 -224 4.48 122.101829632 338.806958688 -225 4.5 115.519364658 319.638992577 -226 4.52 109.308552789 301.628780369 -227 4.54 103.446993117 284.701786758 -228 4.56 97.9137238447 268.788571763 -229 4.58 92.6891241175 253.824422244 -230 4.6 87.7548229339 239.749011508 -231 4.62 83.0936146036 226.506084761 -232 4.64 78.6893802546 214.043168343 -233 4.66 74.5270149351 202.31130085 -234 4.68 70.5923598871 191.264784422 -235 4.7 66.8721396072 180.860954593 -236 4.72 63.353903336 171.05996726 -237 4.74 60.0259706488 161.824601429 -238 4.76 56.8773808439 153.120076496 -239 4.78 53.8978458491 144.913882966 -240 4.8 51.0777063884 137.175625538 -241 4.82 48.4078911713 129.876877635 -242 4.84 45.8798788842 122.991046476 -243 4.86 43.485662782 116.493247913 -244 4.88 41.2177176913 110.360190267 -245 4.9 39.0689692529 104.570066494 -246 4.92 37.0327652428 99.1024540566 -247 4.94 35.102848823 93.9382219092 -248 4.96 33.2733335874 89.05944408 -249 4.98 31.5386802724 84.4493193479 -250 5.0 29.8936750183 80.0920965658 -251 5.02 28.3334090704 75.9730052143 -252 5.04 26.8532598202 72.0781907976 -253 5.06 25.4488730938 68.3946547294 -254 5.08 24.116146599 64.9101983786 -255 5.1 22.8512144543 61.6133709734 -256 5.12 21.650432722 58.4934210835 -257 5.14 20.5103658787 55.5402514226 -258 5.16 19.4277741591 52.7443767307 -259 5.18 18.3996017121 50.0968845179 -260 5.2 17.4229655155 47.5893984632 -261 5.22 16.4951449988 45.2140442802 -262 5.24 15.6135723236 42.9634178757 -263 5.26 14.775823281 40.8305556374 -264 5.28 13.979608762 38.808906703 -265 5.3 13.2227667648 36.8923070701 -266 5.32 12.5032549016 35.0749554196 -267 5.34 11.8191433738 33.3513905323 -268 5.36 11.1686083831 31.7164701895 -269 5.38 10.5499259512 30.1653514539 -270 5.4 9.96146612005 28.693472236 -271 5.42 9.40168750976 27.2965340593 -272 5.44 8.86913220892 25.9704859397 -273 5.46 8.36242097742 24.7115093061 -274 5.48 7.88024874079 23.5160038893 -275 5.5 7.4213803577 22.3805745153 -276 5.52 6.98464664308 21.3020187412 -277 5.54 6.56894063048 20.2773152771 -278 5.56 6.1732140587 19.3036131423 -279 5.58 5.79647406826 18.3782215059 -280 5.6 5.43778009463 17.4986001669 -281 5.62 5.09624094585 16.6623506308 -282 5.64 4.77101205293 15.867207745 -283 5.66 4.46129288233 15.1110318537 -284 5.68 4.16632450031 14.3918014404 -285 5.7 3.88538727999 13.7076062261 -286 5.72 3.61779874199 13.0566406912 -287 5.74 3.36291152072 12.4371979973 -288 5.76 3.12011144838 11.8476642796 -289 5.78 2.8888157497 11.2865132882 -290 5.8 2.66847134042 10.7523013555 -291 5.82 2.45855322349 10.2436626676 -292 5.84 2.25856297681 9.7593048226 -293 5.86 2.06802732724 9.2980046552 -294 5.88 1.88649680546 8.85860431242 -295 5.9 1.71354447704 8.44000756375 -296 5.92 1.548764745 8.04117633127 -297 5.94 1.39177221978 7.66112742597 -298 5.96 1.24220065245 7.29892947717 -299 5.98 1.09970192753 6.9537000433 -300 6.0 0.963945111861 6.62460289254 -301 6.02 0.83461555631 6.31084544295 -302 6.04 0.711414047074 6.01167635216 -303 6.06 0.594056003831 5.72638324756 -304 6.08 0.482270721937 5.45429058822 -305 6.1 0.375800656137 5.19475765055 -306 6.12 0.274400743381 4.94717663025 -307 6.14 0.177837762511 4.71097085338 -308 6.16 0.0858897286772 4.48559308998 -309 6.18 -0.00165467948361 4.27052396409 -310 6.2 -0.0849966617872 4.06527045435 -311 6.22 -0.164327809314 3.8693644797 -312 6.24 -0.239830589745 3.68236156522 -313 6.26 -0.311678806773 3.50383958321 -314 6.28 -0.380038035049 3.33339756513 -315 6.3 -0.445066032049 3.17065458013 -316 6.32 -0.506913128135 3.0152486763 -317 6.34 -0.56572259604 2.866835881 -318 6.36 -0.621631000928 2.72508925658 -319 6.38 -0.674768532081 2.58969800863 -320 6.4 -0.725259317268 2.46036664323 -321 6.42 -0.773221720709 2.33681417085 -322 6.44 -0.818768625574 2.21877335375 -323 6.46 -0.862007701832 2.10598999469 -324 6.48 -0.90304166028 1.99822226439 -325 6.5 -0.941968493479 1.8952400656 -326 6.52 -0.978881704324 1.79682443166 -327 6.54 -1.01387052292 1.70276695755 -328 6.56 -1.04702011237 1.61286926168 -329 6.58 -1.07841176412 1.52694247655 -330 6.6 -1.10812308336 1.44480676668 -331 6.62 -1.13622816508 1.36629087245 -332 6.64 -1.1627977612 1.29123167801 -333 6.66 -1.18789943936 1.21947380239 -334 6.68 -1.21159773365 1.15086921208 -335 6.7 -1.23395428792 1.08527685416 -336 6.72 -1.25502799183 1.02256230873 -337 6.74 -1.27487511024 0.962597459596 -338 6.76 -1.2935494061 0.90526018218 -339 6.78 -1.31110225728 0.850434047748 -340 6.8 -1.32758276773 0.798008043011 -341 6.82 -1.34303787302 0.747876304295 -342 6.84 -1.35751244086 0.699937865467 -343 6.86 -1.3710493666 0.654096418865 -344 6.88 -1.38368966412 0.610260088543 -345 6.9 -1.3954725523 0.568341215144 -346 6.92 -1.40643553728 0.528256151786 -347 6.94 -1.41661449078 0.489925070364 -348 6.96 -1.42604372459 0.453271777711 -349 6.98 -1.43475606153 0.418223541087 -350 7.0 -1.44278290299 0.384710922497 -351 7.02 -1.45015429321 0.352667621378 -352 7.04 -1.45689898057 0.322030325194 -353 7.06 -1.46304447588 0.292738567537 -354 7.08 -1.46861710792 0.264734593325 -355 7.1 -1.47364207647 0.237963230734 -356 7.12 -1.47814350264 0.2123717695 -357 7.14 -1.482144477 0.187909845266 -358 7.16 -1.48566710537 0.16452932965 -359 7.18 -1.48873255248 0.142184225751 -360 7.2 -1.49136108362 0.120830568787 -361 7.22 -1.49357210429 0.100426331626 -362 7.24 -1.49538419809 0.0809313349308 -363 7.26 -1.4968151628 0.0623071617066 -364 7.28 -1.49788204479 0.044517076001 -365 7.3 -1.49860117187 0.0275259455594 -366 7.32 -1.49898818464 0.0113001682279 -367 7.34 -1.49905806636 -0.00419239808778 -368 7.36 -1.4988251715 -0.0189825020854 -369 7.38 -1.49830325295 -0.0330995625254 -370 7.4 -1.49750548803 -0.0465717286462 -371 7.42 -1.49644450327 -0.0594259376903 -372 7.44 -1.49513239812 -0.0716879696855 -373 7.46 -1.49358076759 -0.0833824996199 -374 7.48 -1.4918007238 -0.0945331471409 -375 7.5 -1.48980291663 -0.105162523901 -376 7.52 -1.48759755345 -0.115292278666 -377 7.54 -1.48519441791 -0.124943140307 -378 7.56 -1.48260288794 -0.13413495876 -379 7.58 -1.47983195293 -0.142886744076 -380 7.6 -1.47689023018 -0.151216703644 -381 7.62 -1.47378598053 -0.159142277674 -382 7.64 -1.47052712344 -0.166680173038 -383 7.66 -1.46712125128 -0.173846395532 -384 7.68 -1.46357564306 -0.180656280652 -385 7.7 -1.45989727753 -0.187124522948 -386 7.72 -1.45609284575 -0.193265204023 -387 7.74 -1.45216876302 -0.199091819249 -388 7.76 -1.4481311804 -0.204617303261 -389 7.78 -1.44398599566 -0.20985405428 -390 7.8 -1.43973886378 -0.214813957332 -391 7.82 -1.43539520696 -0.21950840641 -392 7.84 -1.43096022428 -0.223948325627 -393 7.86 -1.42643890087 -0.228144189416 -394 7.88 -1.42183601669 -0.232106041819 -395 7.9 -1.41715615498 -0.235843514899 -396 7.92 -1.41240371029 -0.239365846333 -397 7.94 -1.40758289625 -0.242681896213 -398 7.96 -1.40269775292 -0.245800163096 -399 7.98 -1.39775215386 -0.248728799339 -400 8.0 -1.39274981294 -0.251475625745 -401 8.02 -1.38769429081 -0.254048145572 -402 8.04 -1.3825890011 -0.256453557906 -403 8.06 -1.37743721643 -0.258698770453 -404 8.08 -1.37224207403 -0.260790411767 -405 8.1 -1.3670065813 -0.262734842931 -406 8.12 -1.36173362096 -0.264538168734 -407 8.14 -1.35642595614 -0.26620624836 -408 8.16 -1.35108623513 -0.267744705599 -409 8.18 -1.34571699603 -0.269158938625 -410 8.2 -1.34032067115 -0.270454129338 -411 8.22 -1.33489959126 -0.271635252315 -412 8.24 -1.32945598963 -0.272707083354 -413 8.26 -1.32399200593 -0.273674207668 -414 8.28 -1.31850968998 -0.274541027712 -415 8.3 -1.3130110053 -0.275311770682 -416 8.32 -1.30749783257 -0.275990495686 -417 8.34 -1.30197197291 -0.276581100614 -418 8.36 -1.29643515102 -0.277087328708 -419 8.38 -1.29088901827 -0.277512774857 -420 8.4 -1.28533515553 -0.277860891625 -421 8.42 -1.279775076 -0.278134995017 -422 8.44 -1.27421022789 -0.278338270004 -423 8.46 -1.26864199697 -0.27847377582 -424 8.48 -1.26307170904 -0.278544451025 -425 8.5 -1.25750063229 -0.278553118366 -426 8.52 -1.25192997959 -0.278502489422 -427 8.54 -1.24636091063 -0.27839516907 -428 8.56 -1.24079453406 -0.278233659745 -429 8.58 -1.23523190945 -0.27802036554 -430 8.6 -1.22967404925 -0.277757596126 -431 8.62 -1.22412192063 -0.277447570509 -432 8.64 -1.21857644724 -0.277092420635 -433 8.66 -1.21303851096 -0.276694194842 -434 8.68 -1.20750895348 -0.276254861174 -435 8.7 -1.20198857794 -0.275776310556 -436 8.72 -1.19647815038 -0.275260359835 -437 8.74 -1.19097840123 -0.274708754702 -438 8.76 -1.18549002669 -0.274123172492 -439 8.78 -1.18001369009 -0.273505224869 -440 8.8 -1.17455002313 -0.272856460401 -441 8.82 -1.16909962718 -0.272178367032 -442 8.84 -1.16366307443 -0.271472374453 -443 8.86 -1.15824090903 -0.270739856375 -444 8.88 -1.1528336482 -0.269982132713 -445 8.9 -1.14744178329 -0.269200471678 -446 8.92 -1.14206578078 -0.26839609179 -447 8.94 -1.13670608326 -0.267570163805 -448 8.96 -1.13136311038 -0.266723812565 -449 8.98 -1.1260372597 -0.26585811878 -450 9.0 -1.12072890764 -0.264974120729 -451 9.02 -1.11543841024 -0.2640728159 -452 9.04 -1.11016610399 -0.263155162565 -453 9.06 -1.10491230659 -0.262222081284 -454 9.08 -1.09967731769 -0.261274456364 -455 9.1 -1.09446141962 -0.260313137244 -456 9.12 -1.08926487805 -0.259338939836 -457 9.14 -1.08408794265 -0.258352647809 -458 9.16 -1.07893084774 -0.257355013824 -459 9.18 -1.07379381288 -0.256346760718 -460 9.2 -1.06867704347 -0.255328582644 -461 9.22 -1.06358073129 -0.254301146164 -462 9.24 -1.05850505508 -0.253265091305 -463 9.26 -1.053450181 -0.252221032561 -464 9.28 -1.04841626319 -0.251169559871 -465 9.3 -1.04340344425 -0.25011123955 -466 9.32 -1.03841185563 -0.249046615186 -467 9.34 -1.03344161818 -0.2479762085 -468 9.36 -1.0284928425 -0.246900520178 -469 9.38 -1.02356562938 -0.245820030663 -470 9.4 -1.0186600702 -0.244735200927 -471 9.42 -1.01377624733 -0.243646473201 -472 9.44 -1.00891423443 -0.242554271687 -473 9.46 -1.0040740969 -0.241459003238 -474 9.48 -0.999255892143 -0.240361058009 -475 9.5 -0.994459669928 -0.239260810093 -476 9.52 -0.989685472697 -0.238158618121 -477 9.54 -0.984933335869 -0.237054825845 -478 9.56 -0.980203288132 -0.235949762702 -479 9.58 -0.975495351726 -0.234843744346 -480 9.6 -0.970809542708 -0.233737073173 -481 9.62 -0.966145871217 -0.232630038816 -482 9.64 -0.961504341725 -0.231522918625 -483 9.66 -0.956884953272 -0.230415978128 -484 9.68 -0.952287699705 -0.229309471477 -485 9.7 -0.947712569897 -0.228203641873 -486 9.72 -0.943159547963 -0.22709872198 -487 9.74 -0.938628613467 -0.225994934317 -488 9.76 -0.934119741622 -0.224892491642 -489 9.78 -0.929632903477 -0.223791597316 -490 9.8 -0.925168066109 -0.222692445658 -491 9.82 -0.920725192794 -0.221595222284 -492 9.84 -0.916304243179 -0.220500104432 -493 9.86 -0.91190517345 -0.219407261278 -494 9.88 -0.907527936486 -0.218316854241 -495 9.9 -0.903172482012 -0.217229037271 -496 9.92 -0.898838756748 -0.216143957132 -497 9.94 -0.894526704547 -0.215061753669 -498 9.96 -0.890236266534 -0.213982560076 -499 9.98 -0.885967381232 -0.212906503136 -500 10.0 -0.881719984692 -0.211833703472 -501 10.02 -0.877494010612 -0.210764275774 -502 10.04 -0.873289390453 -0.209698329022 -503 10.06 -0.869106053554 -0.208635966708 -504 10.08 -0.864943927233 -0.207577287034 -505 10.1 -0.860802936899 -0.206522383122 -506 10.12 -0.856683006147 -0.205471343199 -507 10.14 -0.852584056854 -0.204424250786 -508 10.16 -0.848506009271 -0.203381184875 -509 10.18 -0.844448782117 -0.202342220105 -510 10.2 -0.840412292656 -0.201307426921 -511 10.22 -0.836396456786 -0.20027687174 -512 10.24 -0.832401189115 -0.199250617102 -513 10.26 -0.828426403039 -0.19822872182 -514 10.28 -0.824472010811 -0.197211241119 -515 10.3 -0.820537923617 -0.196198226777 -516 10.32 -0.81662405164 -0.195189727259 -517 10.34 -0.812730304126 -0.19418578784 -518 10.36 -0.808856589444 -0.193186450732 -519 10.38 -0.805002815152 -0.1921917552 -520 10.4 -0.801168888049 -0.191201737679 -521 10.42 -0.797354714233 -0.190216431881 -522 10.44 -0.793560199154 -0.189235868906 -523 10.46 -0.789785247667 -0.188260077336 -524 10.48 -0.786029764076 -0.187289083343 -525 10.5 -0.782293652189 -0.186322910778 -526 10.52 -0.778576815358 -0.185361581264 -527 10.54 -0.774879156522 -0.184405114284 -528 10.56 -0.771200578253 -0.183453527268 -529 10.58 -0.767540982794 -0.182506835671 -530 10.6 -0.763900272099 -0.181565053055 -531 10.62 -0.760278347867 -0.180628191165 -532 10.64 -0.75667511158 -0.179696260001 -533 10.66 -0.753090464539 -0.17876926789 -534 10.68 -0.749524307893 -0.177847221551 -535 10.7 -0.745976542671 -0.176930126167 -536 10.72 -0.742447069815 -0.176017985441 -537 10.74 -0.738935790206 -0.175110801662 -538 10.76 -0.735442604695 -0.174208575761 -539 10.78 -0.731967414126 -0.173311307369 -540 10.8 -0.728510119361 -0.172418994873 -541 10.82 -0.72507062131 -0.171531635464 -542 10.84 -0.721648820948 -0.170649225192 -543 10.86 -0.718244619341 -0.169771759015 -544 10.88 -0.714857917667 -0.168899230842 -545 10.9 -0.711488617235 -0.168031633581 -546 10.92 -0.708136619505 -0.167168959186 -547 10.94 -0.704801826108 -0.166311198692 -548 10.96 -0.701484138863 -0.165458342262 -549 10.98 -0.698183459794 -0.164610379221 -550 11.0 -0.694899691148 -0.1637672981 -551 11.02 -0.691632735406 -0.162929086665 -552 11.04 -0.688382495303 -0.162095731957 -553 11.06 -0.68514887384 -0.161267220326 -554 11.08 -0.681931774298 -0.160443537459 -555 11.1 -0.678731100249 -0.159624668416 -556 11.12 -0.675546755573 -0.15881059766 -557 11.14 -0.672378644462 -0.15800130908 -558 11.16 -0.669226671439 -0.157196786028 -559 11.18 -0.666090741365 -0.156397011339 -560 11.2 -0.662970759447 -0.155601967361 -561 11.22 -0.659866631253 -0.154811635976 -562 11.24 -0.656778262715 -0.154025998629 -563 11.26 -0.653705560141 -0.153245036348 -564 11.28 -0.650648430223 -0.152468729768 -565 11.3 -0.647606780043 -0.15169705915 -566 11.32 -0.644580517084 -0.150930004405 -567 11.34 -0.641569549231 -0.150167545112 -568 11.36 -0.638573784781 -0.149409660536 -569 11.38 -0.635593132451 -0.148656329652 -570 11.4 -0.632627501379 -0.147907531156 -571 11.42 -0.629676801133 -0.147163243484 -572 11.44 -0.626740941713 -0.146423444834 -573 11.46 -0.62381983356 -0.145688113174 -574 11.48 -0.620913387554 -0.144957226261 -575 11.5 -0.618021515027 -0.144230761656 -576 11.52 -0.615144127757 -0.143508696739 -577 11.54 -0.612281137978 -0.14279100872 -578 11.56 -0.609432458382 -0.142077674653 -579 11.58 -0.606598002119 -0.141368671449 -580 11.6 -0.603777682806 -0.140663975889 -581 11.62 -0.600971414522 -0.139963564633 -582 11.64 -0.598179111815 -0.139267414235 -583 11.66 -0.595400689704 -0.138575501149 -584 11.68 -0.592636063678 -0.137887801745 -585 11.7 -0.589885149701 -0.137204292313 -586 11.72 -0.587147864211 -0.136524949077 -587 11.74 -0.584424124122 -0.135849748201 -588 11.76 -0.581713846826 -0.135178665802 -589 11.78 -0.579016950193 -0.134511677954 -590 11.8 -0.576333352571 -0.133848760697 -591 11.82 -0.573662972788 -0.133189890048 -592 11.84 -0.571005730151 -0.132535042004 -593 11.86 -0.56836154445 -0.131884192552 -594 11.88 -0.565730335952 -0.131237317677 -595 11.9 -0.563112025406 -0.130594393364 -596 11.92 -0.560506534041 -0.129955395608 -597 11.94 -0.557913783565 -0.129320300421 -598 11.96 -0.555333696166 -0.128689083832 -599 11.98 -0.552766194514 -0.1280617219 -600 12.0 -0.550211201752 -0.127438190715 -601 12.02 -0.547668641506 -0.126818466403 -602 12.04 -0.545138437876 -0.126202525133 -603 12.06 -0.542620515439 -0.125590343118 -604 12.08 -0.540114799247 -0.124981896625 -605 12.1 -0.537621214828 -0.124377161973 -606 12.12 -0.53513968818 -0.123776115544 -607 12.14 -0.532670145775 -0.123178733779 -608 12.16 -0.530212514555 -0.122584993188 -609 12.18 -0.52776672193 -0.121994870352 -610 12.2 -0.525332695778 -0.121408341923 -611 12.22 -0.522910364445 -0.120825384632 -612 12.24 -0.52049965674 -0.120245975289 -613 12.26 -0.518100501935 -0.119670090788 -614 12.28 -0.515712829763 -0.119097708107 -615 12.3 -0.513336570418 -0.118528804313 -616 12.32 -0.51097165455 -0.117963356563 -617 12.34 -0.508618013267 -0.11740134211 -618 12.36 -0.506275578128 -0.116842738298 -619 12.38 -0.503944281147 -0.116287522571 -620 12.4 -0.501624054788 -0.115735672472 -621 12.42 -0.49931483196 -0.115187165645 -622 12.44 -0.497016546022 -0.114641979838 -623 12.46 -0.494729130774 -0.114100092904 -624 12.48 -0.49245252046 -0.1135614828 -625 12.5 -0.490186649763 -0.113026127594 -626 12.52 -0.487931453803 -0.112494005462 -627 12.54 -0.485686868135 -0.11196509469 -628 12.56 -0.48345282875 -0.111439373678 -629 12.58 -0.481229272066 -0.110916820936 -630 12.6 -0.479016134933 -0.110397415091 -631 12.62 -0.476813354625 -0.109881134884 -632 12.64 -0.474620868841 -0.109367959171 -633 12.66 -0.472438615702 -0.108857866928 -634 12.68 -0.470266533747 -0.108350837244 -635 12.7 -0.468104561934 -0.107846849332 -636 12.72 -0.465952639633 -0.107345882519 -637 12.74 -0.463810706629 -0.106847916255 -638 12.76 -0.461678703116 -0.106352930108 -639 12.78 -0.459556569693 -0.105860903769 -640 12.8 -0.457444247367 -0.105371817049 -641 12.82 -0.455341677547 -0.10488564988 -642 12.84 -0.453248802042 -0.104402382317 -643 12.86 -0.451165563056 -0.103921994536 -644 12.88 -0.449091903193 -0.103444466836 -645 12.9 -0.447027765446 -0.102969779639 -646 12.92 -0.4449730932 -0.102497913489 -647 12.94 -0.442927830229 -0.102028849053 -648 12.96 -0.440891920688 -0.101562567122 -649 12.98 -0.438865309121 -0.101099048608 -650 13.0 -0.436847940448 -0.100638274548 -651 13.02 -0.434839759968 -0.100180226101 -652 13.04 -0.432840713358 -0.0997248845489 -653 13.06 -0.430850746664 -0.0992722312959 -654 13.08 -0.428869806307 -0.0988222478696 -655 13.1 -0.426897839073 -0.0983749159199 -656 13.12 -0.424934792115 -0.0979302172191 -657 13.14 -0.42298061295 -0.0974881336614 -658 13.16 -0.421035249454 -0.097048647263 -659 13.18 -0.419098649864 -0.0966117401617 -660 13.2 -0.417170762771 -0.0961773946166 -661 13.22 -0.41525153712 -0.0957455930079 -662 13.24 -0.413340922208 -0.0953163178365 -663 13.26 -0.411438867679 -0.0948895517235 -664 13.28 -0.409545323527 -0.0944652774101 -665 13.3 -0.407660240085 -0.0940434777572 -666 13.32 -0.405783568032 -0.0936241357448 -667 13.34 -0.403915258384 -0.0932072344716 -668 13.36 -0.402055262494 -0.0927927571548 -669 13.38 -0.400203532049 -0.0923806871294 -670 13.4 -0.39836001907 -0.091971007848 -671 13.42 -0.396524675907 -0.0915637028799 -672 13.44 -0.394697455235 -0.0911587559112 -673 13.46 -0.392878310058 -0.0907561507435 -674 13.48 -0.391067193701 -0.0903558712944 -675 13.5 -0.389264059808 -0.0899579015961 -676 13.52 -0.387468862344 -0.0895622257951 -677 13.54 -0.385681555589 -0.089168828152 -678 13.56 -0.383902094135 -0.0887776930406 -679 13.58 -0.382130432887 -0.0883888049474 -680 13.6 -0.380366527059 -0.088002148471 -681 13.62 -0.378610332173 -0.0876177083216 -682 13.64 -0.376861804052 -0.0872354693205 -683 13.66 -0.375120898826 -0.0868554163993 -684 13.68 -0.373387572922 -0.0864775345994 -685 13.7 -0.371661783067 -0.0861018090713 -686 13.72 -0.369943486282 -0.0857282250742 -687 13.74 -0.368232639885 -0.0853567679751 -688 13.76 -0.366529201481 -0.0849874232486 -689 13.78 -0.364833128968 -0.0846201764757 -690 13.8 -0.363144380531 -0.0842550133436 -691 13.82 -0.361462914638 -0.083891919645 -692 13.84 -0.359788690043 -0.0835308812773 -693 13.86 -0.358121665778 -0.0831718842421 -694 13.88 -0.356461801157 -0.0828149146446 -695 13.9 -0.354809055768 -0.0824599586927 -696 13.92 -0.353163389476 -0.0821070026966 -697 13.94 -0.351524762418 -0.0817560330682 -698 13.96 -0.349893135001 -0.0814070363201 -699 13.98 -0.348268467902 -0.0810599990654 -700 14.0 -0.346650722064 -0.0807149080166 -701 14.02 -0.345039858694 -0.0803717499853 -702 14.04 -0.343435839265 -0.0800305118814 -703 14.06 -0.341838625506 -0.0796911807123 -704 14.08 -0.340248179409 -0.0793537435825 -705 14.1 -0.338664463221 -0.079018187693 -706 14.12 -0.337087439445 -0.0786845003402 -707 14.14 -0.335517070835 -0.0783526689157 -708 14.16 -0.333953320399 -0.0780226809053 -709 14.18 -0.332396151392 -0.0776945238888 -710 14.2 -0.330845527319 -0.0773681855387 -711 14.22 -0.329301411928 -0.0770436536203 -712 14.24 -0.327763769212 -0.0767209159903 -713 14.26 -0.326232563407 -0.0763999605967 -714 14.28 -0.324707758986 -0.076080775478 -715 14.3 -0.323189320665 -0.0757633487623 -716 14.32 -0.321677213392 -0.075447668667 -717 14.34 -0.320171402352 -0.0751337234981 -718 14.36 -0.318671852963 -0.0748215016493 -719 14.38 -0.317178530874 -0.0745109916017 -720 14.4 -0.315691401963 -0.0742021819228 -721 14.42 -0.314210432337 -0.0738950612663 -722 14.44 -0.312735588328 -0.073589618371 -723 14.46 -0.311266836492 -0.0732858420606 -724 14.48 -0.309804143609 -0.0729837212427 -725 14.5 -0.308347476679 -0.0726832449085 -726 14.52 -0.306896802922 -0.0723844021319 -727 14.54 -0.305452089775 -0.072087182069 -728 14.56 -0.304013304893 -0.0717915739575 -729 14.58 -0.302580416142 -0.0714975671162 -730 14.6 -0.301153391604 -0.071205150944 -731 14.62 -0.29973219957 -0.0709143149198 -732 14.64 -0.298316808542 -0.0706250486013 -733 14.66 -0.29690718723 -0.0703373416252 -734 14.68 -0.29550330455 -0.0700511837056 -735 14.7 -0.294105129623 -0.0697665646344 -736 14.72 -0.292712631773 -0.06948347428 -737 14.74 -0.291325780527 -0.069201902587 -738 14.76 -0.289944545612 -0.0689218395755 -739 14.78 -0.288568896953 -0.0686432753407 -740 14.8 -0.287198804672 -0.068366200052 -741 14.82 -0.285834239089 -0.0680906039529 -742 14.84 -0.284475170717 -0.0678164773599 -743 14.86 -0.283121570262 -0.0675438106623 -744 14.88 -0.281773408622 -0.0672725943215 -745 14.9 -0.280430656883 -0.0670028188703 -746 14.92 -0.279093286324 -0.0667344749127 -747 14.94 -0.277761268406 -0.066467553123 -748 14.96 -0.276434574779 -0.0662020442454 -749 14.98 -0.275113177278 -0.0659379390934 -750 15.0 -0.273797047918 -0.0656752285492 -751 15.02 -0.272486158899 -0.0654139035635 -752 15.04 -0.271180482599 -0.0651539551544 -753 15.06 -0.269879991575 -0.0648953744073 -754 15.08 -0.268584658563 -0.0646381524742 -755 15.1 -0.267294456476 -0.0643822805732 -756 15.12 -0.266009358398 -0.064127749988 -757 15.14 -0.264729337592 -0.0638745520673 -758 15.16 -0.263454367489 -0.0636226782243 -759 15.18 -0.262184421693 -0.0633721199364 -760 15.2 -0.260919473977 -0.0631228687444 -761 15.22 -0.259659498285 -0.062874916252 -762 15.24 -0.258404468725 -0.0626282541256 -763 15.26 -0.257154359572 -0.0623828740934 -764 15.28 -0.255909145268 -0.0621387679452 -765 15.3 -0.254668800416 -0.061895927532 -766 15.32 -0.253433299783 -0.061654344765 -767 15.34 -0.252202618295 -0.0614140116156 -768 15.36 -0.250976731041 -0.0611749201148 -769 15.38 -0.249755613266 -0.0609370623526 -770 15.4 -0.248539240374 -0.0607004304776 -771 15.42 -0.247327587926 -0.0604650166966 -772 15.44 -0.246120631637 -0.0602308132741 -773 15.46 -0.244918347377 -0.0599978125317 -774 15.48 -0.243720711169 -0.0597660068478 -775 15.5 -0.242527699187 -0.0595353886571 -776 15.52 -0.241339287756 -0.05930595045 -777 15.54 -0.240155453352 -0.0590776847726 -778 15.56 -0.238976172597 -0.0588505842256 -779 15.58 -0.237801422264 -0.0586246414643 -780 15.6 -0.236631179269 -0.0583998491983 -781 15.62 -0.235465420674 -0.0581762001905 -782 15.64 -0.234304123687 -0.057953687257 -783 15.66 -0.233147265658 -0.057732303267 -784 15.68 -0.231994824078 -0.0575120411416 -785 15.7 -0.23084677658 -0.0572928938542 -786 15.72 -0.229703100938 -0.0570748544293 -787 15.74 -0.228563775063 -0.0568579159429 -788 15.76 -0.227428777006 -0.0566420715213 -789 15.78 -0.226298084954 -0.0564273143414 -790 15.8 -0.22517167723 -0.0562136376296 -791 15.82 -0.224049532291 -0.0560010346619 -792 15.84 -0.222931628729 -0.0557894987635 -793 15.86 -0.22181794527 -0.0555790233081 -794 15.88 -0.220708460771 -0.0553696017175 -795 15.9 -0.21960315422 -0.0551612274618 -796 15.92 -0.218502004734 -0.0549538940582 -797 15.94 -0.217404991561 -0.0547475950712 -798 15.96 -0.216312094077 -0.0545423241119 -799 15.98 -0.215223291785 -0.0543380748379 -800 16.0 -0.214138564315 -0.0541348409526 -801 16.02 -0.21305789142 -0.0539326162051 -802 16.04 -0.21198125298 -0.0537313943897 -803 16.06 -0.210908628999 -0.0535311693457 -804 16.08 -0.209839999602 -0.0533319349567 -805 16.1 -0.208775345037 -0.0531336851505 -806 16.12 -0.207714645672 -0.0529364138987 -807 16.14 -0.206657881997 -0.0527401152166 -808 16.16 -0.205605034619 -0.0525447831621 -809 16.18 -0.204556084266 -0.0523504118362 -810 16.2 -0.20351101178 -0.0521569953823 -811 16.22 -0.202469798123 -0.0519645279856 -812 16.24 -0.201432424372 -0.0517730038733 -813 16.26 -0.200398871718 -0.0515824173138 -814 16.28 -0.199369121467 -0.0513927626166 -815 16.3 -0.198343155039 -0.051204034132 -816 16.32 -0.197320953965 -0.0510162262506 -817 16.34 -0.196302499889 -0.050829333403 -818 16.36 -0.195287774565 -0.0506433500599 -819 16.38 -0.194276759859 -0.0504582707309 -820 16.4 -0.193269437746 -0.0502740899651 -821 16.42 -0.192265790306 -0.0500908023503 -822 16.44 -0.191265799733 -0.0499084025129 -823 16.46 -0.190269448323 -0.0497268851171 -824 16.48 -0.189276718481 -0.0495462448654 -825 16.5 -0.188287592716 -0.0493664764977 -826 16.52 -0.187302053643 -0.0491875747911 -827 16.54 -0.186320083981 -0.0490095345599 -828 16.56 -0.185341666552 -0.0488323506547 -829 16.58 -0.18436678428 -0.0486560179629 -830 16.6 -0.183395420192 -0.0484805314077 -831 16.62 -0.182427557417 -0.0483058859483 -832 16.64 -0.181463179181 -0.0481320765793 -833 16.66 -0.180502268813 -0.0479590983305 -834 16.68 -0.179544809739 -0.0477869462668 -835 16.7 -0.178590785487 -0.0476156154877 -836 16.72 -0.177640179677 -0.0474451011271 -837 16.74 -0.176692976031 -0.0472753983531 -838 16.76 -0.175749158364 -0.0471065023674 -839 16.78 -0.174808710589 -0.0469384084057 -840 16.8 -0.173871616713 -0.0467711117367 -841 16.82 -0.172937860836 -0.0466046076623 -842 16.84 -0.172007427154 -0.0464388915171 -843 16.86 -0.171080299953 -0.0462739586683 -844 16.88 -0.170156463616 -0.0461098045155 -845 16.9 -0.169235902612 -0.04594642449 -846 16.92 -0.168318601505 -0.0457838140552 -847 16.94 -0.167404544949 -0.0456219687059 -848 16.96 -0.166493717686 -0.0454608839681 -849 16.98 -0.165586104549 -0.0453005553988 -850 17.0 -0.164681690459 -0.045140978586 -851 17.02 -0.163780460423 -0.044982149148 -852 17.04 -0.162882399539 -0.0448240627335 -853 17.06 -0.161987492989 -0.0446667150213 -854 17.08 -0.161095726042 -0.0445101017198 -855 17.1 -0.160207084053 -0.0443542185673 -856 17.12 -0.15932155246 -0.0441990613312 -857 17.14 -0.158439116788 -0.0440446258081 -858 17.16 -0.157559762644 -0.0438909078236 -859 17.18 -0.156683475719 -0.0437379032318 -860 17.2 -0.155810241787 -0.0435856079154 -861 17.22 -0.154940046702 -0.0434340177851 -862 17.24 -0.154072876401 -0.0432831287799 -863 17.26 -0.153208716903 -0.0431329368663 -864 17.28 -0.152347554306 -0.0429834380385 -865 17.3 -0.151489374787 -0.0428346283181 -866 17.32 -0.150634164605 -0.0426865037537 -867 17.34 -0.149781910096 -0.0425390604208 -868 17.36 -0.148932597673 -0.0423922944219 -869 17.38 -0.148086213829 -0.0422462018856 -870 17.4 -0.147242745133 -0.0421007789672 -871 17.42 -0.146402178232 -0.0419560218477 -872 17.44 -0.145564499846 -0.0418119267343 -873 17.46 -0.144729696774 -0.0416684898597 -874 17.48 -0.143897755889 -0.0415257074823 -875 17.5 -0.143068664136 -0.0413835758856 -876 17.52 -0.142242408539 -0.0412420913782 -877 17.54 -0.141418976192 -0.0411012502937 -878 17.56 -0.140598354262 -0.0409610489904 -879 17.58 -0.139780529991 -0.0408214838511 -880 17.6 -0.138965490691 -0.040682551283 -881 17.62 -0.138153223746 -0.0405442477172 -882 17.64 -0.137343716613 -0.0404065696091 -883 17.66 -0.136536956816 -0.0402695134376 -884 17.68 -0.135732931952 -0.0401330757054 -885 17.7 -0.134931629688 -0.0399972529384 -886 17.72 -0.134133037758 -0.0398620416858 -887 17.74 -0.133337143966 -0.0397274385201 -888 17.76 -0.132543936186 -0.0395934400363 -889 17.78 -0.131753402356 -0.0394600428522 -890 17.8 -0.130965530486 -0.0393272436083 -891 17.82 -0.130180308648 -0.0391950389674 -892 17.84 -0.129397724985 -0.0390634256142 -893 17.86 -0.128617767704 -0.0389324002559 -894 17.88 -0.127840425077 -0.0388019596211 -895 17.9 -0.127065685442 -0.0386721004602 -896 17.92 -0.126293537203 -0.0385428195454 -897 17.94 -0.125523968827 -0.0384141136698 -898 17.96 -0.124756968844 -0.038285979648 -899 17.98 -0.12399252585 -0.0381584143155 -900 18.0 -0.123230628501 -0.0380314145287 -901 18.02 -0.122471265519 -0.0379049771648 -902 18.04 -0.121714425686 -0.0377790991214 -903 18.06 -0.120960097846 -0.0376537773164 -904 18.08 -0.120208270905 -0.0375290086883 -905 18.1 -0.119458933831 -0.0374047901954 -906 18.12 -0.11871207565 -0.0372811188161 -907 18.14 -0.117967685451 -0.0371579915483 -908 18.16 -0.117225752381 -0.0370354054099 -909 18.18 -0.116486265647 -0.0369133574381 -910 18.2 -0.115749214515 -0.0367918446895 -911 18.22 -0.11501458831 -0.0366708642398 -912 18.24 -0.114282376416 -0.0365504131839 -913 18.26 -0.113552568273 -0.0364304886354 -914 18.28 -0.11282515338 -0.0363110877269 -915 18.3 -0.112100121292 -0.0361922076096 -916 18.32 -0.111377461622 -0.0360738454529 -917 18.34 -0.110657164039 -0.0359559984449 -918 18.36 -0.109939218269 -0.0358386637917 -919 18.38 -0.109223614091 -0.0357218387177 -920 18.4 -0.108510341341 -0.0356055204649 -921 18.42 -0.107799389911 -0.0354897062933 -922 18.44 -0.107090749747 -0.0353743934808 -923 18.46 -0.106384410848 -0.0352595793223 -924 18.48 -0.105680363268 -0.0351452611307 -925 18.5 -0.104978597114 -0.0350314362357 -926 18.52 -0.104279102547 -0.0349181019845 -927 18.54 -0.103581869781 -0.0348052557411 -928 18.56 -0.102886889082 -0.0346928948865 -929 18.58 -0.102194150767 -0.0345810168186 -930 18.6 -0.101503645208 -0.0344696189517 -931 18.62 -0.100815362825 -0.0343586987167 -932 18.64 -0.100129294092 -0.0342482535611 -933 18.66 -0.0994454295322 -0.0341382809484 -934 18.68 -0.0987637597204 -0.0340287783585 -935 18.7 -0.0980842752811 -0.0339197432873 -936 18.72 -0.0974069668887 -0.0338111732465 -937 18.74 -0.0967318252675 -0.0337030657637 -938 18.76 -0.0960588411908 -0.0335954183822 -939 18.78 -0.0953880054812 -0.0334882286609 -940 18.8 -0.0947193090095 -0.0333814941741 -941 18.82 -0.0940527426954 -0.0332752125115 -942 18.84 -0.0933882975062 -0.0331693812782 -943 18.86 -0.0927259644573 -0.033063998094 -944 18.88 -0.0920657346112 -0.0329590605941 -945 18.9 -0.0914075990779 -0.0328545664286 -946 18.92 -0.0907515490141 -0.0327505132621 -947 18.94 -0.0900975756229 -0.0326468987742 -948 18.96 -0.089445670154 -0.032543720659 -949 18.98 -0.0887958239027 -0.0324409766249 -950 19.0 -0.0881480282103 -0.032338664395 -951 19.02 -0.0875022744633 -0.0322367817064 -952 19.04 -0.0868585540934 -0.0321353263106 -953 19.06 -0.0862168585771 -0.0320342959728 -954 19.08 -0.0855771794356 -0.0319336884725 -955 19.1 -0.084939508234 -0.0318335016031 -956 19.12 -0.0843038365819 -0.0317337331714 -957 19.14 -0.0836701561321 -0.0316343809981 -958 19.16 -0.0830384585813 -0.0315354429176 -959 19.18 -0.0824087356692 -0.0314369167774 -960 19.2 -0.0817809791782 -0.0313388004388 -961 19.22 -0.0811551809338 -0.031241091776 -962 19.24 -0.0805313328034 -0.0311437886765 -963 19.26 -0.079909426697 -0.031046889041 -964 19.28 -0.079289454566 -0.030950390783 -965 19.3 -0.0786714084036 -0.0308542918291 -966 19.32 -0.0780552802445 -0.0307585901186 -967 19.34 -0.0774410621642 -0.0306632836034 -968 19.36 -0.0768287462793 -0.0305683702482 -969 19.38 -0.0762183247467 -0.0304738480301 -970 19.4 -0.0756097897639 -0.0303797149388 -971 19.42 -0.0750031335683 -0.0302859689762 -972 19.44 -0.0743983484373 -0.0301926081566 -973 19.46 -0.0737954266876 -0.0300996305063 -974 19.48 -0.0731943606756 -0.0300070340638 -975 19.5 -0.0725951427967 -0.0299148168796 -976 19.52 -0.071997765485 -0.0298229770161 -977 19.54 -0.0714022212134 -0.0297315125477 -978 19.56 -0.0708085024932 -0.0296404215602 -979 19.58 -0.0702166018738 -0.0295497021514 -980 19.6 -0.0696265119425 -0.0294593524306 -981 19.62 -0.0690382253245 -0.0293693705184 -982 19.64 -0.0684517346822 -0.0292797545471 -983 19.66 -0.0678670327154 -0.0291905026603 -984 19.68 -0.0672841121609 -0.0291016130126 -985 19.7 -0.0667029657922 -0.0290130837702 -986 19.72 -0.0661235864195 -0.02892491311 -987 19.74 -0.0655459668893 -0.0288370992202 -988 19.76 -0.0649701000843 -0.0287496402998 -989 19.78 -0.0643959789228 -0.0286625345588 -990 19.8 -0.0638235963592 -0.028575780218 -991 19.82 -0.0632529453832 -0.0284893755087 -992 19.84 -0.0626840190197 -0.0284033186731 -993 19.86 -0.0621168103288 -0.0283176079638 -994 19.88 -0.0615513124053 -0.0282322416441 -995 19.9 -0.0609875183786 -0.0281472179874 -996 19.92 -0.0604254214128 -0.0280625352778 -997 19.94 -0.0598650147059 -0.0279781918096 -998 19.96 -0.0593062914901 -0.027894185887 -999 19.98 -0.0587492450313 -0.0278105158248 -1000 20.0 -0.0581938686292 -0.0277271799475 -1001 20.02 -0.0576401556166 -0.0276441765898 -1002 20.04 -0.0570880993599 -0.0275615040963 -1003 20.06 -0.056537693258 -0.0274791608214 -1004 20.08 -0.0559889307431 -0.0273971451294 -1005 20.1 -0.0554418052798 -0.0273154553941 -1006 20.12 -0.0548963103651 -0.0272340899992 -1007 20.14 -0.0543524395283 -0.0271530473379 -1008 20.16 -0.0538101863307 -0.027072325813 -1009 20.18 -0.0532695443654 -0.0269919238365 -1010 20.2 -0.0527305072574 -0.0269118398301 -1011 20.22 -0.0521930686629 -0.0268320722247 -1012 20.24 -0.0516572222695 -0.0267526194605 -1013 20.26 -0.0511229617959 -0.0266734799867 -1014 20.28 -0.0505902809917 -0.0265946522621 -1015 20.3 -0.0500591736373 -0.026516134754 -1016 20.32 -0.0495296335436 -0.0264379259393 -1017 20.34 -0.0490016545518 -0.0263600243033 -1018 20.36 -0.0484752305336 -0.0262824283405 -1019 20.38 -0.0479503553904 -0.0262051365543 -1020 20.4 -0.0474270230535 -0.0261281474567 -1021 20.42 -0.0469052274841 -0.0260514595684 -1022 20.44 -0.0463849626725 -0.0259750714189 -1023 20.46 -0.0458662226388 -0.0258989815462 -1024 20.48 -0.0453490014319 -0.0258231884968 -1025 20.5 -0.0448332931297 -0.0257476908257 -1026 20.52 -0.0443190918392 -0.0256724870964 -1027 20.54 -0.0438063916958 -0.0255975758806 -1028 20.56 -0.0432951868634 -0.0255229557586 -1029 20.58 -0.0427854715342 -0.0254486253186 -1030 20.6 -0.0422772399288 -0.0253745831572 -1031 20.62 -0.0417704862954 -0.0253008278792 -1032 20.64 -0.0412652049103 -0.0252273580972 -1033 20.66 -0.0407613900774 -0.0251541724321 -1034 20.68 -0.040259036128 -0.0250812695126 -1035 20.7 -0.039758137421 -0.0250086479756 -1036 20.72 -0.0392586883422 -0.0249363064654 -1037 20.74 -0.0387606833045 -0.0248642436347 -1038 20.76 -0.0382641167479 -0.0247924581434 -1039 20.78 -0.0377689831387 -0.0247209486595 -1040 20.8 -0.0372752769703 -0.0246497138585 -1041 20.82 -0.036782992762 -0.0245787524235 -1042 20.84 -0.0362921250596 -0.0245080630453 -1043 20.86 -0.0358026684351 -0.0244376444219 -1044 20.88 -0.0353146174863 -0.0243674952592 -1045 20.9 -0.0348279668369 -0.0242976142701 -1046 20.92 -0.0343427111362 -0.0242280001751 -1047 20.94 -0.0338588450591 -0.0241586517019 -1048 20.96 -0.0333763633058 -0.0240895675856 -1049 20.98 -0.0328952606017 -0.0240207465683 -1050 21.0 -0.0324155316974 -0.0239521873994 -1051 21.02 -0.0319371713684 -0.0238838888354 -1052 21.04 -0.0314601744149 -0.0238158496399 -1053 21.06 -0.0309845356618 -0.0237480685835 -1054 21.08 -0.0305102499587 -0.0236805444437 -1055 21.1 -0.0300373121794 -0.0236132760051 -1056 21.12 -0.0295657172219 -0.023546262059 -1057 21.14 -0.0290954600085 -0.0234795014037 -1058 21.16 -0.0286265354851 -0.0234129928442 -1059 21.18 -0.028158938622 -0.0233467351922 -1060 21.2 -0.0276926644126 -0.0232807272662 -1061 21.22 -0.0272277078743 -0.0232149678915 -1062 21.24 -0.0267640640477 -0.0231494558997 -1063 21.26 -0.0263017279969 -0.0230841901292 -1064 21.28 -0.0258406948088 -0.0230191694249 -1065 21.3 -0.0253809595937 -0.0229543926381 -1066 21.32 -0.0249225174848 -0.0228898586266 -1067 21.34 -0.0244653636377 -0.0228255662547 -1068 21.36 -0.0240094932312 -0.0227615143929 -1069 21.38 -0.0235549014661 -0.0226977019182 -1070 21.4 -0.023101583566 -0.0226341277136 -1071 21.42 -0.0226495347765 -0.0225707906687 -1072 21.44 -0.0221987503655 -0.0225076896791 -1073 21.46 -0.021749225623 -0.0224448236465 -1074 21.48 -0.0213009558606 -0.0223821914788 -1075 21.5 -0.020853936412 -0.02231979209 -1076 21.52 -0.0204081626323 -0.0222576244002 -1077 21.54 -0.0199636298985 -0.0221956873354 -1078 21.56 -0.0195203336085 -0.0221339798275 -1079 21.58 -0.0190782691821 -0.0220725008144 -1080 21.6 -0.0186374320597 -0.02201124924 -1081 21.62 -0.0181978177032 -0.0219502240539 -1082 21.64 -0.0177594215953 -0.0218894242115 -1083 21.66 -0.0173222392394 -0.0218288486741 -1084 21.68 -0.0168862661598 -0.0217684964086 -1085 21.7 -0.0164514979014 -0.0217083663878 -1086 21.72 -0.0160179300295 -0.0216484575898 -1087 21.74 -0.0155855581298 -0.0215887689986 -1088 21.76 -0.0151543778082 -0.0215292996039 -1089 21.78 -0.014724384691 -0.0214700484006 -1090 21.8 -0.0142955744243 -0.0214110143895 -1091 21.82 -0.0138679426741 -0.0213521965765 -1092 21.84 -0.0134414851265 -0.0212935939733 -1093 21.86 -0.013016197487 -0.0212352055967 -1094 21.88 -0.0125920754809 -0.0211770304692 -1095 21.9 -0.012169114853 -0.0211190676184 -1096 21.92 -0.0117473113675 -0.0210613160772 -1097 21.94 -0.0113266608076 -0.021003774884 -1098 21.96 -0.0109071589762 -0.0209464430823 -1099 21.98 -0.0104888016947 -0.0208893197208 -1100 22.0 -0.010071584804 -0.0208324038534 -1101 22.02 -0.00965550416359 -0.0207756945391 -1102 22.04 -0.0092405556517 -0.020719190842 -1103 22.06 -0.00882673516534 -0.0206628918315 -1104 22.08 -0.00841403862003 -0.0206067965819 -1105 22.1 -0.0080024619498 -0.0205509041723 -1106 22.12 -0.00759200110698 -0.0204952136871 -1107 22.14 -0.00718265206222 -0.0204397242155 -1108 22.16 -0.00677441080431 -0.0203844348517 -1109 22.18 -0.00636727334011 -0.0203293446947 -1110 22.2 -0.00596123569445 -0.0202744528484 -1111 22.22 -0.00555629391005 -0.0202197584216 -1112 22.24 -0.00515244404737 -0.0201652605278 -1113 22.26 -0.00474968218459 -0.0201109582853 -1114 22.28 -0.00434800441746 -0.0200568508172 -1115 22.3 -0.00394740685922 -0.0200029372512 -1116 22.32 -0.00354788564052 -0.0199492167196 -1117 22.34 -0.0031494369093 -0.0198956883597 -1118 22.36 -0.00275205683071 -0.0198423513132 -1119 22.38 -0.00235574158704 -0.0197892047262 -1120 22.4 -0.00196048737759 -0.0197362477497 -1121 22.42 -0.00156629041861 -0.0196834795391 -1122 22.44 -0.00117314694319 -0.0196308992543 -1123 22.46 -0.000781053201174 -0.0195785060596 -1124 22.48 -0.000390005459079 -0.019526299124 -1125 22.5 0.0 -0.0194742776206 -1126 22.52 0.0 0.0 -1127 22.54 0.0 0.0 -1128 22.56 0.0 0.0 -1129 22.58 0.0 0.0 -1130 22.6 0.0 0.0 diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.min b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.min deleted file mode 100644 index 2fc8fbba75..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.min +++ /dev/null @@ -1,35 +0,0 @@ -# -------- REQUIREMENTS: --------- -# 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# 2) It also may require additional features and bug fixes for LAMMPS. -# So, after typing "make yes-user-misc" in to the shell, ... -# be sure to download and copy the "additional_lammps_code" from -# http://moltemplate.org (upper-left corner menu) -# 3) Unpack it -# 4) copy the .cpp and .h files to the src folding of your lammps installation. -# 5) Compile LAMMPS. -# -# If LAMMPS complains about an "Invalid pair_style", or "Invalid dihedral_style" -# then you made a mistake in the instructions above. - - - -# -- Init section -- - -include system.in.init - -# -- Atom definition section -- - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run section -- - -dump 1 all custom 50 traj_min.lammpstrj id mol type x y z ix iy iz - -minimize 1.0e-5 1.0e-7 500 2000 - -write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.npt b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.npt deleted file mode 100644 index cbf76ac2db..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.npt +++ /dev/null @@ -1,66 +0,0 @@ -# PREREQUISITES: -# -# You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, or run it using ./README_sh.) -# -# -------- REQUIREMENTS: --------- -# 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# 2) It also may require additional features and bug fixes for LAMMPS. -# So, after typing "make yes-user-misc" in to the shell, ... -# be sure to download and copy the "additional_lammps_code" from -# http://moltemplate.org (upper-left corner menu) -# 3) Unpack it -# 4) copy the .cpp and .h files to the src folding of your lammps installation. -# 5) Compile LAMMPS. -# -# If LAMMPS complains about an "Invalid pair_style", or "Invalid dihedral_style" -# then you made a mistake in the instructions above. -# - -# -- Init Section -- - -include system.in.init - -# -- Atom Definition Section -- - -#read_data system.data -read_data system_after_min.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run Section -- - -#minimize 1.0e-5 1.0e-7 500 2000 - -timestep 10.0 # The time-step in Watson et. al 2011 was 0.002*3ps = 6fs -dump 1 all custom 10000 traj_npt.lammpstrj id mol type x y z ix iy iz - - -thermo_style custom step temp pe etotal vol epair ebond eangle -thermo 1000 # time interval for printing out "thermo" data - - -fix fxlan all langevin 300.0 300.0 120 48279 -fix fxnph all nph x 0 0 1000 y 0 0 1000 couple xy - - -# Note: The temperature 300.0 K corresponds to 0.907033536873*epsilon -# (for the "epsilon" used by the coarse-grained lipid), and -# to 0.33*epsilon (for the "epsilon" used in the coarse-grained protein) -# Note: The langevin damping parameter "120" corresponds to -# the 0.12ps damping time used in Watson et. al JCP 2011. -# Note: We maintain the system system at constant (zero) tention -# using a barostat damping parameter Pdamp=1000 ("0 0 1000") - - -# optional (not sure if this helps): -# balance x uniform y uniform - - -run 100000 - -write_data system_after_npt.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.nvt b/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.nvt deleted file mode 100644 index 05f533339f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.nvt +++ /dev/null @@ -1,71 +0,0 @@ -# PREREQUISITES: -# -# 1) You must use moltemplate.sh to create 3 files: -# system.data system.in.init system.in.settings -# (Follow the instructions in README_setup.sh, or run it using ./README_sh.) -# 2) You must equilibrate the system beforehand using "run.in.npt". -# This will create the file "system_after_npt.data" which this file reads. -# (Note: I have not verified that this equilibration protocol works well.) -# -# -------- LAMMPS REQUIREMENTS: --------- -# 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# 2) It also may require additional features and bug fixes for LAMMPS. -# So, after typing "make yes-user-misc" in to the shell, ... -# be sure to download and copy the "additional_lammps_code" from -# http://moltemplate.org (upper-left corner menu) -# 3) Unpack it -# 4) copy the .cpp and .h files to the src folding of your lammps installation. -# 5) Compile LAMMPS. -# -# If LAMMPS complains about an "Invalid pair_style", or "Invalid dihedral_style" -# then you made a mistake in the instructions above. -# -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - - -# Read the coordinates generated by an earlier NPT simulation - -read_data system_after_npt.data - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also. I prefer "write_data" and "read_data".) - - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - - -timestep 10.0 # The time-step in Watson et. al 2011 was 0.002*3ps = 6fs -dump 1 all custom 10000 traj_nvt.lammpstrj id mol type x y z ix iy iz - - -thermo_style custom step temp pe etotal vol epair ebond eangle -thermo 1000 # time interval for printing out "thermo" data - - -fix fxlan all langevin 300.0 300.0 120 48279 -fix fxnve all nve - -# Note: The energy scale "epsilon" = 2.75kJ/mole = 330.7485200981 Kelvin*kB. -# So a temperature of 300.0 Kelvin corresponds to 0.907033536873*epsilon. -# Note: The langevin damping parameter "120" corresponds to -# the 0.12ps damping time used in Watson et. al JCP 2011. - -#restart 500000 - -run 50000000 - - -write_data system_after_nvt.data - -# (The "write_restart" and "read_restart" commands were buggy in 2012, -# but they should work also.) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README.TXT deleted file mode 100644 index 1bf9d00b99..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README.TXT +++ /dev/null @@ -1,33 +0,0 @@ -Note: - This example may require additional features to be added to LAMMPS. -If LAMMPS complains about an "Invalid pair_style", then copy the code -in the "additional_lammps_code" directory into your LAMMPS "src" directory -and recompile LAMMPS. - ------ Description -------- - -This example contains an implementation of the DPPC lipid bilayer described in: - G. Brannigan, P.F. Philips, and F.L.H. Brown, - Physical Review E, Vol 72, 011915 (2005) -and: - M.C. Watson, E.S. Penev, P.M. Welch, and F.L.H. Brown - J. Chem. Phys. 135, 244701 (2011) - -As in Watson(JCP 2011), rigid bond-length constraints -have been replaced by harmonic bonds. - -A truncated version of this lipid (named "DLPC") has also been added. -Unlike the original "DPPC" molecule model, "DLPC" has not been carefully -parameterized to reproduce the correct behavior in a lipid bilayer. - - -------------- - -Instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step2) -README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_run.sh b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_run.sh deleted file mode 100755 index d7ea305695..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_run.sh +++ /dev/null @@ -1,33 +0,0 @@ -# --- Running LAMMPS --- -# -- Prerequisites: -- -# The "run.in.nvt" file is a LAMMPS input script containing -# references to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data, and table_int.dat -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # Run a simulation at constant pressure (tension) - -#or - -lmp_mpi -i run.in.nvt # Run a simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation are ignored when beginning the simulation at constant volume. -# This can be fixed. Read "run.in.nvt" for equilibration instructions.) - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#or -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_setup.sh b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_setup.sh deleted file mode 100755 index abf2fce64b..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # The "table_int.dat" file contains tabular data for the lipid INT-INT atom - # 1/r^2 interaction. We need it too. (This slows down the simulation by x2, - # so I might look for a way to get rid of it later.) - cp -f table_int.dat ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DLPC.jpg b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DLPC.jpg deleted file mode 100644 index 637f2f1c7a634d4585c1186247fc28c339acd25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4915 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 p>PwH!ei!SVYd_5$zu(GjpFtcznfuv&v7(f;? zu`si;u(EQqb8<2=F|)9;2{H&NvKw*;D>;e;CUS}@8x@MFI5mnJ2TfckVUpCeQBqaS z)Y&Du=-|bVuEAlcrOhAI-P}V$Cmp`>Fs*pkb#9&(U48ZF_2wYDY0;(h*41E!VjX8HXgiq zNi3;o@<(MARVU}*riaERt|6h#i!MJhH496gviQ)I|F;-;m>C(E1epaH>=~+K_h;q@ zJ}zZj?67%FmdF;zm7b|P-nmRy3O-}<=#s7O4zo3?cI!PEnh#vES-+)u-P)yBm6vaO z%$a({sGA(GWvpCdM;9&DWxOtw`bz`p=?YHdNg5-HN?S7!^pDP_Gw}NSo z%m)Ua>%m`cPdvxBYw!AnWsBaYeydz9y1jYf6}wAeB4GTkJT-;uYg(=2o`f8KlVYiE769N1-^c{~wf&wIXY>-^syR^Mg0jC8wwCoGsC zvO8_T+?@<4wWV{1bmvQ~1hv6clkB{CDy3HsO1}-Kt)cH3u!+yjNj)?*5a^Dif#7dCqRX zT;h66N!BGRkDDd^fA?I!CSM(L-?{qt<t-ML z?Yiq$g?Xt$`u%rq6_5Wj-1*O7TgD!5xU${zw*G&H<59m({Abwg`NF@xrmptu@x|ZT zz8;wTpMg*Fu>G$td-?wi{p;=DHJ2WY-v98ANZuP(KK#;kNLcw~~KNpP$H> z^E2a|;oQaBPy5SiPe3^NQ8wf%}a@CU@xaiBukcw@0o*dE(pNGRwkQ#h<@pvTz#qSEUBE|&iC&Bo#pRX{rmFAKiR$7ALm|ODSz#&R>9ZwOP?-&`e|VC zc-w~Uk8ZDc6&N#bag0|`S)JFHWd}JW-blW4-+zAc_)_qhG(;PQFZ^>^3pnk8#7 zRoK79YiIbom(S;XK7QU|;blja;D@QsEPt#j?>ZioHkjo-{PUAq_m_HX}r zUG4FYjmf8P>#e?WQ&MJWY*;C-;>3q!9bBif%`Msj)6JOV_7IJ*!_?CgM z`25Sa>y~p@O`G79x#i>hDJk`L7lwV+^kNM;RjK*LC#CS8)T(`xwpCU=)cS6>@taC; z>+Hq9{acIq?0dZnH#ohudeY~=_THMaKj%+z{8jc%e%;<gDz~d!;3QFPr(F;Zw(dhTVZvKjvI~T)KW)>n>BB zMcJWga%a>|SVuT_e0#?g+JEKq=h}I9a_*k)ayTqzt!@9BPd-#NzQmu)HQHvP^?wG& zkW==3+RmrlXQue)ep_VEx9-%Ov(5YWg+KOw@&32-sg*N7uD%@m^3#H^oE#^g#09X+ zeEe7XzVY~#KW%#rAEz((@M7$}QnXcLy72FKUruJ(Mj^M#$8!oM)Fp@We34$3s^$6e zYFE&vMGJph3v+2H%=st3)64TO`{_9GhrgGe6N-7cwP}$9yV)J*32f|t=AZ7>f0=et zHfQeNhkr6&$$x8~8hr7w_i}#K^VYvYyrvm7%sw=u?2~~}YTtqMIiC+c-oF0Rg_j#W zoaVoJT^+u=O7B-vS0AUsvo!0E$G6)%=hvTnywu(D<#hkO5$FF%wx6@EKlwXbc%Jkw zkN02q>b^YnpW$`Xh5pn3`d`@Z$gKA^^ZtAG{`!9GviXV|s(>+#3#frW3mR=OW! z_ntO&{;j;->Wa=;c~&2l&|Q}?O(^YgGX z6-h5%oU;nPTvz{hYU_W7KVLiR#CDlIuIBgpRmH|}DtE`qaQlFs=da%`?_G0K{(Jhq zO&PD`pJ}aJee}C`mqGX9b&qdruD^WF!}jNdx{Ch{`RC&%KjvSiGPQgEx|cx>5~fj^ z2hJ6-&vO6IuxxF>hpiVk{%5!t?_c|$;pcYo`}Qwt>u-LN`0%~euh+(4-?RwL_dj)i zym&u<68rg|g`cF@uIAKBr|;XO@k-CKYqighy)S2Hc^!RyJw?|>ReQzdm^%jUxliQm z>i&Fx9(noE=ViGQxBYxQ>G$eC@8(sW&-4G!ux!oB58W4&=X^PI=E>xvnj7!i`>+3P z=Nxgo`CS*gz{bnk&bo6NGG8kETfFh@`~M7ibIKMcom*r7pW*S6S9zBGz2PPmhhLub zIQ#utlNn3Fs&Wa-la{|ezjHWNyLFOzPdAIs)cbqm4h95mmYe;>Lh_t7|ML3zW_<3= zaUCbM^hz#W_j^3~sjKdP2C<4;ZkGQU_^b=p)IW*6$gg4kSL${JyXB{;yYK(lo__!N zr=Ps)FVzlDoX!8!)IGTPOidPxe^0l>+U>#hUt@M~1b8<49_1FV)T>I<@aw`^YUiSstU|LyyeRUY27uYL7?-?bOdRX830ExN|9Lg_{Jj=Ps< zDI8$Fw0-jJFY)#3_w`?rZME9)pW$j+-?Ha3eq2$hNx7A!5meQACG8OZ0=-V(zyO8s z2cK`>f2MBNm-UiirvldQb=@zvsj=nnQ6K-+>kt1I!vyBbvkZ=Z zi>%8Xp&A)WBZocPK#p%L|pMtiSELCZUIcUkeZ%MM$jqn)n z#P%f8Xm~cwhEVH`6V##uFdlD^Ttc%|1*gHF;%|pxS^xec}2NWN!FeIk`GIG zVv}oqL$;P0+7RMeIcu0nZg07wnfZ?+Iz3*w zH~UXL=X2^W*V^CyY*l5pIH936YDfK(+kcM)UWu)CK6ACC_wlU%42gD8@8(T8an66% zAI<~)eh&OWlVEj|$M zI5$6OS1k|k?pjmJPK&?JH_u<+xA8y21a(Kt{|rz5*<1W)IQ4n&{_nr0C@Es5g()q75eoqfl5soU9a&DSg5 zu}=z+VYcMhaiQmP-xI-=@Bf~^*O+trH^V*qZ+D&T?>~PYZ-3|a3%*P9Z?GiH`Ok2C zD$noVf84KotzG=$VB9vD_g9(U)C69+_dEId-GHdN%fBYOfA5z^j61zhQGa)_UZc_`0O9> z=l`t_`p@uL-q-l$y>7l8#rNg^Gc4*`_4~HG-K(~lzk?nN|Gw_W#GZe6w?zDQ+gtMS z*Zb#9TU5JZT2+&)+u0qG0Up{sA&R>gk8jjdw|V~bxV^8Z{kzJF`u_|URKNXaxTH1z zKf}yxrhn(&We95Y?fJyUabU-)2>ZB{EYU}MMb~?aUw-&6e^%VO-?!xLUZop^`}sKF>z^-%0o9%eCjHhdWGT zaGkEXkKcyh{ z8+Xcw|9iOf?%rp1wO6Lh-?Dp2*Pn~)wiLe?GW^ew{OeBlw~1dezXx>+z5XZ^;#hdA zAVA`~wbQoq0XUGVBWSDtr*J-;TQc=F_B;#GQK(bJt@)g^n2?_cdTvF^gU))Tp2Rd1(? zG|czj5}7ioy5BiVrusiaTj`$T{dLVJ3OVxr=4fW!;(BrU0^{SIIt=W#=cRI#-&}f8 z6wtD2a$Kb6$)MH!sj)vSEWXQb{ONw(%Ja9uFP%w7-5VoRCS=Qg?%@-B+x+*r&FIqmM**)hK9{elev)kLhZHaaH%5S|l z-Fm~e>v@^{DmmaSBsHyf^`S2R;yJBM9N!dP&z@)TNA1hy!&hhK*e1;S&+wM@Xq4fE z&aDiulZ>KOk0vKrdYx7%zIim=LSkl(=8u@h$`Yi}=~%X`(|_A3E&WXsPEPqg zWx%KhUE^_4ju32|aKfQEok_uOs z-BoMfkaeqWm#YLm={m~G`!3hovr75(olWaYbElm6*>K}m_L4B$Ge=*iMt|pF-ep=f zU8-9BS^F&S&bMCzuKN5AeDf{quhjO{C-X~g>E=J2w1-b((y2r3IiFq!p0BB@{c)u8 zTYc=?yZ1zO9zI|B)5PV((vx1Ds*6sa{&aEj8_8f5#se(;IhnIv|0-X6CSJK}Mq#cz ztEW7RO7)BMjb&Rt3x{dD^-6twbz!kvuapJ>!iR4$!_kMAcc$7cd)>E5^wZ}gn>qD1 z^=9PrVTtSVcA+_}KXsPwX{cu2ZuKlSQpoD@ zx5-|8A~h?@yA8{x=6fk$n!NW)&tvHx)515)`RnUezP|p;y_<)h^$?q@ZfTe7yYz4G zuhq`ay)N^LHY)neIgeGm()0Hh%Yckxilh<>~1Pj~K3N=3;hpvCKVArhJ zwO6eDr|kAw?Y>f3OQKLnI@mqq{qe)<>VHjM{W#HgWyiaXs+^_MCj>kaF%p?%;3%(T zdOCjdrv>X~R2*Cvc{SdUFJ$FcDUDor7O##E;j3Q>OFsO!t+#)UbK=K2*4@?p>UUpP zs>)00S&QqgpBH-Nt&~aj32modDU*yv*a_3#le$J*mR^r`npQAjDMLuztgI&}X0-tmWxy7G^$eXq0DFEv$>Q{sT#o{h54pLj9Oc&)qkz@*^)7PseL@A>xYWqV0neWfwu z^Tk>rA*cLj+(~n3Q4r#aRrnM#hl!6tX8y!WtY<$4yyWu!cyD#+gzvKsui;bD&N$p( zbAr+G#6bqZK89PNp@A=7tX#ofkK zyK7umT6z@)pLH!{GAQ}UImzsu-PV+zC!Z%+u=lx5Sar2y+Ny`k)+%-!N;p!kG`CBV zrD5AonJ39V=N|T$>$7XswB`$SOd_fmUoq@d(QM?<>pNpkOjNgn5){`K4Rws4Q* z(vG>Gi*CDBxKQ=LqDdiKA#4^Zb*VD_r-bJe|2lr{>XqzoSDhZ#XdG~!L|3gc>?jA2Tx@?$x{kra> zdnffR90JR$I3>7FNSCK9wVQWC^2FVuPb*BH9iObZBt)qxGBaq~mLD1{YqLC5R2UY& zv3`;+m1AFYS+Z`ue{O>OEd$tzWz$T zH~XQMQe@Pm?LyBSIfM8$J*9V^{1^Fbcf>n|ht66-ZEnU!Dd#GW$j^Bd%3>z6Rf2hr z!_W82W92@q+iqNXX#0W4R1L#p&w?ghDq1QdQ}sPrK~%`%IAhq}D@%ivwyc^pRdloZ zsnQ=Cr@ioUP?5c%s2U+t&M>dYc*U~*(z~J&J>7Zt+eBUOeO@(L$6|S{*6p8uZ{7s? zasDiSyY^J6+>;%u?%mO=kCe^(7; z4Q4ANPu>gN!Pt{fer}5P+(=(FoAO|v>Xc_6MRvR@U-`(w(c#-UBTu;>=N5UFdClFw z>O;=Al>Kgz?)UUn|1%hD-NNr(c~Dc6S@X%~{#xyG3#GgMEelyPO=_8Ymt5ks`{8qL zc-k$OX3p?D`FzfUKYb?uJ^L|%VJ;}RfW>*}SN2CXr z7l*|yi<2y6hkO_MP1as1+Unc)#VyNl+7xT_UMYP|U=k z;$s(gx)&ApJm9}ux-2V=r`^n{kkfNT!<4oDmOGYeWK1e+X*|E*cH>;r+qF+OODfH| z^W)gO#{r8~A8emrq9dbSzmS2qi(N)!-t&xWQ?s@Ot@xN3pd7YNQ&+`aW=($A;{HhO zK+XWk6B3rkYaOm#N=k94jXd*hcf+J~y~wBEt~}*@>R+P=){nUQmZujP11itg7r zd_lG9Rh#%Ze}3>YIk2N8YIbC2=*kdn9V6-Gdwn^*BDMWju08qXK@XqD`_EGOn^Ui6 zZhUBM^f>SS(hD=AZl^g-3OOO6C(c!P?uvlu8_r|Xzx2J#obMUL*CMp2^x?`g2QIie z#A#HRED<(J;XB`GlyKa(PE`Nmt~RZ}c`G(s<|%GfKHs-()3O4FAf_Pp)jMrgvn%&x zCzS^+?=(54cyWozot;{FF4I4@T@W&x&`{2_s6r(n_xp*W^FH zuDh0Wg70hI+{-Hi=ia>Vd46j|l(4d`1)sg`RgKLR`|T1lcXh8UQ@WGs!{#LN=<4HDi({*-udWaZmo=8HP0-|s^zv}9ThmuiY5C4%XYkgQrL)^IYJa|&;dy3Ch|m`I zxUYF!sf$mtynAdjr)A#H!dueUr^ykLUq$3Dr+ zy|Q_IUmb##L+%PL-uUdyYKv1IcPBXs_j?51a(ui|;#iTH>UHI>LX-2oR%{PS70}XH z<>+lJ4t<NJUS2cPBLy;BYdbqy?~|Wz<&nba*MosiRLb< zM@zG8M3-$8UOp$pE7fVPlt*^T#cciJxF@ILE z*z?vo*DP#N;TtBusiq7+KI}d^_hHnpLZOyS(TcT~W_W0F)jx`L&NE|tKP}{?#q*3n z*{!P^A08Jxs{7{nw{EYxO%2Pe_8t)}T2=ooG3wL0bK7FfTQl9Vr*wJ0w^n?bS8#UL z55_~qle}|Ip8U_SAG_1ljiTx8|Nb{? z=dZU_(MR^0XX`oDhJ6pP-tLzCS~N79C2xcE=fyE=Uss=g5q?Y8e+QGG*nF)=jRDcK z`3==nc~3>iJujU4=h&{L>+=4t{?^iQ-L<#Ojju9j<@w9kUIic4Gk8(DXa1~~b`SY4 z>EXMicjUZfdL#Q)FDg3yp86Y>>X$njY{Py$a9lSr<8u7c?K58K`{qV3F>4DgxVY$i zw1*|H?zKr<73!}BD*w#9xL$WhVvg0aIRZ;2@pl+xy-?^B$+);U;L=5;u=l*Y`h({A zHdXr{Pp$WCyRck@{Y*=9|FY_rb38kCOrNMze{ET~#Wpe!_KEtjOW#8SG|69<`!?-((g|!Cp+H`_H+r{I&}$;wt{w%=$tw8Du3~~ zm4!!YUDZ1CpW)VvsVwFnS-0v%b6GersMk5NB$U4^uuGXP^xD*K>jiP&tv8Z7r3@VO zLj=Me)GALBvgBlc-kX1;=;`6Lo||8<>UjJy`t(BnI_b3!J{h?Av&{MScD>=Aqj9zE z!6oxHUUCf4cx9rHrf$KId3UMPl)KUkf`YFci1dYZ(egz#q7$;;HsLA&8HTx)#!VCR8#NW!(*3(96X;lH`L9z z?DT1J+*VC~#|g|29(xtH>szPYpRWDh%I0RM>?!9= zKFtHI+6vnY%vSI*+SGiVBh+xPHeW4;=d=1Ti@xF?mv8S#h>=cV5}Cl)#$e^xdryk_ z(EPA7S#!Lre0KFZY&KhMvi1b;amMIL2HOORIDS26-k!L0TWsIXRWnt&7amxk%-OBX zs9ygxYSL7JITH%EKdDXOkrfE4?h3H-0-d z=iB#VaR$kO`CZbzYRO*3DJ^fE46KziM`+NT9yo~^sP(r2PnsIG64aiVq2QPHaAmYU7;3@6X| z++_SU=s|pJXN_Y_qvDD}xm(-H zi+5h`nP;~|j?ePk+}=}xeY=h%ocVF(i>{m7fy*bEC)`f>xc!;GdLN%r$wK$`@5z&& zsh0f?l;sLZ=VX1vc>7uN|!ToW!|^fasT@$_>Je6{zVNBfva=IS>2Fc@FIANR`ab;<8b(~DQ_s(E#3QnRS< z(md7e47WBskPLETFFamndAV)Lw)^YVCMeV-^SXOq6b(*bJ3RYD^z3sY>pd-$e?C^3 zrXKujipHvT$E}%XuPwQJ?e^O}hZ80-?XFJl6iPFOOPKhlU(_)L-U zab7c4yaqMazqr@@0sPG*DS086AVwtWMFlz1AbqEI(?Vxukq>qU@A)zK(kBjqhIss65_b8OHgBZNc_^Tf9BJADjqO zGqExLes0!t-@W1)iFF+l!euA;aDK8cc{y!M>&2=q&mM*3?lk!>wQ~BDm8J|g3KcX~ zt7s~uRz9~$zQcTM?zCLqvZs4PYKvmmS*m_D{1_DFQ}pr9!aa(@-SUr`ks zw(+vp->U8u_H3mE%j)D})UJe`^13A2vV6kYl~EOsWqOi>Y<-J=^=3(@-Cu6+J?~C} zifw>r*CQF_D}o1AExs$Wzg|6~@6(*uLJOn|n(tZvd{y#p#fR&$W-Iw8#Ck9~+K4h7 zTW()h^&<0hY?ZRTu=}n&7Ng4{7j9>?|L|KOG-a(t*qaq|cQW*}7FfRyn^@}Zn#EJK zC38zh$*rnsDpwqxi>5Y&NpY*HFt{so+57Mu`?7AO%geJH&F=4gwBzrE={3u52RYw9 zDS1zX&#P;9^2;@MZC~?-Z7)1Iz3jqky)9={YVWey+WN88^ICp+ylIL^NcD5(9}Y}w z=D)hOXr{x3Gd>e%Rb;N)FSRW%(tBmb8rHci&m7)e*LxMPpwu%oZ!MSR3g@gwKer!V z(g8QMgRX?_nZv|z!?wZW7^lk8IMLGM`(K5gn|tN4QqF=q28#}b+~T_Q>^h(4sn5Ha zWhe1VSY@AIdGWo}CTWAk7bjb-+R)Zxy5ZRc#zN09w=3@z1n*4#bZ+~u)t4)#@oLTZ zx?Is%=*hPyE0v9ERujxy*Vp@96rx zXjR@ROZg5KXsWQZ=1o#JKJhIfE#=_S?nV1czdW0saaph8BCn9oR4tby9-o6X@31Q9 zs&jp5*|F}1dgeP*rR%z>_l0v`EwSu(SF_t@Dt5W$=I=w!Ju8E_m8;4>29V3?oS^kMg^FqbUhZ+C?s zzW8)EI!K%Q)2UmI2b@G0-+9_C;*hS(demhY&U@(Bl4lRj6}9pvoR~4EZCCNKn8eP? zYqHwPtLE~r;pq9tKHbnG+-ph6q7Qx7{Z<&=axGESXIbjs!e1WkabAn_meUT&b4F`k zJ`G*&-}QSt@4nY2HkEp|$p9?%)oaPIru)aBfc%TIa* z#rkouX9jqltBhy%)mwXXi;SYyU6rYRRWpnyUSi+zY4u6Q4Gx!F7!Ui;dtd7H#XQBk zRW8=fe5&TLgHr=mw*F)8lDyHf`pN|3zJszGCobWdTX%EqwI`AN8Zn_(&5XvP2Jf6b z!yF`J6qBXf4j4|TIAPVde%*>YCGR!_zYOoSisib~E!kr>_q^h#?IM%P`@LsyNH{(b zD!!8(zjn*cDYLd}eS7(Luil(1H#@R&z2;AuY9_Q`>RR483+AX=e=t0tu96wCA)uD= zYTo;%pdhzBD(7#`Ik0SJ!IUKv=e=xR7UgNPAg$tPM*NhjrB<)E>AGw8nftbFwH9TJ zOU^D(zq+L-h3Ubc!$@Yj3H(=aT)jW4lkfV&2jN%ePEw>k<;0u*JeDD$u&` zQT05230}*sr=3@Bm9pLIn8_3KVbS8+)MaMYyia@DPF3&j6W#Lh#BufZ*t|FS3(NL~ zxdvX1`7RX{ljW?l`t0Omj8T7G?ba~QX|Q}QA--Y&Px+nxs+v_ik$ijHdMY}KDV*tLiV*Kv$y>T z@eC4qK4n^prk*0JLzTeAlgt(eWhT{rIrxfoVbQ8kuGJ}lDI0T_rL;d=Vb}jUEbysl z)7m3db0w8`?fhmHqwAyeFk`2SC5y^xm7bo)GjoL>t6R*nczX7=M^5yFDU)wSo-b4o z3UQk_#Z!UF)wj&NW7*A}SzA{3bw+e8Y3p%|OwmzQE_*7fu|&YpPsE6i|Fr+={MG*% zwv}?~M^Cu*cYYVc?}JZ&%@6;W>+wKEj;T{ILZ!gb^wg&v@8#B5`YpJ*?Xmx*goQa_ zEbTW6y}g2_tem)`XQ_MH1LL0z-<6}cw}-#DHr1#<>y~D>-}Vm9L@R+s6FAjM6=X|J8j6}u4%e#8+w&qih4+TwVPm88 zU3^pXR+yf+&T4D)V6B$hSF;U#Wh>QL>OX$I)VIK~c3#hyStifb%vD$DXnvGE(sMGp z`|f5N4c$DAmU(VZzuEBWeR;g{y69D>*rF%>O!H11{Pf6;HPd|`*Lf|4!ufu6akt*S z+2wsmuwC)?)D z$qVF|l(q<-fBjKi{;S{mx}D{ZuSL9i-cwz4bm`gyI}BG&F*i@oN;z9!8Sr>Rmbc6N zFaD?F=3iu;6n|^l{NgLA+6CVkX0YE`%C)pZOG2UW)O!7vXiG8kwte%118(>3_$#}s zrDaFaf-jp=cJRxcs&tk+!1#7$eMI8nq`86}8zi$#GR`ht7MaPYk;^IJ6~qo&|C?>L z=eO{_*sq_jXJ0+4>Hf!M{=T&ftygkBbz4<_D?WAIvky({n3g3_+;&ImFUT7!7_!}cXy~>dYw?y z6jiyU@n7GXdpqBM^NW42XCJsWeTn)*$vW9Eks5}e?Lyn`$De7E?y+;0kE;?~+c&x3 zzQe84&l*mwuc_~0{m<~*)jehJH=(+s#csU{cfR*%$Dhax{H*H5rL##yc!Kpxmv4R^ za?j^6K9?)3ug^`)**$w|i`kr$Hg*-os}qD0g1*fbef>#PZb9b9KRb(OGwiugqGH5x z;*NuQA&Y?Fjpk!+QD6JEY|V2w*1EWGx1i116_<`5QMEVOw!!>AL&asi8|xN5+w)HA ztfb(x%UMAJJBpl-$|cn-VOWze&#*_Ph(EV7@7kBid2=}KK3LzhX~9fQg$73>p@sA2 zbgaCc^8U~&C;zC7f^5&Fciy`#wfiKp3!d5lq|p-kpgv+B~5 z-Mri#_qBp2UAo<>yid4y=TD}EUyrT&-gz?gR%zb-iBVb16K_wt>Gha-ci#KLlkXeq zBG1he`M1N}b=sk~QoccpEqSMS@*W6YtIT}UQ$l^a)Z_S8(t9Db@(V->cwV9GlNz8_EcYfY^9>$XR~iaq{&O-IqKDbwy|o;bQ( zXbqFw)yC%Ymd_b#O>IkqCfq%rbUM@D{qu~k3oOI#1uZvXv%>90>-`FkPyRPIT)-_uW&%{7|4!!Be}`!)u)OH=t6&ezvjS3i28 z`{v5&gu|V(heJCS+|*-y%KU!EcXi7*CZ}Ha&MgkeYtvKLGE}_0s?ue;;#9Lo{1>Xf zzyJECRQvkr{gH>?`G{1lIy1qtu=C;L`!UZLTVrzmNp07A7xsrU%w;08!CcSZzgOS= zTd@6d_1uD8l?6N6^js^8nP2ez^ip`9&-`@$v&zehHeRw$o1L%pVAa)CK4B`Z-2JL2 zRXr#6XtVA=-TW(^<@1U|?Cos%UxU|ieCIh8e39$Qt!FwGmo{-Zb=vrNPsqw|sE}Q_;%gWpf?e!(MtVc602MGv-Pw$UJ*$ zQc%HCCif+Eb6)PZ`@Q&!)4Hd2cZ{-M%)54@(eIy1xx?GrR~Y0^OI+I@rgPhR>9ox& zH&1)IH@s_7*o^)asahw)iYm|59}l>+CL}DTy)f!?)>o}HYEvF-mU;&Bv8qpf@OVzT z+`Yy3dvsfuE;q!lnh?+i`zrL?y>sN{>${kzi zE%ITBCYSe#KXx|@gq%8<)f?(&UiOncDzw_I$~JV`m777yIw$?UJFl{tIQjU_?+?<0 zziKZRYu$hO#Q9U7lZ>9!-;MWvrJ9~Elg|F-?dtOFW!qL|W^bR`vuQ@-dCO}Sb6!ur z*;Adlaku!LZJA5-t4*~lRKB@6a2grC6>>{RmvsKC89P&Y#mb3sJWqGri$8WQ>b_U# zjwdZECNOF;2(Tx=T{>@Z>9gAl;sxS1-|GD6uUc5kEge$eQ7rGn++Sa7loxF(K0Ec5 zckqIc=t|#BS0YYjE}z8z?9Q5ZT*p5=zrW3N+FY@zdM2xMZpFB8_$AEan^gBM+sn73raMj6dr-7qb<5eq98-SHs&sXkHbKDb z$y>iS+7<^@KF+nTnlJP=cH7BC>y%5_He8+=cT+AN=`Sh!#l$He7=k9}X&yJs3MTr0LUZi(Kmo-&!j=W(BdH(O7hGsk>F z=+D}S0DI+SqCdG-Cxk1VSsS!y(^a9M;Ey>AEXs6crtYxjy_4L3W*&d7Z^&z>-n1L% z{X4BvtxDbajxE*v^lAw>+LetiZBn)QYqOtQ`zy)?j7teMP`&}vU!_UPCE4} z=$>?pbHu4jL6zQJQH|$MmsuW^zN`Q8sn@H;Cs#%G99p#BROP7C>|0YF)>tvvXnIOM zDGw{_HDB+YXOhk;wAc4`XlZGPC4Z}*=;Hz(|!+`>DC_jl@Kr6`I&xRdE)_o?R7#jolNy}R50CicvA z+4RToTEv!DQ#1IL)-AiifBeUy`L?Po`UwX(S>9@%mzh`bcBTL8BU{b$Z+({f;qf7^ z^yR_m36G!Ta(W%#<@QvjOhx54Z;)#@pMu_jcCNJY(*K4r%9X;qizigm~AoLzeBPFBjSvr%5$UNs^+MHg5vR#s`=ef38EG5$U4 zFH6Tg+ME};=<{?b%}HBV37tCJ;mzoxzZe`tJ@X%yaY5)Ntaomh$uG@G7v|`%`6Z z@cy#Dw?(ZUC-OE4%l>*&S&=@yHtoS}qob{#r>`#9@#||K1BY4y z$&;X0$sbc|62rx+I&HEFO@%gL5 zx2qLBCfyJGRj?)KtW&D*iBrKvGb=rGR!cmX#3*r|`I6(Y*|AX@GA8L9RepTu@1h-v zngU6l1v~DvzWHJmU~!1kYkPHp^#qgYT%k7~eqN@3a!v3epSCRuvsyA)-4x^v94zeZ z^J{bCV$D0YT+BGUFm}S4PRWXoC(_qNUDw?h;iuYibKSXLB0{Muk^*is8&V{%&x_>h z))q?*GE#P!Y;tnftV#Eze5UXlZe1fT66EoKrRDbrgW~&PX}ylCuC7&kJA0doRjpl& zlgOuy%I5H4eM?};3Lq{_zA!Zzsw=Yy8z3{U!=q^lHv zT3@!^EiZ0?Z+r0cKwl?Sy_n?!ueCm1`K>2*$iu09xn?T6>f-tEC}Cv?b?$y(PsFvx&buS6tL8s0tR6E!#BXo%n@24a?*vH?50Nm+tDkQ+#L6=T%oDU(_B?y7)qL z+r!Nfi;vz})pK2_>9^(`k%^ygge;vZc%$*{Tz})Ly}41}Vl7_;FR-)}w7Il}cU8jU zDcXPBKm9dH&hkAa8M&}XaTOmpuROP+U+=4H&}^>VK3TFIr*8L) z70LR)x3uItaqyIN%Qt3)Ilmf2FTL55wKx2gtkiy|cBP1(+h;AJ3N2YgL{>Dp6;Exv z^Q*Q|vhr*7kt188MY7!{iocuw)M7@dz^ju{6E}KAGW2_fF`VBJsC=XQzEiAF+l2{U zM^>u*XIN}J(3sd@?Tnc(ttdPer$x%T?El~~<=&kuW{Sb2NH zz8f=Ue0EGe>vlw(=}N&=whL}T)eRn!D*M-J9W`EVw)v{}mSwz0zO-(8rRw=vWzS2= zLzDbM=M?sQ>?!P3E4ja7+f)8!7ngWU^mqBX!zsc~=(P*~+4<8}yNA8sH9w@P-)Xu_ zZgJ!?Yt`xAdJIc-L|QDHD*eB9vOnLEwRG>+dkQbN)CILLm7hGXkRZJ95<}0DqUC!F z)7!RRv)Irwi7kbtX91%nBlDp(y6Q_d>397uuRi6w;@VYbhtRs7(x|TcL&UCb%{H*uL+w;>xn-8)yA3Qcwv|ecS z_RJ7#li;}4&tT;d)DFz_+rQ}SvTKTKbvwHICUCh4&FwnJsinZg$LDVM%Vo)z%6WUPvwnG7 zaVgEMFIuOK>F`OdQ%rZxbNR2HBlGT8rtu2H)%P@C=(}uNxMk_K&-q7c{S@XbJh0wV zg~?#jJdYEB2QRrEjo4MidO0&^XGq_nyOrBwm+i9IF7{JFf$w*lpWo%5L5t6sZp^y& z;oi20ytgh(mdErIoKurm~Uw|m9l(l;TQPy zE`9a3zpSN8Lms)!m^AH9@#%uL2}@e0^u6@^GUwYlYuTOk;k)KnM$}49lxz3OJU(Oj zsVOtpXrDXa>=hZ@Fej1IGmPUoL%D+Z_O>h=tE;B3&K^`X&D<9dvizx=*QHI>&3`9; zlHDp@(YbS_=)c9wPAxlGH%shvUdUBpPL5ochf7vVC}zI1om6-;LM->An%=tE8)_St zY*lsPbud~isNm+5RwwFtyLQQDot4vrK9w(Y=)IaZdCeKGU}m3lm6zJv)~!3X;Pxl= zyOUBqqBmTUs61A4-`0U)!czI%1&sZP{keX!b|0(#_h@-63V69GYf{p_ZK=LNf3{63 zGFxiFrL8<+9UBMpmEyKlRpFjnt74YF_^e|2-1YOEUPH#ZEQXVu(v=Si`+lw8$N5s% zXF8Y9&2@`nmY->tNZh<(rOS$6?iMG%DTl2w+;B+0P{%fvFJ;D+vQDEQM+?ezyD=>nX}VrPRb^c;Ab=5DYE<(S<+Cye|~O|yqxIGfP`p6+2GAe zr`Ijm^d|Ry%Mz343lA92d(iW{=RX7A_Fv`K?%&9pEtYoq73YM<4S$kO^5z^*vQEGK z^Y!A5FPUY3DR%cBvDg&Cb3%*ZK<_068_te*Yu)E<$^3A+k7e=#70(YcSwAwao8;7s znwN)FwOgA0>X}umHd8lXVX*Ksqn3qBb6BtBece^|)GN?JrLlqG>bvcEp~tEwU94Pc zY@x`V&E@DA@MX$Umx<@t>uXD|+bTxiO6rY>*|6mOl-`$;ngI%Z4s*_YKk6Z=s?r?9 z)+=TDqLf$a>Gk&I@vrM|sYmR5JjHYQ<=3WO^JfGF|DIB^$|N-T`Sj%SUw^hX)>$w*;H7d2bOw}`pPqk^A67Bgnd`rD;;Qmcjr=wn(KfSHF^x=$)nuT#%EEdZ} zwl86_e!_CpUO({t+t;(XY?)Ix?g@AmFfI5$gTbLaOVxjba?iW{cJckEv0@h&yY1;) ze{p?FO7Z$#CV?^AKh(iIQKQ z-_bOTx#M5^>guhJopx)zUmWQyad_Ex)Xiws!gbH|JS@K-pAmJ=cJn;r^+7MEJ@kuC z{P8MyPuzA-PL;{xj87 zR5iCXe78K*@oR~8V9LC$x619qo}P_$v&!`7IFoVNJInLdl&MqJYDrIW?z6CDZs5=J z&D>$*5~v|k@oMW;HJwN2ZhDoosyv=kYbsK5Zr{GeSJ%&)b!+8buceoRZlxTGJJ2=x z-13K))+}^%*w)FVd0detRi%}GQeO12Z`-a$RKM`>>ab*Di{eyy`u$_qlQR9RjkkXv z(x2(!ZqlSYZOMt}_m@Vk7uctido_B}%R-r!KV_a8lmB=f`1Ui);=}hxP79@Omf0@n z?OGPFETmPvjmz`)t8bc8Vn4510zh&Bb`Q5A-j-;DQcl&PAD%nxWWfft4?Q!0*ocDz(leWI+Q%zUrcDj7* z4wuDr_r+`n8KbzSEoEePoOr#rR621>_>I*5C6Nm>4><@Ms1+N|=gKcl`nv!A&b8mO zOm0q0)LU_Ax-I{bj+cB)A(khOpO^Ug>R!~`=&ic9WmmSPxcH`D{vcge{kyOytN-iv zBi5o;NefMW#-xR~gngV^YhC2GIkr}RzeaYq`|8d<|EV6`rrR<%?z2tUb0H!#(`(Wa ziwPbO{`gPoxw>Z+f3a8A-ukQeyZLO_D=t$%G+q1Tya$z@ITq74zRc7rRCv-9;?BZr zVbz^>r+AUKi1_N@#ajZW&sZvcJ9lgD*OgaROGt0P_7y@xjCcDA*PMw@YZLEY%4;OPODN^! zWaf!-pXXNQUCCW$ncP_=JDXEO#zST1C50t?pXYkp$?R(OnQ}>bSNc{?T{CB`+PEo? ze>i?SU-SFpl6v9TvW0rHT7!H_yq53$AtY(HoUh{e{(n|$#e|L5b^9%hUwS3Q-Raqz zEG0?rQ>B~MF3fOyvf}r=9|z9wxE!`H>x65b%kAUuou1l$S;eJ#B*bl}pYu}o!T|1D zjCUJ9sq|#r{Ni4efArF2&VYOW8IH_l{F8lg?fd(&U13|CC#sYmn^&5sRcr72pTRTQ z-1K~SlFPDkVcF=-Uyfask-KRhTe&T(KTu7rJGj47&>@Rkby8b%vP76&#DN3PH#{iw zdZ`}tqU4lI>z(&|W^(42lx{I+wftoNa9Mo7t}}lhRyg>|dRHx)`-;ur(1l9^AzMG5 zXGphqTq9Pn`um;GS(7|ijz!5&6pS~DHSd3H&b4h{(43|f6PMeXTvFiGirc%kE!(qb zsavq_Rmm@UG9IrPCODq+b93}KarbTW62Ce3Lp4Qz@ZR;anPG4*N?0;G?8-`2yG4_4 zf0i?RQ@T6nYg2R1&9i$hzs}ln@s^YZ>)shZU-7Idb-81n^U;HE*Q;-9B+gD1c&Wm} z__mMZuXRDmvEf+v+v5(2FF`VQx7e& zxZC)Jfq&)Ig4vl@^V9Ej2CO~1{IIL(OYQi(S$sCHf+lpF{inutZR>LTn{H1N9!veW z^!kgW$S&E$_X!`-T$cefWA-+2Cfb@QUryQAgSY+G4yK%l5k=JRjX zYCE;R`!AWT+i~n8OT&tJ)x(8ckf+Uc0w_wnx|UMZAz8; z)eQ4Jomaaz2DMYX6>9aSxTDHySTypuz zn6=oIJxIHkaKxE{05@7HSA#ez19-wN{JWN4O@EBrhsbneQEmVUo=A-UC= z)1s0V>+a+`nR{sJhLd-9E=m6FN2 zkp1thC1U<=F}AjIi_Ywr)vfy6=9-$V&*xAjr^0Ch8`dnywcTBBJl7;!_;u*cK+U{R zm$0Qv?UEN+O?q8;+LfE8GAwd9<#^1^pn|=*Sx)z&>)qa0aZExD zJj-qQ+g#?>bFHlJP+e^<=4dI?wyVabBILX8%Np&l{r+XE!(BssBsr%|c=V`oo|n*^ z2NQc9@3Xwr@A~V^yopZJ+4lQKEm=6#tnI$)QnLjf_vZ8kdAzg!Eo<=0|Ek1v)9V3i z;zdQaetfs%VePU8FOP>DoU#ob%s*3}JbCTECj5x?&!4=9eAMT6b9wJ8daRntYj!hI zA-TybV1oOuhHDWA@9*9HMg8L5Jr45%`1zRa;!`X7PA30Y+Ge#ScFFE*@0P6YxXZ?` zF?mV)ny0LX>%aCrc@?uf(782yviH49&)2q0x_vL|yGrtpZ&RLgva?G~%B<5^bX$x$ z-;2{xFF(wi zsDFQ7?eez^6*QJKRb+@%e?G$~nUXet!>`tY(0sRbS!bkHhn#q$x?`Q)q=2?RM|bv= zJ6P}icy6iGe}<0vFZup04_ah2t9B=wu~(5n%}Tv}OXY)(CrxRX!#`8~>9X6hehY$h zG~ODUE`NF^V_8hPlzi(i;Z;BWn&lcj$XlJ~)pNx1C3oh2jVUcFvlxUdC9M4lD#GOs zhkf`vEzBgABT3{|QO}QKvHuwir)K8V-MaVa+^(~irCSXgg#~;ZuNzL8FVhnG^Y!6t zbKRE*Wfb3Q*&Zs%uM`r_aAS+W7VW+tK|uv|QLF!YueiJIsBD;vd+OB(-i6CMmOu4~ z@b1*oan#9g#DH7O{CvniM29iL3D3CF}Bv zFXk(B!q=IGthefl5WW+=&V%z*w9Q)wxsx)C|E$(#Z~8vNIK9^Tpjvt86giolo@`asXKi^`F=z62o8jq}(R%s%yc)BEUs zQtQ6moa*1zez+^MY3*q$n~JwcR4Cs> z`CAnxksDI`RRiuji7aqGtNyx)e|v4fytOy3^RAAX@TP06(XKD1t=rWEDx*167+O{` zOgzaVVEy|+@{@ZDuW4LZcz8vKX3xx=_uRSHMWP?nb4{2t&pr9imox5*PT#gRyUnQ? zR2HZ`Arz1--&b;(z~2X#9Ow{xoMF7-V$T{^2vsQ6V-|H?=$U#QudRMmc!%T}&OVsXggGe06yJ!-e)gn67h z{Q2!F{fE=1x#~V!x`OA&^Y6!&-;LLKJWX6|`#Y_hETvs4ZY#Z}D%u`lQhC0FXKUuy zE>W}OjhfrMo(8?rZ;?cg~^_Q`MDJc4>%doTIT4tZCed}O6}n*BrV zDHbX+ikmj@m9dIEXGvhb9eBOH`|Pf*g`L-P19>G+>)RV97jPYOIKHWx!J4tx-fC;b z#){*!Jr^xq**Sk_`<_Kn`KOe#<_0ofU}rCXdFMgauQl&oPg~SI`_GW!!yj$)!>54Z z>g~ndmc_YkF;lHtG?*-(YsoxrV1Fo}CeMBKSiX6R&u&q!ocpbxRd!k|*JFG$=VRmK zmv1aDTOSP%4)vIxfBRd{Ql;+b&o`?CB0k;7RA61oe7o#VEn8uqY2@44o3>{L#zb${ ze7E7ubfsq48>H6xexso#)CN6m7&%pjc z^rBt!6^$$R=FFNjvsqT~id6pT2aACGRtTO|I9s#)Idc$~4V!pLY8Clv|cr^OZWMXim}ep7Tg((u0RCVxL+8}6 zK?`PHubAsD*(oKzX|3JoJdtfnPOw!tC>zwIdtBO;_NFV;e7WH*=Z!CevJDRY=*VMO ze9SRI_T#+cuT1@S@s`?FeiaSX-esb`YSR*q&gh2R%q==C+b7@PnKOT;{er&spjDsK zOg;G*=1phz^hv+6)S~uK1qpqRVHA%>k z+3rcbZSbLQd>_T8CoGwiz_Xdbr)Tq1JITv}ohF};Zb=hf`Os#0=krs$6d%od)b054 zt?MhFkAAbAyQgfsy)W6zX#@cNT#c^myd8IAUDxFEnw9**dpR|fZ%=)Ge|uhO(Ju*&sq1E(DcbGd zsx;@Cz$3Yc6Bf@e)!$yl`^axyR{7ceK@0ws%?NfpvScNrSHvMP_r!Pht_gCt3SIWE z{&vLGsr*!FM%PX~HSJTyyk<8`k4|ZM$Ee|TrHGA5#E;?J+DFoQfB*4k?JhfIWaYnB z-M;?ArCq#pj!GXXXj{LLZIakVt|_nQr0`7Q*LiumC`fwaAJ4nqS>g9YUOn|Zb(u@+ z>%yQp!Ru7xZP$r2yno55J~wWbYtU@DOWU=swy1bH-KsM_6d9Y^mA~l z3)Q(1r?P(C!mmoj;Y$O*+20RWR+`BaG_&o1bE_f)lQ~21&#RNFpFb^L_?2;%Z5gjt zao1f<->pxl?|C#;=b=Sd@tyvsZ`WCs%v&AZEmiYF-&jq>bh^z=A!fbx>gt~pRi4bR znIqh|uDQbIW$(f2)4lay8Fv<}EEJh~QE?yNtEO*HJi;FS4JzU?{5geblh7RfsOJpF z#rwAx96sea!E-XJ)da@}?)>{&Voe;}g;eg*fuBzeuS~M@vO4>%_@-~vJju-B3tLzIUbj?l*{={b=|lfyw=948^tjW`?@@cV zGS{v#@B6jiKR4r3gJ8t;u;~)XDl3*Q6RSP`WCHuflkXe5uU_)Dw6%SiyEtd5hSv%c zj|p>b7>GR1Rn-oE6(ZtSdD80FchNcKi)TyMik7^(WBbxQ-Ts%ynkQxNuGCHxc?%k< zo3O4btX1?Zy>u$*m&m+3I=Wi&25yV$xAM)+f=Ux@ZbyxWbzN+=s z3==(d&HO)uP}wW{*T+4oj$iB!3e}r)+jO^-&J~HPYI2#<-0ev=S2P_nED!mYJaxWO zyfXOBneD>vi%Yp;tCpnPEzU9wG?UH@NV9P<+brv$Qq?tWC!_oA1PR%z&+fV|UFE!O zWwX_X`SU`R#m;UC5m3rnSlYbS-1g0vTcJknW^*OmzgaUU_a0wvdE@>4pBzsnR6gFe z%zW~e-;tmX0)^u1A;MXC3y?jy|6ow0Mn5xdpeQ#W}M-J64+=WnVGr*KFS{zv}t8zpi3& zJ=ZT}a%ETV0R^kyT|wO$kv9&7PGtxQvarcqXLt2-C;zi~3NM2!PKn)gYH1Esy?J5g zT)P#)>#PrMJ+_>6nNRV@wO*B;PMu*wtyLmr4P0$*#m&8*-LK|mFPx|ref3rF#CHaF z!e>s~J}u?wXG!OkULh7iT{0dP=WRC`c(bos`;{s5wymw_@*1JcP~q=KLU*+8c<8iU zcgxbPA`hMA);#9AW1e;QPDxdH$9nbajI*7#p0D-!I9WvT#F7PpgxiNMPyL{uO&Y7TLNPqj*ZR$w@r7%btJJ0^?LvoU2F-K$93bWxnVTTmz;|V3DHT|Tlff>9%&f~la$w%uyNsq(1uJaqJY(8M%#YyK5&k(pTwH!ZkppeZz8%YFKXQ>+nM z#g{xiEM!kIGt4u2za%W`j@p_$&b9n67ELd^HKj~PQSsH2>0T*|bowz*LO*Ko_XM}$%KIP|DWV_|=vZJf6Exqz2_U%Ic6T!NhrO(_6n0sXE z)FqGA<&O6h-w$@3oF(3C&V4GO=J`j{P_bOas}@2`eaq%ffA4f}#}j{B)m|%KquKmL z^ExdzoWAYV-PiDag*vMOgPT(kyH$F0h=!PVQA)7T)Dz3Syx*_9y1eN2t)hjElYdU0 z;Hk{=v4@?dZ~5H~xfR#enn?! zTI9fdhjB@ynUB_6ubAb|Cf}5<2uuD-Hq~QZthvF4Vk6|LYx+Fx1{v+TCBOZb@wHg(3`6l zIlW`3FIh2t%B@?LCnMNDvnuq|n$GIZe zu-7=Ktm=?z$-6bi=bZ0BwWm{qXZ+URpy;V!-7d}HClmOD;X;t3?2d0It|oTs>WeZ@ zTzco!o~S;Fe(t^gM|axf%Nz49 zC3(2)RP25O6Jzx&R;fJDEVWGQ|7_nlg}DS$24u4vtUJkgzWJX zD)64q>xAV3jQjgL_Pm0=MQ(g-VS#TZ&dF1#`P(<&HthB7xel#Nt(ga=B|CZfSY*b}Q=Z4& zefJn+zIe`&Nz1OatvEF_96Fn`FsXn@mQ?*ZhlP)M&G|5xqO~HJJEZ)PB ztLly&S-G2cW$HCS#kJ>H()lzUl^OExe~~|J)w;*0A*kfXr71z7Gi!Y|zE{hN^+@v^&l0{nH?fjD|a>I0M=*z%e?@q3GDI9w8!nYku{we3% zY*pV8#=vzz_7eO4(;eTY=7(n*FEuyy3znI2>(9xc$vf+!L|auA60IGNRX%xasd=FK zwye|IFZ(8&P3D`m(rJazj7vv~UVVEqAz*{8mhxx*>$m4-#u{WBX?*z@Fq!vdss8;? zG3&`T&)C!Cjcu3Vp1?yXM zY?L_F)0r8@HEnCMZ0Cvp4DNFZmq)&~&0CpyblXak`60G1N{_e)iS0f9FEn;)fBuJa zvp?_oT@_O`A^1~l!!PGXovA;&O1EfcpRoO|s<2$ry7SvJ!^HMmyZ>}0SiY{8`xg~( zOg`^q)Px4Etv{dMjru;{?_GA3s_v;fS(6Raw~4g+IOYm5p7^4xe1+|5y1cH%uHp*i z<>8m)_FmfQQ|VEE;bdH(7Pn)aGB*Dv{f0UKTSwWu@RYwny$U;kPo28h zA>sl%H!kq)f7&i}C?Lk)ezxqli3fgW-<^6jYVE{4&+U;*)|{LA^lkZx_!(1rdK7E7 z3E!E=#$j>r>hhZ#j|A`ddKAN-lZT zrys}e2*2`tyj@<`F}tigWZEqcPN~qgw-;_P2`KO}ZJD?JYR2{&PH~g(_p_XYK3x#2 z*?W5mqvg9bq7U8Yg)qFIIcx0|EAbFLwwXSax))b$6yBQ6J5^Ql>9#o$#~v*GU6;FH z;!i*6wHGwYTQyBqtf~sR=%W`ZY`W!Go{{GPxy4fjDo;G0cUWfAi*JvzuT4=6YTg(m z_@l{!!z*OVukwV#6UR4RZ7XCE2zoG~LMn8Nh(f2x_FCJp*MI-rIh`~+psbiH#$`W` zR&?vM?>Q;z)^j*5k4wHYvKHN@dn(`Sg+QKkQ^>5Pr<66X94S>?5`1OpLoVK?rQ%Lb zjb0zO%y}TvBqeLTCreghPI%xF)rS#XueV&?A+ltpb|B*sk$EznGRt?^-B6fsy2>_w zmEuXkTP0VsxIQT#jb6C-w4`!fVbj{BDk~na7Wb73z1{HDN`Kmfn1_$g9|=``xb5{0 z{*??X3fF|a_j$d&H7+%%nQ5uVQqO7UXZ#NMr(`Wx)b?CP(NR~usQ+1jOm%wms(=NN z+WmZYrkX934HkIvYw}A@?Oatyj-cQv3#Cu-85J#?UsiwY2$w|Na%VC0kv#D<59$H$Q%v)@naJO(VgN8t(J9OF!Hn@RVVtr3dpR z>!#ur(^K1T>)hEkAtqcd=JBz%4Yy0~h#zA6_&EA=)qLk2Z@f%bi?&+*>G>0MFLm?Q z%g4Ux@E%mOnc!z}Zn4@jwX?5uOipX(^*=FLk+`u%leyiC^Ksn+Purhe(4nNxIde-CQSOh{_eF;TBh67 zH1+DaF zyt-Fb9%vQGmEb(~ps?}e@uHF!FRzE@{_^)(emN^wDQ4#@CoZ|3%WI}NoGV%oGBy3T zy=~gk+wacYcAs_qNc7c}{F{`m)gN-d`>7dpY96O$?uOSYOA;L{dUvW!ln=~_irrmu zr^G8}#n<>RT_vS{ zIqAP*U0;3{vD(u9Y~Si8>C^s)w##g5m(Ju#ZZBVXTwv+MmbPf-!gF`ubyk$@)R(^3 zm=pTylZM-}DZ5_G^)6h_?Wk2)7pTq^KCM;2<5=O_wRszFn9FuOop~i{@wzLy-A%LZ zxOn9>UA2nV+cov5wI`$2tr$-kp`}aG)1LbOlhppa>+aQCzHuh3!EaYvZaF$AAjYtzi& zrDvA7ueG`DZ*$4{oQwAoleJ42cPvnO(0H!m>XM0%Qco){vyI-lW>&VR&kWzon!$p; zeJ5Sr{GwA`Sf*%tX7X7rNm%mJgX`D>-G=Hv))h@IJbeJWpYV|@0Wj#-)ir!i4{3^r#oQEXTIb88YXW}EsU<`SR&+i zRH5Uwh3BEDpi|NRCRTY4v9SO z4o_LaGpXLeRQBol_#F(FpJ@ioSeH_Ia7*drx7v#XY?fth&l5;gnw|qbM=+aW2#y9Sg zQZKLV)m}PDH*ZZr%lxlt0+WBIcnS_M8}bGB^Y)~PjL zF1^_v<(yr%+hr!}mK_Ci-)-8Wu6}zeU+q?>f2X()xa_cMO+WWpYO0z^)S5D}sZ0|t zO}YG2;()@g0|yWOEhxOWx0rw7tNKOunWkm;R~p=jxcY0UAD7WSK{*ejM*@xqwV135 z--Njru8+Fm|NOUc@56NCt4pu+*`J(g_@BY!N8u{**y*$5YbvjMyyp&M{g{2_h3U0F zCrl$wC0=|t=UY&nm*=6zZwj&j-Ao_y4}TAS=sQ0=ZDI7(AhS28>llLW%=7-|878`A zXU9Sqs(kxIB&FNFIn^63wW=sF`V|%8p zzqEJYZH|f6Z(s?1fcFXg(zAaT{^wxHK$8mtAKQ-a|)$HH;E4x;fX0Hle9$$I& z^2(2j{038>*gd-Xvp+}Tcz^Bjrz`(69FH+Qv*|@ziB{8!k5BeI{>mZ1vRv6igQM?O z+mk6~52Fr-=bm(UzePg%&HL4dH&!i-UvM>YqLAyQi!QD^_K3%(th^xBA~a{^R_iUR zKed%Lah*^V+4*SF{UzsLPfZn+ZS-jjTE6}JlAqi`62?*aT7HkG{G8{JljCPpc2=GqFTcE?c|LlQ z!nW5zQbMmn%|%uUUfuCz)3gi!?uT8OZ^)jtZ7NgO+Hfz&eQ!^trtP)dRXklu+$t+R z=);Bj;`J>nor|_DSAoxOo~^$fze(g|x$!#9z}t;s&L!W%HIIojG(Eb@7*Xh)uOP&r@H}&C zoQ}@UFIA$Q5w8SGUve#TTN?hlWVzS}qYF)2=eMgedInAK@?UNd_Mk^uRW$sKRP|KL z>wA;7yji~JSkqbCPJg4FanY}|N_Cm|q_uSxU#sMF+TbYjWVza6y}d%drFlQEy8n~B zxj9ACcOHYvu6<^$^<`77?2ELn%&dvtYL;axC3;qLrDoHP8AZ--_8r=DML}cbraL7k z<2;!!zk0lF??=~_7t}r5gY=IslhmFlH0`N_^@kTx=1i{>9v8AI+dNO-&g^nAKFdhZ z@a7jW?UJgM3ywM6n7Gr`MY||av^Dt(qt>AU>y!e&S*5d5_$S7{Uc79}`tD_mAK1N1eYMy1jb0$H*~!l~3%oYId?GmTlNIDKOykEyj&1y8<|;EPWfGb!$NZpT!&Vj79sdJ~&V}uT8<^k(#Nh zp52+)WzssU^NuW-n*Uf;)k3}R&s+`9cG2!I*1Y9mOWX=2b#( z^!^0K=h7m#Weaq7B%EJ(bmiKUnv)reqMc{Y`l_??&KtWmxh%i-x6HfMzr-xOBw%J@ z$EjM~9iLYh_8TYMaGK&~sa*aev-nb1WM-Q7Sxw!|d#7v&3qN?r^ZQ>;nU^PvFKU*2 z^qFcdivt)kql3Ch! z<6cf=YufCcyUIynqoU7#pF4;96#pTW~#F7H8X{u_y^r7 z*}X?!QZ@Rxiom?b&zGlWwR`rRE_f}hvgc3KB*D;TKC5_#j;5xt_Dg%)i_G~K%APAQ z_G(vJse7qIWQES{4I;~~KT};Pbn6^*t7^2!vrC*#MvLEASZOSIb@W8`)DE4iOHM7l ztZgjzd&{dJubW!VUb-q~OL>|CrcClHTj}zALcpsnPmTS$eJj2D(#{0W?`#N};C1|| zN>#^Wmj3XXOt1BRJx|NH*3R6Ne&`dE)Px;fiJBH(9qNT#hbC|DY3}(rCo^?<%VzJS z7pp@aUwmv5vt0Mc%4>@kywmiGK5@#sHS?SYi*V12MHB9o-g=sP^xE@l&yFot+!n!5 zc_KNB(?c@g&3bi)l*T!Qb2Yb@oX(o>z1%%X*D~bH6;>z3pj6QZEli7lI@~D`ZajWI z;^oT}o4az>nl8I`R&q~zwP(VsDQgtgXgrkgJfQN4;hf>3l|CI;vKwa_|5XqT7UhIjBjYlD(;S^nNupRK9@DlER@wf zu9e>wCEXe4aCcI53geAQ6GN6=mR|1cDi<6)%f(z=b-9wo`9oG~4|+Uq)!}(i{p91p zi>@lG=Dg7gky755$xVmzpl$G)w4{=8`uwRQ$g7n&=zFtBu1NcgJL zJvUGLT5-fZSnqV9NwwB61=9mJgN`Q%^1f{H`?(wi==*cI}J zZOPfB`Lg>`q%)d?fA5iqn(Ym#=g6TPnKgr}q7ZHHEv?C0KgC zUEAt4<<6@uUxFkiH5y*K-E^p<@Yu8uT`TEC`l*UgqrpOdX-R(n?R$al?p$G%|K z+KvZ3LLwV`J{eBD?KPo}#V=HCtCp;7f%jIiEPd7NqM|Dt&fd4onk*Gs9$!Dnz{4_m zt>`1ugBsxqTZ8LDv*zb7$!XLIbdK|KyfbGpw`5S?odo{y;@iT#9_!<#oZPs0({wEb zgAU&Xi@76D1r%wj+Q>`k3yHKDTL3NqU)$q*{S?_`IXH*Jq_+P znTAHf0nXVIrtHcL6uG{9s^-%Ks|}8t0nD6Q&nHg&^QAd^=Cv0yGOlVG%w1vmA>UHcQ?qj0huAQWC!z`~BR*hJ=$q9Y}b}r zEP8yR_L!r`{X2`Rn)-x~g%}xF6kN#JwdLl=J-ceMW@X*0c_N-VO|o>_qzzNwvuH2` zh4z1`i@fM+_-@Ne(=L_c3Y*T~3l0;Q@tn7~U97syz09k)iLr)RW-sMZSD1 z-BWi>`QF_6^@Q~!l?NizezUfw{5hb$@x-Ot#nDsD7^0^Q5Eylu4ckxgR`u%+8YR zy(h^cFyieg=B?7V7W*zeS`@rYA$pa^8v&7~t#Sug6jkOOC|-N(Y0iob>-46lb`Nt{E@)qpu*t4;c5K6 ziMczDrUu89J>bl`o*M9CLYAxJQN^Qq+HO}KYdv&VDBS*f$)asft}NXtCgU~b(^szP ziagtv=6XfAuh)(Weid=<&z!>dJ-rD#RXkUhN}v0&t84MCz&|%OJ*&F*x_{wRb&iNH z+XU{EsIuElDL=@dZ7X`?0<(aEX>hRMoRufrLZ++=$vCspTe``ssZ)}n?AGQxpO?)D zytl-CzSv5>;;GBeoXpv@Tx3V5wx+XtUBQ$dmS6qS>@S|G^kytqompURdu#8}(%|$v zqSAGYGmaQFthmflu+s1SA+Ml&2ZS~mlr4Y8aM^hIx;vA!gtD$oPx0KTe{1pTV4Y)b zKUu$*Yb+7)5?d;G;`@1t$Nt>Mw*R*GUU(rhXTM|B<18P^tuHw=yeGyv1-w?>lbHZq0(CpxXn2dLs$IYfF^d6ACmo&+Zz5aRI#i%+v zz3pqX#ZJGtb5mFB!R5!-<7Qm0h&g_wJu1&gN=9+X+~YfKl(${p`ToH+pV?ZfXTx{Q zGb1i1tvv)?jmI;xP{i>rKk}a@*I~t^LumjMt3@QWfw|%`~K$nwBERnEwyjf?UH$Oei*!R{r0-&;EHQ6MBNm9qSx81IP)f0 z@aF9kp23gHm&m+#d-H&0-N%kOD^@9V@yfk>t(ufNTl!sflFHAbg>D|&Kf=T|MLTM# zOl4W3(lc>_K|yKS9_KIDYByf=o9*$+=T(d3cGbksx|yjuhnF2MvMM`Xxa9H2u-nyr zYz5PU-@fwtPE4%le!>ks9+qPTk#j zs#a}Mr=y;w_QSiG*XKnQPnfcB%~X{{?das5CZiuxFJq*%w8OcLUQQKzd1G<#-Hxp~ zDh<=);}!VBo;BEhn95(5tsb*$v)4!0N1UgoT5T5H?R2UmV!@(>PqSxFS(+IU!p4 zESh#H?G1qvHot;5Zai?p!GdMts?Xn++-GaQ=q0*U*2T6o>{6VBL`cR7?SS_aYOcE5 z@Ev&4XM8osPV&pNi#MZ=G(GbCJ7w(@@#+E%*b|q^r_BOUgmVS{0clfyXg=i^Y#GDc@!P zSnBL6ZJp_lJw$G;^v^fEkho^F@zM39k z{CQDzy@AHZKWci`{~1nYU#?Qz<7^#tneSKs(%jX1G*uek2QaOSUowqTs^`_G6KuJ* z7ug(g{Wm%5FXp=C@nuc5+=ExMzmy;9eVX^9WnpZ&s@lDUmvqDC1x{yL@n!0jd(qtK zA1*AOcFF71l@Q?rH>NyvS$41@Y0uRw{QPt6*V+AAa%!q$&z0j-@1E3IezMa2YvI;c ze%I$c63gDayX@xq$gLvtMJDmz47;#kNh_a8e?`=V{OY)sj%!ujM5DAG?+WZaamOO6 zh=a@XP~*Xa%rPfcUdpqZfA5|5^5A(@Pqr>uxqZ)47LNB@Ha66d@N?seP)xTWY1> z5__?`y8H5@>qPTPweGClD%W&6XhOE%(Y%=kpA~(Yf@E@!R%UuWP3M#@?m1Q`@@vL( zAFH+bkp(NK&X}<3tf|+!&K{PZn{PXM*|Z3WFz2x|2AqG`6h1ZQ=;cjWVdWuKC2!5{ zB(4;DQg+?Fj`7PMi%dm1zaT$@xh~XLtUZt5a<`R~WoAnAL0g%&BI3j8~9M zfZXYO<{E;h`rbKh`8ToLbMk{%Mz7({>#H`2BIfQNvYR_hxll zJ@r|2G;Ot+%dgiuC%mpIUVpr0#zNlZTH%wQ?0#YMPUV-^0iT}j*L2h}IU57dstTog zEca;@4OTs%o#w?DRwtXGQR?a;=~c5-yO6o%-P^UAJ8RwR!fo$d9p0s; zv*=fZufBZH(?&k0c`et|i$Mz=>LzDj4QCTQXu3@0bZ*NET~-Hn28)0Lfnj$(AF#N5 z(`@pirnk$Z7KZ0V9iDQmb=MSC--UwH!WKMG=y{m(psG^SV0xA;u-?Fr99?v=NQ z{dIInXf2$Zd+Un(d+SsAZ|<&}@ou-MMvuyQ7NaRERj)I5DKKskdFaxA!^6*#MSfaPSH9!&!wW-B7hYRx8W@>*WaW_+n$hk_Y#i^5&pF7< zwG;Gd*6UV#xc_0$s%2hhtyoPrKhe$RUAo~_!vWi-K97?@exk3e9Osw0uXA2_Y0-gZ zj}?K+TFFy6Eh~fN&M#fElp~yd-&LN1{oxAPp)y6c?OKon9HOsCg=6ie}BE>ioBp7(aEL4Z6L`v+U%mBlVA09^7&|jcZP1 zV1O#ey(ts+o;s+ZekY~*+*_@?Yu)pB<<`t<7EXJc7vfW65q+C$!lss%*7B%L#dDAE zD+!Ex+3&aJf~wBJ=&w;t%8Nv%?A?6I`r8VD3f1UKZ0_gpOI=@aYhB5sjdHV%&pS=p zf5iFR()8laJB!Lb_;ddIV7q1ASGR`?LoU0ocFXOqy0?1UU$2=WX1C`RP1&kA>E*dU zYU5;v?L$fB&*Nk(&SpS z)Je-rXu>q{=lR+vbFD9l6n@rZ`Ojede(g=Sxq7joT|rMzEc-e8R_%+WlO8q5wwkQm;MRY)OK4+a!kX*KfrhS`{L&s#ni8a6_xfs+#Bg)9$Q)b!ktL z`SPO4^H)Ci&@O(Ec+O?3`yA(G@ketb0&g|7ygkPzI#v7AZyuTQ=!twAb8ZP}UQP)< zYx-Pn(rY!Ymg!~Rg64BF=1yH8GGQy@d4_pGT^E)IUgWwmF?PDgj~&56iHFK~jxCy| z!rJ>%cSUN#l0JuX9xA^zlTy!etvIX1)0Hd|wql)Y-(*YYW^TOGNlEM;eMa!@`K$i;bHX3obGbz7siX1}+To0;#k zJj^*z!8y0xoKtVb+Mt+{C(XwU*ess!u~$hn{YyZ-8{+wy-NATOQphc*6T2KWfv`2G5^mZ*0%Cd$-%35MIi)M`FvO zEvJ`jtn}Tta3{B7qROvhBJ-Z)$ty1xaBTKlGwGqy?1&}4%a$3xs*Ace<7vo*)CH!pds z5pd7qT#)~nOg@{b`}2b4d$0Jkz}I2Y%WzIVk(*)G^8;n~cG@;xerBuxEpD;Xnvj*7 zvc8>KYImfon_tvz-YKDr9Bxj2?_vTiPc_^G zuBnbjv(|X1>bUhandKkqIQVC|=J}@wC9Q5RIk__Y-@8?3yG3{LvK1v>S#n8fs=4eM zk?Geq%qv==Zc`q6-H5Og0zfZ^`8B#I&JCC!27A{SwbO`cd9&=a5{L* zI$?Eup32W@$$FP&By!{>sr+Kpo3M1Lwa}*OT!rMmu*Gxc>R(wIGAq@W?f#708?=I^ zZJRZ{T|RdMmw>FNhvcCmPMKeRme;#@tU|giyGp}cx@zmD21eaWatpXVjgEJjLI6=f_JJsjra4sR{dydklC$u zLDS?GYArb|Fy&6mJD0X=0*|`tJFR7oIsUA-T~YALv?EyQ_J-+UEB@X~Rh)4)FUT_P zd5Gl+53Vr(P5!5)oa=76%+kKHVpGksq%F6CZWgRz7g{2;$@ryA!taT@pP%&h3c5Gh zDNi=*PL)g4RmUXeyzT0jmWWK)vT~1*QB%Q!Ad4`k9mlqYEfy*dm|ZvDOJv8Vl{qHQ zWIywC@;>Fa@;~dcWFEWv{mDx+E-k*gVq@H@MXE--J+%6cTDFDUa57WTygqH=tEj2l z^ElruKKHTh?m@$_vqv3kyK1T?uZVurHmCBu=A*5wOLES0F$nopGNf-;6?s(F=`U)i z#OrhA{)E#xYp*qTI9oGnJEy!2Gd}pBD0GS6oanDN&j-KQwlGaKYkq{`A$dkd?cD5K zPsJD}{%;$5if;#LUv1N4b)R#_Ys-@0%#)(5Q?cf>VR?cEJHIdnZh4IGZw$#~T z>y+=jzrDr%tmdiLYyZC2+3{uBp5rpd!WcY)`X29S@UyV}lJ04F)Z*8~G{?zFcf)z3 zA1(A*;JIu!lgY{66GhH_r@gs@rm%7S*}Bp}K_y{_8-uccKd;HEH~$vi(z|q~QlvF> zcJM~AZIgl?JLu*K_&pN3pyk0(HGxB=i6!#d>cWz`*%vh?K69NIv@_3amH)xg4#uN{+RNgHnw|y*Pr>lis*);9X zxp%vSJi<45ZEVquXuJFEo$#J(2|^}TO^(<1xGNu;sO{CVrr;g#SgzRhUSIL){gLw%{a4&E%<9a&*;83Bv{KYu zWYO*VLouGJ4NjXUg>ZyxUitf&^Hk~4>)w2Guasq7adF)uHQU1I{Y=5_-hGp9dop^S z3Y#Rdu=jrJ9f~tq(g#Y+%TPj!hpTVUr{+nd~TjhWK zs!3L$-7Pn%N#vzh=p0Rzo|NbOZT}fKzNdDVUU=tn zMR$8f(fqUxU5!5)ZFQ~sO$+}t|H#zR)(GnAJaETwQm@Ni=S5flaEo-a2`b2`JzTUdXAjdB(s?)B_ zQNQu@=#$?cKV6Odn0`sRcuAdV^7fQVmwlIpzy0<~yMJ$7v{ zPNjYQl_i@VZOxP4xpG-|(Bg9|t#12jF25J|MRS7J6z^4D2Q(E-dW0u8b!{syhD#gDlATa|NOYMaQp?3O08#$-GHDgJo{(`G8q zFTOqJi~RDkH@CfxFS_{J==N;0xq>>oK6`4qxu-0UD_fGNY`>c8QyglnRZ1p@npqFd|0{0R7%Bd(wQWef}qzp|6vdMhJUW?Ef+ zWs-4m3G~WThkuqj6Kj6N?_Ipql|Lv+Y0af3^W=wN)58qE=IW{2-QIjY*(THM$@Yh_ z)7}QPM`xd39+qg!l^l8OTdbqg<@q^FU9$aIkA$`-g?;b5x^-!MNV89&^b5`Bq0w&+ z?~&hOV|8MQZ*k=|?Mq3={dYwaYSh&KJs$V(Z4~#teQ#H%UC%a*5QBQ$xTtCjfw>`rz|_wcWq9`ubJfx-&9UG*wize-?pATK3nI) zF6}DMNeSt!HPulxT`0i8} zTb7U70k8H)s@)EmxoD?nr$@}Ko~3TyoE^_+FlVN)ER7D`vpnnje7ADGqN5)_=5Nk9 zyYx;;)RY&(t54J#D{uMe6&tL(t!39FOV3YNqyx^0n0??-S@w5!;Ox4$uZ}!b5s!9N zvl8D?U|${7X8iueJKG)KuU+r?o;NGCXrbR+|K^Bk1q)9!nk=;FYmC7Mp?MRQtbK2&$KdzWWLr~+ zqvkE)b9X~lw=GSHny~E3gDc|UyK0^uUc9X>=yO(Zqoy{8#;vu#uS|K&<$3Tyua6zG zwvqUiYZ+xzG7VO4xt&pWNzZ$!=ak2(x*MjbR5?xBs-Mt`B#9qU&9f>Pm}7ZLUa_8btJ)YmovGBwn}6S=hC7wq28VBYauq5(b@=2J zI!B-|E@H}`*`23MGCpQ(e*KxJYs!mrY)Kn=b{*&PXIRSjGux(~!zMZK&YlZ-a-Z+t}ssdE>nDaYVy9>)Bj2> zPxINaD5hwU?{wbh&66I!)7iJ6VCzB`rVSyJUmZAk{#Do;uUb3ThK|rDzM+1TPAiFU zoLyi2cB=Xr#fSr^%C)r~%t@%0UaR`(Vdlo03TM8jDHP8*t!F2ybZze!k)FQg9)i>2 z>_lI-MxPImEZZKs`s%y$wkEGcMT&N!@CD*UdetU$A(T9aWjGx=n z(;}RiS<+}<<2A*r&!(nNKN7?|CCGJe*5$km@3c>Aja`>d8usk1teX4|9FiTkqj!Hkcvs-uT=@p9~+H|a}v1ob7C*;+} z6(pmmzEker2Z0ikE#J03ydXWKNzec-5&fEi{dAIvdPi%5H z$!XfXE!J((?k?N7MQ^q*nK^Nl;*l-enxikxUFqe((7M#2@5XnQ#Le;ZIzzt8_0G4v zCf&vGpmoIqo|>P2)3kYRpLbnzU}4wpi??reRd+c>55ma z&8%b&`?VePC|L6SocpK12cP&4Jmv{a*dXP0;?2}8?QRdIhfiqm&-s`4?{W0k9RhKy zgO>zKuP|rjZRzh0V)XPlb-Cqt9`hu2iN}62E0)hTTRK+cB@3M?6( zFgd9ENIA`%=w+(1t##K`Uq1^krw&iMILDufn)W}kpVllkmgZKS$**Lb$gaXVA+ zc>mXuTbi$fmt9&CWhgGR+;_!^9rL0l+{`b2V|2+YV8Md@9&wk}XxbDkJhU^U*-H1e z^U`B`)`dl{+aA*I)$Oa1eIj*=1=F0!hpIMAp*x6VvU|b( zE<6@tLR`o0%=5h4A9(KJxk-_~=Pp~W_AutUic7ez#yrzmDt!*>k*in75ZRsH*#Bx%Nk_3wk_5XC}|p zNv|GRKi_umn}nnCXN{t=C(C!LG?-5Nx;l8(_Y%)9zs&Eh+4Xs;VUgJF9PPC8^FK0K zs!Ph-ndxdh;m#^O&lPHVs@E?#{=M_dxce>KPrc5$@z<2Il(Y9(s^s&&)yy=zy5ici ztCOB?RDJPP@{H1qTgsX$yXJ*FQ29`}Gw#Qimr*zKCP&YY+`fLYP|qRd-I}W=otmoX zo|wCZ<-J#}wqw8vOD)?22XnlWW*rrp^H=p&ckU4uT5mOUa(f2<;E-~?@CQS}(jjU6d zRkJNB*4FR%nbM-mUQrorkP!IFKv2x=+cAhu8QW* z(n(t-_+-~D|2ZFWrd<+Rs$S#~Rop!93BSLV(Ce?&haOB0TroLd(i4_FTaPDa1+-mR zQ()ocz$t0L+;`Y#S4PkFM}OR&yLtuIa!z2HHZAyYhW#QZ_ZOzy!=nvzZ>4JSyxd>w zTNt=xOWTzbS#}-;qUqN}gy#SIHrrJ3>%g`rr}8E%dBs+)?Ax_u)1e8EV!ftLS?TS+;Hff~!iVCX1($C1 z+`Y(nQ*Srl9H~k^yBVzq8t&cQ!^C+~{e|)Sr4iz~daJWTG)-4b))LJs4LzRu>4c_> z+ce=Fj5}2Fog%qdRp#qjT1sgw=b5!M>+LGhu#h{?XS69zb;)?^oXgPn=Sc#Oob|WM zbvGyGl!`46m@WD>Fxa6ZuI|iC3Tc;EygxAJ?t`UIO)gEl#auT}Y>O(p)>AJQxx%H|Ow+&n z&UH(hA3r_#@8a5%!7l@&GEM|PF1y6%$>^blx{X+O_{FE zQ@JYW!fme9W3wYwp6)kbn!j4>C(q8@r52a{l&+L5$o`t{%p3IbLrn0d8JK8QFpdTB`rB}$(ieOY*d7| zg~EG#q4M;;z@A@ii#bhCe)}!zeSguGlM`2l&Fr;&reYItJL~g=%Xw>;T7+zzy5cR% z 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 H^#4r&XMpor diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_no_pbc_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_no_pbc_LR.jpg deleted file mode 100644 index 757abe26849bf62e3e752fc42737a5f3b6fe63d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36618 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%0AU+bf0P3vYJ0R9u{L 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 VXd*+{s$MCR>{ZzMg4+LY0swulDTV+5 diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=500ps_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=500ps_LR.jpg deleted file mode 100644 index 2322449c1dcb8b54dc3a01ab3bd9dfdcee8e9795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62029 zcmex=>U4( zFoXy)Ffy^QFtM?*vU9SsaxyS5G6^y;vna9(89K5B3M(ZRHcn(0F$!9^QFPM5iyy?4 zoq~%dUs6#uHg!#ETJ+F4lej;w=r14>IM#Z`ofDyYy<} z<=cfVn_fv3`rY2DBpuZl;Iv;R(bYmhu7LC4dEV@qOTXB^m2cMMXN!vcAhvv4?~48q zMnAp^2Bqwkzj9AJXOE4$eqm2w_@O_xTCGJNN_<^@dPW3BH5RY9@aFh&@3>V?>AqTQ zi7aA$@&3O(s=o6c4^%t3CGqXumsK}cF7;q|Jm=&)PUh{!x1-koUHrGYZ>pr&(PbwB zJh);v2l(A%WJ&$^L{oi!lHvVW?~7|T)hZO6NI#(ZxBjQ%`_Q?+E(vufn z3cmGNxZZhQ=zir7Qzzc9I>+ZIVSme}>`?XnjPtR47qUXkYK}DZZu`%m!ZXP&sCbUd zzd6aVg%?+Pe3^LY<$s2|FXJO>H!ZYVZvA!n$Hy{_@wfD^GtE7+;8Y z3SazPxVJ#%Kg0R1f|K7Cy8mam`}O%hgS;L3h5ziEdha$YJo@F|{HuPuc{f^~yEy-H zTus~N`MQ$F?!1-V7Zvek;bHk7W#O~z9~^uYyg#PSzNYZW-vzSy5r=kliWKpScr@R) z|8qI&`SJ89kWjZh>4FLujJF&slDPl*A%n*#p_PyS}@B`G47f8Pgz|(c4nxR(gE&nS%)&#CG%_k z?5p~*Dn?a3YmuwwPqE;>pFeAUUOs&39)pg73Exwdnx*cxPWi9vmj-@19VKOZ|Ryxgb~{E*3w^GC@i``sQhU&b@W?XaJ6?WeckMQ4-xEkEkl z6y^4d@l;l)hVGiJth{O0nho>*GwAR7&v1XK$3BCM6%O7X^ew#}bJwr>RD7fP);xB* z{|w8w?V2;YYRZJN%bAaDKT67f&j{V?704QLs#5cfPfFoGsjmH=H8y(-rdId|{8Vvj zmAUxu@@+%@^o3t@`^vM!Lzg;D->^kRln!e zj*t7f=fAl*|F6sWed4b!@BR2hsln~z@icACsTtRVI2q&O15bV6syy~!-f`wHCm-}= z8`%^@TKNCDx}IrW7<-_A!{ggU`)aCdzSe|Zwsy?CwL9o`P*G^JS3=Lko`3Pvr9K?@ z*4eR2t2-m=&5FgRPnVPll|7N&qr5F>a{o8?(=j&bhnD}gN`HU-`|;Yi`h7MnfjjEV z*QhG|$=z9MzH>ss)qjWQcLZ^@ue|chX%o}#35=R7k0bX#+u0QF z$g}OASG%D;_{+InC&7KkaYjJzvtIj)>m=k<${PGRpkLf^Xh** zW=WoW{MW_D4E3+&C#Y-NnO9{+`_J`%B~UK6WZC=WQ=VtAU;UWe^Q26Mq3|Tr{r?OO ze@z&je_3xVSmf3I;Z2<9vEm$zF1N&(y zd#xWHuieeRx4&;*0CK?!&yO1~mq&-sI366Z^{ocy9?jz!=L{$7BscIY%=!3+Z|{7m zzb2LvuQt~-P3qn?tDvCxKZEas^!^KzkMG?c-ac>Y8V&trwe|slcNXN%NLN>R@=yNE zgJCx@Y$@zH0k@xege>Z-;X8hQF=_+onm8DDGKUaFZtbonpQGW6#`-iKe z*7M3L1Te;GzTC(uA-Pqt!2aK~J=%xm-KQ8-1zt{^KXo-n{p2Wik%IQ$Yu>N3`|;c{ z@IA-M*B|>YT^HIkyM3JogN&-UsCf^6{_D8E{~6xBUBBvM>!n9q`ycu3TwdgMNl&Yg z^IUa()cg16YWMBh`uMQ8yMyvC&6oQv-)9~A&v5g#8W2A=1Q{4dna-+6uGWBH|j z|1)&$dNyeZV{_Q@IaN)Y|IOaN{pG~fe*N6B(r$*A_RW)#`L%Y(^5>u3um9QS94G!T zc(J!1zqgKn{mt!>;eP%125ZK}pO!bD+j9BeCWRMTmL024er&!hqN(Nj@VeO) zqY0CPmhYU{Q>Ld;zyE&R#7D1}Y24oS^YzSQ{>BM%#Wy~m|Cx1Ko@1_9&@_J^oijU@ zYBYN1Fz(*RW+AU&A$Q|?%MXVatK@PoUY535xp;!8ucPPNyXviF-`Vd!D_MW4j_0q- ze};c|iWjbUW@i}F-lI2Lb5dhX>6WFwZyw$%dtf~O?0x%~=RN7SBLyF`FZZ($Tm62` zNrrdF|I9Neu&}$o&G28^A^QjS7X=9{S--4ol~aexcHz^upAUMn)ZM#Nc1`|=Sc!ew z{TH|H9*7L9+4|hV?)T=t>aw?=q}YWD+&-!Q^lDzX@|m3>v-xAWLwrlG#NUky?qE(Z z%v@^s_foCa->=jENrq`1ZZ-cNS~T&cJhSgR%b&&XKb@D?^-Dh(?|j9eDmU-czO z8Q!kR`rvutDg(ctMl$*GKDmm?ZAB%<6Gps_WU8b_a3~%FOv|x?#O|L0rblz6~)tQ&lFk z=bS3)^0RpJfc^L1pTF#K-m~77Tp720x3G>^@rKOH$%dSZwcI5Ct!rJwV|gxQ&F8t+ z{}~>rU+Dk0Ui0qff4jB+Gi0xvYH^?GXd+9>W=|OIb&m2)z zK6*;va+`VNbKMNN7OkUgULXATA7T9TUG_gijQXjMjnNs)-|br)aR2`8_uPRxZy)dc zH0`N7*m;IJvR$D#evtjIvkLzm|{LI*ImGO!%__@#0)1ERyqHPy{@!kF1 zlk!?Q&UXE>OE$OOyH9PE`8h#rb_e_4smXIb9^Y z)z>EZH`p~U-|m0o4ZCUQ@$LT^`u{Whz5JhH%D;Zmw}EH=-kJC*qOZiX?!#xp*gL;n z^*b6?-neT#P2eFHk7S0n1iNzaeCP953J;#&TD$bSxBp7*ExPU#rfNJDox6Jy9~)dvognBe|_tJ3m6!|AQ^e;>bIZm(%8DWAX+F^}qia_HA1J)_KmQj)|9d z1^pI$dUtJ~eZ0o2V*B*#4*vfc1cJ~1XUMx!|Gl@;K7G3b2lEe>kN+9&aZSJcpW&X} z{2%8ge)+!W@;X`bkN+9YI9?2|e*E#Fz>MEP*X-?m6_afyR+-+m*Kfb}SUxM&pyf}x z|NNZEuRg8wc$bh+c8blf;%O!=N7NpeKBdB<|_8-e}cJA z$DXOPQDoh}<@QqUK(1x?G!8Or_3|{&uTzVGTwlF}M2+Z%nxlesMa?x^=V`*)5k zyHjWA`k(^QskxzbX$&ffHWn5V$Is96d>j$}EvH1+)zw7ml<^#v>nR`4)n5Hw|JW*j z`IjjFFQv+_{xiswuCDC(DgRdC#p&C7ZeD$6wpLRv)!dSO*Iq3f{+iFn8D4tX-;%s= zy)AZEn){b0l~W?KPCoDVPM^nqdE)sR)x~eFy+{hW5h}E8Q=X_LC$dgo#)C73X3lm-Cr9rpQV0{{Au^yAKTZ& z%gyDSu}E^iG)uLm+r0Z5?av(eDgQ@SGx$$diPtirg8wZZ> zKi~H!%b@(t?iZK)6*H)ON>`s?YU`W?MSR&T%6m1HmdtGs*NkN0AvSi}Y)J0{}&9)z8=eC)e(0BQvUGJ;sr=DoSMBf{1x&3RkwUFX$G8jkfRrp?*9zwGXT2R(1Y3*VGv&$eT=F+K1))$Yy2 z81J`+UOp@)pJJjj3$NRJU2Ewnsp&qc@a>+OFIo0NAL@A$ek{2qdVP(E`EP@@L3|4x zzdljkl%?+D5aw8Squ}qVvRNx*L$#N@nZB4X!K;IzTs@YH#o`jj@5S+q zTntN^_>)Y($2RdwnPlK5l-Kpyyg8n~Gk?ia{d>lkRz2gV@%5oc8tSO8G@af1_(Bbk?0{cI%Z|(|VAIpj$QZ z+w6P#xBtmZbZrWL7W?(a23eNkCyPs(-2ZNimS5DjcHhpe-&Vx&`@V8*&N_bTqUVwm zt2LLD7hb>f={EZp!w&hc=l1en43mC+C)$H!6KCXq1_mwpXG}`r`Z}#;w{*;JUe46I z^Wm;ob?41Lz7aD6oV*Ga+zL@PpMOh3K%+Vp!( zlfdh>Tc+&Tz;6-M)c<~Q2{CnMUn9#l3Rrt-mf?etK^?wWVru^%Q$SA?aY3 zCFPGFPM-YlR%y)=_q>?$h)FHGPM^>y|+}`UliGjJ`-+zYdK377#mQP7L z8?2I*WE&bYD^hE&ZDi0~&-SohN7Hzrw`%K>96QCddG}o@kDI8dr>RxQ8r|S|?BZ5u zn{Q9}Ze3hoI`w3DuHN;{t97oVUzH1r3tG~$r0r5{+);G}-j49Z_x+a@2YW7@t!B27Ok8VEM=Yf?(r&?mi`;U zzq73N{F-uPYUm52`AarFclXZSuqZ|M!}m{N97?uf7{voHEH>o@apaGj^lnVvmHMX!#XQ)!4T^&r^SSYWIsIR+dw{s@ARfa(+_Cnp5Q(*6P7` z*iWgP`W~Ry)w*fQ;Y5?0q9t!yUd8$aPF-$2#i%?-eM)2Be}=_wt7b2`F78#99r)Cd zqinh+|5VjYkHnvuEZDnbYU1YI7GLH)nQNN$Vd;g;Yfp>z2hQpU6yK6N@!22CTiyvR zPx@*tnI*$*zjiH*UwQSFpZCremop2qR%doqzs_`A&Q!GC^zl3~PIVTZ4~EA|E)}ji zdDw84*d&g#>h15iSE~KWKPsfUw?r*264~G+ zXt<=6)oe?X1y?}$--#1A&dn~}9p)4DYW2iykyovHZT+279!dF6mvmJA)UQlWVNhwcmGgd(PgP7ya` zvd~jdJSxz#SXEupsZ&+qse4aV-_idJ*VA7vnzxHNNTO|uZmA`cL8;FghJYLA99Z6a zsuZ|y-;-IrS?*c8&$_OKjiozn4MKh^YNc+~)zZr7$+He>O`gL%an9uBtZIF`r9z?% zc3gVu`=sMPgW!g|JFm7)X<6x_=;*~Fqmk0{p&-g%B19>ebGqWD1_#O7ON>7!i$}D~ zadSG-VwAaS(cne+Ig_^Ue>CvV^X z^X0*!(rLQ2!gj9>o^S|Wc+!65(X3qVFrx_^Di7qB`LR`==+2k?%JsHta>i}zG%}>TDgtDr)=`@Doa?Z zCC#ray`8T@>aDuaBjXN_ISV$u+N{C2^xzNkLwc*Vj>&5VtG7>^F#F#`D}mdetFzAT ziCAs*pJC3QteozZze>u|Dvvq8o;2;kRCQHF#t7@$_WkGQ>Rhr~?y+j$VehPkEN3J; zKNe28SyOZ1o$>uSb$7Rhzw=w7w%%cDrr4Do{u=}PUQ5rH3!XS_>YG3n;g`xP$&w6A zmY0scnANg$qgZTKQF7n|9mx#`aw=OTIQ;_brnk<1C5-ilYks?O!S zJ)gX}W7Sc^E0;w4f;-)HZx|N5iD}}_IPh(Y|Jl;2S(AjVbe7HiEYdD;(R-ht<*6$i z{yFnF-;{0_U$w=mHS$-f?(wB3Qztxd65O(LN-M+M8{d>CH=eHz-x?Nj-CgPLMc;{5 zHSQ51(_=X9oYY&Y8C1#rWa3ZveRjL9?Tp@|9sYJFXW+aEhY~HeDqd|9diQpx|BN;7 zB@P_pGbp~3G4)tPU#P0L_pWu(*)PoW?tIyAqAtG5>5lp`Ztvv^mN7YD&%?~Kw>Df- zx46Ey%vS$Vxa_Q+?K5isGbnBdnxdciNs@hoYIX3Wg~vQEvB+&ZH{W5^A`#0Xtq%b^ z-if;XX9%CdcU7pRsb-7JlZofFz7ulR__h^RGU1&sxl=xBkI}4~2@VF6PhJ zK5=sSJ+OYO`F3tf+WVy!s+KF6Dj7)@{>a@M=yF8NX{m+R)RswX1xsr7p0}ACt=~}? z>GxVIppcT#~AaY5#LwrZDT2XoLOc zi48^`Z*OEN?9?jN&U>9z>-_G9$$xfmc~~ z#m;qGbvA2FzooIwq*pUE-zC0zYfzJ**iTcc%cDt8jt&*d<%C6u)2fj&! zGqdzno-F?Aw&CeR_q=;fsjgM?9!>X8@`{d1VLm@=abu6Bg#Sja^V=58>fy?@JG^MG z?#q(dr>2CwQBzy!>320pOK+jaQx$~=eYgE;zbwD}`;^Y^xDM^97F$*Ks@~KOvJ=q^ zt~u|tVN<~rma2jUQ&vos^D|i0Q?#{cy73YfjVTk$tTys4*tTFvakrM&8Mk@KNo-L8 zQ+7?^HlD=1GuPTwtYWUt>`xPuZ;E6XNmee4cJ4b>Y7tUleK+XORx67@)(S?;bJp|A zOVw9SnccYTNr2aKhj6YLQx|e@Kfh!y;Gg#(d16y(MD|>#6*qV*KP8%bZqqg{u`~5)Thf_tH+E0FH}S?J-E98t zs?+WzI_B=0utcM}`NnIt)v4L*FTTlUoN`RPEu7f|-}{G(<&rZul$|6>w*1 zVjt0knWOsGDXEbPc)0qP{CS+n&@nK;6TE3r{r@}IN=}AyZGO?qC+t=FJ^Utz$4UEt z&2v>w?|EbzTs5DSYo?YV2YHB2TYP3o{8iP+C%nFHiWGvF6xE*2FE`t51a7 zV%%vav-bQZ)m`s9P49S3yV}8PBx~#GbF1gsq@@eyd=Q+(@W!af--eIV>*e43v9Cf4 zOQZIfXM)$HPxu|Dh9+4~0FHC(`ycH)kA z%AXS_RNeQnzwc>YnZ2aEX_vwLomL%>H%*tad-2ahqB7#k>P!`$Z|XbFfB(5$DEv|B zlfB-wDv28W>vTQzommRd>CW^@f`cfk8sS+b!;~ah_MUkxyK*^RM32 zqRVlsF0RXJHCr3eH7U|F_)vfcr@}mbYloAM6@=&4Bo(?SIbFP@74LCi(sQ>mX*QmB zZxi(8mWUdPa!%^BbyGLcWRP>QzQ0Rg^<3Njk~`O#zvTw55PIz2|J3Nuclp$#s@z}R za;hwOGQq=k>Kl{2SF~Jr=iJskv3v2EvOURDrwN4wZqU`T@Z)m0Gi9Z!vZg}u+=`V) zH&;12xO#3`#d}T4dufo0=F!&WKjXZnHu2l;_*s5#4o_I*?p+DpogycvM$Org9Y609 zmu$}@<0*2#{R@PT?JBftzUZSB?!v)%Q{68wMs{n5@dqha-7plNeF`~tWRoGV+YGRgSQ{#esI?L*1jD+9FywD^NE zSLB&gyfxc;EMJo`^?PuCK$wU6h67S(FLZv=_nbQIL0HVrmBm6_lg>!%p3YyW{PFg@V=6)GIh|H(UDwpsFM4|G&;cR#iRm^EjgD-3d&GIg z<-A?1FDeH<)H2SQerc-uS=FN!b8l+J#mN21mAriD-U37ZaRaD3N)EqdA6?Mo9K|HurG<3)tbHFcC=%L(~G%BU4507`@EVoH@9P7rgPBt zZLjYg(eymDUCz(*n7h2KjaI0~-i*Fay0coIcu#r#@tfDgO~$(mwuQ~J)C|0R{A5h# z{`#{Ezk2;=Sn2$GolaV=&qmc}lQ&+SGRGps;?9&6Qy%oBs{HOT(3%^Nb$``nmu-vmhJ;`$ywA39{pCiMaaymBUe8jY=YKf9Fek+~NZ`ZdtET_0+ddFYh zc8{d6(-9>%-#Ln_6q{X%acQk8WqT}=v5mQGOS^iGs(;R%(+f9=K3jOnEKynF*5b*H z_j{|?eid6@a#8nu>oS|WyZsKX(p|b>}RH{`_8l|oZGxBTStJ$G)k@QPfSh?jSz)@dBxm~|`FV{wqt3ZtgY)=M4~8n?i!sJ4Ce#AAy)jO|`+ySw7v#E4i&?%<5FfPe|NUp#2p zB_h_!c)+HA+14tN%xgVMPrcHa@maxMR(Rzk4!#A7xl1$Lg#50vJ+gd~yy5+7sfCwL zX!}lSGP+?k@7gE!oiiWHAK3iFf9dSD5d9TwL6f++C&j&c`i*hsI=!cP*B01b^Df)@ zU1rA>H>EQ|i>x;7T`{3yi>R)`TgK=q#!aJkEawxl z{)CrU(4sy+wg+oZy`Qq=cb3@>tBroUf32Dkwk6frGk4?nj^*m|0_CZ8Np3<*RTxjc zpLnNN^LFXX?Y*}nx4!tY#W5>5*W7ZaYT<`dQ#_gTt*7_r8HCRJ73-CCSz}e=iEfQ$ z=Y$>yug|!6vb##gZ$8hFea#b9gLOCq!?LIC^t`Ba&b`5Kckb7$tvT1yuPnN#b@_pJ z{>dd~5{2hg${1LhJkN!mcwTS2wd?g zW}LEJ9qhffR!h~Ur+RJEyrQwXGi=%UZp~*>#aSvQ(}TjADjBAZI;F-6&?xLf3vH_QOZtxoz89 zFZkHYW4dEhz{-FhGm-Au>%B*|?Dn?huFIV|uG&7?wM^+CdLY!ZgRL}d9T)whDE;f4O#h|4ZZ?$^1osvnI*~wMv8N?N>F!yG>b@89ujta#q z)}4ICbHgO6XXci!wN5eD|EySVF6w9GsA}!zt}N|T__inW<&{};gD$*W@B8q&;>m_H zr>3+&H4FXMn(4u-+$Z8C_K;bHcgD|GK})qA7_)*klCHmKb%Yt>yjD}g)D6HgZE zoGIx2{o|zkOq+DcbJgjA&#wiq&<)Yxn&mp)=RmWWUXQpC2ddQ@8J~uE~+hvp-EY-PmgRbSgvZQkCZBp1FHJo?}~d z?AJuUiPbUvF{S!@F5Gp^b*{a3DQ@EHFRJWw80=hlSK2+73R$hVuK&)9CAY84YK`iT zD&*`~d2vo)<(U;b!WJ+@ddRRm__g!e)w>tELtlz`?d^0~>AR|v&9`ue(VuIQo?cze zy&6xfcPzg!@fe@`MwO5Y9$~4^PHg$=yY0r#!joI7O=6QQ)O33S*SRJ-Rh^r&?sxYq z?$_BH&7Q3KyF4$Jt2b!xE2E1cj^1Yv=%rcrPUZJ!(9tNo^Z7XYoUFTBp4{CVwcPz> zO534KAGZ75W=^*=wcL4Esx&R!A)1o#@#MEt<(-@Jk8EBLp6j`8-B!0UtGF0*bE6Gg z6&0qcBux7}kK-VVwnB1rt^UHRufBDM{^qmJ3%_!+^rc3D$xjK5+dE_QHNRUNP-e;G zSQW8E)N6)=swZO>UCP>`>Z;75@%*%nKzT~_?_RgLQ425S>Mgi+H9INihN#w))IVPP z1Z)m%OTKbKQS}=AMPwO(gvqIV*dVY#wjJ(y(bzy(t zm(>#L3^F|re!dc&uDmMrcjoH22g{vTMf+L`8uFy>cy(dX)NQZku&7&4a(p23{Bo~4 z-;72|E}inuYT-e}nQwgG>GEHHbi+(tuPD(VY0vC%+fB+ zU-9MN%8bx^X=`ouw+1x_O!JEB2zV7zwnS9yTJTQx+t;d}^yY;AYK<+M>bpScLeZ0c z@64Ti9T(4RyZg0ZQQ3rfe|idp{7f$HvPv%qOyrn)`skLgY&-TJZjcE~+_5ksvNYn3 zr=m(>AA{sc#p4M9`uY6cE>&MLrlzf0X|dXE((>qxm67*?4{iU%#&P?6aj(~0tLY01 zwygE@@GRNa7nGYFxmE9?cDw51kdyKrx|)-O7$hCi6PS18u8G;17x;apSg+da&Aew* z4)^~FS8UpPapi@>D>Uv*S+j8ARI_JCR%gmRnUgYkY23V0uh7dv-RVb{TS~d4Di&Qe zS=r8TzriVl(er@jf%naGGSjwc{?*=hYr5YW&C=fs?Fw5S6+YEaRP?g=@gj+@r zE${dp67E^kyD(Dyc2K*|AGhFL%kIqFVpVHz9otMnMgkG6?V3ucNf|yQ;p+UwKedeRALW>JSGuH&I(%tM) z>FZJZb=y>-$xTZZ2yyurzG7*zkeZ=+mE&uK;Iqqj_}!*micLLuGb7-H{hiWvi;k{X z9kS%|87}3pxA(V{b@Y372Zs91RPs3x)}N7Q^Y6rsi;LaXC>=waZq@$J&@cTWVxG9Z zdBCGUt!;-(I!*?tpD_v(c=7%}!-=1#{xfWTe>*V#W_HTovzMahJ*w>2ef2fdFuJ^~ z=9-d;kb!MO=}qRZ=O)%&U47Ls=QP&^@07pq!>d;OK6oZ4PdhHc(a-Wus%W}RWo%!? zraEDrlV<$w+-&_p9(f5%mc_Jv%hk11^_s9m@b8l8UH)g9N?%|0zqqgG>0;N=bLx9J zwoeFR+jD=4gKX8|zZXAu=DYPueUg~ZwyOMAZ0fpaAD(1QJihMwTDKVw8HA$BOH%p% zZntYKoPYXvck+t&M_gyDTku8e&-NSnXQu`%I3;j#kGfI7&1gxL#)ek`l?vIehb*RF zyzx~wQb*8G|F_<$AHqE6-73BOQ(XQtr0YIfz5dWyCYx4^C*4Ikr;@v)w&!t{?7AVZ zFl}D0#eatMu;Q3+zt#1=PdOjBHhhW7k<1sR5rH2Vz2eeuCJfX?)X@ZlxZPWJVf7jlb++1`u&u{D5=D5V{Rw0qzFITs$SIuRpP;{QO zru^GG)5j6Zm#q556PA>A(qpO9rrmRnr?Y;#A0TnNV%^b=CILzjK1Y(NBphatx}(JW!{$r=AKGZ30KjyVQ$S~QJLV#=#p-ENz{AIwf_uva?Wml zZWvG%a^!ICSy;dErI)t+^9j)`^E5b@N{7 zw0QSc?>|BF#Kasu)F*g6pOa2gSN%7jJIckytB}t<+h(N=R)&fNYn@w1AH+%?}=YF7MX7 zTDLSbS3CFm(aIIVfvtL0$=mmOC_K*$u=pkGSWx4-KXj4zg20Dr3z~n_S8Fa1c&#ld zJ*mRGp_=)eukbluzpzWG24v|8#v`(Bopmkae*|Q%#HRYX)`Z)v4r|J{6S-_wH5- zSaC?i%Kho zMr!x5xgM+3YLt>cw2RE?m-gRez0T$zP{9PrG*XuuxuJS#r^hGiB2y4^-58%nw-kG=<5jdx>FL zP}9_{GuQ99u=?hksJYhr7i~`4^60U**Ja!7@xg1iy_C2=RaD4UAz69fa=T@b*FyDJ zq`u~vm|S0|YLqacEA{wCsgTm1sS9i7Jt;hR zUVhuY8(V*==AG-bTN1T;zec6f>^(bvU2$W((lg2UjmfNAmS2kn!{;XSt=xI{?jPOH zU3wCaEhXxtxL%5y6~--{+ri^CW5t9s%)MC*8?IRL_$s!g>{+^YS?B?OhMxL5M%%Aa$79`0>n3Mi z%?x^Bn6z*E%QrjjA8w!Uz)SELTbaljCc~dwHePdI`DJ#Lua(Qq-m3!qGx|HU^CccU zn3L|Zi&K$lCdZ#!-M??mj`wBWe(b_~;a?8NLgTu!+$T+%vOj!{$TFQLS*&Z=o_j%SEgL~_n~m>$`m=Lpam0~ZzSKI^YYiNJy!E#rucK8;^Yx}5cjk* z;oBYIQ9ezr1g_`>xom zK%HA}vUKBWD%b4W_TB1dfk%K>y}=vdEz27i-Y>m3$#wsG?$DCzw6-%Lz3Y}O4Akmd zBr+jLpup?Wk_k=?3eEQ?F5hV7rPac9X!BH-*wi(ydu|;LyQSuJ+@gbXN2!3Znre!+ z#hJ*4+)IoK)9>D|J|*TJondSDa!JQ~gWFS29Q0L^?q#^W>bR==v(Wqgr+6Rc?z|l0 zxl`R-!+y#i^CJ@;XUnv*Jipw0TXx5>)w24Buig)xAKQB6*o!R_C7;WFUK$#5%ZW>H z>yec#DRoj;UmdTzc~120d9LYapSx?NyWOs4wE+8NB8$Cy@ty!#qDLhnzl9XJxKf7;}7y_6Dtpk_Vq(1U|{CV?7cYI=NT!^u^_& z>}P_cgGz7Q;Fnd_?kl*`#U(k_75@6i%|_moz-AD6cs{U|YSO7x|*&n_LFbb0HJcNShTw$o$Mto`44wcTBj8QmAO@8ok9xnJE6zHTdxd+oY2`}B{j;PZ-4TqS}tOI?<8 z-ko6FGoj*%;CZX_S1UfaX7#-3wDXO#S+ZS~E0@!2$|fP>Ej-^P)VEtL7Ww*bvrdSQ zBIhm#9_fSwv0sYIIM@pyxAg|q#P!~vI4{X0 z^NV}pLc^eghy1Qg2-@1`-7xp4`)5(%&zHY1`+9oY^A#c4+debD|E{bUlKgC`qdNEb zSyKzQJY`6E^5EOCZC0vRXKs#p-_eIPxFcY4Euu(dHi-QN_skz;jH`;@7={bQnz=0sAz3E zacI>>$-0d(!C?)r6-4eTJvL$t-tnanFnfqUhE$1_`^CtwNB8VC0Bjdp~;^g2QBRmT~k{3 zs<+T>x{yGd*o?O)($Db~|2d#hRq^-t$K|SF=eA{PtU9}H&x>7?9u}VLnzWs}%Vx>j zzyt0DLJXYD3=C{5!;ffA4_I<`noL`OhnemBlWXLs=fpp{*QQ^9D(lYIDJPST zC**J5A#P<8zG{8ot95$0cGtIOxrU0jPiaeD$*KMPk`V*Dg4|=7mof2MS1m2`{+rXT z)-Bt1<*C~AfSyMY8g4?&2_HfnS=LXUTK+Y-StLv7o{c$2@*-HJ1s?$Um?k#0l z!#|VvvBl%>SN7_!F!{H=)Udng(PFc+eA7PHvr8>&@IE(%DQuB@;-m?d?30Qou$~RM z>Y*T2;NU&!Z{gjoZ=&CH<;gzG%DN+2(pK+ony}n+ z?ZW+m+yNd3*!veA@N{|YyF4*)S&+i*2{)ULWUl5t)Ux5U?#Z~f=Nablv&NL!@L9L? zZNHOtqdz?=V_j&<$yLEuexKR1g=M3_+}^j03Qx1R51wb-WP402b$+C#ul1&rDjH0Z z>htdW_RMX`o9yo0oOpSvA*Q}(nC8~9gLkYy9$OOXGf|^cV^W%;k7R?U!UU7@Z>?+ZDcc{6 zaef^Uweo5ducsErOWTDB2X?+LzVhm}LFf8cEfaICN~=cG zMHzuPpU)NE$a4Dd+LOQJ+>$QaIA1HH3k@^*HnfWz|K|AX@jeTyhMCP3rM_S7>kh98 z%v~OFTWx`Y*rrKl4F(32&llOneqQN!?d2i4)$49R@c%zujI$dl3V9?D28SVtPW?rT5?I`)613T_SUaz9ygZ|Swo;>*AZg;1q z&16Zq_riri;j=Q#6rCOJFZ#}TVWUhlZ_?rAzHSzN5<68rJh}N!nLlGp(|Ou=;LXX{ zf_=JH`u@4Eu54AxeX5ze-DldFe$#7H{GPIJ@?W5;b;9zw#QVAGUb|n5oARmFy)@5(NJR?}OeMv;ZQTV4s(Z0ZlX zIJIi>JcBuNnj0J+&SzVH#k%QQsz5?WD3?&+Q3M;IPGbYJiD$k8Q6Zo;!P1~r{=4LU=l-VL{8d_x!HR`PU-MpgP_oDdPe_Qve zt&U&h-V~8>nsNG-*uHsu-lwdm)t*oA^SgLEx^2yocdO1Vi!arxt?GK{{4su|A}gl{A>AgQ}(itaS_`Q7j#T99Hs#>jbwk$B%DR@m_*)@wG@76?@Cd+T%el{}1 zZ~66h^0m&lG1{{-S4D&>7EPO4xu(IW)`pd-z`gKzfulj@hsELHff||~UXG`x##g86 zMQphErMPSI@(yhxTf% zic;NCvg7^EXS;6e_IYZZU+H~s^ZO=7^}LcNvvhnkO&R_(I31ZJvtoB&?fDZzF*82D z(Uv=0#kH#Qi}#eJF)LXQ>OD}Aj+m79pFu$;&iQd#w;h=JK4{>MYM!>|xSXR+>}4 zNw4%snHE`E$Ub)xUr^Beng%2L-J$X;%u0Ss{aJjbS8O3uf1$Wsx8#>8OLtoDP0o}_ z5m-2X*2f#K&htfWj1*qEs;bMJ=lZF4_v9Jk)C;ERt4*r;==C|+gjM0`sbZ!DscSnW zn=R5y?!HsHZhY}ec*giss*t^y%CaIbWE!E6ba+TQ<>8zQ!W!n;k-$kt&&3{gX zElim4G*s4UN>@XXYICng;#8j_&F43VUwj`i)iYXcvyj({XPPczyVRJDJ$q=rvF>;7 zg&(38U)8=J4eFP?wM9gO|3X7)piS(LJ?p+)URm;P-j^RrB1fIFa=lh;oABuPtfi{k zq`VG#SU3hvar|?VS;8vm%j~t+=ZCxxy{eU2cYmRzov+!9<#!Ud&0t|^oyRq0?LwE; z7Ah?dveZ6?mfa42-uYZAX~rY9$cwX=o?F4$9hJ6=p+G(Jjnrq6p6@CvWLlQTwR<0% zS}Lo`>oaZElu1jy^(LMUdYqW#{W4v-yzAN}9=n_;z9roen~@qsr3+m2}+|a!0DQ?e6Zpvhm`6;V<4z=Q`ecr*LffkzG~mw%BmTTcegq z$b(xwS7 zXT^GMJ3jHfIlK4K_KPcao&G48Q_7b#bBolMV-7Gb^1H$YBtg}4ZEoYvc zdORZRa_f@sjz0z0`z${G;nc}z^IX2HOitfF@#%iu$8iA*WV+ps^-7r*a`r`6+)s^7 z{&?JFQ(0{J_+z0pH zeWGsucKxmY3?J(y8lA6c&pdN*v0HB?kAHJK$BF0hB^gbYxewXwzt}$hw>|x^qQFz@ z$b}0mDua17{WsOW&h5JYeg3>%<^ivsPWPTM_z4?A`LEWa*<5#Qm&M$9v zpU$;rr%&P)i~GEjtc%yCFMp@BcA_=gQOzf3b7) zoWG_i+{&rVHG?sdwL$7>fz1Af+^_wv2es6~f|Qme83~yfiu~w)b#%e%xKia)jhens zBs~HYo#k$&mlPklD|B_^q)U&MW!Xt;c5J)D`KhcYp}+n=gKt>%uQR<@^A_)PTYOC= z=w;*5oeD-LDnwZqu<%FR+^H3BxBleqNiM(t3I{6R^bdZr-8;!fLUG26=`yTKIgi`v*6S>OB2$|++R;zbu#VCqlT{9s_M`gAwNYvN&H^9Oe}8hPDfAGH4FyPWv1*n%h%x3rM-Lm?|&{c5z=OkK+8d`ZNqEriXu&v@mZ!j?-9ENoSN zWp>IcKe;l=bLXk^33rbjPw(tZ(0J7KDy#L3+FXU%LY#rQb$?yIn74YqyL*@O<>%is zn!`J`uq<-&bncl`&GUJgxr^pU8^^*V5zp>a*Gp7^Ciwxz{PYPyaJ-5ULu(!_R3ZS9UTsdz4&IKybE+NQLa zr<3$N?GyNma)r14efa6_{vMZ`E2c>%-!~=x{5<-XiU{wm$v_)qqljBn^ZK}9WAgF@Nq*ATx zJ7+CFzx~z38B_C@9x+z*y#3KvKT{)Ky6vjErrqu7$5$(@^IsTu{qJG9c3z>_vf>w+ z_FNBZ^I2u8%9^*-oZ7g3pT(7@B^5c#!ZSZ<2d%nvb2>-+?8LmK8eB3>Q$&6z_e}nk zE)}vp!)VQG&Z1xW;d#|xw_Q85$lp89Mr3MLmxsp@4r;Jgkp{y92@> zNF=@5uyuio%qg!)o>trfrSHX`Nxkixa9AW-Qs91+cDQKi_1G1XzSC}buRats?bJ>S zuK+f73-zAILGtah+m>gZUKt?0{krOp>eb(j%q0y|%Xj3RJ%7U3WoOCu=>D{O@t2HdcSo;q zD81pOUZnE&t7_ZTKE8`vn0qGwnro=LUsQ1IZ1xAzsasF67pbY<(bRn0lgWNWzT?IA z&A9<9`E>JrCrCEk$S=A$`R4{pYX>cRhf=yhvsCVd>^X`-^256w_ZK< zDKpbMW$908>1o?eo$9;u(AD|_=l7tE@0a*3zy5Odo|XO4)f2X?SbXC1cGc)0Px}Q7 zk6-vr*6WU%9J@QB_42PdRz6D=eL|GY4hmjdHX~}E=9J~E+wOeY5UqS^sSqc-RDMO> z*4gX6%6aZlk<9Q46);aS7i zKDS$(eM-eM)k9N%v5F#fM~BP%O}Bd4b7WR_dv?R> z7JcRo=Os@3`p+ZX`h>4WV68S$kK{qp*xz-f0{o-G5%gY`}OR$5iQx$SQ8X+Phg*O{4t?TSg^kzZ~$MQ}H#vmQ5GFZ}DjthSmTV0_E?;?64u0WVm$vda0N zk219vx>DWtC;IABufiDyF^b26PswTdPqW{l9sEM`<4R$*OY9+=I7%%QjI&DA|Mlcc z{i%!9znCnsY|=zaO|MBJx@8FtiYKb$<4$y}mEQF5WoT9Cb}^e7ey1WkEHk&b(I= zKdUo$W?ecToE_@6YjI$#V%eLSN+oWoo0h64?+%;R)iq%|)8vNW3563Uo=m!wFaKiN zj~S~YzsvMWKHAa0QZA7*;M~=|n==0vvwyjBt;%Y?f4jQi40fMoW&6Uf{P?3Bf6UaP z(9EW0#mJJUU|5BX#7* zw>_CZZrh61tXdqf*l*#_n`w_VvX>O==UrTFWBteKT3U?wteE}L5v4+bvf3+TPj(g9 z8(K1a{$2KXuE#!oy(({`T#vE`eG{_o#cVwu5u7(=TS!Yn;iZ=Udr+UCDrg@6Nk-Pd>l;`Tc#Rk*h;ze5m@*pmU&5FK~9QkfOoDhMQ4S#JAsQ zSfas`EYqLsIK{V2*KGMB%@>zKn0F{U$gYWL{@m-%dnI8;pSaFN6-`d1ql%ZdY%E?M z?eyTs(M5|&t0rfcoKn(i{r2n>m-CyGJxdgLsx^A#4F6d*?wWh$)*5TGobDvmyg7|r z-U6?fqRaG`EY%>0&@Xg+E zt+oHEu)D^~eAIki^q-hERq;ii@{~Tey2TRz{-(ds3iaCR=WD1U@bJy82Ho?ql}Fww zJUl6J-0_mW=9C2s+}4@ZxinNCcq$US^lyH5;_Y=D7bXVGwdCw(uWnV+ULq8>z*2#s z;;}ljvgMVhxfhe~huON7o>yD^)GuSx%A7R{qJm8Z7P9}M`u4cEZ+TadwAv+auFq=c zTCJ>LpOllz8ocW>PTrkU(|GU!pL#xjt@7f#-+~riT~*pFolyAHeL_IX`sZ5;>}$SV z`z*a?v9HXo50hFoUCbWb4$fv5-+suZZgy*SVPx0J!~D*s+)*LLg4bAQ2rw#pZ>W8= z?*3P{th_JrW@JnH~Fcxs;K(5sV8#tv~_hA7$;Q!7To^Kp(4C0 zH_iQJaq#Ld-(G6!NP5hbtPAkY^wiS2c~aW(#D9i5z9nj_rq%LH)m5G5wOOTj^M)N} zmvbc_+x9LjdF$JGI@~M7Yl{9!#jw3M4@e7Kl(}fN-F3lNy<9(=j7>KJ@BGPm>orI7 zX-xGu%b#;zUhk02-nQ=5+KWO}n$y0Tx$G+GFq(AhpX~-2Z;iVX)@&1-#G#Py`QWWp z>P=g-tyU95Q-2lfUryGUbSeJR-FKcRJw0ztp7Zw9#?M#&Gvt;;Xl^D?y@Jw~hJ-ZYY zy=I#QButp_D&=lh2Wx}b^~s0L58iz$HDyJvhto34t=g47+orC}vcGj_f&KBuKI_c8 zkNxgdU2NxHaqTMOsgP^2w*%|cuKjtoO=!AUP=Od%P=mjUwxk7f=;y^-*{m|_!!-R@ zXDkhqbIjpwJXUjP*$KIWzEcFhD2J{4&+uxh{@M?7U;dR{zWCU#$5L6&^LwAP3k5AN zoOp;W^iEyeZ2O*DbE19y?c$f-+RA?EQ+U&3&r;o`T0src zlbUWyzW*`jgGJI;^M&T~TYs%7OZ9ILU*u_>aP_f8gvw)8zJ>7~v?as%x2Y$}gTKe$cmL6YW#;IiqPuesU*a}K{ zN~|`!Pd;(@)d!nGOxtFYTrACi|8J%;>(t-M3OKdR=G1%Pmt>RG+5HZCTx~qw(&m_M|=| zx4Ck$RfmKbSxema{|WB8%9>1Q?VPH|gLJ@99_?T)2aw5M*@cVD_^ zshNu6hD%d8jvZ-PX}`i|;=c<&UxkS`Cz?*W8r|koByZG^^i5GkRyyw5HIqBZo}qDq z6H~k$&KYgwvKD`G^p8!_``horbo_e5vPxbAtuCH)YO0)0s&e)Z8C6g90=s{6=I}9E zu$jIH@rd=>lNz#4%SEa;Y~7=!=i-iRf2Pf>#s2(w-IFJiJXKa~yk1ozt;Zs9;j-+H z1%F&7eE${rD?5Ivh;-e9*tqq9v+btKYSg84=2&iVbyW2V+S}xCzRonNvsmTyEVTtq z9*oYxwbBl9{~64;R2uZ63`HNzuHrZPDZtoQ#pr8~fLpTz{GS?R|iT&aJOAPMAo(%H&?Qa0B;4KGlpn z`_Ilj>G_~>;`^1&OaIz-UQxN4`R%X6mB--%Zvy_hs&26qO_pY|{$W5DtgddDXO-(eM)%F1UEY75gKt-}6@Q&p8I6KCBG;!r)dbl%-X zzm6?xb2D$ge0s@z3;%Q5xPo^DojYDCEw(@T#ogJH zdGdLmUBuTqrbl<2g&(itky|%M(sUUX4*$su?O&pJDj_3PtolRFPdCm4R$;i2*ELJaM!n`mMfzKN1FE=^Lf1SE&c1g*$2fJPv zX4x7gJy;iXXUWmYO6~{py!FJSe@s{|tk0hTzc%UY>?kP&QO)73uJF5n@_!DW6cs25_ocU6wi@;kF0br#dFnaO})Uj za<9+|FV2-7KQ0$}p1yQ{#*HBRHOdzZCM;Dy#mG=DGxylCiUlv92V2=C9NoD}q;zX& z=2hpZQVU*p1mtG~C~OnqxYuXcSE0@xo_yfC`|7#!FPeShHZS&C6Kgy*W}=)ScNRzG zv`KBw^M4*?F>6}N@Ap(-PUFsi8n&xck(B6 zvkenl))-ux7vT4a?ZWLm4Zc_3PHIZMoI5=wNRKo$e_T7G3#t>1z-+h=zD5Xw?#QRh(9;CegB;xGU8ps6>npPD<-t!l3Cx>c@* z*Dh`Ta89=C1Ur}G6Ad|ji4zYdp4;>KQaMZ5BjePwhaFEY+Vq*hxUnpsFDGf2AAft* zr`2hvxMnQS%U`a3;h*J^=~uP0mzP}+x>7`;|+bKitZ4Zdkg!>|eas6-#9W zq3Q;w)peRGH?AEyT~}i!Y^HVPcAsuV;Zo)%ev5DK>~lkA7nX|$|C;O>o92A7?bbgf zX@lcOb&oD(&E2u!R-eEmrhZF{V+<;Y0L?{m1y)5o-Cb*!##Sn7@hzodyPPjL${Tk0;@;~A&v?Q0Wk=o!{CHC69hf#e&{ z;>3!~uw84d*M{FxFnB-JZ`snISCi+}YC3axsB)gPTe>z;lhZ?e(wbbaj^Ox?pC#IX zx5Qq|mJSP9#6Dy4r@Nniy)1kB;_UXEkj(wZ!euH#NJS*;9TByCml^yMDs|m6@Uj=ruHS+yCO$YFDIjo*d6M$3smwbo1BxfUTU1~3vfX9f@wD0B zx1@^;6-`rh37X`cCwS=g^F9%O3!5Gp=84l+hKqi`66GweT6ryUNod%zsivyhfxK_M znxb;%hp)8#V0mt^Y_l z^PbCOp1Qj^FWMx!Y-?1*r^i}rjpm2?ecBMz;vTK485ShwH2?X1*&UX*HwIq*RjPBh z+-vcbEFX(4?%VH0-A>$ZsQyv9e=@Aw?!UA>RomWKD8Nf(&9@37*s8+|vq!`Q#MtGvuUy!4~*5`(4p&RH}n9*?O% zY2EFut|-6ZfW>3WzonDTt%{x-zH_zE`(KY=^!s}9S}HkpPMX5tEd3#Lo(H>4rq-LC zYr5_S3LR)w5@lpo?Fj0hExT!f!F2xOpB-E$&Q;jFJayh}lc?LuqGj9@i+2}avpKi^ z;#ZwhrXJIrCvnfcJtuvS)t)Zd!f&~rd^T780)5hi_V%fItM^a4^ZASXvXZIJo8Q?j zyel!+DtVJMw>-CCyR5(^wvfj&8CE*8T00!KpE3FH>*cok+t+=&_(z&^Tk7_p$xlL8 zy<6&4rqw3Rr}HadO`hj1p~(jie)m}Zb(+81O3^BnjuozD zT4;v+e)OWZ#I%TW^X%EaleQd>wm!+HldG-Ac$_=n;LpkPOly_d4yGCQnfJR2+wDW1xh^deD#G3_NPbp$tkv!B zin#KrRk7_|-lifepD#9h-MFOi6jOtBC84ydaQCarX17C^IRK}6!6GW$bDMq^qro^r#E;t?PlD~@O+Y`)wC?t zOMOjFk;;x@iu%QJRq~a=IaW_zUf+EF%%swGdK0!-DKR@yiEA>j1|6BGX;51G(7Gos0ohH zSK;}&wrO(jVT)hdJ6T=@z09p@zFcV!VCyrpeQ&2EJgK{- zmEv(U<1EkTD*^i-@B0v|dPFJq`qPV7uUdO$`k#!o^^7ch&eE!waZKpmrJ^+&eGd{= zq}zyE??HP%ua#cCVpG-Tn5kiN9!<%-=zTF}!cvVB0a3vl zx7M2pOlN;3H1B!Oo_}12GYyU^_5TXlDZTUE+l=K$U!-1P4oGeF@$!rNJAdxCPOs(* zt5OfDMj-|D08OSIQT3+2!Hn%W#X zU*S~WmlZ7QsuzDwe0V#Pq4@1`-rh%i50^w6YixUMDn2PdW}=vlsfVV7Oz(mTeD2CG z*W8!>kf+@&;}|&ymB|F2spnxe(d6ghj~H^4lO@3e~M<>flvPT$~)CQZF-xX zrJ6Q3Jj>S8F6~;%TIaK>k&0Qip9AO4s+Pa-0tD1YATfHi;+i5?VaQeIo z)6&$dOk5{aR0JHpNo9wx`@ML@*L0QEWzu>(rm;QepEYsv@PoM>V{;j^^6yC8lCYs_%Df3N!HdEuw83i{V-_Opj?0H@EtMZDg789N=^mUlCy(v}f(CnZ|42qTy9-r~Nw){)o z>F_UB&g<7|^QGv15Z`-f4ew2cGKG``p3LXhXDdxk{d-eva`=k9ddzj+XZAj2*{U1+ zEmuYC;J0%g-zBd8)n~d`^>ckd36lr=>_4-FwVPHfebltk@y3ofhMSAN%<4|^S@!o~ zSXRvSd%4AuE@3xwr|5I}U0s-^bd#sbZnkF5>-ENs4I-9cHLGec+nemJ$EUpFqou2p+mND))@Jlohli|M-} zvv2vAd|Dm8L$1{LPT!2&9Y?+_a-Xq2Ake9i%bi7r@&1l$UHjP<);~uFQ>-d+k5A|-orVslEo)+^f0GBExg^w{_Za;aheFopJn3O!@6JqEs(mJ~IMZg*9s$p@=`W85PrTfHC^BZM z^22476H|8-iJ$m$T!P)E@so1U{=k}`JECP0s}$Q+H+`8lNzTP-nWtocho8Zk7VXCQ z>-N>HI9PZ}Pen+h^Tm_}lO|cM^4>K+UBUX5DT|=+h8(4K?!_-MFWjEI(|WSN+qYVu z8+qJzD)}$l^w7)Tv77NZRfkW^^QRQfS6pCp;e99r`Gz;6;ggZYku2O#T0u5RnMqT{ZHJL^ZZM+ z6?lYh?#zFt_2qT+uN9eLA1B?J-W0w!t}vUm(!%f3wR;Tb-c|Efv#B1A2wA1MXjH;9 zdgOFso*SDnuZQ!F+@tF4W|N=poHXClCY_xn+2_^Mqs4d4KCSTGs>@l+I)zjb+%so>r zIjdXFq%P$5It|$lxd*u?e-SRdq>q zt|#+uUbF7K{$^&#tXq!{E;*33{G*T3OwlR*ii!*t3vS$+y2gqt$jyJ+GlvH<&(vRB zn^cxLm0QxUIjHW%(!~!>c}6T)r+UhJ`G(KE-g(^tugU{vCoL74b!S)2^+Ye9ovN+x zoVL9Q?p=|n8BlDuhUca4xkX`nY~!_;Us62OTX^boz)Y|BW804}Lla|w#Cc`O%kx)<9h{mP zn735^LJibHAiiU1!Lb5 zP2IIMkLRDN*L-eaap}vtc`;L0mn|&YcgAYb&BTm6rB_;+dIe=uma^(;dY%kpWSGGC z;Pq*Pd2B~kUE7)A?a3GM;{A&M4F0=p(x$f<);KM6T9jzC{_Ui^UrlxAcd6Xmn-KCU zWJalg@7_Q@a|OGeZQqx$OUv7|s>mmBet&Q++Uj~|ZCLuH1q*k~OHGUxShDiGp=Qve zX+LZaC|_ao^uKO3-^%rmZt%+`TjDaCbxW=&ntZWU*{--eWYK!lJv`bhlZyYYbrQ_D zs;%}Q)T!OZ!&sYN&1%Y`sjaNKp2Y=n50!1opIg{e-RJ+XSB}wRrqO}0BCmdNM^PMOzJ-x_SCn~F#F(93*>atd1!v390mb}%xwWXDZ z-Du521%>%fr84X*u7_ThYLUvR+LCc~*-hu8+hjN<-HLU(a_@sdk#N(TPkj8f+Sh;e z7VG^AwcD?IRq@$p%|nl-eypCaBADm;*uIT# zRj{sQf!b-OG?z@}V#YJ+y&ivSUkBGZZ(Z)VY^&sQLDijsJj*$Kidxed6V->NQHQSncz%-6U7=@=Xab+{YPpV0n#-nNx+SV> zdUNWlMN@(~k6McrJ`kODWkT@N<*a_%(m``3F<5+l@=JaBs-w1L3v+eV4U~h*K0Nza zlf~f|$eXSAe5Gx=*7oYF6SHm$JYU2WS9-srE~RPit2AZbNmF-BI}o&eC5K0l*A(Mb zzn!-|`?~Sftc?6KWx08aRthGb38>6+EH21D!zs5Xfi;28uyIcJ*>BTI+FG-|EIY71 zT4}1&vYS&S4I~zu9mqAhY{*%dx~IHQNoktXegkdG6NgrAZ(BDbzI^Lb@5Ln#+89nUe{7H7;&F2-s@ZmGulK1bo{^mAm*h&ET-urQ_3~TmLQ&RT3K#W)rYuzv zxTWbcNw|rBY5ptAmR4;&On$O9;ym-B^kF0@WJH3or_E$8@ zYHoVFZOv<|R);R9nF}u~AIw>jAhPLFw1oVklFf_V_FT$2>Kip})0648&(s86$)1#{1BTB5Fgdn#Y;*5mU0S5AtvSl_zm zt>H7jIjd-*s^f%1(Z#0<)~sllBR;{>^5n7Ind|gQ-7eeOf6TAEpk3Gx&y;r)Yo9-pJ)_;+05?>^C#@AR7YZP3+^1ziCX zCoTS{`+@!C{Et`SALxDei7GvKd8f*fz`3Sc&WRFEO1swB+%i1CS@HhY^mEpQT0gda zmUt1HRib{s+ibR$NXMjzf`vJjAAQw}Jig!B%6~u3hm-Y)e_v?Wi(m!sm2MOHf;o&I z+qLXC)fP}Vm8UPb<@?)XlU|FNM9tOn-ZbIUm5ZtymWOY7{Bn+5#q*$cx3}!OmS4BH zwzn$OZ^hZFjRGO%r-HaA%5NXs@Q3hjm;00=;|Bs&*))V^wR#+{E4<7>Y`@t zG5pfwvvtW=;T6Fz{i42SrCmr1K63E6|I~If)r94zyV|~0zKrU+CUQDO{mN7c$F4`a zeC;-WFZB#^jcg5G=F)a8;J53Msqcc?glr{Qiq9Fp$*G$hwW&37rxVY$t9X+ACkSugmQ7L*r|otSmVEgF65Fo4cEQc%`h~g6`7ZDYOq#RQ zxEw<9NN&Y2M6>k2Src0+x!3_AU`ow`RN}z9;3u>-Z&8D)Pgg25X-W zdc9d|TlabQ3PwePYqv8?HJq-Qs~%anbz6w_lEz~p%#z)y)$WNMeG3otUpjSFYB}St z$6Gr)CtYdP=5-HOuIjiwmCw3~;~ZOI%e|FfmZ_?WU7jdksC#Wi&e__Ix6`C^=J4IL z{bVU|uK25#ldba)tw*`X1m#RJ4HaEO(h8V!rwhe|v1^??sQ#PTKW=Mq*}7AuGXuj` z)vmb|(;*U4uDC^qwZU*>go=RY8;|ROh8}v#EiS$Z5hlCVc!qFj6rS4Qy?VL9!HB{v z&-{xGwbf0(AFNjR{oKgo<=d5ccS{VDONoi-_^gmuBf^GCv-uJxVtj%j<* zeYu}~ldG=_m+v)_-l(yDnQ=!`SG404lh&r`jB*bhD~`XuGf$Rl?>jLasnT^{tTLt? z3e^00UcIJ)^RvwYjxVxDD>)Tp|GZ=1)i@XF>36?hL&9l~blLZ9FE%~?@~kBD3fEhY z%kic83&f_#ai;7(R;II(Romg(>dGnQBQ@o<0eWE7!n=DU1hAfAZS;+nM&)XY{5jnTB3<($;af_qo&W&ZH$RAA5>FJ-dmWz9(!h< zC|o@EqW_c)o~jPopL!l|2tVJO5F#2pt#$2*?2rzx2|VSK9(shaU48s%wMO8r%7gN@ zYBmu`U%Q^F1*y5^EmqX^^x_J7oU+#XLnT9NI{RGfHLEfwd+q9}nBvu>@x^RO{)AV3 z2bM=mI_5ks{A}sk2I^^)6ssCJbv%)F@oxFBF zetLiU)YBOk&qu0kS28Kr{8BZAtE4T}_M-*&=YU01tU?OBI3FYw*fv~ZHd@{&v$Z3c&I#%+HEC!_3Ej=bzP6wxmNif?+kjp zJV~e_j6sq$x_j;iHsP-iJtDp4T6H|zxNddjj&f&{TQ!xOzxP!y&2VyX6PdF-E6B+3 z75nWgroF$UMNelf{JvQC=M;`t-2zLwQZIb|G^c`fg}~BZAqAonTMKNzJWu<&;x7NC zb;Z%WV*5j;eTwomJ*s+RqR_n~OdJn1gnNWrTKMNpJX`0=b)`{g%bl#2sH3?>Dc(`$ ze!;mGZbF4y>Rego6jWNiT`p{wpvS|bxIHoQisfH-SJk44-l?0~_Gup9wp{Do(zT8* zW$%C2Y*e@x@>;3%)LXv$-WxRijw(L7{mg04vr7Wgg%&nB#$E2OyYtF!jceNaoFmhH zD|4s%Xl1%Ieby}4y>mNP&}TXjmbgu}O<4(Io%e{d#rv&ohgMUS4|#-pm13=;wm{LGwgaw*(# z@t&2Trv9aF!Eco2ENE*8^Yl7seNeW43D5V(R&GmfUo{Pt&TF(R*k{OBd9plfTIRhB&Y+>?HPuBCUFXuwn-zFSUHW=E-se$~4E(pG7&=VI|EdsSVhsoGu6@>(eK zD`XNU_la*-o-0nR2-@YJcWTy`7jIAPoELp%xumz3hexW%Nlk99ug|$G7z!BGEq`gJ zZ`##6`TNV#pPTiTPx&%osnM2&OBPFu&C!&fFmY=n%X8blz6GI5rkAr)EVfFV_w`K* zy4Sb0J?_@>ON?PfZp_L1_!;`=?d%Bae4=W_Auz3Ne)NJfE8gj={>aE-^4fgPy|CvK+w9MIr-Ex$>Tayt z82J0u^zhOhnmhv2qV;-MweRFHGc!x7t1EDL&fBPS`o^JI?4L_k<;z=KO4w_+uo(z{2-jrg@p@{7k*ayCm9v*6CWghHmqb=u6Mm4ytgP z`iePglTmS>@%xo}FP5-uwOaA`;)N$29}}0hTDDJVt(vk#;nTu%7T+H~UDocuE+z2D z^f`F!LH=9aE}xyNrg{3X*r?s_UF1AzwXRDyA8Xw* zg<}HUIe)Bkwg|CLn>?i|`oxK2{wxn31?;SX%!YT7%Q3 z`_7Lyp30Z<;jZnGH_rY`w+cKAxD(J#oc1*IlPWR<%@~?YEpL z8$DZL?Q&<{Z|W8SD$T!}S7-!lp3ykcHE+U&+;g*C)*PP`96GDviAqlT>B41KC&_Al zO~#)opTnU#mO3N&qe`OtdXCwoB)2A<5M>A4}( z3-$VgS8Z5wq;OHI>e*hAwH$@4StlQ79kkbx`*nN8ZT+3TtF`8AOR>0hF`)99XOy$g z$~_MrKW}-y&Hr@ps`OJ{msWBzUC(e55Rx*uqVx5to>}IU6GmCOfh%8^9$C2Qqg*1F zR=B)Mlb?a{+VGcK%Jsq$@3Og6*=RZUo-FLRSH{TBz_6sj)4irgctXY1hMCTd-V0-b zUx`Hdy|~umEc>_3>HDs2ce(Ct;0R;har=g@gG_mc)s9s)?62-0xol@u8`duRL+D$_ z&(eHWvF41&S(8F0O+MhM{biHFaHdU{uk9H)W5kmAI}dwlg1ilX-WyK*+VHG8*qZ z?Cngd+?7~P?|oJJ<8xNi%%#)Abr*d#=RZsnP1_h;@&E%RLIBBKD=P7Ge zvn=>Hukh2`U$&ls7uKGec$B^M-CpPIsv%M3%YBaZez+v6ctF0?cjdGR8z(*!)krV2 znX7r@`_$_Nftp{Kb-Pm4EQ*4}je>o*-MBqp8we`!1`>Wy&a9G;^xZw8xt+-(Xnl!EDLWFd?jZ zQd!HB^n#L7)y$=#Yj;;%341MKsk89Nj+T|a7EuLjn5HxZiG=pdpI-Cf;TEkg>Cd7~ zswc@If z&j%$AvQH@DU{`R8IjTE9BY;=3YHsd@Y;#??`5vpKdZw$2p1djO^VT`H<=vgo9Vu&V z66%6~Wk2;h8>-gNwnAxTNz3)e&Q*c6*)>+LgJLq5U8q%+PTH|lh->rH2MwXqS<@bs zsRyfFiEZ|+GS!o4{#&v3h<0V+r5DGa-hTc~rcTbU$Zh(s_eHmPD+;%~2r-`#8nwP| zRrKV=$Ai5m3eGT!)GMAeWns~zDLiw87B^0w$JxcHDdljH_sdb!({-;y=1p>6;oYH? zx7{Jg>`!#hd&MNkKb)P=BQ9Sev|)441c9JM z7Ed#5-d+t#>vvgd?y~%no`#dwg;R9~3$F!>UR@#-+TeNfmE45l?Y(h!Gvl}IZ~f1} z@iz9m$;MgTmr{=BX2rc)a#eJhwN5MV@#-99_H7rIP7>2`|90Lr zW#5Xgmu6m$s&VJFU%vA5tA*FS0=0aWNmOoPc+8RM%<_5a4hxC1Gd`GJ{Froe^Sa8A z%Z#U2@~oQEsjvF|cFP1W&!C_QQ+9;zVZ6g4e2!uHKiOTDgs;j#uO`0*KLf>b?Qtb@hElpd6YIk@(k9qc6Z$*CW-T3|MyKb+Z9N6i{ zQF>I}`u<#n9osp-g?~-uznFD(<;T}mTT_2T?de*oX0qzDZ;+D0YBs0&1*+FBfBwVp ztN)_bW#up_y!-2PuVm!pWWC0QR}Q| zprKIkoq3z~aA?WNPGriDTgmx^v%7S$TW_U_KX{x5Ld5L(?Ub?h%j2WHYpeZRx_Z@C z%dxyPoFg|=tLy!=-z@19BAu0Qf1W?hKj5pY-PPL~{x9E7E#0sptqb3QAo%fHH#{i)D} z1xs3aAI+%{U3_r*qeXkwdR0qLOj%v|b+?sCXpKqwwbvOr;-WXb9jh}Qy0FS5XbbP} z&#qb-y79%Q>AKT$XI%Q`ug!hL{QBV_F`=oV=1tqqCrx@(AiASbzIIlZeEru%8zx@m zx%WNmZf%Rr+-l!fc9EhHSOce z_<%R3n`FG6_I_U!a^~rAMLw_6jnB9AK6&@)kn#@Et*TnZcm74qyq3*k9<%1sn(uXg zIz1;WlbkKMNIFVrZAVxEg9PXEPtPq>5~d&be&2Pr-(l}t?y#MfJFdQ1Ia_g}V1~mD zu2|j`pC&9jC$@miDS(e{(aozIS5NPn>NDYGUa#CjS<1SmPb$>c0&6=&~xT4SGG`A-A*Hncak28;XO*-YrsqT|yACX~V zw=^(RYQu>Y(HG~m$}N<#vN=AtkX7-_`Z6)|73q^WSwtot`Cc5JusO**^HitHx@jvm zESWJ;_J;CCK}XJ@Lk@ob8C0*$elYPRtAn=H+P}`*Gs|P0N{_Q$ZOwI<)LMI|wK*bzwxH zGi#g8q2R_-O(_by{1uj}H#n*YZjGGku=>uYT$ir9>pHh`@~?lN$?YYbx-D!&T&{-y zN-AZ#C0P%5>RbGJRTO*Y)ss2mU457DGb#x7S$vuITs>-T+M;VW zUpcM_)ATts=c?mMVPQcnolR4hY6WVAD_`=o{Pps3Uf|mw(_B`a&D(XvYp#LGj)J&U zqsdBcU!PigZJUzZ+#?&9-Q6czbl$ZPsFu+kPv*vQ`~p<1^@ckRWHgEO&MOkyQt0 zJe)4LtLN3?wHj7aRav(zW!%8N`seAz-z5*o_}GRmIy^OG!Nn(j+gFxmIN5|RKHSF@ zxPw*vPRZLl3l?l}YPfyi?iSusj{pTH?;RN#;csS&%m~>vC-p?n*EpvexotvAY@DKV zHEP*^UU;?V;<18dQ!FhGH#OXzHq~glke8_Gj-Vxip7RwoQ-kL8i0-}Q{_Nh`dz+65 z&)xA@HB0zYYRpv4?Z(?fxczuvBN#Qf-AqW#&uP&Bu-UGaqcr$UL*cXT{oG=J$jyy2y*_7EXHT zVN+#L5pd`E)H%ifs-~>z3SrCjTcCCA_o?{#4qbN|RVPf6|2%2yLhI@!s+yKI-z}ta zzWlq>UViU$LU6`e)sJ2=Wph?}@o&2`W!gQh1Vv@-TemvAPFg4w`IT%h?{dHMS?OX{ z>91JNpQrl+TMnIyiYb%k%-H2sAo}8j!nZ&f8R2si`+Ro2Ke_E=eT&MP&PLrN-ruwC z>3?Wlw<_B3wfV8%I%vDyvW|;kKu6*g@pKS#dm)Z8_oo`JKW>V2g z`Mq1 z-*RQY@dv-}a$1Kr&dGZ`!7ko6byvd5SI(M?47FU>-F0vejm%vmS>z?QKe&ZQNZ>ic z=dE!kkL`*2D3^4jOKF{E-u_?@u3*mSH68CYIlaW(0xZr6A3R}kZYN9rmusD7!4n>+ z7EJeT>zr!z`pbvke!9z?`ne7U`F&X+^WdF2yOry**3;gd&b)8?UOltx=oGy8l%-tq zRC%uQjemg$RkD1x#je_)dguMJ5O>9Z%tM`=U*D#uegD4FPri67OX1{}IsASmH`au| znD)3lSFN3K=cntMOstX9y(V2LS!sE~LS>}~bH434OIGKVitpqsYZpr8>h8322$|8d ztkci=RpL+1j9r`(oOc{7Y#!U){ATq%*Kzsn?{6)`O(SPj2PKK$pBDIBm8;C!o8yq> z0}b`(pO0JJ-;;3Vb=gy^4=a5aE7cqiyOWh`*>HGcmr%XH1I7kMl>$eG#&7D1S^0%+5#{%4ILFU^g~8^*d*3}7Wee9|)}0ll z6=K!1Y}(Y2fS@m7kxoHwB4)of6!uKq&{TM87q_?)$LYFdyTi8Xdav6Z{5j?7Qj1%G zvK*-fmu`hjS;!zCppbWm!Q;=4Q=W#8<&xg+)V}k2y_)yA)~QdUCoI)2RNrUz{M(hQ z5qUG~BMtSWt0uZP@^zXm)Gaw48^zgi+rw_FnfZGyy@@wu<|H>r@GNuj7F+B+*|6i| z&7St;<7qRW*}QtPLSak1%tKB|>HUT>44x+(1)R%1@5na2T6tCSyzh#IOBU*Xm@GSK z(o~TpHOGX1$zPAJDs`P7C7gUD_hs&OUhabJ_p~c-*c=sXsB}E}Am7903Gc79R@0vR z3TRc!4NiV>I8A-h?bRx*TVI856Pxb|I{Hp4@MTkyhET`vz#=_#C&KOd`0l^kDZSXbiJA3W(#apaPcFlM5r!V)j4m-NSeUW*o zA>Z8Z#Y>NF3)DWX`1Yl0?$*is^WJ-eJz!LyyIktp4RKw+xiW6;{(84Feq5h7rR}mt zd)(h1HmLZ(f76f;wH>z?gQLXX&< zsx0AoYH^&)=C#vuu?N$$eEMU5pVV>bv~cRAYHi#-UleT9ckF4YGUH^_#&^ zW6MdeNn7Z5{=N`7oVSTRp_G9(l`@8d{Z?uV?ls%o)@TNRr zMGXJS#gf}o7N0I$wCwWJl?+0hcNP^bJn+Ww)OruiDa)+ZCv94uru*yhB*m-B))L2g z_x$Q`;PToVp&j^UUWglq%z{9Tl^MH^Uip>zKKg3VmHnp9)$6uxx^(;CsT~R{3JSN& zq5Q3oe0It!gX7TQ3}S z5)M+*ThOLtS7CU=yEBN*^ScDQ?UnT_F8{h2T6gv3-!NO&B#WKXG*@NvEUhc#^y+fj zJB9K7mf{9JOR1^a{7hdO@!g0ty$&n+fDJZ0@ zNv51vY_8JWzcLoyS<5ddj@;&B4_Z}pXQkPf$~BM*cR1YDZ?pq+JV_?lbW z{wgia+jGQYx`tNTiW&C>6i=ld3fi*b!_-Mk2Ljl6n;89!xi7vhoiX`p(Ar(AW?#D- zd;QhKry6UEQY^Oo?ANW7o-+04Om%kd$aBRr?LM#D$~R@1)_R}i!SSoN+;Mx9;NJB! zAbjT2$CDmOM%?0fTD`etLV?GY*&BZK+SQ(%Rl75$Bi(tXG;XcOx>B*56WQh+-M1s}O7v3EI_aQOGmd?3n5tgn)NaWdp`tQ* z{yO;sld1|Yd8JOwyO_E4__C9e!|E)~w5S<-W^z7xs%!m`F@-@W?EFr@(nKr&=%tr! z#J)z!^r+1i>ks6t zaO+xcNt=}$3W64{wtcYAwQBL@R^L_Ig>-o)%1xJ@;P!OecAM{oTUeHQ2QU=XvdAQ) z&dsb~ZO;6vaCO#>MW?q#ujyKoRnp~A6lCyej$o*wxAiPZh7~<4$|a?@IP&dhpC^;_ zrSDXC)Q*L^=DCr3UkQ0l*;UNNoXyFlp0&YT=Yh-oj5R73D{y>h}EX{s0W9qg&zeb&t1LW@=8^g{D@zp^mvkVdva(R?~OZA9nn6M z3fTPD9{=&=4CP<_=3ldFjx{J%Y7N=>_>ZrV)0EDAQ8(lTgte@ig136+TL&$D zB3JgR=ZEk9c`xVgzxG;dwSuwLTJOZRTfq&f*OqAMv@F#6mvm>U#)I^1myg@S%-_6v z`6p{`+227o1m7;O>$6R z`5uRwwqDHJcEfPj4O)3yGH$##Y{=7JhXJJ%#JG&f~}| zW!s+?@%4wvDP5_c^+&GW>kZ=3OyoRtC-=tNB~w{dmY4BMs4!TZ{A%`UNqEMzrE~oj zZZpT1c>zPdK&@4G*{uBfW1?q;eARSM31 z_vuFAww>M%O>6SG6sq&=j=Y!}*RIO%vOvdU>7~?M{+$d)pPydYvFG_tcNT`?lgc)X z>()h0VpNVk@bQy>%xa&=5RENWJ{AFQH91O4C68!k^XyvMwsF#eNg@jZI6Utxs=Ssr zH)iVXdA*f)r@JgrJ=qmk{V2v_Qm3lUPfwYtJ2?6CWV>q~_n5DnWoqPGH90>hE9BQ! zL(h<#jZJIjELoj&Dad}#Qmt<`j}>0tyd?GgUg^v;*K(&`i&%Imq)}#yTjH0^jXRw+ zxEaiPZ~HxND4thx<)p37rcxoSA zoL6q!U#-74N!534*psN!Wp{I~#LjXwisVu=$YoiuhOOK4!J5@q_Dnptc>7wZweHJb zwCl}|TxF|!^jz+Zv;4Xze3s_6M@s~?g~(~Ex3nk}1r@7iJ4~9gKxk9mJ=Nb0KMr{& zSHw)aJ27%y;EHQep#o>RLX|cef4Je(H1{-fW8-#ZhVOn4dvBL4yi}dq_Kx-Z6p7`h zKFw>n^U{UwM$LkEQB&`_YH(>XJek07S$)~Uo$oH*oy>dn@RIYHLARyv@NQ^rShQ%$ zB)3Dx$KNjJJy~=``^vM-$rF8k?_+iRKHKo| zWr}>Zk~fO7PEY2)aC_Z0n`?J-EAB1a>9YKO{$-DAt3^7(T;o!+Hk>sJ<%{+YPWZ`D zav~`F*|w%zJ9Gu-^vJwp-n1h&_H;~t^zO&I{%9>Z^(2%%?M%jWp}7lWJN+31Jf3ej z$6;|fM=$En3ago&pYwU?C8z04g)h16r~GHo{C-esVjfpZ#-orWe}DW9 zYuQ!*XW7G2!HGLJPdmuM#9Zyh=2oGQ9*0I=f(3qe+hWl zpE6o{X?wQQx+ABROxYG1xf(u?PYdc2WX+P$llicC%2cM}Nq#~8wHj9=r&J28x}a#R z*fp8&@J!Y zQ>^Lglh(YHRgevuTmIyJ{Y~Df0vo1n{dfL&i@t%Ht$;(%o2*{7zUB8zJ9DNS&-}ir z_rT&S6AF6w%x!fLex>dgc_pj1-FNGP5Y2U0W=uG+ruHdkG3=e9loW%C*{~Y39j1r-COmE_R#Bh7^jRMQZe!r$p z4_y%^wRP5N=M^E(_sp8~AUHZp)N;zSgQ^E#GFEc1^eAWfTQK`%ZvV1tvUrSZP^MAJ z9sSCs-)7slY-!?(c96KcyQhJ#LgGng-QSiKSG{zibsN1_Us?I__>n^%sqQ5K)1$%+ zEaS@4=ZSv3&X^HmWHsZg*S&Rmw_ltMD-E;t682oVRdVZ8NnMrJ-p(g2%m2>#Zt>*h z*GpTXzt355ZLiy1kClHvyxF;x{TkCn*-4yk1`8(`h3?R(a%X1Oy=A*HvTng{r(E3? z<|>tqSz4KzlU1XgY&I(^Ut&7cZ=u5T{Y2W?WqWh4Wf`h7O@Fjjdcx^H3#^~^?w(K( zGDpBcomEwRLdne3aFvYedlnzHF2%38s{88d`h35ZE~7m4fT#)m`scl-tX+8AoTc9} zs<@A9YEOF9gjL_}7KTTcGYhZ1(b;k7p~2y&U)NsI_?fAf6L3J~N#TUPpUU1FHO-Ek z5-qa#-KScx;CQFfvfuAD)E^n_z3sJOLFKVKlPAuvHC}P?#peQ({Qvz+zB zKHUo7?rqg5aPv@SVd5`r3h|!tCNn7I{Lb}NRq}PQUap4MQ%}|&S{|dx;pq_hvtWU} z^XF?{jee|&+}gGH%JS#}&&A6Og`B27X`ffHQiGxIX%@RpV%GT!lfza7r}8)TJzX)w zK-Rm6*>U<4HRmoZecLUX*S_U?uq!GT$exQR{~Nn<^8K`XNeiX8SEc4#YTkXuzc%rF80U6kB%LSY_Lhh3&VrorG>( zJb1T>&-(52iM=_YFN!k0w>r7Z$hn+)H8O9dm`-WyPC>oJnk)_W0uNTKW>{VKhWEy` zy1AyRw`bk*4}27|S|IK6)EH+CyX>Vio?bC;;0u@_@F;}e?uT`dY1_i`bxZ57YF`&M zbMVwXC!kY`h3ayOSLE5KTSS%#oH_Q_T@IMFX!8TRL7`x zF7<0!>!mF{si$BK%X-ZdfA%ocQ>SZ*Qc&45fc_|TBfC^`b6=FRZ!5{m6|Nc zTrBDnx6HdcyX3~Cm14zw$75QjUHrINl5awLz~r5dp6asO3#`8}JmEFf{lu<+tFBoq3820O72g2p0(Y2Q^v)c%|hKlSw^WFrYwBosTtr^_W06G#+b*F%u^;9e_vHH zd)ECeS`+l6W{C!`*|9ujZQjDKHWO|ZE{OHevgtqN&!u&OWv=l$NwyHqQm^JSM_29F z6u#0Xl<$J?Gy z-YU;ye6I4L__pfJ%s8cg`TgD zE_ys^=E@+YJ3YaZKI`S>`pcfOaB8s7^sxKSaCS~gdeDQItmpn(#w$*xxNckbS*iGw zK+uz|r>jqSI5`zeu&|lH!F7CFZHQK=b>7cyqMROOeY3h&=>$iWsPh|4`)=JlVRAbI zm-3uB=~-=4W_Iw;FF2h2k42@uT|F$TV8w=ctqu!~S&Py{ucd1)eCq8LQ|N0}u#W9W z1Do)K=7YE9x_?vsD%M;Sn;V+ZG3{;^m&A{<{|uahf1U*xPM-SD$|^S|W1V>wd)Ry9>Qkbwg)_t}@-IEUI!eSY(xx*R`E_ zYxkeI!LYpdgvK7;DVy=H4( zU3pdeS8jQp#hLt;;7>Cvb6Tgqub3B9af{1V;YsrCIqYB8*GtI8%zGcKv^(4-<0yCH zo*nmRl($UWn84uSs3LcG&YY%Gn_8dNAAiu{SMrQg?b+Kq=ReC8Oucrxuk>=zqM#>1 zvlnsdb1k~rv36~xCbu&S^VD)Z0nd{%6C6FSo!wfde`3{t27$GqEowSlE@ewj-0bh@ zTgJe}tejb_qQcygti0pS4*9YtuWB8i$T#KA*r>SWHn-DkXII7}4Z>3%uvhclI4*H) z?zX#&&emPuyX4MiQQxN9uJ7CJ8&0fX(Q&U#E(qY&$Peeb`^sy-QQzF@eri5S?h&#- zj|&7&H@NrrKSS*-)3t7LGt<6mo!q@nY^A?v;t~TD3y~YvGYdButZ7M5bk9&}uz2#Y zF=~^)pGM&Al?uT!Q@vt-xlDLI@5lw&Xw6Rr6BbSv2%5CPddb9A=B0U4O4-_DT8pJ0 zNPhPX^)=@!`mUMN+v)5Tw4H}#)3iy9UTy3NZly+l7YS>;yAdloIg?+_{Lbga$DO-A zi%9n*wwNugH=6W<^VcN5*_tY%rVCF@+r#^#U37KUy=|+w`a%`Gdc}BBR_2-ioU6BD z>O4z@hYE!|9yIS#edXU_{hwiJ`SGx|KTETE!}k15apViDRlmFb_yK%`uvE>K0`%QG~==4rmDE3!( z$J>t$DW?vvtH0&#nQH&7Z|%zmS==9rQoUXpZ{=FET+L@is9bcP4uipzg$yix3}5~; z^uJtQ-f{b8tX3#l;`~Hb~8LzofXQfa_ZE|l1qP= zu23nTboe=EP*afSEsgf3AJ5m;S*+(<;8priZpPQ3^`hK|&dC=XPn;@u!&zUOrFx6$ z<=jB~O?@Y_*!|yougwTQ61r;5<>;V>19`@AiMNkchD_qOux9^OT5bBGZo0OhdFQiW zuWu@s&Eq)tsntS_J`d)dlpKp3_fAB>W(G~M+T25q7e#2(m z-1ATT{Z3h>SAX|?Kjtu%eFayqN7bw|N7f#Gwr9#_m6l0D(Lw!O&$F%>PGw#n`lb8N zcAkS9W2-!6C2g*1Y*gPe`9tm^UiHvo!4v!E#GTvoRZ-U9&PoE*L6(yGE`3wNB3TynPOOW1wClPr~a=KHP1WW6(0cqZ(7oNx1=VV$AW z{2aBriFyvMc1g;1Q%-2OY~87N+~(;*M$L2AoA@06%vWxFny4DZF<02V%Wmss{abT1 zrhbp<4_kg!R8E^Cd{{ikdrt~lo3-jw%qYING+tk~G= zk~zmKGkKPJ2Zlen+wWkh@ciFfA3N*Z9X(%@yuY+_uZs!s*gPd@?MZFv8IEoi2c0== zs-Hh!@#yq|yWHDfiHFL$noX8|w^+_AbC&% zx2)LEyKmWMuD##q>@r-vB6@Prj(}A~T>nHZxOG)I1O1NdeAZAs!SP+G^jD@AJF4cY zl?H7TT5{I%+L02E(yuJL0&I03TPmnJvu`u}a%H{C@{23BaFrem2=((-d(^48Q@iK> ztk;*KH4l|Nzuc^l-+%;e5@yOx5@QP=b5q3`5|X{8RMZ_ zG7mlo@t+A?E)jDw<7=f>P@29X+fklH(-nKy-du4>`@f(c%3%Y*K-H{ERKe7$IA=)7IU_X{{QvS#Xj-IOJlb;oJa zRAu(dEgFw+f4w|=d0motg{9((H{MA+$1Y20`5n6*eyHWG#i`Dq>2rSn+jDfwPn~@Po`x$Kwj`O+bw>F$%ibMsDj^m)uQ?e1BA;A>s@n>{MmX2#6? zBGF?mqIo-Sw&IlilG;IclZ=?6xRo{T$b`8SEE1kjz~R2;YL*CBx9RS>m}QU7cP$HR z*c9y$c&br8xM%*Xy5;s7;h||US=psoJ&__Wu6>zN&$Z-dhDM%dp*Blhx^u7M0Y9TH zP33ZYtzWOK+;U2IO0?&Tb%9UMWQEM+=-=eLI>715#czt-_k`zJp0m7^ns)NC%4X?G z>%S9KCNAt3@eo$NtQHhMQB7J@BBS=lM3o(FcLN<1y`F0w2$$V|+&gI|S9f9XMUNG; zS``fwcKXIT%?p1fF4U?!J@`=QhFx2x@~FCQ?n#%ru;q#4@9*c=b!}NT|IU+@8*l6H z-LYheLUZFQ>%vdBDr~o|={h*?{+%<{iaRDQvHHU%7bcVFn#jn`%p%nLQ?}7|?~FMs zKV9q05DVOW>x}mg^ZwdJydf_yU03mDXj-Pf+ECAIa~*Hr+`{eMTdrkJoHR#2%_*7iwg!lP;#U)DwYPR%8Z8ETUZWXd5q^NlE0iS< zYN`~Tc)n4pwB+^j!gafJ>q<`tPWE4NIB24(jv{xoUz2m@ljc@Ub(`u}A+sbmr#%r< z4uAS1!)c1MAjj67K^J!F*H}Hf9LQkN^!j%o%Q|O?!YxyoLU%?eFuyEKm$>6*b;OD# ztJm}9)ai1)A9{Zlt-R3vcCT&(>x7ViHMzH6-Kvdbko$FN*U^K;Czd$&y$%hJh`;;g zMee4yNsBm+Ka~ucA`txb?zxiLfm>E_EVI-sEcD#|v?E`<@3_poC9SJ<=hZ4YOmZ{Y z@_0hQInS;z2NU_~pYBXk=j_-z?!wV#tQ1CPy2I2^u_ySKAU&yZPqihdHgEiR=@>ImJjy62H7h^ zJdCDIS9PAKcr0jdcXV2?mgni3y8IxgeT^zFZx_aY_uiuU;kCiycRMu#4puE#s(W5> z(rbk^9=w4|=y( zpI;m}M`P(tkA4lGiBHwMA{`v=u)RI$ame9N5rfLRJKlQN)}P(;qU2SqT-Telj5l8M zejmNmVl#Q#grKPp1a9&v7uB9*pLc%U{D@0ywrBfYQDJ}PxoLi(j*``+Wfzvu;s~of zG-=T~Ylc$pqlL4UW=RxT_iZ%t+S75-o>#M{X=&SWW!|;!^NN48e7~~uvzF#ENlxcU z+}o1{*fUkk6AX^rJjkh)6d`oD?Dn3w5^G&fwTCRZI^m64e7_}!cix1TrO_LLf<#ZT zTYj@iczLk;?$u0l5vx_#UYD*Yb^7$`MBvvQn_n=px=Y+zJo%jC&z{sJ7oOf0RS8&K zQl2?E{aD*k+oGGFygDYFZfTvPVzy-Y=Q8zt1?DB*SCn|K2Q=H}XlNc2y8U+j87C1r zu0T)8lMD@oZ%VH0n_8Ua9aJ<$_PeCh+GqFpWzU7a$#MQ8|B%xtd+Q1FkXLu2mOKp0 zRa~ZGw051v<7QTSy>iCm8{glLT)y$c)U*Zm+frH;S8htT*tB%HTw0`sb!AXfpF68f zg7BQ{B@*(oO0r^JS$$3=9x+RvF1yDWoWZ+rX~R>0uvAKp%+g&1E zm)dRF6kVLvBo^TKX9w3Y59^ILG9wGKCM$Vwj?S8NDq^+OhY61+OfP?8!B~1|N&}aB zjc7{WlVn}J*{nzJWp^A+S|HJP`=i+OTOQubyze3vgj<*AFDXASb?@b0t@h$5)9QI& zS6cn~sV&hp(|7w!F3Ee*nyS7H)=ZYit>)@=oSU^pp-XedspZE6qu>=x(>`#3u@NkNXzxUFeaM%U+O~s<2v}d4d7k zQ{m;oS>>je12;?mXP7)Q_2{-MKQp}FG&bxD2@-ES;PK?~wndjO`^;-;^~#*}=7H(q zZ?``vy1e_=dv40A?9F+SS8H#t*p}#%KJBL09KJnmo=@uHgAV*m==*s&NVzDx=k!{S zhQ|dfCPpnkT^Ny@d24x$^&}64hhEIvpI&;J^>3=nZtYiF6t{aXiz%Eib=wZdDJywb zpHf}Yz;^j5!=gF82Ww9#7-xy5+}Tp~H1Na;mzl+n%}(L8pL|#)V#F;BKIHVZ;-gKCiK~v)M?3jNy>M&8ogPe zS<|wTTT788U6S+5znND~tqz+V_HygPKUSR=d({^DahuBP7w}G6G;#Z-MSOmYCnXgM z3gs`xoBsYZBRNod+2Lj8AJ2(RdE8Na+UwF(R-HLaOLiI99{ibocB<{lsk0}RE9bAA zXecBq`&=fw+9p|(MMmTk|H(+%&&!vbWY-d0+PdvO!xCSf3Adfz2dLn+a_PnU26L)ddn;0Dcgl&ykyIFP2Q^Q zsj@P?Rb%-EPI+6EYdMvMufnd(oP2x9h1LB#m6#{X+&Pg^7qqs~+p9KH`I4u^m zWB!RIg;=$STwLmxK@E{|{~7kp3;AXGY)0Rfotc(hc~$G4lGxfNcP;Cqy1B|4s6%@tLJ*&b#{QaXq3w_uVoI!8Hd-jK2>SFt9|gqcdP9E zjz@Oco_oD+r_y58AAOT1Zgti4+C1mEh4R;PCCgK;YKKi0H?nH=OMEq@t2Gf-c_WfwfxTss@^mNOeUjJDIStggOg7Gy`lg6cUZW}c`{ZuG)N26)3a`hUK3bFk@8eeW?v|ROaetS*bN{D-% zWKckKicA?V%ldzt&c9h1yPf;0#ij*8S#S3HF5WUT&+Ep9Nv{Heikh5)PyMu+*z=f$ zW%ev>QER5vK`V~so?7ZxYRAm&)Wt2Wvha~m4_6>AYok^unBC zTU{rMPLC=)`ZGJ1D=uh>s^=Z9!h_F!gU^Wyi)u38R8-%3AoxdGK1a8A#LU-oCfK&7 zzJImk@7jlgOP|Nj`n%L{yL^-|>$fBBKE3BHwpz91c|6bH)pU@vR&PFeZR_%k!v=cZ znXP*|R+ri9AHTJvvRCo&6s97kX@%z%m>cKt{yz7hv1*m<`t0pO%CBaenJzDQ;7r(+ zMbo%v+zE<3^uhL~U+tEySsT^n*4-V@n4e{sb-LxR%(L0iVSl~OWPM26xbNADv#hV27jkE8X;Egh zILPqL^4$AC6`9w(CqugA}uQ(2EL>V!StaOit#u!^qlihh4i zmQ8c_J?GQ-P++olhe1~PnvD)gJRDbU=xo}wGEuX%;&a#n@dks~n_Gl`a(+MHJ>T*c zuTkojhgsRHRvmW^6${vKLt#2|#~n8F1#%*c2d!qTH1c`Mx_S*`{C~G z-u`%>Y%SMxkCzo`pZBl$tfy5Y>AU2B_r7RRuE`IN8eM*6$taQg-G6E1r?Lr78ww7+ z`kVLU_1Du^(*;>9?N%(8c9`%m$K>XXQ%(mw1H3bxnA(gtXe3)){`F%0joymL^%vf8 zX3ws>l67&lz~bN=o(9TCPT5@lwo=nGI%`&cp!VUFafcY2H zoxI1ReLcBudEL6h7-TN0UdHC-&%A9>|CV1LMC|z|yvRAlYhMzcyy;0{?|JtW&8PCe zRu=N4^cT&aw`RZh++}+&cW2zr(bLs6*(NABb$!+BTn$c6tpj)5tbc#M%JSPQ?c^)- zc&qHov)GO=U#2B=f?L9;t7XcTDcbY+By!y?4g}b4eG%7f@Z`$JRKwXRr__@Abs8qr zZFUx2oyod=`<&=})@hZS_83G6+{rQf@+$vc-mij1scVDS-mmcP^#41-cB|Rzu<5=@ zy*`~x^KM0Tv$hx<5}Lpy(9*Jm!9s$e?Ao=B6?>~T@;KEdZJn`I`?XNrjfuLF0>YXkBa6gmIaYYT7k!Yy83Dth;P-5r->^^^17k@DM7qD_^D<_aEU-g(Ra z>4~*Em+r5>bxkyS`5KGAS(}|&euav12F+S=q_B`{>hWhmkJ>rI$~ChrpEED4)6V&N zKTc*>t4H7cxr!z3OWkvl^{nOjw@sX96n4q|{o8fPKdSb;lTKbPuF_rAaW&2)()U=M zo70@-njgHqJWgodTXvT*LRnK;;j!I*r_PA^i{ET6T{{1tXY+&C_I!nmeqF2UCj4~0 z^QymdR_No)nb)?4&HS!=TP?>!lq=O|LB}cUxgl*H;VU(wEw~g!bbTjTO0SNOS{|@w z)3n?@XLqM~>3YV5E($gldw57Xlapnt&>EiN$;YkYK77CY%Jg>P{k>kVg>KH+YWo>9Tl}0`@l5fUgdg9|DXVn0Y4Lr(!FcPz?ITBI;^hv1*f2TLL}lfTEbk&F z)xKq4e!Y0PzU|)ZE9*SFm)y(r>56rn^eMh@MZVRaX_AsBxKgd7t*u3;JoV%}nzwyv zeECtknP~y6UJHHO0}Ho5Io6SC$-Di&cI8)9YscHqM60GuJRs@uRzIw2#q4j}-M0NY z9a>njx?#tlz&&^(>%BQM3U24`2<)rxb zCK>%FbDyRxDV`s8$RLQrDO>%_foG3OPIE?0STrHO?83HpQs=jq_%B#HHCoen>0PcJ zwsZG%@6mI8x%F_`xF#Ju?}g;RC(i)6S0z5Kq4iZVCvwvcV(R$ufr zYEAXulUF6&>V03lJ(tFl-gHr?lPmhPw&pD-Dd!mnS-m2jOP)JwwXnwd<<+v^i%u^- zusp`7Cp1`f_okwoS{~kwTa_&WS>qimOFXuK#j@!?4QskeXGcx{rYg4Vn<~LoTvxOe7II_%p zF6We`d8ZHey?I@|L zkiy5t_}J!&Mg66zW}5vfVG5_F&CK#%(J<$z=T6m`sxvIh)5Y5-w_n+_^RrrvYM1+_ zr=2#Zjrop0=Z%|tt4!8>b?GV9r!lkDrUy2B><{fZC0WV8(5sZo$s_L4lBJ%UU-MLz z*{y;%u6-R+`%`(vXK~e2KCO&wDXquric?)wnG>yRtwTKQ{>T-t<&Hlrdpf`JJL_$| zob0VrwPLu0FC0rho}*v+x%{EFck0olYxlIw51O`M!n2)LW#6M(?P4;ntl~OiuX$YL zb!YI7V`7^u)Flrbm)%sm?&7f-rD7H zl2ug)gjF+b)AVP4*}Nn1)RFcrrfYt0I<(Yr*K+S>Ca;?{N0+%w5L;ra9(d>woTbY*H@+uyi zBp+4Ns_@i$(j=x0?nxZB9m?MGU;6b53(XAjx^(nL#%hrUZi^(DUh9aXW$MSbOv#$C z#4F^8uVZlEH^%Nf?oU^HOf$C2R$NHF^)C9Vl}^`@`}^wGn>@+y?OMdl%@H8!7xd6; z=efFBVLR7qPT6rn-+Adyt1BIko_e*KXji3bpH0=`I=)u=4$G2>uNXc}Dw*uOCT1&l z-rTBy_!TE6=Xr-{Ma@a{S2c9*4hj-+&+zf}fdj{8Ue4O|zAM)+_RzGcp)1e1 zl>NEyz?!A`WFEt*&gYE>zg_)mrt97l(6zwcTG#dPT@@zoZD-22{_M{Fu*Na8F6b`|YV_=e{#5w@Mr>68myw+wHuSswsJq%o!~Fw`IR<`RlaP zV^^ly?H|9s$~7u%{-7#f>Zua4Z_V9+5ro~g!C0OQ}ynfNU;daTdDW?|(F7s|Q%scBeb&J`Wx0((% zJuHlKnChIjt@T?_4=MWtU{nZILK@+C!8$F;9cb*m<8cpUN*oaAxxxYVte-yQVc zExW`$Ei}w1sw}wY1mDRUQC=R5Sr#gj%7qWAH}{n+x7zL8TCJw?OjYSl7@Glm@2bss=7wpopp(m z{gy<3TkrqsY?z3`y@D)WXMsJ}ZBDFP_~qw0RYzCLFKgLV{v{R9E4jMj>MFOW%!zSI z(?2f!E+2GiT3EnT`M`Iz%#-SxUs`?rym-ycsjI{TviN*fIIKItv4(ZqRMn|s7X}kQlU))BBWH(ZrMSOZ00?o=LnHD;7#!ttqGwZ6;dx=S9e@zsD7ML$j`H2d@l0 zdHGV%vgB>sq?{jT-nbdO$?wmTRF&QZFXv_k|7Td1u07rLV?fb-$&Q7coy)gexY>I$ zgXIZd=$wi3?0xl1{;iE(b9>5Zv!~0#G)<)27JRvpd#dYAh{Q=N0`nc38ZUn={ywK6bhYD!OAv}k?a;fNmYzRT`? zR}v)_9rT)3rF67=g{tOzbA@?+PfT=+rmfrLI_uB(0x+a$UC?>n&Hb7g;7b^G5_TE8q5>)_K31+RyK|Dm(u& z^=jUiq-%S7xni_r)z$}0{+``C-^fOi*O_C|md8~=OI_n0E%M-U+HtD$?&E(O+fT&C zOcL2xU@x<1x!CIYzK%w@R>r!D2c8Q~{+_aLVfdWYF@ZH3&b01`&YTdL%gE}*C2`0x zXg0^eb3z*&PMq75_V%LZ_C;>Xyh2Zgtz3IEC}sbT!Wo}8-HOU)&bq>I>g1oD64ocZ zn=Zc2vF2M_c50$nNL8<2@Vm=*ym$Mg*lb$6MDP{s)|SR!8LJP4PW0cH&-GS!rD@kw zubh^kCp&7kEm*is?D(7sbKV#1+PY+EGUo|})dhKaiWfsJU-mcUHB8k?s9kW~BTZHD z;0J!bpmQ^=ro|knU9)^{Cu{pD)4bBC4~dqRMxt8J=KQ*}Y}y(%spj3$oa{X-RJF9e zvC9-MiI$r0yFa@iYSqS&iAu>usXlg90k=*~2)Z?SGnb#(ma5`D+lFJ)w7Zw`r>n5*OGQgyLddXZn$?rWU6+SS6?MVfAQ2+A=S}~zx&#SWbOYb%$>=*R@Y*} zgj*9rx5zMsi1y6?R`~U@Xho}UoUq-ZhNZR~0sQZkZ|Uw=ka~OKsB4+7S(#+GRl}x> zGnguuN1Im{Z#yQs_EpNXe5-r33NwP(U}EqA;B47XUG z%PZMct(@Djn)jilamKaFR~TQjt4!D0HcjP?drkWD>sKxm>{)tA|MMyjWrN}wcf;PO zyt&q@<;%7I^1E%f&s?)vD0u3%=<=C;&mOg~YF}HDYHS6eh zK4rtRRgN`B>KU)B+>@-(`|{7v11th{2@O*tU)6+uow~YDgk5VwWY7KCoY7a?ZU^m% z^nWT5UVlC4y~BF7U#(Y|;F-tg?bhxLUoBn6IPbylmtQ|xeYhv?XK3+d z^6i_Oyyk2R%r@Sskh}TV`Zo0|*B)+C3(>r`;K}CLa|d_tGmM(O;#kAg3wIy;>V`ab zs9fQwU7nk#D!Z!tzR+zRWsN?=!=6E#JdVqJ|CQC<{#P&1f3eTYPhxE>LI;`_fQHS?regPSr%0 zrO})3&-?jvS&7r%CB_AJMEe%l3za&$epL*5z%HnI_J|^@h2N2u$9W8#j1~;MwJ&nn zocCs~xqR)-_Sk;46dUD_GJ+yaQ{Udd&s#7*L1<3l@~!+!x2+BPwAxT0aM7igD}Ho- z?K;d=xZ|Vu%3KvABau&2_NXo>SUiE_z_F_pT`yM#c6VBSe!G!9dt$Mp}#kIAD<-B?e{;u~bywP)pcctL9M?%YeN^F9ApJ(-1Dliou+k7kd z-D#F^-7N3SAM7d?tsa%FxrJ>ZUh+?+FHM@Gt!R1h3E!=WnXyhw?iQ$(91G#tdgH2F z(!M7zxufe@UPoV$%iS`kvYRVFVKt*N7q{2ORXN3ShYN0noL;;sjdf*Y38%u!!Jb(_8@D?_S0@xsieYrNd6-h2 z9d_*n%e$G=;$JU4^p@>hWI$rb(oX$QS%xV_mxMwdm8)u5cc(NqIH*kIabITFC8{T@ zx>I}Qt|dFxuCn}dxM=$1R~9ONKCd)dRUoy+^GGI##uTG8_En6h^Zaz4rzcfLURmU; zb3S@b(No^lY${nM8^x^IpC!e-daCBy|3}`bTXlQN(Y0p3->u?EJ>nUx$0RmkX+ERf zgf-uoZ};j1>b=t0wf5EbfL^JXpE_-qPG2|`^fTOg;+9__bC2{qNmdR_Wt$(ex-=r{ z>hsicStks(Sb(wpmPhnW>}p17MQDBeu>L6Xp^vSp~16_ z1uio93Jts=Na*rFduF&RU?md_4sxXg1lJj!k zqN&bX6oQhk2>qV)Z1JgOnhG;HQdrllOz2&p>C50(Je8++~DXV;zoCpwl zTX00=4cnO!NW4RRfWM?=8>)!(9ZNpF{pOaUE*Yn)2^>LB z1s+H*FL--7KduEm?Bqq!iW6dM>UAH$JCt?+=7oC*R4GJe3n^ z@;YzLwmmO-uS}M564}JPG-s`6p_klCo+-_Jr{9?->+UK&Y9!0G`ua|ft!ti{IXM>v zZmad>yk{q8Qo?VrGTK8=JHyNG%>+~SuR%AKMA^pl=0{z6ow+r(>uk`xuF1KJoUQMa zGHL~hEZDL{pl6R=PBr;&h zovo>xeU_X`u6Ei-K0I-!wgL!g|f7hhdCgC$tKleCYD0 zQH42KDOFB9G@!>dL1QC}n5xQzISXQswKngud~H(lI%enRpqbs~#ZxAPI7$05bLZce zjoF?QydWU+;@d4ocU5PsUBo5%r*Xo>&H0z}OwUz&Zuz?Zt<9>C8Ofz)*H+m*KCs$C z8p}{8lgT?VNdShjCT)<8^Bt zm;0M|<%gtPo-(sDXXg{$4^p4GoQ?&hRNg!(!F7JSRh5*EyW~Tga>m1l&(2rn@~ByV z(bsFru`_F0U5b^IeKlQP7K<*hH{`DunR?r=-?y9Va>Ef%Uz;ha0=Fe=4?Q>(H08U> z$K&c&sd1+776(5v&#ZUv_+v;6n?UDInKd%_~4&}3-wy!@^kggfjC*%+y-4voTZI3q7mr5;HDZz+M zOLtGZ^t(oBa>tIScIg!^zuHUMwmrPN=kZLl`QGW#*X~|)d?jlq^xk?>NN_;rRddx{ zB57eVnNu_^*}P|W7J5cH1uRjXnt$u@%NXnQ!}|kX_QZ<4U0!%}ht?WhQFaB@pp4g% z&Kc2O)@?#-Ry<&pJX;tzN8f+NOTTq`J-P>5;io+>-?E&nk)zJ5aV# zOUsYHfKm3#$rsBV_0R1nwd#-AuVMW5wOp(1&P}~hhN-7!%~s4vToz`oxm7#w>BQ}M z4>)b7d+k#QQ_Gxqb;8t09SO#zH&4G_Uy`t*Uh|wq=2M$pC7MkUEG>Q4ihfP{d*Scv zqjJrc_wB7LjxbrJ8#Sl1cO|R0LusCctS0-XUz6s0Jm5)YXi&6U9=~bV70 zcb)U{{B+mRyZ3ok@m6PrgeQf|w(h-jZ~BkC1y|Q;@e0k(JKoHDT>YwS)Dw?SMIuYY z=LXHu)bc85SR*9FaLzRSCs*f>?Q2wSx)?d^w3$)%^0s*C9G0#%xe+}t_XasCy-!O# z*&LyXivFms@@%-VIZ9uFRhz=={7UNww|Y6e-3Is)I4`Z>_0=> z?RhgVb&0If5A^8>?W*qMOuWE#WbW~*&^{x6=G(pYR>}^me@uK;WOeaMMR#}3#Zxyn zya)>LaB|vzJ#5aD_dm7gtYG5cHS<}1Ri7s;J}j$i<#oZ3H<-*)aeJyVzSj>4ggrtN&zLSEAHZ+FbkdAT$;Jm^;?=Wnyv-q@L@ z)3Y%-+038X;*e^NI0aU z`cTB^sn;}Bw&^LiJ(iWl{`TH#r5lknQ*o8=MWH#r0~U3>Oxdn{T2aD{DX{f-0%K2d z=&SrF-P`p`7fto{?pk?ew(gbLbyhJaJx?bt?!CRQ?$-;^=MPsepZ+%U*3zTSQA<6; zUdD4<{#Y@oc+%3PTbGCm`GpwxRjT(oZP$0zS^a(0xxmb_KT@(rr&0|jT{SaOUY8Uy zWyhvh+uj9m1u$ElUm0or$#{p*lPddVt5>bIylCmTsVU6&hGA~?Td~t@m0oTa4z2y_ zbNZ#~{KSi=R!ujV<)c-lY~tM=bLmu2kcg32(3+?5DpTc5HB0Red^YbruC+1kUeMa( ztJZ10np~uLC`q<9X2&b0nC!%$O^fEag_OOO@VL<`b^GP<=v?EB;KZe`CjMUKFO)LOH(E{pI|9oZRViRWW>L1)n3_$KXU7&tyU~qaVAo$mQgA-cl|dPpK$)= zYnej5m>RmmFYC2LUw!T8D>qTkaiL|9ad=P#yGqDC=j_bocU2NKIHOKUdT@FKp8Gmg zXV0$6i?99Grp3ydEIYL9^6QeNTXknQcIf`R)LD4ccdfxk*;r zd6;U@!#Jz~u?g7Jjul&hceI?+f-a z#wfP36+90fCq4Xd_VT|O0THXNCY@NFY)DGmlGgVzdqrvIw2?b`MotO01d_A;mg{)g@ zST93U=Vg)4+O1@)vW^CVVI z@QR*vyH)x^7^7yu4Ux%B#uFUw?zFPn$Kta`P{TcLRg{G0yZ75O#AFX|5>T_+t+cA2 zt6-N|+|JeCnZI_Hv`bBP?_+wbXEi(Q!K*1#KRr-XwL8%B`G$|3?z>xG-t&Cx4P17= zt?SRLq<3P>(OwcoR(EyR2u|U*G2&02AXK4}eN=eCUXNG2M@7E2F&9{AIN?{y z-T<%A`Ra{ZbyrISs#{nvt7~q$&brlW*9xN-(|I^9uMD2~DZb;CQLFNeT8;w>JpvBO zEWADs=h%0opIAA&$4|AG!OL+ogX9eZ{@o1U4f%za`}*pf6gn4kp#8nzxmAzWoS62+ zYuT-sU6Utn*ZeTYQs(XL^R^!ksH9Y9&JWq6Y3s9py78*5Qr!izi;w=$%v~_`eV*M> zk!peX&j)Qj?~rp_ca`}dzxRuB=2G*AA+LEitvwr@wdqJlr^RvIx2y;3ytU+gos8dP z=ly4Rt@_gOHBZ>ev(Bq`%t{meaGzgrON*;>N`fj^f>~J~pX2-H6pX49Lty%?*CVq2g8#BmEV2a)P-jMV7mIc={H)y{}70c3g>d}13 zvM`U0d-k3~dv7xECr=V7PgRk;*L~sMtS_gIu0C7m9WH%chK1>^Z_d8NEfaSvWKqdI zsj&K4w7=Y3kFvAd)8npd$J#Hwym)q&DaS$|_ktxGX1vbTv6=d5y`fedQ|C!OeM?q{ z^-=rya)0TTc3$T#+g#w%@=B)HZ-R8@)G42A{w~(*Js`U{%RiNs$!*oDlt+6KwXbJ{ zWj;9<9?5s_)S6|_9QbbEPDn0Po9AklvQ+8m`An-B4S)1+ZLwaI(^2lK$8~qP)%(eO zIR*3EoWvY*H5EiA{<*^xy3^}ar+VPaGt zcQ=LjWrerQuC=w?se5|SO1rH=yJk8EYjb(z=BRFGUbD3AWPnq^qkzqm7Hw6(;=$<^ zsNJy9e|c}zvpoxEw43Qku-)FC_f4Q{+f1*Onasw~8@BFQw5;U!vTv{6w5Ok5KJBt% z(;-y@rs8vDlWaHt`_C|MN%!i-dGWRy+x7eUFDweyF7V#)ddn}L0GDsKA{{17yA;IT zoL06ZPw`G_v=EoIonX~@kJ{5!(*qXnb{4YdTd?w#vzFtVP1i1MSX1u7!h9f5Zf(rF zsb7AXd*^8RZe??x>}tDJ{OOLlt0sNA683t=$y;1k770(@l4xmh^&0cx9Zl1%d@I#F zSs1)Gb(ZrzsL0-Zd}e_jZ(riq%TvQPUldI6{yO(gh26ySul(KC*RAoI?6Q6KiZxd> zUnQlSTFmd<%kl0GXV}$(kSSFLONE;IjJH~)+OLe0e_6_1_j2nh-b2AB^52UsT>B$W z)9Y5#ohiM|U0Vhs5K904!8u9TX-s5Zu z^{Y-j()T1QHJvl?(!ghtU zbuDjQ3vTdFYTeczQ=T*@j3exb>2`I?Q~nalM&CQ?8W%5`tGd;9r&ej4N%qp6+gX0* zHf`Or;#KCO%+|LX?bY=pCc02GOretr&r_@c`=k+Z))AxyeLBjLN zcanYoZLi2(p~gD1rexP$XQ50HwnbqYB|las9$BcG-!9cRrT1KAzx`h2Ym1gV5aL_j z#owkkCwl6)RbNhVbzi*x%-~4pdXL1Z{~0pOwoZ9cE_uR}VF?ef*R0uxOB5cidpt zW8CSb!O-$AcCj*h%kS%J0`dwSi$pwME_c**ODqa~rn*(tGD_$HL&~oX|C+j4Qx#%^ z{)B#&+wb#=r)!qRny|S^GhKUCeHLjO-iZp>JGc7?(^5@`IV<{4O=(R1Rht+!ZL9t- z%gLNwSNGd`PnfZ_ZT94yADm7^d6lh5RCMm+vfE?ZUYI86sPbXO8IeUxRHpPSH=gTw z^$vHIi_=kqr{O`q(>zj{Y!15$?_YRv*W9{jy^^mlCu*(VFDG-;%OQTEL~EVakofhiqJ0CDyefd<& z-tUjwy)RxZE*BRa-?e1RVSknX3}Ia{XOdq%S+F50K;6=l{eF0=c&M)VR^AnPhi3fl zSF`(8wnkU$uW^rzcHiy#*d)U>d8?u>9{POHI2j^~5xjXX>hZ)21hiAlJ ztg$t!a#}R6+V1d%T+yZ{6*10L-2%xfFr}}%>N8&5kWqaCe@oUm-q6|yJ)sS zuh!(G!nOqW85z(1n)yyzC91W-#axf=SZrX3*%= znn6Aq9|LZyYW+E!z-VD<`FO60Qbpa%BT@%e9^Skn$J3Kl!==Vxl3|m?e+D;x*+a$i zs$YqkFWxytC}57=lG70?&%|(cM_PpX6;sGE`_&2AyWlH8p3kct*Dm>ei8O`u18&H;Tf~}&4C4b z78Qs${&YB@8ryKvLh9wZEekGcUOCCX-?x!V`P0VdyN;A>TV6OPPa);8`u_7#G4ZWS zAEmM_N>pLsG*{hT+u5Tp_#su#+(IvFMt=UpTMF_r+vn_NKGb@uzsq4&*y7`h*`11H z^;f7lFnoTMV&7jlSFLu=v~IEMt-oBJNk_@=TotTkR6hAtK=H#%4z}&nW%qyne#QOU z`q(_R=F6|cv>Oi_<*b^0@$#wfCM{b|{^g(dLEeb}ba?o(viTq6{nl3Jf9PCr@sVR- zu7%f>%breC*sm;^e?RVf44dqWPm?@0ty->^p6Ro3Vt?{R!KKsWR($eclG$aFaeexc z7bY1O7jd8wrsw&$vUR*&UH9euijbUH%^qc1P3ISAX|JfWmk+i1R@W)@qHfjlTfylY z3oCLahZb&`DYiFC<=C8aA`>3{ll6Ri!mi3wrfACi1k-(A5<9r;v=?iA3-jW5K1ZaX z#=}r-tK<^xP5%PZ-oAPgJ+IMc&7~>fTx)q(7EW>FnqA14sZ!S^6>vrV!J<#GA0M_I znW>&Ik%?(#-%`8#T#sfr+6Udv2>-j*PwM1j6RyJ_rMgVBb+i1hs?<*Svo+lz+`=T| z;;I`lQp>i_EpzYn+f>gOwJD@;%1t3bwP!1i7c;F^&~)V4wq^Acjirt%2~{!0>b$*H zHDRS?+oRT9{-t^`ylH*(7FAQr6~!D&90OESvprR}PT@WBV1-%H#GScwedo%*v=v@- zP1NrCRw>4g&ihJU6PPEO!;Zr<`S9DEFwuxa0YX z>9=0pa7q1F8p*!N^!L6WrI%h7YD_sX<&{fX;=!gv61}ohSQbvZz!cQdc!Pm~`Q_TR zQl@P|U7bPQlZ8N=p?9)KnPgmKk!q;gc+qiWZ~s6v?kBg`)7D%MbjhgHF<(c1y)^vW^wbM&r*HqmnTRwOAr>xP`a@rTEsl~v+AvM_~ zv#Tr9ROrmklU$xR?lDA3+Umdfy8V)cP{dZ{eJhQ-d~SZa`#Hty_T0v-1B{w?)~G6| zq|8Z~6nD!cvuLUJl!ng4NhVC7q`F+8*{xSfp*c$Ql&sye#b=g=KQgqNYrE7~&G_V< zc7f_9`;UFU?q6Idz>&=2c;!C>yRA)gWX$o|YyFxWKD`uL#abAp&^)n0COjuGJIF&_ z;Z=U_mMtv{mn`LQVAS+Dz);4JeXZAR*`j63SUerPUmaY$WHMW?l&O}bsP)QuV(+5s zS4@?@zDUo#_y65oL8{s zRa(dNHF8pK>(*aY4okPT>MwB3)LFKa(UYrk$y9;cD*`m590L`4H0rY@*^hhGSOo4$ z5Alt1bt|n}bIL2(UW4s+@02Mk7H;{tqsh%vg^$gsSntKvNgr0JUg?_Z#g=ek>*Kyi z(DkHilqY1%be#3+do6S;_nW+<^ID4uOV+9+ENMQ-QrMevab1&RAxm&q%J)A4Ut2D& zS{3nP>u;Uie$!r^bY&`hcWa72?*pE9?|N6UOuKXTm{-#zE)RvCCfhI9UzPj5m>ac8 zt8DMRgH`i`v-7?rSR8JiVs+DY+SG*pJOf9T<~SSUQm2iVPT%u)th%myJv(GyuGa3A zVW-yUXnHsVbt<$hdGn-kt8a?ffv{H_nLA#H#_H5-PqMeNk7!IZsjoB>wrq>vD;WH9 zYO3AI%NsuZUUVbl;^GL8scgMcKbEqntV~hWlvJ6+VB#qA{B?8sn){id^Yff|byr88 zDmL;ud1KpS)l%_xxu@De_OA=q^}L>Qk2%UV;bY>Jb<5Z8*Av#9@+U29t7fjHnd2w7 z!X}~9c}t$l9%Gj&NspWV()p*Zub7biw@ePN_U~7Wwa*@LTJ%~q*!EEkC`|VpQUhfa z^w|u@W%e<-{Ez?j-n;fndAsVbt!&AHv!fj4Dl_A}+A2=Pa0J*LVP1Z$*JH`bSW_qU z)88gIwO8mVcQG{a1o3ZL^-0uk`rU80PF>rjo4IrCih0aIGdVfsb@Yt8{xfV}y?=rYf0B)10 zZrWDAI^%HHwmsx%uX{;;p0)2v2m9tZQ|7!4-`$$WFhTmLId7uKtLes~N8CSUs{2~G zzM7f5KUDC|(sPew<{Ip9vR(W^=8@NjnHM_m8f{mLm350+{#EL8_|dRs9*W1472S)H zSsyFQh&CSk*f^o(Rqe&aArS|Dw% z)cm%jP>bA{UAt0^F2vLxpP_UlPnR=_=~7Thhx(!E9igSuu1|K~Gu!0c!l-ORJ+AB% zpXLTlD64!ZA;Id1JdP=aB(@wQdr-F8#1>sZedkF!!ZHGAjUM^j@8A{{kX9r9zE zvPC5|!r|8b+6E1QX!hXmZo786ye@6@-?i3te)}{tkDjeeJNlRKzF9B#Sb2Vd;@?F15FK~a_ zE9+{MbTKYVY2(~Ua&q2Y%6Hgh9PJ%fT8BJ;>$vCc!V;s&PMyjpLr=%#8b!0q<)jHL z58=OH{Y3somOAUh`JRQmvYLD%TlT+cdi8^uYek%=S9nVH-|1#r8gnJr$GqRL#e3&# zuiWjO*0J4^j2ySD3qCz*az8D1Yv--*J^GQ&%m2x}k}vWmguj`?yW>%Y4DGQ0rD*-`|?Amj7Act~qg1Q1DGqnLfS!0sNE^1yq*u z+`A>gfAxNQt(o1SxlLl{bl;$PftrrFPqgMe2z-#D%JSE!sr15k8E@Z}c`G%X7=xxP zZeV!ld6nyT$lFez;HvV?yoa$v^Lpkb$LD_(#_3ug=Gx zU42Qe!Aj*yepHI*c3Iagy1EBCe&_BISjza)?P#lon;%!SWYDS7w-$Y@)|~}&#Fj;J za!%V>ELJkDQ|sH5`jj2g)1;3UsdXBwseCTH^>KOBRO92vV<)>TvsT>K{pFuWRnD|) z0khUj;Bq^}{wzYvtMbd%y_H;rn&y3T{klDtA8YjLIbsno)7fzGh8xZ~+a?H2QB`i3 zz`($FAan7>eG@P2QcMV5>+QJt!-az}oqCMV&Q4fU*>B-qs?qp`K~7}1B#tN9-iIwd6`XuMJ)q~y zWw*!`&*mjhnpAbts(J4jW2>-&M@KTbOsck6{Z$k7>s8!Y@@q=jlOq!@o{G!N-GFN`8Gscd^>4u{Ztdl9jiuc0J;f_AE_l(RkdjRh#RZ^Ufzrqno`Kudq%0?X7ovlJT3} zY*&hkcVF_F@Je~htm;IT!c)`4=N(a*S3LQpjdp`}`^Km}0opb*OZ(|E$x^lp?N4noKFR9ztUk?E zw+#uJ`79{-XS&b#~LSg%yc$2sf&iF^N^ z|8w!Yb+unBkEN}Tm((+8npGmo$3FAJmY&sGfh_%9$MdYqJiec_nElGWhdt)g>}8ij zwywAQ;T54Ec%we*nEmm-UnZFzk4|!(`w^?V|I_|weI@Mo!{?;fI(}?>;GBC|^I(?$ z4E{qwjhdPa{9pGZ|J+w;uV?yp-J&1+KMOT`F4Of03UTc8`I@MHsnDRHi1WCm$3bR= zS*Dkd2I<-LEW7+Q{K)F-=rkovei6)ZqwEy%buvK|2AfLtiWH#Ugs(G zYI=9emhuZPPU~w_W*KV!oAaB;S6=y!-1C=<-KNY_T^d)U;+{bxv- zSNya80<+uhpRPXVzvP;~JO9z~qV|2e!k4yTA5#_c#8#A~v>jm8Z1q2&`QZE9d4-dI z%}MU9wvGCjpj@@~l~6gWnd}b>)#xraK0A9!i8~g@JWnVyNSVkfEIV`G?ef1j{~1JN zh4y}aE+6yidDpXTtkGA5r;DtaQPAd~uJNco|D8?wwZv=oq7EYKu5CBh*7E=AF_WRs z{)fB7b9+0>U$abVt-aj8=Gw#EweEQ2pOEB=?HPOvwSxWzJnU)UIC$hk;r#o3|Bf43 zoqn{mde%RQ?d6lEy!+uX)06Z4e}*ZBQxhhCQtv4+$+&dAH;AczcIMmv4AbhnEL2zD zw<~-aoBq*f$+Y0y=!2#e}({%FQxW=el98VI={Z(Et(#jU5N&Erh$ zd8|IM^T&7Q`EUBy`AUUf3Q^g9@si!be;P*G_YJ@9+xug-V`0|jwdqVB7ECodz}vg? zvGC^;ET8AsFSvf~*WX9!>SDPo9-Mr4T6yQ=fAinYsk`_0OUA`7t(@{#FWD{H-)A{B z?q}nB0Xx;J4LYYo*NCc2*>dva-{ z+mpQiyOhb6>jCCpOZr!>f84CK_p{{mNAgD|arJ+2UA$!;+p!-%`M>_HlvCQ{v7F_m z*u<}*MQtB@zWry2fBVmVU9S{toSZvM@88ez?j84q7?ziIXUb?7e%XHFXZ`wb{~6@0 zU%&sO^2g2i^fuK6YhNF7^r|?&;i&VUFBzAPy2&iM?|$;vs(%)exo>BD{m;OeFPI>d z!)?v*xMAL(fu8ES&y+ zmSgYI7swRidSmU-@zd+W1Tziw!v74*KfhG?xZeH9e};~D{rV5Ai-bag_?LWsWBBnu z!{fznbL`#N{^d{JcIxTxg3`aAB_=;we1tKMw>=}_1B1uUw=#d~&or*@uUP;3w6M7B zX|YS*YgzO2Gb|1TEq?XmO<5HG`~Kv`ZcDr;x9X-yaYhL*+Lr(RP;Bno8DHLa{o7;k zDClc<7E@S@rXs^bFNN|S|B5{R8ZTTgI=8y8+P+cOXerNf4(6W6{~6}LxVU)1p-pLD zIpe(kS;*$Uo$+nI$ln^LdroV#19Vw<67A+pVyj>O`S!~-dKKGVuPIruKk3%a=){XH zj6c#<XC*=O)uSv%Bl*au(fu>( z^S{3T)_!{b<+$VB^LGC1TmD1ts-0)p!>2qwnx4vk>z_^jdp}mnR5L`vDTsfC*Qap% zTP>|V-+Ld{L9?HCe^##hu}@;=Q`!k%e9}76>dbSTe!!kblXN&h|I=U)07O zXs?VluSqr3+w?nNL4NIak!4X@!QIv(YeaQDCDiTPKUrQ}9Ps0~#7x)2+J`e$m&Ghy m+rj_dcFwe-3IA*!hI~4-oOQ*{?zM~EdMjk2&?!cY*g5|P&8oY(4`sBNGcN8~gtw3_5}gOpMITOf0M*qrpx9nJ>tyXei{! zCae_5-nek%MUkY!gCG9iV&GwBWMC3x7G$tzxHVTKOg}iw!piNS-RJ7^ldX9vyI$=$ zc|2u_+$(iX<~tL#dY5cE_+{Vyx4*LPJo)`(*(2AShOo_d<{e->Y47OO-5$M8ynWie zsZDn*jw>3eF0bzT&(NVFyYg>&P~OLNdA0smw07R>pDxNBej|~2ifhi}p5H4Th-%;Y z!^3E@;kZ}O9Ij9Cq7~O336-q5?-l!d|M5GsM6MTkT)F-9V(Q87)m^7PcsM`Z^8Nfn zKZbu(r}hfHYT!24p5%Wi=s&~f*fnoez5HCg9~sPDz@U9fZ2ihRcalt(Uir^Z{AXs! zOHB!hTkHO&9+1hMj1ntkzj1HtTroYb(8nV&`gT->!k@ah8{gO6cKf((_0kx(-p`*k_t%Ag_|LHX zi}Gs6WR0SWfopl!%)a{VxyTmP&I?xrbthD?^oh-{U3KtS?LnExYTj`#vrD~R^<)QD z_Dl;llsXXV|FQFmxJs6_UQg2|<)b++q&0v z8z&pOdZoSC(ILBSVUNiKdl&vY*Vwj4Ufwdz`i=5QwM+e~8g6!)3zH}AP~q~vkuuHf zPq4d(pZEK1libzzD2Hz=nw;j9oOWFHXv<242O$gFy%ShJcD+vOx|LuO+!s9O`n~Ez zUdp+Wn2@!lyGOIp9JxO(dS4sER! z(d!FMUfE1Mw>;?JWxrRYnYOw4)1QePne?Jx*Ybewn#bz@89Ei?mqv0ey|wRwxa2)| zg{!+Res_&GnL6pwtFG$>+ubKD73@8lyVT|J*Yy=YD&y)G&*dzbmHqr=duU$j>zKKL z+jl0vj@#O;vL$TyolfP`EWGQr&-vHauH*TgZt-ZFdC1~pbzO0DUg_=*bMyaZ>n^L~ z8LpnQ%)#UQ2CnQh_J6lluf4XyYTJ6*j>jk2x9&6Rnh~*1P5DGnXpdCXEj@*$Hdkh; z{7GipGwIXal}06}wU_LgblTv;mBSMz9z37*B};FyTWM3rDF%(A;?Re)FWvU%vcI;= zW1mIwYx`?kg*O$)+IIiCXJGLBmBZ_-u_soma1}hvY=XY6bS1xz99pwwv*`X}jf#V?mQ9)P-oLc6vBD1uz9oY+yLRv^V?E zuk5XhHBC?Q-1Ey)zM41tz^iTTJ2GEyYPQex`?0CXe3eeie}=LbGU@C)PMpw^lw4UV zdS%P3!#bwLRa@>>m9A3Hyc>41zhL{WfW=J$pNh(M-Bb`&bV!jY`(Y_Mt+k3(`Kr%- zv0bxtPp^G+-^fbEIAxo`K~Ki$u)XIdH^1L{q~0;Ymvh0FX`AQDX`es6UGosrl+#Pu z|1)d|%5J?@vTMq-r&2~!Y9H;|cYBhX_nm&VcZNS!Kl^$k;n&LDYxZa^JI`2b@@|Em zg36n;n1piqpB>@<8D@FD(q&w^rt$C-W5aF7%8ymZ^e+hGe;aewG*fF|^sJz7)%NSS z?*%@aU%?h%8l$EGPlOIJM9^f;;Vn=z56)#~mKUs`)V-AQHfoUI$@Qt_nc zp?7$3ldUFKxb3RPCCrCh=P%h5x$o6X-YnU$DNVQkMG8L9XcB$0WAruP{!oV>*wA*Hcy zlVM$UbDHEOI6v{A%5N3n=36U{{Pi!rUjBT2)T*Fm{*!xF^r&v>JKDu-1%j|6*G7URHJU-8HVqqce}T6oeSLKgrts`rMp@ovP0!KHJ8q zd}05eXB)MnqwgME>FTLpI)7)#EuH+9-9?YS1l=@p_;;~ls#^4NupGSy9XQ#bv3UMjNZ%%X?_ zkwDk%(`R!lW?s(E__y~}*u6|&_uac@PYKm%ezx%8)D;C5pPg6!XIS$6UE+l$Ozfsb zds4mxl;=Ikit#bUpR-|E#Gc-Bf!p&Qd{2KX2#KOcsr>W4Bfv z<5p=CUG!}Sx7X}Ii65rwU7E9IB=cQ$*51h zNl))Jc%Ir{b-;7}!Dk!Ht=CVRni!h$`XNi3zR%iCrq9Dnwoc+GO!GavTwdc?z~QXV zvf(xbEh|31Z#j<9U6~?lG8_<7+cVb4M4WSH0xpGhbSsFmGk) zS$b;Q*X3)2*F~y$GrEd|xH_%cAOApMOyNL8qV~$iu>3 zwDq6G)C83$^A1#Bd!Xu)RLq@Jtm~0_uyxxjrb`RIvNwmuA2avREn91tb#<5B+1zc? zF7r3vIUH#t z+cvA@guP#DXw|vo)|UG*apvaA*ZLFB=7@SnWnbO>pP{DPP%YAzb7kZ;DZ9%R9aGFY zH%Wo`DTR@>q2kFcrgU)Fq8t})H>U9s!s@{|A0t>1R!)Fvhorx*{p1KOE?u4O)r zs!X;PVigGtVRRJ~bw^XJqa@%;>D}(BYxO<0i&$Yxat; zZGJO9_tN*{Z@-&N(-WKN-LEKVH(ff=Yky(byjQPG`~4N}%vSV2=HYdIe^$_sxf`82 zuUqy}MeJiE*0`s|K}tQnrScYl4~ z#jL$7Uq90~K5MUAZrtWmMH>)%MNysvh$F!QB^`iZEJ z+bw)gR2_tW1&KSqT=D&6M&?(RR=H#s0K_QmM{7=bVVBiRUAN+2?tFWqrS8gBups+u$_QL$LWlt-6cJwS{NiTA02%ah1#Q4t0;aS7s7q;dlufFZy`Z8J~BILQbR}D|c z#>=PsRzGHLocBso_Qcx7j!j25@l+H@dmAn?nKm=mc0x;o5c?Abk=-xy9pA+AUS8Fj z5<n%^~r^-8QEJ-b_uXax)6JaV)53PRg7~o;th0$!O|4Rnx;&`b)(_%sxf$xF3+a zVd7L)Q7eu@Pvr?g_r5Y8U{Sx*5LN13@d z%&U*IOJ6ek@$E;YBL8W*>{D{5Zt-3D=U)EYtD@GbEccP?LB3s|FE3f=Gxvqu(zU5x z$`Z#_K6X7j<|ZV3*0L(yPDZlBT9ydk9Ai99Yg|M8Ps?GYmWx9%eCLjoyvbzPcX#TcSo|SbamJP z8|RnXP19XXYxfy&RYaeecKOe#M9&J9TF-puSJ|=OG*wSN?mpUUC9*{9ey{41UAI@*URtt3!2QAnsZE{L zUXyH{_PvW^vlorJTl&D>?_Qq&nG5A7XC?Bh2(ljIIVK%1si74S!NOD!Qs6Japtfr7 zc6VvjZ@&A(HocsmH({BoTcoB}*wlm%mdbs61+I)eUd!T^)Xq9D`!av^A6|6}dG#Co zD<92|6ZmCvW!{pV)z`bS-+psrnH{>_`rn5YOZ|2F{Q_TT%6!^Tp}DN-?T7qWqwSs> zk8}$fOx)^oG*iQ?-lZo*-}e=3#@p!ZJ*>JsM<-0w&M!LECnNFw%ag}X0>tII9tgO( zD_l1LhmA;}gQ&-zsEo%;sy51fmr*tN8dLO)U1GusFPX=7FN3|#%dGe#wR_9LkKPNW zudDL5EtnKqaQXB%W{n5`F9 zt#}p7Dmv3|>B(!Y68R4V%9j7$RD56K_IXQ%e~#^;lNUxUwMviK&6K?|i}mfKNlWLb z>MLtGs^1WKFCP>fmLaf!%R}K4$M*%6pvtsMV*%GgPi{}I13@7Mj*=|lrVZD3ZJf)! z=zUdFl+(q`mM0B2Ek1`$`6c+DA!yt3uM0HXHeXy<@}FTsqa_(u{JB=Kp|Pi~kXS2A<2&o?i{rkku64}k$?-DlJN&F6z2x%> zgRNiJ`nxmPyx8G$qBT-i?iMQufYU*$7%+kFoEB$Z7 zuF4fAue>$OUb7y1yz>2l_J%u`rXD=N&1uOnvCr}-<2q^S*#b?IoBjNz#y>u^b4&Wf z4T5tnDc$;fLB*Qy!R3ihkCgiCJKcF}*&I(r&wy_VO&q^M7O~#-5mY-O zbF{$5>7gmxXL?1=GmO&HtnXNzane5K+E%Ol#K~9hExl=S#O;2O%}U1GUAO-;s3~#i zt(hY*-+zhlKUJ0LYv(eUK#4+QQNx-#wLN-!*Q)Ma{VVIX@BJp@f^EEOmp$y6Z^(Z0 z-GL_$9rzsOR^@7y?3Q_+5ck-l(aiGJn@Zhj*P6e2KHGLW;N9{}ZoXxg&+7+8>WZfx zzxiZUiQ0YLU&kM6vCE#%pT!)h_ezE3pW)x^m&@Krb+0UM%(_rEv%K?^MNlN8M!v#? zutyzE>`Oi^vJTcdx^&I@SKDV+UCb_=uueL}?3DYRJ=Mvw2kaNDZOMFXy5IliqJtX_ zw&%8-PCnf$*s|%C@ySC$4Dy#6B7T&A_?rJBxA&{f=W<=|66PPh2UJ>G`kZx{Pvpqe Qg;d&361u;ri~0Xe0LgZ`+W-In diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/CGLipidBr2005Orig.lt b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/CGLipidBr2005Orig.lt deleted file mode 100644 index aabf2bcc8f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/CGLipidBr2005Orig.lt +++ /dev/null @@ -1,208 +0,0 @@ -# Note: -# -# This example may require additional features to be added to LAMMPS. If -# LAMMPS complains about an "Invalid pair_style", then download copy the -# "additional_lammps_code" from moltemplate.org, unpack it into your LAMMPS -# "src" directory and recompile LAMMPS. -# -# -------- Description -------- -# -# This example contains an implementation of the DPPC lipid bilayer described in -# G. Brannigan, P.F. Philips, and F.L.H. Brown, -# Physical Review E, Vol 72, 011915 (2005) -# and: -# M.C. Watson, E.S. Penev, P.M. Welch, and F.L.H. Brown -# J. Chem. Phys. 135, 244701 (2011) -# -# As in Watson(JCP 2011), rigid bond-length constraints have been replaced -# by harmonic bonds. -# -# --- DLPC lipids --- -# A truncated version of the DPPC lipid (named "DLPC") has also been added. -# Unlike the original "DPPC" molecule model, "DLPC" has not been carefully -# parameterized to reproduce the correct behavior in a lipid bilayer/mixture. -# (You may need to stiffen the bond-angle forces to make it behave correctly, -# but I did not do this here.) -# -# Units: -# -# The "epsilon" parameter in their model is approximately 2.75 kJ/mole -# ( = 0.657265774378585 kCal/mole, using 1kCal=4.184kJ) -# The "sigma" parameter corresponds to 7.5 angstroms. -# -# -# The new DLPC model is a truncated version of DPPC, -# (Its behaviour has not been rigorously tested.) - - - -CGLipidBr2005 { - - - write_once("In Init") { - # -- Default styles for "CGLipidBr2005" -- - units real - atom_style full - # (Hybrid force field styles were used for portability.) - bond_style hybrid harmonic - - angle_style hybrid cosine/delta # <- used in the original article - #angle_style hybrid harmonic # <- prevents unphysical acute angle turns - # Explanation: - # angle_style cosine/delta: U(theta) = k*(1-cos(theta-theta0)) - # angle_style harmonic: U(theta) = k*(theta-theta0)^2 - - dihedral_style none - improper_style none - - pair_style hybrid table linear 1130 & - lj/charmm/coul/charmm/inter es4k4l 14.5 15 - - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 # turn off pairs if "less than 3 bonds" - } - - - DPPC { - write("Data Atoms") { - $atom:h $mol:. @atom:head 0.0 0.00 0.00 33.75 # DPPC head atom - $atom:i $mol:. @atom:../int 0.0 -1.00 0.00 26.25 - $atom:t1 $mol:. @atom:../tail 0.0 1.00 0.00 18.75 - $atom:t2 $mol:. @atom:../tail 0.0 -1.00 0.00 11.25 - $atom:t3 $mol:. @atom:../tail 0.0 1.00 0.00 3.75 - } - write("Data Bonds") { - $bond:b1 @bond:../backbone $atom:h $atom:i - $bond:b2 @bond:../backbone $atom:i $atom:t1 - $bond:b3 @bond:../backbone $atom:t1 $atom:t2 - $bond:b4 @bond:../backbone $atom:t2 $atom:t3 - } - write("Data Angles") { - $angle:a1 @angle:../backbone $atom:h $atom:i $atom:t1 - $angle:a2 @angle:../backbone $atom:i $atom:t1 $atom:t2 - $angle:a3 @angle:../backbone $atom:t1 $atom:t2 $atom:t3 - } - - # Define properties of the local (lipid-specific) atom:head type atom: - write_once("Data Masses") { - @atom:head 200.0 - } - write_once("In Settings") { - pair_coeff @atom:head @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../int @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../tail @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - } - - } #DPPC - - - DLPC { - write("Data Atoms") { - $atom:h $mol:. @atom:head 0.0 0.00 0.00 30.00 # DLPC head atom - $atom:i $mol:. @atom:../int 0.0 -1.00 0.00 22.50 - $atom:t1 $mol:. @atom:../tail 0.0 1.00 0.00 15.00 - $atom:t2 $mol:. @atom:../tail 0.0 -1.00 0.00 7.50 - } - write("Data Bonds") { - $bond:b1 @bond:../backbone $atom:h $atom:i - $bond:b2 @bond:../backbone $atom:i $atom:t1 - $bond:b3 @bond:../backbone $atom:t1 $atom:t2 - } - write("Data Angles") { - $angle:a1 @angle:../backbone $atom:h $atom:i $atom:t1 - $angle:a2 @angle:../backbone $atom:i $atom:t1 $atom:t2 - } - # Define properties of the local (lipid-specific) atom:head type atom: - write_once("Data Masses") { - @atom:head 200.0 - } - write_once("In Settings") { - pair_coeff @atom:head @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../int @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - pair_coeff @atom:../tail @atom:head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - } - } #DLPC - - - # Particles and properties shared by all lipid types: - - write_once("Data Masses") { - @atom:int 200.0 - @atom:tail 200.0 - } - - write_once("In Settings") { - # -- Default settings/parameters for "CGLipidBr2005" -- - # (Hybrid bond & angle styles were used for portability.) - - # As in Watson(JCP 2011), rigid bond-length constraints - # have been replaced by harmonic bonds. - # The k_theta parameter should lie in between 5*epsilon and 10*epsilon. - bond_coeff @bond:backbone harmonic 116.847 7.5 #<--2*5000*eps/sig^2 - } - - write_once("In Settings") { - - # cosine/delta: U(theta) = k*(1-cos(theta-theta0)) - angle_coeff @angle:backbone cosine/delta 4.60086042 180 #<-- 7*eps - - ## Alternately, to stiffen the bond-angles, try this: - ##angle_coeff @angle:backbone cosine/delta 6.57265774 180 #<-- 10*eps - ## harmonic: U(theta) = k*(theta-theta0)^2 not (k/2)*(theta-theta0)^2 - ##angle_coeff @angle:backbone harmonic 9.85898661 180 #<-->30*eps - } - # Note: You may want to use a stiffer bond-angle than the original - # Brannigan&Brown 2005 paper if you want to mix two different lipids together. - # (The mixture of lipids introduces a great deal of disorder into the bilayer - # which would not be present in a DPPC bilayer. This caused pores to form - # in my simulations. But increasing the angle stiffness prevents this.) - - write_once("In Settings") { - - # The interaction of "atom:int" with other "atom:int" atoms is given by - # epsilon*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2), shifted and cutoff at - # r=3*sigma. This was implemented using pair_style table. - # Unfortunately, mixing lj/charmm and "table" pair styles in the same - # simulation is very inneficient. - - pair_coeff @atom:int @atom:int table table_int.dat INT - - # The interaction of tail beads with eachother is given by the formula below - # and with other atoms ...using Lorenz-Berthelot and "repulsive wins" rules: - # epsilon*(0.4*(sigma/r)^12 - 1.0*(sigma/r)^6), - pair_coeff @atom:tail @atom:tail lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 -1 - pair_coeff @atom:int @atom:tail lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 -1 - - # The interaction between head beads from different types of lipids - # is (currently) repulsive: - pair_coeff @atom:DPPC/head @atom:DLPC/head lj/charmm/coul/charmm/inter 0.1643 7.5 0.4 0 - - } # write_once("In Settings") - - - # Note: I divided epsilon by 4 to get "0.1643" because we are using the - # "es4k4l" coeffstyle, corresponding to U(r)=eps(4*K*(s/r)^12 + 4*L*(s/r)^6) - # (The "es4k4l" coeffstyle is the default.) Using this convention makes it - # easier to mix this coarse-grained lipid model with other molecular models. - - - -} # CGLipidBr2005 - - - - - - - - -# Note: This example has not been optimized for speed. -# -# Unfortunately, using both lj/charmm and "table" pair styles in the same -# simulation seems to be very inneficient. (The simulation is twice as slow -# as using only the "lj/charmm" pair styles for every pairwise interaction, -# ...and about 25% slower than using "table" for every pairwise interaction. -# However the lennard-jones pair styles support mixing, so we use them to -# make it easier to run these molecules with other molecules which don't use -# pair_table. I felt that portability was worth the extra 25% slow down.) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py deleted file mode 100755 index 0d09e4d02e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -# Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in -# Brannigan et al, Phys Rev E, 72, 011915 (2005) -# The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) -# However it is truncated at rc2 = 22.5 (shifted upwards to maintain continuity) - -def U(r, eps, sigma): - return eps* (0.4*pow((sigma/r),12) - 3.0*sigma*sigma/(r*r)) -def F(r, eps, sigma): - return eps*(12*0.4*pow((sigma/r),13)/sigma - 2*3.0*sigma*sigma/(r*r*r)) - -epsilon = 2.75/4.184 # kCal/mole -sigma = 7.5 -Rmin = 0.02 -Rmax = 22.6 -rcut = 22.5 -N = 1130 - -for i in range(0,N): - r = Rmin + i*(Rmax-Rmin)/(N-1) - U_r = U(r, epsilon, sigma) - U(rcut, epsilon, sigma) - F_r = F(r, epsilon, sigma) - if r > rcut: - U_r = 0.0 - F_r = 0.0 - print(str(i+1)+' '+str(r)+' '+str(U_r)+' '+str(F_r)) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py deleted file mode 100755 index 32147e444a..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env python - -# Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in -# Brannigan et al, Phys Rev E, 72, 011915 (2005) -# The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) -# I realized later this is not what we want because although energy is conserved -# all enrgies are shifted with respect to energies used in the Brannigan paper -# (by 0.27 kCal/mole) and the later Watson JCP 2011 paper (by 0.224 kCal/mole). -# (So don't use this.) - -# Calculate and print a - -def S(r, rc1, rc2, derivative=False): - """ - Calculate the switching function S(r) which decays continuously - between 1 and 0 in the range from rc1 to rc2 (rc2>rc1): - S(r) = (rc2^2 - r^2)^2 * (rc2^2 + 2*r^2 - 3*rc1^2) / (rc2^2-rc1^2)^3 - I'm using the same smoothing/switching cutoff function used by the CHARMM - force-fields. (I'm even using the same code to implement it, taken - from lammps charmm/coul/charmm pair style, rewritten in python.) - - """ - assert(rc2>rc1) - rsq = r*r - rc1sq = rc1*rc1 - rc2sq = rc2*rc2 - denom_lj_inv = (1.0 / ((rc2sq-rc1sq)* - (rc2sq-rc1sq)* - (rc2sq-rc1sq))) - if rsq > rc2sq: - return 0.0 - elif rsq < rc1sq: - if derivative: - return 0.0 - else: - return 1.0 - else: - rc2sq_minus_rsq = (rc2sq - rsq) - rc2sq_minus_rsq_sq = rc2sq_minus_rsq * rc2sq_minus_rsq - if derivative: - return (12.0 * rsq * rc2sq_minus_rsq * (rsq-rc1sq) * denom_lj_inv) - else: - return (rc2sq_minus_rsq_sq * - (rc2sq + 2.0*rsq - 3.0*rc1sq) * denom_lj_inv) - - -def U(r, eps, sigma): - return eps* (0.4*pow((sigma/r),12) - 3.0*sigma*sigma/(r*r)) - -def F(r, eps, sigma): - return eps*(12*0.4*pow((sigma/r),13)/sigma - 2*3.0*sigma*sigma/(r*r*r)) - -epsilon = 2.75/4.184 # kCal/mole -sigma = 7.5 -Rmin = 0.02 -Rmax = 22.6 -Rc1 = 22.0 -Rc2 = 22.5 -N = 1130 - -for i in range(0,N): - r = Rmin + i*(Rmax-Rmin)/(N-1) - U_r = U(r, epsilon, sigma) - F_r = F(r, epsilon, sigma) - # Multiply U(r) & F(r) by the smoothing/switch function - U_r = U_r * S(r, Rc1, Rc2) - F_r = U_r * S(r, Rc1, Rc2, True) + F_r * S(r, Rc1, Rc2, False) - print(str(i+1)+' '+str(r)+' '+str(U_r)+' '+str(F_r)) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/system.lt deleted file mode 100644 index c556233c0d..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/system.lt +++ /dev/null @@ -1,94 +0,0 @@ -# Description: - -# This constructs a bilayer constructed from coarse-grained DPPC lipids -# (implicit solvent). The DPPC lipid model is described here: -# G. Brannigan, P.F. Philips, and F.L.H. Brown, -# Physical Review E, Vol 72, 011915 (2005) -# -# NOTE: There is an example of a 50%/50% DPPC & DLPC mixture -# in the "membrane+protein" and "vesicle" examples. - - - - - - -import "CGLipidBr2005Orig.lt" - -using namespace CGLipidBr2005 - -lipids = new DPPC [32].move(7.5, 0, 0) - [37].move(3.75, 6.49519, 0) - [2].rot(180, 1, 0, 0) - - -# Move the lipds up to the center of the box -lipids[*][*][*].move(0,0,75.0) - - -# Although this patch of lipids is not square or rectangular, (it looks -# like a parallelogram), this is no longer the case after rectangular -# periodic boundary conditions are applied. We apply them below: -# width: 240 = 32*7.5 -# height: 240.322 = 37*6.49519 - -write_once("Data Boundary") { - 0 240 xlo xhi - 0 240.322 ylo yhi - 0 150.0 zlo zhi -} - - - - - - - - -# -------------- File ends here. Only comments below.------------------- - -# ------------------------------------ -# ------------- COMMENTS: ------------ -# ------------------------------------ -# -# A note on geometry: -# We want to create a bilayer arranged in a hexagonal lattice consisting of -# 32 rows (each row is aligned with the x-axis) -# 37 columns (aligned at a 60 degree angle from the x axis) -# The lattice spacing is 8.0 Angstroms ( ~= 0.95*sigma*2^(1/6), where sigma=7.5) -# When wrapped onto a rectangular box, the dimensions of the system are: -# 32 * 7.5 Angstroms in the X direction -# 37 * 7.5*sqrt(3)/2 Angstroms in the Y direction -# ------------------------------------ -# -# Below I show simple ways to create a lipid bilayer: -# -# 1) If you just want to make lipid bilayer out of DPPC, -# without specifying the location of each lipid, you could use this syntax: -# lipids = new DPPC [32][37][2] # 3-D array -# Later you can load in the coordinates of the lipds from a PDB file. -# Alternately you could also use a 1-dimensional array: -# lipids = new DPPC [2368] # 1-D array. Note: 2368 = 32 x 37 x 2 -# It does not matter as long as the number of lipids is correct. -# Multidimensional arrays are only useful if you plan to apply independent -# coordinate transformations to each row and column and monolayer. See below: -# -# 2) Instead of loading a PDB file later, we can directly specify the location -# of each DPPC lipid in the LT file itself. For lipid bilayers, this is -# easy, because the bilayer structure resembles 2 planar lattices. -# We can use "move" commands to place each lipid, and the "rot" command -# to turn the lipids in one of the monolayers upside down. -# -# lipids = new DPPC [32].move(7.5, 0, 0) -# [37].move(3.75, 6.49519, 0) -# [2].rot(180, 1, 0, 0) -# -# 3) If you want to create a bilayer from a mixture of DPPC and DLPC, you must -# replace "DPPC" in the command above with random([DPPC,DLPC],[0.5,0.5],12345) -# Here "0.5,0.5" are the probabilities for each molecule type, and "12345" -# is an optional random seed. -# lipids = new random([DPPC,DLPC], [0.5,0.5], 12345) -# [32].move(7.5, 0, 0) -# [37].move(3.75, 6.49519, 0) -# [2].rot(180, 1, 0, 0) -# diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/table_int.dat b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/table_int.dat deleted file mode 100644 index b0d651d67f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/table_int.dat +++ /dev/null @@ -1,1139 +0,0 @@ -# Table for the INT-INT interaction from -# Brannigan et al, Phys Rev E, 72, 011915 (2005) -# This table contains -# i r_i U(r_i) -dU/dr|r_i -# where U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) - -INT -N 1130 - -1 0.02 2.0331818401e+30 1.21990910406e+33 -2 0.04 4.9638228518e+26 1.48914685554e+29 -3 0.06 3.82579033251e+24 7.65158066501e+26 -4 0.08 1.21187081343e+23 1.81780622014e+25 -5 0.1 8.32791281704e+21 9.99349538045e+23 -6 0.12 9.34030842897e+20 9.34030842897e+22 -7 0.14 1.46892540453e+20 1.25907891817e+22 -8 0.16 2.95866897809e+19 2.21900173357e+21 -9 0.18 7.19889946863e+18 4.79926631242e+20 -10 0.2 2.0331818401e+18 1.21990910406e+20 -11 0.22 6.47834392264e+17 3.53364213962e+19 -12 0.24 2.28034873754e+17 1.14017436877e+19 -13 0.26 8.72681951932e+16 4.02776285507e+18 -14 0.28 3.58624366341e+16 1.53696157003e+18 -15 0.3 1.56704372019e+16 6.26817488078e+17 -16 0.32 7.2233129348e+15 2.70874235055e+17 -17 0.34 3.48970861422e+15 1.23166186384e+17 -18 0.36 1.75754381558e+15 5.85847938527e+16 -19 0.38 9.18613895646e+14 2.90088598625e+16 -20 0.4 4.96382285179e+14 1.48914685554e+16 -21 0.42 2.76404230108e+14 7.89726371739e+15 -22 0.44 1.58162693423e+14 4.31352800247e+15 -23 0.46 9.27773983256e+13 2.42027995633e+15 -24 0.48 5.56725765996e+13 1.391814415e+15 -25 0.5 3.41111308981e+13 8.18667141564e+14 -26 0.52 2.13057117167e+13 4.91670270393e+14 -27 0.54 1.35459994024e+13 3.0102220895e+14 -28 0.56 8.75547769351e+12 1.87617379153e+14 -29 0.58 5.74645813711e+12 1.18892237325e+14 -30 0.6 3.8257903322e+12 7.65158066491e+13 -31 0.62 2.58128463312e+12 4.99603477424e+13 -32 0.64 1.7635041342e+12 3.30657025205e+13 -33 0.66 1.21901470178e+12 2.21639036726e+13 -34 0.68 8.51979641904e+11 1.50349348607e+13 -35 0.7 6.0167184547e+11 1.0314374497e+13 -36 0.72 4.29087845387e+11 7.15146409276e+12 -37 0.74 3.08855637556e+11 5.00846980094e+12 -38 0.76 2.24270970425e+11 3.54112058818e+12 -39 0.78 1.64210505205e+11 2.52631546702e+12 -40 0.8 1.2118708117e+11 1.81780621971e+12 -41 0.82 90109367359.1 1.31867367068e+12 -42 0.84 67481501334.4 9.64021449503e+11 -43 0.86 50880896383.4 7.09965997788e+11 -44 0.88 38613938681.2 5.26553710913e+11 -45 0.9 29486692086.8 3.93155896009e+11 -46 0.92 22650731882.4 2.95444330322e+11 -47 0.94 17498544395.3 2.23385674464e+11 -48 0.96 13591937526.4 1.69899220331e+11 -49 0.98 10612635712.6 1.29950642555e+11 -50 1.0 8327912706.34 99934953582.6 -51 1.02 6566502316.69 77252969474.2 -52 1.04 5201589672.36 60018343356.8 -53 1.06 4138717434.11 46853405843.3 -54 1.08 3307128665.58 36745874940.0 -55 1.1 2653529579.27 28947596241.1 -56 1.12 2137567708.15 22902511945.9 -57 1.14 1728534024.3 18195095739.0 -58 1.16 1402943799.0 14513212422.1 -59 1.18 1142752163.37 11621209113.9 -60 1.2 934030766.093 9340308300.6 -61 1.22 765981286.774 7534242773.65 -62 1.24 630196371.787 6098675145.29 -63 1.26 520103253.414 4953364870.6 -64 1.28 430542934.103 4036340534.04 -65 1.3 357450462.101 3299543229.91 -66 1.32 297610947.802 2705554551.18 -67 1.34 248472587.186 2225128105.44 -68 1.36 208002782.573 1835319108.76 -69 1.38 174576985.011 1518061159.35 -70 1.4 146892484.084 1259078837.33 -71 1.42 123901294.937 1047053582.16 -72 1.44 104757721.536 872981382.419 -73 1.46 88777241.639 729676313.267 -74 1.48 75404158.02 611385405.387 -75 1.5 64186061.7033 513488820.507 -76 1.52 54753607.1486 432265633.695 -77 1.54 46804443.7318 364710253.134 -78 1.56 40090410.0598 308388060.159 -79 1.58 34407297.9713 261321529.95 -80 1.6 29586646.6744 221900119.2 -81 1.62 25489145.661 188808745.634 -82 1.64 21999316.2868 160970856.824 -83 1.66 19021212.5921 137502982.517 -84 1.68 16474936.8715 117678352.86 -85 1.7 14293808.3245 100897694.735 -86 1.72 12422056.6082 86665727.6626 -87 1.74 10812938.3788 74572197.8496 -88 1.76 9427195.57103 64276535.39 -89 1.78 8231790.46096 55495411.7777 -90 1.8 7198865.45512 47992625.088 -91 1.82 6304885.77339 41570857.9644 -92 1.84 5529931.32911 36064946.1544 -93 1.86 4857110.59557 31336368.341 -94 1.88 4272074.43377 27268725.7382 -95 1.9 3762612.01167 23764025.6584 -96 1.92 3318314.28383 20739619.609 -97 1.94 2930293.18879 18125675.4316 -98 1.96 2590946.89128 15863086.114 -99 1.98 2293763.15199 13901736.4186 -100 2.0 2033154.33079 12199063.3122 -101 2.02 1804318.68586 10718858.1296 -102 2.04 1603123.57305 9430268.02169 -103 2.06 1426006.91783 8306962.01537 -104 2.08 1269893.96121 7326433.30293 -105 2.1 1132126.79514 6469414.48445 -106 2.12 1010404.62602 5719386.63441 -107 2.14 902733.052344 5062166.44376 -108 2.16 807380.928986 4485558.44681 -109 2.18 722843.627253 3979061.59742 -110 2.2 647811.695319 3533621.30686 -111 2.22 581144.085827 3141419.57242 -112 2.24 521845.251959 2795697.07302 -113 2.26 469045.525153 2490602.13576 -114 2.28 421984.280794 2221062.32522 -115 2.3 379995.475978 1982675.10836 -116 2.32 342495.208369 1771614.62868 -117 2.34 308970.999537 1584552.10475 -118 2.36 278972.551763 1418587.76828 -119 2.38 252103.765513 1271192.59046 -120 2.4 228015.837009 1140158.32224 -121 2.42 206401.282366 1023554.60663 -122 2.44 186988.75765 919692.114521 -123 2.46 169538.563484 827090.818108 -124 2.48 153838.739168 744452.651831 -125 2.5 139701.665073 670637.92543 -126 2.52 126961.103835 604644.949624 -127 2.54 115469.620781 545592.416037 -128 2.56 105096.332511 492704.141327 -129 2.58 95724.9397832 445295.843157 -130 2.6 87252.0069441 402763.664479 -131 2.62 79585.4554502 364574.203947 -132 2.64 72643.2434671 330255.845328 -133 2.66 66352.2073932 299391.208536 -134 2.68 60647.0444312 271610.570248 -135 2.7 55469.4181565 246586.123584 -136 2.72 50767.1714483 224026.964698 -137 2.74 46493.633237 203674.709811 -138 2.76 42607.0073083 185299.659567 -139 2.78 39069.8329526 168697.439095 -140 2.8 35848.5085794 153686.051901 -141 2.82 32912.8705664 140103.294183 -142 2.84 30235.8206098 127804.483324 -143 2.86 27792.9956998 116660.460548 -144 2.88 25562.4755962 106555.833042 -145 2.9 23524.5233195 97387.4254387 -146 2.92 21661.3547409 89062.9145204 -147 2.94 19956.9338374 81499.6244039 -148 2.96 18396.7906059 74623.4624292 -149 2.98 16967.8589974 68367.9785194 -150 3.0 15658.3325568 62673.5329856 -151 3.02 14457.5357325 57486.5596649 -152 3.04 13355.809067 52758.912937 -153 3.06 12344.4066925 48447.2886046 -154 3.08 11415.4047444 44512.7098736 -155 3.1 10561.6194689 40920.0707567 -156 3.12 9776.5339459 37637.7301715 -157 3.14 9054.23247117 34637.1508274 -158 3.16 8389.34175838 31892.5777179 -159 3.18 7776.97821258 29380.7516608 -160 3.2 7212.7006167 27080.6538766 -161 3.22 6692.4676457 24973.2780793 -162 3.24 6212.59969004 23041.4269669 -163 3.26 5769.74452856 21269.5303734 -164 3.28 5360.84644195 19643.4826615 -165 3.3 4983.1184041 18150.4972204 -166 3.32 4634.01702836 16778.97618 -167 3.34 4311.21998136 15518.393672 -168 3.36 4012.60560869 14359.191159 -169 3.38 3736.23454428 13292.6835236 -170 3.4 3480.33310029 12310.9747549 -171 3.42 3243.27825585 11406.8822043 -172 3.44 3023.58408279 10573.8684961 -173 3.46 2819.88946345 9805.98028003 -174 3.48 2630.94697101 9097.79310596 -175 3.5 2455.61279669 8444.36177626 -176 3.52 2292.83761972 7841.17560602 -177 3.54 2141.65832756 7284.11808108 -178 3.56 2001.19050257 6769.43046025 -179 3.58 1870.62160083 6293.67891689 -180 3.6 1749.20475558 5853.72485855 -181 3.62 1636.25314534 5446.69810179 -182 3.64 1531.13487237 5069.97261409 -183 3.66 1433.26830277 4721.1445646 -184 3.68 1342.11782445 4398.01245332 -185 3.7 1257.18998347 4098.55911171 -186 3.72 1178.02996319 3820.93539003 -187 3.74 1104.21837425 3563.44536511 -188 3.76 1035.36832639 3324.53291993 -189 3.78 971.122756088 3102.76956138 -190 3.8 911.151986554 2896.84335615 -191 3.82 855.151498616 2705.54887715 -192 3.84 802.83989347 2527.77806329 -193 3.86 753.957029799 2362.51190574 -194 3.88 708.262319576 2208.81288195 -195 3.9 665.533168297 2065.81806693 -196 3.92 625.563546756 1932.73285812 -197 3.94 588.162682667 1808.82525631 -198 3.96 553.153861545 1693.42065104 -199 3.98 520.373327227 1585.89706361 -200 4.0 489.669273313 1485.68080556 -201 4.02 460.900917596 1392.24251449 -202 4.04 433.937652306 1305.09353282 -203 4.06 408.6582636 1223.78259822 -204 4.08 384.950214367 1147.89281764 -205 4.1 362.708984933 1077.03889938 -206 4.12 341.837466738 1010.86461999 -207 4.14 322.245404503 949.040505266 -208 4.16 303.848882793 891.261706073 -209 4.18 286.569853265 837.246052066 -210 4.2 270.33569919 786.732267446 -211 4.22 255.078834164 739.47833469 -212 4.24 240.736332164 695.259993326 -213 4.26 227.249586386 653.869362042 -214 4.28 214.563994495 615.113673492 -215 4.3 202.628668126 578.814112106 -216 4.32 191.396164684 544.804746089 -217 4.34 180.822239621 512.931545605 -218 4.36 170.865617553 483.051479815 -219 4.38 161.487780703 455.031686127 -220 4.4 152.652773286 428.748705595 -221 4.42 144.327020575 404.087778912 -222 4.44 136.479161479 380.942197972 -223 4.46 129.07989358 359.212708377 -224 4.48 122.101829632 338.806958688 -225 4.5 115.519364658 319.638992577 -226 4.52 109.308552789 301.628780369 -227 4.54 103.446993117 284.701786758 -228 4.56 97.9137238447 268.788571763 -229 4.58 92.6891241175 253.824422244 -230 4.6 87.7548229339 239.749011508 -231 4.62 83.0936146036 226.506084761 -232 4.64 78.6893802546 214.043168343 -233 4.66 74.5270149351 202.31130085 -234 4.68 70.5923598871 191.264784422 -235 4.7 66.8721396072 180.860954593 -236 4.72 63.353903336 171.05996726 -237 4.74 60.0259706488 161.824601429 -238 4.76 56.8773808439 153.120076496 -239 4.78 53.8978458491 144.913882966 -240 4.8 51.0777063884 137.175625538 -241 4.82 48.4078911713 129.876877635 -242 4.84 45.8798788842 122.991046476 -243 4.86 43.485662782 116.493247913 -244 4.88 41.2177176913 110.360190267 -245 4.9 39.0689692529 104.570066494 -246 4.92 37.0327652428 99.1024540566 -247 4.94 35.102848823 93.9382219092 -248 4.96 33.2733335874 89.05944408 -249 4.98 31.5386802724 84.4493193479 -250 5.0 29.8936750183 80.0920965658 -251 5.02 28.3334090704 75.9730052143 -252 5.04 26.8532598202 72.0781907976 -253 5.06 25.4488730938 68.3946547294 -254 5.08 24.116146599 64.9101983786 -255 5.1 22.8512144543 61.6133709734 -256 5.12 21.650432722 58.4934210835 -257 5.14 20.5103658787 55.5402514226 -258 5.16 19.4277741591 52.7443767307 -259 5.18 18.3996017121 50.0968845179 -260 5.2 17.4229655155 47.5893984632 -261 5.22 16.4951449988 45.2140442802 -262 5.24 15.6135723236 42.9634178757 -263 5.26 14.775823281 40.8305556374 -264 5.28 13.979608762 38.808906703 -265 5.3 13.2227667648 36.8923070701 -266 5.32 12.5032549016 35.0749554196 -267 5.34 11.8191433738 33.3513905323 -268 5.36 11.1686083831 31.7164701895 -269 5.38 10.5499259512 30.1653514539 -270 5.4 9.96146612005 28.693472236 -271 5.42 9.40168750976 27.2965340593 -272 5.44 8.86913220892 25.9704859397 -273 5.46 8.36242097742 24.7115093061 -274 5.48 7.88024874079 23.5160038893 -275 5.5 7.4213803577 22.3805745153 -276 5.52 6.98464664308 21.3020187412 -277 5.54 6.56894063048 20.2773152771 -278 5.56 6.1732140587 19.3036131423 -279 5.58 5.79647406826 18.3782215059 -280 5.6 5.43778009463 17.4986001669 -281 5.62 5.09624094585 16.6623506308 -282 5.64 4.77101205293 15.867207745 -283 5.66 4.46129288233 15.1110318537 -284 5.68 4.16632450031 14.3918014404 -285 5.7 3.88538727999 13.7076062261 -286 5.72 3.61779874199 13.0566406912 -287 5.74 3.36291152072 12.4371979973 -288 5.76 3.12011144838 11.8476642796 -289 5.78 2.8888157497 11.2865132882 -290 5.8 2.66847134042 10.7523013555 -291 5.82 2.45855322349 10.2436626676 -292 5.84 2.25856297681 9.7593048226 -293 5.86 2.06802732724 9.2980046552 -294 5.88 1.88649680546 8.85860431242 -295 5.9 1.71354447704 8.44000756375 -296 5.92 1.548764745 8.04117633127 -297 5.94 1.39177221978 7.66112742597 -298 5.96 1.24220065245 7.29892947717 -299 5.98 1.09970192753 6.9537000433 -300 6.0 0.963945111861 6.62460289254 -301 6.02 0.83461555631 6.31084544295 -302 6.04 0.711414047074 6.01167635216 -303 6.06 0.594056003831 5.72638324756 -304 6.08 0.482270721937 5.45429058822 -305 6.1 0.375800656137 5.19475765055 -306 6.12 0.274400743381 4.94717663025 -307 6.14 0.177837762511 4.71097085338 -308 6.16 0.0858897286772 4.48559308998 -309 6.18 -0.00165467948361 4.27052396409 -310 6.2 -0.0849966617872 4.06527045435 -311 6.22 -0.164327809314 3.8693644797 -312 6.24 -0.239830589745 3.68236156522 -313 6.26 -0.311678806773 3.50383958321 -314 6.28 -0.380038035049 3.33339756513 -315 6.3 -0.445066032049 3.17065458013 -316 6.32 -0.506913128135 3.0152486763 -317 6.34 -0.56572259604 2.866835881 -318 6.36 -0.621631000928 2.72508925658 -319 6.38 -0.674768532081 2.58969800863 -320 6.4 -0.725259317268 2.46036664323 -321 6.42 -0.773221720709 2.33681417085 -322 6.44 -0.818768625574 2.21877335375 -323 6.46 -0.862007701832 2.10598999469 -324 6.48 -0.90304166028 1.99822226439 -325 6.5 -0.941968493479 1.8952400656 -326 6.52 -0.978881704324 1.79682443166 -327 6.54 -1.01387052292 1.70276695755 -328 6.56 -1.04702011237 1.61286926168 -329 6.58 -1.07841176412 1.52694247655 -330 6.6 -1.10812308336 1.44480676668 -331 6.62 -1.13622816508 1.36629087245 -332 6.64 -1.1627977612 1.29123167801 -333 6.66 -1.18789943936 1.21947380239 -334 6.68 -1.21159773365 1.15086921208 -335 6.7 -1.23395428792 1.08527685416 -336 6.72 -1.25502799183 1.02256230873 -337 6.74 -1.27487511024 0.962597459596 -338 6.76 -1.2935494061 0.90526018218 -339 6.78 -1.31110225728 0.850434047748 -340 6.8 -1.32758276773 0.798008043011 -341 6.82 -1.34303787302 0.747876304295 -342 6.84 -1.35751244086 0.699937865467 -343 6.86 -1.3710493666 0.654096418865 -344 6.88 -1.38368966412 0.610260088543 -345 6.9 -1.3954725523 0.568341215144 -346 6.92 -1.40643553728 0.528256151786 -347 6.94 -1.41661449078 0.489925070364 -348 6.96 -1.42604372459 0.453271777711 -349 6.98 -1.43475606153 0.418223541087 -350 7.0 -1.44278290299 0.384710922497 -351 7.02 -1.45015429321 0.352667621378 -352 7.04 -1.45689898057 0.322030325194 -353 7.06 -1.46304447588 0.292738567537 -354 7.08 -1.46861710792 0.264734593325 -355 7.1 -1.47364207647 0.237963230734 -356 7.12 -1.47814350264 0.2123717695 -357 7.14 -1.482144477 0.187909845266 -358 7.16 -1.48566710537 0.16452932965 -359 7.18 -1.48873255248 0.142184225751 -360 7.2 -1.49136108362 0.120830568787 -361 7.22 -1.49357210429 0.100426331626 -362 7.24 -1.49538419809 0.0809313349308 -363 7.26 -1.4968151628 0.0623071617066 -364 7.28 -1.49788204479 0.044517076001 -365 7.3 -1.49860117187 0.0275259455594 -366 7.32 -1.49898818464 0.0113001682279 -367 7.34 -1.49905806636 -0.00419239808778 -368 7.36 -1.4988251715 -0.0189825020854 -369 7.38 -1.49830325295 -0.0330995625254 -370 7.4 -1.49750548803 -0.0465717286462 -371 7.42 -1.49644450327 -0.0594259376903 -372 7.44 -1.49513239812 -0.0716879696855 -373 7.46 -1.49358076759 -0.0833824996199 -374 7.48 -1.4918007238 -0.0945331471409 -375 7.5 -1.48980291663 -0.105162523901 -376 7.52 -1.48759755345 -0.115292278666 -377 7.54 -1.48519441791 -0.124943140307 -378 7.56 -1.48260288794 -0.13413495876 -379 7.58 -1.47983195293 -0.142886744076 -380 7.6 -1.47689023018 -0.151216703644 -381 7.62 -1.47378598053 -0.159142277674 -382 7.64 -1.47052712344 -0.166680173038 -383 7.66 -1.46712125128 -0.173846395532 -384 7.68 -1.46357564306 -0.180656280652 -385 7.7 -1.45989727753 -0.187124522948 -386 7.72 -1.45609284575 -0.193265204023 -387 7.74 -1.45216876302 -0.199091819249 -388 7.76 -1.4481311804 -0.204617303261 -389 7.78 -1.44398599566 -0.20985405428 -390 7.8 -1.43973886378 -0.214813957332 -391 7.82 -1.43539520696 -0.21950840641 -392 7.84 -1.43096022428 -0.223948325627 -393 7.86 -1.42643890087 -0.228144189416 -394 7.88 -1.42183601669 -0.232106041819 -395 7.9 -1.41715615498 -0.235843514899 -396 7.92 -1.41240371029 -0.239365846333 -397 7.94 -1.40758289625 -0.242681896213 -398 7.96 -1.40269775292 -0.245800163096 -399 7.98 -1.39775215386 -0.248728799339 -400 8.0 -1.39274981294 -0.251475625745 -401 8.02 -1.38769429081 -0.254048145572 -402 8.04 -1.3825890011 -0.256453557906 -403 8.06 -1.37743721643 -0.258698770453 -404 8.08 -1.37224207403 -0.260790411767 -405 8.1 -1.3670065813 -0.262734842931 -406 8.12 -1.36173362096 -0.264538168734 -407 8.14 -1.35642595614 -0.26620624836 -408 8.16 -1.35108623513 -0.267744705599 -409 8.18 -1.34571699603 -0.269158938625 -410 8.2 -1.34032067115 -0.270454129338 -411 8.22 -1.33489959126 -0.271635252315 -412 8.24 -1.32945598963 -0.272707083354 -413 8.26 -1.32399200593 -0.273674207668 -414 8.28 -1.31850968998 -0.274541027712 -415 8.3 -1.3130110053 -0.275311770682 -416 8.32 -1.30749783257 -0.275990495686 -417 8.34 -1.30197197291 -0.276581100614 -418 8.36 -1.29643515102 -0.277087328708 -419 8.38 -1.29088901827 -0.277512774857 -420 8.4 -1.28533515553 -0.277860891625 -421 8.42 -1.279775076 -0.278134995017 -422 8.44 -1.27421022789 -0.278338270004 -423 8.46 -1.26864199697 -0.27847377582 -424 8.48 -1.26307170904 -0.278544451025 -425 8.5 -1.25750063229 -0.278553118366 -426 8.52 -1.25192997959 -0.278502489422 -427 8.54 -1.24636091063 -0.27839516907 -428 8.56 -1.24079453406 -0.278233659745 -429 8.58 -1.23523190945 -0.27802036554 -430 8.6 -1.22967404925 -0.277757596126 -431 8.62 -1.22412192063 -0.277447570509 -432 8.64 -1.21857644724 -0.277092420635 -433 8.66 -1.21303851096 -0.276694194842 -434 8.68 -1.20750895348 -0.276254861174 -435 8.7 -1.20198857794 -0.275776310556 -436 8.72 -1.19647815038 -0.275260359835 -437 8.74 -1.19097840123 -0.274708754702 -438 8.76 -1.18549002669 -0.274123172492 -439 8.78 -1.18001369009 -0.273505224869 -440 8.8 -1.17455002313 -0.272856460401 -441 8.82 -1.16909962718 -0.272178367032 -442 8.84 -1.16366307443 -0.271472374453 -443 8.86 -1.15824090903 -0.270739856375 -444 8.88 -1.1528336482 -0.269982132713 -445 8.9 -1.14744178329 -0.269200471678 -446 8.92 -1.14206578078 -0.26839609179 -447 8.94 -1.13670608326 -0.267570163805 -448 8.96 -1.13136311038 -0.266723812565 -449 8.98 -1.1260372597 -0.26585811878 -450 9.0 -1.12072890764 -0.264974120729 -451 9.02 -1.11543841024 -0.2640728159 -452 9.04 -1.11016610399 -0.263155162565 -453 9.06 -1.10491230659 -0.262222081284 -454 9.08 -1.09967731769 -0.261274456364 -455 9.1 -1.09446141962 -0.260313137244 -456 9.12 -1.08926487805 -0.259338939836 -457 9.14 -1.08408794265 -0.258352647809 -458 9.16 -1.07893084774 -0.257355013824 -459 9.18 -1.07379381288 -0.256346760718 -460 9.2 -1.06867704347 -0.255328582644 -461 9.22 -1.06358073129 -0.254301146164 -462 9.24 -1.05850505508 -0.253265091305 -463 9.26 -1.053450181 -0.252221032561 -464 9.28 -1.04841626319 -0.251169559871 -465 9.3 -1.04340344425 -0.25011123955 -466 9.32 -1.03841185563 -0.249046615186 -467 9.34 -1.03344161818 -0.2479762085 -468 9.36 -1.0284928425 -0.246900520178 -469 9.38 -1.02356562938 -0.245820030663 -470 9.4 -1.0186600702 -0.244735200927 -471 9.42 -1.01377624733 -0.243646473201 -472 9.44 -1.00891423443 -0.242554271687 -473 9.46 -1.0040740969 -0.241459003238 -474 9.48 -0.999255892143 -0.240361058009 -475 9.5 -0.994459669928 -0.239260810093 -476 9.52 -0.989685472697 -0.238158618121 -477 9.54 -0.984933335869 -0.237054825845 -478 9.56 -0.980203288132 -0.235949762702 -479 9.58 -0.975495351726 -0.234843744346 -480 9.6 -0.970809542708 -0.233737073173 -481 9.62 -0.966145871217 -0.232630038816 -482 9.64 -0.961504341725 -0.231522918625 -483 9.66 -0.956884953272 -0.230415978128 -484 9.68 -0.952287699705 -0.229309471477 -485 9.7 -0.947712569897 -0.228203641873 -486 9.72 -0.943159547963 -0.22709872198 -487 9.74 -0.938628613467 -0.225994934317 -488 9.76 -0.934119741622 -0.224892491642 -489 9.78 -0.929632903477 -0.223791597316 -490 9.8 -0.925168066109 -0.222692445658 -491 9.82 -0.920725192794 -0.221595222284 -492 9.84 -0.916304243179 -0.220500104432 -493 9.86 -0.91190517345 -0.219407261278 -494 9.88 -0.907527936486 -0.218316854241 -495 9.9 -0.903172482012 -0.217229037271 -496 9.92 -0.898838756748 -0.216143957132 -497 9.94 -0.894526704547 -0.215061753669 -498 9.96 -0.890236266534 -0.213982560076 -499 9.98 -0.885967381232 -0.212906503136 -500 10.0 -0.881719984692 -0.211833703472 -501 10.02 -0.877494010612 -0.210764275774 -502 10.04 -0.873289390453 -0.209698329022 -503 10.06 -0.869106053554 -0.208635966708 -504 10.08 -0.864943927233 -0.207577287034 -505 10.1 -0.860802936899 -0.206522383122 -506 10.12 -0.856683006147 -0.205471343199 -507 10.14 -0.852584056854 -0.204424250786 -508 10.16 -0.848506009271 -0.203381184875 -509 10.18 -0.844448782117 -0.202342220105 -510 10.2 -0.840412292656 -0.201307426921 -511 10.22 -0.836396456786 -0.20027687174 -512 10.24 -0.832401189115 -0.199250617102 -513 10.26 -0.828426403039 -0.19822872182 -514 10.28 -0.824472010811 -0.197211241119 -515 10.3 -0.820537923617 -0.196198226777 -516 10.32 -0.81662405164 -0.195189727259 -517 10.34 -0.812730304126 -0.19418578784 -518 10.36 -0.808856589444 -0.193186450732 -519 10.38 -0.805002815152 -0.1921917552 -520 10.4 -0.801168888049 -0.191201737679 -521 10.42 -0.797354714233 -0.190216431881 -522 10.44 -0.793560199154 -0.189235868906 -523 10.46 -0.789785247667 -0.188260077336 -524 10.48 -0.786029764076 -0.187289083343 -525 10.5 -0.782293652189 -0.186322910778 -526 10.52 -0.778576815358 -0.185361581264 -527 10.54 -0.774879156522 -0.184405114284 -528 10.56 -0.771200578253 -0.183453527268 -529 10.58 -0.767540982794 -0.182506835671 -530 10.6 -0.763900272099 -0.181565053055 -531 10.62 -0.760278347867 -0.180628191165 -532 10.64 -0.75667511158 -0.179696260001 -533 10.66 -0.753090464539 -0.17876926789 -534 10.68 -0.749524307893 -0.177847221551 -535 10.7 -0.745976542671 -0.176930126167 -536 10.72 -0.742447069815 -0.176017985441 -537 10.74 -0.738935790206 -0.175110801662 -538 10.76 -0.735442604695 -0.174208575761 -539 10.78 -0.731967414126 -0.173311307369 -540 10.8 -0.728510119361 -0.172418994873 -541 10.82 -0.72507062131 -0.171531635464 -542 10.84 -0.721648820948 -0.170649225192 -543 10.86 -0.718244619341 -0.169771759015 -544 10.88 -0.714857917667 -0.168899230842 -545 10.9 -0.711488617235 -0.168031633581 -546 10.92 -0.708136619505 -0.167168959186 -547 10.94 -0.704801826108 -0.166311198692 -548 10.96 -0.701484138863 -0.165458342262 -549 10.98 -0.698183459794 -0.164610379221 -550 11.0 -0.694899691148 -0.1637672981 -551 11.02 -0.691632735406 -0.162929086665 -552 11.04 -0.688382495303 -0.162095731957 -553 11.06 -0.68514887384 -0.161267220326 -554 11.08 -0.681931774298 -0.160443537459 -555 11.1 -0.678731100249 -0.159624668416 -556 11.12 -0.675546755573 -0.15881059766 -557 11.14 -0.672378644462 -0.15800130908 -558 11.16 -0.669226671439 -0.157196786028 -559 11.18 -0.666090741365 -0.156397011339 -560 11.2 -0.662970759447 -0.155601967361 -561 11.22 -0.659866631253 -0.154811635976 -562 11.24 -0.656778262715 -0.154025998629 -563 11.26 -0.653705560141 -0.153245036348 -564 11.28 -0.650648430223 -0.152468729768 -565 11.3 -0.647606780043 -0.15169705915 -566 11.32 -0.644580517084 -0.150930004405 -567 11.34 -0.641569549231 -0.150167545112 -568 11.36 -0.638573784781 -0.149409660536 -569 11.38 -0.635593132451 -0.148656329652 -570 11.4 -0.632627501379 -0.147907531156 -571 11.42 -0.629676801133 -0.147163243484 -572 11.44 -0.626740941713 -0.146423444834 -573 11.46 -0.62381983356 -0.145688113174 -574 11.48 -0.620913387554 -0.144957226261 -575 11.5 -0.618021515027 -0.144230761656 -576 11.52 -0.615144127757 -0.143508696739 -577 11.54 -0.612281137978 -0.14279100872 -578 11.56 -0.609432458382 -0.142077674653 -579 11.58 -0.606598002119 -0.141368671449 -580 11.6 -0.603777682806 -0.140663975889 -581 11.62 -0.600971414522 -0.139963564633 -582 11.64 -0.598179111815 -0.139267414235 -583 11.66 -0.595400689704 -0.138575501149 -584 11.68 -0.592636063678 -0.137887801745 -585 11.7 -0.589885149701 -0.137204292313 -586 11.72 -0.587147864211 -0.136524949077 -587 11.74 -0.584424124122 -0.135849748201 -588 11.76 -0.581713846826 -0.135178665802 -589 11.78 -0.579016950193 -0.134511677954 -590 11.8 -0.576333352571 -0.133848760697 -591 11.82 -0.573662972788 -0.133189890048 -592 11.84 -0.571005730151 -0.132535042004 -593 11.86 -0.56836154445 -0.131884192552 -594 11.88 -0.565730335952 -0.131237317677 -595 11.9 -0.563112025406 -0.130594393364 -596 11.92 -0.560506534041 -0.129955395608 -597 11.94 -0.557913783565 -0.129320300421 -598 11.96 -0.555333696166 -0.128689083832 -599 11.98 -0.552766194514 -0.1280617219 -600 12.0 -0.550211201752 -0.127438190715 -601 12.02 -0.547668641506 -0.126818466403 -602 12.04 -0.545138437876 -0.126202525133 -603 12.06 -0.542620515439 -0.125590343118 -604 12.08 -0.540114799247 -0.124981896625 -605 12.1 -0.537621214828 -0.124377161973 -606 12.12 -0.53513968818 -0.123776115544 -607 12.14 -0.532670145775 -0.123178733779 -608 12.16 -0.530212514555 -0.122584993188 -609 12.18 -0.52776672193 -0.121994870352 -610 12.2 -0.525332695778 -0.121408341923 -611 12.22 -0.522910364445 -0.120825384632 -612 12.24 -0.52049965674 -0.120245975289 -613 12.26 -0.518100501935 -0.119670090788 -614 12.28 -0.515712829763 -0.119097708107 -615 12.3 -0.513336570418 -0.118528804313 -616 12.32 -0.51097165455 -0.117963356563 -617 12.34 -0.508618013267 -0.11740134211 -618 12.36 -0.506275578128 -0.116842738298 -619 12.38 -0.503944281147 -0.116287522571 -620 12.4 -0.501624054788 -0.115735672472 -621 12.42 -0.49931483196 -0.115187165645 -622 12.44 -0.497016546022 -0.114641979838 -623 12.46 -0.494729130774 -0.114100092904 -624 12.48 -0.49245252046 -0.1135614828 -625 12.5 -0.490186649763 -0.113026127594 -626 12.52 -0.487931453803 -0.112494005462 -627 12.54 -0.485686868135 -0.11196509469 -628 12.56 -0.48345282875 -0.111439373678 -629 12.58 -0.481229272066 -0.110916820936 -630 12.6 -0.479016134933 -0.110397415091 -631 12.62 -0.476813354625 -0.109881134884 -632 12.64 -0.474620868841 -0.109367959171 -633 12.66 -0.472438615702 -0.108857866928 -634 12.68 -0.470266533747 -0.108350837244 -635 12.7 -0.468104561934 -0.107846849332 -636 12.72 -0.465952639633 -0.107345882519 -637 12.74 -0.463810706629 -0.106847916255 -638 12.76 -0.461678703116 -0.106352930108 -639 12.78 -0.459556569693 -0.105860903769 -640 12.8 -0.457444247367 -0.105371817049 -641 12.82 -0.455341677547 -0.10488564988 -642 12.84 -0.453248802042 -0.104402382317 -643 12.86 -0.451165563056 -0.103921994536 -644 12.88 -0.449091903193 -0.103444466836 -645 12.9 -0.447027765446 -0.102969779639 -646 12.92 -0.4449730932 -0.102497913489 -647 12.94 -0.442927830229 -0.102028849053 -648 12.96 -0.440891920688 -0.101562567122 -649 12.98 -0.438865309121 -0.101099048608 -650 13.0 -0.436847940448 -0.100638274548 -651 13.02 -0.434839759968 -0.100180226101 -652 13.04 -0.432840713358 -0.0997248845489 -653 13.06 -0.430850746664 -0.0992722312959 -654 13.08 -0.428869806307 -0.0988222478696 -655 13.1 -0.426897839073 -0.0983749159199 -656 13.12 -0.424934792115 -0.0979302172191 -657 13.14 -0.42298061295 -0.0974881336614 -658 13.16 -0.421035249454 -0.097048647263 -659 13.18 -0.419098649864 -0.0966117401617 -660 13.2 -0.417170762771 -0.0961773946166 -661 13.22 -0.41525153712 -0.0957455930079 -662 13.24 -0.413340922208 -0.0953163178365 -663 13.26 -0.411438867679 -0.0948895517235 -664 13.28 -0.409545323527 -0.0944652774101 -665 13.3 -0.407660240085 -0.0940434777572 -666 13.32 -0.405783568032 -0.0936241357448 -667 13.34 -0.403915258384 -0.0932072344716 -668 13.36 -0.402055262494 -0.0927927571548 -669 13.38 -0.400203532049 -0.0923806871294 -670 13.4 -0.39836001907 -0.091971007848 -671 13.42 -0.396524675907 -0.0915637028799 -672 13.44 -0.394697455235 -0.0911587559112 -673 13.46 -0.392878310058 -0.0907561507435 -674 13.48 -0.391067193701 -0.0903558712944 -675 13.5 -0.389264059808 -0.0899579015961 -676 13.52 -0.387468862344 -0.0895622257951 -677 13.54 -0.385681555589 -0.089168828152 -678 13.56 -0.383902094135 -0.0887776930406 -679 13.58 -0.382130432887 -0.0883888049474 -680 13.6 -0.380366527059 -0.088002148471 -681 13.62 -0.378610332173 -0.0876177083216 -682 13.64 -0.376861804052 -0.0872354693205 -683 13.66 -0.375120898826 -0.0868554163993 -684 13.68 -0.373387572922 -0.0864775345994 -685 13.7 -0.371661783067 -0.0861018090713 -686 13.72 -0.369943486282 -0.0857282250742 -687 13.74 -0.368232639885 -0.0853567679751 -688 13.76 -0.366529201481 -0.0849874232486 -689 13.78 -0.364833128968 -0.0846201764757 -690 13.8 -0.363144380531 -0.0842550133436 -691 13.82 -0.361462914638 -0.083891919645 -692 13.84 -0.359788690043 -0.0835308812773 -693 13.86 -0.358121665778 -0.0831718842421 -694 13.88 -0.356461801157 -0.0828149146446 -695 13.9 -0.354809055768 -0.0824599586927 -696 13.92 -0.353163389476 -0.0821070026966 -697 13.94 -0.351524762418 -0.0817560330682 -698 13.96 -0.349893135001 -0.0814070363201 -699 13.98 -0.348268467902 -0.0810599990654 -700 14.0 -0.346650722064 -0.0807149080166 -701 14.02 -0.345039858694 -0.0803717499853 -702 14.04 -0.343435839265 -0.0800305118814 -703 14.06 -0.341838625506 -0.0796911807123 -704 14.08 -0.340248179409 -0.0793537435825 -705 14.1 -0.338664463221 -0.079018187693 -706 14.12 -0.337087439445 -0.0786845003402 -707 14.14 -0.335517070835 -0.0783526689157 -708 14.16 -0.333953320399 -0.0780226809053 -709 14.18 -0.332396151392 -0.0776945238888 -710 14.2 -0.330845527319 -0.0773681855387 -711 14.22 -0.329301411928 -0.0770436536203 -712 14.24 -0.327763769212 -0.0767209159903 -713 14.26 -0.326232563407 -0.0763999605967 -714 14.28 -0.324707758986 -0.076080775478 -715 14.3 -0.323189320665 -0.0757633487623 -716 14.32 -0.321677213392 -0.075447668667 -717 14.34 -0.320171402352 -0.0751337234981 -718 14.36 -0.318671852963 -0.0748215016493 -719 14.38 -0.317178530874 -0.0745109916017 -720 14.4 -0.315691401963 -0.0742021819228 -721 14.42 -0.314210432337 -0.0738950612663 -722 14.44 -0.312735588328 -0.073589618371 -723 14.46 -0.311266836492 -0.0732858420606 -724 14.48 -0.309804143609 -0.0729837212427 -725 14.5 -0.308347476679 -0.0726832449085 -726 14.52 -0.306896802922 -0.0723844021319 -727 14.54 -0.305452089775 -0.072087182069 -728 14.56 -0.304013304893 -0.0717915739575 -729 14.58 -0.302580416142 -0.0714975671162 -730 14.6 -0.301153391604 -0.071205150944 -731 14.62 -0.29973219957 -0.0709143149198 -732 14.64 -0.298316808542 -0.0706250486013 -733 14.66 -0.29690718723 -0.0703373416252 -734 14.68 -0.29550330455 -0.0700511837056 -735 14.7 -0.294105129623 -0.0697665646344 -736 14.72 -0.292712631773 -0.06948347428 -737 14.74 -0.291325780527 -0.069201902587 -738 14.76 -0.289944545612 -0.0689218395755 -739 14.78 -0.288568896953 -0.0686432753407 -740 14.8 -0.287198804672 -0.068366200052 -741 14.82 -0.285834239089 -0.0680906039529 -742 14.84 -0.284475170717 -0.0678164773599 -743 14.86 -0.283121570262 -0.0675438106623 -744 14.88 -0.281773408622 -0.0672725943215 -745 14.9 -0.280430656883 -0.0670028188703 -746 14.92 -0.279093286324 -0.0667344749127 -747 14.94 -0.277761268406 -0.066467553123 -748 14.96 -0.276434574779 -0.0662020442454 -749 14.98 -0.275113177278 -0.0659379390934 -750 15.0 -0.273797047918 -0.0656752285492 -751 15.02 -0.272486158899 -0.0654139035635 -752 15.04 -0.271180482599 -0.0651539551544 -753 15.06 -0.269879991575 -0.0648953744073 -754 15.08 -0.268584658563 -0.0646381524742 -755 15.1 -0.267294456476 -0.0643822805732 -756 15.12 -0.266009358398 -0.064127749988 -757 15.14 -0.264729337592 -0.0638745520673 -758 15.16 -0.263454367489 -0.0636226782243 -759 15.18 -0.262184421693 -0.0633721199364 -760 15.2 -0.260919473977 -0.0631228687444 -761 15.22 -0.259659498285 -0.062874916252 -762 15.24 -0.258404468725 -0.0626282541256 -763 15.26 -0.257154359572 -0.0623828740934 -764 15.28 -0.255909145268 -0.0621387679452 -765 15.3 -0.254668800416 -0.061895927532 -766 15.32 -0.253433299783 -0.061654344765 -767 15.34 -0.252202618295 -0.0614140116156 -768 15.36 -0.250976731041 -0.0611749201148 -769 15.38 -0.249755613266 -0.0609370623526 -770 15.4 -0.248539240374 -0.0607004304776 -771 15.42 -0.247327587926 -0.0604650166966 -772 15.44 -0.246120631637 -0.0602308132741 -773 15.46 -0.244918347377 -0.0599978125317 -774 15.48 -0.243720711169 -0.0597660068478 -775 15.5 -0.242527699187 -0.0595353886571 -776 15.52 -0.241339287756 -0.05930595045 -777 15.54 -0.240155453352 -0.0590776847726 -778 15.56 -0.238976172597 -0.0588505842256 -779 15.58 -0.237801422264 -0.0586246414643 -780 15.6 -0.236631179269 -0.0583998491983 -781 15.62 -0.235465420674 -0.0581762001905 -782 15.64 -0.234304123687 -0.057953687257 -783 15.66 -0.233147265658 -0.057732303267 -784 15.68 -0.231994824078 -0.0575120411416 -785 15.7 -0.23084677658 -0.0572928938542 -786 15.72 -0.229703100938 -0.0570748544293 -787 15.74 -0.228563775063 -0.0568579159429 -788 15.76 -0.227428777006 -0.0566420715213 -789 15.78 -0.226298084954 -0.0564273143414 -790 15.8 -0.22517167723 -0.0562136376296 -791 15.82 -0.224049532291 -0.0560010346619 -792 15.84 -0.222931628729 -0.0557894987635 -793 15.86 -0.22181794527 -0.0555790233081 -794 15.88 -0.220708460771 -0.0553696017175 -795 15.9 -0.21960315422 -0.0551612274618 -796 15.92 -0.218502004734 -0.0549538940582 -797 15.94 -0.217404991561 -0.0547475950712 -798 15.96 -0.216312094077 -0.0545423241119 -799 15.98 -0.215223291785 -0.0543380748379 -800 16.0 -0.214138564315 -0.0541348409526 -801 16.02 -0.21305789142 -0.0539326162051 -802 16.04 -0.21198125298 -0.0537313943897 -803 16.06 -0.210908628999 -0.0535311693457 -804 16.08 -0.209839999602 -0.0533319349567 -805 16.1 -0.208775345037 -0.0531336851505 -806 16.12 -0.207714645672 -0.0529364138987 -807 16.14 -0.206657881997 -0.0527401152166 -808 16.16 -0.205605034619 -0.0525447831621 -809 16.18 -0.204556084266 -0.0523504118362 -810 16.2 -0.20351101178 -0.0521569953823 -811 16.22 -0.202469798123 -0.0519645279856 -812 16.24 -0.201432424372 -0.0517730038733 -813 16.26 -0.200398871718 -0.0515824173138 -814 16.28 -0.199369121467 -0.0513927626166 -815 16.3 -0.198343155039 -0.051204034132 -816 16.32 -0.197320953965 -0.0510162262506 -817 16.34 -0.196302499889 -0.050829333403 -818 16.36 -0.195287774565 -0.0506433500599 -819 16.38 -0.194276759859 -0.0504582707309 -820 16.4 -0.193269437746 -0.0502740899651 -821 16.42 -0.192265790306 -0.0500908023503 -822 16.44 -0.191265799733 -0.0499084025129 -823 16.46 -0.190269448323 -0.0497268851171 -824 16.48 -0.189276718481 -0.0495462448654 -825 16.5 -0.188287592716 -0.0493664764977 -826 16.52 -0.187302053643 -0.0491875747911 -827 16.54 -0.186320083981 -0.0490095345599 -828 16.56 -0.185341666552 -0.0488323506547 -829 16.58 -0.18436678428 -0.0486560179629 -830 16.6 -0.183395420192 -0.0484805314077 -831 16.62 -0.182427557417 -0.0483058859483 -832 16.64 -0.181463179181 -0.0481320765793 -833 16.66 -0.180502268813 -0.0479590983305 -834 16.68 -0.179544809739 -0.0477869462668 -835 16.7 -0.178590785487 -0.0476156154877 -836 16.72 -0.177640179677 -0.0474451011271 -837 16.74 -0.176692976031 -0.0472753983531 -838 16.76 -0.175749158364 -0.0471065023674 -839 16.78 -0.174808710589 -0.0469384084057 -840 16.8 -0.173871616713 -0.0467711117367 -841 16.82 -0.172937860836 -0.0466046076623 -842 16.84 -0.172007427154 -0.0464388915171 -843 16.86 -0.171080299953 -0.0462739586683 -844 16.88 -0.170156463616 -0.0461098045155 -845 16.9 -0.169235902612 -0.04594642449 -846 16.92 -0.168318601505 -0.0457838140552 -847 16.94 -0.167404544949 -0.0456219687059 -848 16.96 -0.166493717686 -0.0454608839681 -849 16.98 -0.165586104549 -0.0453005553988 -850 17.0 -0.164681690459 -0.045140978586 -851 17.02 -0.163780460423 -0.044982149148 -852 17.04 -0.162882399539 -0.0448240627335 -853 17.06 -0.161987492989 -0.0446667150213 -854 17.08 -0.161095726042 -0.0445101017198 -855 17.1 -0.160207084053 -0.0443542185673 -856 17.12 -0.15932155246 -0.0441990613312 -857 17.14 -0.158439116788 -0.0440446258081 -858 17.16 -0.157559762644 -0.0438909078236 -859 17.18 -0.156683475719 -0.0437379032318 -860 17.2 -0.155810241787 -0.0435856079154 -861 17.22 -0.154940046702 -0.0434340177851 -862 17.24 -0.154072876401 -0.0432831287799 -863 17.26 -0.153208716903 -0.0431329368663 -864 17.28 -0.152347554306 -0.0429834380385 -865 17.3 -0.151489374787 -0.0428346283181 -866 17.32 -0.150634164605 -0.0426865037537 -867 17.34 -0.149781910096 -0.0425390604208 -868 17.36 -0.148932597673 -0.0423922944219 -869 17.38 -0.148086213829 -0.0422462018856 -870 17.4 -0.147242745133 -0.0421007789672 -871 17.42 -0.146402178232 -0.0419560218477 -872 17.44 -0.145564499846 -0.0418119267343 -873 17.46 -0.144729696774 -0.0416684898597 -874 17.48 -0.143897755889 -0.0415257074823 -875 17.5 -0.143068664136 -0.0413835758856 -876 17.52 -0.142242408539 -0.0412420913782 -877 17.54 -0.141418976192 -0.0411012502937 -878 17.56 -0.140598354262 -0.0409610489904 -879 17.58 -0.139780529991 -0.0408214838511 -880 17.6 -0.138965490691 -0.040682551283 -881 17.62 -0.138153223746 -0.0405442477172 -882 17.64 -0.137343716613 -0.0404065696091 -883 17.66 -0.136536956816 -0.0402695134376 -884 17.68 -0.135732931952 -0.0401330757054 -885 17.7 -0.134931629688 -0.0399972529384 -886 17.72 -0.134133037758 -0.0398620416858 -887 17.74 -0.133337143966 -0.0397274385201 -888 17.76 -0.132543936186 -0.0395934400363 -889 17.78 -0.131753402356 -0.0394600428522 -890 17.8 -0.130965530486 -0.0393272436083 -891 17.82 -0.130180308648 -0.0391950389674 -892 17.84 -0.129397724985 -0.0390634256142 -893 17.86 -0.128617767704 -0.0389324002559 -894 17.88 -0.127840425077 -0.0388019596211 -895 17.9 -0.127065685442 -0.0386721004602 -896 17.92 -0.126293537203 -0.0385428195454 -897 17.94 -0.125523968827 -0.0384141136698 -898 17.96 -0.124756968844 -0.038285979648 -899 17.98 -0.12399252585 -0.0381584143155 -900 18.0 -0.123230628501 -0.0380314145287 -901 18.02 -0.122471265519 -0.0379049771648 -902 18.04 -0.121714425686 -0.0377790991214 -903 18.06 -0.120960097846 -0.0376537773164 -904 18.08 -0.120208270905 -0.0375290086883 -905 18.1 -0.119458933831 -0.0374047901954 -906 18.12 -0.11871207565 -0.0372811188161 -907 18.14 -0.117967685451 -0.0371579915483 -908 18.16 -0.117225752381 -0.0370354054099 -909 18.18 -0.116486265647 -0.0369133574381 -910 18.2 -0.115749214515 -0.0367918446895 -911 18.22 -0.11501458831 -0.0366708642398 -912 18.24 -0.114282376416 -0.0365504131839 -913 18.26 -0.113552568273 -0.0364304886354 -914 18.28 -0.11282515338 -0.0363110877269 -915 18.3 -0.112100121292 -0.0361922076096 -916 18.32 -0.111377461622 -0.0360738454529 -917 18.34 -0.110657164039 -0.0359559984449 -918 18.36 -0.109939218269 -0.0358386637917 -919 18.38 -0.109223614091 -0.0357218387177 -920 18.4 -0.108510341341 -0.0356055204649 -921 18.42 -0.107799389911 -0.0354897062933 -922 18.44 -0.107090749747 -0.0353743934808 -923 18.46 -0.106384410848 -0.0352595793223 -924 18.48 -0.105680363268 -0.0351452611307 -925 18.5 -0.104978597114 -0.0350314362357 -926 18.52 -0.104279102547 -0.0349181019845 -927 18.54 -0.103581869781 -0.0348052557411 -928 18.56 -0.102886889082 -0.0346928948865 -929 18.58 -0.102194150767 -0.0345810168186 -930 18.6 -0.101503645208 -0.0344696189517 -931 18.62 -0.100815362825 -0.0343586987167 -932 18.64 -0.100129294092 -0.0342482535611 -933 18.66 -0.0994454295322 -0.0341382809484 -934 18.68 -0.0987637597204 -0.0340287783585 -935 18.7 -0.0980842752811 -0.0339197432873 -936 18.72 -0.0974069668887 -0.0338111732465 -937 18.74 -0.0967318252675 -0.0337030657637 -938 18.76 -0.0960588411908 -0.0335954183822 -939 18.78 -0.0953880054812 -0.0334882286609 -940 18.8 -0.0947193090095 -0.0333814941741 -941 18.82 -0.0940527426954 -0.0332752125115 -942 18.84 -0.0933882975062 -0.0331693812782 -943 18.86 -0.0927259644573 -0.033063998094 -944 18.88 -0.0920657346112 -0.0329590605941 -945 18.9 -0.0914075990779 -0.0328545664286 -946 18.92 -0.0907515490141 -0.0327505132621 -947 18.94 -0.0900975756229 -0.0326468987742 -948 18.96 -0.089445670154 -0.032543720659 -949 18.98 -0.0887958239027 -0.0324409766249 -950 19.0 -0.0881480282103 -0.032338664395 -951 19.02 -0.0875022744633 -0.0322367817064 -952 19.04 -0.0868585540934 -0.0321353263106 -953 19.06 -0.0862168585771 -0.0320342959728 -954 19.08 -0.0855771794356 -0.0319336884725 -955 19.1 -0.084939508234 -0.0318335016031 -956 19.12 -0.0843038365819 -0.0317337331714 -957 19.14 -0.0836701561321 -0.0316343809981 -958 19.16 -0.0830384585813 -0.0315354429176 -959 19.18 -0.0824087356692 -0.0314369167774 -960 19.2 -0.0817809791782 -0.0313388004388 -961 19.22 -0.0811551809338 -0.031241091776 -962 19.24 -0.0805313328034 -0.0311437886765 -963 19.26 -0.079909426697 -0.031046889041 -964 19.28 -0.079289454566 -0.030950390783 -965 19.3 -0.0786714084036 -0.0308542918291 -966 19.32 -0.0780552802445 -0.0307585901186 -967 19.34 -0.0774410621642 -0.0306632836034 -968 19.36 -0.0768287462793 -0.0305683702482 -969 19.38 -0.0762183247467 -0.0304738480301 -970 19.4 -0.0756097897639 -0.0303797149388 -971 19.42 -0.0750031335683 -0.0302859689762 -972 19.44 -0.0743983484373 -0.0301926081566 -973 19.46 -0.0737954266876 -0.0300996305063 -974 19.48 -0.0731943606756 -0.0300070340638 -975 19.5 -0.0725951427967 -0.0299148168796 -976 19.52 -0.071997765485 -0.0298229770161 -977 19.54 -0.0714022212134 -0.0297315125477 -978 19.56 -0.0708085024932 -0.0296404215602 -979 19.58 -0.0702166018738 -0.0295497021514 -980 19.6 -0.0696265119425 -0.0294593524306 -981 19.62 -0.0690382253245 -0.0293693705184 -982 19.64 -0.0684517346822 -0.0292797545471 -983 19.66 -0.0678670327154 -0.0291905026603 -984 19.68 -0.0672841121609 -0.0291016130126 -985 19.7 -0.0667029657922 -0.0290130837702 -986 19.72 -0.0661235864195 -0.02892491311 -987 19.74 -0.0655459668893 -0.0288370992202 -988 19.76 -0.0649701000843 -0.0287496402998 -989 19.78 -0.0643959789228 -0.0286625345588 -990 19.8 -0.0638235963592 -0.028575780218 -991 19.82 -0.0632529453832 -0.0284893755087 -992 19.84 -0.0626840190197 -0.0284033186731 -993 19.86 -0.0621168103288 -0.0283176079638 -994 19.88 -0.0615513124053 -0.0282322416441 -995 19.9 -0.0609875183786 -0.0281472179874 -996 19.92 -0.0604254214128 -0.0280625352778 -997 19.94 -0.0598650147059 -0.0279781918096 -998 19.96 -0.0593062914901 -0.027894185887 -999 19.98 -0.0587492450313 -0.0278105158248 -1000 20.0 -0.0581938686292 -0.0277271799475 -1001 20.02 -0.0576401556166 -0.0276441765898 -1002 20.04 -0.0570880993599 -0.0275615040963 -1003 20.06 -0.056537693258 -0.0274791608214 -1004 20.08 -0.0559889307431 -0.0273971451294 -1005 20.1 -0.0554418052798 -0.0273154553941 -1006 20.12 -0.0548963103651 -0.0272340899992 -1007 20.14 -0.0543524395283 -0.0271530473379 -1008 20.16 -0.0538101863307 -0.027072325813 -1009 20.18 -0.0532695443654 -0.0269919238365 -1010 20.2 -0.0527305072574 -0.0269118398301 -1011 20.22 -0.0521930686629 -0.0268320722247 -1012 20.24 -0.0516572222695 -0.0267526194605 -1013 20.26 -0.0511229617959 -0.0266734799867 -1014 20.28 -0.0505902809917 -0.0265946522621 -1015 20.3 -0.0500591736373 -0.026516134754 -1016 20.32 -0.0495296335436 -0.0264379259393 -1017 20.34 -0.0490016545518 -0.0263600243033 -1018 20.36 -0.0484752305336 -0.0262824283405 -1019 20.38 -0.0479503553904 -0.0262051365543 -1020 20.4 -0.0474270230535 -0.0261281474567 -1021 20.42 -0.0469052274841 -0.0260514595684 -1022 20.44 -0.0463849626725 -0.0259750714189 -1023 20.46 -0.0458662226388 -0.0258989815462 -1024 20.48 -0.0453490014319 -0.0258231884968 -1025 20.5 -0.0448332931297 -0.0257476908257 -1026 20.52 -0.0443190918392 -0.0256724870964 -1027 20.54 -0.0438063916958 -0.0255975758806 -1028 20.56 -0.0432951868634 -0.0255229557586 -1029 20.58 -0.0427854715342 -0.0254486253186 -1030 20.6 -0.0422772399288 -0.0253745831572 -1031 20.62 -0.0417704862954 -0.0253008278792 -1032 20.64 -0.0412652049103 -0.0252273580972 -1033 20.66 -0.0407613900774 -0.0251541724321 -1034 20.68 -0.040259036128 -0.0250812695126 -1035 20.7 -0.039758137421 -0.0250086479756 -1036 20.72 -0.0392586883422 -0.0249363064654 -1037 20.74 -0.0387606833045 -0.0248642436347 -1038 20.76 -0.0382641167479 -0.0247924581434 -1039 20.78 -0.0377689831387 -0.0247209486595 -1040 20.8 -0.0372752769703 -0.0246497138585 -1041 20.82 -0.036782992762 -0.0245787524235 -1042 20.84 -0.0362921250596 -0.0245080630453 -1043 20.86 -0.0358026684351 -0.0244376444219 -1044 20.88 -0.0353146174863 -0.0243674952592 -1045 20.9 -0.0348279668369 -0.0242976142701 -1046 20.92 -0.0343427111362 -0.0242280001751 -1047 20.94 -0.0338588450591 -0.0241586517019 -1048 20.96 -0.0333763633058 -0.0240895675856 -1049 20.98 -0.0328952606017 -0.0240207465683 -1050 21.0 -0.0324155316974 -0.0239521873994 -1051 21.02 -0.0319371713684 -0.0238838888354 -1052 21.04 -0.0314601744149 -0.0238158496399 -1053 21.06 -0.0309845356618 -0.0237480685835 -1054 21.08 -0.0305102499587 -0.0236805444437 -1055 21.1 -0.0300373121794 -0.0236132760051 -1056 21.12 -0.0295657172219 -0.023546262059 -1057 21.14 -0.0290954600085 -0.0234795014037 -1058 21.16 -0.0286265354851 -0.0234129928442 -1059 21.18 -0.028158938622 -0.0233467351922 -1060 21.2 -0.0276926644126 -0.0232807272662 -1061 21.22 -0.0272277078743 -0.0232149678915 -1062 21.24 -0.0267640640477 -0.0231494558997 -1063 21.26 -0.0263017279969 -0.0230841901292 -1064 21.28 -0.0258406948088 -0.0230191694249 -1065 21.3 -0.0253809595937 -0.0229543926381 -1066 21.32 -0.0249225174848 -0.0228898586266 -1067 21.34 -0.0244653636377 -0.0228255662547 -1068 21.36 -0.0240094932312 -0.0227615143929 -1069 21.38 -0.0235549014661 -0.0226977019182 -1070 21.4 -0.023101583566 -0.0226341277136 -1071 21.42 -0.0226495347765 -0.0225707906687 -1072 21.44 -0.0221987503655 -0.0225076896791 -1073 21.46 -0.021749225623 -0.0224448236465 -1074 21.48 -0.0213009558606 -0.0223821914788 -1075 21.5 -0.020853936412 -0.02231979209 -1076 21.52 -0.0204081626323 -0.0222576244002 -1077 21.54 -0.0199636298985 -0.0221956873354 -1078 21.56 -0.0195203336085 -0.0221339798275 -1079 21.58 -0.0190782691821 -0.0220725008144 -1080 21.6 -0.0186374320597 -0.02201124924 -1081 21.62 -0.0181978177032 -0.0219502240539 -1082 21.64 -0.0177594215953 -0.0218894242115 -1083 21.66 -0.0173222392394 -0.0218288486741 -1084 21.68 -0.0168862661598 -0.0217684964086 -1085 21.7 -0.0164514979014 -0.0217083663878 -1086 21.72 -0.0160179300295 -0.0216484575898 -1087 21.74 -0.0155855581298 -0.0215887689986 -1088 21.76 -0.0151543778082 -0.0215292996039 -1089 21.78 -0.014724384691 -0.0214700484006 -1090 21.8 -0.0142955744243 -0.0214110143895 -1091 21.82 -0.0138679426741 -0.0213521965765 -1092 21.84 -0.0134414851265 -0.0212935939733 -1093 21.86 -0.013016197487 -0.0212352055967 -1094 21.88 -0.0125920754809 -0.0211770304692 -1095 21.9 -0.012169114853 -0.0211190676184 -1096 21.92 -0.0117473113675 -0.0210613160772 -1097 21.94 -0.0113266608076 -0.021003774884 -1098 21.96 -0.0109071589762 -0.0209464430823 -1099 21.98 -0.0104888016947 -0.0208893197208 -1100 22.0 -0.010071584804 -0.0208324038534 -1101 22.02 -0.00965550416359 -0.0207756945391 -1102 22.04 -0.0092405556517 -0.020719190842 -1103 22.06 -0.00882673516534 -0.0206628918315 -1104 22.08 -0.00841403862003 -0.0206067965819 -1105 22.1 -0.0080024619498 -0.0205509041723 -1106 22.12 -0.00759200110698 -0.0204952136871 -1107 22.14 -0.00718265206222 -0.0204397242155 -1108 22.16 -0.00677441080431 -0.0203844348517 -1109 22.18 -0.00636727334011 -0.0203293446947 -1110 22.2 -0.00596123569445 -0.0202744528484 -1111 22.22 -0.00555629391005 -0.0202197584216 -1112 22.24 -0.00515244404737 -0.0201652605278 -1113 22.26 -0.00474968218459 -0.0201109582853 -1114 22.28 -0.00434800441746 -0.0200568508172 -1115 22.3 -0.00394740685922 -0.0200029372512 -1116 22.32 -0.00354788564052 -0.0199492167196 -1117 22.34 -0.0031494369093 -0.0198956883597 -1118 22.36 -0.00275205683071 -0.0198423513132 -1119 22.38 -0.00235574158704 -0.0197892047262 -1120 22.4 -0.00196048737759 -0.0197362477497 -1121 22.42 -0.00156629041861 -0.0196834795391 -1122 22.44 -0.00117314694319 -0.0196308992543 -1123 22.46 -0.000781053201174 -0.0195785060596 -1124 22.48 -0.000390005459079 -0.019526299124 -1125 22.5 0.0 -0.0194742776206 -1126 22.52 0.0 0.0 -1127 22.54 0.0 0.0 -1128 22.56 0.0 0.0 -1129 22.58 0.0 0.0 -1130 22.6 0.0 0.0 diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.min b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.min deleted file mode 100644 index 6cbb92ad86..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.min +++ /dev/null @@ -1,28 +0,0 @@ -# -- Init section -- - -include system.in.init - -# -- Atom definition section -- - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# Optional: Make sure the pairwise energies look reasonable: -#pair_write 2 2 1001 r 2.6 16.0 test_tail-tail.dat t-t 0 0 -#pair_write 2 3 1001 r 2.6 16.0 test_tail-head.dat t-h 0 0 -#pair_write 1 2 1001 r 2.6 16.0 test_int-tail.dat i-t 0 0 -#pair_write 1 1 2573 r 2.6 16.0 test_int-int.dat i-i 0 0 -#pair_write 1 3 1001 r 2.6 16.0 test_int-head.dat i-h 0 0 -#pair_write 3 3 1001 r 2.6 16.0 test_head-head.dat h-h 0 0 - - -# -- Run section -- - -dump 1 all custom 50 traj_min.lammpstrj id mol type x y z ix iy iz - -minimize 1.0e-5 1.0e-7 500 2000 - -write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.npt b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.npt deleted file mode 100644 index ab37d34b39..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.npt +++ /dev/null @@ -1,57 +0,0 @@ -# -------- REQUIREMENTS: --------- -# 1) This example may require additional features and bug fixes for LAMMPS. -# Be sure to download and copy the "additional_lammps_code" from -# http://moltemplate.org (upper-left corner menu) -# 2) Unpack it -# 3) copy the .cpp and .h files to the src folding of your lammps installation. -# 4) Compile LAMMPS. -# -# (If LAMMPS complains about an "Invalid pair_style" -# then you made a mistake in the instructions above.) -# - -# -- Init Section -- - -include system.in.init - -# -- Atom Definition Section -- - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run Section -- - - -timestep 6.0 # The time-step in Watson et. al 2011 was 0.002*3ps = 6fs -dump 1 all custom 5000 traj_npt.lammpstrj id mol type x y z ix iy iz - - -thermo_style custom step temp pe etotal vol epair ebond eangle -thermo 1000 # time interval for printing out "thermo" data - - -fix fxlan all langevin 300.0 300.0 120 48279 -fix fxnph all nph x 0 0 1000 y 0 0 1000 couple xy - - -# Note: The temperature 300.0 K corresponds to 0.907033536873*epsilon -# for the "epsilon" used by the coarse-grained lipid. -# Note: The langevin damping parameter "120" corresponds to -# the 0.12ps damping time used in Watson et. al JCP 2011. -# Note: We maintain the system system at constant (zero) tention -# using a barostat damping parameter Pdamp=1000 ("0 0 1000") - - -# optional (not sure if this helps): -# balance x uniform y uniform - - -#restart 1000000 - -run 2000000 - -write_data system_after_npt.data - diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.nvt b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.nvt deleted file mode 100644 index 63d4cde4a1..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.nvt +++ /dev/null @@ -1,45 +0,0 @@ -# ------------------------------- Initialization Section -------------------- - -include system.in.init - -# ------------------------------- Atom Definition Section ------------------- - - -# Normally, I would minimize the system and equilibrate the system at constant -# pressure and temperature beforehand. If you run lammps with "run.in.npt", -# it will generate a data file "system_after_npt.data" with reasonable -# coordinates at that temperature and pressure. Then we could load it now: -# -#read_data system_after_npt.data - -read_data system.data - -# ------------------------------- Settings Section -------------------------- - -include system.in.settings - -# ------------------------------- Run Section ------------------------------- - - -timestep 6.0 # The time-step in Watson et. al 2011 was 0.002*3ps = 6fs -dump 1 all custom 5000 traj_nvt.lammpstrj id mol type x y z ix iy iz - - -thermo_style custom step temp pe etotal vol epair ebond eangle -thermo 1000 # time interval for printing out "thermo" data - - -fix fxlan all langevin 300.0 300.0 120 48279 -fix fxnve all nve - -# Note: The energy scale "epsilon" = 2.75kJ/mole = 330.7485200981 Kelvin*kB. -# So a temperature of 300.0 Kelvin corresponds to 0.907033536873*epsilon. -# Note: The langevin damping parameter "120" corresponds to -# the 0.12ps damping time used in Watson et. al JCP 2011. - -#restart 1000000 - -run 1000000 - -write_data system_after_nvt.data - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/README.TXT deleted file mode 100644 index 31abcd66ef..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/README.TXT +++ /dev/null @@ -1,33 +0,0 @@ -# This directory contains examples of how to run a short simulation of a -# coarse-grained protein-like polymer, folding in the presence and absence of -# a chaperone (modeled as an attractive or repulsie spherical shell). -# -# The protein models and the chaperone models are described and used here: -# AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) -# (http://www.pnas.org/content/101/36/13192) -# ...and also here: -# AI Jewett and J-E Shea, J. Mol. Biol, Vol 363(5), (2006) -# -# (In the "frustrated+minichaperone" directory, the protein is -# placed outside the chaperone sphere, as opposed to inside.) -# -# -------- REQUIREMENTS: --------- -# 1) These examples require the "USER-MISC" package. (Use "make yes-USER-MISC") -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# 2) They also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from -# http://moltemplate.org (upper-left corner menu) -# 3) Unpack it -# 4) copy the .cpp and .h files to the src folding of your lammps installation. -# 5) Compile LAMMPS. -# - -------------- -Instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files in each directory. - -step 1) -README_setup.sh - -step2) -README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.TXT deleted file mode 100644 index a52f73ff7b..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.TXT +++ /dev/null @@ -1,32 +0,0 @@ -# This directory demonstrates how to run a long simulation of -# the "frustrated" coarse-grained protein confined in a frustrated -# coarse-grained chaperonin (R=6, h=0.475) as described in: -# AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) -# (http://www.pnas.org/content/101/36/13192) -# -# Note: If you want to use a "hydrophilic" chaperone (with h=0.0 -# instead of h=0.475), then replace the word "CHAP_INTERIOR_H0.475" -# (at the end of "system.lt") with "CHAP_INTERIOR_H0" -# -# Because this process takes a long time (even with the help of the chaperone) -# I save the data relatively infrequently. -# -# -------- REQUIREMENTS: --------- -# 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# 2) It also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from -# http://moltemplate.org (upper-left corner menu) -# 3) Unpack it -# 4) copy the .cpp and .h files to the src folding of your lammps installation. -# 5) Compile LAMMPS. - -------------- -Instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step2) -README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_run.sh b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_run.sh deleted file mode 100755 index d5ae1fe5a3..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_run.sh +++ /dev/null @@ -1,31 +0,0 @@ -# You would probably run lammps this way: -# -# lmp_ubuntu -i run.in.nvt - -# The files "run.in.min", and "run.in.nvt" are LAMMPS input scripts which refer -# to the input scripts & data files you created earlier when you ran moltemplate -# system.in.init, system.in.settings, system.data - - - - -# ----------------------------------- - - - -LAMMPS_COMMAND="lmp_mpi" - -# Here "$LAMMPS_BINARY" is the name of the command you use to invoke lammps -# (such as lmp_ubuntu, lmp_mac_mpi, lmp_cygwin etc...). Change if necessary. - -# Run lammps using the following 3 commands: - -"$LAMMPS_COMMAND" -i run.in.min # minimize (OPTIONAL) -"$LAMMPS_COMMAND" -i run.in.nvt # production run - -# Alternately, if you have MPI installed, try something like this: - -#NUMPROCS=4 -#mpirun -np $NUMPROCS "$LAMMPS_COMMAND" -i run.in.min # minimize (OPTIONAL) -#mpirun -np $NUMPROCS "$LAMMPS_COMMAND" -i run.in.nvt # production run - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh deleted file mode 100755 index df49f4384f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh +++ /dev/null @@ -1,24 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh -overlay-dihedrals system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - cp -r table*.dat ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index 9e34246f8e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,86 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 28 !NATOM - 1 1 2 2 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 1 1 0.000000 1.0000 0 - 5 1 2 2 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 3 3 0.000000 1.0000 0 - 8 1 3 3 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 2 2 0.000000 1.0000 0 - 11 1 1 1 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 2 2 0.000000 1.0000 0 - 15 1 3 3 0.000000 1.0000 0 - 16 1 3 3 0.000000 1.0000 0 - 17 1 3 3 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 1 1 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 2 2 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 1 1 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 2 2 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - 28 2 4 4 0.000000 100.0000 0 - - 26 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 17 - 17 18 18 19 19 20 20 21 - 21 22 22 23 23 24 24 25 - 25 26 26 27 - - 25 !NTHETA: angles - 13 14 15 7 8 9 6 7 8 - 16 17 18 15 16 17 2 3 4 - 4 5 6 9 10 11 11 12 13 - 14 15 16 1 2 3 3 4 5 - 10 11 12 12 13 14 25 26 27 - 5 6 7 8 9 10 17 18 19 - 18 19 20 22 23 24 21 22 23 - 19 20 21 20 21 22 23 24 25 - 24 25 26 - - 19 !NPHI: dihedrals - 1 2 3 4 2 3 4 5 - 3 4 5 6 4 5 6 7 - 8 9 10 11 9 10 11 12 - 10 11 12 13 11 12 13 14 - 12 13 14 15 15 16 17 18 - 16 17 18 19 17 18 19 20 - 18 19 20 21 19 20 21 22 - 20 21 22 23 21 22 23 24 - 22 23 24 25 23 24 25 26 - 24 25 26 27 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/misfolded+chaperonin_t=0tau_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/misfolded+chaperonin_t=0tau_LR.jpg deleted file mode 100644 index 31853cd5ad4b73c6abc2ea24708765e41cb7b68b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15784 zcmex=5)qQ(EM(w4>8KI)O?#ff9)oFS!J!&|1gagXcBigNvT;A6wez;4Oh}I1 z%k9?3kG%Zicxm3ZW0zjaT-&ap_-q<-Gx}@8$8HLwHIM!du{H#6YT9T+m^Ul?) z)aLZ=ai5&;>crO?dgN6a|GSW4ulHZq^DsXxed>Fp#?Sx3aZmBZoc2LmRZ1P-o}Xhl zYp#5}wtL2{Yjq8xoobdHr{7<{CjXzIdjHvkg{rMxNGl>r8!9#uZ0>^`aJv_rX^4n_{=9v$CjTG6(m5K7!>$9eJM8v#fs^1eFzxwfx{|sfXXM9@8 zbi&$KP1`-@U6j?T%DMZsRapK^i+VU)z^z5P`DWD@$<3mN=kSCUdEHwx<8$-pD>Ynv zJ6e}KyyMw<_UX~gxzg>An{Tl{D3v$bwu>jKUpU>A)h9S2rfqkC&9R4UQ35SYL?X}B z6vJJf^KRTYSZ;aj0Kd`JH3#QweCVslcpDjFvN`sR!O!_G?7HVA{rFmDscxodJnul> zjoFK(U)Zm_%J#MAqtc}5^K8`2Lr?LxwBPKJ`+NTK)l7+X$wv&APmZ;ob8e#X&4eGk z|ID?|II&5!YOytXF>*LDdb@`*#2SHE96r)_Ss46IIaj}0>cO(0cjAi~d?%Yr9j0kK zwevb~?xDZxe}*59;ac5tr`|a&IG!S^-W7gOIi>M^@7wP&$0Pc?CS6&&!mLKw{@TT& z;~kBW92a)HRFKK6OndXVGj zcxS@SbL{h9W&BJ!I_uR6w|NTxlR5jlO)M_uyB@NiB*D z_>exkaoVYzz2cgGzeeBkDd?M*_r^X%Zk}pa&_k1R^95#3bTiv|_4o!^uV*{E?Lw1f zE?g`Q3X*PO{PsjHefff4>-oiwX?@(a*iKQidh64Si)&avbrSuLW!N%a+hX?jbTxnF1bZl}}dA{B*_k z(`m)s^F9|neio`%Slm6&dyel(wI@?fu;jHWm+-VGGO(U1<(1NOP~cw4ylV=BSP-L@ zbM;C`hDZ?MpT2NWh;O^#Z)FzVWZX{Is9G?GK# zWHD}B9W6hp%rNf6g&?I*L5V-sER@RUW#e8LvQPBIjH~{g?9)}eNk=@%0!DR^fsBHPF<&UYm9W0YG+ppBh* zf46^?x4Uu zMUCl%ss{)2t^~b?tydaT6(T*v@3JtK9EkLqV7;J0e^Y`^t3rGU>-tR-be5+olshn9 zSfE}IL)&S3 zMs0|~x1wvwv-Pij=054G$dvJCcfaY?ms*e3E$gdt?^K$)J-a<%N8anylRFnY*y=QI zyLaB*HcJnQnOWYnilvhnbE+i#(EK}tZb~KGm-kH?8-S*@Q_L)|C znmvy`Kc3ODwKV-!<>tuhj@uU(R^M?rGk@zx{#`*k{$A@nBE&bzbE92z;;XP_P0?44 z!oK=6Fo&Fy-Wk;7_Hxoz3vmq-6}UwD^&1H4q+n)7$Y zInLG}CYy?`h2CAW?M?op^681MpKQxaO)=c(86$DbWal|`2ezk$JSThY<&QpJU1%q1 zvti3WG2Z=WeoksWn|CW?sdl;M1n;V4URO@2?$!*rUux{OLV{b3>7awuGNz|2jVWhk zL-OV_m}*{OOgRuA!ob1;;tHMo&}^^eE5b|`>|GbO^|a*D2-%x#-f_$4)L)Ev z_;Tm@S=`;1EPt;${d-CA1@Aj6s;BIHHGL5Ld1+E(dd|OZP8h6fkf2ZJB;s=Y) z)wQ3j+{}N@wbk31^|jc~sPIhLvL)8D3^)3f$COF7WF8b~xecN?)+B=P>IX!ZBj`jo{4meo9%dIBzeE!{S@5JBb*j&g} zs1YvusXy)GIg2ElxN{~y`1~dd9QY97UH2j8p~zQ#TbXA&ZZ-(MX;%;i~MeVW3>UUGZo({~|_xf3`WcX*fTzG^)9epf>E68A;imVd5H z?|T?pd{^e$tENL=T3>QcnqCv&J!f_CgqYRE`#cnny;?5)C)na|kns9NTzAStcP}c> znRr(~@y?Pk>ynnNru`wi)vbRmDf_oVVK&RE*i9{Reep-``v$wA2eq=2{c5# zt2w$q<>{%W`;V^HJ+du(#`gRP|HT~dX@%Y*rWQv`e9AYv%NsZRd4E0rL*r)+lLdOU z!Wwxe8+JM>MEbq(xzH5SnCsP`7u;CXa8gyoG zD@^$oz`9lQfTKc*AL|u{IsB7&e4<5{9@ucI$60jhhM=I$^TKy8__t&>gViLaPb&)F zcnhBPKfZWL)2xZ_c$YN=#i~rV5*Kigig)1p@Z)uR$n_8Bg-mpeYA;1-rT0jSyUMIB zKL5i(|33qNwQf*)R*$s-`vb9eP|c)t_&Q(DP#HNmcjH zCO@82y84)5r{;$L3__mmnnxLsX6X^2S0SAtUQ`=m*ePa{(H+4 zi*s&D#4gs!d7ohR+T*w3aXa3gYY!tfCoWlY=#|RSxf6Tib@Frz*tZ`08`dnQow~hj z;-2N%raMYzq?={l+VHwYxlKo1XU>irk^XkkGrz3wU3c+JaraFH>6-_S*B`kaox1x| zCF`Td7BLZeY0dIWa~i_gE`=Mm6zyDB{_dXRtLw7AOy7OconKt4&cCTnb4Fp9O7Pmc{`zE(~{hAy4-Fe@;7q=Js+U?u6P4f5VE$=`7^uGDjw#m}d zjIritQ~I6vvyALCXFWR_?fgCA{O+Kj%f}y@&kNi3e1_0#_By4q&*o1ocN;y^xg2d= z?3cK9RqOYE?;rgrXuRQe+x%tmwbx6Nem$0YloxrR`DmD?zsZ^%A2Rv-KDqm+J&+F) z*Et(gy6Q~DQ8C7;ny)@=3#~2{on*TxSW<<}g!|Lv#kUw*1ww!8OZZ0P!? ziFZ2hS(g6%ciZm4VFRxmdHqe9snzN^iSOp@d$)JH%KMMrlRukSu4emvhcA0R&-vwZ z%oD!Jzv7Plr~0W(`&;+X&1sTslFggeW$iln(AnExdalYlTZs#L?|$hosZgDqy~&+F zBjYop{MJ|Zew}e#c%b9ygck?g=ACAi@=y`F;hylleaT zy~MX$N#(z9fBpWi(tNMgif3;Y%$~C3TZq4_r|qTbiiF%I;spT6j}=JLlaU9`8CtZ@2Wln0qpI6HAeM&YbR+yO|4&ro$g^nrr)l%`8jZVQ@MINrOkp}@u=X@;w6fWpj0tk?eB zwtmHR&XKPm+p~~?vB=-`z{jf3U5}=Qru}EQr&@gUJMX^cr>QqSPc6NH5bMBsU|)v{-^v34te3YaOxqf9Vd2`att%K#cgs57KU);@_*>M; zpL@3|NgCFOgv1`Qv0HZ0@Y%l$$%h-{Pw8CTz*zdtH0GNA?4WJ0`DcgeUX!2wC-k@7 zGd+&*gP|R!Gp4cY%-NVU<-mOwqgt&B>?F#;!m7t=RVNL-xq-SMRrd zcw-V-m$TwnVyKa4pfvYg?|^TOj|}$go^X4$HBtkj^8yO#HZFHS=R#<(Yji9^MZ9d|y7RPxVmD zS@+JM9~RGeRc$UBSUsQq-f;8rp4)eyR5xDso=_#4e#rQo&6F9>*@-g(mtnt{q)Dm`ZSAq%bnLQ@%g^{v*?U3 z_owcC{AFf;#Lp##ZR@q3ocv&U>xboxS5+PJxMQVn{*kYkOw3 zIZN8?d0%*YB|}#Dt1``rMej_bzn@8FJh*z*uk*o}q8 zMmjth$$zTWuvu`VEc#yGe8P2i$IsH848PY#_5?<5aXEd{)O@eu*_G1&*6KIOr|+`4 z-FhK;=c)A)s}C-l6xQd?6)``F*<$B?3Tk?hfGt7J{-#+Kl zr(oBH#2K+ZQzi0b9X$gLlsprbrQ}ywP4E!6YMs8V>p5$5`^DhxU6=Ca^akZL`n{AX z-IOr7MBvea*(|bGEEa_94OZb$yuGB{<@h}<*-b3vyF%2gRUJCb{5J*fbeOGj)AG&| z>nQ@hO`+<+FBY?Y`*M3mJdHRtY`~Df#|w*_?fM4@a-Rdazh@*TL+z3%I8|h*>Z} z$JFm)%7U2XdH*^j__~hu|5VNRwOUHRI{IeRu_YPd1`1`SamSV>*Z&OPxI(h$-K5<- z%Z{!{UwmX?s;jO~nq^Ym`OG`za=X7p>Ll&$ar}JyV@!F&&Q}uJS?X&}TTGdMC+i;n z=9PaBpWAoa;c{N$3hBnnpUqfj5AMzvzP)_0V~uNaM$OSA<=mZiIgi4>J#M(!`LoD#UZ&O~<4e{@ zGS!Sc6lODcSl`}pA@20tgdNYcU1zT_7L9c%Q*;iv`La>v8XI+t(jn`f;&s zc;Rg$KclxYQ~3`m&KH!ls@nhtQ6sxB@PSISf5+0ZCxSymmld`~;i;@A8vT_aXJV_(T{ z$&Zp#EAuvMKK{xi^~!6yf1A7Ze}-BTorzkIVtJi7Q%3@_KOz>lj|=k9rXaqaPY z@7(Lx_wQ~`KeIFZu+O1CkEcdGZVmO4?Frnt?1IJI^!!gdejmCepPf`$6(-sfke(p46_7&RATW|k1pZDmp{-u{Q zy8SN4TYi}F^*_V9-MrC@{+?6tn7ZzXkl4*lW#&u=zHG0Z=G=7IV*imGb+y!!nb|7I zSxb7huGwF!U-~ZPjZ;ptM#9vqjfbkv*l{j-erLLY^!(_%uGe2?cPV{+y1(i6ra#Gn zYu0{v_S~f7*S)$zyN%BuKlw68G`(nT!QMYt^X_Op+Zy3v7AAW&IfZ*yc-{jljV zG(&dZ)e=zr-qoJ7+J(OVOc6f#xMEJxVzot;DXU-6O{hKUuuwlwR}X=dTuq z&RT8hdz)V+Ir`1T`jy%TGUBGC)c4LPRG(aZ)r0-OggsA~5_A?WdO3mfz*TMckhih{ z#^su~rtVggV&S{HZszXzU4aYyOgJPL8oP%wJIu%sFfQ9)njodZyl4Y&fOYwoFcYm? zdbXiwIdl?!uD&6v6TaE0>BXUwy}KiW4yI0)*u|Zke=zZx&Oz^~A7*B+KKrwFMq=i- z=M$PwOS6Yd*DZO$_387qvZW_1_}_BfxErW**=*jVnQg}^W2?>nGBBP~-|V|Chks^M z!qk}yuS7h{oI2UpU*5#zV$+F4^`NLr{#!TfRJp-w?YVf){exCF+X0n{&Otzx)fitsbor}tft3K)}aCJ?Fa*&>k zNB>>i3f#t9lze(ueJ?^())#fw1;+u2R(VyE;(QN zsQiPi4FU?edzbHN$hmOW^M%cI&xiTED=N~b&1?_YaV0Fo{`isXdA7TDp4eFU=Hlk) z3w+KbaAo4HiPxt@E|{F4x8FjmX!nPG3eR}#+FB0#dv=8!Wnug-aO`G` z)am)BSl3nSUu~57dHAjHx5&JLdHc-^{v|v2o0$>iv&9>(A z?cz^{AD#2ljNeo){M4Sy&teK9dpjn)@+!)C*(q&ZaNl~av)31`mj?F)QqI3WI>E|< zr%(04-gDcQ%v<*Q(8Fudk_?X`Z+A~+@;TheFS^;|w!v?^(~>`P7&0<%u%6%apW*($ zOLN>;9xFU%k+Ns6y+X(Dsh9Hc7}S@x9gR|ma=6V;8MMhQLQo*{QQZ(1eu%hco7{T^<0*NdOH?BChowf|0g z@s;-Mo-MK7_SKUA3>|AsCwBa2_{z1`@$cuavbBp=2qZ!wo_+13=d=GnCiHb}h*)=u2|Bh+MTI`fg}&_I!>`P>uV79TDz?UatW z^*kZGb!x?T$NsJyxfUa?PLAXy6aSrN-TU}2>(?Ez$BeeDd3dm9_pFFld(4{J*^e(S zoW$cdX=2aBOZk~O_7#`P*<;^0YMpmow@&Mr^|6opPfmXPch20>=XTn;wcBo=|5)|K zGH*WTsyzM1gZ|&YyChFa-yk01=24hEhxMz1yf&}yqT3sKf_Q?=E7T`tyisdCbgt(= zL*U-NqlJ6+9yzsUaZG`pn(?JTK~G!D?d(F4k=`oU3Sc%YnRUcc^Zki zDnHT`LlnD3GIsV{I#Htktaygh+jqC8eY$(!_M?8IOw^&5s|xQNo&G#kB=J(nzG=&( zmYeY2dv@%*fR3Ku-8ZY1%yV@!*5qsbsGoT*^z5T$QhkZ>`o?p9J@O}}#5kNOvB+62uws&D)UQsZ6*)-~jWXwM z7hVp^&%K`f@T{F?%g4Ok+R3JTtNWR!xC%FWODk78&(_SmG2ubg?F7H)o`h{ZQruu#OH=Gk7{b{{PW)mc0cFI=R5T2oShg(c~R5i&zbnWvsVePD^gZHgD zCUN6z+jX;dd-)`uMHbidf2fICKKtm(J~zwrcmIj3@1FCY;n|aC{~3hVKa%pgv~kv+ zMd^#ZZ|Ygk4!?Kt`LAooBj$anIPSarnq~3F>Y&z61#Yw4Ya(4Mwbt+fP)Y}Syo4oH@ znsJ(Oh_74BSfv{Dc8Y@7*NIw3BwWs_F8+PGZ{7BXSr<;e*|ui6_04uK>9hGV zZ!Xny*Bs)l7L(brHe>7BV1@1Z8EXm`ojd;c!^bzSyQ)ota{n{TSfj#lWm&+zR{`GT znzyEKvpjZaoV}^+yY~h^)+WyUkhga=#5iX)&fZn_ZsP7KZ|^d1FPf7BV!diQ_D;0t z#j4C3tEI{vtF5$Wgz}n&8+>t`EctGevbJFRt`o_-7o6>Bohm$yCoj@)FZ;~7pZK_s z}*yjaF}W?+V^{ z$kJ`!>BjG>8}{p-YkM$T$ZkpR>&B0_7R9L+s_T6C&TGDWVRfO5=h@PqDFwQ%OG-9# z-%Y;cw&2AKG3~}@J^jHmijy^-OP zuC+%;$MhcSUh_e?`ND^2wf#J`nMXEy{oMDtGmP!iHqS~2-h}%T7i89!s;_ORn0dRw zqD(a8&&k7D_B$VK@JOG}+ZS%eb?jZ#v3q9rT#Ve9&3+kg9hYHNydU@r3d+5A?>sLZ}0Nn)Dc83~ge z^R!u}Of@M9;%a*obM{;O?|s=Gm-OUvE+=re&T^gCA8Yb!`uxmK{}~=@9{X+Y^R4Gb z^8D}Nhc5o!7kj=Y@666eJcm-m~-Bj!(e&PGo&Z2!-2 zcgL5WTJ5#}8QNDePho!YpCNVM!o7O4?)s#y$dS8*}bg~ziBMmuF0(y zuH(tICTqqgE%}vP&*z5n**i3C-r!NHd3V>EuMX?1eyJ8-^a@_-prZEF(2O&{(Tp=> z$LkjhX0vdWd%eB#W_odnz>~h4paHU79AzhEw@$VWelg)yt$_9}74-!^ek;u#bkD0^ z`1_iB=DllESu#G^bBE2?<FCdu{Np{|wpzS&^sscR%ZKT@XDh;6KB+S+ak_ zySANE4dy78n7IGt%Nvhhamp{?4v}u*F$ppcSh{-(Pw-8(m&YD5=grl)qbA+LH-np{ z^MY}i&)rLn3Bsn#+e^;gS(^89_AYj5?dV-A_lEXfJE5C+GwRaH%)3!n#5b(I5oYYQ zbtzj+ex%^uM8i|hY*`*hJhh8GsQodvpYWI;nwKG3$|1CUS-RMWDp=Ynx0iN96 z_8E?6_uE?}7Dz`=nHwX%^9av*|HJ!aLu{D&@4oyQed*XWuJ^7ByA$tyJa^Yt`B+@> zExSv%#daBHu0Ji3pSvg5W_A2`gD0UMp85P|IR5KTFXNHw zd92ocy+_e_wqoz`sSD3v*mm#z1KY1JjyLWJUSIil>FfPjX8jekY&*QCZq(WS=wb2c*cnS|N_p2#JK*%=?wNBD zUm2K_*S@P`DAT!r@XXvfpXS=d9xI4SbaeL7e4*01z~AXwx5;5emMy(scc|ZE5B+@1 z@#sfCmh_!P(-M;%vzu3DDW_{^FH~vsx>%fjqv?`oCQH0a;l7J!zpRTobN*Olpl6rM zEuUmQ-P~M@{d(Jia9MdYoK#(#!R&%>KEdRer{cuV(2s zi*Dai{Jr1bc2Bs?syX=|{T{6<47|3~dTQhawX$noZzpKp)S8~NkV&{`!E9DV&ATkB zpgilHqrDSMM?F8i!dJ*%av48GH29`3bo zp1QE|Kf^oKiT@ei7yV~=8`D}YvzqA|*}8m!}vzwrE_=XLiKr_bF<%cK~Z++H4gsBqWfjzZyk zmc#cr-S-IdS11(jO5PN>!>7#QuuV&d%?!#Pu6CyDGk}aDj}!2p&(dt@#&efjgQZGo)h}< zQK_8qvO<;}UXMKY?W_6{oo7AQAWtRD%V)n&!n$R}f1=h4Fx}^!b$iPD;S!z_Y?RNfyPkDwnV|`LiO1!<-?O&y2 zb>`P^yPnfC?7vBKwey~u^5yKI%+qHqDl$4ZeBOJ$TzQts?s?Az9Cuo`zDksQ%zbp# zUDwC8mxX#J{L)(Z@MK~2r~B@`=84LI)v*P;^0%=1h0Og?R=!|XyFkN?Go`#w^(rpA z=RADIDfMpilXE}o%>p;xXik{t8E474LGkw;x%sT}9p^Y_%&GP{Z~OS?X3rb%U)A${ zT(#x9@)Xyd=l=aI`~FAXL2{B+=$Q{XTW6{qT)zHbacZ`PhN7K_sZU?o+_T+tE`74f zdfm&Qz^xzM9{G0WbLMFa-=>6K5!GL^uFuGuW$nginQxv=+kNUu%&lh|x90Ir%(xTs z@T|O0fyINFhvthMp7Zj!0zNop;?O=bc+F z&wBDQcXQLtm?C zuYWCg6(sAGyWL}<{)Bg(v709E3KxO2Pc`p{tg{tadY45wVXCLO*W(hwl9s#PUE$IS zL3vZ=t%@nx+x%cAMN(ysrnTd>m2C!mgS>m%eNhy9u^(?mHD(SF#X7* z<9tV?MemC%ov+A$^XFv1v;PcyD>!F={Jw9&g6mxc6D=Hg4;Ak4uzfIN!G=6x-a{_G z!5P|VF7vYdT|&GLes?Drm-*cAY{bBOKd*1GPe#gJdhif(a*(*GivsqT=gto5RZferP zTzKvL(=U95Us~55y?6Y6$Md+1U90jV_PASp&Yk0W@<(i)sVZC2;T0csqzw!v^ZF>h z&2?sdXVnySyNN^Lm~PTO|KH9ZqNcabu;sIySm@&&;VIJ~J@; z^*vL29Qy5A($c)j6K7W(o^yXs$L(NG#htuUw-x)%)nom$ZeRFs?_}LGrgO{=J`^ic z@9>W_31>N$n63P@d`8K7xiz-arEDgin|OImwf|eal5f4wHiDV|5#l zBvJWn$v(-$I?^16A7!py(K+$hwe8`S*BENv?B)|}JKp$E#3I*_O~!7PRmK|~%ZLjX zzi<_Ko9tCAYI^r;iQc&PDCX^05cs22a!V4kc zlye?$FF1PmhpOCnS!XNYXzR6RcGk?Jisp`Tt2pg=koP%8)?I}t?fIl zc7Mq~ThhAziI4HOw8$md`#S?{(qHDruK3STcKE?I7N*M;Guvt(b9Qa*-TmUp=H73~ zYwYZrzHpsT&~i9HbnBM>1#9Nb%C4B;5%I`sLT+hrnWJ*S zT(y%IJg%tUQOSHUcXyRS;R-+ALu+@dXR+sQ~vg^8Ft>713;uZZdTj9ns|b^D*`lV_$JPCk(R zpJ7YTaWP3%>%}We`ku=4$t;QAxwm!ePO+Nwn7r|^48 zugA-3U2~I%5^m<-mM!b&>Y7y*W6ak3$$;V8rc8O|lN)bLh^UHt@HOhZ(7sCsR=r<# zGHI=NAUH4mv_$LL`_cElz20>6x5mR8%QSl*-JC5^FwMuI@rO4DNzHFng;r^HB4?drh-5vZQxNmyjms?6^^J<=ic|H$~rNx$9`=$a2$3Xi^jB&Va`k{Z5)Y2q#SRG}nx2GQXTaWiVoGLOo>eBX`^c+nY5KnJ=0S?$A8`YE^#9TYDGrE%zU- zON@A{bxlMv$2^k9JR+y)Wb%YmgVnRbjAhpHI~E1+ipvk>E9oN|DSKbA>raiwi7(ea6qSW$O0m}+Z`l2J(dqTd@(;>9&WP%+ zSam=%GmZDD{(|C_mhGQ8PO$u(SZ})J;8E?^M_-@nTwA}f(kRGIE~4Azz0CgC&ZjG{ z<*65L=3jBprJeVH;=HVr3^r?XCVI-`swX_Ryw31W;&smMPO~_((33m#+z;EQKh5G; zp*iPYdE2Dt9`Db5x0r76bJE`8{fnB{UiDk9U!S{pNwvuz_U6m2FCP0x-YcIu^XruO zT|s$EW=~mi(S-`m~C}+uR)vu214%4r)+|@L{ z$Rd1I)9S8wm%Cht!n~!5wqDcaIyrZKaai(V;!#7}&^&u1P(q!(QazMIXZi9;>lRsP z&WhJL&y(yP3D>IWIz)VdB->JN|g8Kic`8yFh+V*y%363(3p&6vVGS zape!=_8)tu`#UIdfRJAGku}Uy-yF@nWf`0CO2^FF^#0{1yM&gln`U(@GxL@7S&=ik z74NwCgm@24To`%dnV=qP=V?#VpHcb3{g2a~HUwBrn;XCZ{+~ zQwfOM_$S_^qC>a%s$Wsi*XVf-)l>bnVxC6N0ec!0HntZ)qaTw?S#GijE#%^KWcd~V z3dc7KW-GjyUczYZ<;CgcJAvgJsJE3fVct>(-$}x$Dql4@Uj;atc|5-8Y3A{$iF4Q5 zqu%{4Eq58#A6}t$boGNJOT?!we7N@0JO2sd_N;x6FP6$lrZ&5J6?z?;Xd9f%?fc;+u*Bclk{mY%| z&CCAOho1EImWlch^=!6)Ylrq;U3UAYvGH9G&wO6hyZGSbr6(&_L zReQzxZp!QhlX4cio#I}$o-3)LUw!s1!3sq&q2OlJzq6(zL+wbRok5X;48yBZdz7icR$HzUc1=) z>hTl%r&rlmPyDoavzqexfJ+*g9mdibpD#9FU!V9&JR{p#O6mY}ln#R!gN}|g`|<-D zUaWW#o$**|^6oq3g`c%88Q?3WTND`7jQUe#6c>cJ$bHuj_1-f@?&h@L7g3!Tic@?!$)7o*+Z^IjeP>Hl-V2gY4f zrf6{tTZ$P2_rs=@DmyMg&NUvl&p~Jo@;oYkZdCOgJOyyVwHH-qc^! zM;v?iD8N@&XX{nN%a;sJo1EiK zW_z;k;*_E-k!j5nKAjBL+kA@c`KSJ;@}DDi>Z=`}o_XYJ;-(~_?YGMw8UA$tY8!R| zV?%^MLukll*GQHLS2k{P)%K3Np5wHY!_qD1lyE}OuBw2S88Rhx&$Q>4-hZ}rL(c9q z6E|htIT>|*OdqG{k zQeVE(x%Gsy~%JULTOXE(=+RZKBX zZomCr3RrKcpLO=MrQc*-$KMklUA5gdt(-UZ3A^LJsP%;?=@mKcwkWbKo%u<{V)gvs zwxY{d=f>QfsrdO#&3}fUF^{%2E#_TOB6`tIGWti1ZoT21%GSGLZ2C=?l1u*aDGF4` zy*}2L_>PNDL-wxGjn8bZYYrY>wq$Rr#+99GzumB(QTAEhb*(Z0y7n5iFRC<1r zIcD)yP4ica9`9m%#+)jySve(ULH6xZnY)wjsH#6`?A#QTw_x|Cpy~ya-ktQ`m&LiO zDS+iq(65D>wi8(HI-NdTuxd}-634a!Kc8$pk=M9*r!~VayXc2U&19nOj3Ofg%=)hP zwm*JfQ}W4iWol1%c>m7LSJ^KGN((B_PWP~%BCof*YTfGAhao#ml`}WIm@Sff@Ai)G z>MJ7?A|f(G76`O}T2OdMvAumyR`F!)3)}u~tKapbJ=Mp5wjKZaIhsqL@K3UOQiMVA z)Ar+y`(G~n)*zQ$_)A~-V)@pGNk5Hwj-H8K36B6v}soA$qGhssBNr|XBSEf7VK@&M-FE zw~Jx-rqlS{d3v#7tQl7 zUJOYxhbp^r)uN_d%AzTT{*re$ znOJB~XbwA4QQ8_7d*z;~^tpS&>u&#&{;RX~)jf&puEma_{?_iEjLH44>{c&TWS3Zd zYQ|CVj~jlq^L;cw@}HsY_34V5v`Z!%`ufDQ_pW-{WI4;_;wFc3z6^86gFC^g^R1|4 zG{?$+da@pzcQzRus#7|Be9g%n)|NXp4qSPw{h#41yZ+9=kJ@QR46-b=DwEo$ZnrAl z@h{(AVUK(8F?j{vi|aRBd0W&hD9%_V7&E z$jgFLyB=q0MRlJ4wWE9Or?{u;{DrF)zdbB!TyJuz|KfJ-wG9j#ZhG-@b+-m=J@Cl% v(g~|gVr;d({~262KinD3btp#O)m=D6+T%Y%?%_xIsjpE(8MVk@|9=wz&$qSU diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/unfolded+chaperonin_t=508750tau_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/unfolded+chaperonin_t=508750tau_LR.jpg deleted file mode 100644 index fdc5c890b18ec41eee143a4584dfe8195d833ed0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17080 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 Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index b0013ccc62..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,476 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 224 !NATOM - 1 1 2 2 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 1 1 0.000000 1.0000 0 - 5 1 2 2 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 3 3 0.000000 1.0000 0 - 8 1 3 3 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 2 2 0.000000 1.0000 0 - 11 1 1 1 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 2 2 0.000000 1.0000 0 - 15 1 3 3 0.000000 1.0000 0 - 16 1 3 3 0.000000 1.0000 0 - 17 1 3 3 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 1 1 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 2 2 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 1 1 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 2 2 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - 28 2 2 2 0.000000 1.0000 0 - 29 2 1 1 0.000000 1.0000 0 - 30 2 2 2 0.000000 1.0000 0 - 31 2 1 1 0.000000 1.0000 0 - 32 2 2 2 0.000000 1.0000 0 - 33 2 1 1 0.000000 1.0000 0 - 34 2 3 3 0.000000 1.0000 0 - 35 2 3 3 0.000000 1.0000 0 - 36 2 1 1 0.000000 1.0000 0 - 37 2 2 2 0.000000 1.0000 0 - 38 2 1 1 0.000000 1.0000 0 - 39 2 2 2 0.000000 1.0000 0 - 40 2 1 1 0.000000 1.0000 0 - 41 2 2 2 0.000000 1.0000 0 - 42 2 3 3 0.000000 1.0000 0 - 43 2 3 3 0.000000 1.0000 0 - 44 2 3 3 0.000000 1.0000 0 - 45 2 1 1 0.000000 1.0000 0 - 46 2 1 1 0.000000 1.0000 0 - 47 2 2 2 0.000000 1.0000 0 - 48 2 2 2 0.000000 1.0000 0 - 49 2 1 1 0.000000 1.0000 0 - 50 2 1 1 0.000000 1.0000 0 - 51 2 2 2 0.000000 1.0000 0 - 52 2 2 2 0.000000 1.0000 0 - 53 2 1 1 0.000000 1.0000 0 - 54 2 2 2 0.000000 1.0000 0 - 55 3 2 2 0.000000 1.0000 0 - 56 3 1 1 0.000000 1.0000 0 - 57 3 2 2 0.000000 1.0000 0 - 58 3 1 1 0.000000 1.0000 0 - 59 3 2 2 0.000000 1.0000 0 - 60 3 1 1 0.000000 1.0000 0 - 61 3 3 3 0.000000 1.0000 0 - 62 3 3 3 0.000000 1.0000 0 - 63 3 1 1 0.000000 1.0000 0 - 64 3 2 2 0.000000 1.0000 0 - 65 3 1 1 0.000000 1.0000 0 - 66 3 2 2 0.000000 1.0000 0 - 67 3 1 1 0.000000 1.0000 0 - 68 3 2 2 0.000000 1.0000 0 - 69 3 3 3 0.000000 1.0000 0 - 70 3 3 3 0.000000 1.0000 0 - 71 3 3 3 0.000000 1.0000 0 - 72 3 1 1 0.000000 1.0000 0 - 73 3 1 1 0.000000 1.0000 0 - 74 3 2 2 0.000000 1.0000 0 - 75 3 2 2 0.000000 1.0000 0 - 76 3 1 1 0.000000 1.0000 0 - 77 3 1 1 0.000000 1.0000 0 - 78 3 2 2 0.000000 1.0000 0 - 79 3 2 2 0.000000 1.0000 0 - 80 3 1 1 0.000000 1.0000 0 - 81 3 2 2 0.000000 1.0000 0 - 82 4 2 2 0.000000 1.0000 0 - 83 4 1 1 0.000000 1.0000 0 - 84 4 2 2 0.000000 1.0000 0 - 85 4 1 1 0.000000 1.0000 0 - 86 4 2 2 0.000000 1.0000 0 - 87 4 1 1 0.000000 1.0000 0 - 88 4 3 3 0.000000 1.0000 0 - 89 4 3 3 0.000000 1.0000 0 - 90 4 1 1 0.000000 1.0000 0 - 91 4 2 2 0.000000 1.0000 0 - 92 4 1 1 0.000000 1.0000 0 - 93 4 2 2 0.000000 1.0000 0 - 94 4 1 1 0.000000 1.0000 0 - 95 4 2 2 0.000000 1.0000 0 - 96 4 3 3 0.000000 1.0000 0 - 97 4 3 3 0.000000 1.0000 0 - 98 4 3 3 0.000000 1.0000 0 - 99 4 1 1 0.000000 1.0000 0 - 100 4 1 1 0.000000 1.0000 0 - 101 4 2 2 0.000000 1.0000 0 - 102 4 2 2 0.000000 1.0000 0 - 103 4 1 1 0.000000 1.0000 0 - 104 4 1 1 0.000000 1.0000 0 - 105 4 2 2 0.000000 1.0000 0 - 106 4 2 2 0.000000 1.0000 0 - 107 4 1 1 0.000000 1.0000 0 - 108 4 2 2 0.000000 1.0000 0 - 109 5 2 2 0.000000 1.0000 0 - 110 5 1 1 0.000000 1.0000 0 - 111 5 2 2 0.000000 1.0000 0 - 112 5 1 1 0.000000 1.0000 0 - 113 5 2 2 0.000000 1.0000 0 - 114 5 1 1 0.000000 1.0000 0 - 115 5 3 3 0.000000 1.0000 0 - 116 5 3 3 0.000000 1.0000 0 - 117 5 1 1 0.000000 1.0000 0 - 118 5 2 2 0.000000 1.0000 0 - 119 5 1 1 0.000000 1.0000 0 - 120 5 2 2 0.000000 1.0000 0 - 121 5 1 1 0.000000 1.0000 0 - 122 5 2 2 0.000000 1.0000 0 - 123 5 3 3 0.000000 1.0000 0 - 124 5 3 3 0.000000 1.0000 0 - 125 5 3 3 0.000000 1.0000 0 - 126 5 1 1 0.000000 1.0000 0 - 127 5 1 1 0.000000 1.0000 0 - 128 5 2 2 0.000000 1.0000 0 - 129 5 2 2 0.000000 1.0000 0 - 130 5 1 1 0.000000 1.0000 0 - 131 5 1 1 0.000000 1.0000 0 - 132 5 2 2 0.000000 1.0000 0 - 133 5 2 2 0.000000 1.0000 0 - 134 5 1 1 0.000000 1.0000 0 - 135 5 2 2 0.000000 1.0000 0 - 136 6 2 2 0.000000 1.0000 0 - 137 6 1 1 0.000000 1.0000 0 - 138 6 2 2 0.000000 1.0000 0 - 139 6 1 1 0.000000 1.0000 0 - 140 6 2 2 0.000000 1.0000 0 - 141 6 1 1 0.000000 1.0000 0 - 142 6 3 3 0.000000 1.0000 0 - 143 6 3 3 0.000000 1.0000 0 - 144 6 1 1 0.000000 1.0000 0 - 145 6 2 2 0.000000 1.0000 0 - 146 6 1 1 0.000000 1.0000 0 - 147 6 2 2 0.000000 1.0000 0 - 148 6 1 1 0.000000 1.0000 0 - 149 6 2 2 0.000000 1.0000 0 - 150 6 3 3 0.000000 1.0000 0 - 151 6 3 3 0.000000 1.0000 0 - 152 6 3 3 0.000000 1.0000 0 - 153 6 1 1 0.000000 1.0000 0 - 154 6 1 1 0.000000 1.0000 0 - 155 6 2 2 0.000000 1.0000 0 - 156 6 2 2 0.000000 1.0000 0 - 157 6 1 1 0.000000 1.0000 0 - 158 6 1 1 0.000000 1.0000 0 - 159 6 2 2 0.000000 1.0000 0 - 160 6 2 2 0.000000 1.0000 0 - 161 6 1 1 0.000000 1.0000 0 - 162 6 2 2 0.000000 1.0000 0 - 163 7 2 2 0.000000 1.0000 0 - 164 7 1 1 0.000000 1.0000 0 - 165 7 2 2 0.000000 1.0000 0 - 166 7 1 1 0.000000 1.0000 0 - 167 7 2 2 0.000000 1.0000 0 - 168 7 1 1 0.000000 1.0000 0 - 169 7 3 3 0.000000 1.0000 0 - 170 7 3 3 0.000000 1.0000 0 - 171 7 1 1 0.000000 1.0000 0 - 172 7 2 2 0.000000 1.0000 0 - 173 7 1 1 0.000000 1.0000 0 - 174 7 2 2 0.000000 1.0000 0 - 175 7 1 1 0.000000 1.0000 0 - 176 7 2 2 0.000000 1.0000 0 - 177 7 3 3 0.000000 1.0000 0 - 178 7 3 3 0.000000 1.0000 0 - 179 7 3 3 0.000000 1.0000 0 - 180 7 1 1 0.000000 1.0000 0 - 181 7 1 1 0.000000 1.0000 0 - 182 7 2 2 0.000000 1.0000 0 - 183 7 2 2 0.000000 1.0000 0 - 184 7 1 1 0.000000 1.0000 0 - 185 7 1 1 0.000000 1.0000 0 - 186 7 2 2 0.000000 1.0000 0 - 187 7 2 2 0.000000 1.0000 0 - 188 7 1 1 0.000000 1.0000 0 - 189 7 2 2 0.000000 1.0000 0 - 190 8 2 2 0.000000 1.0000 0 - 191 8 1 1 0.000000 1.0000 0 - 192 8 2 2 0.000000 1.0000 0 - 193 8 1 1 0.000000 1.0000 0 - 194 8 2 2 0.000000 1.0000 0 - 195 8 1 1 0.000000 1.0000 0 - 196 8 3 3 0.000000 1.0000 0 - 197 8 3 3 0.000000 1.0000 0 - 198 8 1 1 0.000000 1.0000 0 - 199 8 2 2 0.000000 1.0000 0 - 200 8 1 1 0.000000 1.0000 0 - 201 8 2 2 0.000000 1.0000 0 - 202 8 1 1 0.000000 1.0000 0 - 203 8 2 2 0.000000 1.0000 0 - 204 8 3 3 0.000000 1.0000 0 - 205 8 3 3 0.000000 1.0000 0 - 206 8 3 3 0.000000 1.0000 0 - 207 8 1 1 0.000000 1.0000 0 - 208 8 1 1 0.000000 1.0000 0 - 209 8 2 2 0.000000 1.0000 0 - 210 8 2 2 0.000000 1.0000 0 - 211 8 1 1 0.000000 1.0000 0 - 212 8 1 1 0.000000 1.0000 0 - 213 8 2 2 0.000000 1.0000 0 - 214 8 2 2 0.000000 1.0000 0 - 215 8 1 1 0.000000 1.0000 0 - 216 8 2 2 0.000000 1.0000 0 - 217 9 4 4 0.000000 100.0000 0 - 218 10 4 4 0.000000 100.0000 0 - 219 11 4 4 0.000000 100.0000 0 - 220 12 4 4 0.000000 100.0000 0 - 221 13 4 4 0.000000 100.0000 0 - 222 14 4 4 0.000000 100.0000 0 - 223 15 4 4 0.000000 100.0000 0 - 224 16 4 4 0.000000 100.0000 0 - - 208 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 17 - 17 18 18 19 19 20 20 21 - 21 22 22 23 23 24 24 25 - 25 26 26 27 28 29 29 30 - 30 31 31 32 32 33 33 34 - 34 35 35 36 36 37 37 38 - 38 39 39 40 40 41 41 42 - 42 43 43 44 44 45 45 46 - 46 47 47 48 48 49 49 50 - 50 51 51 52 52 53 53 54 - 55 56 56 57 57 58 58 59 - 59 60 60 61 61 62 62 63 - 63 64 64 65 65 66 66 67 - 67 68 68 69 69 70 70 71 - 71 72 72 73 73 74 74 75 - 75 76 76 77 77 78 78 79 - 79 80 80 81 82 83 83 84 - 84 85 85 86 86 87 87 88 - 88 89 89 90 90 91 91 92 - 92 93 93 94 94 95 95 96 - 96 97 97 98 98 99 99 100 - 100 101 101 102 102 103 103 104 - 104 105 105 106 106 107 107 108 - 109 110 110 111 111 112 112 113 - 113 114 114 115 115 116 116 117 - 117 118 118 119 119 120 120 121 - 121 122 122 123 123 124 124 125 - 125 126 126 127 127 128 128 129 - 129 130 130 131 131 132 132 133 - 133 134 134 135 136 137 137 138 - 138 139 139 140 140 141 141 142 - 142 143 143 144 144 145 145 146 - 146 147 147 148 148 149 149 150 - 150 151 151 152 152 153 153 154 - 154 155 155 156 156 157 157 158 - 158 159 159 160 160 161 161 162 - 163 164 164 165 165 166 166 167 - 167 168 168 169 169 170 170 171 - 171 172 172 173 173 174 174 175 - 175 176 176 177 177 178 178 179 - 179 180 180 181 181 182 182 183 - 183 184 184 185 185 186 186 187 - 187 188 188 189 190 191 191 192 - 192 193 193 194 194 195 195 196 - 196 197 197 198 198 199 199 200 - 200 201 201 202 202 203 203 204 - 204 205 205 206 206 207 207 208 - 208 209 209 210 210 211 211 212 - 212 213 213 214 214 215 215 216 - - 200 !NTHETA: angles - 13 14 15 40 41 42 67 68 69 - 94 95 96 121 122 123 148 149 150 - 175 176 177 202 203 204 7 8 9 - 6 7 8 16 17 18 34 35 36 - 33 34 35 43 44 45 61 62 63 - 60 61 62 70 71 72 88 89 90 - 87 88 89 97 98 99 115 116 117 - 114 115 116 124 125 126 142 143 144 - 141 142 143 151 152 153 169 170 171 - 168 169 170 178 179 180 196 197 198 - 195 196 197 205 206 207 15 16 17 - 42 43 44 69 70 71 96 97 98 - 123 124 125 150 151 152 177 178 179 - 204 205 206 2 3 4 4 5 6 - 9 10 11 11 12 13 29 30 31 - 31 32 33 36 37 38 38 39 40 - 56 57 58 58 59 60 63 64 65 - 65 66 67 83 84 85 85 86 87 - 90 91 92 92 93 94 110 111 112 - 112 113 114 117 118 119 119 120 121 - 137 138 139 139 140 141 144 145 146 - 146 147 148 164 165 166 166 167 168 - 171 172 173 173 174 175 191 192 193 - 193 194 195 198 199 200 200 201 202 - 14 15 16 41 42 43 68 69 70 - 95 96 97 122 123 124 149 150 151 - 176 177 178 203 204 205 1 2 3 - 3 4 5 10 11 12 12 13 14 - 25 26 27 28 29 30 30 31 32 - 37 38 39 39 40 41 52 53 54 - 55 56 57 57 58 59 64 65 66 - 66 67 68 79 80 81 82 83 84 - 84 85 86 91 92 93 93 94 95 - 106 107 108 109 110 111 111 112 113 - 118 119 120 120 121 122 133 134 135 - 136 137 138 138 139 140 145 146 147 - 147 148 149 160 161 162 163 164 165 - 165 166 167 172 173 174 174 175 176 - 187 188 189 190 191 192 192 193 194 - 199 200 201 201 202 203 214 215 216 - 5 6 7 8 9 10 32 33 34 - 35 36 37 59 60 61 62 63 64 - 86 87 88 89 90 91 113 114 115 - 116 117 118 140 141 142 143 144 145 - 167 168 169 170 171 172 194 195 196 - 197 198 199 17 18 19 44 45 46 - 71 72 73 98 99 100 125 126 127 - 152 153 154 179 180 181 206 207 208 - 18 19 20 22 23 24 21 22 23 - 45 46 47 49 50 51 48 49 50 - 72 73 74 76 77 78 75 76 77 - 99 100 101 103 104 105 102 103 104 - 126 127 128 130 131 132 129 130 131 - 153 154 155 157 158 159 156 157 158 - 180 181 182 184 185 186 183 184 185 - 207 208 209 211 212 213 210 211 212 - 19 20 21 20 21 22 23 24 25 - 24 25 26 46 47 48 47 48 49 - 50 51 52 51 52 53 73 74 75 - 74 75 76 77 78 79 78 79 80 - 100 101 102 101 102 103 104 105 106 - 105 106 107 127 128 129 128 129 130 - 131 132 133 132 133 134 154 155 156 - 155 156 157 158 159 160 159 160 161 - 181 182 183 182 183 184 185 186 187 - 186 187 188 208 209 210 209 210 211 - 212 213 214 213 214 215 - - 152 !NPHI: dihedrals - 1 2 3 4 2 3 4 5 - 3 4 5 6 4 5 6 7 - 8 9 10 11 9 10 11 12 - 10 11 12 13 11 12 13 14 - 12 13 14 15 15 16 17 18 - 16 17 18 19 17 18 19 20 - 18 19 20 21 19 20 21 22 - 20 21 22 23 21 22 23 24 - 22 23 24 25 23 24 25 26 - 24 25 26 27 28 29 30 31 - 29 30 31 32 30 31 32 33 - 31 32 33 34 35 36 37 38 - 36 37 38 39 37 38 39 40 - 38 39 40 41 39 40 41 42 - 42 43 44 45 43 44 45 46 - 44 45 46 47 45 46 47 48 - 46 47 48 49 47 48 49 50 - 48 49 50 51 49 50 51 52 - 50 51 52 53 51 52 53 54 - 55 56 57 58 56 57 58 59 - 57 58 59 60 58 59 60 61 - 62 63 64 65 63 64 65 66 - 64 65 66 67 65 66 67 68 - 66 67 68 69 69 70 71 72 - 70 71 72 73 71 72 73 74 - 72 73 74 75 73 74 75 76 - 74 75 76 77 75 76 77 78 - 76 77 78 79 77 78 79 80 - 78 79 80 81 82 83 84 85 - 83 84 85 86 84 85 86 87 - 85 86 87 88 89 90 91 92 - 90 91 92 93 91 92 93 94 - 92 93 94 95 93 94 95 96 - 96 97 98 99 97 98 99 100 - 98 99 100 101 99 100 101 102 - 100 101 102 103 101 102 103 104 - 102 103 104 105 103 104 105 106 - 104 105 106 107 105 106 107 108 - 109 110 111 112 110 111 112 113 - 111 112 113 114 112 113 114 115 - 116 117 118 119 117 118 119 120 - 118 119 120 121 119 120 121 122 - 120 121 122 123 123 124 125 126 - 124 125 126 127 125 126 127 128 - 126 127 128 129 127 128 129 130 - 128 129 130 131 129 130 131 132 - 130 131 132 133 131 132 133 134 - 132 133 134 135 136 137 138 139 - 137 138 139 140 138 139 140 141 - 139 140 141 142 143 144 145 146 - 144 145 146 147 145 146 147 148 - 146 147 148 149 147 148 149 150 - 150 151 152 153 151 152 153 154 - 152 153 154 155 153 154 155 156 - 154 155 156 157 155 156 157 158 - 156 157 158 159 157 158 159 160 - 158 159 160 161 159 160 161 162 - 163 164 165 166 164 165 166 167 - 165 166 167 168 166 167 168 169 - 170 171 172 173 171 172 173 174 - 172 173 174 175 173 174 175 176 - 174 175 176 177 177 178 179 180 - 178 179 180 181 179 180 181 182 - 180 181 182 183 181 182 183 184 - 182 183 184 185 183 184 185 186 - 184 185 186 187 185 186 187 188 - 186 187 188 189 190 191 192 193 - 191 192 193 194 192 193 194 195 - 193 194 195 196 197 198 199 200 - 198 199 200 201 199 200 201 202 - 200 201 202 203 201 202 203 204 - 204 205 206 207 205 206 207 208 - 206 207 208 209 207 208 209 210 - 208 209 210 211 209 210 211 212 - 210 211 212 213 211 212 213 214 - 212 213 214 215 213 214 215 216 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=0tau_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=0tau_LR.jpg deleted file mode 100644 index c62a881b2a63a86d0c0ccd58dbfd47f523c57fdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31162 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=67500tau_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=67500tau_LR.jpg deleted file mode 100644 index 38ef54396ee4d0e362d584e99efa28e346fef6a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26258 zcmex=6*h_mO7cSxP*L%u ziyuTyf|F93Hj9}$hm=fyD6YEbkV^8$|F;-;m>C(E1epaH>=|CoQc~dPXi!pO=;&a= z&eV9frGkb9rV1pDMnk8Kk}!E#na=>2Uw;~FSou`xZTS4d~?3;b>IAu zYfY*drMo7pe7dZ%#wdlaqNC4^za~dgU)6ZcGtUHrODnc7&G>fmmiE?ZtHPK2&()R| ztk|_V>g8Yd?9$Uw_uhtSvCW%bx#Q}lxvlqlS&yXrW!Ij!{(iq`o$AT{tSw*trfu>% z?(*{Om$gfJA3WAGovLn|V3B-M*WwLl+_TBwl3&?|mzvl9yA!!O>#613Y0po`2Aa8- zhh9l&;eHQSG$t@-1; z>pw%DU4GP!e{vObT>Wa^UfC}^XIJvgojYz%EHv*IkZyeU`GnM?WB#hQHvatMTeHb> zZK8yPt`Yx&LziafKM+sb_RK4*dAa;5J&~I)S6vCNeo&~;vr9ml@qkV3eF>H#qb*)K zdif8vr|g_k6SGlouI((5KPQ&%K6~wYaL!JDb~mZF<=5BzTzl=7x2uRr*{rB6Ew3^* zXMca;>6t|x?QKtnVtJumBl3vcY;z=!@rp#L)0uWMWMuE|}| z)%LfKx$>*(y7V3S6CLjEHg8`3s@$~YU!MJ>g@3YaCspjbV{qtG(w4|u{}#`iUK%K8 zc+SB6_54M@=1(|hQh2jWwC0Z3{NGa_ol#SdN!P#kO?i#;rhn@nyxG6{X|tK2AcKnw zqo4qbivu=hz~006YI(N`NSX_W+{Az*0BW}vnrB4qJyLRf^e}*FcW1qidduj{q z{bx|)X60tucRN~Voh0kJO>Ga#PQG6AT;}mZl|MU#&T_vwzOnlKt=(tW=vys&YNxWY zsr#2rk%#*cm8pM=PFN>2OFo|WBU=BPxytF%=azFyrvE4j@0rf78`%B0B=S?&YApLPYsKMJqP?`zr;{NURMIi)RsRep=Dk8J!>zL{y! z`;y$-HQSlCy$`kaUahdz^xPy*!-J;9PtP&;ePpUj%;MehVeQu0KAKN1Nm*Ufe%Vo+ z7kb8YYHUKn9&i1?MB5YT-jxqnbCeD|x7qVlELWDtPb*5=B>9=!?JdbEzw=_2w=VWi zaZ=KCn1C(%Q4>Yw*Q&Pbj`kB{i?&}r!&b91E8=*v0qJ5{TI#xZ**|O=liT@w{ z-h*e$pExmpadBbOyj6ALYy6h^#o3F?L&9crKkQ$6*TG8d!sQ+5@_U~Zem-A1`%mhQ z`qSJ+#nVfobM_=lJZpY={?(TM3{6%Xdeu)KaR=_48+>-9ERPZM;fPBOhNH8Y#BJ}fwkq*N9u09b!n5$U%fV@w6`#OMMB}Km6`H;MI6s( z{My0zHS&1iZ`W+oRA1NShxgry-)ees@q=00=3ZiBcz^uemB0SQ9_*6U94Ax?Tem#5 z={{fV@#Bo0?2rA+_07cYFV$ARS#;FLRU<1ua+?Ty!S~nsW=q#g{bvY|%r)gns9ap~ zFE@DhB&*r}@*(RaSyD{C*{e=+1}!Jh)&rw}H*yM!z&{XX=!vw>IT$ z6Rh`Jf9iaf-^K0+Gd@*K{xbPZR8Ri)eP`|pr>*MSUA%sKZEBQf&4r7P61%*8ssC(&j_z1}9Hky=vKODZvQ&1zN9OIhp98LJ>bsu4WZJq- zBz!IqKQ)^an8> zvs!;-+uA!_D{Eiv{Wd$M@AvLf<}*3jwaoYIH2Ke~OTJ-Gom;M4m0$gQN9eCr|6+NH z=WE?}owKcL>XM&@eAS;~9>02S@o^5nyWf?wCL1>{x3qA`$Yl(64J~Zl&LeT>;nn$} z%a&|>`8u|7yRLHaw3`LJjc03wzkHoPdG^i2ea98neBK_N9$2uY`gLc%ck$H6S-rmD z%U{j+e6RO1^O)5Hsry;mV`ts->W;m-(YbO_X5pvv2ZJRPO1D%Ac(4?|aIfL!tDNb} zGTEmpxwG}Xy#kxp^S&u}I!lhN*&4TS!q*F-M(z#uGL?sK|JtylZgp|q)g!mcmPcOS z@Ze(RtDgt|GbGJ@_n(2ap4au-S}yPBCcE$UtGrp4o}bRT_o{XHs;#;yMn>C%vO1R( z-+OMoPR&&?<0ON%kf-?(>u)waJaZqtvbR2#_iV!i=LZ|Me6??T{^sI&nffPd&p+_G zmOD?Te9v@slKw7{q?jB0(CArhL0{D`Elva0Z#SB{#zHTR7Lw4S;o73 z(ieREMA=6CPs)?OPRwrt%KX(jNG@N}FgH|+boZe|KJN@k1Yu|0v7n$tk ze!lJD`dzVUB|Q_5@AuKsRbalc^UwE}$2iY@s-HZwt-9+|4v)x^sdsOA>Q29YJZbkU z-O#mMftMz34vpO@r}pi9mg=neky*QI!a3wGs_vV-YTeTQV^y&-jz{MRp8n--d(HD= zlz&{shFXK`yMHJ2wVyWjPTY8<ATE-(xlFb~Iu? zn^3oGZR623^ z8n!wxZcfhj{Rc&R&mX_H@DA6l?)0{|8~47lnsL~D-<`ygp2l+)Y#s?JrtLD8myKWd z=pV?5?~MIeZGW2Yf$PFI=d!!kZfiF=`SE-5Ouwj`(g)-#jX$1aJbCWyw%ZzSz61u| z($rj$sgRKq^5vqL#^VeL#uB|U#8yL_mH{y%yiFP33|*Mnruuq|6c$4-Myylsgrd^Bv zvUlCxj0L?%&n#WAG}XpeeJ4)>v-+pFNxIo)Pua3(o%fgRnCho{vmjbLNk4cgSN7R3 zj*bma58!P4W9brXvfpw&-rn;^_3}-Zb_-`qKegpqAS1|n4D@Eika&znV8vL-fFmUvwzaYlB*ZDY&AUb z$lwy!(l_FX7w&iZywH2NKyC@!!OOS5==`d_t5hJFCThF->z3)&J(IuwQ=a!~Tk4Ot z$LoKtpS11=v!~v_49Hh|Z?9dD`)YlyT(3d?Z@51_tu$&6!hP#pQFMox5v$o{bc%2ZP&2#1_hI@ymI>)A?c1;qu8 z98sFFtdn!Lu=`Z}*nc^8<;%N{>vW8{JeDbRMxDrbQutDt@5jRx63-jzT(ecDZeO)@ zR{gQOOLteFpUxV>v!L;B?2`#$$K2Tb^=1jqNuKvdCeNlfFLYyx`1ysQrFV5z^L8IC zi|OyUDZX=2@j4svw|YC0JueGHXi0eHy0+eXbYIf&c7AlkY#*I(6yEPm?^WmDTgQ;#9rcqEO|#CU0*h zEpK0T_tNH9SJKqp_kDjmr~cR7Tm84J1U1rc?Q&XhCh7ub@m+@3g%T`ZtxsjVsa}~j z;p6PBvz9H~QqKKkR?;($oGanK$^&IO^qX)Ay$n zQ}Wg=>PtU%`Hty1$@~{iJ3hxu7XNjP`{?PHfs^BZ`1_Wr3!mkh`0Ugl|FpYBOLkv8 z8lJgo+1e#DN?mPj)=un~H+bNo{W9{_?t^yIw)&c;UCPo;+&-OCBKms9t`k4zpEy3_ z`n>Io=NKmLz5e~pdco*&o!qT=x6FHf>v00>b`I8UJ04#Un{ejak2%kUU$GbGKG~V4 z9LFs!{a0$`<=TIxc0U(BR@-^;-Sz(rY8|fg9(*hpo59;(y+v%p1wG@RcE5F%S8I4a z-*Sdw#~eAS>xCy&qiz|Oo5Ve=%)K~k*7?$TZsJ`TS+mr6Wly#|e89ijsk!&bxAf-r zp0%zoYE_@Rzjyoib?UJ-sw<6RI=Xpc2n-D%l@9B_zt4EF{d&e%wT@k9G9#;(zHC}z zBJ3Y;?a3hQUvi4w;Ej7tM*4@tE-xj<7qhv|Q=Rf9@YiXZ8HXhd>Xv-C@W{cs-LYDEOY5RN zA$exo_hm&y6y5TYa*Lkv&f50qC5!(IyP~$$-OVkVd@I&gwm~ep=v-jyayCn;h=E<0`oqu>cPqXCh%zr-%=XA|Jd-gzk_*Jon=MA1O6Bta_ z$j-7n-90DipLYDWUcajmk<#~GFWa+l;*b2`njODpeWJcd)Pp^Oc>iEpaWzq8%+#k=#^M7)B zS^md;W*wiOSzNhv!l=$SC#dih=dZOvo74O6n(KZ~k`48dovnK$bie$rgjojsGJQLh zA3tNdZOI*G@RU#7^QPyHeL{X_Z})afOsxtsnWeAp`AWhxZ|dfF4dZv$XV-{sc#`nN zTRQIklLvcKSBEUuDlV9{+3$RpzItgvM_2QOjt>5hIzIEv-K`~6@+FF6j5vO^Mr8eG z;E7IMt8QwptC_!e9mAKaw|=ci$=)mf-F4wP_KgMh2ctZeC4A(0(S^ADY?pY<#0&f5nUgSPP= zyd7bxtK$4V@0Z&S`!yxcA1%xoE@3nQ;pIs9D zQL{KYe%_{qm*up!y$|qv<-PP;u69x9)5!r@8oWFc1qz(!yl<$Bjr`fLw#(~O)vq#t zXB$%i52KSx71c3zEd}B8SA3Z}IU+zxH#~FO-Iv_ET1>Z`nYr+Wf(1KsJA)s`lhm-_ zikM5^Zue~G-M#ZwE_bAHq56$*_v1Y4SSG{^|7vbf|IlOp^3{qdMLupjc3!NWyUKlU z#>v{7a(@=R{wgk|l{hW;&Ba2C+xfHN<1ZblU%B(r?9%8P{11~K|K9XQ?)}g7&%bW( z|CITBm+jSyRf|2^+^_w*cJN!Tz`ytN8En2==*sXFtUax`-nJt0*rvb7pVywuIRBqP z_`cM>qK$bc?HZ+n~>Egh5htM9l+1gFlV zeFmTVCl^nuYtVRI{@nALQ+#6WvmbxtW~|+oHFM7APx1_s_Os@CYahGXH$~&*+HYm= zZv;IT-8xN4>yhsHE9Dt1w~F&jb$XN=OXqPH@2%eYPEV$P(m%8HrR&ze?z+Edje#6X zXlU@YGnVhCnXWlzKO=m<%eDR`bCi!2?k~#y)o+vZLZ>Bk!-c4KPXl6W?_?${t316j zS1cm4yYkJ=xVZPr73*h~$z3fj%v*Iu>U?0Z{q&1>^e1u16gE^Tzj(9vlZ}Y2nyUS3 zN&8C2s<+onmR{)G`#2&oh~ zo)j2P0sjBmSyFI6`dF#%;<(IC_jF+>D4d>r8u|MWSO!3!XsVJ!|iP@r} zHX_6#ziThb6CfCm^XH=Ab zRb}^u3)6kNw(d$V(@#IM`?am*@`5NHv24v%*~cw^JTK6--OK;ausUw$`b|G3ZrmOa z|GHGvr>dxO@w8=X#wT7^&w4k_a6faM;7Qwa#xK?{4UUs}|I;VJc|YT2p)V;_KR2bb z+y1Vqi#>Jn>CUN9_w1w$yFL~_JEZx!eCd+kkuDFW&X3Zada7UWO!c3#*9pgd_Wh3c zW;p&_DD~PKlMfX(Rq`i(eT^;Je#9ha`tf~hQf_{_Uw0|D+PU}&_uHEiwm+ixH%`yF zE%Be>m;BdE!O!yUa`tSco`T}?>Zs{b)c?_<*6X~jR}D9rdnl!vd@^18>ag;vF84V# z%~6kkX(zgyt6lu|?{3!Y^doi`H(d)(T|DtR_wC~!BW30bZ1~wHxB2Jh?st z{GFGVJhor*+EH`Q%ELc;-i!O@gsSK9`K}N2Wv?o%brck1*@ZHy#mI5xxB9}Z)pJ!} z`$qG6FA=J~Yf|^xqQa8zbJEMY;;(U%w_<&lFE@I@dt`sG)4O=*y58v#bKDcI+Y1@g ze0UVPtXtjN@_2Atd(Wl5mr;T5CS{f>wfpJEcI~rG-0>?(=QXdiYkiaQ%xsgRW$_n3 zi(D?*dHjV;_|n|_vdWS1-)b-I%e61!d0i^{Y33Ip#yNZ`jLYq26b3*26tmXEd{(i4 z`Qjz(8t*<@*}7@VzdjbNdB&{Kmo8kaesJr3(52XJmyDA+wa?%B2aBc%p7+!#K5Xp# zc#=80>06s7jtBj#{)Vvr)?B_~m2Bve_~J`b^CqA9taG)m&E`*!-m8u+zqT*tK6T~l zug5uSOs`kI53BXfUeIz*_-A?#OPcu$u9G>*dI2f`ql%J zCEFGq*%iO`n%kDUuQONL9Pnn@#5Vo$KK9~Y`tz=@&iOu5T6Wt*f1PzIW=8MYcT2vx zo-ptD#gxCsb-VKT78r;7y;|Lyyy>~k1I8B@Y^7`&-mLLnwrs)WZ(iNH@7fgO#SKF? zw;SGT*Om#(FbO?(>Yeo0qtn*S+xsu~&_(4)otB={(w~wmfBn&8|2yZ`%B`0JZmpTv zes5jaFE)z@R;!jyWU4n8Sk_U@&LCz6-$;_mrjYZ$%q$?D>dFKo6= z{Kx(CU%;y@xo1&Z`qr$njn%2y(z7&s-_EIT73vZ+=Pxd-PW3%n`g7lHk(b9Sja<3J zbE^xwS55YR`8&|^aQ3_NbMO0fEI$6BF#f>})2rtfewPi+-qIi=&${aT_4yM&t5x^a ztF^wLpz+IVV}IWCT}w>1D;4aQTD3zXq2}slSAU*_=_j=hOI={|RQX^LaCz&qZQ=F- zS#u+c`HzRlXH>6Im%r1v=3i>vl-=fwHJ9gnx{;ZkmT{o=;Q2N7-%St!?VEdT`mT(u*(m}>`yEoa>nXEN z@6&<4;vfGRgimJQaQIR6IZSMxZ0Jvqoo>;lw{Dl(M*T92IGk*FV^y44z}A(wUVd5Y zyXF1L?Chvp+od+V=FN;%|GC<6-#n%}+q{=PlZdG|bAKlIYwFK!-NkzIva|K7oDNG` zc3ccR8>=C&Zsl&c-|p-ec~g5C*1vIe6MAZ8CG?K#SDviuIoI|rygldrceDAoat~eE zTzoh;&@nGVuK8i|oZ9-W=jB!Z-QPGXXzRz5E0lKKzt7#g*gSi!t3#&z9sQU86eBqH z{x$54IW@~ZRO9zbesS3&b+@+%_My`(1arXCkPfbwLFwG8G^*+dV z-}a&X#%HU(TrTrs5x)!tPe%j+(oGU&^9V)e( zaI8}Dv+kXFj`lX`Kgwf$V>aAR>#SW6)w-TnHfp`cmc55p7)WZcc__1gQs_Th63;yU zUd8bp@A4`;^zQNYQ009))fEc1I-R;FpFZ8cV$(fc+fZiZNe|_3 zxoo^6_WMqMq5@CK@rc9smH$aC&Hb}$&*z!pf0tyQ@0)6|?RV^nAMx(F*T1#6L^Ud) z4XlBtVYvkNPV<`Uywz$}+g+KHIfukCP9!6s(RGZ>l}G_s(pwRl6eIY`akRtwOCfrY`^wrQH!ajzI7X`TL@oI<&U>nh4@3tP>W=D4z~)arLTdF$P+ zOV!q1LH@CA%kRe8F45}cnY3%w-WK*tfm_OzG>Y?N!!&-3zX4HMlu9^u6QsT{B*5 zXJovbFTJ?NwI^f3NtKNgJa~TZ`QxlpH~k~;f~{;%a<}@agX>l;@VdahhEP7WvS;hcf;jdt5jFy_;eW@xVQbd zoD@R_FVB~AwW3cur`ocL)`!k_uDc`sQZ*}*P zw;#LZBD0q_Pct$Iz1!a0+*fg2-rqkuHst!X=SSAfR$MS~d77TOI`cZ8F-uUcT$% zx5DbYJBQ0m9{pDfU-Bsw*rl^y-}Pc2d;Olm`!ApV^-A$MJQLKEGZhq9L~F_k3NlVh z{q*H}|EqA%^D#uCp_*uFtT~xKi8m zhRIJ(tzG@mG3M2?U+~xY8JG&)-Wl*GPg-xiY+qOJuZNmP*Bwo=l?|HpnxkW@kOQu{ zW|pwi9Lw(L`WU^r8h9auA@<RYaDJT$?g@1teIF2yrd_k};X`4>4?^L#unyIInF$=Ywl z-y`#u9X%?x>1o>+@2Ax+dVYBo*RAY-vmRFRQaR!iHBCzmDgB-Ee-+ zuNsqe|Lk2?hE;vMnc4RI;jhQK!Bw*zBSqHyaQt!a`hok-eQB~A{}`>y-M`m9D8tsg zY?hn1>ZOa`AulCwKJ$qB1 z{Ga8IeO;#y2s{a_#euAc39@}6(g%TjCoN}eg&fDkp0@G-CTe=Fy43x0|Ek+| zw(0Lf?)4tpzUTS-Tv1+`e{VJl|7Q?blBHW;G9i1frgrrAV540#-@Q7n*E@-^KmL{f zhoGtTLVHg6*VKQT^g}4@nxLSI7Q6w1G(ZVsuA2SjY<|aEg98r5TmCv&o8Q!t=KU{Y{ zQ{(sdSpS#}cbjh7E*4c>|0?s2u96YMJ6>~{IR$QZ^?DVt(g(i3zS;h(vii%3neApW z^};J(bnN7`L9hL}t{-We-5>gz!gt@v6*X2F zk*|!OU5d6nc=P>V(Ra)LGqgBHNZmX3)_>9aZxyGT*InB+%Wc{O4kMRmJi^DC*sx{G-m@zhn%I{*M3-`3eX=w|w@z=1>On7|?)QbUN6J_2 zdhOQb;<{oI>OdbXU^$NMy0kfKRh7hIky4W@Uu8?neqDPeb>f!?Zz0393Gb#eG5)c5 za^AVFJDDTx4fO_;mDiK__B5W&E6%G9!VJ(d8+?le5dqLJATdLqsP6ym-N0m zziW49Wt*|=jV&pUKVCj_`9FiGN?>l;CHwScj7K-zUs<*Bh3u7s^OwbmEcIEtu2=nN z)%%aO(Gf1L0xQr%5!uzN^*=T~()Ql-g>N-)0E_h_6^jq}wu8p^r7cTC%E+rlpY^VhtBUG|Ot8Lk`ifBF3Vyapg@rn0}?OZG+qqGY`(=dA{a_{~4ODbnEB5 zj$X1SJ#XLqg^7KAUvs)%t405KCS(*YQ2cp){qk3a=k893S{FR?;kD}=zV)ge_phAz zS{l;)`iE4jpx7c0Sgaw33OGCTypuj^HzzmHLL^*Ds(DVGSg1?v{ogx(Y8v(AMSE|N zeZAyCS5on(gRGvjs%CL~<%;>w5ZZoi`X*KFIp<#~X|$qFEuk(O5RG1OvtMAB<9YTa zH?yrcvg-xjpDVt3_;UZ1N0&nTmPp)xE93mDb4xh0qArFY8X;KXv7| zQrlzED>oLp&e@r}WAirtOp*6Fx%FZDFZ&#BWDs{3IG^{}Qa)hUq@C$I3Oj9=7;iA$ z|98R5?KOS}9$C!2zpdh&xcdj^e62I<|3%gP;h6C+$Ks!Qu%KX(QU!WN%Q{VOE3@Zs zhc_G9_MW|Fl@+twlBb~c`4@@p-+s+40kEv54ZM@#(9_>9cb-RD*YhK$}rLZGz z4sZYJZ@>QI?VX;VKB+afdsU@2zP(Tsd(K=Z$#Uhpj4K@-TZMk0TLuds_SSW`Vi%b* z)55LOUPa#gk>1!ZliYM6{M%!{Tf1w0gcu@i^phJUSp?kkL!V|? z&b8~@VCUq0cGDc2`S%33$UmQ|9en7+^sV&={ms)y{)w%PnmFCG?-sU&s(zwqgdqfR&cH>ES<@W1`;l2)XCaXI#F|U72}jSl8;U z+6O+eFOGU+{pWn_B~E!pyT#Wh7@mLmYST~irHF*EXlM4iMZ(oyYMIGTkL}%Hy|jn_ zpun-><`;&OY7Hme&|9h(oAo2oe9N}9^XkrSyEa(}oLe*PvguigUlZ7Btv|P3tP$Lu zWNiM&*+(jsMXaS)67`004$7r(x%(;h45?aB{2tSUXr-P=ys zQeENmRc|@_IIb&MjUP`gkFWdixnkD*m6xNmUanf4>{j(_{uApjymQa}XDH3J>0B!n zv+$5*PI2Jxd$~KTZ%#AR`m!Xxr($AnHDA;N4tv*sQ{uC?GF+`rU$Wl$Kf~TPC8a3> zjBFkek2p>qJo$F2M$|KTYUXxlezO*zylaPxYswc;tZrVm@?O+#wQqMbG_&TN zuA5U*6sNp)_Q@uWWvRwW2USd_i=X&le2lw4Z?eyw#hkv{D_+;w*>F_sNh!D`6`1dN zJ817#^YW`H8Cxax<)ux%JXs=N{C17;_K!{{Yi>&a+&EMDE4N7=e@E8YbDvg}Y<|A= zhRU+^y=?o1LT%s3<`nP$V>T(W@$d%E6AJw5zLA=*UMaO6T$9|v@~~>|)svlfu7%ki zy(~2;%{g`7ZLKU-i&Tphyi<=$J~B@{-oJd|Pfek7QO}d!Zn@=i{nAx;6!ZEzu(oAQ?EAp&jc|e{Ylr$7w)}ew(5MiZ?wm|$wP@vpbI18-yqut*)4P8~ZLN#JrM{J%65PJ7>(*5T zd;gtTxj3;c;#XAMy#uZNThvxrRXt>lQ7LtEu-^tjVSD z*x_~=IriwqdDW?h_Z4jSVp#Rp``Ud0D}#A`?KfXH{5W7Kq2BYP@7{d-iANW#)(xot z`gIX=%!RsBJ4)G;C$@dCEuL4eP`6rl@~^D<>A`m-lj$GLtI||T^4L+$>JyV z=)$|@lN@=Mu=FuLX>9!Y`MCCq?iuDMW6o#pbxbVwyjFH_+V17euFZe;_veRRv=KI2 z^{lsk>dN;Hoqad?*YwR-QhKrkqeA7{^O4u<*4p0dst+u;Y_poRM)>~8#OePYZMc54 zYHRTQoU7k%_xR45^w3w;=Hu?okE^|7_%Ad$O>a1&W2QGX{d3CvVxMJMA2U|f$lsY? z^5O2Hlqu6CG}D$!S{`Ux6yfksuwk9)%smWup0B*Qd+WZHN4njXuIgfY-sY}S=-Xgx zXBk%?e>QXKjHhk#CqMs5v9d{-_2BOHmD4`F`?Ba)lag-19zj9Iki2DUuiY+qy>9WM zrn?oFMJ~ETx?PG67QXY$@WA%vkMfG%?c2xvpMmkk>5boB$7E!zvb(we_Pa0rcV=mB z0{uVcoy5C;~)D-U)nPO|L#^7O%1rtc>2eD7Tr+Z(y?wWg`;sfU@1d)jBsl9W<; zrLe(x>A|!0;qm^S?9+J?4=zc#o4-T4v36tdP1D*{-dk0DO&$*?xoabfP3Tbk3|LXWBOoM1ex%@vjRZdsXCvufwjbuSAn z6dv^S@oVLkx4q}xe&=lP8HHq7FUE~(vv%qF`tKB7(-oy0^4#f?Lw-0{=XI&67ydJN zG^M-S=nJ_k%eEUHcp^~CVY6QC^Lp-GceT&?mkM7lG1q-|r<Tk&@dprRK%E@!+*uCT7<`7hf~OL!(#6z0q+{`*xe zaIFeUd2X<)4Iud%{m?yfyhGCvV+onIdP5CZ8HT&1|6?1PEcYgWFV9j8_@PI+A^_F&S z)25)aUdO&z?&ptZwx4xcitE{l?97`XbuV_LtWB+0by=iJY+iM)OVWl7=}YfC=ir|m zaPRT0+KfCaxk6Lvj_l(!4x*!yatar`sStM_+CO+PgC?04Ha3-zB_RlQpA$lmPdy2AeqYo06U!5Tk| z0dg9DbPw*^@@4v5>qy?^5m5;xCZEq-N?hBndWf^|bipICfv+tYsB#%~m(&RG!FG+%JCF;`r}X=R@mOO)}hnOR`xl zIBUmOo<4T(g2G?c7wXb4qZM+F#Y``ymwcOZ?$Sp=sdM+Yw1{1uPvr3oq~%nhHeTR&v@`ds%+)ZxSb-et10#cYxN zx508}_FIF$i!K@We`S4A{>H)L`Gs|B7VUU)@6rxON0S}zZxvu)O>xOIFXX??b5C;AAR&^ZF_O9yZ2p$OZw>(N*vLX zpB~|0>6!GMA*Mj$+P#cD+DP3dF5{%%b8}ZIzJIo@Z@EhHN4FOr=f}UQpZWZP=aj68 z_u?MinR)zv{fO{69m+rs-RSLLlvOZu^Q0x1{c#zs>Rb%UPSN z0p@^Id# ze+|~91>5F*`k{64_u`USUlUiZxFr5+`q!)e&fF=>R}~(MRbgqodho}LXDO3nuY?Bk zZ=Ut+<(*r5Pc+}1_3%>i<>zbPem$3EaQXi8e;hnFW$(RRnfIkE*3{ed)a&9Ij-KB9 zdQ+cYeqlYypMlAfL1^Y;n=II#16?P1~iP`Q?G_M&UJ@e$G~#c)9xw=LZzd_jxYY zz5MhHp803LEeNqHEBViG?#B!%w(5YrYi;VFb;=S5nYQa5I=*mCDW*zOhmhWBFKJ>U2Loh5kAU3PQRR;kl< znm)7A>$hnK2W@=5?$hhi;8~a6H+d%XE-)$b_jS3u&pSwW_muhC4W|palb0^O%{4jh zbeWjOt0~vxx3aiIb=JVD8F<3$c)d5TX>`&+Hr=?#g8ZK=rPxm zKhXDsEoO7yqO^rqZvEo6TfDq!-6qWked1^Rt{u8@`p@w#2F1!&lG1aVia&1O>?wMA z^W0f4>gT$|#Cke$y1ja<{p#xa_2J>3cDJHi?+2Y1eYE_(#@hX9N4ZzNx)Js2R1dpd zT04K6foHadis08%TSVfWGqh}l^HKu$-`C#v{oLAO?pXDh)+Z%T+8QS?$n|msthm@x z>YP~Ak}47Tuik#zp&pCM>gkflf4O%4u(#JM`_J&%e*XF;bKUb&oY$=}60rN#wu|Qp zpJ(Ia&yS3jCd$uM-DmVw?H}t&Ar(lLfrkUUSG(t}Yt6FDQgzQOcUf%eyX)dcs z@Ytd6@((UGbmx_Q&YZh^S@XAPYxX^kI=-*#rthU!T@wy)-?=u4IqE`D%p)o5bQNZw zJ2v52?RVz0%1zlGEp>sTYtzcBMr`wr-j!8c(!^)^pm`F9y5RloLbVt7$Lari*SP3+ zaOt$A6HW@xSI(SwziIv)laA)7V^320L(^W?&6Qode9?A?SDktyOtV%+MQB+?DyO#| z?0>j6Gdo&C@uu92bK+YwL%sdDUPgVty8Xj7hflY!^x8%R?e@-nH1GCW?_mFU=EThX z0$(Q?SchlcOlZ7uG?e-Dfj>9i$ng0&_di+t+w@&?!0kutHeGd&^w#*1(s}dXPr*AD zRn1Md4k4`5E5F>G>=$;^)K~k_v}yOW(q?Sz$;p|pbK;-;!&Tig{_s`i+a61Z=H4AD z#+bEkXQ;EPZb(3ITu(6jkK!GS zKhN2`Hhs2RZE|$!@>R!9g|@9}z5n#Hm`By=l$Y$gFGq zpFS>#arZQPJ>!*yY&^5Y`^i0%Z(sj>%w4@+-+uGTcOH|2lOF9|I%{XG3-{j@qKXfD z|1->EXgECaD9;Sr-GBb={Bu1ZTtDai_w`w_o_y+3dmrnSzq@eC@ch&MC${1)A41QZ zlmD>Qj>V?zR(+(blM9aAI<0o0POaFDm(^z!rr+9Xqo*$4x=b>DQvI#Y=C4sxWcoxE zAA4Pwy?nTCwa^C3EB{{Wq<{C{bL>+6i=BtR2H%~w`*i)yzk-FU>SqQN{xsd%+sb+3M>G463vrk*Uf$6+ru4T`i@Mb4>t zd9U!#{z;QpT-z}D#JbDE$%@mLZTMuro#o8=j|D*+;-=lcGQB2BbJ`&1KltUV zOiz30ou$9cy-v$2Ki^`k*Z0)npvKI;*AthX=dG~KQ(iFVGOz3S46yzTM(q~Wa0 z$Cf(;RC(#!%1F~!EAKk4Pp}kutI&L1&8k9S>(X=Y80`GkJkM3% z7+GNSqefMVFKeyWxl%cdEFM~ z?#q@t;98ok5BrgMqPuebJh)d2W9)u-2E9(p3f8W zR{Qe#x7Ga16N{D|JqqeGe>->F_*Q4oO_`URS1(!XojCAa(nID?XJ3rp?I}GlO0J-REdq7IDMk-{Z(%i7{70 z-mF7IQ0p5q{CaV-=RDr6Yjjyc(g1v*!Gj#mWeWZ zS^p~bS>y*QPpD3vTO9G_Xx+-{tkNUvy5(giW^eXy@zWnlt#QzLU|4y&h%9Oiy$7J5B7K@43MNL9=nfKMba+kaBzu?rg zMc+?l?A;QcJpGve4V~{3HOrlj`!KH0eb%pRe@SPn&+)(WpZ*E|z4)%Ja?Ga_TSZrC zGViL{HLKC@Q+2`h2lFZ(U-g>)IM|alrB<}ysI`5W8$17lV1KsjM)8%^CUr`e?$u10 z)pa%Q!!7B#`xc(F;O$!3ukvSy_QiLLFTZ^@ZDpSN@IX0cg5*6nS7`ufE@-?r&yn_@zyZ}fs%OVDe?#wo~7jYK@X-B+p;?{>J)a({>lWl=#oEWo?wxgCZ;2Q;%)!W<|GJOt%bm~Z`dixOvdc>muH3hmu9%u!`My%`+sxPT z7ky<*XRT5;Zuahu{$8QNP#eC~f7dUg74A=7b<3qzBul-zW_Yg9f|p@Jk^iFYHoL`H zD}$!)FuFhG!llB?;a+cJv!d@kUHM&TrgF}jV%6-p<2{z^Bw1>@&fhwI;MlcStK0WQ zuUJs8vO4W9lwAMfkDZxZmCWVXxb8smL+n=UFkl>hlb*J~iyK-CdgS>uLP0dcRv=mM)riby@D0 zvfa4~N>WiC(IPn~RVG|K=BYCI&Lqz#>-&9QTZgS^GLL?>KvciS)W)br^jX$FZs48WTus) z)S(r8GxqFbmAUa?$LF4u=a1eu&f#0UF8ZZpwEkA96^FG`nZvJb*&%#Tq`2vxor~C? z9nV`Y{t^Af^YlLhcR+jJZU5KGD>*uLN@C0kGbt%>>;CYqetY}o{%zAI-MGC{I#i^# zx$5~UmVawMLFNcwtn{1t@#VS~ON%4fR$mSXJ#c5@Or=!g!v2^>r(&yRY`dUeAq%h&nWrcJo{;`LJfnZ18sJS~gi_-Qe1PIBJ^-m1mBmd8ey zEPk+Tg>l&3?25%(FB+d+xzgs-HNLYFDm!mv96T8)m3wSgUb9QIx8U+EUYBlewXHR7 z37jJk?a#d-b%GqHMYe~+Q*V=LOGsx4$WqxR@cK zU{m0siwi|A}+Q|Fbw?=Ne1@VGuGnP8{(!1CzQ zhHnbrGD_!kosB7t>R;#@tFle|UA%bNuV~${!%l00raSwudwKu!mGpWpwM#!sMRZL~ zrJAmX>WEIAeB#r~TR%PZlx@{*b!^=qsqElmy2$-QO8SR`y)mw%_+IHscqh4zl0sZhl80r)GQbCXDU3Ak+V>czv%Rp@5GC@-o?A_yfd5pt@oL{ z-nxp_>Kz^~Nd}LOd0hKi!nS<{!y^XC1EGmagXX5I2YHEInSSa1j~PC7kycw}y#kvr zZJIRcw%pXx^`+BJ&(QkMutxWL*YBgXt3zJy`d!-jvCHz++GEoeRmO`)doN5bRP}Lx z_iL6<>H`b@?xp+B8ZI+^w&SAEy>e^cm(OpNCU^^ z#ppup zCHdM-uYL0}x6NC2GCa8W;AJd0=o~N(mm-kCt=d0rfpq$LN_m6F5h(HjprYmT-94w ztJbz{ds=kaJmX3I%}>tx^Y3aU^!6qQT9uogXLzn#P{_;sM84xi)m-k?w*^uc7pz{n z%Yoral;*1n<|`98|7l;jXqB|7+vDY|+|qaEwvH)_`z*C1xDQTU!&`joxrv+u%N(A0 zbzUJGLtgI^EqO4x+H|RE_P(zNjugqlrsvEgxv$WRL<($F2ceGvydj7J^+w@gjU0Qdq_N~a* z)2ftKZjHO*wS4;o)2YYo5BcjXU6KF%PWju{Ct`hKHsAgx{yQ-1`1-fK7e0Ry*{c5Z zKg0a_tM2U)y?wHH`5#^XL~+@3pyuommza(d@L^@}s7;;d)-B&|d1kFM6}WWS;nK^r zSq{hCF1~s$$MEO+*Qrz9ubwt_@}XBNl2bN0$Z_8|KAp{C`wo_k59H(8lQ+iYtxug6 zt6SP0 z#5JqR{i=oMt0X^*{u0%h`d&P@c7N$Msn2o|w|qksCIx<)l$GD|>(jOUKi6)bSXY;9 zWB)cYw7u5S^tH#v&Z{inP2ZYwp_SQz`}Ds)x#gVo@7(t3+t!DMZoB);$ZxWU>bjca zuehV1{;H3h^I>yZ+rrN?c|zWv?qFb8S1%{FGVS85sOJ(Bjyso^7?n)Ebl*%};E}z> z$NBG*uLl11U9)n{^s3D4!`{jTC+rq7E;iA<6ubBL@2Q$EChl9zwd3B}c>mSfPgb;< zZAg~Uw0oVeyFB2wLfegNhG+8l#EPz3t?g}dihofXAQgU4Z{^DMTeI%k8)m=MxjG@_ z(wuqAst?ph+r`=jeC4y=dw@#p6>;`B)$PIWy_R zovO-SEw)NSRMZfa)eTn)pZFR9^(YnaDTh7{D zsX8un$v#J)_ng$d+G{J4oBRGVto$meqPI*hDz~EAcBSazQwG-G_I;`H$<1?Ivg*eM zizmhNo?F^HE#YU~zw&wg%dBciap`kQzfQce#U-W#c|2bvJ}ysnd4BH4D{=FcpRZKi zvSq^dRi1YY=TtEm8Tm1s_^Kf3)cKls!^Z5c6WaO(XWy56{OL1KvMToCq$>XcH&5HW zUfsPFQ=Q^`CeL^MCa{^kJ0i1E$#1#av_sAN-|@bVy=oSH__nXx@vn~g4S(;%eu$~w zd&A=7<0sOS7Jjdl(hHqvcA2|3H27C?m*7X+=W`gW=NbRf&o9gEzYyJ)vu$ULM%wnH zp?-1B_uIv{JbCdoGor-x;uF6W(HTiczq?Ok(HPT0Np64_bnzpZ*681U=R zd8K%dN$g-c9D{SS$)kt>TZvBU$%N%bN9b(XwUB6DMUZt4LPPkkl*gXJ9<% z^;PZe1p8FpJG@sny?vee^7UNXLthIDQg@woIB&LY?U4s18_M#kcRVP3RluXQxJ>`{ z%7PVJa$E#A-S;(Y+Z}QJ=v8k)rZ&G}ZXkyI)O@ z*l(Hdp3;`JYVtAnz(2Yw%$Mw(RgW-jUahydF{ znr97vO0P2Oy37Ynwp_=O4JRGB5>y!I8L6>aWqbYU+p7r2NlU<^Bh|}V8mv>d&UGm24x8B^PsiK>%`<=@2 zDid-k+>p3fWm1LgNtN#^Q(r71bS55nctXqnnD>14_PdVZ42jd)sw`*3F}^HV*~8rY z^FPDU*scX13tfKwXW+Ya&SF-~ieL zbh{}n;4nE0Xf<6a6Ev)c5&c{~9ZQ zaI3gC@BG6r9bo9(jt-1+P9VIM)YL8+lGtPTmR;!&g0-bX4$zfQhs5g{Gxg5+Bq{_ZJ&oM*VWL>=hECA zc2Yk&e9hV~XN-Jf6V^4Eu`^zIe&Ac<$X8&+=<6kwgZOx0Y*3fObcF&8Jty>c~ zk26p0@x%3ArF-^XS+}}b<(Jv2xQV|^8h>eDOp|B$8#b4D&6YEl#P|EYx;3lf#v67c zdp!js_U|_p-__Q6`|CDOD+$#LNEW*BTvJcz^YoR|HoW_?_<)kqHSdGs52Is!bC*n8 z^*E4MSJ#^R>8wmtGaq^+&i@9Yh?nQNFZ~Nnydo4`ftl#zaawWwd9;TCe zBx5+vdpwXkl6uzY?b;i^`EE$Qerz1K)%LL7j{EQAD}#f+%j{=)emc?SOWzM!*CVMB z-HJNLd8hxJS+?`b)vQbZTtAD)+rIDH61Y(F^Y8t_&lhaJbZf=KCEJ1>Jw5#noJeRg zlvd7oBX#kB{G?xkVtZ~+-hC^Mqhk;56ZBAqwFLzk0%E@{POUrn`bKI-fmPPtv+OpO zTizG@%d0cgyIKXVJ=1VC_t@&z{aw+j$!v9L?5*ay^V-aMzI*9k>q=WMRxwY0ozm-# zxA+#YGyk@Am)>MJ-AHZ2{L{MHbAMZK+pZM-S=|2T!9{b7HpStRGTwJ$%&Y3*Ly8*QsuNEok@uk8CEjv1xw9c2+xMuXu>OXzeT)$%1 z4rbX!_gKE>pHGUMAi=+|GQ;A*KioQNtK8zHE4LpxmACw?PR-W0x`zK5w$6`V zv`ou1R&|jv+sx(@5(igKU{>C*KmElzUde~cOV|Cf^ZsyotKhcGsz;00%-wMH%pvw; zN|h{pe=OQ%3iu`aPycgHxnZNDb#b-kqohk)ugxwKY!TmWDmn4W*_?CB<{7KBxu^apj=8h*hOENp zyBWUXkNF*5O%J|&cj=DIQ$J5fK8?{ly;xr%UFi6gdvhj#v|qfP1hle4X;H^M~!+cE$;{91ni!Uus*q$5+nyMYwTWde`B#lG;o6{1W`cJ$dJp z@JY7(tG-4z?=n?;`Q!Y~z^hjCb8|~3UOM)OxAbgZ^)s1-ZDtcBjIaLa?qn&reCYch zlZv&g?)tjxO}j3#rQ~}1k)Lb7hU640ugqqPm!9Ey_yAv-<3WZVCiXDzRkN(8DnF{^ zoi5L5x3s#Bw|{R%_vWjW9}jwGw=MmAQu%O{&%|Bx%u+sHd70L`pj_p{($pQdzP{S7 zmROm2a?NVZ0~(i>r>Cda=B|DJX}e0MJoiO=-}m4CX5QLx7_G#Ir;2D8-kjyC;U@TDwjQ=?H{B4a&3sI z=yt0PO^ugIC09j-Pbl|k+%kG@dA#8QqsqL~D~b+U?f7MSZF|^M$+8!2dUsbmno%2= zU0iqhMd-QL@3+mlRp#nhQ1U(2HRk^3+O|7~O+$k_57!CKYn%M)-H&pQLW$6?udBbt zeTaEg^1W@BfTrdX!|>PEQ&gvvyvvmJZLnN^rha)+<#~@x{@}Z-Z&dT$*yla@zTJYW zrOl?lx?XV<${iOA}R?mv}&RQ~e$-mt{yI0TquDg7n z;rS5j{|vlO)Vi}w>wa84UUvWG)6JRBJf8);=*|t3Z1@oM>SpxcpFe@VGF;f$S&?27ZTqQzG^pHe26&v1P4P;j=?li{-eN z?we`$PEA{t^>vwjnJhSkqY^aOt=athTQ|gOm zuU{vUD2lgd|703p){W*<9XdoyN0J;SJfZel{-FM9w~89Z{n81 z2HUFF3i&@)-b|BBD!h_mKVM_rw~0P?7u}q^ZT0bKdpEu+voBKb4~bayG-GA!lnIy5 zd)=9{i|N=FA>(<|pU6#Mo;m5M(w+Abw{90MSh3_nKriQV*$?}k>dag>b%*8QdteycMQM&dd1lS+#S=adu{lo`hY_ z=Vg_b+ujk|aFd^5RzZDE2G8q^GaF*p5H^$OkD$`7(}ES9>#( zog)}BBpCQk&q&`VP-rpx(!sSH`7i%7H0A0j_3aedcCy0vqO{JftXEmdwO2Ou?D|@e zpr3r&p?tFZ!;bP}MsF;dK8arG*m>1!@=A5h-P^o9b=wbCZHPA2-RH&Ynzvxrg|q!e zv$oBgeB_USTf_s$C(O4m7Q5Hwe9YjzaphW;RYZoS=4$VknhzzC6(=t8I9xYZPyUSF zyj71&_tg=iOKWB7LQJnro{=W_WL}dyU!JFeg^W;P&z#2_ZG`SeEO;|yCizQ5|7SRS zymeRa=9{bMuKRJy{?^(g<=^d|)`yqLf+3VV8p&k{XFZL>Tx+>h*E~0VpMLcPf(LnCvOihVTF%|p%MmH?`Odp-nH?V|=bcVHW4^~+ zvc}~7wi~Zz|0%q7G5XDQ?&7}(Z%lhA92*d+^VgyF^Zam`NjuV4K723Vy(FT_-ziI8 zWbMK$w@;UEKe$99+H|{D=Ie$@mVHGxwU#B{;e7d+*EZ&R|D((cQm6Av&ON-aX>v@& z+UYwKUm0?pDm#&=cg$O+GSNb2OW&!+y%jeT~{i*w!Ej|TTOtzNinOUaT;Vdc%A*F0IQp4%(6<;7XwE$hYC z-R4zJ-gtY<)n(JJFMqLe?X_1Le|A+xWwaC?yFVf0@qYW6r+!cKu6=yu+v#JnrQ2_O zk2>nDP%=4)C+sIf<0WR7e0}BXr)M-3d2iTz*7WghC*N?@-9>A6bvxdDc|cU;yB7PI zV-~-dC5-AX^{(cOpEz@EsMZa48K1K4UQzkmtd`A}m>#CY9kS=1{cNd3@!n;nbDN_s z&e|(qz2)A^Sp_e1zfQbjy8MYZ=fPj1Z`Qi4)x0#j)nm(b=PRdQF5jS}v;e&Q05LC1 zMCr)0^ueKW*Im~C8S<;|xT>u${>5jZH*f8dkDoss{}36S;2*w~=}k-w$F*6jC6(vz zUiZ&C=tu4>TiZvE>r4JK2%aolxqRm~^B#-7<+kT!cbtu`wR|P>=hOT432EQv#mgMJ z#__dp)hmWCUlYRm?k%_Z&tUKRr7vWCxc#ba{;ZsOx40iAKHoIyu72lL6PI{%Nyt#S zo%f1WX1CUFdX<^+>d*2@Q_%p)MV&Vuo=>Reo@MJ$U2m|eTW|i#`+qqrmftnMwQiT! zdz<{rpQB!Atqu0)W^)Zb{CvX0^FJ0JXYI{CS9Lf#{Z*`G{?%_>zx5Whel8O+>|R1-m0!O-D-Sna#*@)`G1Ck+cw<%siilo`d(?+)J#3mDHo=P1R0pC zTyeX2K;}>G=>nrFU-T9R#51O>B>A}^!gBOAKl%e`Go zzUQVVZoaShQa3yM#p3x3Nohx zWuHBr_5RmnhdYO>BvpB%m-jBV`KQiV`Jdru;em%0e9J$2ZmJ7dKJWalZ&K-EU-my* z{i(Tu^~e{m6oo&}j`0;AEB&RrZMvSZrfcx=6^{~jX&v?a<{xtTU((^jj@f(=A7!l4oF6QctB`n(v3G{>q{63yJw-)Z)H?6{Roy9aezsGV zwe81^rt4--Db1~!(4M~hOuwzqIetFoOE|s9 zEG!wCELoT~AKU${?(Mq;t8(jFSMJHEo|90Szdb~9A>ZGB?ei8C9zXD{KPELU_{qG) zbG<$)_q~2b)t zI$7M~KY99G^*U!%=2w;DQ(d!W6+Zqk>#K--{`cLE?`9}FyjpF0udHX+ zG|OLFQg&(Lj~wil?s)$xxOK&&f*C!!?p}LjRCcM%sy!d6WE2$cqomYVg?%Iyi>Rcy z4|ly){#}ms`q9a|?CPy`o`ro;@nQGlSI@pZ z|FX98)o^L`EvNd#Woq{?=gF0LC++e5Kf|&4uW$cIzt1c3C_i)Bn(A4c%dbYQa_~6E zKRe{ke}-%SvS0cvwRk$?RsZwUEq?>2)UnAex6}T9^U4;Nc+;7X%nWJEU@wXGoONE7 zE4AyU>h{p6x8J*KmWW@v9&A)`$36Md12^}xRT-<72bDZo&Yrf-bc<=R(L4Fgud}yy zFI#!J;LeuXqi^h@- zW&KwNcCV?s5WTE-)#9x`I&Npbo4IcC3eRv)=EpfR>^rA?{<3>X;T(_u3^U%hE;Rdm zWZlho-O5tV5mBnEra4MyWIg@vHQnZynPgSm`?CxBS8dSy7G1Ys!KAjoj;=+Erpu+8 zrtr=(f4nW~fn((7!aYp6cDqtTuB}cDo4g}LZlmq2x{g_I5^4|sTFiTnGn?7Ck3(gu z{%K43nfB8c26LKU_Wg09uyE><=^-hnN(u#TT-os|ZGvn2-G`TtlpQm3-1xi0G9B|iO~rQp%ffdPt08W^~-}* z@`sh<|1&JvAMrERR`<%U)$8?+AATP4O>WQQ{_7Xx;|v-XeGGp1XtVB->nj#W%KzIm zr~acT=fmcO_b%;?@i~)Ms<%StRfbyd^N<2gWp>Fj2X$U$nMrojPt*lZn)>?v0YCe) zrJ)}UzLti2f8WRP%1cRq7S90}Jl74N43>zWkI!Ga>yo#3$+G2Zmd@O3ty z>#E9E*Y9f2u&D}prOq3}*HEGN(QwuGU$Y*ZE%r_6{r0PF*=a{#6~BoGAMPv<>66{( zpzG4HukvXwSBP=fm6xt=ny)+~%awK8b1(b0xI{gyfb^V@I#DQ0gZ*3b9@|bXEVFx> zUyvHgdu~-ljGIGE@x`6X?g0{zx>Mo d5##Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index c7f8572b29..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,85 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 27 !NATOM - 1 1 2 2 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 1 1 0.000000 1.0000 0 - 5 1 2 2 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 3 3 0.000000 1.0000 0 - 8 1 3 3 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 2 2 0.000000 1.0000 0 - 11 1 1 1 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 2 2 0.000000 1.0000 0 - 15 1 3 3 0.000000 1.0000 0 - 16 1 3 3 0.000000 1.0000 0 - 17 1 3 3 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 1 1 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 2 2 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 1 1 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 2 2 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - - 26 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 17 - 17 18 18 19 19 20 20 21 - 21 22 22 23 23 24 24 25 - 25 26 26 27 - - 25 !NTHETA: angles - 13 14 15 7 8 9 6 7 8 - 16 17 18 15 16 17 2 3 4 - 4 5 6 9 10 11 11 12 13 - 14 15 16 1 2 3 3 4 5 - 10 11 12 12 13 14 25 26 27 - 5 6 7 8 9 10 17 18 19 - 18 19 20 22 23 24 21 22 23 - 19 20 21 20 21 22 23 24 25 - 24 25 26 - - 19 !NPHI: dihedrals - 1 2 3 4 2 3 4 5 - 3 4 5 6 4 5 6 7 - 8 9 10 11 9 10 11 12 - 10 11 12 13 11 12 13 14 - 12 13 14 15 15 16 17 18 - 16 17 18 19 17 18 19 20 - 18 19 20 21 19 20 21 22 - 20 21 22 23 21 22 23 24 - 22 23 24 25 23 24 25 26 - 24 25 26 27 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/initial_conformation_t=0tau.jpg b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/initial_conformation_t=0tau.jpg deleted file mode 100644 index 0869126bd018ee959e0e01d755f58361de02fc88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23358 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 Ge-i)>Hu?1c diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated.lt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated.lt deleted file mode 100644 index 074b55c735..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated.lt +++ /dev/null @@ -1,216 +0,0 @@ -# This file defines the "frustrated" coarse-grained protein model used in: -# AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) -# (http://www.pnas.org/content/101/36/13192) - - -1beadFrustrated { - - # There are 3 atom types (referred to above as B, L, and N) - # Define their masses: - - write_once("Data Masses") { - @atom:B 1.0 - @atom:L 1.0 - @atom:N 1.0 - } - - # AtomID MoleculeID AtomType Charge X Y Z - - write("Data Atoms") { - $atom:a1 $mol @atom:L 0.0 -0.92636654 -1.8409904 -2.1482679 - $atom:a2 $mol @atom:B 0.0 -0.57313354 -1.0670787 -1.6182341 - $atom:a3 $mol @atom:L 0.0 -0.85707399 -1.2358703 -0.69350966 - $atom:a4 $mol @atom:B 0.0 -0.44231274 -0.4584993 -0.23418709 - $atom:a5 $mol @atom:L 0.0 -0.75081182 -0.62868078 0.69786737 - $atom:a6 $mol @atom:B 0.0 -0.36201977 0.11619615 1.2249098 - $atom:a7 $mol @atom:N 0.0 -0.63708237 -0.15973084 2.1723919 - $atom:a8 $mol @atom:N 0.0 0.20516047 0.10417157 2.624901 - $atom:a9 $mol @atom:B 0.0 0.57223743 0.44728103 1.7695617 - $atom:a10 $mol @atom:L 0.0 0.77646279 -0.40630393 1.3168043 - $atom:a11 $mol @atom:B 0.0 0.45475664 -0.2077937 0.40045721 - $atom:a12 $mol @atom:L 0.0 0.72712495 -1.0397637 -0.087614951 - $atom:a13 $mol @atom:B 0.0 0.36971183 -0.85840501 -0.9933019 - $atom:a14 $mol @atom:L 0.0 0.74784336 -1.5700415 -1.5859217 - $atom:a15 $mol @atom:N 0.0 0.43423905 -1.2758917 -2.4853429 - $atom:a16 $mol @atom:N 0.0 0.70583191 -0.30726921 -2.4987711 - $atom:a17 $mol @atom:N 0.0 -0.091688915 0.23323014 -2.2051358 - $atom:a18 $mol @atom:B 0.0 -0.34243283 -0.035822049 -1.2644719 - $atom:a19 $mol @atom:B 0.0 0.41961247 0.18475451 -0.65971014 - $atom:a20 $mol @atom:L 0.0 0.51968465 1.1546791 -0.77877053 - $atom:a21 $mol @atom:L 0.0 -0.40827985 1.2765273 -0.52550748 - $atom:a22 $mol @atom:B 0.0 -0.368141 0.58090904 0.19152224 - $atom:a23 $mol @atom:B 0.0 0.40327249 0.86101769 0.7336255 - $atom:a24 $mol @atom:L 0.0 0.22707289 1.8326235 0.89673346 - $atom:a25 $mol @atom:L 0.0 -0.66500182 1.7285809 1.2783166 - $atom:a26 $mol @atom:B 0.0 -0.39205603 1.0475436 1.9328097 - $atom:a27 $mol @atom:L 0.0 0.25339027 1.5246265 2.5388463 - } - - # bond-ID bond-Type atom-ID atom-ID - - write("Data Bonds") { - $bond:b1 @bond:backbone $atom:a1 $atom:a2 - $bond:b2 @bond:backbone $atom:a2 $atom:a3 - $bond:b3 @bond:backbone $atom:a3 $atom:a4 - $bond:b4 @bond:backbone $atom:a4 $atom:a5 - $bond:b5 @bond:backbone $atom:a5 $atom:a6 - $bond:b6 @bond:backbone $atom:a6 $atom:a7 - $bond:b7 @bond:backbone $atom:a7 $atom:a8 - $bond:b8 @bond:backbone $atom:a8 $atom:a9 - $bond:b9 @bond:backbone $atom:a9 $atom:a10 - $bond:b10 @bond:backbone $atom:a10 $atom:a11 - $bond:b11 @bond:backbone $atom:a11 $atom:a12 - $bond:b12 @bond:backbone $atom:a12 $atom:a13 - $bond:b13 @bond:backbone $atom:a13 $atom:a14 - $bond:b14 @bond:backbone $atom:a14 $atom:a15 - $bond:b15 @bond:backbone $atom:a15 $atom:a16 - $bond:b16 @bond:backbone $atom:a16 $atom:a17 - $bond:b17 @bond:backbone $atom:a17 $atom:a18 - $bond:b18 @bond:backbone $atom:a18 $atom:a19 - $bond:b19 @bond:backbone $atom:a19 $atom:a20 - $bond:b20 @bond:backbone $atom:a20 $atom:a21 - $bond:b21 @bond:backbone $atom:a21 $atom:a22 - $bond:b22 @bond:backbone $atom:a22 $atom:a23 - $bond:b23 @bond:backbone $atom:a23 $atom:a24 - $bond:b24 @bond:backbone $atom:a24 $atom:a25 - $bond:b25 @bond:backbone $atom:a25 $atom:a26 - $bond:b26 @bond:backbone $atom:a26 $atom:a27 - } - - # (3-body) Angles are specified below - - # (4-body) Dihedrals must be defined explicitly for every quartet of atoms. - # (These interactions are not determined by atom type.) - - # dihedral-ID dihedral-Type atom-ID atom-ID atom-ID atom-ID - - write("Data Dihedrals") { - - $dihedral:d1 @dihedral:beta $atom:a1 $atom:a2 $atom:a3 $atom:a4 - $dihedral:d2 @dihedral:beta $atom:a2 $atom:a3 $atom:a4 $atom:a5 - $dihedral:d3 @dihedral:beta $atom:a3 $atom:a4 $atom:a5 $atom:a6 - $dihedral:d4 @dihedral:beta $atom:a4 $atom:a5 $atom:a6 $atom:a7 - - # Dihedral angle forces in the turn regions were switched off - # (in this model) so just I comment them out (and \ the variable names). - # \$dihedral:d5 \@dihedral:turn $atom:a5 $atom:a6 $atom:a7 $atom:a8 - # \$dihedral:d6 \@dihedral:turn $atom:a6 $atom:a7 $atom:a8 $atom:a9 - # \$dihedral:d7 \@dihedral:turn $atom:a7 $atom:a8 $atom:a9 $atom:a10 - - $dihedral:d8 @dihedral:beta $atom:a8 $atom:a9 $atom:a10 $atom:a11 - $dihedral:d9 @dihedral:beta $atom:a9 $atom:a10 $atom:a11 $atom:a12 - $dihedral:d10 @dihedral:beta $atom:a10 $atom:a11 $atom:a12 $atom:a13 - $dihedral:d11 @dihedral:beta $atom:a11 $atom:a12 $atom:a13 $atom:a14 - $dihedral:d12 @dihedral:beta $atom:a12 $atom:a13 $atom:a14 $atom:a15 - - # Dihedral angle forces in the turn regions were switched off - # (in this model) so just I comment them out (and \ the variable names). - # \$dihedral:d13 \@dihedral:turn $atom:a13 $atom:a14 $atom:a15 $atom:a16 - # \$dihedral:d14 \@dihedral:turn $atom:a14 $atom:a15 $atom:a16 $atom:a17 - - $dihedral:d15 @dihedral:alpha $atom:a15 $atom:a16 $atom:a17 $atom:a18 - $dihedral:d16 @dihedral:alpha $atom:a16 $atom:a17 $atom:a18 $atom:a19 - $dihedral:d17 @dihedral:alpha $atom:a17 $atom:a18 $atom:a19 $atom:a20 - $dihedral:d18 @dihedral:alpha $atom:a18 $atom:a19 $atom:a20 $atom:a21 - $dihedral:d19 @dihedral:alpha $atom:a19 $atom:a20 $atom:a21 $atom:a22 - $dihedral:d20 @dihedral:alpha $atom:a20 $atom:a21 $atom:a22 $atom:a23 - $dihedral:d21 @dihedral:alpha $atom:a21 $atom:a22 $atom:a23 $atom:a24 - $dihedral:d22 @dihedral:alpha $atom:a22 $atom:a23 $atom:a24 $atom:a25 - $dihedral:d23 @dihedral:alpha $atom:a23 $atom:a24 $atom:a25 $atom:a26 - $dihedral:d24 @dihedral:alpha $atom:a24 $atom:a25 $atom:a26 $atom:a27 - } - - # All consecutively bonded triplets of atoms same 3-body bond-angle - # interaction parameters. Of coarse, we could specify them all explicitly - # (as we did for the dihedrals above), but I wanted to show how to specify - # angles by atom type instead. (You can do this for dihedrals & impropers - # also.) - - # angle-Type atom-Type atom-Type atom-Type bond-Type bond-Type - - write_once("Data Angles By Type") { - @angle:backbone @atom:* @atom:* @atom:* @bond:* @bond:* - } - - # (The "*" is a wildcard character. I use "*" to denote any atom-type or - # bond-type which is defined within the current namespace: 1beadFrustrated) - - - # 2-body (non-bonded) interactions: - # - # Uij(r) = 4*eps_ij * (K*(sig_ij/r)^12 + L*(sig_ij/r)^6) - # - # i j pairstylename eps sig K L - # - write_once("In Settings") { - pair_coeff @atom:B @atom:B lj/charmm/coul/charmm/inter 1.0 1.0 1 -1 - pair_coeff @atom:B @atom:L lj/charmm/coul/charmm/inter 0.5833333333 1.0 1 0 - pair_coeff @atom:B @atom:N lj/charmm/coul/charmm/inter 0.6666666667 1.0 1 0 - pair_coeff @atom:L @atom:L lj/charmm/coul/charmm/inter 0.1666666667 1.0 1 1 - pair_coeff @atom:L @atom:N lj/charmm/coul/charmm/inter 0.25 1.0 1 0 - pair_coeff @atom:N @atom:N lj/charmm/coul/charmm/inter 0.3333333333 1.0 1 0 - } - - - # 2-body (bonded) interactions: - # - # Ubond(r) = (k/2)*(r-0)^2 - # - # The corresponding command is: - # - # bond-Type bondstylename k r0 - - write_once("In Settings") { - bond_coeff @bond:backbone harmonic 100.0 1.0 - } - - # 3-body interactions in this example are listed by atomType and bondType - # The atomIDs involved are determined automatically. The forumula used is: - # - # Uangle(theta) = (k/2)*(theta-theta0)^2 - # (k in kcal/mol/rad^2, theta0 in degrees) - # - # angle-Type anglestylename k theta0 - - write_once("In Settings") { - angle_coeff @angle:backbone harmonic 13.3333333333 105.0 - } - - - # We use tabular dihedral potentials to implement the dihedral forces. - # (Actually there is a way to use Fourier series, using multiple charmm - # style dihedral interactions, but it's slower and messier.) - - write_once("In Settings") { - # style file keyword - dihedral_coeff @dihedral:alpha table table_dihedral_frustrated.dat FRUSTRATED_ALPHA - dihedral_coeff @dihedral:beta table table_dihedral_frustrated.dat FRUSTRATED_BETA - # No need to specify dihedral interactions in the turn regions. (none exist) - } - - write_once("In Settings") { - # Optional: define the atoms in the "proteins" group - group proteins type @atom:B - group proteins type @atom:L - group proteins type @atom:N - } - - # LAMMPS has many available force field styles (and atom styles). - # Here, we pick the ones which work well for this molecular model: - - write_once("In Init") { - # --- Default options for the "1BeadFrustrated" protein model --- - # --- (These can be overridden later.) --- - units lj - atom_style full - bond_style hybrid harmonic - angle_style hybrid harmonic - dihedral_style hybrid table spline 360 - pair_style hybrid lj/charmm/coul/charmm/inter es4k4l maxmax 3.5 4.0 - pair_modify mix arithmetic - special_bonds lj 0.0 0.0 1.0 #(turn on "1-4" interactions) - } - -} # 1beadFrustrated - - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated_variants.lt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated_variants.lt deleted file mode 100644 index 54e2de4376..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated_variants.lt +++ /dev/null @@ -1,85 +0,0 @@ -import "1beadFrustrated.lt" - - -# Alternate starting conformation (same molecule): - - -1beadMisfolded inherits 1beadFrustrated { - - # This molecule "inherits" all of its features from "1beadFrustrated". - # Here we override the atomic positions with new coordinates: - - # AtomID MoleculeID AtomType Charge X Y Z - - write("Data Atoms") { - $atom:a1 $mol @atom:L 0.0 -0.69801399 -0.22114168 -1.9464876 - $atom:a2 $mol @atom:B 0.0 -0.40921658 -0.027063664 -1.0033251 - $atom:a3 $mol @atom:L 0.0 0.10259348 0.80836418 -1.0737085 - $atom:a4 $mol @atom:B 0.0 0.25857916 1.0054984 -0.11621451 - $atom:a5 $mol @atom:L 0.0 0.8258629 1.8325549 -0.18529135 - $atom:a6 $mol @atom:B 0.0 0.91366257 2.1950317 0.74175977 - $atom:a7 $mol @atom:N 0.0 1.4399539 1.554238 1.2994409 - $atom:a8 $mol @atom:N 0.0 0.73372573 1.0161012 1.7397275 - $atom:a9 $mol @atom:B 0.0 0.26608782 0.65302497 0.94353938 - $atom:a10 $mol @atom:L 0.0 0.97442305 0.13574211 0.50586398 - $atom:a11 $mol @atom:B 0.0 0.35889617 -0.18247555 -0.1764186 - $atom:a12 $mol @atom:L 0.0 0.87151735 -0.77260824 -0.75240916 - $atom:a13 $mol @atom:B 0.0 0.047726486 -1.0530682 -1.1902704 - $atom:a14 $mol @atom:L 0.0 0.34530697 -1.7476773 -1.8393331 - $atom:a15 $mol @atom:N 0.0 0.65865186 -2.45948 -1.2167056 - $atom:a16 $mol @atom:N 0.0 -0.16534524 -2.6219442 -0.67112167 - $atom:a17 $mol @atom:N 0.0 -0.010590421 -2.2445242 0.24748633 - $atom:a18 $mol @atom:B 0.0 0.18135771 -1.2564919 0.1767523 - $atom:a19 $mol @atom:B 0.0 -0.57472665 -0.82852797 -0.27027791 - $atom:a20 $mol @atom:L 0.0 -1.3967448 -1.0516787 0.24247346 - $atom:a21 $mol @atom:L 0.0 -1.003428 -0.85642681 1.1107555 - $atom:a22 $mol @atom:B 0.0 -0.25156735 -0.3182346 0.74262946 - $atom:a23 $mol @atom:B 0.0 -0.61751956 0.30115562 0.070426493 - $atom:a24 $mol @atom:L 0.0 -1.3347934 0.83310182 0.52625934 - $atom:a25 $mol @atom:L 0.0 -0.83315257 1.270904 1.2564086 - $atom:a26 $mol @atom:B 0.0 -0.10469759 1.6988523 0.72597181 - $atom:a27 $mol @atom:L 0.0 -0.57854905 2.3367737 0.11206868 - } - -} # 1beadMisfolded - - -1beadUnfolded inherits 1beadFrustrated { - - # This molecule "inherits" all of its features from "1beadFrustrated" - # Here we override the atomic positions with new coordinates: - - # AtomID MoleculeID AtomType Charge X Y Z - - write('Data Atoms') { - $atom:a1 $mol @atom:L 0.0 -2.4 1.7 -0.0 - $atom:a2 $mol @atom:B 0.0 -1.8 1.7 0.8 - $atom:a3 $mol @atom:L 0.0 -1.2 2.5 0.8 - $atom:a4 $mol @atom:B 0.0 -0.6 2.5 -0.0 - $atom:a5 $mol @atom:L 0.0 0.0 1.7 -0.0 - $atom:a6 $mol @atom:B 0.0 0.6 1.7 0.8 - $atom:a7 $mol @atom:N 0.0 1.2 2.5 0.8 - $atom:a8 $mol @atom:N 0.0 1.8 2.5 -0.0 - $atom:a9 $mol @atom:B 0.0 2.4 1.7 -0.0 - $atom:a10 $mol @atom:L 0.0 3.0 1.7 -0.8 - $atom:a11 $mol @atom:B 0.0 3.0 0.7 -0.8 - $atom:a12 $mol @atom:L 0.0 3.0 0.1 -0.0 - $atom:a13 $mol @atom:B 0.0 3.8 -0.5 -0.0 - $atom:a14 $mol @atom:L 0.0 3.8 -1.1 -0.8 - $atom:a15 $mol @atom:N 0.0 3.0 -1.7 -0.8 - $atom:a16 $mol @atom:N 0.0 3.0 -1.7 0.2 - $atom:a17 $mol @atom:N 0.0 2.4 -2.5 0.2 - $atom:a18 $mol @atom:B 0.0 1.8 -2.5 -0.6 - $atom:a19 $mol @atom:B 0.0 1.2 -1.7 -0.6 - $atom:a20 $mol @atom:L 0.0 0.6 -1.7 0.2 - $atom:a21 $mol @atom:L 0.0 -0.0 -2.5 0.2 - $atom:a22 $mol @atom:B 0.0 -0.6 -2.5 -0.6 - $atom:a23 $mol @atom:B 0.0 -1.2 -1.7 -0.6 - $atom:a24 $mol @atom:L 0.0 -1.8 -1.7 0.2 - $atom:a25 $mol @atom:L 0.0 -2.4 -2.5 0.2 - $atom:a26 $mol @atom:B 0.0 -3.0 -2.5 -0.6 - $atom:a27 $mol @atom:L 0.0 -3.6 -1.7 -0.6 - } - -} # 1beadUnfolded - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py deleted file mode 100755 index 34c66418a8..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python - -# Calculate a table of dihedral angle interactions used in the alpha-helix -# and beta-sheet regions of the frustrated protein model described in -# provided in figure 8 of the supplemental materials section of: -# AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) -# Note that the "A" and "B" parameters were incorrectly reported to be -# 5.4*epsilon and 6.0*epsilon. The values used were 5.6 and 6.0 epsilon. -# The phiA and phiB values were 57.29577951308232 degrees (1 rad) -# and 180 degrees, respectively. Both expA and expB were 6.0. -# -# To generate the table used for the alpha-helix (1 degree resolution) use this: -# ./calc_dihedral_table.py 6.0 57.29577951308232 6 5.6 180 6 0.0 359 360 -# To generate the table used for the beta-sheets (1 degree resolution) use this: -# ./calc_dihedral_table.py 5.6 57.29577951308232 6 6.0 180 6 0.0 359 360 -# -# (If you're curious as to why I set the location of the minima at phi_alpha -# to 1.0 radians (57.2957795 degrees), there was no particularly good reason. -# I think the correct value turns out to be something closer to 50 degrees.) - - -from math import * -import sys - - -# The previous version included the repulsive core term -def U(phi, A, phiA, expA, B, phiB, expB, use_radians=False): - conv_units = pi/180.0 - if use_radians: - conv_units = 1.0 - termA = pow(cos(0.5*(phi-phiA)*conv_units), expA) - termB = pow(cos(0.5*(phi-phiB)*conv_units), expB) - return -A*termA - B*termB - -# The previous version included the repulsive core term -def F(phi, A, phiA, expA, B, phiB, expB, use_radians=False): - conv_units = pi/180.0 - if use_radians: - conv_units = 1.0 - termA = (0.5*sin(0.5*(phi-phiA)*conv_units) * - expA * pow(cos(0.5*(phi-phiA)*conv_units), expA-1.0)) - termB = (0.5*sin(0.5*(phi-phiB)*conv_units) * - expB * pow(cos(0.5*(phi-phiB)*conv_units), expB-1.0)) - return -conv_units*(A*termA + B*termB) - -if len(sys.argv) != 10: - sys.stderr.write("Error: expected 9 arguments:\n" - "\n" - "Usage: "+sys.argv[0]+" A phiA expA B phiB expB phiMin phiMax N\n\n") - sys.exit(-1) - -A = float(sys.argv[1]) -phiA = float(sys.argv[2]) -expA = float(sys.argv[3]) -B = float(sys.argv[4]) -phiB = float(sys.argv[5]) -expB = float(sys.argv[6]) -phi_min = float(sys.argv[7]) -phi_max = float(sys.argv[8]) -N = int(sys.argv[9]) - -for i in range(0,N): - phi = phi_min + i*(phi_max - phi_min)/(N-1) - U_phi = U(phi, A, phiA, expA, B, phiB, expB, use_radians=False) - F_phi = F(phi, A, phiA, expA, B, phiB, expB, use_radians=False) - print(str(i+1)+' '+str(phi)+' '+str(U_phi)+' '+str(F_phi)) - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/system.lt deleted file mode 100644 index a27595559e..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/system.lt +++ /dev/null @@ -1,20 +0,0 @@ -import "1beadFrustrated_variants.lt" - - -protein = new 1beadUnfolded - - - -# Note: The protein begins in an "Unfolded" conformation. If instead -# you want it to begin in the folded or misfolded conformations use: -# protein = new 1beadFrustrated # or -# protein = new 1beadMisfolded - - - -# ("27.0" is the length of the protein when maximally extended) -write_once("Data Boundary") { - 0.0 27.0 xlo xhi - 0.0 27.0 ylo yhi - 0.0 27.0 zlo zhi -} diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/table_dihedral_frustrated.dat b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/table_dihedral_frustrated.dat deleted file mode 100644 index d660fee308..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/table_dihedral_frustrated.dat +++ /dev/null @@ -1,735 +0,0 @@ -# Table of the potential and its negative derivative for frustrated alpha helix -# (Note: Derivatives are in units of energy/radians, not energy/degrees.) -# ./calc_dihedral_table.py 6.0 57.29577951308232 6 5.6 180 6 0.0 359 360 - -FRUSTRATED_ALPHA -N 360 DEGREES - -1 0.0 -2.74081145103 0.0783990792662 -2 1.0 -2.81950869101 0.0789852583442 -3 2.0 -2.89876136749 0.0795096391909 -4 3.0 -2.97850675562 0.0799703813963 -5 4.0 -3.05868032959 0.0803657243943 -6 5.0 -3.13921584545 0.0806939935737 -7 6.0 -3.22004543014 0.0809536062381 -8 7.0 -3.30109967628 0.0811430773977 -9 8.0 -3.38230774267 0.0812610253741 -10 9.0 -3.46359746038 0.0813061772009 -11 10.0 -3.54489544401 0.0812773738039 -12 11.0 -3.62612720812 0.0811735749433 -13 12.0 -3.70721728841 0.0809938639029 -14 13.0 -3.78808936748 0.080737451911 -15 14.0 -3.86866640485 0.0804036822781 -16 15.0 -3.94887077101 0.0799920342374 -17 16.0 -4.02862438516 0.0795021264757 -18 17.0 -4.10784885622 0.0789337203415 -19 18.0 -4.18646562704 0.0782867227197 -20 19.0 -4.26439612115 0.0775611885609 -21 20.0 -4.34156189202 0.0767573230567 -22 21.0 -4.41788477419 0.0758754834523 -23 22.0 -4.49328703609 0.0749161804868 -24 23.0 -4.56769153408 0.0738800794563 -25 24.0 -4.64102186743 0.0727680008923 -26 25.0 -4.71320253365 0.0715809208518 -27 26.0 -4.78415908407 0.0703199708131 -28 27.0 -4.85381827903 0.0689864371778 -29 28.0 -4.92210824234 0.067581760373 -30 29.0 -4.98895861476 0.0661075335571 -31 30.0 -5.05430070586 0.0645655009259 -32 31.0 -5.11806764409 0.0629575556235 -33 32.0 -5.18019452449 0.061285737258 -34 33.0 -5.24061855376 0.0595522290273 -35 34.0 -5.29927919225 0.0577593544584 -36 35.0 -5.3561182925 0.0559095737673 -37 36.0 -5.41108023395 0.0540054798439 -38 37.0 -5.46411205346 0.0520497938726 -39 38.0 -5.51516357127 0.0500453605949 -40 39.0 -5.56418751203 0.0479951432253 -41 40.0 -5.61113962059 0.0459022180302 -42 41.0 -5.65597877221 0.0437697685824 -43 42.0 -5.69866707689 0.0416010797029 -44 43.0 -5.7391699774 0.0393995311046 -45 44.0 -5.77745634094 0.0371685907508 -46 45.0 -5.81349854393 0.034911807945 -47 46.0 -5.84727254977 0.0326328061676 -48 47.0 -5.87875797937 0.030335275675 -49 48.0 -5.90793817411 0.0280229658805 -50 49.0 -5.93480025113 0.0256996775336 -51 50.0 -5.95933515063 0.0233692547166 -52 51.0 -5.98153767519 0.0210355766777 -53 52.0 -6.00140652074 0.0187025495211 -54 53.0 -6.01894429926 0.016374097773 -55 54.0 -6.03415755288 0.0140541558448 -56 55.0 -6.04705675953 0.0117466594146 -57 56.0 -6.05765632981 0.00945553674764 -58 57.0 -6.06597459526 0.00718469997761 -59 58.0 -6.07203378786 0.00493803637051 -60 59.0 -6.07586001075 0.00271939959245 -61 60.0 -6.07748320034 0.000532601003776 -62 61.0 -6.07693707962 -0.00161859899905 -63 62.0 -6.07425910291 -0.00373049957158 -64 63.0 -6.06949039207 -0.00579946791801 -65 64.0 -6.06267566421 -0.00782194767468 -66 65.0 -6.05386315117 -0.00979446715893 -67 66.0 -6.04310451074 -0.0117136474624 -68 67.0 -6.03045472992 -0.0135762103679 -69 68.0 -6.01597202036 -0.0153789860691 -70 69.0 -5.99971770618 -0.0171189206741 -71 70.0 -5.98175610439 -0.0187930834719 -72 71.0 -5.9621543982 -0.0203986739443 -73 72.0 -5.9409825034 -0.0219330285036 -74 73.0 -5.91831292823 -0.0233936269399 -75 74.0 -5.89422062685 -0.0247780985587 -76 75.0 -5.86878284696 -0.0260842279959 -77 76.0 -5.84207897162 -0.0273099606906 -78 77.0 -5.81419035593 -0.0284534080045 -79 78.0 -5.78520015867 -0.0295128519729 -80 79.0 -5.7551931694 -0.0304867496727 -81 80.0 -5.72425563141 -0.0313737371989 -82 81.0 -5.6924750609 -0.0321726332348 -83 82.0 -5.65994006273 -0.0328824422092 -84 83.0 -5.62674014332 -0.0335023570292 -85 84.0 -5.59296552097 -0.0340317613814 -86 85.0 -5.55870693409 -0.0344702315961 -87 86.0 -5.52405544786 -0.0348175380654 -88 87.0 -5.48910225957 -0.0350736462148 -89 88.0 -5.45393850338 -0.0352387170203 -90 89.0 -5.41865505462 -0.0353131070729 -91 90.0 -5.38334233438 -0.0352973681855 -92 91.0 -5.34809011465 -0.0351922465446 -93 92.0 -5.31298732458 -0.0349986814067 -94 93.0 -5.27812185824 -0.034717803342 -95 94.0 -5.24358038438 -0.0343509320285 -96 95.0 -5.2094481586 -0.0338995736008 -97 96.0 -5.17580883839 -0.0333654175598 -98 97.0 -5.14274430152 -0.0327503332496 -99 98.0 -5.11033446814 -0.0320563659092 -100 99.0 -5.07865712698 -0.0312857323082 -101 100.0 -5.04778776623 -0.0304408159764 -102 101.0 -5.01779940929 -0.0295241620384 -103 102.0 -4.98876245596 -0.0285384716647 -104 103.0 -4.96074452928 -0.0274865961525 -105 104.0 -4.93381032851 -0.0263715306507 -106 105.0 -4.90802148862 -0.0251964075427 -107 106.0 -4.88343644644 -0.0239644895038 -108 107.0 -4.86011031397 -0.0226791622487 -109 108.0 -4.83809475914 -0.0213439269874 -110 109.0 -4.81743789414 -0.0199623926068 -111 110.0 -4.79818417182 -0.0185382675969 -112 111.0 -4.78037429015 -0.0170753517415 -113 112.0 -4.76404510526 -0.0155775275918 -114 113.0 -4.74922955293 -0.0140487517461 -115 114.0 -4.73595657904 -0.0124930459538 -116 115.0 -4.7242510789 -0.0109144880672 -117 116.0 -4.71413384576 -0.00931720286182 -118 117.0 -4.70562152846 -0.00770535274772 -119 118.0 -4.69872659855 -0.00608312839491 -120 119.0 -4.69345732669 -0.00445473929448 -121 120.0 -4.6898177686 -0.00282440427898 -122 121.0 -4.68780776044 -0.00119634202478 -123 122.0 -4.68742292374 0.000425238440527 -124 123.0 -4.68865467977 0.0020361472029 -125 124.0 -4.69149027336 0.00363222287571 -126 125.0 -4.69591280613 0.00520934194008 -127 126.0 -4.70190127895 0.0067634279891 -128 127.0 -4.70943064365 0.00829046085365 -129 128.0 -4.71847186379 0.00978648558781 -130 129.0 -4.72899198423 0.0112476212922 -131 130.0 -4.74095420961 0.0126700697544 -132 131.0 -4.7543179912 0.0140501238848 -133 132.0 -4.76903912216 0.0153841759291 -134 133.0 -4.78506984093 0.0166687254364 -135 134.0 -4.80235894235 0.0179003869651 -136 135.0 -4.82085189642 0.0190758975074 -137 136.0 -4.84049097437 0.0201921236154 -138 137.0 -4.86121538156 0.0212460682116 -139 138.0 -4.88296139722 0.0222348770682 -140 139.0 -4.90566252032 0.0231558449399 -141 140.0 -4.9292496215 0.0240064213355 -142 141.0 -4.95365110055 0.0247842159162 -143 142.0 -4.97879304911 0.0254870035063 -144 143.0 -5.00459941816 0.0261127287073 -145 144.0 -5.03099218995 0.0266595101027 -146 145.0 -5.05789155387 0.0271256440463 -147 146.0 -5.08521608601 0.0275096080241 -148 147.0 -5.11288293171 0.0278100635833 -149 148.0 -5.14080799097 0.0280258588231 -150 149.0 -5.16890610603 0.0281560304409 -151 150.0 -5.19709125082 0.0281998053314 -152 151.0 -5.22527672173 0.0281566017347 -153 152.0 -5.25337532941 0.0280260299338 -154 153.0 -5.28129959092 0.0278078924984 -155 154.0 -5.30896192196 0.0275021840788 -156 155.0 -5.33627482866 0.0271090907491 -157 156.0 -5.36315109852 0.0266289889046 -158 157.0 -5.38950398994 0.026062443717 -159 158.0 -5.41524742011 0.0254102071518 -160 159.0 -5.44029615055 0.0246732155563 -161 160.0 -5.46456597019 0.0238525868232 -162 161.0 -5.48797387528 0.0229496171403 -163 162.0 -5.51043824587 0.0219657773349 -164 163.0 -5.53187901853 0.0209027088232 -165 164.0 -5.55221785468 0.0197622191769 -166 165.0 -5.57137830441 0.0185462773191 -167 166.0 -5.58928596528 0.0172570083629 -168 167.0 -5.60586863576 0.0158966881068 -169 168.0 -5.62105646307 0.0144677372016 -170 169.0 -5.63478208493 0.0129727150063 -171 170.0 -5.64698076513 0.0114143131467 -172 171.0 -5.65759052241 0.00979534879707 -173 172.0 -5.66655225257 0.00811875770075 -174 173.0 -5.67380984344 0.00638758694863 -175 174.0 -5.67931028251 0.00460498753534 -176 175.0 -5.68300375706 0.00277420671195 -177 176.0 -5.68484374646 0.000898580155594 -178 177.0 -5.68478710669 -0.00101847602368 -179 178.0 -5.68279414663 -0.00297347341791 -180 179.0 -5.67882869631 -0.00496285957718 -181 180.0 -5.67285816674 -0.00698302636509 -182 181.0 -5.6648536014 -0.00903031839234 -183 182.0 -5.65478971926 -0.0111010415069 -184 183.0 -5.64264494925 -0.0131914713189 -185 184.0 -5.62840145627 -0.0152978617389 -186 185.0 -5.6120451586 -0.017416453508 -187 186.0 -5.59356573683 -0.0195434826976 -188 187.0 -5.57295663425 -0.0216751891584 -189 188.0 -5.55021504898 -0.0238078248974 -190 189.0 -5.52534191754 -0.0259376623617 -191 190.0 -5.4983418904 -0.0280610026087 -192 191.0 -5.46922329932 -0.0301741833429 -193 192.0 -5.43799811672 -0.0322735868002 -194 193.0 -5.40468190731 -0.0343556474589 -195 194.0 -5.36929377207 -0.0364168595607 -196 195.0 -5.33185628476 -0.0384537844225 -197 196.0 -5.29239542138 -0.0404630575223 -198 197.0 -5.25094048245 -0.0424413953416 -199 198.0 -5.20752400881 -0.0443856019501 -200 199.0 -5.16218169074 -0.0462925753151 -201 200.0 -5.11495227114 -0.0481593133234 -202 201.0 -5.06587744261 -0.0499829195012 -203 202.0 -5.01500173918 -0.0517606084187 -204 203.0 -4.96237242264 -0.0534897107689 -205 204.0 -4.90803936404 -0.055167678109 -206 205.0 -4.85205492059 -0.0567920872546 -207 206.0 -4.79447380837 -0.0583606443179 -208 207.0 -4.73535297113 -0.0598711883816 -209 208.0 -4.6747514457 -0.0613216948024 -210 209.0 -4.61273022413 -0.0627102781377 -211 210.0 -4.54935211328 -0.0640351946902 -212 211.0 -4.4846815919 -0.0652948446678 -213 212.0 -4.41878466581 -0.0664877739558 -214 213.0 -4.35172872155 -0.0676126754981 -215 214.0 -4.28358237872 -0.0686683902899 -216 215.0 -4.21441534165 -0.0696539079796 -217 216.0 -4.14429825061 -0.070568367083 -218 217.0 -4.07330253293 -0.0714110548116 -219 218.0 -4.00150025463 -0.0721814065199 -220 219.0 -3.92896397266 -0.072879004774 -221 220.0 -3.85576658834 -0.0735035780505 -222 221.0 -3.78198120223 -0.0740549990687 -223 222.0 -3.70768097086 -0.0745332827669 -224 223.0 -3.63293896573 -0.0749385839297 -225 224.0 -3.5578280347 -0.0752711944755 -226 225.0 -3.48242066643 -0.075531540416 -227 226.0 -3.4067888579 -0.0757201784978 -228 227.0 -3.33100398548 -0.0758377925383 -229 228.0 -3.25513667985 -0.0758851894693 -230 229.0 -3.17925670492 -0.0758632951011 -231 230.0 -3.10343284123 -0.0757731496217 -232 231.0 -3.02773277394 -0.0756159028468 -233 232.0 -2.95222298559 -0.0753928092342 -234 233.0 -2.87696865416 -0.0751052226812 -235 234.0 -2.80203355622 -0.0747545911191 -236 235.0 -2.72747997572 -0.0743424509249 -237 236.0 -2.65336861841 -0.073870421164 -238 237.0 -2.57975853208 -0.0733401976859 -239 238.0 -2.50670703279 -0.0727535470871 -240 239.0 -2.4342696372 -0.0721123005638 -241 240.0 -2.36250000104 -0.0714183476691 -242 241.0 -2.29144986396 -0.0706736299971 -243 242.0 -2.22116900065 -0.0698801348102 -244 243.0 -2.15170517837 -0.0690398886302 -245 244.0 -2.0831041209 -0.0681549508121 -246 245.0 -2.01540947892 -0.067227407119 -247 246.0 -1.94866280684 -0.0662593633171 -248 247.0 -1.88290354594 -0.0652529388105 -249 248.0 -1.81816901389 -0.0642102603325 -250 249.0 -1.7544944006 -0.0631334557138 -251 250.0 -1.69191277013 -0.0620246477436 -252 251.0 -1.6304550688 -0.0608859481423 -253 252.0 -1.57015013921 -0.059719451663 -254 253.0 -1.51102474011 -0.0585272303374 -255 254.0 -1.45310357187 -0.0573113278834 -256 255.0 -1.39640930762 -0.0560737542899 -257 256.0 -1.34096262951 -0.054816480593 -258 257.0 -1.28678227024 -0.0535414338587 -259 258.0 -1.23388505944 -0.0522504923856 -260 259.0 -1.18228597475 -0.0509454811405 -261 260.0 -1.13199819729 -0.0496281674395 -262 261.0 -1.08303317143 -0.0483002568854 -263 262.0 -1.03540066834 -0.046963389572 -264 263.0 -0.989108853377 -0.0456191365664 -265 264.0 -0.944164356669 -0.0442689966762 -266 265.0 -0.900572346917 -0.0429143935113 -267 266.0 -0.858336607922 -0.0415566728462 -268 267.0 -0.817459617608 -0.0401971002897 -269 268.0 -0.777942629232 -0.0388368592669 -270 269.0 -0.739785754436 -0.0374770493178 -271 270.0 -0.702988047855 -0.0361186847156 -272 271.0 -0.667547592939 -0.0347626934072 -273 272.0 -0.633461588675 -0.0334099162773 -274 273.0 -0.600726436882 -0.0320611067354 -275 274.0 -0.569337829756 -0.0307169306269 -276 275.0 -0.539290837348 -0.0293779664649 -277 276.0 -0.510579994645 -0.0280447059807 -278 277.0 -0.483199387947 -0.0267175549897 -279 278.0 -0.457142740217 -0.0253968345674 -280 279.0 -0.432403495111 -0.0240827825309 -281 280.0 -0.408974899365 -0.0227755552188 -282 281.0 -0.386850083265 -0.0214752295619 -283 282.0 -0.366022138902 -0.020181805438 -284 283.0 -0.346484195932 -0.0188952082997 -285 284.0 -0.328229494574 -0.0176152920667 -286 285.0 -0.311251455597 -0.0163418422722 -287 286.0 -0.295543747024 -0.0150745794496 -288 287.0 -0.28110034735 -0.0138131627512 -289 288.0 -0.267915605017 -0.0125571937823 -290 289.0 -0.255984293962 -0.011306220639 -291 290.0 -0.245301665026 -0.0100597421363 -292 291.0 -0.235863493049 -0.00881721220956 -293 292.0 -0.22766611948 -0.00757804447631 -294 293.0 -0.220706490355 -0.00634161694135 -295 294.0 -0.214982189503 -0.00510727682957 -296 295.0 -0.210491466861 -0.00387434552992 -297 296.0 -0.207233261801 -0.00264212363344 -298 297.0 -0.205207221373 -0.00140989604849 -299 298.0 -0.204413713408 -0.00017693717569 -300 299.0 -0.204853834414 0.0010574838751 -301 300.0 -0.206529412255 0.00229409804323 -302 301.0 -0.209443003569 0.00353363106913 -303 302.0 -0.213597885954 0.00477679825726 -304 303.0 -0.218998044922 0.00602429926791 -305 304.0 -0.22564815567 0.00727681295572 -306 305.0 -0.23355355972 0.00853499227222 -307 306.0 -0.2427202365 0.00979945924997 -308 307.0 -0.253154769958 0.0110708000854 -309 308.0 -0.264864310313 0.0123495603372 -310 309.0 -0.277856531075 0.0136362402565 -311 310.0 -0.292139581459 0.0149312902659 -312 311.0 -0.307722034364 0.0162351066015 -313 312.0 -0.324612830087 0.0175480271349 -314 313.0 -0.342821215943 0.0188703273888 -315 314.0 -0.362356682012 0.0202022167596 -316 315.0 -0.383228893218 0.0215438349636 -317 316.0 -0.405447617967 0.0228952487148 -318 317.0 -0.429022653586 0.0242564486517 -319 318.0 -0.45396374882 0.0256273465206 -320 319.0 -0.480280523637 0.0270077726275 -321 320.0 -0.507982386639 0.0283974735696 -322 321.0 -0.537078450328 0.029796110253 -323 322.0 -0.567577444555 0.0312032562068 -324 323.0 -0.59948762842 0.0326183962009 -325 324.0 -0.632816700956 0.0340409251716 -326 325.0 -0.667571710883 0.0354701474639 -327 326.0 -0.703758965776 0.0369052763923 -328 327.0 -0.741383940946 0.038345434125 -329 328.0 -0.780451188376 0.0397896518935 -330 329.0 -0.820964246018 0.0412368705304 -331 330.0 -0.862925547807 0.042685941334 -332 331.0 -0.906336334692 0.0441356272615 -333 332.0 -0.951196567028 0.045584604448 -334 333.0 -0.997504838648 0.0470314640498 -335 334.0 -1.04525829294 0.048474714408 -336 335.0 -1.09445254125 0.0499127835288 -337 336.0 -1.1450815839 0.0513440218749 -338 337.0 -1.1971377342 0.0527667054614 -339 338.0 -1.25061154564 0.0541790392498 -340 339.0 -1.30549174267 0.0555791608316 -341 340.0 -1.36176515529 0.0569651443923 -342 341.0 -1.41941665773 0.0583350049463 -343 342.0 -1.47842911151 0.0596867028317 -344 343.0 -1.53878331313 0.061018148454 -345 344.0 -1.60045794659 0.0623272072653 -346 345.0 -1.66342954101 0.0636117049668 -347 346.0 -1.72767243359 0.0648694329207 -348 347.0 -1.79315873807 0.0660981537565 -349 348.0 -1.85985831882 0.0672956071568 -350 349.0 -1.92773877092 0.0684595158069 -351 350.0 -1.99676540616 0.0695875914917 -352 351.0 -2.06690124527 0.0706775413231 -353 352.0 -2.13810701636 0.0717270740805 -354 353.0 -2.21034115987 0.0727339066469 -355 354.0 -2.28355983986 0.0736957705223 -356 355.0 -2.35771696194 0.0746104183955 -357 356.0 -2.43276419776 0.0754756307561 -358 357.0 -2.50865101613 0.0762892225281 -359 358.0 -2.58532472075 0.0770490497051 -360 359.0 -2.66273049463 0.0777530159679 - -# Table of the potential and its negative derivative for frustrated beta sheet -# (Note: Derivatives are in units of energy/radians, not energy/degrees.) -# ./calc_dihedral_table.py 5.6 57.29577951308232 6 6.0 180 6 0.0 359 360 - -FRUSTRATED_BETA -N 360 DEGREES - -1 0.0 -2.55809068762 0.0731724739818 -2 1.0 -2.63154144494 0.0737195744566 -3 2.0 -2.70551060968 0.0742089966437 -4 3.0 -2.77993963883 0.074639023134 -5 4.0 -2.85476830901 0.0750080115297 -6 5.0 -2.92993479441 0.0753144003899 -7 6.0 -3.00537575069 0.0755567150326 -8 7.0 -3.08102640456 0.0757335731758 -9 8.0 -3.15682064892 0.0758436903983 -10 9.0 -3.23269114341 0.075885885404 -11 10.0 -3.30856942003 0.0758590850738 -12 11.0 -3.38438599377 0.0757623292865 -13 12.0 -3.46007047791 0.0755947754951 -14 13.0 -3.53555170381 0.0753557030426 -15 14.0 -3.61075784476 0.0750445172025 -16 15.0 -3.68561654392 0.0746607529305 -17 16.0 -3.76005504566 0.0742040783151 -18 17.0 -3.83400033034 0.0736742977129 -19 18.0 -3.907379252 0.0730713545594 -20 19.0 -3.98011867868 0.0723953338429 -21 20.0 -4.0521456351 0.0716464642332 -22 21.0 -4.12338744726 0.0708251198546 -23 22.0 -4.19377188857 0.0699318216967 -24 23.0 -4.26322732737 0.0689672386556 -25 24.0 -4.33168287509 0.0679321881993 -26 25.0 -4.39906853508 0.0668276366524 -27 26.0 -4.46531535141 0.0656546990963 -28 27.0 -4.53035555742 0.0644146388823 -29 28.0 -4.59412272358 0.0631088667546 -30 29.0 -4.65655190431 0.061738939584 -31 30.0 -4.71757978327 0.0603065587109 -32 31.0 -4.77714481686 0.0588135679005 -33 32.0 -4.83518737548 0.057261950911 -34 33.0 -4.89164988211 0.0556538286799 -35 34.0 -4.94647694795 0.0539914561312 -36 35.0 -4.99961550465 0.0522772186102 -37 36.0 -5.05101493277 0.0505136279528 -38 37.0 -5.10062718621 0.048703318195 -39 38.0 -5.14840691207 0.0468490409338 -40 39.0 -5.19431156578 0.0449536603471 -41 40.0 -5.23830152101 0.0430201478838 -42 41.0 -5.28034017422 0.0410515766363 -43 42.0 -5.3203940433 0.0390511154063 -44 43.0 -5.35843286021 0.0370220224793 -45 44.0 -5.39442965726 0.0349676391193 -46 45.0 -5.4283608467 0.0328913828015 -47 46.0 -5.46020629342 0.0307967401964 -48 47.0 -5.48994938059 0.028687259923 -49 48.0 -5.51757706789 0.0265665450883 -50 49.0 -5.54307994213 0.0244382456298 -51 50.0 -5.56645226024 0.0223060504811 -52 51.0 -5.58769198425 0.0201736795783 -53 52.0 -5.60680080825 0.0180448757265 -54 53.0 -5.62378417713 0.0159233963481 -55 54.0 -5.63865129702 0.0138130051308 -56 55.0 -5.6514151374 0.0117174635982 -57 56.0 -5.66209242462 0.00964052262251 -58 57.0 -5.67070362704 0.00758591390103 -59 58.0 -5.67727293157 0.00555734141841 -60 59.0 -5.6818282117 0.00355847291538 -61 60.0 -5.68440098698 0.00159293138608 -62 61.0 -5.68502637408 -0.000335713374531 -63 62.0 -5.68374302934 -0.00222395315148 -64 63.0 -5.68059308309 -0.0040683495974 -65 64.0 -5.67562206565 -0.00586554240548 -66 65.0 -5.66887882528 -0.00761225734683 -67 66.0 -5.66041543813 -0.00930531415106 -68 67.0 -5.65028711044 -0.0109416342099 -69 68.0 -5.63855207307 -0.0125182480831 -70 69.0 -5.6252714687 -0.0140323027883 -71 70.0 -5.61050923182 -0.0154810688529 -72 71.0 -5.59433196178 -0.0168619471125 -73 72.0 -5.57680878923 -0.0181724752358 -74 73.0 -5.5580112361 -0.019410333958 -75 74.0 -5.53801306959 -0.0205733530082 -76 75.0 -5.51689015031 -0.0216595167121 -77 76.0 -5.49472027505 -0.0226669692568 -78 77.0 -5.47158301441 -0.0235940196022 -79 78.0 -5.44755954575 -0.0244391460249 -80 79.0 -5.42273248172 -0.0252010002837 -81 80.0 -5.3971856949 -0.0258784113929 -82 81.0 -5.37100413881 -0.0264703889936 -83 82.0 -5.34427366574 -0.0269761263135 -84 83.0 -5.31708084192 -0.0273950027051 -85 84.0 -5.28951276022 -0.0277265857564 -86 85.0 -5.26165685114 -0.0279706329651 -87 86.0 -5.23360069216 -0.0281270929735 -88 87.0 -5.20543181621 -0.0281961063563 -89 88.0 -5.17723751951 -0.0281780059613 -90 89.0 -5.14910466934 -0.0280733167983 -91 90.0 -5.12111951208 -0.0278827554757 -92 91.0 -5.09336748214 -0.0276072291861 -93 92.0 -5.06593301201 -0.0272478342399 -94 93.0 -5.0388993441 -0.026805854151 -95 94.0 -5.01234834466 -0.0262827572773 -96 95.0 -4.98636032033 -0.0256801940208 -97 96.0 -4.96101383762 -0.0249999935924 -98 97.0 -4.93638554598 -0.0242441603499 -99 98.0 -4.91255000457 -0.0234148697145 -100 99.0 -4.88957951348 -0.0225144636776 -101 100.0 -4.86754394953 -0.0215454459053 -102 101.0 -4.84651060724 -0.0205104764546 -103 102.0 -4.8265440452 -0.01941236611 -104 103.0 -4.80770593836 -0.0182540703564 -105 104.0 -4.79005493648 -0.0170386830008 -106 105.0 -4.77364652914 -0.0157694294583 -107 106.0 -4.7585329176 -0.0144496597171 -108 107.0 -4.74476289391 -0.0130828410011 -109 108.0 -4.73238172744 -0.0116725501446 -110 109.0 -4.72143105919 -0.0102224657007 -111 110.0 -4.71194880414 -0.00873635979846 -112 111.0 -4.70396906182 -0.0072180897712 -113 112.0 -4.69752203541 -0.00567158957449 -114 113.0 -4.69263395945 -0.00410086101469 -115 114.0 -4.68932703648 -0.00250996480925 -116 115.0 -4.68761938265 -0.000903011500147 -117 116.0 -4.68752498248 0.00071584775762 -118 117.0 -4.68905365291 0.00234243051027 -119 118.0 -4.69221101668 0.00397253239976 -120 119.0 -4.69699848518 0.00560193661579 -121 120.0 -4.70341325069 0.00722642338265 -122 121.0 -4.71144828821 0.00884177945771 -123 122.0 -4.72109236669 0.0104438076188 -124 123.0 -4.73233006984 0.0120283361174 -125 124.0 -4.74514182625 0.0135912280748 -126 125.0 -4.75950394898 0.0151283907985 -127 126.0 -4.77538868431 0.0166357849963 -128 127.0 -4.79276426974 0.0181094338658 -129 128.0 -4.81159500092 0.0195454320375 -130 129.0 -4.83184130754 0.0209399543498 -131 130.0 -4.8534598378 0.0222892644342 -132 131.0 -4.87640355143 0.0235897230915 -133 132.0 -4.90062182095 0.0248377964369 -134 133.0 -4.92606054096 0.0260300637961 -135 134.0 -4.95266224518 0.0271632253326 -136 135.0 -4.98036623096 0.028234109388 -137 136.0 -5.00910869107 0.0292396795182 -138 137.0 -5.03882285221 0.0301770412082 -139 138.0 -5.06943912022 0.0310434482505 -140 139.0 -5.10088523142 0.0318363087705 -141 140.0 -5.13308640979 0.0325531908865 -142 141.0 -5.16596552963 0.0331918279898 -143 142.0 -5.19944328334 0.0337501236332 -144 143.0 -5.23343835383 0.0342261560164 -145 144.0 -5.26786759123 0.0346181820585 -146 145.0 -5.30264619353 0.0349246410472 -147 146.0 -5.33768789051 0.0351441578585 -148 147.0 -5.37290513082 0.0352755457383 -149 148.0 -5.40820927152 0.0353178086401 -150 149.0 -5.4435107698 0.0352701431151 -151 150.0 -5.4787193763 0.0351319397498 -152 151.0 -5.51374432971 0.0349027841491 -153 152.0 -5.54849455206 0.0345824574643 -154 153.0 -5.58287884436 0.0341709364636 -155 154.0 -5.61680608206 0.0336683931487 -156 155.0 -5.65018540988 0.0330751939177 -157 156.0 -5.68292643563 0.0323918982779 -158 157.0 -5.71493942249 0.0316192571138 -159 158.0 -5.74613547931 0.0307582105139 -160 159.0 -5.77642674856 0.029809885165 -161 160.0 -5.80572659147 0.0287755913197 -162 161.0 -5.83394976986 0.0276568193473 -163 162.0 -5.86101262442 0.0264552358763 -164 163.0 -5.8868332488 0.025172679541 -165 164.0 -5.91133165941 0.0238111563427 -166 165.0 -5.93442996024 0.0223728346376 -167 166.0 -5.95605250261 0.0208600397671 -168 167.0 -5.97612603931 0.0192752483425 -169 168.0 -5.99457987285 0.0176210822011 -170 169.0 -6.01134599757 0.015900302049 -171 170.0 -6.02635923519 0.014115800807 -172 171.0 -6.03955736358 0.0122705966784 -173 172.0 -6.05088123845 0.0103678259555 -174 173.0 -6.0602749078 0.00841073558436 -175 174.0 -6.06768571866 0.00640267550713 -176 175.0 -6.0730644163 0.00434709080102 -177 176.0 -6.07636523524 0.00224751363529 -178 177.0 -6.07754598232 0.000107555066143 -179 178.0 -6.07656811141 -0.00206910330914 -180 179.0 -6.07339678973 -0.00427871781763 -181 180.0 -6.06800095563 -0.00651749127408 -182 181.0 -6.06035336781 -0.00878158162059 -183 182.0 -6.05043064586 -0.0110671106207 -184 183.0 -6.03821330204 -0.0133701725859 -185 184.0 -6.02368576439 -0.0156868431131 -186 185.0 -6.00683639108 -0.0180131878107 -187 186.0 -5.98765747603 -0.0203452709919 -188 187.0 -5.96614524589 -0.0226791643135 -189 188.0 -5.94229984843 -0.025010955339 -190 189.0 -5.91612533236 -0.0273367560054 -191 190.0 -5.88762961878 -0.0296527109716 -192 191.0 -5.85682446433 -0.0319550058299 -193 192.0 -5.82372541626 -0.0342398751598 -194 193.0 -5.78835175943 -0.0365036104045 -195 194.0 -5.75072645562 -0.0387425675516 -196 195.0 -5.71087607524 -0.0409531746008 -197 196.0 -5.66883072166 -0.0431319387984 -198 197.0 -5.62462394846 -0.0452754536249 -199 198.0 -5.57829266983 -0.0473804055171 -200 199.0 -5.5298770643 -0.0494435803104 -201 200.0 -5.47942047235 -0.0514618693867 -202 201.0 -5.42696928781 -0.0534322755136 -203 202.0 -5.37257284377 -0.055351918363 -204 203.0 -5.316283293 -0.0572180396955 -205 204.0 -5.25815548345 -0.059028008202 -206 205.0 -5.19824682901 -0.0607793239895 -207 206.0 -5.13661717604 -0.0624696227052 -208 207.0 -5.0733286659 -0.0640966792879 -209 208.0 -5.00844559393 -0.0656584113417 -210 209.0 -4.94203426529 -0.0671528821253 -211 210.0 -4.87416284794 -0.0685783031513 -212 211.0 -4.80490122327 -0.0699330363936 -213 212.0 -4.7343208347 -0.0712155960973 -214 213.0 -4.66249453466 -0.0724246501921 -215 214.0 -4.58949643037 -0.0735590213066 -216 215.0 -4.51540172879 -0.0746176873849 -217 216.0 -4.44028658118 -0.0755997819067 -218 217.0 -4.3642279276 -0.0765045937139 -219 218.0 -4.28730334182 -0.0773315664459 -220 219.0 -4.20959087694 -0.0780802975905 -221 220.0 -4.13116891218 -0.0787505371538 -222 221.0 -4.0521160012 -0.0793421859574 -223 222.0 -3.97251072229 -0.0798552935693 -224 223.0 -3.89243153076 -0.0802900558785 -225 224.0 -3.81195661404 -0.0806468123209 -226 225.0 -3.73116374964 -0.0809260427693 -227 226.0 -3.65013016636 -0.0811283640964 -228 227.0 -3.56893240921 -0.0812545264246 -229 228.0 -3.48764620813 -0.0813054090744 -230 229.0 -3.4063463509 -0.0812820162266 -231 230.0 -3.32510656064 -0.0811854723104 -232 231.0 -3.24399937793 -0.081017017134 -233 232.0 -3.16309604794 -0.0807780007742 -234 233.0 -3.08246641287 -0.0804698782381 -235 234.0 -3.00217880976 -0.0800942039176 -236 235.0 -2.92229997393 -0.079652625851 -237 236.0 -2.84289494829 -0.0791468798106 -238 237.0 -2.76402699866 -0.0785787832348 -239 238.0 -2.68575753514 -0.0779502290223 -240 239.0 -2.60814603984 -0.077263179207 -241 240.0 -2.53125000097 -0.0765196585342 -242 241.0 -2.4551248533 -0.0757217479546 -243 242.0 -2.37982392531 -0.0748715780578 -244 243.0 -2.30539839282 -0.073971322463 -245 244.0 -2.23189723927 -0.0730231911866 -246 245.0 -2.15936722267 -0.072029424007 -247 246.0 -2.0878528491 -0.0709922838436 -248 247.0 -2.01739635293 -0.0699140501714 -249 248.0 -1.94803768347 -0.0687970124882 -250 249.0 -1.87981449824 -0.0676434638537 -251 250.0 -1.81276216256 -0.0664556945194 -252 251.0 -1.74691375554 -0.0652359856651 -253 252.0 -1.68230008218 -0.0639866032624 -254 253.0 -1.61894969164 -0.0627097920793 -255 254.0 -1.55688890134 -0.0614077698443 -256 255.0 -1.49614182687 -0.0600827215855 -257 256.0 -1.43673041741 -0.05873679416 -258 257.0 -1.37867449659 -0.0573720909874 -259 258.0 -1.32199180845 -0.0559906670036 -260 259.0 -1.26669806833 -0.0545945238457 -261 260.0 -1.21280701853 -0.0531856052829 -262 261.0 -1.1603304883 -0.0517657929031 -263 262.0 -1.1092784581 -0.0503369020679 -264 263.0 -1.05965912771 -0.0489006781451 -265 264.0 -1.01147898802 -0.0474587930279 -266 265.0 -0.964742896092 -0.0460128419505 -267 266.0 -0.919454153297 -0.0445643406057 -268 267.0 -0.875614586172 -0.0431147225719 -269 268.0 -0.833224629688 -0.0416653370554 -270 269.0 -0.792283412613 -0.0402174469521 -271 270.0 -0.752788844664 -0.038772227232 -272 271.0 -0.714737705101 -0.0373307636499 -273 272.0 -0.67812573245 -0.0358940517831 -274 273.0 -0.642947715028 -0.0344629963972 -275 274.0 -0.609197581934 -0.0330384111393 -276 275.0 -0.576868494182 -0.0316210185584 -277 276.0 -0.545952935658 -0.0302114504483 -278 277.0 -0.51644280357 -0.0288102485125 -279 278.0 -0.488329498068 -0.0274178653447 -280 279.0 -0.461604010741 -0.0260346657211 -281 280.0 -0.436257011655 -0.0246609281969 -282 281.0 -0.412278934657 -0.023296847002 -283 282.0 -0.389660060626 -0.0219425342253 -284 283.0 -0.368390598407 -0.0205980222818 -285 284.0 -0.348460763137 -0.01926326665 -286 285.0 -0.329860851704 -0.0179381488715 -287 286.0 -0.312581315078 -0.0166224797996 -288 287.0 -0.296612827279 -0.015316003087 -289 288.0 -0.281946350734 -0.0140183988977 -290 289.0 -0.268573197826 -0.0127292878319 -291 290.0 -0.256485088408 -0.0114482350481 -292 291.0 -0.245674203109 -0.0101747545698 -293 292.0 -0.236133232246 -0.00890831375923 -294 293.0 -0.227855420178 -0.00764833794542 -295 294.0 -0.220834604976 -0.00639421518813 -296 295.0 -0.215065253253 -0.00514530116277 -297 296.0 -0.210542490065 -0.00390092414876 -298 297.0 -0.207262123775 -0.00266039010467 -299 298.0 -0.205220665805 -0.00142298781263 -300 299.0 -0.204415345223 -0.000187994074493 -301 300.0 -0.204844118104 0.00104532105779 -302 301.0 -0.206505671662 0.00227768903543 -303 302.0 -0.209399423126 0.0035098375675 -304 303.0 -0.213525513386 0.00474248539479 -305 304.0 -0.218884795423 0.00597633710062 -306 305.0 -0.225478817581 0.00721207797616 -307 306.0 -0.233309801737 0.00845036895769 -308 307.0 -0.242380616448 0.00969184165314 -309 308.0 -0.252694745185 0.0109370934746 -310 309.0 -0.264256249747 0.0121866828936 -311 310.0 -0.277069729013 0.0134411248358 -312 311.0 -0.291140273151 0.0147008862297 -313 312.0 -0.306473413467 0.0159663817261 -314 313.0 -0.323075068066 0.0172379696031 -315 314.0 -0.340951483513 0.018515947869 -316 315.0 -0.360109172702 0.0198005505798 -317 316.0 -0.380554849155 0.0210919443819 -318 317.0 -0.402295357987 0.0223902252933 -319 318.0 -0.425337603767 0.0236954157356 -320 319.0 -0.449688475549 0.0250074618263 -321 320.0 -0.475354769327 0.0263262309427 -322 321.0 -0.50234310819 0.0276515095659 -323 322.0 -0.530659860472 0.0289830014145 -324 323.0 -0.560311056174 0.0303203258736 -325 324.0 -0.59130230198 0.0316630167284 -326 325.0 -0.623638695141 0.0330105212056 -327 326.0 -0.657324736579 0.0343621993296 -328 327.0 -0.692364243488 0.0357173235955 -329 328.0 -0.728760261774 0.0370750789637 -330 329.0 -0.766514978659 0.0384345631765 -331 330.0 -0.805629635748 0.0397947873984 -332 331.0 -0.846104442913 0.04115467718 -333 332.0 -0.887938493289 0.042513073745 -334 333.0 -0.93112967973 0.0438687355968 -335 334.0 -0.975674613021 0.0452203404434 -336 335.0 -1.02156854218 0.0465664874361 -337 336.0 -1.06880527714 0.0479056997168 -338 337.0 -1.11737711415 0.0492364272675 -339 338.0 -1.16727476416 0.0505570500574 -340 339.0 -1.2184872845 0.051865881477 -341 340.0 -1.27100201415 0.0531611720525 -342 341.0 -1.32480451282 0.0544411134304 -343 342.0 -1.37987850417 0.055703842622 -344 343.0 -1.43620582346 0.0569474464963 -345 344.0 -1.49376636966 0.0581699665097 -346 345.0 -1.55253806258 0.05936940366 -347 346.0 -1.61249680493 0.0605437236497 -348 347.0 -1.67361644969 0.0616908622471 -349 348.0 -1.73586877296 0.0628087308273 -350 349.0 -1.79922345238 0.0638952220804 -351 350.0 -1.86364805137 0.0649482158688 -352 351.0 -1.92910800931 0.0659655852184 -353 352.0 -1.9955666377 0.066945202426 -354 353.0 -2.06298512258 0.0678849452658 -355 354.0 -2.13132253309 0.0687827032771 -356 355.0 -2.20053583647 0.0696363841147 -357 356.0 -2.27057991931 0.0704439199439 -358 357.0 -2.3414076153 0.0712032738621 -359 358.0 -2.41296973939 0.0719124463259 -360 359.0 -2.48521512832 0.072569481568 diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run.in.min b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run.in.min deleted file mode 100644 index 8eb3a03cbb..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run.in.min +++ /dev/null @@ -1,19 +0,0 @@ -# -- Init section -- - -include system.in.init - -# -- Atom definition section -- - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run section -- - -dump 1 all custom 50 traj_min.lammpstrj id mol type x y z ix iy iz - -minimize 1.0e-5 1.0e-7 500 2000 - -write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run_short_sim.in.nvt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run_short_sim.in.nvt deleted file mode 100644 index 185d03cf15..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run_short_sim.in.nvt +++ /dev/null @@ -1,50 +0,0 @@ -# -- Init Section -- - -include system.in.init - -# -- Atom Definition Section -- - -# I you want to be careful, you can minimize the system first. -# (Try using "run.in.min" and uncomment line below.) -# read_data system_after_min.data - -read_data system.data - -# -- Settings Section -- - -include system.in.settings - -# -- Run Section -- - - -timestep 0.025 -dump 1 all custom 50 traj_nvt.lammpstrj id mol type x y z ix iy iz - -# To use Langevin dynamics in LAMMPS you need both "fix langevin" and "fix nve". -# (See http://lammps.sandia.gov/doc/fix_langevin.html for details.) - -# Keep the chaperonin fixed. Only let the protein move. - -fix fxlan proteins langevin 0.25 0.25 1.0 48279 -fix fxnve proteins nve - -# Notes: -# The temperature is in reduced units and is set to 0.25 -# which is the folding temperature for the frustrated protein -# The inverse-damping-rate "damp" (which has units of time) is set to 1.0, -# as it was in the paper. (Hopefully folding times should be similar.) -# (See http://lammps.sandia.gov/doc/fix_langevin.html) - - -thermo_style custom step temp pe etotal press vol epair ebond eangle edihed -thermo_modify norm no #(report total energy not energy / num_atoms) -thermo 50 #(time interval for printing out "thermo" data) - -#restart 100000000 restart_nvt - -# Just run it long enough for it to collapse (not fold) -# (If you need to run it longer, then dump trajectory data less frequently.) -run 50000 - -write_data system_after_nvt.data - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.TXT deleted file mode 100644 index 5da41b9a8b..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.TXT +++ /dev/null @@ -1,32 +0,0 @@ -# This directory demonstrates how to run a short simulation of -# the "unfrustrated" coarse-grained protein model used in: -# AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) -# (http://www.pnas.org/content/101/36/13192) -# -# In this example, the protein is placed inside a repulsive sphere -# of radius 6.0 sigma which confines its motion. -# (This sphere is sometimes called the "chaperonin", because -# we were using it to model the crude behavior of a chaperonin cavity.) -# -# During this short simulation (run.in.nvt) the protein evolves -# from an unfolded initial conformation to the folded state. -# -# -------- REQUIREMENTS: --------- -# 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -# 2) It also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from -# http://moltemplate.org (upper-left corner menu) -# 3) Unpack it -# 4) copy the .cpp and .h files to the src folding of your lammps installation. -# 5) Compile LAMMPS. - -------------- -Instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step2) -README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_run.sh b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_run.sh deleted file mode 100755 index 45bd2d451d..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_run.sh +++ /dev/null @@ -1,31 +0,0 @@ -# You would probably run lammps this way: -# -# lmp_ubuntu -i run.in.nvt - -# The files "run.in.min", and "run.in.nvt" are LAMMPS input scripts which refer -# to the input scripts & data files you created earlier when you ran moltemplate -# system.in.init, system.in.settings, system.data - - - - -# ----------------------------------- - - - -LAMMPS_COMMAND="lmp_ubuntu" - -# Here "$LAMMPS_BINARY" is the name of the command you use to invoke lammps -# (such as lmp_linux, lmp_g++, lmp_mac, lmp_cygwin, etc...) Change if necessary. - -# Run lammps using the following 3 commands: - -"$LAMMPS_COMMAND" -i run.in.min # minimize (OPTIONAL) -"$LAMMPS_COMMAND" -i run.in.nvt # production run - -# Alternately, if you have MPI installed, try something like this: - -#NUMPROCS=4 -#mpirun -np $NUMPROCS "$LAMMPS_COMMAND" -i run.in.min # minimize (OPTIONAL) -#mpirun -np $NUMPROCS "$LAMMPS_COMMAND" -i run.in.nvt # production run - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh deleted file mode 100755 index df49f4384f..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh +++ /dev/null @@ -1,24 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh -overlay-dihedrals system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - cp -r table*.dat ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt deleted file mode 100644 index 019afc1444..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index 7763505c0d..0000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,98 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 28 !NATOM - 1 1 1 1 0.000000 100.0000 0 - 2 2 3 3 0.000000 1.0000 0 - 3 2 2 2 0.000000 1.0000 0 - 4 2 3 3 0.000000 1.0000 0 - 5 2 2 2 0.000000 1.0000 0 - 6 2 3 3 0.000000 1.0000 0 - 7 2 2 2 0.000000 1.0000 0 - 8 2 4 4 0.000000 1.0000 0 - 9 2 4 4 0.000000 1.0000 0 - 10 2 2 2 0.000000 1.0000 0 - 11 2 3 3 0.000000 1.0000 0 - 12 2 2 2 0.000000 1.0000 0 - 13 2 3 3 0.000000 1.0000 0 - 14 2 2 2 0.000000 1.0000 0 - 15 2 3 3 0.000000 1.0000 0 - 16 2 4 4 0.000000 1.0000 0 - 17 2 4 4 0.000000 1.0000 0 - 18 2 4 4 0.000000 1.0000 0 - 19 2 2 2 0.000000 1.0000 0 - 20 2 2 2 0.000000 1.0000 0 - 21 2 3 3 0.000000 1.0000 0 - 22 2 3 3 0.000000 1.0000 0 - 23 2 2 2 0.000000 1.0000 0 - 24 2 2 2 0.000000 1.0000 0 - 25 2 3 3 0.000000 1.0000 0 - 26 2 3 3 0.000000 1.0000 0 - 27 2 2 2 0.000000 1.0000 0 - 28 2 3 3 0.000000 1.0000 0 - - 26 !NBOND: bonds - 2 3 3 4 4 5 5 6 - 6 7 7 8 8 9 9 10 - 10 11 11 12 12 13 13 14 - 14 15 15 16 16 17 17 18 - 18 19 19 20 20 21 21 22 - 22 23 23 24 24 25 25 26 - 26 27 27 28 - - 25 !NTHETA: angles - 3 4 5 5 6 7 10 11 12 - 12 13 14 8 9 10 7 8 9 - 17 18 19 19 20 21 23 24 25 - 22 23 24 2 3 4 4 5 6 - 11 12 13 13 14 15 26 27 28 - 15 16 17 6 7 8 9 10 11 - 14 15 16 18 19 20 20 21 22 - 21 22 23 24 25 26 25 26 27 - 16 17 18 - - 43 !NPHI: dihedrals - 2 3 4 5 2 3 4 5 - 3 4 5 6 3 4 5 6 - 4 5 6 7 4 5 6 7 - 5 6 7 8 5 6 7 8 - 6 7 8 9 7 8 9 10 - 8 9 10 11 9 10 11 12 - 9 10 11 12 10 11 12 13 - 10 11 12 13 11 12 13 14 - 11 12 13 14 12 13 14 15 - 12 13 14 15 13 14 15 16 - 13 14 15 16 14 15 16 17 - 15 16 17 18 16 17 18 19 - 16 17 18 19 17 18 19 20 - 17 18 19 20 18 19 20 21 - 18 19 20 21 19 20 21 22 - 19 20 21 22 20 21 22 23 - 20 21 22 23 21 22 23 24 - 21 22 23 24 22 23 24 25 - 22 23 24 25 23 24 25 26 - 23 24 25 26 24 25 26 27 - 24 25 26 27 25 26 27 28 - 25 26 27 28 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=0tau_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=0tau_LR.jpg deleted file mode 100644 index a0da344db5656fcce716e52eee2b1731a993f800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16267 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 z zl5N-S?C`h0vot4(>sIFS-gCS{$K?CsJBnw$DSsMs=)L`Kk?nuk(5nzv*lLUG?_o z+;N4yaY7VNgZ1)&*oWKY+&6uJPqxD)z=##r^Hg?LMwUJ+4c|N$e^Jl&4$!mufuKUlh=zUJ_bAc=W z*4}(mpYpe==2~&2yQ^mA#H$xt^n&+@PhI(L(dpz>tInzLKJCBye8GQ)xbCYlue-{X zUS?`Yz3XL5?~iSNHY+maDUwp>TMQcC9+%h1P$*Yy;G27=Jld((YvYuMGD}aM4EuEN))LKYv;3-czMU&R7|ZIq zs^Wg$_G{kXXV>mI8Ii>ET6xiNjr#c1JvS_0&tdG_DPPWbv&fI>gHv}~iQ4zzN9R}R zO<5y4$+suCxqX)y;|BIA7EhjR$Zfsu5UJX{%wLD$RDl3f!BrQAtb{8ESKhjEL|rT4 zYI4L3LqpNFDm5NI$q&INU)Xgp?F(gB5GwofYVFf6obl3em#%NuEjY-YB%u88t^bkA zAHUbLhL{|=rMpi#<0i-7^u{xs6K@_5FKTYGDv{k(evdoL*WU4H_SsXbUaB{%a%XC0 zt(LgPU%TgQp)BLK$i5rws~$)lZ~gVUsj6vNL-aaPk<@d2)1EtW-xu|9zx(P!Wo%FC z^5ka*{!>MNyc8Twi+bMG(y>#BslNVdA3I0muxp>9pWYWY< zM?Ri8De>Uhj>;x0fjJLrED!zDx|5Mt@@8x7lcg>5G82mThegkspYU5{z5(OwUBA-( zKelo03kyGD^`Bu+L#e!&?0<$+{s*f=72VAz#5tSh&irzy{!+=AjyY+b%p7(uG6I`lu1;9j;_Yive59-&9q#j?$pt~}Q( zHu%r*k+1z@T-SvisYRBn78Jhx``LctpJ~5#s%-dB6;QQkhMwXoz4)d1SGO`eZF9ON z|1jV2&*smu^#Ni3`Zk4KNuRPwy=czkbq4mLhwH3YHHyl+upCZVd2P8dUgU%DgIJ#WW8eD^>vm7Z}Te|kqm8)BS z`Q3RSEwi?3+lJjYBoubeHDma#r+)G<_u;L#mR*Yp+69%Fm;`mMXRx$AdDm&o*C{ldwQ5pC0#-xlkTA6*lkM;BBSKjGI;xwrb&Ugu#2ojj z*%5OL4Mp0jlqaTeTs+Yzadf6v#HOB1nR6Y2y;pb3)QC^7zdUVkprb19qr2WEiz^N< zSkt;`!=E`^-(s#tX0g?rUt4!fEa<297TZIy_7U~(Li0<$EWfzqch1l0{0=+$7HuwM zZ@wpa#ccboTk$7uy-M%uDwq8@@vZUxJ<>0yexKa5_O?Y?!9ls?lV!K>g>L&PcYJE~ z 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

  2. n)$P2!Y}PYO?q9&R?X}4Eo87V} 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane.jpg b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane.jpg deleted file mode 100644 index 6591b236a3c56bb6291df28dbd8d8c7bf80a7ee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12330 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/watMW.jpg b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/watMW.jpg deleted file mode 100644 index 0ac8c2c01152e5bff958fd980a6a6f771d373835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3141 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 Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.0 -0.5} - pbc box -shiftcenterrel {0.0 0.0 -0.5} -style tubes -width 0.75 - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/DPPC_martini_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/DPPC_martini_LR.jpg deleted file mode 100644 index cc85e79ff14717ece09368596bfdf3a60748935d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12907 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«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 T7)(=26~r7DnoX~_|9=wzATC9Z diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=0_after_minimization_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=0_after_minimization_LR.jpg deleted file mode 100644 index 3fa786295c9584c0914548472ce43102804d19f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43653 zcmex=9GX20;!+9Y!5yMnMK9K}Kdl#{WkcWEdD3n3$Lu84!S#jfI_wnFAy%&B(~W z#LS2+%f!sc!pg?}{}uxeGb00&0J8uC1LIc@gmzL{jkkK(-b5J57yO*AW0!LHR<)|nSS?Ur`0zo3(-nyHx@ zygKf|(+CCzMwi#&IZw_9-1R%Uc5&qT``7PEO}n3dboI0ImS2^puf6>9^2d8k558&b zx?UMqJ9FLr8Fy;pm%Q_?t6%x$^IG+E-d(@5-rop$?maOrJ;7^A-iad{cWv1FX$=Dd z!=lpFJBm_yXJoBB?h>B5eYWoI3q3ZkmmPYW8t?R8@=4@{iQCTxYn_!(Tg~@uNxt&_ z%rE<#wjcT)X1m{%dDiM5cXt$uc%qKX z;q#uEyS^<~UO72GaPf;Z(s5=xeTu%SXTAz|J@f0v`Q&M$uT|S`JoL=`^*i6p;A(O8 zwjiV9Il2q)FHE@f=3R8v@4UJw;g#CY)ebN)aH&V_;jOg|U4Lh3c5u?>;3=z?ks*AbI;yrwO`vAwzqSpBtM(&Vz%p4=1IPe()4Yc z8~N1Zt6TY>+D)FB&UCeGkCVYH@!MwKR)4;{;+dqzx$K;r*uL${*M8o3mpi{^H3I{K zhHcfK<%i$9o$d{r^IkXZ&DG|s*UmitEtOj%yRxoyp5g6<8vCa0S@&g8g1Pc(Hc6(vmYCF3w*mFxBAKL<tEV<$*Jd=7nRbVW{Jr6&>ICjyAFw?hFTlW3pll#~2Us|}$fq_BeZq`?RWvgV%?lZ}``|{`C z+K}8BeW$fy#nOqJ*C(y|Gi%$LRi;Y9(Z2%!oSSxdwdgF>#_e~HzW-6t=bvw9#>Rw`*$K*7A9$xKty6lkcY_r7~r^3&DEq@0#EpBU3 z%*-Fh4UVUsI4hnW_j>ilbvL$T<=?cN^;K_+s`8hLb?46;WARP%tT;{5-IyHRSJ=#*vXS%Wbw$3Z>!PgVm+Q_1 zJF)%Ry341|`pT;wHoW=mL(oUF$+7wZLd*T;%bw3R z-v9K4UH+x$!cL*hbNn6_`}H09&mdjJy#4%^W3?NPl*n#Rik7^d<5{I|FZ;CCch=wP zJsZQ-wCC2vb^YFd=^8{AH5I0zy6EN z+u>FHyxxdiKMw zh8ru*AFx{K`g6G6|YkS2`S2R`4dU5!Q@iP9Ea~n@?VPIftzP|4I$!T+2 ztKx2cbu;)a^2RoIum6k_3(cmPo87v0eZ}G1pK7l@Iya{_Lpo=E+m$I_6@Sf%lbXHl zuY6>;UP+yab@pbd88P|Szl47K`|5i2lN$^SjLxsa4Nv#&Ir8P+G1byr^GbsoQa5n=gPLwJ8s(5+2xc8R`y*B`n^zvs5{c22FOnJ@ob-}O0NDn38{ zeXxJt;gxkz6R)eEJlB4#&d)6RUe5JnX8X<__OIt(e70%Y+TBF~(SN#^&v}0!J|*qB zv3d4-kH@k4H$My2tec;=Kj`-5&sS>g{-v4jI3&%UX7e?9-_oAgE^8~ZH+H@U7#O4` zuaDdK#6QVv*E`iLMV&=S;sM%UO8@r8M&@fLWS!SKn^(E-sozy$o42`^3#Pj({jIZj z@$S}_GCNg)bJZqcCI0rwd8K8wvi^4Kuf~IuQ&!#HqM9`yoE&Bx`SqD+kB93sJL{KO zRf}itHSv{@Y$;QHY&w1Ksp6MMJL6uidb#8LV#8BMb{Y4nO4)L&m9Dm)wP|uuNwBtFOMA4 z+&%H$y{reMwzP1mxBq{HL0f=Gk&%IsmFYjjaXo$Eh0)e)^Nn|1Po9?@d){>I^I75P^Kzrl8?SplE4=uu z_FkJyyJz0bE z>2uV*%C-5+K?<@fD4WsZF>^qt~!TF+g3XT{yE8HcY)`9{7fee5&gY4gPOKC_*e ztMZ%4z8jrqZQYagZeG1<$AuWLJ8}E=?A@*P)UP9?TK@8uf8~g@QrJzFhf^2McUxM0c5AbHNmWuYx0p`S9OLkqn_}y4 zl-E7GJzdPl#9Z`8A&=`0S?kv28^w-Xygm6?wRq^q0}FoJwQo0OUG~l{!nNhry1fF8 zxm(U@zBqCu;zY5`jpWO@zsfl#1?e;kaZAiJd%f=K>(<@o-&8+eDZ04m`l$n@Z)&uj z9hoA{6XBJn8N51GFf#Er=MBf(tYW$`5h*#xes#PQ-Xb}_H9=XUeb;r(Yd?+%?sdxb zIw#o6$r^Pzq}A`k`96h9`hVB1NPm1<|LuLhi@$%Xo&T_{?DoOfqO&c2yd{!56m?j7 za#$E_%MEv&cT5H2{Yx%eH{m%dXeVZ#bx_^`J=G)aj zc^e}QD{@?~yqWU$?*i>_?~i6hA1uFBur4N2N?b*=ZAV|~nuBJKte(A!P5?Nes*>PUmln_MCkeeSa;pK@Ze&J}(5nx|WHSGD}x{eIWw3(I6q zM7uU!bla7ApeuCOSy$glKi>KWPMyNEQ$=6?beYu@&z7m}FP3&}oilxV<@Ouqq9N)E zhCR!#{+JiMAuT=Yjgd6dw-u9QKkn1p=c%d&3uRQ+G;I53xtv4BbHdhjR@;nc?v6K#Iw+xf>dB4D!!jWj(*2T+*UgO_IbEvu zt(bjwrH&kb^`7M~Z+`yu``k($!Ps_9-OW#nZJw4HZFPJ;(_G|=P4-#EHJ42%E1lYP zJe-sN@$b&+wyfLS6U&ZFlWx`OoKV`@vE%Hn^-+heC5v%3dL7%REBbqnI@eT#2TB>& zyY$UjzZ`Sam~6pd^TDyj+=>z#fy2lN#?F!p8ogk zj|RPi!c13pS9?Ym1}8DSS#&XB(bX#@l5g+t+2BxFs?$;TSUur$)=jbgziL~B`|^)i zhThcslAu3r`6TNVGEpBmIUcV#o$&P#H_x&oyK@${uIsyEUTIkMql_{s$rRxZ-K_FFyT)9KO* zv%fo8mv5O`b)}m*o@<}v&4TM{T4~}t*3Nicy1O~_R_>PgueTFyUHd!4EM5M@E3aD{ znY`nd$A5;EORg%Wi7#$^8}E1V_id$%8x}8jSBn>&$SwA?^Xrq<%bU2r+^&k-Ch~8g zYNm0eYv-lqQhrivE>$S47c64>GEaw+%E+gPO*+zDdgoVaAuv= zm0ShWwcPhki?;iE+*~X6dP+{&)-BJM-@G0sUdm>8;_c-bQCS^KYquDv#%<5PY@*oO zD71T`JgceT(x}Y>FQzTp!}2sRdvn-1!`{U&ZyEnP>?Jwj{eqaOQ@2doy?%Q@@J{yJ z0;_{Y7sal~`dYkRm9Dg6v6Fd{&;;!xo98yKXzzPd^kvoi97T_J4i|MfCvTC7*tn&o z+w9cpQ~MP=9&XfO`RSvnp`-RI>w1!*&tjPw3ywT1DQ=%wF7#>r@~q=4A1ygD?LL3h ztC~&5yOZ2b`rBV$9b@t#=IBn7Rnt#QUa*E~hDCDp1qr1&?53|bteMt%qU+1#7Ntur zjvr2Ln{lgn#@`9%p$eF1hwXKB&O@F63ChXjNzUhakbmXxg z7VB@9dolUk){WxOHG6%AM?^RMCfhC9wff7#=ZJ7W{Ly~m*>1OLZtb&{rqi$H{f*r4 zW!l{@Z{<(yxN&94;n~Jv=cn!BHe`=Kv5i$a=x&;ko*~Ds%b`N6Sx#t5?w$YSai!?w z-r`0FFVVGA@0>TN+;?i{qT@TQd8HJ&B#X?lp5~}8-Iuk{rF&8ucg+hS$#t32ijyvj zwl2z%=5nzn|gOZQ~yA*CGw9c2?N1=qW4IDPkwPuZ~k>g(03 zrzb@fm)YO`H}?+zL@i^vDUrMLb=*ESJ}GB!_|v+N>ucku@H6L)_is44IHF+IX9b6cCvbCtq1$Bx}!K5_eb#o~D` z&n36(Hr={fyWstQhA*IgiKQR|BQp~V3kx$F8xu3A2Ll?BW)T!pG<0MYRtgj_FiI3z z_`#{LapJ~UX~z#vX}`b%g+4NI<-2bbJN*9A^qR?QrTIPtODbE(Q?yZINE9oN&| z@q_!e{S&)|AhXpc*G<~EyP!GmO=^Ke!mMz!wLkAGzA^oCU7~N^tktaM%fDz}SeQBY zZF14kouPkN?`W0HODM42U-(P*y71aIt&A5h9%kPwHQTv=qvT5I2vsJBsA|FdiLvf{ zDpG~9aymbfH#n(%jGA!i-}21*^(R9MqBMTg8!wg3>4=$n zNJH|-$#SE!++81@2Y8=8TKjI+ho|$(UC;IKOkb`bu+0nA`ia^5Ucbgst9rV_-oL!yyb<$(g38B+Y*+x&{beKI=Cn;b- zgQLRa!sYi?X|Gc4=hQ0r{vuRo(nqU`%w^@l`B&D+FYpgvVBGO-RL(hwa%yNPE6b-`8C!gZ{y~v&HSNX|4vzV z>VO` z(8@>armj1Bx#sseOLt$7Z~JDe%~|_?-G2s?OaB?R2!7?)ysb5>nNdtU#;z$&<(TxR zkC`=J%x-_*v|>rA&bs8udXiU~cUJB$4K1Fa)q9DJ<6N`L0f+NP4@{iipzxw|`<;Dy zLIsbu?^^lbf~(idUqiby#EaGk+I>|3eG8KYPj~_65D?L!J6ChDaYdyZl{D=u6X2fP;N=> zsby2I^c$YhanjqcD=q1Tv|^-nbhB8T#O6(9QFB8ACA*_{b+?;dcs$F8{Xauu+JA;G z{%>Zzcw(`5BgC~8lUFR#*_XAb{M@5dH>Kmz0+;EC=b-kVVd=gM-l^T5e82uo{O)Y9to5q=<*elojV~X|iaEq^(p;=!I?uv| zPd+VadZ+Yb|MgT^mlD1jg_n!B$AtGtuHrsz^z-jicjeTC2?|BK@~gGq>~&V1dzsCg zVfBj_8X1-!o6kt!dHpMTpVy*otJXf;EZyqK(RvS@Bc??!x1WAxO~ZywQx~N%teB;- zEa&Z&`b)F>ylu_Zca_CiX+`?lJPJLUoic5X%QLa&I|6;4fBa$;j8%T`coZDm>3gN{ z)9n^*0b$R><{24fE$!LZJ+bxS+v^8d9&hwroTuZOB(^icNm3zyk!1Ij%&!xArc4zIF`uk> zLgVGE<4NwEW{SRIYBE}VbB?_6=Jq`LkmcO+30`O2AMKbMYU)yOf^esJ^TwhNjm$wq}f zy_a0l@|Wm6S>EHUa;zhIrZ2~>SIZ`xHNBE}z{L7g*@;J2w4bN2iTe7BO!YD1S+}EI z`?u?i*tehjQa4L2w`SNS>-#FIyOm>#T0G*PDkXY?>f9B;l!;}nd5#&zuG6<5>WV>(sx4;7*e$VHboiOjZTh7N687cj{C68>co-EiuYcF~{Oq+M2ML*}7VvW{|Nkv>MlGDAGCU!&~mD$W4WV1YHeeISo_JHO)AEayA z=CRufT71g97;@$F9GU3UxqEaT{AWmc6RmbQ;AP&0f<VybKm|%ihen%OR!pYFl`a+Z|gE6LZ(O$MiLC>p1-geY-04=EM({G84o( z_f9OxTNTFR&iE%->d_hZl;h%YuO_Y8CU)qO?fYMv498+F%=#(uu2o0aHQmQFqV>b# zHibf-%O?|$Zz_$R*>Y^3%2gBF$98`&nC+fF=~?aC$?Nl`eCLSlJh}X>(1ONEThH8o z`gPGp7K>N?D=PhN3P}Yj%x0DTt6%W@%GDa{-wzL*%+kNO?U4lBFqP7E*Z51OaLXSgH&uYOyC zSiq+z^@q1Uu)cHq`SNF>u8QWpKP@y84NaPg+`heZa%YqHX7z;smC+w@ov2gGR(TaT zn+Jw)D)Ze1=Z_OD-tIv^R;2fsn4NoH8?NP7rqKF5vNv@7DrIdY@3IeUk6u1XIB-)x zcYVq0%>8ZdOV;vU-1%iqxLNqQlV8%@?|N%5wU}4D;U~B972%S|$qx^&(pbEj^+Jrb z&gbp>^Y<2dtekzsW6{5>n`QgAUwidk`Bd47R$iN}#zixCJqig5Je9!i>KA)j=4{~R z@9x^tYTg1f437sb(@nLL{L(vio#=iNppYV9?(Dswkb9Z!#W}uLEw=sG z9^J2bTU&V5f;qvVoZ_OZQv+WzzxTbEvf#vGW_*6+?M9=XW8SwHDvZb9dtgO@^fC|1u9-TmXZ zr)rv-sdametj47O3{5FPKKwdqqPosYE0ZTL+;Z^xt_Nq@JY`g_7K#~8%|H0|mzr~6 z&_`aorQYtUI&*f;m{^&Y)a(b!ny>Aa~r;7R?@;$R@{ff3_ekn;umRpD?XgL`s*WJB- zG~{Y%++yp$IpCxoZ>?CJHivt5>b$PEXN@>>&s<#^^x;>ZVx8OlNvpb|Gz)xm>bAt3 zxIg1+h{3iAr}rNCdzELi<&Tsz6`m|>($u+QLp)wQdU3U$r_eKb&e7o6;erzrV%r$?=I?5q?8Ut}&-t}K)0&&CUB%H8G#8lc zXjmiVAQ!wX+<)VVWltyl4v$%wvnlYzv&pj8+1E5p{ju~b|H;C8D)%&`u03Hq>FAK~ z@9_ck*QxysI+jh%%(j+V&L2Jry}9K&<*J%jq2HVfuT5HI%vjt+e;Eoj@=2=iywEFZ zTivluT4w(xJ=PzwtCaa(SR7sEx#PR*lbjiH9}6z+ILh(xs?9R#`-ZjaW=WZVTWK9q z3t|&;*1bD%LqUR1G<){Kf}G%v{XwFWlMdEQ?R$AZa7LI)#JbhLwI52ZxR+RPpqRVE z&TA)2-|s0pn>mUMcg$Nn>1Bs*u><$56BBpUzMYg^uqx{1OHZDQ-pb1-oK{=8_UYnR za>4I69jVrNU#&g=qtn})NwyPIYNr<8jJ>{hn%IAaF14SLjEQZh1>bCxBZ4>)_pAQI z{QpN7tU;YgMpi}vCMM7{7Xt%m@e{Kki-3@#p|FUkl7W$lV^Bz8(Zop`4_;IVR8C}d zDrjsnUbyHXxI4)N=}xBWe9P2T*=E=CpTWCY<@M$(V&6_)PhX+?X7al80nsIq+poB*RbOwua)0aIOJL&7qSKM&x@>lN9u1*2j{q^+q{1v)y z!FJ!)kKMQM+xBg7Aj@;$mb2>Z^9~>GjN2*|+|A?s(O+@xcPge*wjs{~2C?J{n0Yl`T<4iRTws6qvORZ(NZ>9nzA4vzQ`1>@mMm7R ze)Vql+TIiHmqG;Dwkp~v-{+qfO?Yztf!(9eGuB?~ zEIYfngvIr~_z{MCHRWazcxoZ__Uc4qrSg}>#knsqJijy z?@O~KM$MF*p25_+aausp6tn3j7JHtp4Sstiq-6D^^D&+H_zC_b?nES$I72o>nF4cn_V)zx1e)ld!V_lfJI4= zxUu<{e}+5G{hboEQs;8y{!fZQP7{|n#l{>ue(B0hE57ZbDooBDqAjr(Ljf4_Q{1}wa0{$anP>@FhZywPM`*TR;r)zaHjX0Ul(OuqA2z?AELrt!vw%?gXw zNlnR{-B744Gh0tGY<1WbHod2+i^92*PO?2&{GUPUwzqThija-F#HUHm;COlZV~?b~ z)8ZzM*`2#q$NWxZH=4h9zfEZKWc!BSt&LY7OkvI6wD(%JXK+-^w+ST?uGv2XWLHf* z*z0p`))x~op#jLGJ1^Ei?nVzlSx-R=yN0N0KOd0y3Q=WG|t78G|J z5Si#Hc}Cqq=8bpphTWnciYM$`0 zTv2y!cKCU3$)Oe|C{yX5zv>=KjoF`WYr# zNpIwjt$AN5qTSMX(|}>)oQf;AJyTYxw5H8Yo#|)MS?K!3!b@@mEUAF9mR8-mi#%5* zwsWZ+_W6}xeCtk^(k?ZIqQdBOsTPa)mZM)5i_Uzjr(<=u^GML6<0c`ktxpzcPQA9A z?RaRqUP;1Eg@c1xc7 zJoU;ccrgNsr&u4i&T|g~3QgEU7^IX8?y_u(OkI(;Dzb3bTEFVKYtKyBz4*h)$UaHq zu;sb(9kIyCy!%N-S}ME2e$jxCWvlt3?oSo-+~o2igJBidcJp-SP9e6HPalM?-1NNV zpQ*#bFgp}$WaE-T%+R_`Kn@hqo9Onjbk%4UWV4(46zCFUZRd6 zMi#q5t3s!p-Nl!c;bSBw3iIj2j1TgK1uReIbM~xV<0PZ@>)*Ol-@R3ep0&D_TkY`7 z>fPb~{fE)5YldP>-|e|1l?%%qt|nDTiuTx@5C60ZUYh30F~8GWA-P)RY{iiWYZZ4p zH@hw>_3m~Iys2WCByQPyY>BoAf8k-DQ(JC4-Mm?N%96=2-5bby=0x0SZ_Yz+1Is^7 zH+4Gh?Y{2^Bunf+{z(_)_K7=gyQY>stBzeO?v$f)bjyy*3o{ElpZ=Jz;(Dn2jwJJK zTTOlIm_v=Xy=PhI^=xfen#+N2iW)a1E>Ae4c9^x$!zgTK#Kk{Kos$jMo{i{Uo3EPz zFX5Ex8NZ9)Y}1Uo{CkJxTanD*>wK$D#5@bR>wjrc-p-Y|f)5Vxe#&KDW#W6wV$!)O zr%e}aofvGj+%NUY8ugG1molDOM{_r1ui~;%m~;4-Pjho$7yqL?HqC_%&RsTL%`^S) z-Jhp*@Whr1{vCVQ9eU%)+wPk;weithEv6T98+xXl&oR>6=*!P~Ts1vgUV%0GVT*g0 zO;>L(gFs_g#%+~3w&FjzZFDk9GPfj6tAD)1oG){7Vy>ryd+wnRzm$Lbv#d7Wrf#rS_-&;klj91%>iMUFY;5>%NnLe& zzTv8!yUmBG#)}H9G?Im6v@)9cTuVZ;wnl1cDir&2u4>_oVs@*00WYAs-5Y+l`mEZt z-!`A~T3OEPg59dCELW&xOSdoeaxC+(VVrO_?from2aVK4ymy)P;`je&*!TC>K}d7u zpY8|t6Sti=w42TU&H2q+drpilul$GiOLwgKyL6x5ujsC`x1ygQxNT=|&3^KJNlsYa zrTgl&x<}LA>V7J}bO*v!W-htQ`=8s#*GFO7aqL$!PwL#D5*qL#kqL$l!qVLR2P{9Cl@qL z5=cocYHqm%ZdNlgu-P;HXE=Fu-nTdrpIeN_%GckrKallz!GDGyQoGIVADGr%{Kp)2 z=*fSEUvJ~L)Hhr`_59E7I?+?l|FD5oJ}v$iyZT#y`Qq&l(-)=Oy7czkhyM%@_fKzJad?inm8+rT&MSX*W{OV53rXJe<5IW!QXSnP_1q%$nyLDs>6eyY ztG?5rNjjOTb`DGv>dfxtDa=Hy;`TEyI7MyD1Ex6O73aX(o&J! zLX*=oquXaSX-~2^VDw;yXQeSKOR&z++3c#bKft1 zJ=Hm1L*2JrHB4bRcB@oBv?PD z2YZF`T5%`&e+%ZTEo*z3T(R_($mGeDA!cmPdoO0)N-BRYR_XTSdxiOR|CeHm?n(UI zX?cFvGA@ahDZiF}s5|l7)vde4$?D0f1s0z^F1YO85;;py&F~J#&x?8~Gd)$d87~Rm zyKCpPjGKF-zFyxQ8c|T`b|`XP<(g!hlix#Ty^|C@`AT@HXz{k2D>-*mZh7hP=-|W0 zyI0>2GmPUEkKNXt!~20Rqsr!w`HmZz&sJIftNrpOZ+6$)Enc%aKdOAM-C8j1)-~mQ zGY!|v|Gj$gTK}@r$vzshQ_6W?>q=`m?=Fxqt8eM*%$?Xfch4Np*f!%kc6Y8Mu7Brg zo5_%{VxQA4{UuK($%-===}ow#U$4Kq{$$()_s8uecAJa@jDFjvI?HU>dfKgET0qv< z_U{|df4H|MFXzD|$=r6nPs;n|%xRwYuVST0jGRJ9#Oy%EfH~&J7Wlj9=UL4Pd3wCl zRNk#5#@pW0Yw6XN$}De)$VfYpS0MUbXBxp3GOStV|({^ z_3Cz!Ut4Z1@k_RrOMk!K`5Kdt0~epTUB$W%v5k-3o~{bsT&&x}Uv3y&mEfz@s+6nv z#jH&EVc7LB#$^*PyUa2C||q zpI0uK^p86|#J9jR)y5NNAJD( zJ&Y`q7tB4Dp?qhO(v%}IGFfqMlP^B?%v*B5?RdtQ&&7Z2Vot6;o3DEI&Jml8`d8>AF3QQge(kM%gMF;K^nxRM^YrZ-R!g5rGT7xWlIYEU{$@b*`S#EvvEVb6 zH7gGDOuY46a#pD2_a9fUeygw4!GrCL3~S;_itjj>J3Ril)}SP%!1{O9 z`S7>5UoAN^;ZE)<_iZO1z7IS!QNX}VU1hR=#w44~JQ{^}KdipZbn25+>9P8Xe*X1u zmQRc1?{a%Q*W@&pqqfXs0cLxynK{ZA*XLFh827!3(34h+yR(nw$KR>COCprRD{r4_ z-F)!yjJZ0;_sdTXE=elb(sE@|`APMe@BcG+x$bQA^UsW)T4Me^xTgJLiT>x8pG;YI z9olYWm3{HF`^Td1SIn-R7Aeg0Q7p3k`CgtYR84)6Y0?+p2{IjSRf z*RQ4LmZ>W`eE820)pqmHom+R0#jcI7RgfwF-G9}q@zjC4iIZ3RefgY~JB43r?|kPE z*Hi<}Zd-r;Zn*fTlgHASBxUED{`?5p_$zv~#tlA~OTHE!JK9(8kXqrX5Vtn)k`{%);gp4x<4JBt_TEO?yxk>SsaSi9&IwNY=318-YK6rRc}c_cmGXGad7 z+RxaZ*H-^5lHR^-nuosJ-7PPzi{*1ocX_M6opJirlfaMXcOTjkSs3-;+ta|Sy~XFc z-tF0*yLr}&`ghNM@-KQ3|NQckjN@77W$(^kHSO_@qELW zx+~PAOME)H;y=TZHv+p83+DGfpQ`P|67cfSYt=3M`sZss^6o}yn!N7O^ZXod_xW-T@qJ(qpnCA?%iXH+EVKE0PyF6?@b%g)>9ns#2CyK&Z` z?WtRetb9vCFMUnT_+q|$*LoJ0Lx#=0Tf@0BKJEP}xlkk5yNSzOF-liJL%M=1ed5>3 zpv-Mar#P?nmE5tOdQt6|vYh6-h{di74|l#lR=xU?&JlArH<_^ObCUOq!i&ItcJt;d z$7=KLS>E=!Pr359`|GnRRYI9hYOfF?cV-)BG1}Glk<}I z)YZHaiR3bVx2J#qUEi#RJ9cwZ8Sd5;hutaj&aODf*!E<;)wR7Teye8f+cLXOMP_Fc zueW^e;-sBQlUQP<+}GTe__$W%*2PM$>X}Nf-Z2+3ZVXs({n3%XR|^G8Ct80h@Hls4 zh2AumDW0nts_opCM9jW=YI)RVS>?Q|B|*Z+G)g=ynS1`3T$pP)af9JQk5!BOgkGhc zo49OU-j1`v>MtJJ%s&#ep1befDZTr#g|^(+=VxB$vQu08KJJ}n+PRNM94~$p*?v9j zVytCOLGhB>DU+C7S~pExof7gn#_ig+KXOveYL4p46YL(x^6&o^oclrE^}_!1%THYQ zii(q4S+}^a;+b92y8TP9Sx=iD&hM3a;Mke=-54C0?J^6}% z)k~e#*6QcoikwoOKL7T&z&w4y{`rQFV}!4AnKaaBhjhKwtM)&&H*dy;g|TN#S`6O# z%$m|~m2tXL@9E8L_nO`1Ba5fo>@)qP_Dap%ccVkj?39hm444l+@%3bWWwg0m&%ZP# z+KYcxowTUM+32(C+x1F*@PsuiUF@@wd*7ki9r9~$y8T|E!x6*0ZSO0`jHbGYxi_yo zaeenEQ!Xei>|5z$QTCK}s7;=I-6{LnK9QTp``DpHk-oQsx0}`HW#xgrCqBJjap`aG*(rM+?bRh^`k#MT zk4uuunQ|JA zhxrosxauC!y7uAoZ7yE#7ms6luU#oSzpG`s!s-O!<~hNwUk#^8PWWuk7wchWd-8_!Z^=|oEWEgQ{?opEji3e$> z_HK8pWBMCEuJ{q2y6Dom^$*y4o!2?7wcSxH)GznzMF`7WgEQve`4_#2`_J&Rsb<#f zg$pzKm%H~zSaXyqpSLj8-E<<36kL{YTnn%dgCB_;|bciN;Z>UyIL*BqZO_kly{{ zN}rSI>-w#lQ(KSj+w&kND^`8g>jnKF!jyv>Erk`ZZq7 zle{rsCpXwZxas6(o!L?mTV<6eoIA9`vn^kFYgF{H!_lR)KmU9l8+z?lsZ4&@w{KxL zCakmC`{kt_OT){Y&u2LO{6no$@cqv~@0liw!HN^! z761GC(wLW1>4A{-s_<vl-=$)RGq6`HIs*H;jRTgDz9AVz0W%F_qG)!2I+oY znmG^8MQ$*>|3K^5+bQvPdQKjkTq<3ATgqH~()8VFhlSYgb8X#zbye8SDY@?~R~ia$ z=_t>6!g|!1pLgoc%n$dP^r8f}Eq?4-dGWkVYtMp7+ItI z$xbidDeQRo_{xI^*ZGdRgne9}r01onw{_dT$H5oDrtN$5zyvtX2UGS^= z^YQMt^H9BCDhPq5DKlde>~>DA>o+6S5~wORe?d;Ww-J*6-+=9P*;* z?nX7gpZ8jqXr&6hGdywOl`l8*joOV)rB9=fC)$<}oD*rF|sK09RGXUp8Ux@41q&k4$H>*=WmBy7fU$SXS;Ysp84~~ z^ForFl;?b%A$6!(ZST+TA+|G?wa$#(lNEhX&1v4IV_LP*FZ=CfF3Nc1bq2gUr@Ws|kvJc`$}&XndGh_hyDs)CVtH$0H&h>Gn77{H&9rkG zv1gSfnO{YGmohwYt>fX>`TML_CFpvei?EmI$&kJAeOBgy?44|Jj(;pxS2r(swd>d< zzqJZ^?9=`;Xzg#yPP8#RBPn^jQu_S|(F-dUdvPpdbXVN)ORx1`t(|YIa+X0#hBWu{ z-W6x~R|@Kj)}3{}>pS!6bU)$m4WE|SxC$TL@cGY^ORreGCwTpodcZuFqbTcTxYx1c z!Tg7M0*@;lRr>n<{ITU7XA~>lEv>(QSZQ(U=;V|D;}t)y%$vY?;?#1(cgy?S^466k zKMk_^SZMfWzEt+Jc^0`L4-?PvY3>L+^Q3p?POf~fu6x>ZUh}VBQ&YBNll#|{R|o$5 zoMm{&bJZQ5mx-GzLmy;()j7F*zSb1x*K1Eqkmq|Gv~j!f+5ZeRN50yLOnfQz`}W?w zUp6@^-SyV{aXga2^x~?`rh6Pse2di+{q2vfdpytOvccD0<~Ba#J8oGb7iIMAlzYQ( z$i9t{u3N3ddiiOrK$M*zr^UhNCu+r=%KtOO`%he_HgUbg)!^vk**vmxUY$w?J)7od zKb*Emx8$Y8F*fV%OFM#(W-RdeyPUbmUajZ4!;6X49%U=HKHq%Rt~w;>aKnvbtNPxR zPn;eW>2PaSwCDxHEzb3;mZY)8D5{^@;Vo0NGUsJR;J!;n8h(!*X5M%i>?u-tY0pRJ z*wY=y!&g-X-QF%29?yJh9m7V!Q?<)hJnraub1r=Usl8%Cr^WWBN7t;%NbWeH7HhRJ z=#g*K`FP!P-Cys1o>0B>`{gR5-Byg7)K)1@4@zdQ$qnARcGsfgOFVwwd4BlS%DmWX zdF#xdiEUZn3B6z^Jh9K9}1|&Qd)iLH=4lW$|e*4FF%XZ}4j^;Zh zw$@?{nLMjsH-fENikn%-;$FMxp`H@`{u*9dy{*-^bS0(+HR}x zc}+2|SIEl~PbY3=e_W{it(5P=;!7SUHXpy;^PeH}-xfVRMgFYiQk=IY<%@?fL4b-i7N8zQ2&XP@_3ny>orK?dh;%Cd%w9iWzOypzLxpm$(5K$DP4=xt>0G8UcBDo!KdkN zbAsJYAD_AXWKKYa3fB^=g2NBqXuXRpnrgE9p=MH_Lh*zcyugYCHL#24I8I^ zlD)Y+Omc_rwKSQ1CTj&Ro!*h<{c^KTkNH{Ed3}FYezJcXAyx9?;JE`KnZ5d}Rr(qC znqFEjdQkA_nu_u(n`0&_emGYcWHxE--+7bo2RP;n#{PO^z3S10Nq-`42HSk)z5bSI zm)_6Wt9}dd>!0I|@;JRXVdcd0pSyNdo?qEtyzls2(<7QPViWn+RKA_)_VIM$Y(}q7 zawZ=#FCCwqKI6j*cfqFJMRFx;=i2zr*uLZP!TFbNy~^FWLFLa1z3G)o2ife?k1g?5 zQ{vIu^7hQz;8^eC1uJFUzOAy32$&sddeY#ef}WXO^n;r0g)=?0lI9nF_@&o!yZ$B1 zPpRz_=Qtml9ALBgX?SL-)!NxFUM-Lbs-0k`{AN+UkyD?Kad>dS{NTsU*Iuo9USHpu zSuxGB>y6iE5#_m`1ehE5&o!B2w`g7C-7dq9D?8sSZ+^FOk&v)X18?k)4+}*K#Tpb` zb+_?9H{n)V)gT>K+0~$*q8T%Bzg8hnalx|_O!gURYbtg!o;X%Gali8O@M#ikkNCFO zecWfas!54!>BcMNH`3N!5(w{Y?)&%WN}-?0H0fCrjvBbho$t*~F}9Y;@5%bGLV6S9 zxhoSjE{knEKRfix<0%0h|K3lHpR4%PGB)(8)rGt>8e1l8biOs=No%~6_w4A5M-mq{ z9y59M?rALhQj6q9!^`)~=;Y=WTo#Q^wpP&D*;jG&Jva=y7L{%#|9xWfM09 z`!H>pBzkq@!Fa1_84~Ts-niF#_nto8{7zK%xM~cWsEj1f-W%`#JX@>KG2bKhSyY?o z<<)V1+Kbm5dgLs(T;a3D`FmQ`$L>BpzKNBGCcGv=~(oC24R0wkr;-vb5?uG8P#Mjv}j*{aJI!$P}`#3ZoaZFm*3M5h1&13 zvcs<1o{5q*uZ2qw<#S5FYvedTU81>xy5&! zy!+wT>m|S3qc*--H^0;)b!WvQxsns>RnGsuCwhG6PDh0sE^fu||8!Mn=sw%&o|DCW z_39r}jf9IHW*1KP$o;u`>deB~zjb4N|9%zpaO-rb@EOZ8xH(f_tze%&)h6|Cao*u` z8?4Up?fGu7ByaPYy{@;`#OLXFExkUE){G5<$ySB~bJA8acaN&Y!#?P;w zE!Z92w|D(r(PW*}#a$k!RARmdHx_LGep0=bv9SvzB`<%y+S1^7z>=9QNtB z-sF`fP3F_{ccd+?R7#%hrXjw1nd7~>#lBK82l?IIYyq$7|1-?@pSVc#ByXDS&GQO3Zlu3keR?H_kgMbjc8gbh6}L91sL0#4 zmRanS&D(eDv3Gh+z?ath(^m0kYt0E1EZH;7Q9w+*C^@)7&+?k;o~DmW zo|*_{9p6(dnqFAS#m=(mhmhH=^{U%9hRu{tmixhepuGIkx)zt9m51gt+r3}(Vxwem z$#iWEx2HX_XG>Z>p9#COZ`mH@H4ZWpYU|>)`WNq#viID-Q|gMnUF}Z(hTq#(tW9mb zy+kiPa@Hf4gX-)bp8g3fH%NOWYc02$|HPuC$rslPuYU1bL(A~-R?{`#G^a2ef6c$< z^Re1HFXay1zkI~7Wr9{wUcBtauK~LzJ>rm@u_^l8?QJ$Mm#dkU=1h4ScI;tWp7JB* z_uD({-dtV#bm^XAJ<*fGX`V*byZ5bn6cer5wmz%m_1}<9_hXOeosqJbBzkr3hT;#4 zrYpvo=cufz{CWAP)hnAR^IoNBt`oD9W`2@o`9}VdlI_ORa!UJGpK5!P6;#5sdg|f) z`{$PRos9c?vs)=j1-Z?b$vdqO^pV}|(?2YznzTZ~-=>O{- z*`+D*Fd=t${O>mD*UL4VEe}j>uN1wo|E~WhdDn|VUTb`&YcfCVxUzfx`F)cPFUp;k zH#K9UjOWc(``SHwcE42TRK0uk+V|iSzbD@*{8kx!v@%unIPWGV?-KFmhLU!|5CbS z_4P;J_J6B0mFX{uyE~uvaKGODR(bdB0@`y=^-TV_y0TeTc@2AS!6YV&>h{FP51sp) zdTtfCm9GrC{blXef+MpQGGscx`EfbMCuPgT5QU14*S}xfRI%}h^x7}*Jg)Lt>)QL# zi_#JlcH7_B{?7C1gY1QSEQ0^EUyM9?al^-Vi93Z@|1(^=efdAb$@lB>o?E@sTXJk= z^gB7`T|4$)xc-ybZ_YZ+xm8SWjKB4VZJF1+Z)$1Q*I9nr;a^0b)qi=`5!bleXU^MY zjke5XUhj5Z-m0wce2?Sfu7rHwvi%>HUYECgTUz@dT_icLY0tsi(t+FRTJ}%Uf23@> zq(t@sbKa}Jp4H#NUwPmEm6^x?$I|-Ff}o%@Kk#1d)L)Z6zgd5!e12;3FQL!> zX8m=q{1*Po`urxaxsXAKTyK)i3_@*-N&S-?mQVYBM*fNt9xI{^fb=-!JDb zJ{LH{`S{OAlf!&-?Ijxj*xg`T{^arIxc!f3$DO}ESGe%kW>=$`^UitxR8V_dI6G_q zz5UBgul{G4n<^Gpe_VIvTpw;l7EyJ+eUmB*ye4?|XRh}+?$7bnJMZ5OmC{Ey+W&kx zH*0$r)8SzL9}g9$Uh4f+R=aP)9M7l0oINv7PM6qsPS$jtMBCe=1)oj{{rzMV_xNzy z?91!4(@g z{hR~qly6ltWX{QLIkV&5#>8_!j@)V8;b%It>OVvKdd?${8{{uuecLoQuQDm&UHHxh zA)~VMoQiW3FFv@nnB(rbCvlAh0bk=6uM#nyV5Bw8uf0;D_3nkYZws^AT%tQ8VuSbJ zIk#;Bi(336qgz`9(zg6sKKq1}S97ofyHa!H#V8How+&NNk8<=o?tI()#nwlCLW#Sv zz>_CuY@|3i*X8edn()wLxsKLl6T&`vDE;c*TLhW+V z+-#w?X>ta4GK>T!#wC27thG&{^@vfYa@%!_ifgm?aW`FiWx?~(^-_o>SM-K$rh$KJ zMW-)|jC(J!=&ERg_>K60HuuM|({r>q7#6MziIx84aqL{=^?y5G3-uIL|9QB3O6QDL z&He9gSY^b;8?Tw3>)pzGHc47#=hgh9Yg!tnTYoWC@YX(OJYAJzsnNTvw6x%kvVfM2 zi8o8^j?1x~(M)_)Se7vPlt+1Djlv(FHwl4JhIV|*oMa9!HoPvgm1U#c2Ip9-O&?Wm zF?rp*|61ax;RQjFvlF#uzSX;z%;spFZLQlp^SG+6W9x$#hhI*aev|2)fXky*3j!u@ zY~Q=b9nNF`O_4p+%4I0MNxPq^FFrHa}qbKuBjgJ3D=9TwUt~{ z$^7%+Qp11+j#?gH7-kojYVH*|d)SkY;mD+ScV_>ndF1i%^!z1^tGN|#KIhTZHMcqL zJJaG5yWyX*IhlfTDI57FFrS`rP*=V1$)ZO=?`2K2Rygr}`JMQHrSYv^Nm@Gn4nRoI7bKJ7=z4Y>&$N*w_0M{3l%5*d{$SFn!@}<+J;hUT(d{ z^P@4PU0=ubL1@{A^X>gP8b^hnbjo!~Zjm{_A#lNUT3DvtCQaD?=cyLRsyPil2a| z{2hxMkG3DbA>2yzj0?Mjz+w#^(ze3|SnRI_G*#t`Tf` z_4C6`-86TOke{7OYQ9r~`HW74vnF1559hhhU|QoPa(-#?>t>10-8K8C_q3ce3i2{- z4@)}`v$SfDbH!qBGo|Et1}^hk4sE`bd#dEI@D|5SrQ8RbUp9Q#I{kPb%MC&0nSI6i zpVby=B^Ak-^qo3?=}i09)0#lFr_pi%sT{AXDag%&x3nOE9hC0iX3&JGr93o2%DSH8*?PLnG;%OdZ-d``P$rt^#VJEz|%T-YXCl2jhW zbvE!#O^PYY+ykC}mz;ch+?G{zl3~|r!QV-nCYGHmRE=seY2tr7<3O-qp~bwHL2Qn> z^?RI_O`3Yf@v->LRHjLdSFIj191=d+<-gEYyC=f-?8>VxQf520@BMM#XLnXa;*B?R z^YU-$7zmxR3f#WU-_~G{o!{RNHk}`vbke?0sS~zdGfjP+uJ!}Ri_#ybn8Zw&)4_dj z>zU%Jxb`34etEd)JYLrzv_v!Rjc=!Wn!q<+rRYPlYZ#{PxHs$2;Tdl>8OfA)7pGatl0}}_WE?i^kuFN39pL23xw$N=WJT-W0}9Bf1N{y#{Gb=f7330 z3fx$fzT(16i>jv~j|A*1u5JBbGxf@m`@(x71x@(%oX?5;NZ;ocrC{^1b<4^)pUE4S z8%{Vb96CWDO6uo{7YY)S%r+VezJJ+tmv7ST{-xp3_4_TNr>;<)ZnB*7Vw1;`*EU=+ zhRTKgA~puijvbB7Y#Oe+9SYv7{fa$mT6|1%`^Hbr?a~fkdkkz%EA-duKUp00`m*2? z^=}RF5zO0+-&rxSb+G;_KfX*OL)=zL2;sGdpKWg~-d+cPTukQ)XnU zhu%0J{eI8mIc&4*ikw)~Uj37Pwqa+>sUurk94F;;MXf4M3IF7>yk+WTt-d1+{oC{R z6-?UTx@f*|-|`@%d2^54vyakU`k!Iqv<)qOy7ksy&nEnsEaY4mR8l@gY&M_Ie+J3Y zRWd8T%;YIi-#hV1r;f+Mi`A7qlW%A!Wjwq7II^~|M&ZfJ`^skB$9MHizP;7!y4)MR zL)N)*k2d)|Z(O|O!NtkfS6p0?oGe%U(7H#>=XF@rvYRP(tRE*O&w2DgV!CALjeEIG zjT>LjiQ8U#{`9ZZ7FRyTt?LYvkNQls`ubQ|s=^~9=I{PHo@=cSJG^X~n`*_fKV|}3 zqk^1DO`<$Q_j&WUsmu5ZLV~v|&AqF7a^be@E%}|lcP#koHBsj1$CuX`TI283u{!@pt)6%MyZyVK$jwv>j+i~!_{gp&bCz)`J3o{A z(d4SN%crn`E775|v+ACrR#0tw?mZ#487p?m7FZ^UT+mkcI`=F=#Bkk#zVq>Fp8OLP zS43|u(K#XObHd%hO=?oWhPF4h8?Sn8jlDc`W|eyl&)gEzh01GFcI|7eo6)?}S6Xw% zyvdTw%p!{74SyV~cF0z`$!Sx5!hEXB@#AxM{x}=0{r$d*BiC(Tt3A1Fv-x%{%f2mr z!{+p%kM|?|n|RIZnz#Hkq zAw}Fj()r+v{|tB4&)w$imS}dWS@7y*_re+Jem(U?&u;GIZhTbO&(t|5GD2y)#ii3c zrmSDTwQG3Y4lV9B?KNZ**nFna|4It))(75sBJVb4EZb(gVM3C@x83_$s(36J^BJ=D zo|8M|5mrC3U(0oaw$;|+>n!eSC8a-(eCbhG?_66DD!V}QR+ik8UFX6oxnG_8nO{(o zl(3E2>Guq-8BDe3ezZ66${oJ+Y5R$$681SBhKb2rt~}Z~SLU#_odMI~DBmT;?Dw|` zzZ2PTcFCLI)Tj0n*XB+#xR{p7W<1&MKZCp{>wIPDBxi=yj@P@{Of3&Bx}F)nK%in? zObydTk@jsnKRh~ox^&qQf7eDganGuW3qJPj>iF>V$7%N@*46&Ux6f&36_-jp>1Wt4 zBK~r+;fLb|7uu`udC%IwYofkV-(p(3$Lz=N=X8D9vQ_r^-M+*{FFpmFZ$B237n;fK zpKtqN#;IHGH4W-4)*pOrt&{7H3a#vzH<^E%RoCNbu3Bpg{(ZkLe5zHpDPjF*1)(LM z^jD@Yj>z;DaeS6(I&G%Tp7nxPUS83Yt~2nM6h7nci|CVpB|UtjEb^x}%g??qL9 z;u~HwF0q?lW@~BWHub4`s!f~2zQApgLAimkq8BI6S>*RTY)?|>Y@>`fpV-)?+uyzY zvBy=}!R+J92^VApRt4|+v|47j8NYu|L+r7Mj+YMYeq|I>=k<7fgdI*hnjI?re%@2IQ0LmieP4U7MEF$g{x^00 zSC6X8TVLNdTafgDA@0}r_kDa`xu+k0fBhve@#3Ey25Kj{`yYHe{zzy`S5iKM;k!qN zB3E#|*tL)AW#rip{Sph0xpmsSpKfbl6D*u^+}9>alzHL`r=lq@b7MCNUc6A3RPh6hyE$tPW!IgS0>a{KZ!G=pbQ_Ew-8)U^7OZ`q=q|Lg^>Cy8|VQFQL zP5im1zB_e#Pi^i}F_TJtj@$(&{FY?Yl%3rlsBlp}=h1>KqK{{s;1UUbqoq|~mpWxq z>h+{T4&jA~Cm(a@JQTI9nWN@;)m#1A^2>^a)eEEReRSUj)T)Itub<77(-c!>d8DdJ zK~w7YkvE^)j`Lb@uj~EKu;cO++53;#BJ!3>oO!fZ@#?Oo!**AV&^X&oo&psWalV$;d`JFW(-VOFv>a-msAafYWkV|W&1Gv(maJJM*)vJ!0c_%068dXdXZN1m}_)V)I_T zK2>`93d^rXp~VsFZiz(i={SCPt_&=J#js) zy-Z;O|7F1&ZeRL4gMS?R)etN2%fJ2p37I70!t2ku7D?)h)V4pb5W9OqXu+fJcZz;6 zP34?z^PqEkcBJFJx*yvnAKEG+iHFr+Iy57n;Oq_0QyS^7z&PubrZ`?OS=-fA})VbQC4t52LnWv~H zpYtkRCc|^r_4qQkP=Q64j+&ppttPfq%jM9n3XjK2QdDLBeKegl?O@wY?|E~Mr1Qw= zIk@w9Rh>DJbZYvoneCesp76YTBIf1ZQQz9Bp!ayw{rsieH=dm1V_nuWWyf}PTQApV z3Li};W=~F5z3cz`xeAZcqsgMjEmZz9Y?*mQ>c9;SWBrexC(dVCuE2N1KS#H((-uKje4oVC&Q;^E;*6+ z;&OPerRfx|U$_1<@G$mVWHfkK@a5|q*%&_C1*>J^j1#Uncq^@RZ@tL(PB_LL57*lXkIvOx5}nsKUqbZSJq9 zH~8hhrh51Y&2O4vp<&LRQkAl&Rc+bfCq|ikzgRluESQ6pE~UzxeEaR*c|%E!*9>2b zT61pg+&Mq~yF_5i3~l4(2Z|?foK(wx8F^~exBXJjj2BG%k*_wjvc}_+xp~0unMyCj zN}Wmy{v1@T3Cmpg@WqqsT5PW-6-ho_#qF>zU-zfz+gpD(w;O1-hdmdWbwhX3k8BaQ z^w0j0;W6cT7kBM_ay^IpYGJy5;r&Sa>is&49~^lkcV|WB@5Q?B)!y}sMKWy`Ta+Ls zpxIbj=QAZBLgYizlTYe;PMt43Y;=zlJ>lbc_|T(=RlRtc48OIS%c+ zW#s-`*==p;u-b`js(ku7!Kw~ME^GTUJNkaDdR}9hb*3%g)vpJ|im$}DZwk4doaCDO zoUhW(NL=u^N!km}=$fZ8oLx%m)Q?F{b#T^ z@%GCT;d|ARj!%nIBfl9;*ImDyheu!Xrc0kz>e1&H4J)V#|ibCZ@nau)0Hbh_&HM?K;p-#vf#-5;m* z#H-5`w#@r@{oiBD%Szup+N%#vx|m$bV9w+6d5zBW%ViE`g@HX)hg8i}WlVxTp9`{= zYi@sT>UqLw@nNRfO6J+~dm4>ci&h%k7rdevDl2vJM7B>sd!O)x-K+|+6G}RItk0yj zGJf)jubK8qU%7o5uTt>lz23K4lJ2~&%-A{jyajK@@;aRqvS@Fhe>lb$;KkR5b zv-Kx~_3OFr$uEun?DIIn{Y2=zc-tbTe200T)X&FE+4YQlfpSk%^me8F*;75|&N@>f2{2aocnr)yF_-ny0&eV%<|Uqejb z%f(z5MIw(DcN&JT5&PIb;eJzlS&`&KrOe-l_HZqBJX9HXzoY59SFHXzzOC-vC#z=W z?~_}^v!3Ha%1$}Q&iRINKQ8}yR+6$WUm;5Tx73dU@5L^jwcghh;|2CLmG<;EGqilx zt$F{vOWLkA>T%uWf?fMkg_Ngt#Ffvf>p1sFZ(H(WwT&*DLVatsFG+t+RC}Vm@Mrcu zkFU>|l()$`A1&TjIqPRqV3w1N?w6%@o_tFeoS%S@q=G#8lRs4^QlK*-)8z z^|fO44Pl=;rGtzD-IAt%-}h!&Z>jrqIM^j9`0y{I&{+2!wrtmrssCVi_SY?G-twp; zeW$wh$sbq0@pc}I{=~XJO!h#S@rvn+hxxQQQXO7jk68Z6$4lBN?c>UjgW3X~Gru#d z{I+RXd~kJgrOl+@Gy4ARc>hPJ&S&<)+n@N;e-&LmCcA2KVygN+(d(({YG*h08ejSp zeluvhXYdiN4NI50yqSOLa&W4n@RIL43eF!2Fo`|#LGfj`$h9MBE^Mw%%O>0qeD?LA z=FO7!kR5Luz1J~*T7PV(pKkC}Cr_)nS;;+3rM$@*(VOC@Ew?anlG`OzT5@7RoLA7B zg7-_0S*y*ux}{0^y8OE7ERL+2O`XT{El}d}RGk&M!C#YmB7hJX|RfMzab+b%o zc=CRq%b5oP_;#{h+7a_KLCERLPJZEI-*>FDb3Pp#x?8zn{j91YB{k;FDu0`QMsel0 z=||cqY*g8$oP1j$_RileFK((mxls7UxJbqObDzhJ{!8AGCj^d1rRB8UU1YvP!`|JE z5+no2==6TGPBee(R1yo&Nd9TJ zQ(=Y!*OKTXw)-NT_@2*+J<#y=y2b9-4}t|BN$Q8+7iNCAd**wuj}3(lA2KcD+v8>^ zAM#M$nZ{IHcwgxKJL_FL-dbeddh4_FpUZXw^o+jZ!+l@gD zLVxC*p6b_d_lDc~&&zU!-hH+>eZ!>W*v1d1SiZ=;Gk@thd2yj4gYtr9wPz1)dvUGt z)dR*u!RIU1>~feaxBqhQ9Frws`}Y=4KO*eD&-J?kQ(Wa~`3)(1&L+rk`ExznAEBJ} zXjzr?g>_a>YW{NeM;>4>Jj5K+&&JPkK>g>Tv|9c9OnLQli{^e%-DPg}`}-k(ef#&q z&h_8tNLg+CJ7>R7`G1Cp7upy9e&V?JeEqp7|Hby_BAJi;XRu_nv8lURC|LQQp`y4- zew%CBYlZiWu95*O{8}3CRQzYSXb-zXiUD-4r@$mn6*7^x)r`WQrAjY;?YkZ1sWS12 zF4vvdth6JkC+1A@RH=~I#8S_-jL*?LUuBY~oPVTI!kwPd+8dlFRVF!3N#Dyg)2Jit z?U_xUDic>Ln+kPyy-Zs*Y0V^0mE@)wLRHtl?QslTuQJI~IWnCquJ6M&jb@NWr}9Qd z9*xg;-Y_lrX&sB_4irlkN3X zndD{GvA)7G>qK4ljv`N$NhwQyW?QTYei^dI2ISP2efNLd^y|n@-VSnVL8rjh-<}UP zg`PgCGRdvfZP&t?-L8x|CqaJv^`D{O#eq^a%aF#HNuDZS_HXzcQ|Y|?h`I zsqWbNROIhuWtB;u`j;j(GQMR^sWQn~WNn$!M;A742arZGBNZ(*fF{&51)&pa zperiCcakwO2r42b)GmGyIQa2lfdY6+4RrRaz<-A0Jh!d+H)~$}mTF~pQD^a6YyQo+ zka4KpMcMu>5*uolCw@zZq15c;O*6G-e?-$IvgUWK?w|dJ95DwIK5NXn`AvywM$Gw7 z;i}0qBX{(?nY7?nx6YR)F~5(zq2+ftZtU&9#ntucTt`5O?6u=JtWV!nOkmWzb)7d; z?_%PNJ4q{x9O&%(DE(!9zij{X=Sa>eW4CkL z?|;YB8Sd=5jMMSvNrC~WwYCF|1&79i;!aa zpzZ&i>*v}VE;r_+r*daJxy|>jfXQg%fondFp0ADh{xjUe!LXy+MT6nVY#(oVZ$Ze zrLRrOiFn+QpHHzRR^?tzs;~(ey0``P@KVyZc|7_t$4BuRH1gCrqwXZOJA;!I=eB-6l*JGVojlRf)gS*DKDeB$cq#Bv=Tzv{)4dhX zFYoawt|(qFw|q%{N3mPK#hx;`n=LwFS&e#!XD@V{ctyABQTQp-D+=#V?J@n)mU}vIgW}uv z;}Pvf^Rl-)O+L~6ocHU@&E5`77h+kZ&axG2%+YJ#Ew8i9aaQ5l@AJXQ_PB}%vvR_7 zRgvCl*99|~Crr;?6x=P}%i8DV)Od7zb9Yx&LG_RJ!)qhVcUynB=^E;tySb<4So7Yw z`+qP!R9bqpWcR5RYwq`4-NtJ9$Y@(mcI@=L%)5#;bKFh@8*XHaEXla_?AD`oJ6G=Q zxI6PiXG>y{a{lfP%^uf@A(#6D|49ku@$^Kn7)id^S95IpZZDzMC8niqH;cR(x}wZi zewX*I*FSSod(~st+J+9%dvmXq2s}Nm68q%gfmreI%X38T*%j}cb!_|eIh(q^OD1Mk zE_zY+WQ+E5%zG*C7Bo+=F{+7aJ$q!#Car6s6fT#h}z6q{S0SU8TE>7yO8{pZ{w%Jpi^CM`L2rZ zS^9Lws<^$1v%a!S&!`V}-`1#=v1e;4Lr|k$DAR#}z+0Q&7arZxwSFeV?a?CV1zpdo zZPvJb`n*v?As6fP%^fbcSH7}OI(l~7qgm%{Ukl!NRrp6?%Hc*iNj_W6?zSTi*^93J za#1>al+9|{mc7n>f4scS_uHjKE@Q}4lgw>)jqixuJY!Ws!zx|#pRwQWNbHhzHY<%X zk2MJ2{Y-5g_eTNWp6JukuQz|${^`%riINI^GZ<#Yt=stICD+wUkG@phy0+_7Y=PL? zT^s&0?9*F#K5=PaoM0}?QSHgKI^in2-mI@`nAmtU{|D3dI)&Wg7I}rvw1eJWPvllK zCjB_ITs7bMFw=uajP5h0R%~@)T4g+KZNBxh%mZBIde<3Sk4xOUoRN8d&(neu=a>F7 zSZ*nOP7gdAZ&g}2SIzn8$~OvSoK-76eT=I6Aok7l?ibwiw6I-9J7u z2hZ+|WC~s5`gZNRK#40S7q`z#J)-%NX~VY-#e2S2bmfGG@2x%;w&xHqhRWx%4#XBd{&nsaI2 z`2A1OwWmffyW~x|hE}_d(97LtB79G^9FF|b!MpT7!}u+SXq8taK*A`5*Ftk zEC|?mJ*W6i!Dk~yp|?{?0)kWH{rHqv*1Ac!9zG+~onknpi*=o`q`&`L+ZjR|xQ_oi z5XrHI?N8l1-s-JqDp@XAwCtX9;nXaz*R!f_&#&+_5-44L%*IK1jnX~A+#?Hld_vFh zE>Au9=D3D}#`cSo?!I|&mUY8QH?FE{J%=J6>=%A#H|<~j%vIOV_%eQ(A*20TT$R5j zYr)g(HAUC&1&7C4?zowIq~JDR2h*0=)}{PwtvvD$PZzCy@qGQWtVQo1?~w?tIrinn z*PUlixmRmGU1fbB_56osw!_nxzh=66WFgN+wXDlh4-(~`DTY6PFVr;UK+udVlQ{lP zP=>NUv+=Y+bLRTU%o7EV=cOh@ir!)qmV3#z`oN;F7wdksJjw}X5EW;L{rB%P_f+kW zpedn!lVyT^PkU`zd_}{eXsw9G>724(w!eP9|Jk%Q=IZr1e~wI$K2&yB^s)K%j=--A z_3y7e_NnoKwte5F4_eBJ=8>Bwl=g5fO8YpMdlpYz%>kBzBg^#I+1_inW!~1h=($2k z`<51;e*e9X!GVXA-}0E}e_~yHN`y5ZRPN7VOI^aIYrNm%mt=(2CNA^+cO0zrXXZ4T z{{CI)y*6yR^Wsa9O;cRHe}B@a*823~d!FpL=6#5> zON)I{kG>vty>0#bd$MuTwSAxNJbK^spJ9J{&pVAWqwA3ubbnkoI3PKV{pRv5r`Ao^ zcUF&nzT|iR(*5(F8H-*2&dOSLT61348j~+_#rqDV>w4)utDHIKVd)Ilu75%c(@LdZ zaq+Wfwz_^T{b)30i}~JPe)g8{ygs(BnU=J2w*E=zHGhM339WNE9=tR&%-A`*M@PWSFWF(m!FPH;ul_pATIqFTZI=n_4DI`G zIXv`Fo!d9n)hwm_chmI+Y^Jep^HjJddJ`hrLE*6$3Mz4~z1{AK_?;m&O2k-GY8^3ko+gour z@|qj>wMV*U1X(gx?t1rU=Zc%+E~d|Fk6*ff{xgr}p7>{xGXLHgdR;O*#;y`~WyZ9& znw6g<*F>-wzKpdu%sW%_bA}?@hm3~kGJB!hZ1bEAkA6+xC^m(KX=;A#u3uiW*`r@- z2rl72Qs%I9tMm5l-#H6Q!WhKv?H6YA);G;Ivomr$nD0GxmIc#!@4y+QY|(Y^l}iYIYP$G(`NROGW-b#L7T7h(53QMxV8GwQ@57WgfA zv~^|Hm9q5$+NLwse(>68@!N}O|H;sOo~g>BJN=}eN$zy4x|qH@?0c#}<*XO})=iBX zruRaGO7wbW9MqljEiRky{lP^I8`-^CUM3t6Me5a%*rG4+p2~uQB`_FKy;l=Fo zxB6M4%xy2X?2&r1<(8bMi0E_2$4`$vS4+$~@NRmf@0Eoc?<{>dGdi+%k-kW>{0YVN zGS`1IC`#;CTz648HT=vzxA*q_oq=9WVeR(&ZGGHTC-#STFepY8g4}lI?60z}YLVq) z;Y*A&dCeay9C$k;aFN=_$-ElXQ%fIN9Ny=r5TLiTdgXD6_Ea|49op$pzpGAfU_Gs> z6rU2Uy)-jbdZsv^pz(u%XX2Vu9vS5bJ&Zo5wjjOu_glTQY-}s@k6FIfN}uQ^CeR29qw96(6?QY7feCaq70|DqD~Kuzblr`#evsG%w2%H~YQ+8Q69{Gihoo zIKY{D^-x2(Y|E9KlQyXTSq1(%5X}COlw|7|< z)9<>!53@rvX4rZs%7?}?PhR?Q{S4<0mVLA8SLCmgcw_i-g_vwQ_wA&+*Or9T)fOz8`1g8h5)5LXVg3T6ZVr)f(?jubn;H{c4jVzuWN3E>+sN z{CH;SZSmjxBPxye`BnXA2wGuwaKbOynuE*U2ZTx-UC1T-4^*FB{#d(A-R|N! zr6bEVUP;}5Z=jI!XoqkAJ?_ZXTi1^19^Gr@ntjnLDD;+2&1CisUuR$SypZXC%x16h z_26|`+AAE@UF{7vtu6k0iYYLcY0^%uW2@#Z%9?fM=I^VYzc*dX5)DXx6y3?K^I+TB z4Ue{8o}zQ~>FdjqjlN9p#TH#SeZRYW#_M^B=PI5)uYFvVx?1Sg^7Waw=f-SoDp`GA zZh~6id{AK?^y;&wc+fZ)54m!?nSJ@>&dsoK&NS0*L7l~O3J#wZxBL7u|M_17E}tt;n!|6U7i2H~ zeMDSOkIUNl*QwBIFBR>l2|@<4ijs>~YZPQ_rY~lRv)?(p^Hzl3qx(Jl^`A^W)qQN_ zY5vcU;CZ0oW$yLr^A%^bORsN#f8>nWE&l!ArDiM&3^)+D+^)(=K-zqYMxngZ9m}t8 zCAe$8y?i9$y|H%rom!gFld~(@ZiIXAE9F&paY6QV;&mG+))f0Zna(FTHgNpJ^PKyuk*@( zPy10nv+utAo)7l-53Be7dstdgx1nDCGfSdzc>ik$Rm#6pyWajO|E;h6 zTgGkhZB}25?@Bw-YauJ5viYy&HnA@7;#QJ%H0jse%*&-8zkYvK&%=OqNi(&S&-#}9 zP|!EjYVTiuaP{%yyN$lu{%6qmczSg!>%aN;>tipsnP?hTr>;D;r{u`4*gq24Q+-0z zd5a4E?dXfx%U|QVME8yUoxeWfK1H_8TJ-gM#hdw-k4oX9iZrxcu$pR=XJc=jxV z1)HvmFK`emh>ZUx7U*(Ji{Z}Mr($>fm9IbLwAN4AaK&}*@Ba+7f6LDtF@NR9ka6$C z!ie7v`5T{1Q%gE^^Wy&Peji(Ju4vSZ?O0MOwKmvp!UMV5{WpG!^|c;(%&d6#ZrQhf zk&WFlw))|hJ4@8whb3>%SR+!sXnOUspI=^bZ0oDF-Tx%uZrJg-g{x;42%YemZJPiW`SQ#sy=?5Hjwv(5SVDZ)lq`pSPCDY5u+?DYAMNrF>%ez`3w_$`1jy2$kPq zx3qui+VsayIac;pEKew%QE$b62DMp1jjLa~$7RbLcHJJUTf__|E5InXz6aez|1h zmyFckA#vYbr-JO+^WLSxdF|rktd*2_+5PD_V6uxQY^GS=Bddp92Qx4F7lq%gK z)u53VAm?w$vD-^xip-f4ci7Ij=q)zzTeKl^YSX@V2~C@C{y8n$F=e`io&MSC!?z;4 z&%_`H!CuAQS<}diAJom>i9f$H{LjU+Kc(X<+n0( zs}C}4UlXwW!IWjTT$RiA{pt+fzyImYb*$^G9juk6`Y;?!>MuY4=$d%Tt}FX<4)u7& zx<0rfc5KzVsOK}fmc?CMHnVQVpL44eHy%@P@XnpadsRa%U2W~Ye;b-|Uam|OtWdbi zGWpE8pZa%u)zn}{nuwAb?+Wvd&Iah)%uvuo^LPzGgx`0Pu+jVnD_J1 zFH`!JuRmS;+>Sp3}j>L>Ir?!1zHf8 zCB=n1OB5|!tqYl~S@ylWJtN^d57&pg={xmoWqy@>dHc`RS-7Kn%F&RJ{|t9x<~-Bu z;_Og(8~s7_#g6oVJE#6QEXiolc>Vroe%V#uG_#05dmca7=D;?)M>cATo{rjt4pa68 zM>cGB`J&%+@k+=iE6FxxnTc1NLX#uUR-Mv{e8GP(fMM$?Ugz13hr%?}Rf=Lh+1AD1 zWYL##2%G$#>7Qy`9f#D99nT(aF%;;1`gn=sv8Uw)>x?g%n$~Y-dY3j!cgnVNa+kU{ zOu2fhTq9^ZqpfNE{41ioKmRjGr1KoG$$$FuYVpp@i4E8FXKA_~k@QSbu9~T^L)5Ry(Ijb&9S}t#-)0XvqFraOJ#Pt%V;hi!V9VIa$ZHCG^fR ze(|S!FNbS=HTKI3{j%ZYOWD;aRj0YK0ymkKIC=|T3%<%CaK~@igN47BnilS#>UHAe z{rQn0E8o874LY$vY-7|au06*VUaZZCPqLBd3!A27s{Q2s)3;3%H+no0W6pZN{=R3^ zs<@9*kE~biPSa9c@<`-};zG&niYsn+AIy-knvy#C%=Z~<@)T87+`j7Ql*Wq^KFK}sy}Y) z1y}9hI(3XMFSgO?LEoa_fTlHj{xc{Y$kJJ#sGW1VU~$o`or}(#ihbReuFa=ls&?7U za;D5bbHjIG1=qLOvd;^auGN2AJ)_d{XKk`pcV}qa?C*`1+=r4^wgzZ7=N7)^iV=J? z>xzqw^o*wNi2C+<8(Zw(2<$R`t;ZwWe`lZSOkKy^b^ELw*Gv@G@#=^OpZVwTis+xs z-mdBVdw4Cn4?chT_C}V$t|LVj%->gRH)e=d(LE|CZW!5Lawz$drIzu$>bggl=IW+= z{%%-!)$L(GU?TJ0BiqH|j6XPaMlP|mFIbm!ab|{Qw#4tR9nG_XuiNi%`ueNMFjK3b z^mkoM?6Vu^qPkBkzVx~;(U+s==d2%Qk7cwXyZeu=3)1DZ^sMG@3bj?3`G`Tw>wKoC zobrmx8}q+Zew(B7pCSMJmJCrTW%*SF#kaVQlv&#vy-VjmvhqdR@ACJT*Jnnon|$W$ z&+3H0=(%}}2L;>xDjVgK?Ss;0{ClLjD~ZMeT36WC1RX>*LNJn0NePpr8x~zq} zkFc6p^;*;^s4l#H;pv=8rMk0^m|4o!{W`RdPp0qu8k>N(=HI8kn{f2*v$@ZnZSVcF zXV=kV>jk@;vTAGV6inwYIeJA|?&WK(r<}|7K4US8F`atut9Cn^VgL8pt#LuDr@r+m zeD^;3^PzxvYn8X5xlwDesG`=tg_kta>pO0W7A`32(AVsrA1D50x4lrq(j9TrpDoi^ z-O4SfyHEf0srNc*mS-Lm7&8l};O`Ov#cK)poKK;5X{~nS3r)wol_h*6wf5d*13jpZogLrz1C4f8Kx1Ea<6h zVor$b#lR(-xECZ?9XFP7=~Hd)TwWP=L}Z)wWu3jR|FqBf_3PAshE-iV(>98(-Vra< zJYzeL)sYDgd8fC_+V1yX+)_DjzjkuSR=wOc+!KleK6*DSu}ZtJY^KeXldF|J9DGot z?6zs9Xm6AL`RkmQV!1W;1leX9&wnVVeyE>E&VAl|kNEj57O_RTS89^oyN@fyOKj!Z zDShGYrVM?{%DYkP|FuIlwlOj?FoQ0PXJQ7oN)a2|K&Sq0eE8vG!A0;a93umxy}*Bl zk4J>vGk|BU4?+gj}($A3Len>h17 z!|}TBQ~Y+et&jd)Xzkj~v-tju$)6^DULvjkqk8`Qn#xx3itCSGXX?CppdFCXs>vVy z{poU>NX}Os)BVLtjyT#Zd~y5zpZeu@_Qf1kuCxDEKToQ8ZqKHr=j!8Y7F-I}5>H!J zQ~h&x*^Qsa#MJn%En(L_z!KNd*jJz^tZ>Xrz?{2OFDQm#?`Es?%Tw4E9e%j^JZqxU zMG?vRx5qC32(0>3YyYWmnv6@b4^v0Q_5DXVtTV3gE#Gc`GOaK|W6f>X2NT$}uP{n! zG5T$_-{07AsFlUauG6TzQTnY_Zj2kp%4HTsD>^1R9|%8Ewo_|sUY2m5;}6mK+SeW2 zKTcfKxb#k4T?Z#$+nV?*RbOU`mZ^b*Etb60EdwvGrSp6oT)ZcRB>pY_c z%qqvW?LPcui%ZiLSymao9hnJ><<1!xstP{1r|HBpZAEE=7@J0jg^UT8YG8!v`Zse_ z)Lw=>{uk6;Y8CaDXV!85eEx^7$pN$WA7S3acGSD^=lsX_JQq&>y~B9jr=JI0GS^OC z*YC4lP4bHR@+(0zeD_H+NGZ8JF+Fqfchbk(S01q>GgXxc$uM4YTc9l!Ahf%}TB1N@ z%?tNGC!G5>Jb3Zqlv+=pv6Gq{gHeiViP`3sFFSr&ZAt2GS*lsu;VN44OmEtab{$c< zCDs0KN;O#4JI!=bE(}{xkXXph7`SUQvxe!}2^mv6Skif}lqeRyO{mx*VASIxcW3?S zsznYNO{)?%vSeNAGtj*sxn`M?hRll4N$;kXzERW*W;z_Sic6_R%%kaz*0fu(d&NZ# zUfuobP1UE>{=1u#x4CRc6bmiS{OcVSk(niU;NWZCI|jxYt@(KwHRmTKedPPi@3X1e zL5V4OChLQQMy+Je*T4U1h*-Nz=TSwl*e)*n7-p5@$rhaaeEQsS)uZUOX zY`j(MxMgWXsb2J?Dk!Kbn}Z{ADu*68TPc!f5FFd_?Co!y8PsY(--jS zdp1ZYrr2@6a+qbK^1#M_l|932RYhjDCtn0&r9;^o+Ach*pPIaDPf9n><$Xy^Uh7-} zTm(XQyUI`I5NiwE8lhuZ=cUdPS(bBp=V@ne%{?wrtJ+VWI3YB{$3^0WeE0ECH?6h7 zGEKHOPwm*su;Yf1oq(Lai^Bv}2^S`Lh9m2mI8zM#CVks@-l%(IM@H=_`oQ z#{{QU#vPtX8pc5rKl@w8Ru>1lFEI~I4VbXA@pxN=n30Ir?W{1ysu&N!+sY?%92j?Tf@M!z|%RVON(rylUcLbmp`Wj5}z&eP93jhIaWX z&$LCCH~(V#pv66N8&mDYg%_`z>C0xRUSg0cuUM||yz+#{3i-pIkAFCE?BTHueP=x# ze>`J9#juUF&|*R4`>qM0nm!U`=af$KlsdGjF5GGoIP2G0Nr`EkEKv*Ab5`xrHLLn} z;9$s;B>j6&3>wzR=ClhoPdh16t1VvI^W69HnS|r|jJyVq=ZIchzTA28l4}~xnF|f7 z{r>!CnD^(O#7ed+H^qO~{lrwj7@s#jd?NHSB zqd95Wp*Fh(7OSoqYj*2`%e3 zYDJ}lUHGGEd5rJkg!!x8S4<6fYk1-k zZJgZ@vOu#v-2Hh&Fkd&*QD%>Ow!c0`rX4YLzI8w|z|XpbDZ#LL?R@r`r<)u?&HMv- z?!Ir`x~kfXE8<4!ZR>}V{U$4F8n8N*hH=btb&CyS6qlHIxq-*)&$pWiVe4hjflhi7enW_1uS!5P}-opYHkT*q~M(=4ebw@UVJEZo^?Vv;ITu% zLaD%g78Sqh*T4R;m*+2U$-WNt$Bk}U5$(Dxr+@r-_fT!_Ji}ef5}q95^|Au6O3{s0q7q zg!@(LA>F7$>CPMKEvg=9{4Sc_YI3MPhR5jXZ06?Ne>*-;Z*-1)d;fjg-Zn7@j)Mgp zON|aJ6liczI&l5zUXcpRX;V^Mvd`PeCe(>B_a>dQ`f)z>26@3Jn}hg?l`C)fTRKGk2ZMyn@tU zPnmcRMA_(^u=QbREOFvw`QBut>d5!ytF+eR;7MvKN!=$)gjPkz@zgBck?q`E7du4ybf58&xm;V{+@>d?YAH`G}VI8(A>7q`L@ga@y3k#&;m7X7PQJBQS z?D=X=YNudN)+wH>XK{fySJ))2Xq{m%VX+* zZA)a;{>S+rCT!F@>101&J~rOMEg?BsuBmIA=ngjXEsC;EX>QkM-3hggymC{9fyL_K z$*q+wEheIAwI3HpFYIWYW4rU{6qh&Cns2k+oYmHI`pO&*zN-SxI!l8bo+V~#B(~}c zpStnl%%pAmIPN7IZd#PWbeU^aWZ;QOd?LQjnzh)x_E`0;nbOY4sKdiP@q~i=)}@@! z=ggbM#i2NJPRyevj7(?Tz6f7#QJUkR{o=@5`TljXm&|+YPJ{%R#BiEBEWUU_y8gU) zvCk)g#)#{0S{|k)BsjRRv$Zt&N$lVh5&UuJu!$I7=-pixojLY3i0qFz|J>eWOK-=u zl25{~R2f)yGT8OJ?v6jaC)jT39~ti7qQ71C9*~we^Yr~gw;9S(Tl1zC-Oac(QS|50 zdiD6D+YFwT*xjsOU9lx{M)HN#-W%JdODyPS-6-)jSa^qPqR!iDjV~N?j=QThFfLGF zVZ3-WnAR^Act$wLm{pH1MK_19-Un6$if-8;Jm$! zgoCQI4u|=*d(yv;PjYfp$!0!$WNp)gO;b$D653<W>7>l%G z7EPF8C|Sb6Yp9y?^x^cZMe!fCkGu9OUcAxLU)rrA%O|1fcdu(_$KTxg4pAAAsE4;t zT0PwJ*i%DkA@i08cTR}cO!tYJep778Wp7qI<`=o3@s{T3`?D@1bmm%e`Z}buqihGx@eKg_tkv65) zH*Q92N+U6M=CHOu{X*~WN725S=`LOTY`>mNZ4sGB8MvFMdx?^ zs|cI@A%W{{R=|u0%7^wlP7m}wai;at4zDo2MT`sYmJ6+FeU_di{efk7eGH@43lrA2 z)$=DGQ*JWIVr0_49BCma$1?3jspOK$pIp_x{$*Omklw#S%*825K*pvacpXqodeAG|D_!{L zW#0+i<2Nf?)zW6(kY!6NJapk>kylmM(qGZxr3$Rt91hzu{7$bAFrMnQitU$es_VQ5 z4jJ=m`0vkoyTGxdlZPXI{(T0I#L@@W8T|Rj3hrwOT#vG_J^y-g#6D52)tW1wROy?2 zTU_HMwdmf8iU{2$tfkf*9Ou~0yJj9?6?1mvp7JR8JY&H9lb8N8oc=L!ffGaEmVGt< zDz527loqe$;Ji>VqtTQpLxpR~tBQQ}x8_wXUL6kNq%Ycr+nZY#sIi;6mNKh+fPoN}4;UHpku$Q&uf3Ejd= zwi+JTI*Gl$?=)M!JKH6;lqK&2-@fkNImIw_f5@Nnix0b1Ueb1&xBK4BV=;_V?uw-b ztWEuSU?Im;i55YA>yL9dzs4;yYc!K(EoHp#%W|hnl}Y{b)dk{tPg;6-xLp*Ml=084 z?JD6`n)>6;DxTO*DbH2T;-=2;D&$^ix=)iaJnis^L7>5}!{MK*(uSAKSv8yDwGZV# z_EZhNUTkk8qnYN!uv>`lmF|USuSFRGL@zgT$t+(xp@ZQYPu1bBXQkc^i&|@UU*7ZJ zwUt7-#e4o&bu2vFmE#hYw!A*48N5OvP?&M;moM)%O1%;|Ecu%5n5%Y2314m6;Clad zTV3Caxs#MGSN$nSQ9G@1wjj#(!S-o43S6zF!gr;eUY0MDj zFBm!}sa0g^!MOVkm4+MQj;@?0l&-MmcZ7z*LEjqoS<{zKd6O_hX{~9CJl9e)_N~(l zBRKvZd?<8irMuSGHKJVFRt*o84z91=bS2}&4ri-xD{_J)_aD)?aQ6JQU;h~{w;P*W zm#qIN&u+RSXy(=g*~rxeMd^1YW$D{9FmPKjO8niw(7t@ecBhDg-?lbA(q}((QE_9< zt&M5H74AI~1K(IHOn%>}7&`6R)W-1CAJb<{eYU;Oc1p~DhQ)W-ek7!=ieP*2aHVBu zgYf~;Q`7gwd8>tJ-afkNX%2G>Yut@DJ|Zv9rSRO`5c4OhSY4l6Q>{To@w&UJ#PcIT zTv9Ukw)Z;wILj_`;#(TOPVmkPu09Qp#oPOT^Jr)&G+hwmx0wF=nyR(yy2a1^J{7oF zuMT~g{%7({U0$6AJNX+SMp|qKM3yK>Of_Ekv9j4bVR5A667T7!kCmHjIPj0vljnzc zAMY-Mq$Y>Zy{@hKt$c>ON%GZIucu}F?y$0#m%si|%D_XkPV#I0KA$s}bvIqOFgrwP zxzsxK*&e!F4XaWMuk)oD-`#uZYIeA)%ajDw?EegWKV|=In>A}M+w=J8yOdwIW-6&p ze*L9j%7SFwsdnn;+jtw=^s7$)mEr427g@Dq!sX|EFSd*A{vmN*zCD5K(S-y-$1U&L zp35mMydaSFBhmi6H6wFKy z`>y$gfc4rnKMTEf2rSs)$;9`cL8a2&A>PHw^F|4S5FgWCRtC>yiMAq7o(P&)oO>X^ z!Fc&tOwQg2w-u)K341EsC+c|AblR@}=yf3Ih_%S)=l>aM@|asvSq1m22B;otn{2sZ zMyX+Q>G6rHxy&QYPISliO#0i`b0R9V_xsCZv(^@@oKY5Tm+|$iA}8lh*YG5rK*1Ro zTD)vCxZIC1A3DdnYB$51`pgp&4bub}FMlhMDPQPjCY9D|cmBA1u_D7-<^^Ye{3&X7 z&*%_+)7gITzDTj3gQMX>Q>zR)#*NL5P0mg(_Pvi=_+D%X^=IuZc{eplW0rNs!sP4Q z3U4md+T}D$Z?4(A&&ii=F7Z#0ytFntP_1pb;z0C^An&=}U$h?Y(h+i**~RcZcPZn>rr2c?8B-i9txXQB zyCB$lYz>#noAVM|GDk8#q=cU;kXlqLsSJN%Sze<=URs`=USj`wRmfAiRRy0d>$0EhkZ z#~nqt4+yz*l!R;y54GRGwNy;hnf2oJ+)GaD73Tc;e$wMXPfC=EJ=eL!iIcA_W$C`+ z$H2?Y~YguJ#NcMH`eh&+6Xs z=E8=h2I8wOXBd|-Iy{u9-mq;l>y%%ml|Jol6DopdSwClx;oKP#p#QhMAz4LutrOF< ziRZFDiwj)X@U>f}pFQwc(sqSTrh}paou_73=1=rp%Hd6;nUWLa>zZ< z2;*|Bj9PRO+h-qIG^_ct7n{!Ho?e%7!d?oeUR!hG9KECay>KkDx<+asMdijG6dtS*j z+;8JxeUe4TdcjZQeKwDC_cl!O`unHAzPF)Q+aNJfI`J@<1>0I#5!pXAaXjCYYD)Q< zz1-bnd~{YUSd-Zy8j)J`L4NT9mE}+6>jSlxe^@cqO7q|EJt@^%JKS$Xek%yOC$@9R z-VV=|0V}VnMzD zP%l$$#vd7z5FrkM6%tc9@&tZ6O)})HetlOxMy;1?gVe;PrAORX9u9Kb;`{R3pUD>2 zLbhIDN)XQdW#0b7%FrpSe}ms{RvE^I8?n|~vX7r`_muXAZwxhk-v!}8;i4}vB=jLED1 zEV-xJSC(uQzu_NqL+C_bMy60FM}>vO9YwcHo9^W&D}KC|W+2pduf^L$xc$q_1tO<3 zTNYm3{ET5K%x<5o;x_s&ZD`A@KCcG$|`r+iPWAM9uOk#UB}`K7M=#N&J= zdAp)>bemg+r!}N)Zc=XGD!Y7QQI5MU<3oqFsxpkMUg=AMEA#?by1H2m7|$R3pw#i! zggK#CBdK(I3xCYTTA7VfR&N|X&nuD0K9E%__~*qB7YBv1vS76(c@`{_1lW`oNlkV* zw7u2+LcsZZ$YW}l)Q~xuZ6*#G|YRU?ul?urvk*jxV#>j9fI3zq& zirP@c@W$kByhdsOPT;1&q0I83x(4< zX6|_6!+Z73!>`Ppk;WcVKVIC!qNsF|BT+(uacjl(KiQ@Z#xGbHUn+Gy+M3I}w?@tL zkdoCkCgvLrwJ#Rzc`vp0qN!1TyZ-yu!+|Rfp3@Ru`t2O2UE&!AS3$lLaevmEvBqy$ zcX0Ir-pIHuT36>BG+)%dG_i{>h{bDhu+)?{F%#IfE)ErZ7XGER(euTkwgsH`r#SZ= zm9(|q@og7V?rMSNRS6X=OcgFgD)$BNHVB9x3-b^0KYl$c+aR}rca;x!M{#p$<%3Lz zy`E2*4@HDNGL&g!X7y9l->fXaHEAUeKZoc-p%CY+b+Q*+p6XdTuVW3?F00!acdBZo zW0t^$_vM1#kCzHwl{kI(g5ab6>StCW(KGMQIG2{S;K$VjRrQ|Fouaoo9TzGznKztz zzHy0VgHS;kpN;CDzEf?&eKRs#gnMT-WSD>CJ~&HqLRZ}PMRmfr4=*h_EA5(i#q56X z1HPNZ42ogQqWtft#Jlz<9C2<~F|RPam0`Qb`h*2v)J2y5X{mB;lshJ~ZJV7}q)5Ow zMiWbe-EUgT(P5 zsVQNSoCi_^Sahc{b`?Z;tTByQo>d}SFHn6fl1-?_@EeyP^X~OrTw)CqGx$4`E8JPi zGMrEOr!!yJ!!Y5<9L5u8*D-m!eLF1hk#&Ychsq4Qvl7eBH~XkcPMz@a9vjy#cZnq` z3lxt!GI;GyTz12nX;H(?3FaYAKC5P47yaQO7IHng!S{;5ykn7*N}T0d3RE3 zlHxKYGVR0DzCrhg%vl` zB-XIstUjB2`)r7_QIG3)zy3$PQ38IZIxq3q~gTAcS=?_ zt@(Y}?egeB&7hdLMkmC0H;IZnJ^Tx(hk%!^4Zp^Tru*y*P-=f`V+cg!s zl+2yQH%QI0q-J)bM*q*A6(ujb2GD|4YZ7i)dR`Pvtj ze?6-h)xIkG<7bN(CrcPinqF_2JBum%^;yQ{d&L)(q)Wc(XLnODdaShILAl1pkC%eD z8CV#?cJr*5aMt8@9ZBS9SjQc^ywH!OO}EdNZ6? zo^mSLkt{Y{^V$2Dn8}9QZKYg~+L*ei_1#*%d~OGa;Q<$>8lz-|xqsy?8W)1^%Mp8H{1MY`1PMb zeD(p4Z0l-wyegsfZ89w%&;jTf#+@B=lo}w@nGf;@4xlu gWmcW$V+`0>sO05xrp!OyJyByVW5fJ^?f-8A0PeU2a{vGU diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=13ns_450K_NVT_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=13ns_450K_NVT_LR.jpg deleted file mode 100644 index b0df1a0aaa1454392502037e8dc20da35428f8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45240 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 diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=26ns_300K_NPT_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=26ns_300K_NPT_LR.jpg deleted file mode 100644 index e38e81006ae1c4af465ce169fc5d8e6d6ee96bd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44951 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 UzMDyeD59-L^6Q@3p0phWnp1vVPj=u17mhh z4mNg9b~ZK+ZVpZ^5Mblr=Hcez0dYWvFoN_jF|jf;vvRSsv4d2QhW{U85aeJmXRu~w z6l7o$WMmd({C|W&hJk^Rg_)5739zuTu`@DrF#SKmAj!zcz|4pu%f!sW%J}~l0}nGJ z1Cs!=00RT#`v;6lT0vhJnB6z5SpPI@Gxz#wew)9k23%oujy~^OulX-TM>*hnWyS^fMtSyy$EE*<0QI(@d}KUaawIbro;jp_Tim9oM=Y$ix7)+0X!N zEfdJvv$734R;W5HIOb=i(5$2H`iW=8y{G(9h8Lu|9>wS=nt%R(gh5Y$fsu)YnT?ed z7Ws@!%nU4oLIT2uA_|I*frZM6jT0BL8Wn9k_z-L~BLkZ~)3KxHO!%E1bWh5%*(76QwHv3c z@VU&j=)$Tchl4vr__m2UpW3mzZfD!R585Iomw0!0i(6^mdfeT${qPLS-ud^>6m;kH zsR^oT&D!y5tw-CE*)~!+DsnewM$UT?aaE1?&2;G}uag#EUlOv)=-+&;?_RR^ zG!xVH4+h)o_S}yDv1dOlUxIUo07C@>+g}Hky%r*u0;Cc&1PU7%92ou|VUQPOWMD$c z^^6RH3Id9Tj)932H-fziN}mE()h2%9cycjCO7&dot(87ye-mqEy(LqpHSJR9cprA} zv$mAcqa385osy^mr9`PS!nT#N)EMx||2$CZhK}k~4 z&=HaoKuJ>I`G+^%921gl)uO*%KAk8$ktgN2rJbdo-_J^Ofzy+2PJVsLR#hz7?|1g~ z|3?@U1sEAYc?@ADqaXv=@d65kjSC?jU}Rvl7x=kjr?W%xvaKy{8Xf=CubsLqC~9hW zE2A<}|g*R2K72YoBAt@V?@#b6>#>k>w5tR$kKUdA#7-V*i}= z+n;JJYnEu;`BdTk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.0 -0.5} - pbc box -shiftcenterrel {0.0 0.0 -0.5} -style tubes -width 0.75 - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/DPPC_martini_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/DPPC_martini_LR.jpg deleted file mode 100644 index cc85e79ff14717ece09368596bfdf3a60748935d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12907 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«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 T7)(=26~r7DnoX~_|9=wzATC9Z diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=0_bilayer_preformed_GL_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=0_bilayer_preformed_GL_LR.jpg deleted file mode 100644 index 8f092c926ce7c8be0d268fcec6ebc1a97a4cfc57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40709 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 APyhe` diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=4ns_bilayer_preformed_GL_LR.jpg b/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=4ns_bilayer_preformed_GL_LR.jpg deleted file mode 100644 index 9d5b6b594223f9bb00061b321fd2fb394783f53c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57230 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

BJ@v0_H_W%0=6t8{hitWUL6K*~K3%=k5NES{ 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 literal 0 HcmV?d00001 diff --git a/doc/src/Eqs/pair_tdpd_gov.tex b/doc/src/Eqs/pair_tdpd_gov.tex new file mode 100644 index 0000000000..e4b5f5790a --- /dev/null +++ b/doc/src/Eqs/pair_tdpd_gov.tex @@ -0,0 +1,13 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \frac{\mathrm{d}^2 \mathbf{r}_i}{\mathrm{d} t^2} = \frac{\mathrm{d} \mathbf{v}_i}{\mathrm{d} t}=\mathbf{F}_{i}=\sum_{i\neq j}(\mathbf{F}_{ij}^{C}+\mathbf{F}_{ij}^{D}+\mathbf{F}_{ij}^{R}), +$$ + +$$ + \frac{\mathrm{d} C_{i}}{\mathrm{d} t}= Q_{i} = \sum_{i\neq j}(Q_{ij}^{D}+Q_{ij}^{R}) + Q_{i}^{S}, +$$ + +\end{document} diff --git a/doc/src/JPG/examples_edpd.jpg b/doc/src/JPG/examples_edpd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d0cde6370c9cb575902eb66d08ff2f2716c1607 GIT binary patch literal 15776 zcmex=N4?hnVHy<}AC$AtcAHRTrpa2(-kg$+|Fu#C+!2bgb+#C$Y8Fw)<3NrjZ!XV4Q z$jHdR%m^YGAb_2Xg_VPuiIMaF5e9Do21aHUMn+~slciZ4`YocRA10|z4` z1A{%oe}<4($+h!~`fsIkY~5HgM?n3-%#colNx}1cUSE7CrkHvueO_w;oA;yk%U3#H zs@v#`UVAPnIq%bD<$vo$kr z{hqCPdb79O_Nx)GhpxBB9Xs^o_Oo2QyGlO&O5GYKCDN{|xCp9tEc(7`^`%uSY(B=e zFR5MmxA)chHM{#Cgna4WYQJ%B=-26mf4JsN{I>j?`Ko=J-q|+>U$VRM@7UMyYq7^a zXjQr2nt$Wos$Zvf{9}zgTe*F=d(IiF`?DYa3Xj^#^z`0$MeP)S_Tb$mxAc}sODa`A zh_eX&@MudNF~<3O{0{yteKkI^T>il7Md!_yXWCXar$qjJ@AcYz?Txd`Vjm?JZu9w6 zaii~~RmLsR9#>Bn@s=Q$=Y65JrMI0Xrxv=tRB`pI|DbvuA|*0}w*dv;B((d>UyudO@$xp&*m%hD9C+@V>mp5s>EcZFiNT0ef>4(xJc8=A*U-NS7 zy>+&e7M^jrYW=PW7k0@;Ydz||GihPOQ7hJ)x)ayi zEKt-^)KXa2j4SmZhrmi)?pX88d;4$qq?>B0-7zKWwpz}dd(3syJ)bw7uNYn%Eb%rf z4LjD=eD|1%-xSqXfqoWGgWYkNgwsdJNjEsIXx+zSN44k zo-Y?@E$>s_ztP(N(ue;HYyF8}$3&-o&%2qhJ!f-Fs~B2r?hvDUv;0zWwBuyIXYIawONxsWe=Y>bv9eTZt93 z(^w?~T3SOzMJ+-?UDwa)ox9O+rkPvOSy!&>SvzADZ%%Tt>D;L*^TeXpZ143VnJ%F& zeU>@uT}mI1hGu$&i#^TSdN1iG@1xsdC3zp0@1CjCz3`sdgB>@&OwualY?!frEk|JR zQK6k7OErVmp8Vx{(OyH?erx{K(4|_bx0=6Z+^&BU{r$`L)q8fQ7#Zq18f&*5&flMU z?9L98%Uyffa*l=zc=yYRx(ZgTIlAobt*Dn-?Zv)p*WCWJ*Iad(_j2&$jr}%y<;!EeDU9`uioAMxODc;Wf%6` zopmVR`m(#<&LzuIwq{Ii@+kc>QRbMl9ye=E(CeJr>@E{6g&0j9x{7U?*Z*zWx2